chore: update Angular TypeScript build info cache
This commit is contained in:
parent
963d0cc323
commit
a8b60f87f6
2
.angular/cache/20.3.2/app/.tsbuildinfo
vendored
2
.angular/cache/20.3.2/app/.tsbuildinfo
vendored
File diff suppressed because one or more lines are too long
@ -1,6 +1,3 @@
|
||||
import {
|
||||
withHttpTransferCache
|
||||
} from "./chunk-QEGKXTBA.js";
|
||||
import {
|
||||
CommonModule,
|
||||
DomAdapter,
|
||||
@ -8,6 +5,9 @@ import {
|
||||
getDOM,
|
||||
setRootDomAdapter
|
||||
} from "./chunk-NNL7YDF7.js";
|
||||
import {
|
||||
withHttpTransferCache
|
||||
} from "./chunk-QEGKXTBA.js";
|
||||
import {
|
||||
XhrFactory,
|
||||
parseCookieValue
|
||||
|
228
.angular/cache/20.3.2/app/vite/deps/_metadata.json
vendored
228
.angular/cache/20.3.2/app/vite/deps/_metadata.json
vendored
@ -1,118 +1,145 @@
|
||||
{
|
||||
"hash": "c37c60be",
|
||||
"configHash": "1caf38cd",
|
||||
"lockfileHash": "0f64d2e1",
|
||||
"browserHash": "67c2b9a3",
|
||||
"hash": "550e7d4b",
|
||||
"configHash": "625eb836",
|
||||
"lockfileHash": "77f35274",
|
||||
"browserHash": "a276ee59",
|
||||
"optimized": {
|
||||
"@angular/common": {
|
||||
"src": "../../../../../../node_modules/@angular/common/fesm2022/common.mjs",
|
||||
"file": "@angular_common.js",
|
||||
"fileHash": "6264f857",
|
||||
"fileHash": "05936fd0",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@angular/common/http": {
|
||||
"src": "../../../../../../node_modules/@angular/common/fesm2022/http.mjs",
|
||||
"file": "@angular_common_http.js",
|
||||
"fileHash": "d4f0095b",
|
||||
"fileHash": "7c938c00",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@angular/common/locales/fr": {
|
||||
"src": "../../../../../../node_modules/@angular/common/locales/fr.js",
|
||||
"file": "@angular_common_locales_fr.js",
|
||||
"fileHash": "cf09064a",
|
||||
"fileHash": "3f6dc116",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@angular/core": {
|
||||
"src": "../../../../../../node_modules/@angular/core/fesm2022/core.mjs",
|
||||
"file": "@angular_core.js",
|
||||
"fileHash": "9394e2f4",
|
||||
"fileHash": "51703fe3",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@angular/core/rxjs-interop": {
|
||||
"src": "../../../../../../node_modules/@angular/core/fesm2022/rxjs-interop.mjs",
|
||||
"file": "@angular_core_rxjs-interop.js",
|
||||
"fileHash": "078ce53d",
|
||||
"fileHash": "d9952fa8",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@angular/forms": {
|
||||
"src": "../../../../../../node_modules/@angular/forms/fesm2022/forms.mjs",
|
||||
"file": "@angular_forms.js",
|
||||
"fileHash": "56b31ede",
|
||||
"fileHash": "2b783004",
|
||||
"needsInterop": false
|
||||
},
|
||||
"@angular/platform-browser": {
|
||||
"src": "../../../../../../node_modules/@angular/platform-browser/fesm2022/platform-browser.mjs",
|
||||
"file": "@angular_platform-browser.js",
|
||||
"fileHash": "de25a4b4",
|
||||
"fileHash": "330b2f60",
|
||||
"needsInterop": false
|
||||
},
|
||||
"angular-calendar": {
|
||||
"src": "../../../../../../node_modules/angular-calendar/fesm2022/angular-calendar.mjs",
|
||||
"file": "angular-calendar.js",
|
||||
"fileHash": "22aed57a",
|
||||
"fileHash": "3f18ca62",
|
||||
"needsInterop": false
|
||||
},
|
||||
"angular-calendar/date-adapters/date-fns": {
|
||||
"src": "../../../../../../node_modules/angular-calendar/date-adapters/esm/date-fns/index.js",
|
||||
"file": "angular-calendar_date-adapters_date-fns.js",
|
||||
"fileHash": "2087b111",
|
||||
"fileHash": "50981191",
|
||||
"needsInterop": false
|
||||
},
|
||||
"highlight.js": {
|
||||
"src": "../../../../../../node_modules/highlight.js/es/index.js",
|
||||
"file": "highlight__js.js",
|
||||
"fileHash": "7fb09d07",
|
||||
"fileHash": "093a5a02",
|
||||
"needsInterop": false
|
||||
},
|
||||
"markdown-it": {
|
||||
"src": "../../../../../../node_modules/markdown-it/index.mjs",
|
||||
"file": "markdown-it.js",
|
||||
"fileHash": "ccedf405",
|
||||
"fileHash": "902d4090",
|
||||
"needsInterop": false
|
||||
},
|
||||
"markdown-it-anchor": {
|
||||
"src": "../../../../../../node_modules/markdown-it-anchor/dist/markdownItAnchor.mjs",
|
||||
"file": "markdown-it-anchor.js",
|
||||
"fileHash": "c0a580a1",
|
||||
"fileHash": "ba1f7b46",
|
||||
"needsInterop": false
|
||||
},
|
||||
"markdown-it-attrs": {
|
||||
"src": "../../../../../../node_modules/markdown-it-attrs/index.js",
|
||||
"file": "markdown-it-attrs.js",
|
||||
"fileHash": "a28c15a6",
|
||||
"fileHash": "09d13132",
|
||||
"needsInterop": true
|
||||
},
|
||||
"markdown-it-footnote": {
|
||||
"src": "../../../../../../node_modules/markdown-it-footnote/index.js",
|
||||
"file": "markdown-it-footnote.js",
|
||||
"fileHash": "7d35f2e8",
|
||||
"needsInterop": true
|
||||
},
|
||||
"markdown-it-multimd-table": {
|
||||
"src": "../../../../../../node_modules/markdown-it-multimd-table/index.js",
|
||||
"file": "markdown-it-multimd-table.js",
|
||||
"fileHash": "26b36290",
|
||||
"needsInterop": true
|
||||
},
|
||||
"markdown-it-task-lists": {
|
||||
"src": "../../../../../../node_modules/markdown-it-task-lists/index.js",
|
||||
"file": "markdown-it-task-lists.js",
|
||||
"fileHash": "9ac986bf",
|
||||
"fileHash": "283c7022",
|
||||
"needsInterop": true
|
||||
},
|
||||
"mermaid": {
|
||||
"src": "../../../../../../node_modules/mermaid/dist/mermaid.core.mjs",
|
||||
"file": "mermaid.js",
|
||||
"fileHash": "fee969bf",
|
||||
"fileHash": "6efe0ec4",
|
||||
"needsInterop": false
|
||||
},
|
||||
"rxjs": {
|
||||
"src": "../../../../../../node_modules/rxjs/dist/esm5/index.js",
|
||||
"file": "rxjs.js",
|
||||
"fileHash": "3f127c6d",
|
||||
"fileHash": "ff4ac288",
|
||||
"needsInterop": false
|
||||
}
|
||||
},
|
||||
"chunks": {
|
||||
"blockDiagram-VD42YOAC-QLCETXLX": {
|
||||
"file": "blockDiagram-VD42YOAC-QLCETXLX.js"
|
||||
"diagram-S2PKOQOG-RM7ASWFZ": {
|
||||
"file": "diagram-S2PKOQOG-RM7ASWFZ.js"
|
||||
},
|
||||
"architectureDiagram-VXUJARFQ-K5UZADJM": {
|
||||
"file": "architectureDiagram-VXUJARFQ-K5UZADJM.js"
|
||||
"diagram-QEK2KX5R-QLL2LDZJ": {
|
||||
"file": "diagram-QEK2KX5R-QLL2LDZJ.js"
|
||||
},
|
||||
"diagram-PSM6KHXK-XVWEIUTT": {
|
||||
"file": "diagram-PSM6KHXK-XVWEIUTT.js"
|
||||
"blockDiagram-VD42YOAC-6W666JF2": {
|
||||
"file": "blockDiagram-VD42YOAC-6W666JF2.js"
|
||||
},
|
||||
"stateDiagram-v2-4FDKWEC3-YF6BIDZS": {
|
||||
"file": "stateDiagram-v2-4FDKWEC3-YF6BIDZS.js"
|
||||
"architectureDiagram-VXUJARFQ-7JNJRGGM": {
|
||||
"file": "architectureDiagram-VXUJARFQ-7JNJRGGM.js"
|
||||
},
|
||||
"diagram-PSM6KHXK-3GNQQWOU": {
|
||||
"file": "diagram-PSM6KHXK-3GNQQWOU.js"
|
||||
},
|
||||
"classDiagram-v2-WZHVMYZB-J2EUDOJH": {
|
||||
"file": "classDiagram-v2-WZHVMYZB-J2EUDOJH.js"
|
||||
},
|
||||
"stateDiagram-FKZM4ZOC-JBDO72I4": {
|
||||
"file": "stateDiagram-FKZM4ZOC-JBDO72I4.js"
|
||||
},
|
||||
"stateDiagram-v2-4FDKWEC3-6YULITBX": {
|
||||
"file": "stateDiagram-v2-4FDKWEC3-6YULITBX.js"
|
||||
},
|
||||
"chunk-ZWXGVCUO": {
|
||||
"file": "chunk-ZWXGVCUO.js"
|
||||
},
|
||||
"journeyDiagram-XKPGCS4Q-DRJVBRZY": {
|
||||
"file": "journeyDiagram-XKPGCS4Q-DRJVBRZY.js"
|
||||
@ -120,50 +147,47 @@
|
||||
"timeline-definition-IT6M3QCI-WHNO6URF": {
|
||||
"file": "timeline-definition-IT6M3QCI-WHNO6URF.js"
|
||||
},
|
||||
"mindmap-definition-VGOIOE7T-YG6E4RHT": {
|
||||
"file": "mindmap-definition-VGOIOE7T-YG6E4RHT.js"
|
||||
"mindmap-definition-VGOIOE7T-LIQX7OEO": {
|
||||
"file": "mindmap-definition-VGOIOE7T-LIQX7OEO.js"
|
||||
},
|
||||
"kanban-definition-3W4ZIXB7-IDLHJXSC": {
|
||||
"file": "kanban-definition-3W4ZIXB7-IDLHJXSC.js"
|
||||
"kanban-definition-3W4ZIXB7-GUMHX2OD": {
|
||||
"file": "kanban-definition-3W4ZIXB7-GUMHX2OD.js"
|
||||
},
|
||||
"sankeyDiagram-TZEHDZUN-GH26R5YW": {
|
||||
"file": "sankeyDiagram-TZEHDZUN-GH26R5YW.js"
|
||||
},
|
||||
"diagram-S2PKOQOG-SBOOCUMA": {
|
||||
"file": "diagram-S2PKOQOG-SBOOCUMA.js"
|
||||
"ganttDiagram-LVOFAZNH-HYMY4RKD": {
|
||||
"file": "ganttDiagram-LVOFAZNH-HYMY4RKD.js"
|
||||
},
|
||||
"diagram-QEK2KX5R-QIAHEC3Z": {
|
||||
"file": "diagram-QEK2KX5R-QIAHEC3Z.js"
|
||||
"infoDiagram-F6ZHWCRC-HMHRPPWW": {
|
||||
"file": "infoDiagram-F6ZHWCRC-HMHRPPWW.js"
|
||||
},
|
||||
"pieDiagram-ADFJNKIX-B5ITLD23": {
|
||||
"file": "pieDiagram-ADFJNKIX-B5ITLD23.js"
|
||||
"pieDiagram-ADFJNKIX-HTPFO6AD": {
|
||||
"file": "pieDiagram-ADFJNKIX-HTPFO6AD.js"
|
||||
},
|
||||
"quadrantDiagram-AYHSOK5B-G2SG5IZD": {
|
||||
"file": "quadrantDiagram-AYHSOK5B-G2SG5IZD.js"
|
||||
},
|
||||
"xychartDiagram-PRI3JC2R-POXCDNLO": {
|
||||
"file": "xychartDiagram-PRI3JC2R-POXCDNLO.js"
|
||||
"xychartDiagram-PRI3JC2R-3HCTMHS4": {
|
||||
"file": "xychartDiagram-PRI3JC2R-3HCTMHS4.js"
|
||||
},
|
||||
"requirementDiagram-UZGBJVZJ-OT76XWNT": {
|
||||
"file": "requirementDiagram-UZGBJVZJ-OT76XWNT.js"
|
||||
"requirementDiagram-UZGBJVZJ-UYJHC736": {
|
||||
"file": "requirementDiagram-UZGBJVZJ-UYJHC736.js"
|
||||
},
|
||||
"sequenceDiagram-WL72ISMW-HRTSSJHP": {
|
||||
"file": "sequenceDiagram-WL72ISMW-HRTSSJHP.js"
|
||||
"sequenceDiagram-WL72ISMW-O3J6HVSP": {
|
||||
"file": "sequenceDiagram-WL72ISMW-O3J6HVSP.js"
|
||||
},
|
||||
"classDiagram-2ON5EDUG-AQUOHNLB": {
|
||||
"file": "classDiagram-2ON5EDUG-AQUOHNLB.js"
|
||||
"classDiagram-2ON5EDUG-NO6W7S54": {
|
||||
"file": "classDiagram-2ON5EDUG-NO6W7S54.js"
|
||||
},
|
||||
"classDiagram-v2-WZHVMYZB-AIBAXKPE": {
|
||||
"file": "classDiagram-v2-WZHVMYZB-AIBAXKPE.js"
|
||||
"chunk-SOIGDKSE": {
|
||||
"file": "chunk-SOIGDKSE.js"
|
||||
},
|
||||
"chunk-5MNSTNGC": {
|
||||
"file": "chunk-5MNSTNGC.js"
|
||||
"info-63CPKGFF-W56KXM6Z": {
|
||||
"file": "info-63CPKGFF-W56KXM6Z.js"
|
||||
},
|
||||
"stateDiagram-FKZM4ZOC-FVHIKWH4": {
|
||||
"file": "stateDiagram-FKZM4ZOC-FVHIKWH4.js"
|
||||
},
|
||||
"chunk-WBFNWS3A": {
|
||||
"file": "chunk-WBFNWS3A.js"
|
||||
"packet-HUATNLJX-LCJ3BRNR": {
|
||||
"file": "packet-HUATNLJX-LCJ3BRNR.js"
|
||||
},
|
||||
"pie-WTHONI2E-7JKUTNCJ": {
|
||||
"file": "pie-WTHONI2E-7JKUTNCJ.js"
|
||||
@ -180,23 +204,23 @@
|
||||
"treemap-75Q7IDZK-IP775KCD": {
|
||||
"file": "treemap-75Q7IDZK-IP775KCD.js"
|
||||
},
|
||||
"gitGraphDiagram-NY62KEGX-OS3GW3H5": {
|
||||
"file": "gitGraphDiagram-NY62KEGX-OS3GW3H5.js"
|
||||
"gitGraphDiagram-NY62KEGX-DAVBKLGM": {
|
||||
"file": "gitGraphDiagram-NY62KEGX-DAVBKLGM.js"
|
||||
},
|
||||
"chunk-PNW5KFH4": {
|
||||
"file": "chunk-PNW5KFH4.js"
|
||||
},
|
||||
"chunk-ORIZ2BG5": {
|
||||
"file": "chunk-ORIZ2BG5.js"
|
||||
},
|
||||
"chunk-3WIYXQMB": {
|
||||
"file": "chunk-3WIYXQMB.js"
|
||||
},
|
||||
"ganttDiagram-LVOFAZNH-FIW763NA": {
|
||||
"file": "ganttDiagram-LVOFAZNH-FIW763NA.js"
|
||||
"chunk-BUI4I457": {
|
||||
"file": "chunk-BUI4I457.js"
|
||||
},
|
||||
"infoDiagram-F6ZHWCRC-URQIBBZD": {
|
||||
"file": "infoDiagram-F6ZHWCRC-URQIBBZD.js"
|
||||
},
|
||||
"chunk-AWNKEY2Y": {
|
||||
"file": "chunk-AWNKEY2Y.js"
|
||||
"chunk-CHJ5BV6S": {
|
||||
"file": "chunk-CHJ5BV6S.js"
|
||||
},
|
||||
"chunk-XP22GJHQ": {
|
||||
"file": "chunk-XP22GJHQ.js"
|
||||
@ -213,11 +237,14 @@
|
||||
"chunk-5SXTVVUG": {
|
||||
"file": "chunk-5SXTVVUG.js"
|
||||
},
|
||||
"chunk-WHHJWK6B": {
|
||||
"file": "chunk-WHHJWK6B.js"
|
||||
},
|
||||
"katex-JJTYNRHT": {
|
||||
"file": "katex-JJTYNRHT.js"
|
||||
},
|
||||
"dagre-6UL2VRFP-RAS76HL3": {
|
||||
"file": "dagre-6UL2VRFP-RAS76HL3.js"
|
||||
"dagre-6UL2VRFP-C5ASYKFT": {
|
||||
"file": "dagre-6UL2VRFP-C5ASYKFT.js"
|
||||
},
|
||||
"chunk-YUMEK5VY": {
|
||||
"file": "chunk-YUMEK5VY.js"
|
||||
@ -225,26 +252,29 @@
|
||||
"chunk-MEGNL3BT": {
|
||||
"file": "chunk-MEGNL3BT.js"
|
||||
},
|
||||
"chunk-6SIVX7OU": {
|
||||
"file": "chunk-6SIVX7OU.js"
|
||||
},
|
||||
"cose-bilkent-S5V4N54A-5WYXQMNH": {
|
||||
"file": "cose-bilkent-S5V4N54A-5WYXQMNH.js"
|
||||
},
|
||||
"chunk-4434HPF7": {
|
||||
"file": "chunk-4434HPF7.js"
|
||||
},
|
||||
"c4Diagram-YG6GDRKO-G4QDPDWO": {
|
||||
"file": "c4Diagram-YG6GDRKO-G4QDPDWO.js"
|
||||
"c4Diagram-YG6GDRKO-DTLV3BK5": {
|
||||
"file": "c4Diagram-YG6GDRKO-DTLV3BK5.js"
|
||||
},
|
||||
"chunk-BETRN5NS": {
|
||||
"file": "chunk-BETRN5NS.js"
|
||||
},
|
||||
"flowDiagram-NV44I4VS-G6X7VBZN": {
|
||||
"file": "flowDiagram-NV44I4VS-G6X7VBZN.js"
|
||||
"flowDiagram-NV44I4VS-AJ7AUYT3": {
|
||||
"file": "flowDiagram-NV44I4VS-AJ7AUYT3.js"
|
||||
},
|
||||
"chunk-I4QIIVJ7": {
|
||||
"file": "chunk-I4QIIVJ7.js"
|
||||
},
|
||||
"erDiagram-Q2GNP2WA-SDEYIDBH": {
|
||||
"file": "erDiagram-Q2GNP2WA-SDEYIDBH.js"
|
||||
"erDiagram-Q2GNP2WA-JTEYVNF6": {
|
||||
"file": "erDiagram-Q2GNP2WA-JTEYVNF6.js"
|
||||
},
|
||||
"chunk-PLWNSIKB": {
|
||||
"file": "chunk-PLWNSIKB.js"
|
||||
@ -252,44 +282,29 @@
|
||||
"chunk-LHH5RO5K": {
|
||||
"file": "chunk-LHH5RO5K.js"
|
||||
},
|
||||
"info-63CPKGFF-W56KXM6Z": {
|
||||
"file": "info-63CPKGFF-W56KXM6Z.js"
|
||||
},
|
||||
"chunk-BUI4I457": {
|
||||
"file": "chunk-BUI4I457.js"
|
||||
},
|
||||
"packet-HUATNLJX-LCJ3BRNR": {
|
||||
"file": "packet-HUATNLJX-LCJ3BRNR.js"
|
||||
},
|
||||
"chunk-CHJ5BV6S": {
|
||||
"file": "chunk-CHJ5BV6S.js"
|
||||
},
|
||||
"chunk-WHHJWK6B": {
|
||||
"file": "chunk-WHHJWK6B.js"
|
||||
},
|
||||
"chunk-6SIVX7OU": {
|
||||
"file": "chunk-6SIVX7OU.js"
|
||||
},
|
||||
"chunk-BSULYXPT": {
|
||||
"file": "chunk-BSULYXPT.js"
|
||||
},
|
||||
"chunk-B5NQPFQG": {
|
||||
"file": "chunk-B5NQPFQG.js"
|
||||
},
|
||||
"chunk-NGEE2U2J": {
|
||||
"file": "chunk-NGEE2U2J.js"
|
||||
},
|
||||
"chunk-JSZQKJT3": {
|
||||
"file": "chunk-JSZQKJT3.js"
|
||||
},
|
||||
"chunk-EAO6AZLE": {
|
||||
"file": "chunk-EAO6AZLE.js"
|
||||
"chunk-SOVT3CA7": {
|
||||
"file": "chunk-SOVT3CA7.js"
|
||||
},
|
||||
"chunk-ZZNURHEZ": {
|
||||
"file": "chunk-ZZNURHEZ.js"
|
||||
"chunk-ZCTBDDTS": {
|
||||
"file": "chunk-ZCTBDDTS.js"
|
||||
},
|
||||
"chunk-2HSIUWWJ": {
|
||||
"file": "chunk-2HSIUWWJ.js"
|
||||
},
|
||||
"chunk-2WFBHHKP": {
|
||||
"file": "chunk-2WFBHHKP.js"
|
||||
"chunk-JJ4TL56I": {
|
||||
"file": "chunk-JJ4TL56I.js"
|
||||
},
|
||||
"chunk-EUUYHBKV": {
|
||||
"file": "chunk-EUUYHBKV.js"
|
||||
@ -297,11 +312,11 @@
|
||||
"chunk-FTTOYZOY": {
|
||||
"file": "chunk-FTTOYZOY.js"
|
||||
},
|
||||
"chunk-XIFRTXJX": {
|
||||
"file": "chunk-XIFRTXJX.js"
|
||||
"chunk-NMWDZEZO": {
|
||||
"file": "chunk-NMWDZEZO.js"
|
||||
},
|
||||
"chunk-SHNTMSU6": {
|
||||
"file": "chunk-SHNTMSU6.js"
|
||||
"chunk-QVVRGVV3": {
|
||||
"file": "chunk-QVVRGVV3.js"
|
||||
},
|
||||
"chunk-CMK64ICG": {
|
||||
"file": "chunk-CMK64ICG.js"
|
||||
@ -309,21 +324,18 @@
|
||||
"chunk-BFCVI5XI": {
|
||||
"file": "chunk-BFCVI5XI.js"
|
||||
},
|
||||
"chunk-I65GBZ6F": {
|
||||
"file": "chunk-I65GBZ6F.js"
|
||||
},
|
||||
"chunk-NGEE2U2J": {
|
||||
"file": "chunk-NGEE2U2J.js"
|
||||
},
|
||||
"chunk-M5X7JH4I": {
|
||||
"file": "chunk-M5X7JH4I.js"
|
||||
},
|
||||
"chunk-QEGKXTBA": {
|
||||
"file": "chunk-QEGKXTBA.js"
|
||||
"chunk-I65GBZ6F": {
|
||||
"file": "chunk-I65GBZ6F.js"
|
||||
},
|
||||
"chunk-NNL7YDF7": {
|
||||
"file": "chunk-NNL7YDF7.js"
|
||||
},
|
||||
"chunk-QEGKXTBA": {
|
||||
"file": "chunk-QEGKXTBA.js"
|
||||
},
|
||||
"chunk-ZJ25XCV3": {
|
||||
"file": "chunk-ZJ25XCV3.js"
|
||||
},
|
||||
|
@ -3,32 +3,33 @@ import {
|
||||
} from "./chunk-PNW5KFH4.js";
|
||||
import {
|
||||
parse
|
||||
} from "./chunk-AWNKEY2Y.js";
|
||||
} from "./chunk-ORIZ2BG5.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-XP22GJHQ.js";
|
||||
import "./chunk-NYZY7JGI.js";
|
||||
import "./chunk-FNEVJCCX.js";
|
||||
import "./chunk-R33GOAXK.js";
|
||||
import "./chunk-5SXTVVUG.js";
|
||||
import {
|
||||
cytoscape as cytoscape2
|
||||
} from "./chunk-4434HPF7.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-WHHJWK6B.js";
|
||||
import "./chunk-6SIVX7OU.js";
|
||||
import {
|
||||
cytoscape as cytoscape2
|
||||
} from "./chunk-4434HPF7.js";
|
||||
import {
|
||||
selectSvgElement
|
||||
} from "./chunk-B5NQPFQG.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import {
|
||||
createText,
|
||||
getIconSVG,
|
||||
registerIconPacks,
|
||||
unknownIcon
|
||||
} from "./chunk-XIFRTXJX.js";
|
||||
} from "./chunk-NMWDZEZO.js";
|
||||
import {
|
||||
cleanAndMerge,
|
||||
getEdgeId
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
clear,
|
||||
@ -44,13 +45,12 @@ import {
|
||||
setDiagramTitle,
|
||||
setupGraphViewbox
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
log,
|
||||
select_default
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__commonJS,
|
||||
__spreadProps,
|
||||
@ -8843,4 +8843,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=architectureDiagram-VXUJARFQ-K5UZADJM.js.map
|
||||
//# sourceMappingURL=architectureDiagram-VXUJARFQ-7JNJRGGM.js.map
|
@ -1,12 +1,13 @@
|
||||
import {
|
||||
Graph
|
||||
} from "./chunk-MEGNL3BT.js";
|
||||
import {
|
||||
getIconStyles
|
||||
} from "./chunk-I4QIIVJ7.js";
|
||||
import {
|
||||
clone_default
|
||||
} from "./chunk-6SIVX7OU.js";
|
||||
import {
|
||||
getIconStyles
|
||||
} from "./chunk-I4QIIVJ7.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import {
|
||||
getLineFunctionsWithOffset
|
||||
} from "./chunk-2HSIUWWJ.js";
|
||||
@ -16,12 +17,12 @@ import {
|
||||
import {
|
||||
createText,
|
||||
replaceIconSubstring
|
||||
} from "./chunk-XIFRTXJX.js";
|
||||
} from "./chunk-NMWDZEZO.js";
|
||||
import {
|
||||
decodeEntities,
|
||||
getStylesFromArray,
|
||||
utils_default
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
channel_default,
|
||||
@ -35,6 +36,7 @@ import {
|
||||
rgba_default,
|
||||
sanitizeText
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
basis_default,
|
||||
@ -42,8 +44,6 @@ import {
|
||||
log,
|
||||
select_default
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__spreadProps,
|
||||
__spreadValues
|
||||
@ -3745,4 +3745,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=blockDiagram-VD42YOAC-QLCETXLX.js.map
|
||||
//# sourceMappingURL=blockDiagram-VD42YOAC-6W666JF2.js.map
|
@ -6,7 +6,7 @@ import {
|
||||
calculateTextHeight,
|
||||
calculateTextWidth,
|
||||
wrapLabel
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import {
|
||||
require_dist
|
||||
} from "./chunk-CMK64ICG.js";
|
||||
@ -21,12 +21,12 @@ import {
|
||||
setAccDescription,
|
||||
setAccTitle
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
log,
|
||||
select_default
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__toESM
|
||||
} from "./chunk-TKSB4YUA.js";
|
||||
@ -2593,4 +2593,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=c4Diagram-YG6GDRKO-G4QDPDWO.js.map
|
||||
//# sourceMappingURL=c4Diagram-YG6GDRKO-DTLV3BK5.js.map
|
@ -10,13 +10,13 @@ import {
|
||||
import {
|
||||
createText,
|
||||
getIconSVG
|
||||
} from "./chunk-XIFRTXJX.js";
|
||||
} from "./chunk-NMWDZEZO.js";
|
||||
import {
|
||||
calculateTextWidth,
|
||||
decodeEntities,
|
||||
handleUndefinedAttr,
|
||||
parseFontSize
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import {
|
||||
common_default,
|
||||
defaultConfig_default,
|
||||
@ -6263,4 +6263,4 @@ export {
|
||||
clear2,
|
||||
positionNode
|
||||
};
|
||||
//# sourceMappingURL=chunk-2WFBHHKP.js.map
|
||||
//# sourceMappingURL=chunk-JJ4TL56I.js.map
|
@ -1,6 +1,6 @@
|
||||
import {
|
||||
decodeEntities
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import {
|
||||
common_default,
|
||||
getConfig,
|
||||
@ -3098,4 +3098,4 @@ export {
|
||||
replaceIconSubstring,
|
||||
createText
|
||||
};
|
||||
//# sourceMappingURL=chunk-XIFRTXJX.js.map
|
||||
//# sourceMappingURL=chunk-NMWDZEZO.js.map
|
@ -70,4 +70,4 @@ var MermaidParseError = (_a = class extends Error {
|
||||
export {
|
||||
parse
|
||||
};
|
||||
//# sourceMappingURL=chunk-AWNKEY2Y.js.map
|
||||
//# sourceMappingURL=chunk-ORIZ2BG5.js.map
|
@ -8,6 +8,10 @@ import {
|
||||
directiveRegex,
|
||||
sanitizeDirective
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import {
|
||||
memoize_default,
|
||||
merge_default
|
||||
} from "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
basisClosed_default,
|
||||
@ -33,10 +37,6 @@ import {
|
||||
stepBefore,
|
||||
step_default
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import {
|
||||
memoize_default,
|
||||
merge_default
|
||||
} from "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__toESM
|
||||
} from "./chunk-TKSB4YUA.js";
|
||||
@ -587,4 +587,4 @@ export {
|
||||
getEdgeId,
|
||||
handleUndefinedAttr
|
||||
};
|
||||
//# sourceMappingURL=chunk-SHNTMSU6.js.map
|
||||
//# sourceMappingURL=chunk-QVVRGVV3.js.map
|
@ -10,11 +10,11 @@ import {
|
||||
import {
|
||||
getRegisteredLayoutAlgorithm,
|
||||
render
|
||||
} from "./chunk-EAO6AZLE.js";
|
||||
} from "./chunk-SOVT3CA7.js";
|
||||
import {
|
||||
getEdgeId,
|
||||
utils_default
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import {
|
||||
clear,
|
||||
common_default,
|
||||
@ -1945,4 +1945,4 @@ export {
|
||||
styles_default,
|
||||
classRenderer_v3_unified_default
|
||||
};
|
||||
//# sourceMappingURL=chunk-5MNSTNGC.js.map
|
||||
//# sourceMappingURL=chunk-SOIGDKSE.js.map
|
@ -3,15 +3,15 @@ import {
|
||||
insertEdgeLabel,
|
||||
markers_default,
|
||||
positionEdgeLabel
|
||||
} from "./chunk-ZZNURHEZ.js";
|
||||
} from "./chunk-ZCTBDDTS.js";
|
||||
import {
|
||||
insertCluster,
|
||||
insertNode,
|
||||
labelHelper
|
||||
} from "./chunk-2WFBHHKP.js";
|
||||
} from "./chunk-JJ4TL56I.js";
|
||||
import {
|
||||
interpolateToCurve
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import {
|
||||
common_default,
|
||||
getConfig
|
||||
@ -45,7 +45,7 @@ var registerDefaultLayoutLoaders = __name(() => {
|
||||
registerLayoutLoaders([
|
||||
{
|
||||
name: "dagre",
|
||||
loader: __name(async () => await import("./dagre-6UL2VRFP-RAS76HL3.js"), "loader")
|
||||
loader: __name(async () => await import("./dagre-6UL2VRFP-C5ASYKFT.js"), "loader")
|
||||
},
|
||||
...true ? [
|
||||
{
|
||||
@ -82,4 +82,4 @@ export {
|
||||
render,
|
||||
getRegisteredLayoutAlgorithm
|
||||
};
|
||||
//# sourceMappingURL=chunk-EAO6AZLE.js.map
|
||||
//# sourceMappingURL=chunk-SOVT3CA7.js.map
|
@ -6,7 +6,7 @@ import {
|
||||
import {
|
||||
at,
|
||||
createLabel_default
|
||||
} from "./chunk-2WFBHHKP.js";
|
||||
} from "./chunk-JJ4TL56I.js";
|
||||
import {
|
||||
getSubGraphTitleMargins
|
||||
} from "./chunk-EUUYHBKV.js";
|
||||
@ -16,10 +16,10 @@ import {
|
||||
} from "./chunk-FTTOYZOY.js";
|
||||
import {
|
||||
createText
|
||||
} from "./chunk-XIFRTXJX.js";
|
||||
} from "./chunk-NMWDZEZO.js";
|
||||
import {
|
||||
utils_default
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import {
|
||||
evaluate,
|
||||
getConfig2
|
||||
@ -847,4 +847,4 @@ export {
|
||||
insertEdge,
|
||||
markers_default
|
||||
};
|
||||
//# sourceMappingURL=chunk-ZZNURHEZ.js.map
|
||||
//# sourceMappingURL=chunk-ZCTBDDTS.js.map
|
@ -6,11 +6,11 @@ import {
|
||||
} from "./chunk-LHH5RO5K.js";
|
||||
import {
|
||||
render
|
||||
} from "./chunk-EAO6AZLE.js";
|
||||
} from "./chunk-SOVT3CA7.js";
|
||||
import {
|
||||
generateId,
|
||||
utils_default
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import {
|
||||
clear,
|
||||
common_default,
|
||||
@ -2015,4 +2015,4 @@ export {
|
||||
StateDB,
|
||||
styles_default
|
||||
};
|
||||
//# sourceMappingURL=chunk-WBFNWS3A.js.map
|
||||
//# sourceMappingURL=chunk-ZWXGVCUO.js.map
|
@ -3,24 +3,24 @@ import {
|
||||
classDiagram_default,
|
||||
classRenderer_v3_unified_default,
|
||||
styles_default
|
||||
} from "./chunk-5MNSTNGC.js";
|
||||
} from "./chunk-SOIGDKSE.js";
|
||||
import "./chunk-I4QIIVJ7.js";
|
||||
import "./chunk-PLWNSIKB.js";
|
||||
import "./chunk-LHH5RO5K.js";
|
||||
import "./chunk-EAO6AZLE.js";
|
||||
import "./chunk-ZZNURHEZ.js";
|
||||
import "./chunk-SOVT3CA7.js";
|
||||
import "./chunk-ZCTBDDTS.js";
|
||||
import "./chunk-2HSIUWWJ.js";
|
||||
import "./chunk-2WFBHHKP.js";
|
||||
import "./chunk-JJ4TL56I.js";
|
||||
import "./chunk-EUUYHBKV.js";
|
||||
import "./chunk-FTTOYZOY.js";
|
||||
import "./chunk-XIFRTXJX.js";
|
||||
import "./chunk-SHNTMSU6.js";
|
||||
import "./chunk-NMWDZEZO.js";
|
||||
import "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import "./chunk-TKSB4YUA.js";
|
||||
|
||||
// node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-2ON5EDUG.mjs
|
||||
@ -41,4 +41,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=classDiagram-2ON5EDUG-AQUOHNLB.js.map
|
||||
//# sourceMappingURL=classDiagram-2ON5EDUG-NO6W7S54.js.map
|
@ -3,24 +3,24 @@ import {
|
||||
classDiagram_default,
|
||||
classRenderer_v3_unified_default,
|
||||
styles_default
|
||||
} from "./chunk-5MNSTNGC.js";
|
||||
} from "./chunk-SOIGDKSE.js";
|
||||
import "./chunk-I4QIIVJ7.js";
|
||||
import "./chunk-PLWNSIKB.js";
|
||||
import "./chunk-LHH5RO5K.js";
|
||||
import "./chunk-EAO6AZLE.js";
|
||||
import "./chunk-ZZNURHEZ.js";
|
||||
import "./chunk-SOVT3CA7.js";
|
||||
import "./chunk-ZCTBDDTS.js";
|
||||
import "./chunk-2HSIUWWJ.js";
|
||||
import "./chunk-2WFBHHKP.js";
|
||||
import "./chunk-JJ4TL56I.js";
|
||||
import "./chunk-EUUYHBKV.js";
|
||||
import "./chunk-FTTOYZOY.js";
|
||||
import "./chunk-XIFRTXJX.js";
|
||||
import "./chunk-SHNTMSU6.js";
|
||||
import "./chunk-NMWDZEZO.js";
|
||||
import "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import "./chunk-TKSB4YUA.js";
|
||||
|
||||
// node_modules/mermaid/dist/chunks/mermaid.core/classDiagram-v2-WZHVMYZB.mjs
|
||||
@ -41,4 +41,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=classDiagram-v2-WZHVMYZB-AIBAXKPE.js.map
|
||||
//# sourceMappingURL=classDiagram-v2-WZHVMYZB-J2EUDOJH.js.map
|
@ -9,13 +9,14 @@ import {
|
||||
isUndefined_default,
|
||||
map_default
|
||||
} from "./chunk-6SIVX7OU.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import {
|
||||
clear as clear3,
|
||||
insertEdge,
|
||||
insertEdgeLabel,
|
||||
markers_default,
|
||||
positionEdgeLabel
|
||||
} from "./chunk-ZZNURHEZ.js";
|
||||
} from "./chunk-ZCTBDDTS.js";
|
||||
import "./chunk-2HSIUWWJ.js";
|
||||
import {
|
||||
clear,
|
||||
@ -25,23 +26,22 @@ import {
|
||||
positionNode,
|
||||
setNodeElem,
|
||||
updateNodeBounds
|
||||
} from "./chunk-2WFBHHKP.js";
|
||||
} from "./chunk-JJ4TL56I.js";
|
||||
import {
|
||||
getSubGraphTitleMargins
|
||||
} from "./chunk-EUUYHBKV.js";
|
||||
import "./chunk-FTTOYZOY.js";
|
||||
import "./chunk-XIFRTXJX.js";
|
||||
import "./chunk-SHNTMSU6.js";
|
||||
import "./chunk-NMWDZEZO.js";
|
||||
import "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
getConfig2
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
log
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__spreadProps,
|
||||
__spreadValues
|
||||
@ -737,4 +737,4 @@ var render = __name(async (data4Layout, svg) => {
|
||||
export {
|
||||
render
|
||||
};
|
||||
//# sourceMappingURL=dagre-6UL2VRFP-RAS76HL3.js.map
|
||||
//# sourceMappingURL=dagre-6UL2VRFP-C5ASYKFT.js.map
|
@ -3,29 +3,30 @@ import {
|
||||
} from "./chunk-PNW5KFH4.js";
|
||||
import {
|
||||
parse
|
||||
} from "./chunk-AWNKEY2Y.js";
|
||||
} from "./chunk-ORIZ2BG5.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-XP22GJHQ.js";
|
||||
import "./chunk-NYZY7JGI.js";
|
||||
import "./chunk-FNEVJCCX.js";
|
||||
import "./chunk-R33GOAXK.js";
|
||||
import "./chunk-5SXTVVUG.js";
|
||||
import {
|
||||
setupViewPortForSVG
|
||||
} from "./chunk-LHH5RO5K.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-WHHJWK6B.js";
|
||||
import "./chunk-6SIVX7OU.js";
|
||||
import {
|
||||
setupViewPortForSVG
|
||||
} from "./chunk-LHH5RO5K.js";
|
||||
import {
|
||||
selectSvgElement
|
||||
} from "./chunk-B5NQPFQG.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import {
|
||||
isLabelStyle,
|
||||
styles2String
|
||||
} from "./chunk-FTTOYZOY.js";
|
||||
import {
|
||||
cleanAndMerge
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
clear,
|
||||
@ -39,6 +40,7 @@ import {
|
||||
setAccTitle,
|
||||
setDiagramTitle
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
format,
|
||||
@ -48,8 +50,6 @@ import {
|
||||
select_default,
|
||||
treemap_default
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__spreadValues
|
||||
} from "./chunk-TKSB4YUA.js";
|
||||
@ -566,4 +566,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=diagram-PSM6KHXK-XVWEIUTT.js.map
|
||||
//# sourceMappingURL=diagram-PSM6KHXK-3GNQQWOU.js.map
|
@ -3,22 +3,23 @@ import {
|
||||
} from "./chunk-PNW5KFH4.js";
|
||||
import {
|
||||
parse
|
||||
} from "./chunk-AWNKEY2Y.js";
|
||||
} from "./chunk-ORIZ2BG5.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-XP22GJHQ.js";
|
||||
import "./chunk-NYZY7JGI.js";
|
||||
import "./chunk-FNEVJCCX.js";
|
||||
import "./chunk-R33GOAXK.js";
|
||||
import "./chunk-5SXTVVUG.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-WHHJWK6B.js";
|
||||
import "./chunk-6SIVX7OU.js";
|
||||
import {
|
||||
selectSvgElement
|
||||
} from "./chunk-B5NQPFQG.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import {
|
||||
cleanAndMerge
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
clear,
|
||||
@ -32,12 +33,11 @@ import {
|
||||
setAccTitle,
|
||||
setDiagramTitle
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
log
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__spreadValues
|
||||
} from "./chunk-TKSB4YUA.js";
|
||||
@ -337,4 +337,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=diagram-QEK2KX5R-QIAHEC3Z.js.map
|
||||
//# sourceMappingURL=diagram-QEK2KX5R-QLL2LDZJ.js.map
|
@ -3,22 +3,23 @@ import {
|
||||
} from "./chunk-PNW5KFH4.js";
|
||||
import {
|
||||
parse
|
||||
} from "./chunk-AWNKEY2Y.js";
|
||||
} from "./chunk-ORIZ2BG5.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-XP22GJHQ.js";
|
||||
import "./chunk-NYZY7JGI.js";
|
||||
import "./chunk-FNEVJCCX.js";
|
||||
import "./chunk-R33GOAXK.js";
|
||||
import "./chunk-5SXTVVUG.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-WHHJWK6B.js";
|
||||
import "./chunk-6SIVX7OU.js";
|
||||
import {
|
||||
selectSvgElement
|
||||
} from "./chunk-B5NQPFQG.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import {
|
||||
cleanAndMerge
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
clear,
|
||||
@ -32,12 +33,11 @@ import {
|
||||
setAccTitle,
|
||||
setDiagramTitle
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
log
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__spreadValues
|
||||
} from "./chunk-TKSB4YUA.js";
|
||||
@ -247,4 +247,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=diagram-S2PKOQOG-SBOOCUMA.js.map
|
||||
//# sourceMappingURL=diagram-S2PKOQOG-RM7ASWFZ.js.map
|
@ -7,17 +7,17 @@ import {
|
||||
import {
|
||||
getRegisteredLayoutAlgorithm,
|
||||
render
|
||||
} from "./chunk-EAO6AZLE.js";
|
||||
import "./chunk-ZZNURHEZ.js";
|
||||
} from "./chunk-SOVT3CA7.js";
|
||||
import "./chunk-ZCTBDDTS.js";
|
||||
import "./chunk-2HSIUWWJ.js";
|
||||
import "./chunk-2WFBHHKP.js";
|
||||
import "./chunk-JJ4TL56I.js";
|
||||
import "./chunk-EUUYHBKV.js";
|
||||
import "./chunk-FTTOYZOY.js";
|
||||
import "./chunk-XIFRTXJX.js";
|
||||
import "./chunk-NMWDZEZO.js";
|
||||
import {
|
||||
getEdgeId,
|
||||
utils_default
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
channel_default,
|
||||
@ -31,13 +31,13 @@ import {
|
||||
setAccTitle,
|
||||
setDiagramTitle
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__export,
|
||||
__name,
|
||||
log,
|
||||
select_default
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import "./chunk-TKSB4YUA.js";
|
||||
|
||||
// node_modules/mermaid/dist/chunks/mermaid.core/erDiagram-Q2GNP2WA.mjs
|
||||
@ -1272,4 +1272,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=erDiagram-Q2GNP2WA-SDEYIDBH.js.map
|
||||
//# sourceMappingURL=erDiagram-Q2GNP2WA-JTEYVNF6.js.map
|
@ -14,19 +14,19 @@ import {
|
||||
import {
|
||||
getRegisteredLayoutAlgorithm,
|
||||
render
|
||||
} from "./chunk-EAO6AZLE.js";
|
||||
import "./chunk-ZZNURHEZ.js";
|
||||
} from "./chunk-SOVT3CA7.js";
|
||||
import "./chunk-ZCTBDDTS.js";
|
||||
import "./chunk-2HSIUWWJ.js";
|
||||
import {
|
||||
isValidShape
|
||||
} from "./chunk-2WFBHHKP.js";
|
||||
} from "./chunk-JJ4TL56I.js";
|
||||
import "./chunk-EUUYHBKV.js";
|
||||
import "./chunk-FTTOYZOY.js";
|
||||
import "./chunk-XIFRTXJX.js";
|
||||
import "./chunk-NMWDZEZO.js";
|
||||
import {
|
||||
getEdgeId,
|
||||
utils_default
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
channel_default,
|
||||
@ -43,12 +43,12 @@ import {
|
||||
setConfig2,
|
||||
setDiagramTitle
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
log,
|
||||
select_default
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__spreadProps,
|
||||
__spreadValues
|
||||
@ -2493,4 +2493,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=flowDiagram-NV44I4VS-G6X7VBZN.js.map
|
||||
//# sourceMappingURL=flowDiagram-NV44I4VS-AJ7AUYT3.js.map
|
@ -1,6 +1,6 @@
|
||||
import {
|
||||
utils_default
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import {
|
||||
require_dist
|
||||
} from "./chunk-CMK64ICG.js";
|
||||
@ -16,6 +16,7 @@ import {
|
||||
setAccTitle,
|
||||
setDiagramTitle
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
axisBottom,
|
||||
@ -43,7 +44,6 @@ import {
|
||||
timeTuesday,
|
||||
timeWednesday
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__commonJS,
|
||||
__toESM
|
||||
@ -2436,4 +2436,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=ganttDiagram-LVOFAZNH-FIW763NA.js.map
|
||||
//# sourceMappingURL=ganttDiagram-LVOFAZNH-HYMY4RKD.js.map
|
@ -1,26 +1,27 @@
|
||||
import {
|
||||
populateCommonDb
|
||||
} from "./chunk-PNW5KFH4.js";
|
||||
import {
|
||||
parse
|
||||
} from "./chunk-ORIZ2BG5.js";
|
||||
import {
|
||||
ImperativeState
|
||||
} from "./chunk-3WIYXQMB.js";
|
||||
import {
|
||||
parse
|
||||
} from "./chunk-AWNKEY2Y.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-XP22GJHQ.js";
|
||||
import "./chunk-NYZY7JGI.js";
|
||||
import "./chunk-FNEVJCCX.js";
|
||||
import "./chunk-R33GOAXK.js";
|
||||
import "./chunk-5SXTVVUG.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-WHHJWK6B.js";
|
||||
import "./chunk-6SIVX7OU.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import {
|
||||
cleanAndMerge,
|
||||
random,
|
||||
utils_default
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
clear,
|
||||
@ -36,13 +37,12 @@ import {
|
||||
setDiagramTitle,
|
||||
setupGraphViewbox2
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
log,
|
||||
select_default
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__spreadProps,
|
||||
__spreadValues
|
||||
@ -1766,4 +1766,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=gitGraphDiagram-NY62KEGX-OS3GW3H5.js.map
|
||||
//# sourceMappingURL=gitGraphDiagram-NY62KEGX-DAVBKLGM.js.map
|
@ -1,13 +1,13 @@
|
||||
import {
|
||||
parse
|
||||
} from "./chunk-AWNKEY2Y.js";
|
||||
} from "./chunk-ORIZ2BG5.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-XP22GJHQ.js";
|
||||
import "./chunk-NYZY7JGI.js";
|
||||
import "./chunk-FNEVJCCX.js";
|
||||
import "./chunk-R33GOAXK.js";
|
||||
import "./chunk-5SXTVVUG.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-WHHJWK6B.js";
|
||||
import "./chunk-6SIVX7OU.js";
|
||||
import {
|
||||
@ -16,15 +16,15 @@ import {
|
||||
import {
|
||||
selectSvgElement
|
||||
} from "./chunk-B5NQPFQG.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import {
|
||||
configureSvgSize
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
log
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import "./chunk-TKSB4YUA.js";
|
||||
|
||||
// node_modules/mermaid/dist/chunks/mermaid.core/infoDiagram-F6ZHWCRC.mjs
|
||||
@ -57,4 +57,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=infoDiagram-F6ZHWCRC-URQIBBZD.js.map
|
||||
//# sourceMappingURL=infoDiagram-F6ZHWCRC-HMHRPPWW.js.map
|
@ -12,11 +12,11 @@ import {
|
||||
insertCluster,
|
||||
insertNode,
|
||||
positionNode
|
||||
} from "./chunk-2WFBHHKP.js";
|
||||
} from "./chunk-JJ4TL56I.js";
|
||||
import "./chunk-EUUYHBKV.js";
|
||||
import "./chunk-FTTOYZOY.js";
|
||||
import "./chunk-XIFRTXJX.js";
|
||||
import "./chunk-SHNTMSU6.js";
|
||||
import "./chunk-NMWDZEZO.js";
|
||||
import "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
darken_default,
|
||||
@ -27,11 +27,11 @@ import {
|
||||
sanitizeText,
|
||||
setupGraphViewbox
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
log
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import "./chunk-TKSB4YUA.js";
|
||||
|
||||
// node_modules/mermaid/dist/chunks/mermaid.core/kanban-definition-3W4ZIXB7.mjs
|
||||
@ -1122,4 +1122,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=kanban-definition-3W4ZIXB7-IDLHJXSC.js.map
|
||||
//# sourceMappingURL=kanban-definition-3W4ZIXB7-GUMHX2OD.js.map
|
317
.angular/cache/20.3.2/app/vite/deps/markdown-it-footnote.js
vendored
Normal file
317
.angular/cache/20.3.2/app/vite/deps/markdown-it-footnote.js
vendored
Normal file
@ -0,0 +1,317 @@
|
||||
import {
|
||||
__commonJS
|
||||
} from "./chunk-TKSB4YUA.js";
|
||||
|
||||
// node_modules/markdown-it-footnote/index.js
|
||||
var require_markdown_it_footnote = __commonJS({
|
||||
"node_modules/markdown-it-footnote/index.js"(exports, module) {
|
||||
function render_footnote_anchor_name(tokens, idx, options, env) {
|
||||
var n = Number(tokens[idx].meta.id + 1).toString();
|
||||
var prefix = "";
|
||||
if (typeof env.docId === "string") {
|
||||
prefix = "-" + env.docId + "-";
|
||||
}
|
||||
return prefix + n;
|
||||
}
|
||||
function render_footnote_caption(tokens, idx) {
|
||||
var n = Number(tokens[idx].meta.id + 1).toString();
|
||||
if (tokens[idx].meta.subId > 0) {
|
||||
n += ":" + tokens[idx].meta.subId;
|
||||
}
|
||||
return "[" + n + "]";
|
||||
}
|
||||
function render_footnote_ref(tokens, idx, options, env, slf) {
|
||||
var id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);
|
||||
var caption = slf.rules.footnote_caption(tokens, idx, options, env, slf);
|
||||
var refid = id;
|
||||
if (tokens[idx].meta.subId > 0) {
|
||||
refid += ":" + tokens[idx].meta.subId;
|
||||
}
|
||||
return '<sup class="footnote-ref"><a href="#fn' + id + '" id="fnref' + refid + '">' + caption + "</a></sup>";
|
||||
}
|
||||
function render_footnote_block_open(tokens, idx, options) {
|
||||
return (options.xhtmlOut ? '<hr class="footnotes-sep" />\n' : '<hr class="footnotes-sep">\n') + '<section class="footnotes">\n<ol class="footnotes-list">\n';
|
||||
}
|
||||
function render_footnote_block_close() {
|
||||
return "</ol>\n</section>\n";
|
||||
}
|
||||
function render_footnote_open(tokens, idx, options, env, slf) {
|
||||
var id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);
|
||||
if (tokens[idx].meta.subId > 0) {
|
||||
id += ":" + tokens[idx].meta.subId;
|
||||
}
|
||||
return '<li id="fn' + id + '" class="footnote-item">';
|
||||
}
|
||||
function render_footnote_close() {
|
||||
return "</li>\n";
|
||||
}
|
||||
function render_footnote_anchor(tokens, idx, options, env, slf) {
|
||||
var id = slf.rules.footnote_anchor_name(tokens, idx, options, env, slf);
|
||||
if (tokens[idx].meta.subId > 0) {
|
||||
id += ":" + tokens[idx].meta.subId;
|
||||
}
|
||||
return ' <a href="#fnref' + id + '" class="footnote-backref">↩︎</a>';
|
||||
}
|
||||
module.exports = function footnote_plugin(md) {
|
||||
var parseLinkLabel = md.helpers.parseLinkLabel, isSpace = md.utils.isSpace;
|
||||
md.renderer.rules.footnote_ref = render_footnote_ref;
|
||||
md.renderer.rules.footnote_block_open = render_footnote_block_open;
|
||||
md.renderer.rules.footnote_block_close = render_footnote_block_close;
|
||||
md.renderer.rules.footnote_open = render_footnote_open;
|
||||
md.renderer.rules.footnote_close = render_footnote_close;
|
||||
md.renderer.rules.footnote_anchor = render_footnote_anchor;
|
||||
md.renderer.rules.footnote_caption = render_footnote_caption;
|
||||
md.renderer.rules.footnote_anchor_name = render_footnote_anchor_name;
|
||||
function footnote_def(state, startLine, endLine, silent) {
|
||||
var oldBMark, oldTShift, oldSCount, oldParentType, pos, label, token, initial, offset, ch, posAfterColon, start = state.bMarks[startLine] + state.tShift[startLine], max = state.eMarks[startLine];
|
||||
if (start + 4 > max) {
|
||||
return false;
|
||||
}
|
||||
if (state.src.charCodeAt(start) !== 91) {
|
||||
return false;
|
||||
}
|
||||
if (state.src.charCodeAt(start + 1) !== 94) {
|
||||
return false;
|
||||
}
|
||||
for (pos = start + 2; pos < max; pos++) {
|
||||
if (state.src.charCodeAt(pos) === 32) {
|
||||
return false;
|
||||
}
|
||||
if (state.src.charCodeAt(pos) === 93) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (pos === start + 2) {
|
||||
return false;
|
||||
}
|
||||
if (pos + 1 >= max || state.src.charCodeAt(++pos) !== 58) {
|
||||
return false;
|
||||
}
|
||||
if (silent) {
|
||||
return true;
|
||||
}
|
||||
pos++;
|
||||
if (!state.env.footnotes) {
|
||||
state.env.footnotes = {};
|
||||
}
|
||||
if (!state.env.footnotes.refs) {
|
||||
state.env.footnotes.refs = {};
|
||||
}
|
||||
label = state.src.slice(start + 2, pos - 2);
|
||||
state.env.footnotes.refs[":" + label] = -1;
|
||||
token = new state.Token("footnote_reference_open", "", 1);
|
||||
token.meta = { label };
|
||||
token.level = state.level++;
|
||||
state.tokens.push(token);
|
||||
oldBMark = state.bMarks[startLine];
|
||||
oldTShift = state.tShift[startLine];
|
||||
oldSCount = state.sCount[startLine];
|
||||
oldParentType = state.parentType;
|
||||
posAfterColon = pos;
|
||||
initial = offset = state.sCount[startLine] + pos - (state.bMarks[startLine] + state.tShift[startLine]);
|
||||
while (pos < max) {
|
||||
ch = state.src.charCodeAt(pos);
|
||||
if (isSpace(ch)) {
|
||||
if (ch === 9) {
|
||||
offset += 4 - offset % 4;
|
||||
} else {
|
||||
offset++;
|
||||
}
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
pos++;
|
||||
}
|
||||
state.tShift[startLine] = pos - posAfterColon;
|
||||
state.sCount[startLine] = offset - initial;
|
||||
state.bMarks[startLine] = posAfterColon;
|
||||
state.blkIndent += 4;
|
||||
state.parentType = "footnote";
|
||||
if (state.sCount[startLine] < state.blkIndent) {
|
||||
state.sCount[startLine] += state.blkIndent;
|
||||
}
|
||||
state.md.block.tokenize(state, startLine, endLine, true);
|
||||
state.parentType = oldParentType;
|
||||
state.blkIndent -= 4;
|
||||
state.tShift[startLine] = oldTShift;
|
||||
state.sCount[startLine] = oldSCount;
|
||||
state.bMarks[startLine] = oldBMark;
|
||||
token = new state.Token("footnote_reference_close", "", -1);
|
||||
token.level = --state.level;
|
||||
state.tokens.push(token);
|
||||
return true;
|
||||
}
|
||||
function footnote_inline(state, silent) {
|
||||
var labelStart, labelEnd, footnoteId, token, tokens, max = state.posMax, start = state.pos;
|
||||
if (start + 2 >= max) {
|
||||
return false;
|
||||
}
|
||||
if (state.src.charCodeAt(start) !== 94) {
|
||||
return false;
|
||||
}
|
||||
if (state.src.charCodeAt(start + 1) !== 91) {
|
||||
return false;
|
||||
}
|
||||
labelStart = start + 2;
|
||||
labelEnd = parseLinkLabel(state, start + 1);
|
||||
if (labelEnd < 0) {
|
||||
return false;
|
||||
}
|
||||
if (!silent) {
|
||||
if (!state.env.footnotes) {
|
||||
state.env.footnotes = {};
|
||||
}
|
||||
if (!state.env.footnotes.list) {
|
||||
state.env.footnotes.list = [];
|
||||
}
|
||||
footnoteId = state.env.footnotes.list.length;
|
||||
state.md.inline.parse(
|
||||
state.src.slice(labelStart, labelEnd),
|
||||
state.md,
|
||||
state.env,
|
||||
tokens = []
|
||||
);
|
||||
token = state.push("footnote_ref", "", 0);
|
||||
token.meta = { id: footnoteId };
|
||||
state.env.footnotes.list[footnoteId] = {
|
||||
content: state.src.slice(labelStart, labelEnd),
|
||||
tokens
|
||||
};
|
||||
}
|
||||
state.pos = labelEnd + 1;
|
||||
state.posMax = max;
|
||||
return true;
|
||||
}
|
||||
function footnote_ref(state, silent) {
|
||||
var label, pos, footnoteId, footnoteSubId, token, max = state.posMax, start = state.pos;
|
||||
if (start + 3 > max) {
|
||||
return false;
|
||||
}
|
||||
if (!state.env.footnotes || !state.env.footnotes.refs) {
|
||||
return false;
|
||||
}
|
||||
if (state.src.charCodeAt(start) !== 91) {
|
||||
return false;
|
||||
}
|
||||
if (state.src.charCodeAt(start + 1) !== 94) {
|
||||
return false;
|
||||
}
|
||||
for (pos = start + 2; pos < max; pos++) {
|
||||
if (state.src.charCodeAt(pos) === 32) {
|
||||
return false;
|
||||
}
|
||||
if (state.src.charCodeAt(pos) === 10) {
|
||||
return false;
|
||||
}
|
||||
if (state.src.charCodeAt(pos) === 93) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (pos === start + 2) {
|
||||
return false;
|
||||
}
|
||||
if (pos >= max) {
|
||||
return false;
|
||||
}
|
||||
pos++;
|
||||
label = state.src.slice(start + 2, pos - 1);
|
||||
if (typeof state.env.footnotes.refs[":" + label] === "undefined") {
|
||||
return false;
|
||||
}
|
||||
if (!silent) {
|
||||
if (!state.env.footnotes.list) {
|
||||
state.env.footnotes.list = [];
|
||||
}
|
||||
if (state.env.footnotes.refs[":" + label] < 0) {
|
||||
footnoteId = state.env.footnotes.list.length;
|
||||
state.env.footnotes.list[footnoteId] = { label, count: 0 };
|
||||
state.env.footnotes.refs[":" + label] = footnoteId;
|
||||
} else {
|
||||
footnoteId = state.env.footnotes.refs[":" + label];
|
||||
}
|
||||
footnoteSubId = state.env.footnotes.list[footnoteId].count;
|
||||
state.env.footnotes.list[footnoteId].count++;
|
||||
token = state.push("footnote_ref", "", 0);
|
||||
token.meta = { id: footnoteId, subId: footnoteSubId, label };
|
||||
}
|
||||
state.pos = pos;
|
||||
state.posMax = max;
|
||||
return true;
|
||||
}
|
||||
function footnote_tail(state) {
|
||||
var i, l, j, t, lastParagraph, list, token, tokens, current, currentLabel, insideRef = false, refTokens = {};
|
||||
if (!state.env.footnotes) {
|
||||
return;
|
||||
}
|
||||
state.tokens = state.tokens.filter(function(tok) {
|
||||
if (tok.type === "footnote_reference_open") {
|
||||
insideRef = true;
|
||||
current = [];
|
||||
currentLabel = tok.meta.label;
|
||||
return false;
|
||||
}
|
||||
if (tok.type === "footnote_reference_close") {
|
||||
insideRef = false;
|
||||
refTokens[":" + currentLabel] = current;
|
||||
return false;
|
||||
}
|
||||
if (insideRef) {
|
||||
current.push(tok);
|
||||
}
|
||||
return !insideRef;
|
||||
});
|
||||
if (!state.env.footnotes.list) {
|
||||
return;
|
||||
}
|
||||
list = state.env.footnotes.list;
|
||||
token = new state.Token("footnote_block_open", "", 1);
|
||||
state.tokens.push(token);
|
||||
for (i = 0, l = list.length; i < l; i++) {
|
||||
token = new state.Token("footnote_open", "", 1);
|
||||
token.meta = { id: i, label: list[i].label };
|
||||
state.tokens.push(token);
|
||||
if (list[i].tokens) {
|
||||
tokens = [];
|
||||
token = new state.Token("paragraph_open", "p", 1);
|
||||
token.block = true;
|
||||
tokens.push(token);
|
||||
token = new state.Token("inline", "", 0);
|
||||
token.children = list[i].tokens;
|
||||
token.content = list[i].content;
|
||||
tokens.push(token);
|
||||
token = new state.Token("paragraph_close", "p", -1);
|
||||
token.block = true;
|
||||
tokens.push(token);
|
||||
} else if (list[i].label) {
|
||||
tokens = refTokens[":" + list[i].label];
|
||||
}
|
||||
if (tokens) state.tokens = state.tokens.concat(tokens);
|
||||
if (state.tokens[state.tokens.length - 1].type === "paragraph_close") {
|
||||
lastParagraph = state.tokens.pop();
|
||||
} else {
|
||||
lastParagraph = null;
|
||||
}
|
||||
t = list[i].count > 0 ? list[i].count : 1;
|
||||
for (j = 0; j < t; j++) {
|
||||
token = new state.Token("footnote_anchor", "", 0);
|
||||
token.meta = { id: i, subId: j, label: list[i].label };
|
||||
state.tokens.push(token);
|
||||
}
|
||||
if (lastParagraph) {
|
||||
state.tokens.push(lastParagraph);
|
||||
}
|
||||
token = new state.Token("footnote_close", "", -1);
|
||||
state.tokens.push(token);
|
||||
}
|
||||
token = new state.Token("footnote_block_close", "", -1);
|
||||
state.tokens.push(token);
|
||||
}
|
||||
md.block.ruler.before("reference", "footnote_def", footnote_def, { alt: ["paragraph", "reference"] });
|
||||
md.inline.ruler.after("image", "footnote_inline", footnote_inline);
|
||||
md.inline.ruler.after("footnote_inline", "footnote_ref", footnote_ref);
|
||||
md.core.ruler.after("inline", "footnote_tail", footnote_tail);
|
||||
};
|
||||
}
|
||||
});
|
||||
export default require_markdown_it_footnote();
|
||||
//# sourceMappingURL=markdown-it-footnote.js.map
|
7
.angular/cache/20.3.2/app/vite/deps/markdown-it-footnote.js.map
vendored
Normal file
7
.angular/cache/20.3.2/app/vite/deps/markdown-it-footnote.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
397
.angular/cache/20.3.2/app/vite/deps/markdown-it-multimd-table.js
vendored
Normal file
397
.angular/cache/20.3.2/app/vite/deps/markdown-it-multimd-table.js
vendored
Normal file
@ -0,0 +1,397 @@
|
||||
import {
|
||||
__commonJS
|
||||
} from "./chunk-TKSB4YUA.js";
|
||||
|
||||
// node_modules/markdown-it-multimd-table/lib/dfa.js
|
||||
var require_dfa = __commonJS({
|
||||
"node_modules/markdown-it-multimd-table/lib/dfa.js"(exports, module) {
|
||||
"use strict";
|
||||
function DFA() {
|
||||
this.__highest_alphabet__ = 0;
|
||||
this.__match_alphabets__ = {};
|
||||
this.__initial_state__ = 0;
|
||||
this.__accept_states__ = {};
|
||||
this.__transitions__ = {};
|
||||
this.__actions__ = {};
|
||||
}
|
||||
DFA.prototype.set_highest_alphabet = function(alphabet) {
|
||||
this.__highest_alphabet__ = alphabet;
|
||||
};
|
||||
DFA.prototype.set_match_alphabets = function(matches) {
|
||||
this.__match_alphabets__ = matches;
|
||||
};
|
||||
DFA.prototype.set_initial_state = function(initial) {
|
||||
this.__initial_state__ = initial;
|
||||
};
|
||||
DFA.prototype.set_accept_states = function(accepts) {
|
||||
for (var i = 0; i < accepts.length; i++) {
|
||||
this.__accept_states__[accepts[i]] = true;
|
||||
}
|
||||
};
|
||||
DFA.prototype.set_transitions = function(transitions) {
|
||||
this.__transitions__ = transitions;
|
||||
};
|
||||
DFA.prototype.set_actions = function(actions) {
|
||||
this.__actions__ = actions;
|
||||
};
|
||||
DFA.prototype.update_transition = function(state, alphabets) {
|
||||
this.__transitions__[state] = Object.assign(
|
||||
this.__transitions__[state] || Object(),
|
||||
alphabets
|
||||
);
|
||||
};
|
||||
DFA.prototype.execute = function(start, end) {
|
||||
var state, step, alphabet;
|
||||
for (state = this.__initial_state__, step = start; state && step < end; step++) {
|
||||
for (alphabet = this.__highest_alphabet__; alphabet > 0; alphabet >>= 4) {
|
||||
if (state & alphabet && this.__match_alphabets__[alphabet].call(this, step, state, alphabet)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.__actions__(step, state, alphabet);
|
||||
if (alphabet === 0) {
|
||||
break;
|
||||
}
|
||||
state = this.__transitions__[state][alphabet] || 0;
|
||||
}
|
||||
return !!this.__accept_states__[state];
|
||||
};
|
||||
module.exports = DFA;
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/markdown-it-multimd-table/index.js
|
||||
var require_markdown_it_multimd_table = __commonJS({
|
||||
"node_modules/markdown-it-multimd-table/index.js"(exports, module) {
|
||||
var DFA = require_dfa();
|
||||
module.exports = function multimd_table_plugin(md, options) {
|
||||
var defaults = {
|
||||
multiline: false,
|
||||
rowspan: false,
|
||||
headerless: false,
|
||||
multibody: true,
|
||||
autolabel: true
|
||||
};
|
||||
options = md.utils.assign({}, defaults, options || {});
|
||||
function scan_bound_indices(state, line) {
|
||||
var start = state.bMarks[line] + state.sCount[line], head = state.bMarks[line] + state.blkIndent, end = state.skipSpacesBack(state.eMarks[line], head), bounds = [], pos, posjump, escape = false, code = false, serial = 0;
|
||||
for (pos = start; pos < end; pos++) {
|
||||
switch (state.src.charCodeAt(pos)) {
|
||||
case 92:
|
||||
escape = true;
|
||||
break;
|
||||
case 96:
|
||||
posjump = state.skipChars(pos, 96) - 1;
|
||||
if (posjump > pos) {
|
||||
if (!code) {
|
||||
if (serial === 0) {
|
||||
serial = posjump - pos;
|
||||
} else if (serial === posjump - pos) {
|
||||
serial = 0;
|
||||
}
|
||||
}
|
||||
pos = posjump;
|
||||
} else if (code || !escape && !serial) {
|
||||
code = !code;
|
||||
}
|
||||
escape = false;
|
||||
break;
|
||||
case 124:
|
||||
if (!code && !escape) {
|
||||
bounds.push(pos);
|
||||
}
|
||||
escape = false;
|
||||
break;
|
||||
default:
|
||||
escape = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (bounds.length === 0) return bounds;
|
||||
if (bounds[0] > head) {
|
||||
bounds.unshift(head - 1);
|
||||
}
|
||||
if (bounds[bounds.length - 1] < end - 1) {
|
||||
bounds.push(end);
|
||||
}
|
||||
return bounds;
|
||||
}
|
||||
function table_caption(state, silent, line) {
|
||||
var meta = { text: null, label: null }, start = state.bMarks[line] + state.sCount[line], max = state.eMarks[line], capRE = /^\[(.+?)\](\[([^\[\]]+)\])?\s*$/, matches = state.src.slice(start, max).match(capRE);
|
||||
if (!matches) {
|
||||
return false;
|
||||
}
|
||||
if (silent) {
|
||||
return true;
|
||||
}
|
||||
meta.text = matches[1];
|
||||
if (!options.autolabel && !matches[2]) {
|
||||
return meta;
|
||||
}
|
||||
meta.label = matches[2] || matches[1];
|
||||
meta.label = meta.label.toLowerCase().replace(/\W+/g, "");
|
||||
return meta;
|
||||
}
|
||||
function table_row(state, silent, line) {
|
||||
var meta = { bounds: null, multiline: null }, bounds = scan_bound_indices(state, line), start, pos, oldMax;
|
||||
if (bounds.length < 2) {
|
||||
return false;
|
||||
}
|
||||
if (silent) {
|
||||
return true;
|
||||
}
|
||||
meta.bounds = bounds;
|
||||
if (options.multiline) {
|
||||
start = state.bMarks[line] + state.sCount[line];
|
||||
pos = state.eMarks[line] - 1;
|
||||
meta.multiline = state.src.charCodeAt(pos) === 92;
|
||||
if (meta.multiline) {
|
||||
oldMax = state.eMarks[line];
|
||||
state.eMarks[line] = state.skipSpacesBack(pos, start);
|
||||
meta.bounds = scan_bound_indices(state, line);
|
||||
state.eMarks[line] = oldMax;
|
||||
}
|
||||
}
|
||||
return meta;
|
||||
}
|
||||
function table_separator(state, silent, line) {
|
||||
var meta = { aligns: [], wraps: [] }, bounds = scan_bound_indices(state, line), sepRE = /^:?(-+|=+):?\+?$/, c, text, align;
|
||||
if (state.sCount[line] - state.blkIndent >= 4) {
|
||||
return false;
|
||||
}
|
||||
if (bounds.length === 0) {
|
||||
return false;
|
||||
}
|
||||
for (c = 0; c < bounds.length - 1; c++) {
|
||||
text = state.src.slice(bounds[c] + 1, bounds[c + 1]).trim();
|
||||
if (!sepRE.test(text)) {
|
||||
return false;
|
||||
}
|
||||
meta.wraps.push(
|
||||
text.charCodeAt(text.length - 1) === 43
|
||||
/* + */
|
||||
);
|
||||
align = (text.charCodeAt(0) === 58) << 4 | text.charCodeAt(text.length - 1 - meta.wraps[c]) === 58;
|
||||
switch (align) {
|
||||
case 0:
|
||||
meta.aligns.push("");
|
||||
break;
|
||||
case 1:
|
||||
meta.aligns.push("right");
|
||||
break;
|
||||
case 16:
|
||||
meta.aligns.push("left");
|
||||
break;
|
||||
case 17:
|
||||
meta.aligns.push("center");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (silent) {
|
||||
return true;
|
||||
}
|
||||
return meta;
|
||||
}
|
||||
function table_empty(state, silent, line) {
|
||||
return state.isEmpty(line);
|
||||
}
|
||||
function table(state, startLine, endLine, silent) {
|
||||
var tableDFA = new DFA(), grp = 16, mtr = -1, token, tableToken, trToken, colspan, leftToken, rowspan, upTokens = [], tableLines, tgroupLines, tag, text, range, r, c, b, t, blockState;
|
||||
if (startLine + 2 > endLine) {
|
||||
return false;
|
||||
}
|
||||
tableToken = new state.Token("table_open", "table", 1);
|
||||
tableToken.meta = { sep: null, cap: null, tr: [] };
|
||||
tableDFA.set_highest_alphabet(65536);
|
||||
tableDFA.set_initial_state(65792);
|
||||
tableDFA.set_accept_states([65552, 65553, 0]);
|
||||
tableDFA.set_match_alphabets({
|
||||
65536: table_caption.bind(this, state, true),
|
||||
4096: table_separator.bind(this, state, true),
|
||||
256: table_row.bind(this, state, true),
|
||||
16: table_row.bind(this, state, true),
|
||||
1: table_empty.bind(this, state, true)
|
||||
});
|
||||
tableDFA.set_transitions({
|
||||
65792: { 65536: 256, 256: 4352 },
|
||||
256: { 256: 4352 },
|
||||
4352: { 4096: 65552, 256: 4352 },
|
||||
65552: { 65536: 0, 16: 65553 },
|
||||
65553: { 65536: 0, 16: 65553, 1: 65552 }
|
||||
});
|
||||
if (options.headerless) {
|
||||
tableDFA.set_initial_state(69888);
|
||||
tableDFA.update_transition(
|
||||
69888,
|
||||
{ 65536: 4352, 4096: 65552, 256: 4352 }
|
||||
);
|
||||
trToken = new state.Token("tr_placeholder", "tr", 0);
|
||||
trToken.meta = Object();
|
||||
}
|
||||
if (!options.multibody) {
|
||||
tableDFA.update_transition(
|
||||
65552,
|
||||
{ 65536: 0, 16: 65552 }
|
||||
// 0x10011 is never reached
|
||||
);
|
||||
}
|
||||
tableDFA.set_actions(function(_line, _state, _type) {
|
||||
switch (_type) {
|
||||
case 65536:
|
||||
if (tableToken.meta.cap) {
|
||||
break;
|
||||
}
|
||||
tableToken.meta.cap = table_caption(state, false, _line);
|
||||
tableToken.meta.cap.map = [_line, _line + 1];
|
||||
tableToken.meta.cap.first = _line === startLine;
|
||||
break;
|
||||
case 4096:
|
||||
tableToken.meta.sep = table_separator(state, false, _line);
|
||||
tableToken.meta.sep.map = [_line, _line + 1];
|
||||
trToken.meta.grp |= 1;
|
||||
grp = 16;
|
||||
break;
|
||||
case 256:
|
||||
case 16:
|
||||
trToken = new state.Token("tr_open", "tr", 1);
|
||||
trToken.map = [_line, _line + 1];
|
||||
trToken.meta = table_row(state, false, _line);
|
||||
trToken.meta.type = _type;
|
||||
trToken.meta.grp = grp;
|
||||
grp = 0;
|
||||
tableToken.meta.tr.push(trToken);
|
||||
if (options.multiline) {
|
||||
if (trToken.meta.multiline && mtr < 0) {
|
||||
mtr = tableToken.meta.tr.length - 1;
|
||||
} else if (!trToken.meta.multiline && mtr >= 0) {
|
||||
token = tableToken.meta.tr[mtr];
|
||||
token.meta.mbounds = tableToken.meta.tr.slice(mtr).map(function(tk) {
|
||||
return tk.meta.bounds;
|
||||
});
|
||||
token.map[1] = trToken.map[1];
|
||||
tableToken.meta.tr = tableToken.meta.tr.slice(0, mtr + 1);
|
||||
mtr = -1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
trToken.meta.grp |= 1;
|
||||
grp = 16;
|
||||
break;
|
||||
}
|
||||
});
|
||||
if (tableDFA.execute(startLine, endLine) === false) {
|
||||
return false;
|
||||
}
|
||||
if (!tableToken.meta.tr.length) {
|
||||
return false;
|
||||
}
|
||||
if (silent) {
|
||||
return true;
|
||||
}
|
||||
tableToken.meta.tr[tableToken.meta.tr.length - 1].meta.grp |= 1;
|
||||
tableToken.map = tableLines = [startLine, 0];
|
||||
tableToken.block = true;
|
||||
tableToken.level = state.level++;
|
||||
state.tokens.push(tableToken);
|
||||
if (tableToken.meta.cap) {
|
||||
token = state.push("caption_open", "caption", 1);
|
||||
token.map = tableToken.meta.cap.map;
|
||||
var attrs = [];
|
||||
var capSide = tableToken.meta.cap.first ? "top" : "bottom";
|
||||
if (tableToken.meta.cap.label !== null) {
|
||||
attrs.push(["id", tableToken.meta.cap.label]);
|
||||
}
|
||||
if (capSide !== "top") {
|
||||
attrs.push(["style", "caption-side: " + capSide]);
|
||||
}
|
||||
token.attrs = attrs;
|
||||
token = state.push("inline", "", 0);
|
||||
token.content = tableToken.meta.cap.text;
|
||||
token.map = tableToken.meta.cap.map;
|
||||
token.children = [];
|
||||
token = state.push("caption_close", "caption", -1);
|
||||
}
|
||||
for (r = 0; r < tableToken.meta.tr.length; r++) {
|
||||
leftToken = new state.Token("td_th_placeholder", "", 0);
|
||||
trToken = tableToken.meta.tr[r];
|
||||
if (trToken.meta.grp & 16) {
|
||||
tag = trToken.meta.type === 256 ? "thead" : "tbody";
|
||||
token = state.push(tag + "_open", tag, 1);
|
||||
token.map = tgroupLines = [trToken.map[0], 0];
|
||||
upTokens = [];
|
||||
}
|
||||
trToken.block = true;
|
||||
trToken.level = state.level++;
|
||||
state.tokens.push(trToken);
|
||||
for (c = 0; c < trToken.meta.bounds.length - 1; c++) {
|
||||
range = [trToken.meta.bounds[c] + 1, trToken.meta.bounds[c + 1]];
|
||||
text = state.src.slice.apply(state.src, range);
|
||||
if (text === "") {
|
||||
colspan = leftToken.attrGet("colspan");
|
||||
leftToken.attrSet("colspan", colspan === null ? 2 : colspan + 1);
|
||||
continue;
|
||||
}
|
||||
if (options.rowspan && upTokens[c] && text.trim() === "^^") {
|
||||
rowspan = upTokens[c].attrGet("rowspan");
|
||||
upTokens[c].attrSet("rowspan", rowspan === null ? 2 : rowspan + 1);
|
||||
leftToken = new state.Token("td_th_placeholder", "", 0);
|
||||
continue;
|
||||
}
|
||||
tag = trToken.meta.type === 256 ? "th" : "td";
|
||||
token = state.push(tag + "_open", tag, 1);
|
||||
token.map = trToken.map;
|
||||
token.attrs = [];
|
||||
if (tableToken.meta.sep.aligns[c]) {
|
||||
token.attrs.push(["style", "text-align:" + tableToken.meta.sep.aligns[c]]);
|
||||
}
|
||||
if (tableToken.meta.sep.wraps[c]) {
|
||||
token.attrs.push(["class", "extend"]);
|
||||
}
|
||||
leftToken = upTokens[c] = token;
|
||||
if (options.multiline && trToken.meta.multiline && trToken.meta.mbounds) {
|
||||
text = new Array(trToken.map[0]).fill("").concat([text.trimRight()]);
|
||||
for (b = 1; b < trToken.meta.mbounds.length; b++) {
|
||||
if (c > trToken.meta.mbounds[b].length - 2) {
|
||||
continue;
|
||||
}
|
||||
range = [trToken.meta.mbounds[b][c] + 1, trToken.meta.mbounds[b][c + 1]];
|
||||
text.push(state.src.slice.apply(state.src, range).trimRight());
|
||||
}
|
||||
blockState = new state.md.block.State(text.join("\n"), state.md, state.env, []);
|
||||
blockState.level = trToken.level + 1;
|
||||
state.md.block.tokenize(blockState, trToken.map[0], blockState.lineMax);
|
||||
for (t = 0; t < blockState.tokens.length; t++) {
|
||||
state.tokens.push(blockState.tokens[t]);
|
||||
}
|
||||
} else {
|
||||
token = state.push("inline", "", 0);
|
||||
token.content = text.trim();
|
||||
token.map = trToken.map;
|
||||
token.level = trToken.level + 1;
|
||||
token.children = [];
|
||||
}
|
||||
token = state.push(tag + "_close", tag, -1);
|
||||
}
|
||||
state.push("tr_close", "tr", -1);
|
||||
if (trToken.meta.grp & 1) {
|
||||
tag = trToken.meta.type === 256 ? "thead" : "tbody";
|
||||
token = state.push(tag + "_close", tag, -1);
|
||||
tgroupLines[1] = trToken.map[1];
|
||||
}
|
||||
}
|
||||
tableLines[1] = Math.max(
|
||||
tgroupLines[1],
|
||||
tableToken.meta.sep.map[1],
|
||||
tableToken.meta.cap ? tableToken.meta.cap.map[1] : -1
|
||||
);
|
||||
token = state.push("table_close", "table", -1);
|
||||
state.line = tableLines[1];
|
||||
return true;
|
||||
}
|
||||
md.block.ruler.at("table", table, { alt: ["paragraph", "reference"] });
|
||||
};
|
||||
}
|
||||
});
|
||||
export default require_markdown_it_multimd_table();
|
||||
//# sourceMappingURL=markdown-it-multimd-table.js.map
|
7
.angular/cache/20.3.2/app/vite/deps/markdown-it-multimd-table.js.map
vendored
Normal file
7
.angular/cache/20.3.2/app/vite/deps/markdown-it-multimd-table.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
64
.angular/cache/20.3.2/app/vite/deps/mermaid.js
vendored
64
.angular/cache/20.3.2/app/vite/deps/mermaid.js
vendored
@ -4,22 +4,25 @@ import {
|
||||
import {
|
||||
selectSvgElement
|
||||
} from "./chunk-B5NQPFQG.js";
|
||||
import {
|
||||
isEmpty_default
|
||||
} from "./chunk-NGEE2U2J.js";
|
||||
import {
|
||||
JSON_SCHEMA,
|
||||
load
|
||||
} from "./chunk-JSZQKJT3.js";
|
||||
import {
|
||||
registerLayoutLoaders
|
||||
} from "./chunk-EAO6AZLE.js";
|
||||
import "./chunk-ZZNURHEZ.js";
|
||||
} from "./chunk-SOVT3CA7.js";
|
||||
import "./chunk-ZCTBDDTS.js";
|
||||
import "./chunk-2HSIUWWJ.js";
|
||||
import "./chunk-2WFBHHKP.js";
|
||||
import "./chunk-JJ4TL56I.js";
|
||||
import "./chunk-EUUYHBKV.js";
|
||||
import "./chunk-FTTOYZOY.js";
|
||||
import {
|
||||
dedent,
|
||||
registerIconPacks
|
||||
} from "./chunk-XIFRTXJX.js";
|
||||
} from "./chunk-NMWDZEZO.js";
|
||||
import {
|
||||
cleanAndMerge,
|
||||
decodeEntities,
|
||||
@ -27,7 +30,7 @@ import {
|
||||
isDetailedError,
|
||||
removeDirectives,
|
||||
utils_default
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
UnknownDiagramError,
|
||||
@ -54,16 +57,13 @@ import {
|
||||
themes_default,
|
||||
updateSiteConfig
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
log,
|
||||
select_default,
|
||||
setLogLevel
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import {
|
||||
isEmpty_default
|
||||
} from "./chunk-NGEE2U2J.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__spreadProps,
|
||||
__spreadValues
|
||||
@ -426,7 +426,7 @@ var detector = __name((txt) => {
|
||||
return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);
|
||||
}, "detector");
|
||||
var loader = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-G4QDPDWO.js");
|
||||
const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-DTLV3BK5.js");
|
||||
return { id, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin = {
|
||||
@ -443,7 +443,7 @@ var detector2 = __name((txt, config) => {
|
||||
return /^\s*graph/.test(txt);
|
||||
}, "detector");
|
||||
var loader2 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-G6X7VBZN.js");
|
||||
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-AJ7AUYT3.js");
|
||||
return { id: id2, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin2 = {
|
||||
@ -466,7 +466,7 @@ var detector3 = __name((txt, config) => {
|
||||
return /^\s*flowchart/.test(txt);
|
||||
}, "detector");
|
||||
var loader3 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-G6X7VBZN.js");
|
||||
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-AJ7AUYT3.js");
|
||||
return { id: id3, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin3 = {
|
||||
@ -480,7 +480,7 @@ var detector4 = __name((txt) => {
|
||||
return /^\s*erDiagram/.test(txt);
|
||||
}, "detector");
|
||||
var loader4 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-SDEYIDBH.js");
|
||||
const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-JTEYVNF6.js");
|
||||
return { id: id4, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin4 = {
|
||||
@ -494,7 +494,7 @@ var detector5 = __name((txt) => {
|
||||
return /^\s*gitGraph/.test(txt);
|
||||
}, "detector");
|
||||
var loader5 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./gitGraphDiagram-NY62KEGX-OS3GW3H5.js");
|
||||
const { diagram: diagram2 } = await import("./gitGraphDiagram-NY62KEGX-DAVBKLGM.js");
|
||||
return { id: id5, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin5 = {
|
||||
@ -508,7 +508,7 @@ var detector6 = __name((txt) => {
|
||||
return /^\s*gantt/.test(txt);
|
||||
}, "detector");
|
||||
var loader6 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./ganttDiagram-LVOFAZNH-FIW763NA.js");
|
||||
const { diagram: diagram2 } = await import("./ganttDiagram-LVOFAZNH-HYMY4RKD.js");
|
||||
return { id: id6, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin6 = {
|
||||
@ -522,7 +522,7 @@ var detector7 = __name((txt) => {
|
||||
return /^\s*info/.test(txt);
|
||||
}, "detector");
|
||||
var loader7 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./infoDiagram-F6ZHWCRC-URQIBBZD.js");
|
||||
const { diagram: diagram2 } = await import("./infoDiagram-F6ZHWCRC-HMHRPPWW.js");
|
||||
return { id: id7, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var info = {
|
||||
@ -535,7 +535,7 @@ var detector8 = __name((txt) => {
|
||||
return /^\s*pie/.test(txt);
|
||||
}, "detector");
|
||||
var loader8 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-B5ITLD23.js");
|
||||
const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-HTPFO6AD.js");
|
||||
return { id: id8, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var pie = {
|
||||
@ -562,7 +562,7 @@ var detector10 = __name((txt) => {
|
||||
return /^\s*xychart(-beta)?/.test(txt);
|
||||
}, "detector");
|
||||
var loader10 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-POXCDNLO.js");
|
||||
const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-3HCTMHS4.js");
|
||||
return { id: id10, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin8 = {
|
||||
@ -576,7 +576,7 @@ var detector11 = __name((txt) => {
|
||||
return /^\s*requirement(Diagram)?/.test(txt);
|
||||
}, "detector");
|
||||
var loader11 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-OT76XWNT.js");
|
||||
const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-UYJHC736.js");
|
||||
return { id: id11, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin9 = {
|
||||
@ -590,7 +590,7 @@ var detector12 = __name((txt) => {
|
||||
return /^\s*sequenceDiagram/.test(txt);
|
||||
}, "detector");
|
||||
var loader12 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-HRTSSJHP.js");
|
||||
const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-O3J6HVSP.js");
|
||||
return { id: id12, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin10 = {
|
||||
@ -607,7 +607,7 @@ var detector13 = __name((txt, config) => {
|
||||
return /^\s*classDiagram/.test(txt);
|
||||
}, "detector");
|
||||
var loader13 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-AQUOHNLB.js");
|
||||
const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-NO6W7S54.js");
|
||||
return { id: id13, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin11 = {
|
||||
@ -624,7 +624,7 @@ var detector14 = __name((txt, config) => {
|
||||
return /^\s*classDiagram-v2/.test(txt);
|
||||
}, "detector");
|
||||
var loader14 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-AIBAXKPE.js");
|
||||
const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-J2EUDOJH.js");
|
||||
return { id: id14, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin12 = {
|
||||
@ -641,7 +641,7 @@ var detector15 = __name((txt, config) => {
|
||||
return /^\s*stateDiagram/.test(txt);
|
||||
}, "detector");
|
||||
var loader15 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-FVHIKWH4.js");
|
||||
const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-JBDO72I4.js");
|
||||
return { id: id15, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin13 = {
|
||||
@ -661,7 +661,7 @@ var detector16 = __name((txt, config) => {
|
||||
return false;
|
||||
}, "detector");
|
||||
var loader16 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-YF6BIDZS.js");
|
||||
const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-6YULITBX.js");
|
||||
return { id: id16, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin14 = {
|
||||
@ -742,7 +742,7 @@ var detector18 = __name((txt, config = {}) => {
|
||||
return false;
|
||||
}, "detector");
|
||||
var loader18 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-G6X7VBZN.js");
|
||||
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-AJ7AUYT3.js");
|
||||
return { id: id18, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin16 = {
|
||||
@ -770,7 +770,7 @@ var detector20 = __name((txt) => {
|
||||
return /^\s*mindmap/.test(txt);
|
||||
}, "detector");
|
||||
var loader20 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-YG6E4RHT.js");
|
||||
const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-LIQX7OEO.js");
|
||||
return { id: id20, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin18 = {
|
||||
@ -784,7 +784,7 @@ var detector21 = __name((txt) => {
|
||||
return /^\s*kanban/.test(txt);
|
||||
}, "detector");
|
||||
var loader21 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-IDLHJXSC.js");
|
||||
const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-GUMHX2OD.js");
|
||||
return { id: id21, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin19 = {
|
||||
@ -812,7 +812,7 @@ var detector23 = __name((txt) => {
|
||||
return /^\s*packet(-beta)?/.test(txt);
|
||||
}, "detector");
|
||||
var loader23 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-SBOOCUMA.js");
|
||||
const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-RM7ASWFZ.js");
|
||||
return { id: id23, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var packet = {
|
||||
@ -825,7 +825,7 @@ var detector24 = __name((txt) => {
|
||||
return /^\s*radar-beta/.test(txt);
|
||||
}, "detector");
|
||||
var loader24 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-QIAHEC3Z.js");
|
||||
const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-QLL2LDZJ.js");
|
||||
return { id: id24, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var radar = {
|
||||
@ -838,7 +838,7 @@ var detector25 = __name((txt) => {
|
||||
return /^\s*block(-beta)?/.test(txt);
|
||||
}, "detector");
|
||||
var loader25 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-QLCETXLX.js");
|
||||
const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-6W666JF2.js");
|
||||
return { id: id25, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var plugin21 = {
|
||||
@ -852,7 +852,7 @@ var detector26 = __name((txt) => {
|
||||
return /^\s*architecture/.test(txt);
|
||||
}, "detector");
|
||||
var loader26 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-K5UZADJM.js");
|
||||
const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-7JNJRGGM.js");
|
||||
return { id: id26, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var architecture = {
|
||||
@ -866,7 +866,7 @@ var detector27 = __name((txt) => {
|
||||
return /^\s*treemap/.test(txt);
|
||||
}, "detector");
|
||||
var loader27 = __name(async () => {
|
||||
const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-XVWEIUTT.js");
|
||||
const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-3GNQQWOU.js");
|
||||
return { id: id27, diagram: diagram2 };
|
||||
}, "loader");
|
||||
var treemap = {
|
||||
|
@ -7,14 +7,14 @@ import {
|
||||
import {
|
||||
getRegisteredLayoutAlgorithm,
|
||||
render
|
||||
} from "./chunk-EAO6AZLE.js";
|
||||
import "./chunk-ZZNURHEZ.js";
|
||||
} from "./chunk-SOVT3CA7.js";
|
||||
import "./chunk-ZCTBDDTS.js";
|
||||
import "./chunk-2HSIUWWJ.js";
|
||||
import "./chunk-2WFBHHKP.js";
|
||||
import "./chunk-JJ4TL56I.js";
|
||||
import "./chunk-EUUYHBKV.js";
|
||||
import "./chunk-FTTOYZOY.js";
|
||||
import "./chunk-XIFRTXJX.js";
|
||||
import "./chunk-SHNTMSU6.js";
|
||||
import "./chunk-NMWDZEZO.js";
|
||||
import "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
darken_default,
|
||||
@ -25,11 +25,11 @@ import {
|
||||
lighten_default,
|
||||
sanitizeText
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
log
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import "./chunk-TKSB4YUA.js";
|
||||
|
||||
// node_modules/uuid/dist/esm-browser/regex.js
|
||||
@ -1486,4 +1486,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=mindmap-definition-VGOIOE7T-YG6E4RHT.js.map
|
||||
//# sourceMappingURL=mindmap-definition-VGOIOE7T-LIQX7OEO.js.map
|
@ -3,23 +3,24 @@ import {
|
||||
} from "./chunk-PNW5KFH4.js";
|
||||
import {
|
||||
parse
|
||||
} from "./chunk-AWNKEY2Y.js";
|
||||
} from "./chunk-ORIZ2BG5.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-XP22GJHQ.js";
|
||||
import "./chunk-NYZY7JGI.js";
|
||||
import "./chunk-FNEVJCCX.js";
|
||||
import "./chunk-R33GOAXK.js";
|
||||
import "./chunk-5SXTVVUG.js";
|
||||
import "./chunk-BUI4I457.js";
|
||||
import "./chunk-CHJ5BV6S.js";
|
||||
import "./chunk-WHHJWK6B.js";
|
||||
import "./chunk-6SIVX7OU.js";
|
||||
import {
|
||||
selectSvgElement
|
||||
} from "./chunk-B5NQPFQG.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import {
|
||||
cleanAndMerge,
|
||||
parseFontSize
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
clear,
|
||||
@ -33,6 +34,7 @@ import {
|
||||
setAccTitle,
|
||||
setDiagramTitle
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
arc_default,
|
||||
@ -40,8 +42,6 @@ import {
|
||||
ordinal,
|
||||
pie_default
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import "./chunk-TKSB4YUA.js";
|
||||
|
||||
// node_modules/mermaid/dist/chunks/mermaid.core/pieDiagram-ADFJNKIX.mjs
|
||||
@ -225,4 +225,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=pieDiagram-ADFJNKIX-B5ITLD23.js.map
|
||||
//# sourceMappingURL=pieDiagram-ADFJNKIX-HTPFO6AD.js.map
|
@ -7,16 +7,16 @@ import {
|
||||
import {
|
||||
getRegisteredLayoutAlgorithm,
|
||||
render
|
||||
} from "./chunk-EAO6AZLE.js";
|
||||
import "./chunk-ZZNURHEZ.js";
|
||||
} from "./chunk-SOVT3CA7.js";
|
||||
import "./chunk-ZCTBDDTS.js";
|
||||
import "./chunk-2HSIUWWJ.js";
|
||||
import "./chunk-2WFBHHKP.js";
|
||||
import "./chunk-JJ4TL56I.js";
|
||||
import "./chunk-EUUYHBKV.js";
|
||||
import "./chunk-FTTOYZOY.js";
|
||||
import "./chunk-XIFRTXJX.js";
|
||||
import "./chunk-NMWDZEZO.js";
|
||||
import {
|
||||
utils_default
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
clear,
|
||||
@ -28,12 +28,12 @@ import {
|
||||
setAccTitle,
|
||||
setDiagramTitle
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__export,
|
||||
__name,
|
||||
log
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import "./chunk-TKSB4YUA.js";
|
||||
|
||||
// node_modules/mermaid/dist/chunks/mermaid.core/requirementDiagram-UZGBJVZJ.mjs
|
||||
@ -1263,4 +1263,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=requirementDiagram-UZGBJVZJ-OT76XWNT.js.map
|
||||
//# sourceMappingURL=requirementDiagram-UZGBJVZJ-UYJHC736.js.map
|
@ -17,7 +17,7 @@ import {
|
||||
ZERO_WIDTH_SPACE,
|
||||
parseFontSize,
|
||||
utils_default
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import {
|
||||
require_dist
|
||||
} from "./chunk-CMK64ICG.js";
|
||||
@ -41,12 +41,12 @@ import {
|
||||
setConfig2,
|
||||
setDiagramTitle
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
log,
|
||||
select_default
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__spreadProps,
|
||||
__spreadValues,
|
||||
@ -4004,4 +4004,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=sequenceDiagram-WL72ISMW-HRTSSJHP.js.map
|
||||
//# sourceMappingURL=sequenceDiagram-WL72ISMW-O3J6HVSP.js.map
|
@ -2,26 +2,27 @@ import {
|
||||
StateDB,
|
||||
stateDiagram_default,
|
||||
styles_default
|
||||
} from "./chunk-WBFNWS3A.js";
|
||||
} from "./chunk-ZWXGVCUO.js";
|
||||
import {
|
||||
layout
|
||||
} from "./chunk-YUMEK5VY.js";
|
||||
import {
|
||||
Graph
|
||||
} from "./chunk-MEGNL3BT.js";
|
||||
import "./chunk-6SIVX7OU.js";
|
||||
import "./chunk-PLWNSIKB.js";
|
||||
import "./chunk-LHH5RO5K.js";
|
||||
import "./chunk-6SIVX7OU.js";
|
||||
import "./chunk-EAO6AZLE.js";
|
||||
import "./chunk-ZZNURHEZ.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import "./chunk-SOVT3CA7.js";
|
||||
import "./chunk-ZCTBDDTS.js";
|
||||
import "./chunk-2HSIUWWJ.js";
|
||||
import "./chunk-2WFBHHKP.js";
|
||||
import "./chunk-JJ4TL56I.js";
|
||||
import "./chunk-EUUYHBKV.js";
|
||||
import "./chunk-FTTOYZOY.js";
|
||||
import "./chunk-XIFRTXJX.js";
|
||||
import "./chunk-NMWDZEZO.js";
|
||||
import {
|
||||
utils_default
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
common_default,
|
||||
@ -29,6 +30,7 @@ import {
|
||||
getConfig2,
|
||||
getUrl
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
basis_default,
|
||||
@ -36,8 +38,6 @@ import {
|
||||
log,
|
||||
select_default
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-NGEE2U2J.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import "./chunk-TKSB4YUA.js";
|
||||
|
||||
// node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-FKZM4ZOC.mjs
|
||||
@ -490,4 +490,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=stateDiagram-FKZM4ZOC-FVHIKWH4.js.map
|
||||
//# sourceMappingURL=stateDiagram-FKZM4ZOC-JBDO72I4.js.map
|
@ -3,23 +3,23 @@ import {
|
||||
stateDiagram_default,
|
||||
stateRenderer_v3_unified_default,
|
||||
styles_default
|
||||
} from "./chunk-WBFNWS3A.js";
|
||||
} from "./chunk-ZWXGVCUO.js";
|
||||
import "./chunk-PLWNSIKB.js";
|
||||
import "./chunk-LHH5RO5K.js";
|
||||
import "./chunk-EAO6AZLE.js";
|
||||
import "./chunk-ZZNURHEZ.js";
|
||||
import "./chunk-SOVT3CA7.js";
|
||||
import "./chunk-ZCTBDDTS.js";
|
||||
import "./chunk-2HSIUWWJ.js";
|
||||
import "./chunk-2WFBHHKP.js";
|
||||
import "./chunk-JJ4TL56I.js";
|
||||
import "./chunk-EUUYHBKV.js";
|
||||
import "./chunk-FTTOYZOY.js";
|
||||
import "./chunk-XIFRTXJX.js";
|
||||
import "./chunk-SHNTMSU6.js";
|
||||
import "./chunk-NMWDZEZO.js";
|
||||
import "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import "./chunk-TKSB4YUA.js";
|
||||
|
||||
// node_modules/mermaid/dist/chunks/mermaid.core/stateDiagram-v2-4FDKWEC3.mjs
|
||||
@ -40,4 +40,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=stateDiagram-v2-4FDKWEC3-YF6BIDZS.js.map
|
||||
//# sourceMappingURL=stateDiagram-v2-4FDKWEC3-6YULITBX.js.map
|
@ -3,10 +3,10 @@ import {
|
||||
} from "./chunk-B5NQPFQG.js";
|
||||
import {
|
||||
computeDimensionOfText
|
||||
} from "./chunk-XIFRTXJX.js";
|
||||
} from "./chunk-NMWDZEZO.js";
|
||||
import {
|
||||
cleanAndMerge
|
||||
} from "./chunk-SHNTMSU6.js";
|
||||
} from "./chunk-QVVRGVV3.js";
|
||||
import "./chunk-CMK64ICG.js";
|
||||
import {
|
||||
clear,
|
||||
@ -22,6 +22,7 @@ import {
|
||||
setAccTitle,
|
||||
setDiagramTitle
|
||||
} from "./chunk-BFCVI5XI.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import {
|
||||
__name,
|
||||
band,
|
||||
@ -29,7 +30,6 @@ import {
|
||||
linear,
|
||||
log
|
||||
} from "./chunk-I65GBZ6F.js";
|
||||
import "./chunk-M5X7JH4I.js";
|
||||
import "./chunk-TKSB4YUA.js";
|
||||
|
||||
// node_modules/mermaid/dist/chunks/mermaid.core/xychartDiagram-PRI3JC2R.mjs
|
||||
@ -1913,4 +1913,4 @@ var diagram = {
|
||||
export {
|
||||
diagram
|
||||
};
|
||||
//# sourceMappingURL=xychartDiagram-PRI3JC2R-POXCDNLO.js.map
|
||||
//# sourceMappingURL=xychartDiagram-PRI3JC2R-3HCTMHS4.js.map
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"hash": "8eb8ef6f",
|
||||
"hash": "0356a024",
|
||||
"configHash": "9e47cd39",
|
||||
"lockfileHash": "0f64d2e1",
|
||||
"browserHash": "c75f806d",
|
||||
"lockfileHash": "77f35274",
|
||||
"browserHash": "24be409e",
|
||||
"optimized": {},
|
||||
"chunks": {}
|
||||
}
|
39
Todo.md
39
Todo.md
@ -1,23 +1,20 @@
|
||||
# Missing Features / Limitations
|
||||
|
||||
* [X] **Heading varieties** : No support for Setext headings (`===`/`---` underlines), optional closing `#`, heading IDs with duplicate handling, nor preservation of a top-level `h1` (current logic drops the first `#` heading unconditionally).
|
||||
* [X] **Paragraph semantics** : Paragraph building treats every non-empty line as a `<p>` and inserts `<br>` between, breaking standard markdown rules about blank lines, lazy continuation lines, and container blocks (lists, blockquotes).
|
||||
* [X] **List handling** : Regex conversion expects isolated list lines and wraps each `<li>` in its own `<ul>`/`<ol>`, so multi-line items, nested lists, tight/loose spacing, ordered list numbering, and bullet-marker variations (`+`, `-`, `*`) are all mis-rendered. Task list logic converts any single line but cannot coexist with proper list structure.
|
||||
* [ ] **Blockquotes** : Generic blockquote replacement only grabs one line after `>`, losing nested content, lazy continuations, and mixed blocks (e.g., lists inside blockquotes).
|
||||
* [ ] **Emphasis rules** : Simple replacements for `*`/`**`/`~~` ignore underscores, intraword emphasis rules, nesting, escaping, or edge cases like `***bold and italic***`.
|
||||
* [ ] **Inline code spans** : Handles only single-line ``code`` sequences and does not honor backtick escapes, trim rules, or multiple backtick fences.
|
||||
* [ ] **Links & images** : Only processes inline destination syntax with absolute URLs. Missing relative path support, reference-style links (`[ref][]`), angle-bracket autolinks `<https://>`, image titles without URL, and no differentiation between external and internal links beyond scheme check.
|
||||
* [ ] **Reference definitions** : No parsing for link/image reference definitions at block level (`[id]: URL "title"`), so references cannot resolve.
|
||||
* [ ] **Footnotes & definitions** : Lacks footnote syntax (`[^1]`) and corresponding rendering.
|
||||
* [ ] **Tables (GFM extensions)** : Only pipe tables supported. Missing support for inline markdown within cells, row spans, or text alignment fallback when separators are malformed.
|
||||
* [ ] **Code blocks** : Indented code blocks (4 spaces) not detected; fenced blocks limited to triple backticks, no tilde fences (`~~~`), info string handling is case-sensitive, and language fallback doesn’t respect GFM spec (e.g., unrecognized language should leave raw text).
|
||||
* [ ] **HTML blocks/inlines** : Raw HTML either stripped or double-escaped; there’s no logic to allow HTML blocks or disallowed raw HTML rules from GFM.
|
||||
* [ ] **Escaping** : Backslash escapes for punctuation, entity references, and escaping special characters are unsupported;
|
||||
|
||||
escapeHtml() only runs on select segments.
|
||||
* [ ] **Hard/soft line breaks** : Treats every newline as `<br>`, ignoring two-space hard break convention and soft break behavior.
|
||||
* [ ] **Math/LaTeX** : `$$…$$` replaced with a static placeholder; inline math `$…$`, `\(` `\)` not handled.
|
||||
* [ ] **Frontmatter** : YAML frontmatter stripping not present; if notes contain `---` blocks at top they flow into paragraph logic.
|
||||
* [ ] **Metadata parsing** : No support for Obsidian wiki-links `[[Note]]` (only attachments) or block references (`^block-id`), tags inside frontmatter, or embedded queries.
|
||||
* [ ] **Performance/robustness** : Repeated global regex replacements can introduce double-wrapping, miss overlapping patterns, and make escaping fragile. Lacking overall markdown parsing state leads to conflicts (e.g., `#hashtag` inside code blocks already removed via placeholder but inline code restoration may still break hashtags).
|
||||
* [ ] **Internationalization** : slugify() strips non-word characters, removing accents rather than transliterating; may produce empty IDs for non-Latin headings.
|
||||
* [x] **Heading varieties** : No support for Setext headings (`===` /`---` underlines), optional closing `#` , heading IDs with duplicate handling, nor preservation of a top-level `h1` (current logic drops the first `#` heading unconditionally).
|
||||
* [x] **Paragraph semantics** : Paragraph building treats every non-empty line as a `<p>` and inserts `<br>` between, breaking standard markdown rules about blank lines, lazy continuation lines, and container blocks (lists, blockquotes).
|
||||
* [x] **List handling** : Regex conversion expects isolated list lines and wraps each `<li>` in its own `<ul>` /`<ol>` , so multi-line items, nested lists, tight/loose spacing, ordered list numbering, and bullet-marker variations (`+` , `-` , `*` ) are all mis-rendered. Task list logic converts any single line but cannot coexist with proper list structure.
|
||||
* [x] **Blockquotes** : Generic blockquote replacement only grabs one line after `>` , losing nested content, lazy continuations, and mixed blocks (e.g., lists inside blockquotes).
|
||||
* [x] **Emphasis rules** : Simple replacements for `*` /`**` /`~~` ignore underscores, intraword emphasis rules, nesting, escaping, or edge cases like `***bold and italic***` .
|
||||
* [x] **Links & images** : Only processes inline destination syntax with absolute URLs. Missing relative path support, reference-style links (`[ref][]` ), angle-bracket autolinks `<https://>` , image titles without URL, and no differentiation between external and internal links beyond scheme check.
|
||||
* [x] **Reference definitions** : No parsing for link/image reference definitions at block level (`[id]: URL "title"` ), so references cannot resolve.
|
||||
* [x] **Footnotes & definitions** : Lacks footnote syntax (`[^1]` ) and corresponding rendering.
|
||||
* [x] **HTML blocks/inlines** : Raw HTML either stripped or double-escaped; there’s no logic to allow HTML blocks or disallowed raw HTML rules from GFM.
|
||||
* [x] **Escaping** : Backslash escapes for punctuation, entity references, and escaping special characters are unsupported;\n escapeHtml() only runs on select segments.
|
||||
* [x] **Hard/soft line breaks** : Treats every newline as `<br>` , ignoring two-space hard break convention and soft break behavior.
|
||||
* [x] **Performance/robustness** : Repeated global regex replacements can introduce double-wrapping, miss overlapping patterns, and make escaping fragile. Lacking overall markdown parsing state leads to conflicts (e.g., `#hashtag` inside code blocks already removed via placeholder but inline code restoration may still break hashtags).
|
||||
* [x] **Inline code spans** : Handles only single-line ``code`` sequences and does not honor backtick escapes, trim rules, or multiple backtick fences.
|
||||
* [x] **Tables (GFM extensions)** : Only pipe tables supported. Missing support for inline markdown within cells, row spans, or text alignment fallback when separators are malformed.
|
||||
* [x] **Code blocks** : Indented code blocks (4 spaces) not detected; fenced blocks limited to triple backticks, no tilde fences (`~~~`), info string handling is case-sensitive, and language fallback doesn’t respect GFM spec (e.g., unrecognized language should leave raw text).
|
||||
* [x] **Math/LaTeX** : `$$…$$` replaced with a static placeholder; inline math `$…$`, `\(` `\)` not handled.
|
||||
* [x] **Frontmatter** : YAML frontmatter stripping not present; if notes contain `---` blocks at top they flow into paragraph logic.
|
||||
* [x] **Internationalization** : slugify() strips non-word characters, removing accents rather than transliterating; may produce empty IDs for non-Latin headings.
|
||||
|
455
head_app.component.ts
Normal file
455
head_app.component.ts
Normal file
@ -0,0 +1,455 @@
|
||||
import { Component, ChangeDetectionStrategy, inject, signal, computed, effect, ElementRef, OnDestroy } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
|
||||
// Services
|
||||
import { VaultService } from './services/vault.service';
|
||||
import { MarkdownService } from './services/markdown.service';
|
||||
|
||||
// Components
|
||||
import { FileExplorerComponent } from './components/file-explorer/file-explorer.component';
|
||||
import { NoteViewerComponent } from './components/note-viewer/note-viewer.component';
|
||||
import { GraphViewComponent } from './components/graph-view/graph-view.component';
|
||||
import { TagsViewComponent } from './components/tags-view/tags-view.component';
|
||||
import { MarkdownCalendarComponent } from './components/markdown-calendar/markdown-calendar.component';
|
||||
|
||||
// Types
|
||||
import { FileMetadata, Note, TagInfo, VaultNode } from './types';
|
||||
|
||||
interface TocEntry {
|
||||
level: number;
|
||||
text: string;
|
||||
id: string;
|
||||
}
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
imports: [
|
||||
CommonModule,
|
||||
FormsModule,
|
||||
FileExplorerComponent,
|
||||
NoteViewerComponent,
|
||||
GraphViewComponent,
|
||||
TagsViewComponent,
|
||||
MarkdownCalendarComponent,
|
||||
],
|
||||
templateUrl: './app.component.simple.html',
|
||||
styleUrls: ['./app.component.css'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
})
|
||||
export class AppComponent implements OnDestroy {
|
||||
private vaultService = inject(VaultService);
|
||||
private markdownService = inject(MarkdownService);
|
||||
private elementRef = inject(ElementRef);
|
||||
|
||||
// --- State Signals ---
|
||||
isDarkMode = signal<boolean>(true);
|
||||
isSidebarOpen = signal<boolean>(true);
|
||||
isOutlineOpen = signal<boolean>(true);
|
||||
activeView = signal<'files' | 'graph' | 'tags' | 'search' | 'calendar'>('files');
|
||||
selectedNoteId = signal<string>('');
|
||||
sidebarSearchTerm = signal<string>('');
|
||||
tableOfContents = signal<TocEntry[]>([]);
|
||||
leftSidebarWidth = signal<number>(288);
|
||||
rightSidebarWidth = signal<number>(288);
|
||||
readonly LEFT_MIN_WIDTH = 220;
|
||||
readonly LEFT_MAX_WIDTH = 520;
|
||||
readonly RIGHT_MIN_WIDTH = 220;
|
||||
readonly RIGHT_MAX_WIDTH = 520;
|
||||
|
||||
private viewportWidth = signal<number>(typeof window !== 'undefined' ? window.innerWidth : 0);
|
||||
private resizeHandler = () => {
|
||||
if (typeof window === 'undefined') {
|
||||
return;
|
||||
}
|
||||
this.viewportWidth.set(window.innerWidth);
|
||||
};
|
||||
|
||||
isDesktopView = computed<boolean>(() => this.viewportWidth() >= 1024);
|
||||
private wasDesktop = false;
|
||||
|
||||
calendarResults = signal<FileMetadata[]>([]);
|
||||
calendarSearchState = signal<'idle' | 'loading' | 'error'>('idle');
|
||||
calendarSearchError = signal<string | null>(null);
|
||||
calendarSelectionLabel = signal<string | null>(null);
|
||||
calendarOverlayVisible = computed<boolean>(() =>
|
||||
this.calendarSearchState() === 'loading' ||
|
||||
!!this.calendarSearchError() ||
|
||||
this.calendarResults().length > 0
|
||||
);
|
||||
private calendarSearchTriggered = false;
|
||||
|
||||
// --- Data Signals ---
|
||||
fileTree = this.vaultService.fileTree;
|
||||
graphData = this.vaultService.graphData;
|
||||
allTags = this.vaultService.tags;
|
||||
vaultName = this.vaultService.vaultName;
|
||||
|
||||
// --- Computed Signals ---
|
||||
selectedNote = computed<Note | undefined>(() => {
|
||||
const id = this.selectedNoteId();
|
||||
return id ? this.vaultService.getNoteById(id) : undefined;
|
||||
});
|
||||
|
||||
renderedNoteContent = computed<string>(() => {
|
||||
const note = this.selectedNote();
|
||||
if (!note) return '';
|
||||
const allNotes = this.vaultService.allNotes();
|
||||
return this.markdownService.render(note.content, allNotes, note);
|
||||
});
|
||||
|
||||
selectedNoteBreadcrumb = computed<string[]>(() => {
|
||||
const note = this.selectedNote();
|
||||
if (!note) {
|
||||
return [];
|
||||
}
|
||||
|
||||
const vaultTitle = this.vaultName().trim();
|
||||
const breadcrumb: string[] = [vaultTitle || 'Vault'];
|
||||
const pathSegments = note.originalPath.split('/').filter(Boolean);
|
||||
|
||||
if (pathSegments.length === 0) {
|
||||
breadcrumb.push(note.fileName.replace(/\.md$/i, ''));
|
||||
return breadcrumb;
|
||||
}
|
||||
|
||||
const displaySegments = [...pathSegments];
|
||||
displaySegments[displaySegments.length - 1] = note.fileName.replace(/\.md$/i, '');
|
||||
return breadcrumb.concat(displaySegments);
|
||||
});
|
||||
|
||||
filteredTags = computed<TagInfo[]>(() => {
|
||||
const term = this.sidebarSearchTerm().trim().toLowerCase();
|
||||
const cleanedTerm = term.startsWith('#') ? term.slice(1) : term;
|
||||
if (!cleanedTerm) return this.allTags();
|
||||
return this.allTags().filter(tag => tag.name.toLowerCase().includes(cleanedTerm));
|
||||
});
|
||||
|
||||
filteredFileTree = computed<VaultNode[]>(() => {
|
||||
const term = this.sidebarSearchTerm().trim().toLowerCase();
|
||||
if (!term || term.startsWith('#')) return this.fileTree();
|
||||
// Simple flat search for files
|
||||
return this.fileTree().filter(node => node.type === 'file' && node.name.toLowerCase().includes(term));
|
||||
});
|
||||
|
||||
activeTagFilter = computed<string | null>(() => {
|
||||
const rawTerm = this.sidebarSearchTerm().trim();
|
||||
if (!rawTerm.startsWith('#')) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const tag = rawTerm.slice(1).trim();
|
||||
return tag ? tag.toLowerCase() : null;
|
||||
});
|
||||
|
||||
searchResults = computed<Note[]>(() => {
|
||||
const notes = this.vaultService.allNotes();
|
||||
const tagFilter = this.activeTagFilter();
|
||||
|
||||
if (tagFilter) {
|
||||
return notes.filter(note => note.tags.some(tag => tag.toLowerCase() === tagFilter));
|
||||
}
|
||||
|
||||
const term = this.sidebarSearchTerm().trim().toLowerCase();
|
||||
if (!term) return [];
|
||||
const cleanedTerm = term.startsWith('#') ? term.slice(1) : term;
|
||||
return notes.filter(note =>
|
||||
note.title.toLowerCase().includes(cleanedTerm) ||
|
||||
note.content.toLowerCase().includes(cleanedTerm) ||
|
||||
note.tags.some(tag => tag.toLowerCase().includes(cleanedTerm))
|
||||
);
|
||||
});
|
||||
|
||||
constructor() {
|
||||
if (typeof window !== 'undefined') {
|
||||
window.addEventListener('resize', this.resizeHandler, { passive: true });
|
||||
}
|
||||
|
||||
this.wasDesktop = this.isDesktopView();
|
||||
if (!this.isDesktopView()) {
|
||||
this.isSidebarOpen.set(false);
|
||||
this.isOutlineOpen.set(false);
|
||||
}
|
||||
|
||||
// Effect to update the DOM with the dark class
|
||||
effect(() => {
|
||||
if (this.isDarkMode()) {
|
||||
document.documentElement.classList.add('dark');
|
||||
} else {
|
||||
document.documentElement.classList.remove('dark');
|
||||
}
|
||||
});
|
||||
|
||||
effect(() => {
|
||||
const isDesktop = this.isDesktopView();
|
||||
if (isDesktop && !this.wasDesktop) {
|
||||
this.isSidebarOpen.set(true);
|
||||
this.isOutlineOpen.set(true);
|
||||
}
|
||||
if (!isDesktop && this.wasDesktop) {
|
||||
this.isSidebarOpen.set(false);
|
||||
this.isOutlineOpen.set(false);
|
||||
}
|
||||
this.wasDesktop = isDesktop;
|
||||
});
|
||||
|
||||
// Effect to generate Table of Contents when the note changes
|
||||
effect(() => {
|
||||
const html = this.renderedNoteContent();
|
||||
if (html && this.selectedNote()) {
|
||||
this.generateToc(html);
|
||||
} else {
|
||||
this.tableOfContents.set([]);
|
||||
}
|
||||
});
|
||||
|
||||
effect(() => {
|
||||
if (typeof document === 'undefined') {
|
||||
return;
|
||||
}
|
||||
const vaultTitle = this.vaultName().trim();
|
||||
document.title = `ObsiWatcher - ${vaultTitle || 'Vault'}`;
|
||||
});
|
||||
|
||||
// Effect to select first available note when vault data loads
|
||||
effect(() => {
|
||||
const notes = this.vaultService.allNotes();
|
||||
const currentId = this.selectedNoteId();
|
||||
if (!notes.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
const currentExists = notes.some(note => note.id === currentId);
|
||||
if (!currentExists) {
|
||||
const firstNote = notes[0];
|
||||
this.vaultService.ensureFolderOpen(firstNote.originalPath);
|
||||
this.selectedNoteId.set(firstNote.id);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
ngOnDestroy(): void {
|
||||
if (typeof window !== 'undefined') {
|
||||
window.removeEventListener('resize', this.resizeHandler);
|
||||
}
|
||||
}
|
||||
|
||||
// --- Methods ---
|
||||
toggleTheme(): void {
|
||||
this.isDarkMode.update(value => !value);
|
||||
}
|
||||
|
||||
toggleSidebar(): void {
|
||||
this.isSidebarOpen.update(value => !value);
|
||||
}
|
||||
|
||||
closeSidebar(): void {
|
||||
this.isSidebarOpen.set(false);
|
||||
}
|
||||
|
||||
toggleSidebarTo(state: boolean): void {
|
||||
this.isSidebarOpen.set(state);
|
||||
}
|
||||
|
||||
toggleOutline(): void {
|
||||
this.isOutlineOpen.update(value => !value);
|
||||
}
|
||||
|
||||
closeOutlinePanel(): void {
|
||||
this.isOutlineOpen.set(false);
|
||||
}
|
||||
|
||||
toggleOutlineTo(state: boolean): void {
|
||||
this.isOutlineOpen.set(state);
|
||||
}
|
||||
|
||||
isDesktop(): boolean {
|
||||
return this.isDesktopView();
|
||||
}
|
||||
|
||||
onCalendarResultsChange(files: FileMetadata[]): void {
|
||||
this.calendarResults.set(files);
|
||||
if (this.calendarSearchTriggered || files.length > 0 || this.activeView() === 'search') {
|
||||
this.isSidebarOpen.set(true);
|
||||
this.activeView.set('search');
|
||||
this.calendarSearchTriggered = false;
|
||||
}
|
||||
}
|
||||
|
||||
onCalendarSearchStateChange(state: 'idle' | 'loading' | 'error'): void {
|
||||
this.calendarSearchState.set(state);
|
||||
if (state === 'loading') {
|
||||
this.calendarSearchTriggered = true;
|
||||
}
|
||||
}
|
||||
|
||||
onCalendarSearchErrorChange(message: string | null): void {
|
||||
this.calendarSearchError.set(message);
|
||||
if (message) {
|
||||
this.isSidebarOpen.set(true);
|
||||
this.activeView.set('search');
|
||||
this.calendarSearchTriggered = false;
|
||||
}
|
||||
}
|
||||
|
||||
onCalendarSelectionSummaryChange(summary: string | null): void {
|
||||
this.calendarSelectionLabel.set(summary);
|
||||
}
|
||||
|
||||
onCalendarRequestSearchPanel(): void {
|
||||
if (this.activeView() === 'calendar') {
|
||||
if (!this.isSidebarOpen()) {
|
||||
this.isSidebarOpen.set(true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
this.isSidebarOpen.set(true);
|
||||
this.activeView.set('search');
|
||||
}
|
||||
|
||||
startLeftResize(event: PointerEvent): void {
|
||||
if (!this.isSidebarOpen()) {
|
||||
this.isSidebarOpen.set(true);
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
const handle = event.currentTarget as HTMLElement | null;
|
||||
handle?.setPointerCapture(event.pointerId);
|
||||
|
||||
const startX = event.clientX;
|
||||
const startWidth = this.leftSidebarWidth();
|
||||
|
||||
const moveHandler = (moveEvent: PointerEvent) => {
|
||||
const delta = moveEvent.clientX - startX;
|
||||
let newWidth = startWidth + delta;
|
||||
newWidth = Math.max(this.LEFT_MIN_WIDTH, Math.min(this.LEFT_MAX_WIDTH, newWidth));
|
||||
this.leftSidebarWidth.set(newWidth);
|
||||
};
|
||||
|
||||
const cleanup = () => {
|
||||
window.removeEventListener('pointermove', moveHandler);
|
||||
window.removeEventListener('pointerup', cleanup);
|
||||
window.removeEventListener('pointercancel', cleanup);
|
||||
if (handle && handle.hasPointerCapture?.(event.pointerId)) {
|
||||
handle.releasePointerCapture(event.pointerId);
|
||||
}
|
||||
handle?.removeEventListener('lostpointercapture', cleanup);
|
||||
};
|
||||
|
||||
window.addEventListener('pointermove', moveHandler);
|
||||
window.addEventListener('pointerup', cleanup);
|
||||
window.addEventListener('pointercancel', cleanup);
|
||||
handle?.addEventListener('lostpointercapture', cleanup);
|
||||
}
|
||||
|
||||
startRightResize(event: PointerEvent): void {
|
||||
if (!this.isOutlineOpen()) {
|
||||
this.isOutlineOpen.set(true);
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
const handle = event.currentTarget as HTMLElement | null;
|
||||
handle?.setPointerCapture(event.pointerId);
|
||||
|
||||
const startX = event.clientX;
|
||||
const startWidth = this.rightSidebarWidth();
|
||||
|
||||
const moveHandler = (moveEvent: PointerEvent) => {
|
||||
const delta = moveEvent.clientX - startX;
|
||||
let newWidth = startWidth - delta;
|
||||
newWidth = Math.max(this.RIGHT_MIN_WIDTH, Math.min(this.RIGHT_MAX_WIDTH, newWidth));
|
||||
this.rightSidebarWidth.set(newWidth);
|
||||
};
|
||||
|
||||
const cleanup = () => {
|
||||
window.removeEventListener('pointermove', moveHandler);
|
||||
window.removeEventListener('pointerup', cleanup);
|
||||
window.removeEventListener('pointercancel', cleanup);
|
||||
if (handle && handle.hasPointerCapture?.(event.pointerId)) {
|
||||
handle.releasePointerCapture(event.pointerId);
|
||||
}
|
||||
handle?.removeEventListener('lostpointercapture', cleanup);
|
||||
};
|
||||
|
||||
window.addEventListener('pointermove', moveHandler);
|
||||
window.addEventListener('pointerup', cleanup);
|
||||
window.addEventListener('pointercancel', cleanup);
|
||||
handle?.addEventListener('lostpointercapture', cleanup);
|
||||
}
|
||||
|
||||
setView(view: 'files' | 'graph' | 'tags' | 'search' | 'calendar'): void {
|
||||
this.activeView.set(view);
|
||||
this.sidebarSearchTerm.set('');
|
||||
}
|
||||
|
||||
selectNote(noteId: string): void {
|
||||
const note = this.vaultService.getNoteById(noteId);
|
||||
if (!note) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.vaultService.ensureFolderOpen(note.originalPath);
|
||||
this.selectedNoteId.set(note.id);
|
||||
|
||||
if (!this.isDesktopView() && this.activeView() === 'search') {
|
||||
this.isSidebarOpen.set(false);
|
||||
}
|
||||
}
|
||||
|
||||
handleTagClick(tagName: string): void {
|
||||
const normalized = tagName.replace(/^#/, '').trim();
|
||||
if (!normalized) {
|
||||
return;
|
||||
}
|
||||
this.setView('search');
|
||||
this.sidebarSearchTerm.set(`#${normalized}`);
|
||||
}
|
||||
|
||||
clearTagFilter(): void {
|
||||
this.sidebarSearchTerm.set('');
|
||||
}
|
||||
|
||||
clearCalendarResults(): void {
|
||||
this.calendarResults.set([]);
|
||||
this.calendarSearchState.set('idle');
|
||||
this.calendarSearchError.set(null);
|
||||
this.calendarSelectionLabel.set(null);
|
||||
this.calendarSearchTriggered = false;
|
||||
}
|
||||
|
||||
updateSearchTerm(term: string, focusSearch = false): void {
|
||||
this.sidebarSearchTerm.set(term ?? '');
|
||||
if (focusSearch || (term && term.trim().length > 0)) {
|
||||
this.activeView.set('search');
|
||||
}
|
||||
}
|
||||
|
||||
private generateToc(html: string): void {
|
||||
const toc: TocEntry[] = [];
|
||||
const parser = new DOMParser();
|
||||
const doc = parser.parseFromString(html, 'text/html');
|
||||
const headings = doc.querySelectorAll('h1, h2, h3, h4, h5, h6');
|
||||
|
||||
headings.forEach(heading => {
|
||||
if (heading.id && heading.textContent) {
|
||||
toc.push({
|
||||
level: parseInt(heading.tagName.substring(1), 10),
|
||||
text: heading.textContent,
|
||||
id: heading.id
|
||||
});
|
||||
}
|
||||
});
|
||||
this.tableOfContents.set(toc);
|
||||
}
|
||||
|
||||
scrollToHeading(id: string): void {
|
||||
// The note viewer component's content area is what scrolls
|
||||
const contentArea = (this.elementRef.nativeElement as HTMLElement).querySelector('.note-content-area');
|
||||
if(contentArea) {
|
||||
const element = contentArea.querySelector(`#${id}`);
|
||||
if (element) {
|
||||
element.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
179
package-lock.json
generated
179
package-lock.json
generated
@ -25,10 +25,14 @@
|
||||
"markdown-it": "^14.1.0",
|
||||
"markdown-it-anchor": "^8.6.7",
|
||||
"markdown-it-attrs": "^4.3.1",
|
||||
"markdown-it-footnote": "^3.0.3",
|
||||
"markdown-it-mathjax3": "^5.1.0",
|
||||
"markdown-it-multimd-table": "^4.2.3",
|
||||
"markdown-it-task-lists": "^2.1.1",
|
||||
"mermaid": "^11.12.0",
|
||||
"rxjs": "^7.8.2",
|
||||
"tailwindcss": "^3.4.14",
|
||||
"transliteration": "^2.3.5",
|
||||
"type-fest": "^5.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
@ -7136,6 +7140,27 @@
|
||||
"markdown-it": ">= 9.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/markdown-it-footnote": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-footnote/-/markdown-it-footnote-3.0.3.tgz",
|
||||
"integrity": "sha512-YZMSuCGVZAjzKMn+xqIco9d1cLGxbELHZ9do/TSYVzraooV8ypsppKNmUJ0fVH5ljkCInQAtFpm8Rb3eXSrt5w==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/markdown-it-mathjax3": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-mathjax3/-/markdown-it-mathjax3-5.1.0.tgz",
|
||||
"integrity": "sha512-J72CXe8N1wOwUOn/zcR9tiIG+HDPI9GiE0GXlgnIFULf8TfTbnGLr1/ty74etwNgxBwp+U5znV8hTJVBM2txfQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"mathxyjax3": "^0.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/markdown-it-multimd-table": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-multimd-table/-/markdown-it-multimd-table-4.2.3.tgz",
|
||||
"integrity": "sha512-KepCr2OMJqm7IT6sOIbuqHGe+NERhgy66XMrc5lo6dHW7oaPzMDtYwR1EGwK16/blb6mCSg4jqityOe0o/H7HA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/markdown-it-task-lists": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz",
|
||||
@ -7163,6 +7188,12 @@
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/mathxyjax3": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/mathxyjax3/-/mathxyjax3-0.5.1.tgz",
|
||||
"integrity": "sha512-f0kVJBoCvl9MVmRjvtH3GorXYv2wTcn6WQ+Mh4NGs2i+Ew0zq8w7P7l0r6TgFu8hRYN7Do/02Wt/Mi0xIYn8XQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/mdurl": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
|
||||
@ -8631,6 +8662,15 @@
|
||||
"integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==",
|
||||
"license": "Apache-2.0"
|
||||
},
|
||||
"node_modules/require-directory": {
|
||||
"version": "2.1.1",
|
||||
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
||||
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/require-from-string": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
|
||||
@ -9645,6 +9685,145 @@
|
||||
"node": ">=0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/transliteration": {
|
||||
"version": "2.3.5",
|
||||
"resolved": "https://registry.npmjs.org/transliteration/-/transliteration-2.3.5.tgz",
|
||||
"integrity": "sha512-HAGI4Lq4Q9dZ3Utu2phaWgtm3vB6PkLUFqWAScg/UW+1eZ/Tg6Exo4oC0/3VUol/w4BlefLhUUSVBr/9/ZGQOw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"yargs": "^17.5.1"
|
||||
},
|
||||
"bin": {
|
||||
"slugify": "dist/bin/slugify",
|
||||
"transliterate": "dist/bin/transliterate"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/transliteration/node_modules/ansi-regex": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
||||
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/transliteration/node_modules/ansi-styles": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
||||
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"color-convert": "^2.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/transliteration/node_modules/cliui": {
|
||||
"version": "8.0.1",
|
||||
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
|
||||
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"string-width": "^4.2.0",
|
||||
"strip-ansi": "^6.0.1",
|
||||
"wrap-ansi": "^7.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/transliteration/node_modules/emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/transliteration/node_modules/is-fullwidth-code-point": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
||||
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/transliteration/node_modules/string-width": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
||||
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"emoji-regex": "^8.0.0",
|
||||
"is-fullwidth-code-point": "^3.0.0",
|
||||
"strip-ansi": "^6.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/transliteration/node_modules/strip-ansi": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
||||
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ansi-regex": "^5.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/transliteration/node_modules/wrap-ansi": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
||||
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"ansi-styles": "^4.0.0",
|
||||
"string-width": "^4.1.0",
|
||||
"strip-ansi": "^6.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/transliteration/node_modules/yargs": {
|
||||
"version": "17.7.2",
|
||||
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
|
||||
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"cliui": "^8.0.1",
|
||||
"escalade": "^3.1.1",
|
||||
"get-caller-file": "^2.0.5",
|
||||
"require-directory": "^2.1.1",
|
||||
"string-width": "^4.2.3",
|
||||
"y18n": "^5.0.5",
|
||||
"yargs-parser": "^21.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/transliteration/node_modules/yargs-parser": {
|
||||
"version": "21.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
|
||||
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
|
||||
"license": "ISC",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/ts-dedent": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz",
|
||||
|
@ -6,7 +6,8 @@
|
||||
"scripts": {
|
||||
"dev": "ng serve",
|
||||
"build": "ng build",
|
||||
"preview": "ng serve --configuration=production"
|
||||
"preview": "ng serve --configuration=production",
|
||||
"test:markdown": "node --loader ts-node/esm --test src/services/markdown.service.spec.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@angular/build": "^20.3.0",
|
||||
@ -26,10 +27,14 @@
|
||||
"markdown-it": "^14.1.0",
|
||||
"markdown-it-anchor": "^8.6.7",
|
||||
"markdown-it-attrs": "^4.3.1",
|
||||
"markdown-it-footnote": "^3.0.3",
|
||||
"markdown-it-mathjax3": "^5.1.0",
|
||||
"markdown-it-multimd-table": "^4.2.3",
|
||||
"markdown-it-task-lists": "^2.1.1",
|
||||
"mermaid": "^11.12.0",
|
||||
"rxjs": "^7.8.2",
|
||||
"tailwindcss": "^3.4.14",
|
||||
"transliteration": "^2.3.5",
|
||||
"type-fest": "^5.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
5
scripts/check-table.ts
Normal file
5
scripts/check-table.ts
Normal file
@ -0,0 +1,5 @@
|
||||
import { MarkdownService } from '../src/services/markdown.service.js';
|
||||
|
||||
const service = new MarkdownService();
|
||||
const html = service.render(`| Syntax | Description |\n| --- | --- |\n| **bold** | \`code\` |\n`, []);
|
||||
console.log(html);
|
@ -448,7 +448,7 @@
|
||||
}
|
||||
</button>
|
||||
</div>
|
||||
<div class="relative w-full max-w-2xl lg:max-w-3xl">
|
||||
<div class="relative w-full lg:flex-1 lg:max-w-none lg:min-w-0">
|
||||
<svg class="pointer-events-none absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-obs-l-text-muted dark:text-obs-d-text-muted" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" /></svg>
|
||||
<input
|
||||
type="text"
|
||||
|
@ -370,7 +370,7 @@
|
||||
</button>
|
||||
</div>
|
||||
<div class="flex flex-1 items-center gap-3">
|
||||
<div class="relative w-full max-w-2xl lg:max-w-3xl">
|
||||
<div class="relative w-full flex-1 min-w-0">
|
||||
<svg class="pointer-events-none absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-obs-l-text-muted dark:text-obs-d-text-muted" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" /></svg>
|
||||
<input
|
||||
type="text"
|
||||
@ -398,6 +398,7 @@
|
||||
[noteHtmlContent]="renderedNoteContent()"
|
||||
(noteLinkClicked)="selectNote($event)"
|
||||
(tagClicked)="handleTagClick($event)"
|
||||
(wikiLinkActivated)="handleWikiLink($event)"
|
||||
></app-note-viewer>
|
||||
} @else {
|
||||
<div class="flex h-full items-center justify-center">
|
||||
|
@ -1,14 +1,13 @@
|
||||
import { Component, ChangeDetectionStrategy, inject, signal, computed, effect, ElementRef, OnDestroy } from '@angular/core';
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { FormsModule } from '@angular/forms';
|
||||
|
||||
// Services
|
||||
import { VaultService } from './services/vault.service';
|
||||
import { MarkdownService } from './services/markdown.service';
|
||||
|
||||
// Components
|
||||
import { FileExplorerComponent } from './components/file-explorer/file-explorer.component';
|
||||
import { NoteViewerComponent } from './components/note-viewer/note-viewer.component';
|
||||
import { NoteViewerComponent, WikiLinkActivation } from './components/note-viewer/note-viewer.component';
|
||||
import { GraphViewComponent } from './components/graph-view/graph-view.component';
|
||||
import { TagsViewComponent } from './components/tags-view/tags-view.component';
|
||||
import { MarkdownCalendarComponent } from './components/markdown-calendar/markdown-calendar.component';
|
||||
@ -78,6 +77,7 @@ export class AppComponent implements OnDestroy {
|
||||
this.calendarResults().length > 0
|
||||
);
|
||||
private calendarSearchTriggered = false;
|
||||
private pendingWikiNavigation = signal<{ noteId: string; heading?: string; block?: string } | null>(null);
|
||||
|
||||
// --- Data Signals ---
|
||||
fileTree = this.vaultService.fileTree;
|
||||
@ -203,6 +203,24 @@ export class AppComponent implements OnDestroy {
|
||||
}
|
||||
});
|
||||
|
||||
effect(() => {
|
||||
const pending = this.pendingWikiNavigation();
|
||||
const activeNoteId = this.selectedNoteId();
|
||||
const html = this.renderedNoteContent();
|
||||
if (!pending || pending.noteId !== activeNoteId || !html) {
|
||||
return;
|
||||
}
|
||||
|
||||
queueMicrotask(() => {
|
||||
if (pending.heading) {
|
||||
this.scrollToHeading(pending.heading);
|
||||
} else if (pending.block) {
|
||||
this.scrollToBlock(pending.block);
|
||||
}
|
||||
this.pendingWikiNavigation.set(null);
|
||||
});
|
||||
});
|
||||
|
||||
effect(() => {
|
||||
if (typeof document === 'undefined') {
|
||||
return;
|
||||
@ -396,27 +414,6 @@ export class AppComponent implements OnDestroy {
|
||||
}
|
||||
}
|
||||
|
||||
handleTagClick(tagName: string): void {
|
||||
const normalized = tagName.replace(/^#/, '').trim();
|
||||
if (!normalized) {
|
||||
return;
|
||||
}
|
||||
this.setView('search');
|
||||
this.sidebarSearchTerm.set(`#${normalized}`);
|
||||
}
|
||||
|
||||
clearTagFilter(): void {
|
||||
this.sidebarSearchTerm.set('');
|
||||
}
|
||||
|
||||
clearCalendarResults(): void {
|
||||
this.calendarResults.set([]);
|
||||
this.calendarSearchState.set('idle');
|
||||
this.calendarSearchError.set(null);
|
||||
this.calendarSelectionLabel.set(null);
|
||||
this.calendarSearchTriggered = false;
|
||||
}
|
||||
|
||||
updateSearchTerm(term: string, focusSearch = false): void {
|
||||
this.sidebarSearchTerm.set(term ?? '');
|
||||
if (focusSearch || (term && term.trim().length > 0)) {
|
||||
@ -424,6 +421,26 @@ export class AppComponent implements OnDestroy {
|
||||
}
|
||||
}
|
||||
|
||||
handleWikiLink(link: WikiLinkActivation): void {
|
||||
const target = link.target?.trim();
|
||||
if (!target) {
|
||||
return;
|
||||
}
|
||||
|
||||
const note = this.resolveWikiTarget(target);
|
||||
if (!note) {
|
||||
console.warn('[ObsiViewer] Wiki link target not found:', link);
|
||||
return;
|
||||
}
|
||||
|
||||
this.pendingWikiNavigation.set({
|
||||
noteId: note.id,
|
||||
heading: link.heading,
|
||||
block: link.block
|
||||
});
|
||||
this.selectNote(note.id);
|
||||
}
|
||||
|
||||
private generateToc(html: string): void {
|
||||
const toc: TocEntry[] = [];
|
||||
const parser = new DOMParser();
|
||||
@ -431,25 +448,101 @@ export class AppComponent implements OnDestroy {
|
||||
const headings = doc.querySelectorAll('h1, h2, h3, h4, h5, h6');
|
||||
|
||||
headings.forEach(heading => {
|
||||
if (heading.id && heading.textContent) {
|
||||
if (!heading.id || !heading.textContent) {
|
||||
return;
|
||||
}
|
||||
toc.push({
|
||||
level: parseInt(heading.tagName.substring(1), 10),
|
||||
text: heading.textContent,
|
||||
id: heading.id
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
this.tableOfContents.set(toc);
|
||||
}
|
||||
|
||||
scrollToHeading(id: string): void {
|
||||
// The note viewer component's content area is what scrolls
|
||||
private scrollToHeading(id: string): void {
|
||||
const contentArea = (this.elementRef.nativeElement as HTMLElement).querySelector('.note-content-area');
|
||||
if(contentArea) {
|
||||
if (!contentArea) {
|
||||
return;
|
||||
}
|
||||
const element = contentArea.querySelector(`#${id}`);
|
||||
if (element) {
|
||||
element.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
||||
}
|
||||
}
|
||||
|
||||
private scrollToBlock(blockId: string | undefined): void {
|
||||
if (!blockId) {
|
||||
return;
|
||||
}
|
||||
const contentArea = (this.elementRef.nativeElement as HTMLElement).querySelector('.note-content-area');
|
||||
if (!contentArea) {
|
||||
return;
|
||||
}
|
||||
const selectors = [`[data-block-id="${blockId}"]`, `#${blockId}`];
|
||||
for (const selector of selectors) {
|
||||
const element = contentArea.querySelector(selector);
|
||||
if (element) {
|
||||
element.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private resolveWikiTarget(rawTarget: string): Note | undefined {
|
||||
const normalized = rawTarget.trim();
|
||||
if (!normalized) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const lower = normalized.toLowerCase();
|
||||
const slug = this.slugifyForWiki(normalized);
|
||||
const normalizedPath = this.normalizePath(normalized);
|
||||
const notes = this.vaultService.allNotes();
|
||||
|
||||
return notes.find(note => {
|
||||
const title = note.title?.trim() ?? '';
|
||||
const titleLower = title.toLowerCase();
|
||||
const titleSlug = this.slugifyForWiki(title);
|
||||
const fileBase = note.fileName.replace(/\.md$/i, '').trim();
|
||||
const fileLower = fileBase.toLowerCase();
|
||||
const filePathNormalized = this.normalizePath(fileBase);
|
||||
const originalPath = this.normalizePath(note.originalPath);
|
||||
const aliasMatch = Array.isArray(note.frontmatter?.aliases) && (note.frontmatter.aliases as string[]).some(alias => {
|
||||
const trimmed = alias.trim();
|
||||
const aliasLower = trimmed.toLowerCase();
|
||||
return aliasLower === lower || this.slugifyForWiki(trimmed) === slug;
|
||||
});
|
||||
return (
|
||||
note.id === lower ||
|
||||
note.id === slug ||
|
||||
titleLower === lower ||
|
||||
titleSlug === slug ||
|
||||
fileLower === lower ||
|
||||
filePathNormalized === normalizedPath ||
|
||||
originalPath === normalizedPath ||
|
||||
aliasMatch
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
private slugifyForWiki(value: string): string {
|
||||
return value
|
||||
.normalize('NFD')
|
||||
.replace(/[\u0300-\u036f]/g, '')
|
||||
.toLowerCase()
|
||||
.replace(/[^a-z0-9\s-]/g, '')
|
||||
.trim()
|
||||
.replace(/\s+/g, '-');
|
||||
}
|
||||
|
||||
private normalizePath(path: string): string {
|
||||
return path
|
||||
.replace(/\\/g, '/')
|
||||
.replace(/\.md$/i, '')
|
||||
.replace(/^\/+/, '')
|
||||
.toLowerCase();
|
||||
}
|
||||
|
||||
}
|
@ -6,8 +6,27 @@ import mermaid, { MermaidConfig, RenderResult } from 'mermaid';
|
||||
|
||||
type MermaidLib = typeof mermaid;
|
||||
|
||||
type MathJaxInstance = {
|
||||
tex2chtml(math: string, options: { display: boolean }): HTMLElement;
|
||||
startup: {
|
||||
promise: Promise<void>;
|
||||
document: {
|
||||
clear(): void;
|
||||
updateDocument(): void;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
type MetadataEntryType = 'text' | 'date' | 'email' | 'url' | 'number' | 'boolean' | 'image' | 'list' | 'object';
|
||||
|
||||
export interface WikiLinkActivation {
|
||||
target: string;
|
||||
heading?: string;
|
||||
headingText?: string;
|
||||
block?: string;
|
||||
alias: string;
|
||||
}
|
||||
|
||||
interface MetadataEntry {
|
||||
key: string;
|
||||
label: string;
|
||||
@ -129,6 +148,7 @@ export class NoteViewerComponent implements OnDestroy {
|
||||
note = input.required<Note>();
|
||||
noteHtmlContent = input.required<string>();
|
||||
noteLinkClicked = output<string>();
|
||||
wikiLinkActivated = output<WikiLinkActivation>();
|
||||
tagClicked = output<string>();
|
||||
|
||||
private readonly elementRef = inject(ElementRef<HTMLElement>);
|
||||
@ -140,6 +160,8 @@ export class NoteViewerComponent implements OnDestroy {
|
||||
private mermaidRenderScheduled = false;
|
||||
private mermaidLoader: Promise<MermaidLib> | null = null;
|
||||
private mermaidLib: MermaidLib | null = null;
|
||||
private mathRenderScheduled = false;
|
||||
private mathJaxLoader: Promise<MathJaxInstance> | null = null;
|
||||
private readonly dateFormatter = new Intl.DateTimeFormat(undefined, { dateStyle: 'medium' });
|
||||
private readonly metadataKeysToExclude = new Set(['tags', 'tag', 'keywords']);
|
||||
private attachmentErrorCleanup: (() => void) | null = null;
|
||||
@ -208,6 +230,7 @@ export class NoteViewerComponent implements OnDestroy {
|
||||
this.noteHtmlContent();
|
||||
this.scheduleMermaidRender();
|
||||
this.scheduleAttachmentHandlers();
|
||||
this.scheduleMathRender();
|
||||
});
|
||||
|
||||
afterNextRender(() => {
|
||||
@ -245,12 +268,31 @@ export class NoteViewerComponent implements OnDestroy {
|
||||
} else if (noteTitle) {
|
||||
this.noteLinkClicked.emit(noteTitle.toLowerCase().replace(/\s+/g, '-'));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
const wikiAnchor = target.closest('a.md-wiki-link') as HTMLAnchorElement | null;
|
||||
if (wikiAnchor) {
|
||||
event.preventDefault();
|
||||
const targetValue = wikiAnchor.getAttribute('data-target') ?? '';
|
||||
const headingSlug = wikiAnchor.getAttribute('data-heading') ?? undefined;
|
||||
const headingText = wikiAnchor.getAttribute('data-heading-text') ?? undefined;
|
||||
const blockRef = wikiAnchor.getAttribute('data-block') ?? undefined;
|
||||
this.wikiLinkActivated.emit({
|
||||
target: targetValue,
|
||||
heading: headingSlug || undefined,
|
||||
headingText: headingText || undefined,
|
||||
block: blockRef || undefined,
|
||||
alias: wikiAnchor.textContent?.trim() ?? targetValue
|
||||
});
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
this.setupMermaidObservation();
|
||||
this.scheduleMermaidRender();
|
||||
this.scheduleAttachmentHandlers();
|
||||
this.scheduleMathRender();
|
||||
});
|
||||
}
|
||||
|
||||
@ -259,10 +301,22 @@ export class NoteViewerComponent implements OnDestroy {
|
||||
this.mermaidObserver = null;
|
||||
this.mermaidLib = null;
|
||||
this.mermaidLoader = null;
|
||||
this.mathJaxLoader = null;
|
||||
this.attachmentErrorCleanup?.();
|
||||
this.attachmentErrorCleanup = null;
|
||||
}
|
||||
|
||||
private scheduleMathRender(): void {
|
||||
if (this.mathRenderScheduled) {
|
||||
return;
|
||||
}
|
||||
this.mathRenderScheduled = true;
|
||||
queueMicrotask(() => {
|
||||
this.mathRenderScheduled = false;
|
||||
this.renderMathExpressions();
|
||||
});
|
||||
}
|
||||
|
||||
getFrontmatterKeys(frontmatter: { [key: string]: any }): string[] {
|
||||
return Object.keys(frontmatter).filter(key => key !== 'tags' && key !== 'aliases' && key !== 'mtime');
|
||||
}
|
||||
@ -449,6 +503,43 @@ export class NoteViewerComponent implements OnDestroy {
|
||||
});
|
||||
}
|
||||
|
||||
private async renderMathExpressions(): Promise<void> {
|
||||
if (typeof window === 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
||||
const hostElement = this.elementRef.nativeElement as HTMLElement;
|
||||
const mathElements = Array.from(hostElement.querySelectorAll<HTMLElement>('.md-math-inline, .md-math-block'));
|
||||
const pending = mathElements.filter(element => element.dataset.math && element.dataset.mathProcessed !== 'true');
|
||||
if (!pending.length) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const mathJax = await this.ensureMathJax();
|
||||
for (const element of pending) {
|
||||
const expression = element.dataset.math ?? '';
|
||||
if (!expression.trim()) {
|
||||
continue;
|
||||
}
|
||||
const display = element.classList.contains('md-math-block');
|
||||
try {
|
||||
const rendered = mathJax.tex2chtml(expression, { display });
|
||||
element.innerHTML = '';
|
||||
element.appendChild(rendered);
|
||||
element.setAttribute('data-math-processed', 'true');
|
||||
} catch (error) {
|
||||
console.error('MathJax render error:', error);
|
||||
element.textContent = expression;
|
||||
}
|
||||
}
|
||||
mathJax.startup.document.clear();
|
||||
mathJax.startup.document.updateDocument();
|
||||
} catch (error) {
|
||||
console.error('Unable to initialise MathJax:', error);
|
||||
}
|
||||
}
|
||||
|
||||
private decodeMermaidSource(encoded: string): string {
|
||||
try {
|
||||
return decodeURIComponent(encoded);
|
||||
@ -464,6 +555,80 @@ export class NoteViewerComponent implements OnDestroy {
|
||||
.replace(/>/g, '>');
|
||||
}
|
||||
|
||||
private ensureMathJax(): Promise<MathJaxInstance> {
|
||||
if (typeof window === 'undefined') {
|
||||
return Promise.reject(new Error('MathJax requires a browser environment.'));
|
||||
}
|
||||
|
||||
const globalWithMathJax = window as unknown as {
|
||||
MathJax?: MathJaxInstance & { startup: { promise: Promise<void> } };
|
||||
_mathJaxLoading?: boolean;
|
||||
};
|
||||
|
||||
if (globalWithMathJax.MathJax) {
|
||||
return globalWithMathJax.MathJax.startup.promise.then(() => globalWithMathJax.MathJax as MathJaxInstance);
|
||||
}
|
||||
|
||||
if (this.mathJaxLoader) {
|
||||
return this.mathJaxLoader;
|
||||
}
|
||||
|
||||
this.mathJaxLoader = new Promise<MathJaxInstance>((resolve, reject) => {
|
||||
if (globalWithMathJax._mathJaxLoading) {
|
||||
const interval = window.setInterval(() => {
|
||||
if (globalWithMathJax.MathJax) {
|
||||
window.clearInterval(interval);
|
||||
globalWithMathJax.MathJax.startup.promise.then(() => resolve(globalWithMathJax.MathJax as MathJaxInstance));
|
||||
}
|
||||
}, 30);
|
||||
return;
|
||||
}
|
||||
|
||||
globalWithMathJax._mathJaxLoading = true;
|
||||
(window as any).MathJax = {
|
||||
startup: {
|
||||
typeset: false
|
||||
},
|
||||
tex: {
|
||||
inlineMath: [['$', '$'], ['\\(', '\\)']],
|
||||
displayMath: [['$$', '$$'], ['\\[', '\\]']],
|
||||
processEscapes: true
|
||||
},
|
||||
options: {
|
||||
skipHtmlTags: ['script', 'noscript', 'style', 'textarea', 'pre']
|
||||
}
|
||||
};
|
||||
|
||||
const existing = document.getElementById('mathjax-loader') as HTMLScriptElement | null;
|
||||
if (existing) {
|
||||
existing.addEventListener('load', () => {
|
||||
if (globalWithMathJax.MathJax) {
|
||||
globalWithMathJax.MathJax.startup.promise.then(() => resolve(globalWithMathJax.MathJax as MathJaxInstance));
|
||||
}
|
||||
}, { once: true });
|
||||
existing.addEventListener('error', () => reject(new Error('Failed to load MathJax script.')), { once: true });
|
||||
return;
|
||||
}
|
||||
|
||||
const script = document.createElement('script');
|
||||
script.id = 'mathjax-loader';
|
||||
script.async = true;
|
||||
script.src = 'https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js';
|
||||
script.addEventListener('load', () => {
|
||||
const mathJax = globalWithMathJax.MathJax;
|
||||
if (!mathJax) {
|
||||
reject(new Error('MathJax failed to initialise.'));
|
||||
return;
|
||||
}
|
||||
mathJax.startup.promise.then(() => resolve(mathJax as MathJaxInstance));
|
||||
}, { once: true });
|
||||
script.addEventListener('error', () => reject(new Error('Failed to load MathJax script.')), { once: true });
|
||||
document.head.appendChild(script);
|
||||
});
|
||||
|
||||
return this.mathJaxLoader;
|
||||
}
|
||||
|
||||
private toggleMetadataPanel(): void {
|
||||
if (typeof window !== 'undefined') {
|
||||
const currentScroll = window.scrollY;
|
||||
|
32
src/services/markdown.service.spec.ts
Normal file
32
src/services/markdown.service.spec.ts
Normal file
@ -0,0 +1,32 @@
|
||||
import { test } from 'node:test';
|
||||
import { strict as assert } from 'node:assert';
|
||||
import { MarkdownService } from './markdown.service.js';
|
||||
import type { Note } from '../types';
|
||||
|
||||
const service = new MarkdownService();
|
||||
const notes: Note[] = [];
|
||||
|
||||
const render = (markdown: string) => service.render(markdown, notes);
|
||||
|
||||
test('renders tables with inline markdown content', () => {
|
||||
const html = render(`| Syntax | Description |\n| --- | --- |\n| **bold** | \`code\` |\n`);
|
||||
|
||||
assert.ok(html.includes('<table'));
|
||||
assert.ok(html.includes('<strong>bold</strong>'));
|
||||
assert.ok(html.includes('<code class="inline-code">code</code>'));
|
||||
});
|
||||
|
||||
test('applies alignment markers for columns', () => {
|
||||
const html = render(`| Left | Center | Right |\n| :-- | :-: | --: |\n| one | two | three |\n`);
|
||||
|
||||
assert.ok(html.includes('style="text-align:left;"'));
|
||||
assert.ok(html.includes('style="text-align:center;"'));
|
||||
assert.ok(html.includes('style="text-align:right;"'));
|
||||
});
|
||||
|
||||
test('falls back gracefully when separator row is malformed', () => {
|
||||
const html = render(`| A | B |\n| -- | |\n| 1 | 2 |\n`);
|
||||
|
||||
assert.ok(!html.includes('<div class="markdown-table"><table>'));
|
||||
assert.ok(html.includes('| A | B |'));
|
||||
});
|
@ -4,6 +4,8 @@ import MarkdownIt from 'markdown-it';
|
||||
import markdownItAnchor from 'markdown-it-anchor';
|
||||
import markdownItTaskLists from 'markdown-it-task-lists';
|
||||
import markdownItAttrs from 'markdown-it-attrs';
|
||||
import markdownItFootnote from 'markdown-it-footnote';
|
||||
import markdownItMultimdTable from 'markdown-it-multimd-table';
|
||||
import { Note } from '../types';
|
||||
|
||||
interface MarkdownRenderEnv {
|
||||
@ -19,6 +21,27 @@ interface MarkdownItToken {
|
||||
attrJoin(name: string, value: string): void;
|
||||
}
|
||||
|
||||
interface WikiLinkPlaceholder {
|
||||
placeholder: string;
|
||||
alias: string;
|
||||
target: string;
|
||||
headingSlug?: string;
|
||||
headingText?: string;
|
||||
block?: string;
|
||||
}
|
||||
|
||||
interface MathPlaceholder {
|
||||
placeholder: string;
|
||||
expression: string;
|
||||
display: 'block' | 'inline';
|
||||
}
|
||||
|
||||
interface PreprocessResult {
|
||||
markdown: string;
|
||||
wikiLinks: WikiLinkPlaceholder[];
|
||||
math: MathPlaceholder[];
|
||||
}
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
@ -29,11 +52,15 @@ export class MarkdownService {
|
||||
|
||||
render(markdown: string, allNotes: Note[], currentNote?: Note): string {
|
||||
const env: MarkdownRenderEnv = { codeBlockIndex: 0 };
|
||||
const markdownIt = this.createMarkdownIt(env);
|
||||
const headingSlugState = new Map<string, number>();
|
||||
const markdownIt = this.createMarkdownIt(env, headingSlugState);
|
||||
|
||||
const preprocessed = this.decorateInlineTags(markdown);
|
||||
let html = markdownIt.render(preprocessed, env);
|
||||
const preprocessing = this.preprocessMarkdown(markdown);
|
||||
const decorated = this.decorateInlineTags(preprocessing.markdown);
|
||||
let html = markdownIt.render(decorated, env);
|
||||
|
||||
html = this.restoreWikiLinks(html, preprocessing.wikiLinks);
|
||||
html = this.restoreMath(html, preprocessing.math);
|
||||
html = this.transformCallouts(html);
|
||||
html = this.transformTaskLists(html);
|
||||
html = this.wrapTables(html);
|
||||
@ -62,10 +89,6 @@ export class MarkdownService {
|
||||
</figure>`;
|
||||
});
|
||||
|
||||
// Placeholder for unsupported elements
|
||||
html = html.replace(/\$\$(.*?)\$\$/g, '<div class="my-4 p-4 bg-obs-l-bg-secondary text-obs-l-text-muted dark:bg-obs-d-bg-secondary dark:text-obs-d-text-muted rounded text-center">[LaTeX Equation: $1]</div>');
|
||||
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
@ -123,8 +146,8 @@ export class MarkdownService {
|
||||
this.tagColorCache.set(normalized, index);
|
||||
return `md-tag-color-${index}`;
|
||||
}
|
||||
private createMarkdownIt(env: MarkdownRenderEnv): MarkdownIt {
|
||||
const md = new MarkdownIt('commonmark', {
|
||||
private createMarkdownIt(env: MarkdownRenderEnv, slugState: Map<string, number>): MarkdownIt {
|
||||
const md = new MarkdownIt({
|
||||
html: true,
|
||||
linkify: false,
|
||||
typographer: false,
|
||||
@ -138,7 +161,7 @@ export class MarkdownService {
|
||||
});
|
||||
|
||||
md.use(markdownItAnchor, {
|
||||
slugify: (str) => this.slugify(str),
|
||||
slugify: (str) => this.slugify(str, slugState),
|
||||
tabIndex: false
|
||||
});
|
||||
|
||||
@ -146,11 +169,26 @@ export class MarkdownService {
|
||||
enabled: false
|
||||
});
|
||||
|
||||
md.use(markdownItMultimdTable, {
|
||||
multiline: true,
|
||||
rowspan: true,
|
||||
headerless: true
|
||||
});
|
||||
|
||||
md.enable(['table']);
|
||||
|
||||
md.use(markdownItFootnote);
|
||||
|
||||
md.renderer.rules.fence = (tokens, idx, _options, renderEnv) => {
|
||||
const list = tokens as unknown as MarkdownItToken[];
|
||||
return this.renderFence(list[idx], renderEnv as MarkdownRenderEnv);
|
||||
};
|
||||
|
||||
md.renderer.rules.code_block = (tokens, idx, _options, renderEnv) => {
|
||||
const list = tokens as unknown as MarkdownItToken[];
|
||||
return this.renderFence(list[idx], renderEnv as MarkdownRenderEnv);
|
||||
};
|
||||
|
||||
md.renderer.rules.code_inline = (tokens, idx) => {
|
||||
const content = tokens[idx].content;
|
||||
return `<code class="inline-code">${this.escapeHtml(content)}</code>`;
|
||||
@ -224,6 +262,22 @@ export class MarkdownService {
|
||||
</figure>`;
|
||||
};
|
||||
|
||||
md.renderer.rules.footnote_block_open = () => '<section class="md-footnotes text-sm text-obs-l-text-muted dark:text-obs-d-text-muted mt-12"><header class="font-semibold uppercase tracking-wide mb-2">Notes</header><ol class="space-y-2">';
|
||||
md.renderer.rules.footnote_block_close = () => '</ol></section>';
|
||||
|
||||
const defaultFootnoteOpen = md.renderer.rules.footnote_open ?? ((tokens, idx, options, renderEnv, self) => self.renderToken(tokens, idx, options));
|
||||
md.renderer.rules.footnote_open = (tokens, idx, options, renderEnv, self) => {
|
||||
tokens[idx].attrJoin('class', 'md-footnote-item');
|
||||
return defaultFootnoteOpen(tokens, idx, options, renderEnv, self);
|
||||
};
|
||||
|
||||
md.renderer.rules.footnote_ref = (tokens, idx, options, renderEnv, self) => {
|
||||
const list = tokens as unknown as MarkdownItToken[];
|
||||
const token = list[idx];
|
||||
const id = token.attrGet('id') ?? '';
|
||||
return `<sup class="md-footnote-ref"><a href="#${this.escapeHtml(id)}" class="md-external-link" rel="footnote">${token.content}</a></sup>`;
|
||||
};
|
||||
|
||||
md.renderer.rules.hr = () => '<hr class="my-6 border-obs-l-border dark:border-obs-d-border">';
|
||||
|
||||
return md;
|
||||
@ -249,7 +303,7 @@ export class MarkdownService {
|
||||
</div>
|
||||
`;
|
||||
} else {
|
||||
const highlightedCode = this.highlightCode(token.content, normalizedLanguage);
|
||||
const highlightedCode = this.highlightCode(token.content, normalizedLanguage, rawLanguage);
|
||||
bodyHtml = `<pre class="code-block__body"><code class="hljs" data-raw-code="${encodedRawCode}">${highlightedCode}</code></pre>`;
|
||||
}
|
||||
|
||||
@ -269,13 +323,133 @@ export class MarkdownService {
|
||||
return `<div class="${wrapperClass}" style="max-width: 800px; width: 100%; margin: 0;" data-language="${languageLabel.toLowerCase()}" data-code-id="${codeId}">${headerHtml}${bodyHtml}</div>`;
|
||||
}
|
||||
|
||||
private highlightCode(code: string, language: string): string {
|
||||
if (language && hljs.getLanguage(language)) {
|
||||
return hljs.highlight(code, { language }).value;
|
||||
private highlightCode(code: string, normalizedLanguage: string, rawLanguage: string): string {
|
||||
if (normalizedLanguage && hljs.getLanguage(normalizedLanguage)) {
|
||||
return hljs.highlight(code, { language: normalizedLanguage }).value;
|
||||
}
|
||||
|
||||
if (rawLanguage && !hljs.getLanguage(normalizedLanguage)) {
|
||||
return this.escapeHtml(code);
|
||||
}
|
||||
|
||||
return hljs.highlightAuto(code).value;
|
||||
}
|
||||
|
||||
private preprocessMarkdown(input: string): PreprocessResult {
|
||||
const wikiLinks: WikiLinkPlaceholder[] = [];
|
||||
const math: MathPlaceholder[] = [];
|
||||
|
||||
let text = this.stripFrontmatter(input.replace(/\r\n/g, '\n'));
|
||||
|
||||
const wikiRegex = /(?<!\!)\[\[([^\]]+)\]\]/g;
|
||||
text = text.replace(wikiRegex, (_match, inner) => {
|
||||
const placeholder = `@@__WIKILINK_${wikiLinks.length}__@@`;
|
||||
const [targetPartRaw, aliasRaw] = `${inner}`.split('|');
|
||||
let targetPart = targetPartRaw ?? '';
|
||||
let alias = aliasRaw ?? '';
|
||||
|
||||
let block: string | undefined;
|
||||
let heading: string | undefined;
|
||||
|
||||
const blockIndex = targetPart.indexOf('^');
|
||||
if (blockIndex >= 0) {
|
||||
block = targetPart.slice(blockIndex + 1).trim();
|
||||
targetPart = targetPart.slice(0, blockIndex);
|
||||
}
|
||||
|
||||
const headingIndex = targetPart.indexOf('#');
|
||||
if (headingIndex >= 0) {
|
||||
heading = targetPart.slice(headingIndex + 1).trim();
|
||||
targetPart = targetPart.slice(0, headingIndex);
|
||||
}
|
||||
|
||||
const target = targetPart.trim();
|
||||
const display = (alias || heading || block || target).trim() || 'Untitled';
|
||||
const headingSlug = heading ? this.slugify(heading) : undefined;
|
||||
|
||||
wikiLinks.push({
|
||||
placeholder,
|
||||
alias: display,
|
||||
target,
|
||||
headingSlug,
|
||||
headingText: heading,
|
||||
block
|
||||
});
|
||||
|
||||
return placeholder;
|
||||
});
|
||||
|
||||
const addMathPlaceholder = (expression: string, display: 'block' | 'inline') => {
|
||||
const placeholder = `@@__MATH_${display.toUpperCase()}_${math.length}__@@`;
|
||||
math.push({ placeholder, expression: expression.trim(), display });
|
||||
return placeholder;
|
||||
};
|
||||
|
||||
text = text.replace(/(^|[^\\])\$\$([\s\S]+?)\$\$/g, (match, prefix, expr) => {
|
||||
const placeholder = addMathPlaceholder(expr, 'block');
|
||||
return `${prefix}${placeholder}`;
|
||||
});
|
||||
|
||||
text = text.replace(/\\\[(.+?)\\\]/g, (_match, expr) => addMathPlaceholder(expr, 'block'));
|
||||
|
||||
text = text.replace(/(?<!\\)\$(?!\s)([^$]+?)(?<!\\)\$(?!\d)/g, (_match, expr) => addMathPlaceholder(expr, 'inline'));
|
||||
text = text.replace(/\\\((.+?)\\\)/g, (_match, expr) => addMathPlaceholder(expr, 'inline'));
|
||||
|
||||
return { markdown: text, wikiLinks, math };
|
||||
}
|
||||
|
||||
private restoreWikiLinks(html: string, links: WikiLinkPlaceholder[]): string {
|
||||
if (!links.length) {
|
||||
return html;
|
||||
}
|
||||
|
||||
return links.reduce((acc, link) => {
|
||||
const attrs: string[] = ['class="md-wiki-link"'];
|
||||
if (link.target) {
|
||||
attrs.push(`data-target="${this.escapeAttribute(link.target)}"`);
|
||||
}
|
||||
if (link.headingSlug) {
|
||||
attrs.push(`data-heading="${this.escapeAttribute(link.headingSlug)}"`);
|
||||
}
|
||||
if (link.headingText) {
|
||||
attrs.push(`data-heading-text="${this.escapeAttribute(link.headingText)}"`);
|
||||
}
|
||||
if (link.block) {
|
||||
attrs.push(`data-block="${this.escapeAttribute(link.block)}"`);
|
||||
}
|
||||
const replacement = `<a ${attrs.join(' ')}>${this.escapeHtml(link.alias)}</a>`;
|
||||
return acc.split(link.placeholder).join(replacement);
|
||||
}, html);
|
||||
}
|
||||
|
||||
private restoreMath(html: string, placeholders: MathPlaceholder[]): string {
|
||||
if (!placeholders.length) {
|
||||
return html;
|
||||
}
|
||||
|
||||
return placeholders.reduce((acc, item) => {
|
||||
const safeExpr = this.escapeHtml(item.expression);
|
||||
const dataAttr = this.escapeAttribute(item.expression);
|
||||
const replacement = item.display === 'block'
|
||||
? `<div class="md-math-block" data-math="${dataAttr}">${safeExpr}</div>`
|
||||
: `<span class="md-math-inline" data-math="${dataAttr}">${safeExpr}</span>`;
|
||||
return acc.split(item.placeholder).join(replacement);
|
||||
}, html);
|
||||
}
|
||||
|
||||
private stripFrontmatter(markdown: string): string {
|
||||
if (!markdown.startsWith('---')) {
|
||||
return markdown;
|
||||
}
|
||||
|
||||
const match = markdown.match(/^---\s*\n([\s\S]*?)\n---\s*(\n|$)/);
|
||||
if (!match) {
|
||||
return markdown;
|
||||
}
|
||||
|
||||
return markdown.slice(match[0].length);
|
||||
}
|
||||
|
||||
private transformCallouts(html: string): string {
|
||||
return html.replace(/<blockquote([\s\S]*?)>([\s\S]*?)<\/blockquote>/g, (match, _attrs, inner) => {
|
||||
const firstParagraphMatch = inner.match(/^\s*<p>([\s\S]*?)<\/p>([\s\S]*)$/);
|
||||
@ -377,12 +551,39 @@ export class MarkdownService {
|
||||
.replace(/'/g, "'");
|
||||
}
|
||||
|
||||
private slugify(text: string): string {
|
||||
return text.toString().toLowerCase()
|
||||
.replace(/\s+/g, '-') // Replace spaces with -
|
||||
.replace(/[^\w\-]+/g, '') // Remove all non-word chars
|
||||
.replace(/\-\-+/g, '-') // Replace multiple - with single -
|
||||
.replace(/^-+/, '') // Trim - from start of text
|
||||
.replace(/-+$/, ''); // Trim - from end of text
|
||||
private escapeAttribute(value: string): string {
|
||||
return value
|
||||
.replace(/&/g, '&')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>');
|
||||
}
|
||||
|
||||
private slugify(text: string, state?: Map<string, number>): string {
|
||||
let base = text
|
||||
.toString()
|
||||
.normalize('NFD')
|
||||
.replace(/[\u0300-\u036f]/g, '')
|
||||
.replace(/[^\w\s-]/g, '')
|
||||
.trim()
|
||||
.replace(/\s+/g, '-')
|
||||
.replace(/-+/g, '-')
|
||||
.toLowerCase();
|
||||
|
||||
if (!base) {
|
||||
base = 'section';
|
||||
}
|
||||
|
||||
if (!state) {
|
||||
return base;
|
||||
}
|
||||
|
||||
let count = state.get(base);
|
||||
if (count === undefined) {
|
||||
count = 0;
|
||||
}
|
||||
state.set(base, count + 1);
|
||||
return count === 0 ? base : `${base}-${count}`;
|
||||
}
|
||||
}
|
@ -82,6 +82,76 @@
|
||||
outline: 2px solid currentColor;
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
.md-footnotes {
|
||||
border-top: 1px solid var(--footnotes-border, rgba(148, 163, 184, 0.4));
|
||||
padding-top: 1.5rem;
|
||||
}
|
||||
|
||||
.md-footnotes header {
|
||||
font-size: 0.75rem;
|
||||
letter-spacing: 0.08em;
|
||||
color: var(--footnotes-heading, #475569);
|
||||
}
|
||||
|
||||
.md-footnotes ol {
|
||||
counter-reset: footnote-counter;
|
||||
margin: 0;
|
||||
padding-left: 1.5rem;
|
||||
}
|
||||
|
||||
.md-footnote-item {
|
||||
position: relative;
|
||||
color: var(--footnotes-text, #475569);
|
||||
}
|
||||
|
||||
.md-footnote-item p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.md-footnote-ref {
|
||||
font-size: 0.75rem;
|
||||
margin-left: 0.15rem;
|
||||
}
|
||||
|
||||
.md-footnote-ref a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.md-footnote-ref a:hover,
|
||||
.md-footnote-ref a:focus-visible {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.md-wiki-link {
|
||||
color: var(--wiki-link, #4f46e5);
|
||||
text-decoration: underline;
|
||||
text-decoration-thickness: 1px;
|
||||
text-underline-offset: 3px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.md-wiki-link:hover,
|
||||
.md-wiki-link:focus-visible {
|
||||
color: var(--wiki-link-hover, #4338ca);
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
.md-math-inline {
|
||||
font-family: "Cambria", "Times New Roman", serif;
|
||||
background-color: rgba(148, 163, 184, 0.2);
|
||||
padding: 0 0.25rem;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.md-math-block {
|
||||
font-family: "Cambria", "Times New Roman", serif;
|
||||
background-color: rgba(148, 163, 184, 0.15);
|
||||
padding: 1rem;
|
||||
margin: 1.5rem 0;
|
||||
border-radius: 0.5rem;
|
||||
text-align: center;
|
||||
}
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
@ -51,6 +51,13 @@ Citation en ligne : « > Ceci est une citation »
|
||||
>
|
||||
> Fin de la citation principale.
|
||||
|
||||
## Footnotes
|
||||
|
||||
Le Markdown peut inclure des notes de bas de page[^1].
|
||||
|
||||
[^1]: Ceci est un exemple de note de bas de page.
|
||||
|
||||
|
||||
## Listes
|
||||
|
||||
- Élément non ordonné 1
|
||||
@ -76,7 +83,7 @@ Citation en ligne : « > Ceci est une citation »
|
||||
|
||||
## Liens et images
|
||||
|
||||
[Lien vers le site officiel d'Obsidian](https://obsidian.md)
|
||||
[Lien vers le site officiel d'Obsidian](https://obsidian.md)
|
||||
|
||||

|
||||
|
||||
@ -133,6 +140,17 @@ docker compose up -d
|
||||
curl http://localhost:4000/api/health
|
||||
```
|
||||
|
||||
### Variantes supplémentaires de blocs de code
|
||||
|
||||
```bash
|
||||
echo "Bloc de code avec tildes"
|
||||
ls -al
|
||||
```
|
||||
|
||||
// Exemple de bloc indenté
|
||||
const numbers = [1, 2, 3];
|
||||
console.log(numbers.map(n => n * 2));
|
||||
|
||||
## Mathématiques (LaTeX)
|
||||
|
||||
Expression en ligne : $E = mc^2$
|
||||
@ -154,16 +172,23 @@ $$
|
||||
|
||||
> [!note]
|
||||
> Ceci est une note informative.
|
||||
---
|
||||
|
||||
> [!tip]
|
||||
> Astuce : Utilisez `npm run dev` pour tester rapidement.
|
||||
|
||||
---
|
||||
|
||||
> [!warning]
|
||||
> Attention : Vérifiez vos chemins avant de lancer un build.
|
||||
|
||||
---
|
||||
|
||||
> [!danger]
|
||||
> Danger : Ne déployez pas sans tests.
|
||||
|
||||
---
|
||||
|
||||
## Diagrammes Mermaid
|
||||
|
||||
```mermaid
|
||||
@ -205,9 +230,7 @@ Host: localhost:4000
|
||||
- [[features/graph-view]]
|
||||
- [[NonExistentNote]]
|
||||
|
||||
## Footnotes
|
||||
|
||||
Le Markdown peut inclure des notes de bas de page[^1].
|
||||
|
||||
## Contenu HTML brut
|
||||
|
||||
@ -217,5 +240,7 @@ Le Markdown peut inclure des notes de bas de page[^1].
|
||||
</details>
|
||||
|
||||
## Sections horizontales
|
||||
|
||||
Fin de la page de test.
|
||||
[^1]: Ceci est un exemple de note de bas de page.
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user