@legionworks/facet 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/LICENSE-APACHE +202 -0
  2. package/LICENSE-MIT +23 -0
  3. package/README.md +158 -0
  4. package/dist/gallery/chunk-4g8rem85.css +656 -0
  5. package/dist/gallery/chunk-c6s9k9ty.js +5970 -0
  6. package/dist/gallery/frame/artifact.css +8424 -0
  7. package/dist/gallery/frame/chunks/abnfDiagram-N423BO3Z-jj74szbm.js +155 -0
  8. package/dist/gallery/frame/chunks/architecture-TIHT7OUA-cvdjn7dt.js +10 -0
  9. package/dist/gallery/frame/chunks/architectureDiagram-T3A2C74G-n4z77eg6.js +8675 -0
  10. package/dist/gallery/frame/chunks/blockDiagram-VBNYF7ZC-7xsqzrd1.js +3529 -0
  11. package/dist/gallery/frame/chunks/c4Diagram-5PPSVZJV-z2zjs7wx.js +2413 -0
  12. package/dist/gallery/frame/chunks/classDiagram-JCYQIIEL-ve8rngqp.js +47 -0
  13. package/dist/gallery/frame/chunks/classDiagram-v2-OCEON4UE-8cfaxb8z.js +47 -0
  14. package/dist/gallery/frame/chunks/cose-bilkent-JH36ORCC-sn92qexx.js +4822 -0
  15. package/dist/gallery/frame/chunks/cynefin-VYW2F7L2-tqjv913d.js +10 -0
  16. package/dist/gallery/frame/chunks/cynefinDiagram-MW4NZA55-c1c0dj12.js +500 -0
  17. package/dist/gallery/frame/chunks/dagre-VZM6K2ZE-7tyg4yt2.js +476 -0
  18. package/dist/gallery/frame/chunks/diagram-7IWD3JNH-y4eng9sc.js +526 -0
  19. package/dist/gallery/frame/chunks/diagram-B4RE2ZJO-rn3p7j5h.js +673 -0
  20. package/dist/gallery/frame/chunks/diagram-LBJQPF4R-w4a2cm9q.js +255 -0
  21. package/dist/gallery/frame/chunks/diagram-Q27KOJAE-aqc2v7wy.js +575 -0
  22. package/dist/gallery/frame/chunks/diagram-UB23O5K3-xncy8nyd.js +355 -0
  23. package/dist/gallery/frame/chunks/ebnfDiagram-BXEA7PRR-acwgxz16.js +175 -0
  24. package/dist/gallery/frame/chunks/erDiagram-JOGREHBK-mzp5nswt.js +1332 -0
  25. package/dist/gallery/frame/chunks/eventmodeling-45OFAUF4-sg07qr0c.js +10 -0
  26. package/dist/gallery/frame/chunks/flowDiagram-UKHOOZJN-2e5ygs44.js +29 -0
  27. package/dist/gallery/frame/chunks/ganttDiagram-PKOTCBZU-p2hhh7hr.js +2620 -0
  28. package/dist/gallery/frame/chunks/gitGraph-TEB2WS4Q-j6kw0naa.js +10 -0
  29. package/dist/gallery/frame/chunks/gitGraphDiagram-DS77QQ5N-4z9z8wjm.js +1347 -0
  30. package/dist/gallery/frame/chunks/info-DKCQHKI2-mpt80jd3.js +10 -0
  31. package/dist/gallery/frame/chunks/infoDiagram-6WML65LV-5rqm3mgg.js +65 -0
  32. package/dist/gallery/frame/chunks/ishikawaDiagram-WSZJBQD7-b51z96jy.js +975 -0
  33. package/dist/gallery/frame/chunks/journeyDiagram-NVQOT4AX-9jbfp0pk.js +1272 -0
  34. package/dist/gallery/frame/chunks/kanban-definition-27J2QSJJ-4x0vx4se.js +1116 -0
  35. package/dist/gallery/frame/chunks/katex-xfgk95tv.js +14034 -0
  36. package/dist/gallery/frame/chunks/markdown-1s5vwkf2.js +9 -0
  37. package/dist/gallery/frame/chunks/markdown-2h6bwsms.js +3239 -0
  38. package/dist/gallery/frame/chunks/markdown-2x113yh8.js +107 -0
  39. package/dist/gallery/frame/chunks/markdown-30b7rwmp.js +1943 -0
  40. package/dist/gallery/frame/chunks/markdown-356bfj4g.js +2031 -0
  41. package/dist/gallery/frame/chunks/markdown-44n9ea69.js +2406 -0
  42. package/dist/gallery/frame/chunks/markdown-56enrf2r.js +39 -0
  43. package/dist/gallery/frame/chunks/markdown-5avymm8t.js +725 -0
  44. package/dist/gallery/frame/chunks/markdown-6r4svars.js +33 -0
  45. package/dist/gallery/frame/chunks/markdown-6zz8efx2.js +24 -0
  46. package/dist/gallery/frame/chunks/markdown-7jp6prnb.js +19 -0
  47. package/dist/gallery/frame/chunks/markdown-809k7q41.js +55 -0
  48. package/dist/gallery/frame/chunks/markdown-82xmzhzd.js +1076 -0
  49. package/dist/gallery/frame/chunks/markdown-92n37gd4.js +7627 -0
  50. package/dist/gallery/frame/chunks/markdown-ag2sssf8.js +36 -0
  51. package/dist/gallery/frame/chunks/markdown-b4s7ntq2.js +19 -0
  52. package/dist/gallery/frame/chunks/markdown-c9k0fvp1.js +100 -0
  53. package/dist/gallery/frame/chunks/markdown-ceefymn8.js +125 -0
  54. package/dist/gallery/frame/chunks/markdown-d1wfbs70.js +243 -0
  55. package/dist/gallery/frame/chunks/markdown-dy5sgjhc.js +11022 -0
  56. package/dist/gallery/frame/chunks/markdown-dz3z5w30.js +30868 -0
  57. package/dist/gallery/frame/chunks/markdown-eg6ngz7y.js +30340 -0
  58. package/dist/gallery/frame/chunks/markdown-ff5wvb43.js +1149 -0
  59. package/dist/gallery/frame/chunks/markdown-ffg06nfz.js +86 -0
  60. package/dist/gallery/frame/chunks/markdown-fvfncadf.js +472 -0
  61. package/dist/gallery/frame/chunks/markdown-gvyszqpv.js +19 -0
  62. package/dist/gallery/frame/chunks/markdown-gx1p0ew0.js +88 -0
  63. package/dist/gallery/frame/chunks/markdown-gxye5frz.js +65 -0
  64. package/dist/gallery/frame/chunks/markdown-h7pzv34e.js +105 -0
  65. package/dist/gallery/frame/chunks/markdown-hab789t9.js +47 -0
  66. package/dist/gallery/frame/chunks/markdown-hjp6sj8t.js +125 -0
  67. package/dist/gallery/frame/chunks/markdown-jka64qgp.js +1993 -0
  68. package/dist/gallery/frame/chunks/markdown-k8xkn8mw.js +56 -0
  69. package/dist/gallery/frame/chunks/markdown-m7frq8x8.js +112 -0
  70. package/dist/gallery/frame/chunks/markdown-p740v4qm.js +36 -0
  71. package/dist/gallery/frame/chunks/markdown-pxfeh231.js +57 -0
  72. package/dist/gallery/frame/chunks/markdown-pzgd8z3s.js +87 -0
  73. package/dist/gallery/frame/chunks/markdown-qx3cngz2.js +1673 -0
  74. package/dist/gallery/frame/chunks/markdown-rawhfvvc.js +85 -0
  75. package/dist/gallery/frame/chunks/markdown-rd8w0ng9.js +49 -0
  76. package/dist/gallery/frame/chunks/markdown-rm2yxfjj.js +2773 -0
  77. package/dist/gallery/frame/chunks/markdown-s1jatrnk.js +993 -0
  78. package/dist/gallery/frame/chunks/markdown-sgfg5vvq.js +59 -0
  79. package/dist/gallery/frame/chunks/markdown-t4ethv9d.js +409 -0
  80. package/dist/gallery/frame/chunks/markdown-tnmabqvz.js +36 -0
  81. package/dist/gallery/frame/chunks/markdown-tvdpppw8.js +5292 -0
  82. package/dist/gallery/frame/chunks/markdown-v0x27twr.js +22 -0
  83. package/dist/gallery/frame/chunks/markdown-v14td68x.js +36 -0
  84. package/dist/gallery/frame/chunks/markdown-w6sgd54z.js +36 -0
  85. package/dist/gallery/frame/chunks/markdown-xw8dsk8b.js +2125 -0
  86. package/dist/gallery/frame/chunks/markdown-y18mve73.js +85 -0
  87. package/dist/gallery/frame/chunks/markdown-yengsms5.js +427 -0
  88. package/dist/gallery/frame/chunks/markdown-z1wc0v0d.js +1826 -0
  89. package/dist/gallery/frame/chunks/markdown-zazx9h4n.js +329 -0
  90. package/dist/gallery/frame/chunks/mermaid-de7p4v0x.js +30 -0
  91. package/dist/gallery/frame/chunks/mindmap-definition-FAOFIHXS-ra44cbem.js +1216 -0
  92. package/dist/gallery/frame/chunks/packet-7NZHBO7P-xppm5913.js +10 -0
  93. package/dist/gallery/frame/chunks/pegDiagram-VL7TDLO6-a2a4wg03.js +163 -0
  94. package/dist/gallery/frame/chunks/pie-RZYD4A2V-hnbxk152.js +10 -0
  95. package/dist/gallery/frame/chunks/pieDiagram-7S7Q4E2Y-f1vxjtmx.js +311 -0
  96. package/dist/gallery/frame/chunks/quadrantDiagram-CIZ2JOQS-ywafa6kh.js +1390 -0
  97. package/dist/gallery/frame/chunks/radar-I7S5WNFK-ewqd27se.js +10 -0
  98. package/dist/gallery/frame/chunks/railroad-3IZDKUUU-5hy4bdx3.js +10 -0
  99. package/dist/gallery/frame/chunks/railroad-abnf-AHOZXSZD-bh5sxz0d.js +10 -0
  100. package/dist/gallery/frame/chunks/railroad-ebnf-EBAXGLYW-6b9c3zeh.js +10 -0
  101. package/dist/gallery/frame/chunks/railroad-peg-LSFZ7HO6-avc8v39s.js +10 -0
  102. package/dist/gallery/frame/chunks/railroadDiagram-AXF67PYL-qc61wax4.js +131 -0
  103. package/dist/gallery/frame/chunks/requirementDiagram-LRYGKXZP-9bs4786c.js +1295 -0
  104. package/dist/gallery/frame/chunks/sankeyDiagram-W5VNT64P-awt1em8b.js +1339 -0
  105. package/dist/gallery/frame/chunks/sequenceDiagram-SI44F4Z6-qaf9mz3t.js +4324 -0
  106. package/dist/gallery/frame/chunks/sizeCapture-X5ZJPWSS-9fq685xd.js +64 -0
  107. package/dist/gallery/frame/chunks/stateDiagram-OKZ733FA-vx7a7hh0.js +456 -0
  108. package/dist/gallery/frame/chunks/stateDiagram-v2-UEYNNEHI-x4m6ws5t.js +46 -0
  109. package/dist/gallery/frame/chunks/swimlanes-SLNWSIFB-e4mxm1gh.js +8287 -0
  110. package/dist/gallery/frame/chunks/swimlanesDiagram-ULZ7WXOC-0h93e2qq.js +42 -0
  111. package/dist/gallery/frame/chunks/timeline-definition-Z64GVDOM-wp0bhbzg.js +1549 -0
  112. package/dist/gallery/frame/chunks/treeView-QDETBFTQ-hcx7n0vt.js +10 -0
  113. package/dist/gallery/frame/chunks/treemap-6X3UGDF4-av02skdw.js +10 -0
  114. package/dist/gallery/frame/chunks/vennDiagram-T6HMQDX7-pmvk1p7n.js +2566 -0
  115. package/dist/gallery/frame/chunks/wardley-OPB4EBWU-njsp6e40.js +10 -0
  116. package/dist/gallery/frame/chunks/wardleyDiagram-T6FBY63Y-eggmnv4z.js +979 -0
  117. package/dist/gallery/frame/chunks/xychartDiagram-ELKLHX3M-q40tnpe5.js +1954 -0
  118. package/dist/gallery/frame/frame.css +183 -0
  119. package/dist/gallery/frame/runtime/chart.js +42744 -0
  120. package/dist/gallery/frame/runtime/html.js +14 -0
  121. package/dist/gallery/frame/runtime/markdown.js +1403 -0
  122. package/dist/gallery/frame/runtime/mermaid.js +32 -0
  123. package/dist/gallery/frame/runtime/svg.js +14 -0
  124. package/dist/gallery/frame/runtime/tsx.js +52 -0
  125. package/dist/gallery/index.html +104 -0
  126. package/docs/reference/cli.md +163 -0
  127. package/docs/reference/export.md +106 -0
  128. package/docs/reference/html.md +215 -0
  129. package/docs/reference/http.md +85 -0
  130. package/docs/reference/mcp.md +78 -0
  131. package/docs/reference/security.md +119 -0
  132. package/docs/reference/storage.md +93 -0
  133. package/docs/reference/tsx.md +101 -0
  134. package/docs/reference/validation.md +212 -0
  135. package/package.json +89 -0
  136. package/scripts/build-gallery.ts +127 -0
  137. package/scripts/launch-netns.sh +67 -0
  138. package/skills/facet/SKILL.md +100 -0
  139. package/src/cli/client.ts +311 -0
  140. package/src/cli/commands/create.ts +49 -0
  141. package/src/cli/commands/doctor.ts +249 -0
  142. package/src/cli/commands/export.ts +179 -0
  143. package/src/cli/commands/instantiate.ts +35 -0
  144. package/src/cli/commands/list.ts +49 -0
  145. package/src/cli/commands/open.ts +75 -0
  146. package/src/cli/commands/pin.ts +39 -0
  147. package/src/cli/commands/promote.ts +49 -0
  148. package/src/cli/commands/publish.ts +122 -0
  149. package/src/cli/commands/read-back.ts +56 -0
  150. package/src/cli/commands/status.ts +114 -0
  151. package/src/cli/commands/watch.ts +146 -0
  152. package/src/cli/main.ts +522 -0
  153. package/src/cli/output.ts +106 -0
  154. package/src/cli/parser.ts +376 -0
  155. package/src/cli/presenter.ts +212 -0
  156. package/src/cli/service-metadata.ts +134 -0
  157. package/src/cli/spawn-service.ts +326 -0
  158. package/src/css.d.ts +4 -0
  159. package/src/gallery-web/app.ts +1581 -0
  160. package/src/gallery-web/export-menu.ts +121 -0
  161. package/src/gallery-web/export.ts +112 -0
  162. package/src/gallery-web/favicon.ts +54 -0
  163. package/src/gallery-web/frame/entries/chart.ts +6 -0
  164. package/src/gallery-web/frame/entries/html.ts +6 -0
  165. package/src/gallery-web/frame/entries/markdown.ts +6 -0
  166. package/src/gallery-web/frame/entries/mermaid.ts +6 -0
  167. package/src/gallery-web/frame/entries/svg.ts +6 -0
  168. package/src/gallery-web/frame/entries/tsx.ts +6 -0
  169. package/src/gallery-web/frame/frame-payload.ts +91 -0
  170. package/src/gallery-web/frame/renderer-validation.ts +13 -0
  171. package/src/gallery-web/frame/renderers/chart.ts +182 -0
  172. package/src/gallery-web/frame/renderers/dompurify-shim.ts +112 -0
  173. package/src/gallery-web/frame/renderers/html.ts +48 -0
  174. package/src/gallery-web/frame/renderers/markdown.ts +81 -0
  175. package/src/gallery-web/frame/renderers/mermaid.ts +120 -0
  176. package/src/gallery-web/frame/renderers/registry.ts +260 -0
  177. package/src/gallery-web/frame/renderers/svg.ts +393 -0
  178. package/src/gallery-web/frame/renderers/tsx.ts +61 -0
  179. package/src/gallery-web/frame/runtime.ts +501 -0
  180. package/src/gallery-web/frame/styles/artifact.css +8424 -0
  181. package/src/gallery-web/frame/styles/frame.css +183 -0
  182. package/src/gallery-web/frame/styles/html-source.css +23 -0
  183. package/src/gallery-web/frame/view-box.ts +33 -0
  184. package/src/gallery-web/frame-html.ts +72 -0
  185. package/src/gallery-web/index.html +104 -0
  186. package/src/gallery-web/session.ts +107 -0
  187. package/src/gallery-web/sse-client.ts +212 -0
  188. package/src/gallery-web/styles/app.css +420 -0
  189. package/src/gallery-web/styles/tokens.css +112 -0
  190. package/src/gallery-web/styles/verdict.css +186 -0
  191. package/src/gallery-web/swap.ts +64 -0
  192. package/src/gallery-web/theme.ts +40 -0
  193. package/src/gallery-web/view-state.ts +93 -0
  194. package/src/harness-adapters/claude-code/README.md +10 -0
  195. package/src/harness-adapters/claude-code/facet.sh +4 -0
  196. package/src/harness-adapters/codex/README.md +10 -0
  197. package/src/harness-adapters/codex/facet.sh +4 -0
  198. package/src/harness-adapters/mcp/README.md +13 -0
  199. package/src/harness-adapters/mcp/cli-bridge.ts +216 -0
  200. package/src/harness-adapters/mcp/main.ts +15 -0
  201. package/src/harness-adapters/mcp/server.ts +164 -0
  202. package/src/harness-adapters/mcp/tool-schemas.ts +53 -0
  203. package/src/harness-adapters/opencode/README.md +10 -0
  204. package/src/harness-adapters/opencode/facet.sh +4 -0
  205. package/src/runtime/compiled-entrypoints.ts +69 -0
  206. package/src/service/dispatcher.ts +717 -0
  207. package/src/service/export.ts +218 -0
  208. package/src/service/http-utils.ts +55 -0
  209. package/src/service/lexical/expectations.ts +210 -0
  210. package/src/service/lifecycle/idle-controller.ts +125 -0
  211. package/src/service/lifecycle/orphan-cleanup.ts +128 -0
  212. package/src/service/lifecycle/process-lock.ts +235 -0
  213. package/src/service/main.ts +136 -0
  214. package/src/service/process.ts +240 -0
  215. package/src/service/router-guards.ts +239 -0
  216. package/src/service/router.ts +627 -0
  217. package/src/service/security/auth.ts +168 -0
  218. package/src/service/security/host-origin.ts +138 -0
  219. package/src/service/security/http-guards.ts +13 -0
  220. package/src/service/security/leases.ts +182 -0
  221. package/src/service/security/token-store.ts +138 -0
  222. package/src/service/server.ts +356 -0
  223. package/src/service/store/database.ts +61 -0
  224. package/src/service/store/evidence-retention.ts +234 -0
  225. package/src/service/store/migrations.ts +167 -0
  226. package/src/service/store/repository-lifecycle.ts +121 -0
  227. package/src/service/store/repository.ts +732 -0
  228. package/src/service/store/schema.ts +218 -0
  229. package/src/service/stored-verdict.ts +97 -0
  230. package/src/service/stream.ts +301 -0
  231. package/src/service/verdict-enrichment.ts +45 -0
  232. package/src/shared/build/frame-bundle-plugins.ts +61 -0
  233. package/src/shared/build-mode.ts +28 -0
  234. package/src/shared/config/evidence-read.ts +98 -0
  235. package/src/shared/config/limits.ts +56 -0
  236. package/src/shared/config/paths.ts +96 -0
  237. package/src/shared/contracts/artifact-types.ts +2 -0
  238. package/src/shared/contracts/artifact.ts +98 -0
  239. package/src/shared/contracts/commands/_shared.ts +59 -0
  240. package/src/shared/contracts/commands/guards.ts +86 -0
  241. package/src/shared/contracts/commands/index.ts +204 -0
  242. package/src/shared/contracts/commands/names.ts +35 -0
  243. package/src/shared/contracts/commands/requests.ts +149 -0
  244. package/src/shared/contracts/commands/results.ts +200 -0
  245. package/src/shared/contracts/envelope.ts +140 -0
  246. package/src/shared/contracts/events.ts +41 -0
  247. package/src/shared/contracts/observed-counts.ts +19 -0
  248. package/src/shared/contracts/renderers.ts +6 -0
  249. package/src/shared/contracts/validation.ts +296 -0
  250. package/src/shared/errors/facet-error.ts +127 -0
  251. package/src/shared/errors/store-error.ts +68 -0
  252. package/src/shared/evidence-image.ts +37 -0
  253. package/src/shared/export.ts +31 -0
  254. package/src/shared/html/policy.ts +108 -0
  255. package/src/shared/html/style-vocabulary.ts +352 -0
  256. package/src/shared/logging/logger.ts +108 -0
  257. package/src/shared/logging/redact.ts +49 -0
  258. package/src/shared/security/frozen-csp.ts +13 -0
  259. package/src/shared/storage-version.ts +2 -0
  260. package/src/shared/tsx/execution.ts +29 -0
  261. package/src/shared/tsx/import-policy.ts +94 -0
  262. package/src/shared/util/dir-permissions.ts +94 -0
  263. package/src/shared/util/mermaid-nodes.ts +230 -0
  264. package/src/shared/util/process.ts +67 -0
  265. package/src/shared/util/time.ts +21 -0
  266. package/src/shared/version.ts +3 -0
  267. package/src/validation/sandbox/limits.ts +41 -0
  268. package/src/validation/sandbox/netns.ts +177 -0
  269. package/src/validation/tier0/chart.ts +177 -0
  270. package/src/validation/tier0/dom-shim.ts +54 -0
  271. package/src/validation/tier0/html.ts +408 -0
  272. package/src/validation/tier0/markdown.ts +285 -0
  273. package/src/validation/tier0/mermaid.ts +98 -0
  274. package/src/validation/tier0/runner.ts +504 -0
  275. package/src/validation/tier0/svg.ts +321 -0
  276. package/src/validation/tier0/tsx/allowlist-resolver.ts +77 -0
  277. package/src/validation/tier0/tsx/ast-policy-capabilities.ts +238 -0
  278. package/src/validation/tier0/tsx/ast-policy-shared.ts +71 -0
  279. package/src/validation/tier0/tsx/ast-policy.ts +181 -0
  280. package/src/validation/tier0/tsx/compiler.ts +156 -0
  281. package/src/validation/tier0/worker-dispatch.ts +211 -0
  282. package/src/validation/tier0/worker-entry.ts +96 -0
  283. package/src/validation/tier0/worker-input.ts +75 -0
  284. package/src/validation/tier1/browser-process.ts +147 -0
  285. package/src/validation/tier1/cdp-pipe.ts +281 -0
  286. package/src/validation/tier1/entries/chart.ts +5 -0
  287. package/src/validation/tier1/entries/html.ts +6 -0
  288. package/src/validation/tier1/entries/markdown.ts +5 -0
  289. package/src/validation/tier1/entries/mermaid.ts +5 -0
  290. package/src/validation/tier1/entries/svg.ts +5 -0
  291. package/src/validation/tier1/entries/tsx.ts +5 -0
  292. package/src/validation/tier1/frame-target.ts +162 -0
  293. package/src/validation/tier1/harness-entry.ts +261 -0
  294. package/src/validation/tier1/harness.ts +215 -0
  295. package/src/validation/tier1/isolated-probe.ts +94 -0
  296. package/src/validation/tier1/launcher.ts +177 -0
  297. package/src/validation/tier1/limits.ts +80 -0
  298. package/src/validation/tier1/nonce.ts +17 -0
  299. package/src/validation/tier1/protocol-probe.ts +519 -0
  300. package/src/validation/tier1/runner.ts +1122 -0
  301. package/src/validation/tier1/verdict.ts +246 -0
  302. package/src/validation/tier1/webp.ts +69 -0
  303. package/templates/README.md +88 -0
  304. package/templates/bar-compare.vl.json +63 -0
  305. package/templates/capacity-report.tsx +102 -0
  306. package/templates/decision-record.md +24 -0
  307. package/templates/deployment-state.mmd +40 -0
  308. package/templates/exemplar.md +91 -0
  309. package/templates/facet-story.tsx +799 -0
  310. package/templates/fleet-dashboard.html +141 -0
  311. package/templates/html-release-ledger.html +91 -0
  312. package/templates/html-status-report.html +114 -0
  313. package/templates/incident-console.tsx +147 -0
  314. package/templates/legion-boundaries.mmd +23 -0
  315. package/templates/legion-flow.mmd +15 -0
  316. package/templates/legion-sequence.mmd +14 -0
  317. package/templates/legion-state.mmd +7 -0
  318. package/templates/metric-card.svg +29 -0
  319. package/templates/observability-map.svg +101 -0
  320. package/templates/pipeline-audit.md +108 -0
  321. package/templates/release-metrics.vl.json +98 -0
  322. package/templates/service-topology.mmd +47 -0
  323. package/templates/status-report.md +32 -0
  324. package/templates/system-map.svg +53 -0
  325. package/templates/timeseries.vl.json +71 -0
  326. package/templates/tsx-interactive-counter.tsx +19 -0
  327. package/templates/tsx-status-report.tsx +31 -0
@@ -0,0 +1,1826 @@
1
+ import {
2
+ selectSvgElement
3
+ } from "./markdown-6zz8efx2.js";
4
+ import {
5
+ JSON_SCHEMA,
6
+ load
7
+ } from "./markdown-rm2yxfjj.js";
8
+ import {
9
+ registerLayoutLoaders
10
+ } from "./markdown-h7pzv34e.js";
11
+ import {
12
+ importSanitizedSvgText
13
+ } from "./markdown-zazx9h4n.js";
14
+ import {
15
+ FacetRenderError,
16
+ decodeArtifactBytes
17
+ } from "./markdown-d1wfbs70.js";
18
+ import {
19
+ dedent
20
+ } from "./markdown-qx3cngz2.js";
21
+ import {
22
+ registerIconPacks
23
+ } from "./markdown-yengsms5.js";
24
+ import {
25
+ cleanAndMerge,
26
+ decodeEntities,
27
+ encodeEntities,
28
+ isDetailedError,
29
+ isEmpty,
30
+ removeDirectives,
31
+ utils_default
32
+ } from "./markdown-ff5wvb43.js";
33
+ import {
34
+ UnknownDiagramError,
35
+ addDirective,
36
+ assignWithDepth_default,
37
+ configureSvgSize,
38
+ cssStyleSheetToString,
39
+ defaultConfig,
40
+ detectType,
41
+ detectors,
42
+ dompurify_shim_default,
43
+ evaluate,
44
+ frontMatterRegex,
45
+ getConfig,
46
+ getDiagram,
47
+ getDiagramLoader,
48
+ getEffectiveHtmlLabels,
49
+ getSiteConfig,
50
+ registerDiagram,
51
+ registerLazyLoadedDiagrams,
52
+ reset,
53
+ sanitizeCss,
54
+ saveConfigFromInitialize,
55
+ setConfig,
56
+ setSiteConfig,
57
+ styles_default,
58
+ themes_default,
59
+ updateSiteConfig
60
+ } from "./markdown-92n37gd4.js";
61
+ import {
62
+ log,
63
+ select_default,
64
+ setLogLevel
65
+ } from "./markdown-xw8dsk8b.js";
66
+ import {
67
+ __name
68
+ } from "./markdown-1s5vwkf2.js";
69
+ import {
70
+ __require
71
+ } from "./markdown-809k7q41.js";
72
+
73
+ // node_modules/stylis/src/Enum.js
74
+ var COMMENT = "comm";
75
+ var RULESET = "rule";
76
+ var DECLARATION = "decl";
77
+ var MEDIA = "@media";
78
+ var IMPORT = "@import";
79
+ var SUPPORTS = "@supports";
80
+ var NAMESPACE = "@namespace";
81
+ var KEYFRAMES = "@keyframes";
82
+ var LAYER = "@layer";
83
+ var SCOPE = "@scope";
84
+
85
+ // node_modules/stylis/src/Utility.js
86
+ var abs = Math.abs;
87
+ var from = String.fromCharCode;
88
+ function trim(value) {
89
+ return value.trim();
90
+ }
91
+ function replace(value, pattern, replacement) {
92
+ return value.replace(pattern, replacement);
93
+ }
94
+ function charat(value, index) {
95
+ return value.charCodeAt(index) | 0;
96
+ }
97
+ function substr(value, begin, end) {
98
+ return value.slice(begin, end);
99
+ }
100
+ function strlen(value) {
101
+ return value.length;
102
+ }
103
+ function sizeof(value) {
104
+ return value.length;
105
+ }
106
+ function append(value, array) {
107
+ return array.push(value), value;
108
+ }
109
+
110
+ // node_modules/stylis/src/Tokenizer.js
111
+ var line = 1;
112
+ var column = 1;
113
+ var length = 0;
114
+ var position = 0;
115
+ var character = 0;
116
+ var characters = "";
117
+ function node(value, root, parent, type, props, children, length2, siblings) {
118
+ return { value, root, parent, type, props, children, line, column, length: length2, return: "", siblings };
119
+ }
120
+ function char() {
121
+ return character;
122
+ }
123
+ function prev() {
124
+ character = position > 0 ? charat(characters, --position) : 0;
125
+ if (column--, character === 10)
126
+ column = 1, line--;
127
+ return character;
128
+ }
129
+ function next() {
130
+ character = position < length ? charat(characters, position++) : 0;
131
+ if (column++, character === 10)
132
+ column = 1, line++;
133
+ return character;
134
+ }
135
+ function peek() {
136
+ return charat(characters, position);
137
+ }
138
+ function caret() {
139
+ return position;
140
+ }
141
+ function slice(begin, end) {
142
+ return substr(characters, begin, end);
143
+ }
144
+ function token(type) {
145
+ switch (type) {
146
+ case 0:
147
+ case 9:
148
+ case 10:
149
+ case 13:
150
+ case 32:
151
+ return 5;
152
+ case 33:
153
+ case 43:
154
+ case 44:
155
+ case 47:
156
+ case 62:
157
+ case 64:
158
+ case 126:
159
+ case 59:
160
+ case 123:
161
+ case 125:
162
+ return 4;
163
+ case 58:
164
+ return 3;
165
+ case 34:
166
+ case 39:
167
+ case 40:
168
+ case 91:
169
+ return 2;
170
+ case 41:
171
+ case 93:
172
+ return 1;
173
+ }
174
+ return 0;
175
+ }
176
+ function alloc(value) {
177
+ return line = column = 1, length = strlen(characters = value), position = 0, [];
178
+ }
179
+ function dealloc(value) {
180
+ return characters = "", value;
181
+ }
182
+ function delimit(type) {
183
+ return trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)));
184
+ }
185
+ function whitespace(type) {
186
+ while (character = peek())
187
+ if (character < 33)
188
+ next();
189
+ else
190
+ break;
191
+ return token(type) > 2 || token(character) > 3 ? "" : " ";
192
+ }
193
+ function escaping(index, count) {
194
+ while (--count && next())
195
+ if (character < 48 || character > 102 || character > 57 && character < 65 || character > 70 && character < 97)
196
+ break;
197
+ return slice(index, caret() + (count < 6 && peek() == 32 && next() == 32));
198
+ }
199
+ function delimiter(type) {
200
+ while (next())
201
+ switch (character) {
202
+ case type:
203
+ return position;
204
+ case 34:
205
+ case 39:
206
+ if (type !== 34 && type !== 39)
207
+ delimiter(character);
208
+ break;
209
+ case 40:
210
+ if (type === 41)
211
+ delimiter(type);
212
+ break;
213
+ case 92:
214
+ next();
215
+ break;
216
+ }
217
+ return position;
218
+ }
219
+ function commenter(type, index) {
220
+ while (next())
221
+ if (type + character === 47 + 10)
222
+ break;
223
+ else if (type + character === 42 + 42 && peek() === 47)
224
+ break;
225
+ return "/*" + slice(index, position - 1) + "*" + from(type === 47 ? type : next());
226
+ }
227
+ function identifier(index) {
228
+ while (!token(peek()))
229
+ next();
230
+ return slice(index, position);
231
+ }
232
+
233
+ // node_modules/stylis/src/Parser.js
234
+ function compile(value) {
235
+ return dealloc(parse("", null, null, null, [""], value = alloc(value), 0, [0], value));
236
+ }
237
+ function parse(value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {
238
+ var index = 0;
239
+ var offset = 0;
240
+ var length2 = pseudo;
241
+ var atrule = 0;
242
+ var property = 0;
243
+ var previous = 0;
244
+ var variable = 1;
245
+ var scanning = 1;
246
+ var ampersand = 1;
247
+ var parens = 0;
248
+ var character2 = 0;
249
+ var type = "";
250
+ var props = rules;
251
+ var children = rulesets;
252
+ var reference = rule;
253
+ var characters2 = type;
254
+ while (scanning)
255
+ switch (previous = character2, character2 = next()) {
256
+ case 40:
257
+ if (previous != 108 && charat(characters2, length2 - 1) == 58)
258
+ parens++, characters2 += "(";
259
+ else
260
+ characters2 += delimit(character2);
261
+ break;
262
+ case 41:
263
+ parens--, characters2 += ")";
264
+ break;
265
+ case 34:
266
+ case 39:
267
+ case 91:
268
+ characters2 += delimit(character2);
269
+ break;
270
+ case 9:
271
+ case 10:
272
+ case 13:
273
+ case 32:
274
+ if (parens > 0) {
275
+ characters2 += from(character2);
276
+ break;
277
+ }
278
+ characters2 += whitespace(previous);
279
+ break;
280
+ case 92:
281
+ characters2 += escaping(caret() - 1, 7);
282
+ continue;
283
+ case 47:
284
+ switch (peek()) {
285
+ case 42:
286
+ case 47:
287
+ append(comment(commenter(next(), caret()), root, parent, declarations), declarations);
288
+ if ((token(previous || 1) == 5 || token(peek() || 1) == 5) && strlen(characters2) && substr(characters2, -1, undefined) !== " ")
289
+ characters2 += " ";
290
+ break;
291
+ default:
292
+ characters2 += "/";
293
+ }
294
+ break;
295
+ case 123 * variable:
296
+ points[index++] = strlen(characters2) * ampersand;
297
+ case 125 * variable:
298
+ case 59:
299
+ case 0:
300
+ if (parens > 0 && character2) {
301
+ characters2 += from(character2);
302
+ break;
303
+ }
304
+ switch (character2) {
305
+ case 0:
306
+ case 125:
307
+ scanning = 0;
308
+ case 59 + offset:
309
+ if (ampersand == -1)
310
+ characters2 = replace(characters2, /\f/g, "");
311
+ if (property > 0 && (strlen(characters2) - length2 || variable === 0))
312
+ append(property > 32 ? declaration(characters2 + ";", rule, parent, length2 - 1, declarations) : declaration(replace(characters2, " ", "") + ";", rule, parent, length2 - 2, declarations), declarations);
313
+ break;
314
+ case 59:
315
+ characters2 += ";";
316
+ default:
317
+ append(reference = ruleset(characters2, root, parent, index, offset, rules, points, type, props = [], children = [], length2, rulesets), rulesets);
318
+ if (character2 === 123)
319
+ if (offset === 0)
320
+ parse(characters2, root, reference, reference, props, rulesets, length2, points, children);
321
+ else {
322
+ switch (atrule) {
323
+ case 99:
324
+ if (charat(characters2, 3) === 110)
325
+ break;
326
+ case 108:
327
+ if (charat(characters2, 2) === 97)
328
+ break;
329
+ default:
330
+ offset = 0;
331
+ case 100:
332
+ case 109:
333
+ case 115:
334
+ }
335
+ if (offset)
336
+ parse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length2, children), children), rules, children, length2, points, rule ? props : children);
337
+ else
338
+ parse(characters2, reference, reference, reference, [""], children, 0, points, children);
339
+ }
340
+ }
341
+ index = offset = property = 0, variable = ampersand = 1, type = characters2 = "", length2 = pseudo;
342
+ break;
343
+ case 58:
344
+ length2 = 1 + strlen(characters2), property = previous;
345
+ default:
346
+ if (variable < 1) {
347
+ if (character2 == 123)
348
+ --variable;
349
+ else if (character2 == 125 && variable++ == 0 && prev() == 125)
350
+ continue;
351
+ }
352
+ switch (characters2 += from(character2), character2 * variable) {
353
+ case 38:
354
+ ampersand = offset > 0 ? 1 : (characters2 += "\f", -1);
355
+ break;
356
+ case 44:
357
+ if (parens > 0)
358
+ break;
359
+ points[index++] = (strlen(characters2) - 1) * ampersand, ampersand = 1;
360
+ break;
361
+ case 64:
362
+ if (peek() === 45)
363
+ characters2 += delimit(next());
364
+ atrule = peek(), offset = length2 = strlen(type = characters2 += identifier(caret())), character2++;
365
+ break;
366
+ case 45:
367
+ if (previous === 45 && strlen(characters2) == 2)
368
+ variable = 0;
369
+ }
370
+ }
371
+ return rulesets;
372
+ }
373
+ function ruleset(value, root, parent, index, offset, rules, points, type, props, children, length2, siblings) {
374
+ var post = offset - 1;
375
+ var rule = offset === 0 ? rules : [""];
376
+ var size = sizeof(rule);
377
+ for (var i = 0, j = 0, k = 0;i < index; ++i)
378
+ for (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value;x < size; ++x)
379
+ if (z = trim(j > 0 ? rule[x] + " " + y : replace(y, /&\f/g, rule[x])))
380
+ props[k++] = z;
381
+ return node(value, root, parent, offset === 0 ? RULESET : type, props, children, length2, siblings);
382
+ }
383
+ function comment(value, root, parent, siblings) {
384
+ return node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings);
385
+ }
386
+ function declaration(value, root, parent, length2, siblings) {
387
+ return node(value, root, parent, DECLARATION, substr(value, 0, length2), substr(value, length2 + 1, -1), length2, siblings);
388
+ }
389
+
390
+ // node_modules/stylis/src/Serializer.js
391
+ function serialize(children, callback) {
392
+ var output = "";
393
+ for (var i = 0;i < children.length; i++)
394
+ output += callback(children[i], i, children, callback) || "";
395
+ return output;
396
+ }
397
+ function stringify(element, index, children, callback) {
398
+ switch (element.type) {
399
+ case LAYER:
400
+ if (element.children.length)
401
+ break;
402
+ case IMPORT:
403
+ case NAMESPACE:
404
+ case DECLARATION:
405
+ return element.return = element.return || element.value;
406
+ case COMMENT:
407
+ return "";
408
+ case KEYFRAMES:
409
+ return element.return = element.value + "{" + serialize(element.children, callback) + "}";
410
+ case RULESET:
411
+ if (!strlen(element.value = element.props.join(",")))
412
+ return "";
413
+ }
414
+ return strlen(children = serialize(element.children, callback)) ? element.return = element.value + "{" + children + "}" : "";
415
+ }
416
+
417
+ // node_modules/stylis/src/Middleware.js
418
+ function middleware(collection) {
419
+ var length2 = sizeof(collection);
420
+ return function(element, index, children, callback) {
421
+ var output = "";
422
+ for (var i = 0;i < length2; i++)
423
+ output += collection[i](element, index, children, callback) || "";
424
+ return output;
425
+ };
426
+ }
427
+
428
+ // node_modules/mermaid/dist/mermaid.core.mjs
429
+ var id = "c4";
430
+ var detector = /* @__PURE__ */ __name((txt) => {
431
+ return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);
432
+ }, "detector");
433
+ var loader = /* @__PURE__ */ __name(async () => {
434
+ const { diagram: diagram2 } = await import("./c4Diagram-5PPSVZJV-z2zjs7wx.js");
435
+ return { id, diagram: diagram2 };
436
+ }, "loader");
437
+ var plugin = {
438
+ id,
439
+ detector,
440
+ loader
441
+ };
442
+ var c4Detector_default = plugin;
443
+ var id2 = "flowchart";
444
+ var detector2 = /* @__PURE__ */ __name((txt, config) => {
445
+ if (config?.flowchart?.defaultRenderer === "dagre-wrapper" || config?.flowchart?.defaultRenderer === "elk") {
446
+ return false;
447
+ }
448
+ return /^\s*graph/.test(txt);
449
+ }, "detector");
450
+ var loader2 = /* @__PURE__ */ __name(async () => {
451
+ const { diagram: diagram2 } = await import("./flowDiagram-UKHOOZJN-2e5ygs44.js");
452
+ return { id: id2, diagram: diagram2 };
453
+ }, "loader");
454
+ var plugin2 = {
455
+ id: id2,
456
+ detector: detector2,
457
+ loader: loader2
458
+ };
459
+ var flowDetector_default = plugin2;
460
+ var id3 = "flowchart-v2";
461
+ var detector3 = /* @__PURE__ */ __name((txt, config) => {
462
+ if (config?.flowchart?.defaultRenderer === "dagre-d3") {
463
+ return false;
464
+ }
465
+ if (config?.flowchart?.defaultRenderer === "elk") {
466
+ config.layout = "elk";
467
+ }
468
+ if (/^\s*graph/.test(txt) && config?.flowchart?.defaultRenderer === "dagre-wrapper") {
469
+ return true;
470
+ }
471
+ return /^\s*flowchart/.test(txt);
472
+ }, "detector");
473
+ var loader3 = /* @__PURE__ */ __name(async () => {
474
+ const { diagram: diagram2 } = await import("./flowDiagram-UKHOOZJN-2e5ygs44.js");
475
+ return { id: id3, diagram: diagram2 };
476
+ }, "loader");
477
+ var plugin3 = {
478
+ id: id3,
479
+ detector: detector3,
480
+ loader: loader3
481
+ };
482
+ var flowDetector_v2_default = plugin3;
483
+ var id4 = "swimlane";
484
+ var detector4 = /* @__PURE__ */ __name((txt) => {
485
+ return /^\s*swimlane-beta\b/.test(txt);
486
+ }, "detector");
487
+ var loader4 = /* @__PURE__ */ __name(async () => {
488
+ const { diagram: diagram2 } = await import("./swimlanesDiagram-ULZ7WXOC-0h93e2qq.js");
489
+ return { id: id4, diagram: diagram2 };
490
+ }, "loader");
491
+ var plugin4 = {
492
+ id: id4,
493
+ detector: detector4,
494
+ loader: loader4
495
+ };
496
+ var detector_default = plugin4;
497
+ var id5 = "er";
498
+ var detector5 = /* @__PURE__ */ __name((txt) => {
499
+ return /^\s*erDiagram/.test(txt);
500
+ }, "detector");
501
+ var loader5 = /* @__PURE__ */ __name(async () => {
502
+ const { diagram: diagram2 } = await import("./erDiagram-JOGREHBK-mzp5nswt.js");
503
+ return { id: id5, diagram: diagram2 };
504
+ }, "loader");
505
+ var plugin5 = {
506
+ id: id5,
507
+ detector: detector5,
508
+ loader: loader5
509
+ };
510
+ var erDetector_default = plugin5;
511
+ var id6 = "gitGraph";
512
+ var detector6 = /* @__PURE__ */ __name((txt) => {
513
+ return /^\s*gitGraph/.test(txt);
514
+ }, "detector");
515
+ var loader6 = /* @__PURE__ */ __name(async () => {
516
+ const { diagram: diagram2 } = await import("./gitGraphDiagram-DS77QQ5N-4z9z8wjm.js");
517
+ return { id: id6, diagram: diagram2 };
518
+ }, "loader");
519
+ var plugin6 = {
520
+ id: id6,
521
+ detector: detector6,
522
+ loader: loader6
523
+ };
524
+ var gitGraphDetector_default = plugin6;
525
+ var id7 = "gantt";
526
+ var detector7 = /* @__PURE__ */ __name((txt) => {
527
+ return /^\s*gantt/.test(txt);
528
+ }, "detector");
529
+ var loader7 = /* @__PURE__ */ __name(async () => {
530
+ const { diagram: diagram2 } = await import("./ganttDiagram-PKOTCBZU-p2hhh7hr.js");
531
+ return { id: id7, diagram: diagram2 };
532
+ }, "loader");
533
+ var plugin7 = {
534
+ id: id7,
535
+ detector: detector7,
536
+ loader: loader7
537
+ };
538
+ var ganttDetector_default = plugin7;
539
+ var id8 = "info";
540
+ var detector8 = /* @__PURE__ */ __name((txt) => {
541
+ return /^\s*info/.test(txt);
542
+ }, "detector");
543
+ var loader8 = /* @__PURE__ */ __name(async () => {
544
+ const { diagram: diagram2 } = await import("./infoDiagram-6WML65LV-5rqm3mgg.js");
545
+ return { id: id8, diagram: diagram2 };
546
+ }, "loader");
547
+ var info = {
548
+ id: id8,
549
+ detector: detector8,
550
+ loader: loader8
551
+ };
552
+ var id9 = "pie";
553
+ var detector9 = /* @__PURE__ */ __name((txt) => {
554
+ return /^\s*pie/.test(txt);
555
+ }, "detector");
556
+ var loader9 = /* @__PURE__ */ __name(async () => {
557
+ const { diagram: diagram2 } = await import("./pieDiagram-7S7Q4E2Y-f1vxjtmx.js");
558
+ return { id: id9, diagram: diagram2 };
559
+ }, "loader");
560
+ var pie = {
561
+ id: id9,
562
+ detector: detector9,
563
+ loader: loader9
564
+ };
565
+ var id10 = "quadrantChart";
566
+ var detector10 = /* @__PURE__ */ __name((txt) => {
567
+ return /^\s*quadrantChart/.test(txt);
568
+ }, "detector");
569
+ var loader10 = /* @__PURE__ */ __name(async () => {
570
+ const { diagram: diagram2 } = await import("./quadrantDiagram-CIZ2JOQS-ywafa6kh.js");
571
+ return { id: id10, diagram: diagram2 };
572
+ }, "loader");
573
+ var plugin8 = {
574
+ id: id10,
575
+ detector: detector10,
576
+ loader: loader10
577
+ };
578
+ var quadrantDetector_default = plugin8;
579
+ var id11 = "xychart";
580
+ var detector11 = /* @__PURE__ */ __name((txt) => {
581
+ return /^\s*xychart(-beta)?/.test(txt);
582
+ }, "detector");
583
+ var loader11 = /* @__PURE__ */ __name(async () => {
584
+ const { diagram: diagram2 } = await import("./xychartDiagram-ELKLHX3M-q40tnpe5.js");
585
+ return { id: id11, diagram: diagram2 };
586
+ }, "loader");
587
+ var plugin9 = {
588
+ id: id11,
589
+ detector: detector11,
590
+ loader: loader11
591
+ };
592
+ var xychartDetector_default = plugin9;
593
+ var id12 = "requirement";
594
+ var detector12 = /* @__PURE__ */ __name((txt) => {
595
+ return /^\s*requirement(Diagram)?/.test(txt);
596
+ }, "detector");
597
+ var loader12 = /* @__PURE__ */ __name(async () => {
598
+ const { diagram: diagram2 } = await import("./requirementDiagram-LRYGKXZP-9bs4786c.js");
599
+ return { id: id12, diagram: diagram2 };
600
+ }, "loader");
601
+ var plugin10 = {
602
+ id: id12,
603
+ detector: detector12,
604
+ loader: loader12
605
+ };
606
+ var requirementDetector_default = plugin10;
607
+ var id13 = "sequence";
608
+ var detector13 = /* @__PURE__ */ __name((txt) => {
609
+ return /^\s*sequenceDiagram/.test(txt);
610
+ }, "detector");
611
+ var loader13 = /* @__PURE__ */ __name(async () => {
612
+ const { diagram: diagram2 } = await import("./sequenceDiagram-SI44F4Z6-qaf9mz3t.js");
613
+ return { id: id13, diagram: diagram2 };
614
+ }, "loader");
615
+ var plugin11 = {
616
+ id: id13,
617
+ detector: detector13,
618
+ loader: loader13
619
+ };
620
+ var sequenceDetector_default = plugin11;
621
+ var id14 = "class";
622
+ var detector14 = /* @__PURE__ */ __name((txt, config) => {
623
+ if (config?.class?.defaultRenderer === "dagre-wrapper") {
624
+ return false;
625
+ }
626
+ return /^\s*classDiagram/.test(txt);
627
+ }, "detector");
628
+ var loader14 = /* @__PURE__ */ __name(async () => {
629
+ const { diagram: diagram2 } = await import("./classDiagram-JCYQIIEL-ve8rngqp.js");
630
+ return { id: id14, diagram: diagram2 };
631
+ }, "loader");
632
+ var plugin12 = {
633
+ id: id14,
634
+ detector: detector14,
635
+ loader: loader14
636
+ };
637
+ var classDetector_default = plugin12;
638
+ var id15 = "classDiagram";
639
+ var detector15 = /* @__PURE__ */ __name((txt, config) => {
640
+ if (/^\s*classDiagram/.test(txt) && config?.class?.defaultRenderer === "dagre-wrapper") {
641
+ return true;
642
+ }
643
+ return /^\s*classDiagram-v2/.test(txt);
644
+ }, "detector");
645
+ var loader15 = /* @__PURE__ */ __name(async () => {
646
+ const { diagram: diagram2 } = await import("./classDiagram-v2-OCEON4UE-8cfaxb8z.js");
647
+ return { id: id15, diagram: diagram2 };
648
+ }, "loader");
649
+ var plugin13 = {
650
+ id: id15,
651
+ detector: detector15,
652
+ loader: loader15
653
+ };
654
+ var classDetector_V2_default = plugin13;
655
+ var id16 = "state";
656
+ var detector16 = /* @__PURE__ */ __name((txt, config) => {
657
+ if (config?.state?.defaultRenderer === "dagre-wrapper") {
658
+ return false;
659
+ }
660
+ return /^\s*stateDiagram/.test(txt);
661
+ }, "detector");
662
+ var loader16 = /* @__PURE__ */ __name(async () => {
663
+ const { diagram: diagram2 } = await import("./stateDiagram-OKZ733FA-vx7a7hh0.js");
664
+ return { id: id16, diagram: diagram2 };
665
+ }, "loader");
666
+ var plugin14 = {
667
+ id: id16,
668
+ detector: detector16,
669
+ loader: loader16
670
+ };
671
+ var stateDetector_default = plugin14;
672
+ var id17 = "stateDiagram";
673
+ var detector17 = /* @__PURE__ */ __name((txt, config) => {
674
+ if (/^\s*stateDiagram-v2/.test(txt)) {
675
+ return true;
676
+ }
677
+ if (/^\s*stateDiagram/.test(txt) && config?.state?.defaultRenderer === "dagre-wrapper") {
678
+ return true;
679
+ }
680
+ return false;
681
+ }, "detector");
682
+ var loader17 = /* @__PURE__ */ __name(async () => {
683
+ const { diagram: diagram2 } = await import("./stateDiagram-v2-UEYNNEHI-x4m6ws5t.js");
684
+ return { id: id17, diagram: diagram2 };
685
+ }, "loader");
686
+ var plugin15 = {
687
+ id: id17,
688
+ detector: detector17,
689
+ loader: loader17
690
+ };
691
+ var stateDetector_V2_default = plugin15;
692
+ var id18 = "journey";
693
+ var detector18 = /* @__PURE__ */ __name((txt) => {
694
+ return /^\s*journey/.test(txt);
695
+ }, "detector");
696
+ var loader18 = /* @__PURE__ */ __name(async () => {
697
+ const { diagram: diagram2 } = await import("./journeyDiagram-NVQOT4AX-9jbfp0pk.js");
698
+ return { id: id18, diagram: diagram2 };
699
+ }, "loader");
700
+ var plugin16 = {
701
+ id: id18,
702
+ detector: detector18,
703
+ loader: loader18
704
+ };
705
+ var journeyDetector_default = plugin16;
706
+ var draw = /* @__PURE__ */ __name((_text, id39, version) => {
707
+ log.debug(`rendering svg for syntax error
708
+ `);
709
+ const svg = selectSvgElement(id39);
710
+ const g = svg.append("g");
711
+ svg.attr("viewBox", "0 0 2412 512");
712
+ configureSvgSize(svg, 100, 512, true);
713
+ g.append("path").attr("class", "error-icon").attr("d", "m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z");
714
+ g.append("path").attr("class", "error-icon").attr("d", "m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z");
715
+ g.append("path").attr("class", "error-icon").attr("d", "m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z");
716
+ g.append("path").attr("class", "error-icon").attr("d", "m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z");
717
+ g.append("path").attr("class", "error-icon").attr("d", "m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z");
718
+ g.append("path").attr("class", "error-icon").attr("d", "m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z");
719
+ g.append("text").attr("class", "error-text").attr("x", 1440).attr("y", 250).attr("font-size", "150px").style("text-anchor", "middle").text("Syntax error in text");
720
+ g.append("text").attr("class", "error-text").attr("x", 1250).attr("y", 400).attr("font-size", "100px").style("text-anchor", "middle").text(`mermaid version ${version}`);
721
+ }, "draw");
722
+ var renderer = { draw };
723
+ var errorRenderer_default = renderer;
724
+ var diagram = {
725
+ db: {},
726
+ renderer,
727
+ parser: {
728
+ parse: /* @__PURE__ */ __name(() => {
729
+ return;
730
+ }, "parse")
731
+ }
732
+ };
733
+ var errorDiagram_default = diagram;
734
+ var id19 = "flowchart-elk";
735
+ var detector19 = /* @__PURE__ */ __name((txt, config = {}) => {
736
+ if (/^\s*flowchart-elk/.test(txt) || /^\s*(flowchart|graph)/.test(txt) && config?.flowchart?.defaultRenderer === "elk") {
737
+ config.layout = "elk";
738
+ return true;
739
+ }
740
+ return false;
741
+ }, "detector");
742
+ var loader19 = /* @__PURE__ */ __name(async () => {
743
+ const { diagram: diagram2 } = await import("./flowDiagram-UKHOOZJN-2e5ygs44.js");
744
+ return { id: id19, diagram: diagram2 };
745
+ }, "loader");
746
+ var plugin17 = {
747
+ id: id19,
748
+ detector: detector19,
749
+ loader: loader19
750
+ };
751
+ var detector_default2 = plugin17;
752
+ var id20 = "timeline";
753
+ var detector20 = /* @__PURE__ */ __name((txt) => {
754
+ return /^\s*timeline/.test(txt);
755
+ }, "detector");
756
+ var loader20 = /* @__PURE__ */ __name(async () => {
757
+ const { diagram: diagram2 } = await import("./timeline-definition-Z64GVDOM-wp0bhbzg.js");
758
+ return { id: id20, diagram: diagram2 };
759
+ }, "loader");
760
+ var plugin18 = {
761
+ id: id20,
762
+ detector: detector20,
763
+ loader: loader20
764
+ };
765
+ var detector_default3 = plugin18;
766
+ var id21 = "mindmap";
767
+ var detector21 = /* @__PURE__ */ __name((txt) => {
768
+ return /^\s*mindmap/.test(txt);
769
+ }, "detector");
770
+ var loader21 = /* @__PURE__ */ __name(async () => {
771
+ const { diagram: diagram2 } = await import("./mindmap-definition-FAOFIHXS-ra44cbem.js");
772
+ return { id: id21, diagram: diagram2 };
773
+ }, "loader");
774
+ var plugin19 = {
775
+ id: id21,
776
+ detector: detector21,
777
+ loader: loader21
778
+ };
779
+ var detector_default4 = plugin19;
780
+ var id22 = "kanban";
781
+ var detector22 = /* @__PURE__ */ __name((txt) => {
782
+ return /^\s*kanban/.test(txt);
783
+ }, "detector");
784
+ var loader22 = /* @__PURE__ */ __name(async () => {
785
+ const { diagram: diagram2 } = await import("./kanban-definition-27J2QSJJ-4x0vx4se.js");
786
+ return { id: id22, diagram: diagram2 };
787
+ }, "loader");
788
+ var plugin20 = {
789
+ id: id22,
790
+ detector: detector22,
791
+ loader: loader22
792
+ };
793
+ var detector_default5 = plugin20;
794
+ var id23 = "sankey";
795
+ var detector23 = /* @__PURE__ */ __name((txt) => {
796
+ return /^\s*sankey(-beta)?/.test(txt);
797
+ }, "detector");
798
+ var loader23 = /* @__PURE__ */ __name(async () => {
799
+ const { diagram: diagram2 } = await import("./sankeyDiagram-W5VNT64P-awt1em8b.js");
800
+ return { id: id23, diagram: diagram2 };
801
+ }, "loader");
802
+ var plugin21 = {
803
+ id: id23,
804
+ detector: detector23,
805
+ loader: loader23
806
+ };
807
+ var sankeyDetector_default = plugin21;
808
+ var id24 = "packet";
809
+ var detector24 = /* @__PURE__ */ __name((txt) => {
810
+ return /^\s*packet(-beta)?/.test(txt);
811
+ }, "detector");
812
+ var loader24 = /* @__PURE__ */ __name(async () => {
813
+ const { diagram: diagram2 } = await import("./diagram-LBJQPF4R-w4a2cm9q.js");
814
+ return { id: id24, diagram: diagram2 };
815
+ }, "loader");
816
+ var packet = {
817
+ id: id24,
818
+ detector: detector24,
819
+ loader: loader24
820
+ };
821
+ var id25 = "radar";
822
+ var detector25 = /* @__PURE__ */ __name((txt) => {
823
+ return /^\s*radar-beta/.test(txt);
824
+ }, "detector");
825
+ var loader25 = /* @__PURE__ */ __name(async () => {
826
+ const { diagram: diagram2 } = await import("./diagram-UB23O5K3-xncy8nyd.js");
827
+ return { id: id25, diagram: diagram2 };
828
+ }, "loader");
829
+ var radar = {
830
+ id: id25,
831
+ detector: detector25,
832
+ loader: loader25
833
+ };
834
+ var id26 = "block";
835
+ var detector26 = /* @__PURE__ */ __name((txt) => {
836
+ return /^\s*block(-beta)?/.test(txt);
837
+ }, "detector");
838
+ var loader26 = /* @__PURE__ */ __name(async () => {
839
+ const { diagram: diagram2 } = await import("./blockDiagram-VBNYF7ZC-7xsqzrd1.js");
840
+ return { id: id26, diagram: diagram2 };
841
+ }, "loader");
842
+ var plugin22 = {
843
+ id: id26,
844
+ detector: detector26,
845
+ loader: loader26
846
+ };
847
+ var blockDetector_default = plugin22;
848
+ var id27 = "treeView";
849
+ var detector27 = /* @__PURE__ */ __name((txt) => {
850
+ return /^\s*treeView-beta/.test(txt);
851
+ }, "detector");
852
+ var loader27 = /* @__PURE__ */ __name(async () => {
853
+ const { diagram: diagram2 } = await import("./diagram-7IWD3JNH-y4eng9sc.js");
854
+ return { id: id27, diagram: diagram2 };
855
+ }, "loader");
856
+ var plugin23 = {
857
+ id: id27,
858
+ detector: detector27,
859
+ loader: loader27
860
+ };
861
+ var detector_default6 = plugin23;
862
+ var id28 = "architecture";
863
+ var detector28 = /* @__PURE__ */ __name((txt) => {
864
+ return /^\s*architecture/.test(txt);
865
+ }, "detector");
866
+ var loader28 = /* @__PURE__ */ __name(async () => {
867
+ const { diagram: diagram2 } = await import("./architectureDiagram-T3A2C74G-n4z77eg6.js");
868
+ return { id: id28, diagram: diagram2 };
869
+ }, "loader");
870
+ var architecture = {
871
+ id: id28,
872
+ detector: detector28,
873
+ loader: loader28
874
+ };
875
+ var architectureDetector_default = architecture;
876
+ var id29 = "eventmodeling";
877
+ var detector29 = /* @__PURE__ */ __name((txt) => {
878
+ return /^\s*eventmodeling/.test(txt);
879
+ }, "detector");
880
+ var loader29 = /* @__PURE__ */ __name(async () => {
881
+ const { diagram: diagram2 } = await import("./diagram-B4RE2ZJO-rn3p7j5h.js");
882
+ return { id: id29, diagram: diagram2 };
883
+ }, "loader");
884
+ var plugin24 = {
885
+ id: id29,
886
+ detector: detector29,
887
+ loader: loader29
888
+ };
889
+ var detector_default7 = plugin24;
890
+ var id30 = "ishikawa";
891
+ var detector30 = /* @__PURE__ */ __name((txt) => {
892
+ return /^\s*ishikawa(-beta)?\b/i.test(txt);
893
+ }, "detector");
894
+ var loader30 = /* @__PURE__ */ __name(async () => {
895
+ const { diagram: diagram2 } = await import("./ishikawaDiagram-WSZJBQD7-b51z96jy.js");
896
+ return { id: id30, diagram: diagram2 };
897
+ }, "loader");
898
+ var ishikawa = {
899
+ id: id30,
900
+ detector: detector30,
901
+ loader: loader30
902
+ };
903
+ var id31 = "venn";
904
+ var detector31 = /* @__PURE__ */ __name((txt) => {
905
+ return /^\s*venn-beta/.test(txt);
906
+ }, "detector");
907
+ var loader31 = /* @__PURE__ */ __name(async () => {
908
+ const { diagram: diagram2 } = await import("./vennDiagram-T6HMQDX7-pmvk1p7n.js");
909
+ return { id: id31, diagram: diagram2 };
910
+ }, "loader");
911
+ var plugin25 = {
912
+ id: id31,
913
+ detector: detector31,
914
+ loader: loader31
915
+ };
916
+ var vennDetector_default = plugin25;
917
+ var id32 = "treemap";
918
+ var detector32 = /* @__PURE__ */ __name((txt) => {
919
+ return /^\s*treemap/.test(txt);
920
+ }, "detector");
921
+ var loader32 = /* @__PURE__ */ __name(async () => {
922
+ const { diagram: diagram2 } = await import("./diagram-Q27KOJAE-aqc2v7wy.js");
923
+ return { id: id32, diagram: diagram2 };
924
+ }, "loader");
925
+ var treemap = {
926
+ id: id32,
927
+ detector: detector32,
928
+ loader: loader32
929
+ };
930
+ var id33 = "wardley";
931
+ var detector33 = /* @__PURE__ */ __name((text) => {
932
+ return /^\s*wardley-beta/i.test(text);
933
+ }, "detector");
934
+ var loader33 = /* @__PURE__ */ __name(async () => {
935
+ const { diagram: diagram2 } = await import("./wardleyDiagram-T6FBY63Y-eggmnv4z.js");
936
+ return { id: id33, diagram: diagram2 };
937
+ }, "loader");
938
+ var plugin26 = {
939
+ id: id33,
940
+ detector: detector33,
941
+ loader: loader33
942
+ };
943
+ var wardleyDetector_default = plugin26;
944
+ var id34 = "cynefin";
945
+ var detector34 = /* @__PURE__ */ __name((txt) => {
946
+ return /^\s*cynefin-beta(?:[\s:]|$)/.test(txt);
947
+ }, "detector");
948
+ var loader34 = /* @__PURE__ */ __name(async () => {
949
+ const { diagram: diagram2 } = await import("./cynefinDiagram-MW4NZA55-c1c0dj12.js");
950
+ return { id: id34, diagram: diagram2 };
951
+ }, "loader");
952
+ var cynefin = {
953
+ id: id34,
954
+ detector: detector34,
955
+ loader: loader34
956
+ };
957
+ var id35 = "railroad";
958
+ var detector35 = /* @__PURE__ */ __name((txt) => {
959
+ return /^\s*railroad-beta/i.test(txt);
960
+ }, "detector");
961
+ var loader35 = /* @__PURE__ */ __name(async () => {
962
+ const { diagram: diagram2 } = await import("./railroadDiagram-AXF67PYL-qc61wax4.js");
963
+ return { id: id35, diagram: diagram2 };
964
+ }, "loader");
965
+ var railroad = {
966
+ id: id35,
967
+ detector: detector35,
968
+ loader: loader35
969
+ };
970
+ var id36 = "railroadEbnf";
971
+ var detector36 = /* @__PURE__ */ __name((txt) => {
972
+ return /^\s*railroad-ebnf-beta/i.test(txt);
973
+ }, "detector");
974
+ var loader36 = /* @__PURE__ */ __name(async () => {
975
+ const { diagram: diagram2 } = await import("./ebnfDiagram-BXEA7PRR-acwgxz16.js");
976
+ return { id: id36, diagram: diagram2 };
977
+ }, "loader");
978
+ var railroadEbnf = {
979
+ id: id36,
980
+ detector: detector36,
981
+ loader: loader36
982
+ };
983
+ var id37 = "railroadAbnf";
984
+ var detector37 = /* @__PURE__ */ __name((txt) => {
985
+ return /^\s*railroad-abnf-beta/i.test(txt);
986
+ }, "detector");
987
+ var loader37 = /* @__PURE__ */ __name(async () => {
988
+ const { diagram: diagram2 } = await import("./abnfDiagram-N423BO3Z-jj74szbm.js");
989
+ return { id: id37, diagram: diagram2 };
990
+ }, "loader");
991
+ var railroadAbnf = {
992
+ id: id37,
993
+ detector: detector37,
994
+ loader: loader37
995
+ };
996
+ var id38 = "railroadPeg";
997
+ var detector38 = /* @__PURE__ */ __name((txt) => {
998
+ return /^\s*railroad-peg-beta/i.test(txt);
999
+ }, "detector");
1000
+ var loader38 = /* @__PURE__ */ __name(async () => {
1001
+ const { diagram: diagram2 } = await import("./pegDiagram-VL7TDLO6-a2a4wg03.js");
1002
+ return { id: id38, diagram: diagram2 };
1003
+ }, "loader");
1004
+ var railroadPeg = {
1005
+ id: id38,
1006
+ detector: detector38,
1007
+ loader: loader38
1008
+ };
1009
+ var hasLoadedDiagrams = false;
1010
+ var addDiagrams = /* @__PURE__ */ __name(() => {
1011
+ if (hasLoadedDiagrams) {
1012
+ return;
1013
+ }
1014
+ hasLoadedDiagrams = true;
1015
+ registerDiagram("error", errorDiagram_default, (text) => {
1016
+ return text.toLowerCase().trim() === "error";
1017
+ });
1018
+ registerDiagram("---", {
1019
+ db: {
1020
+ clear: /* @__PURE__ */ __name(() => {}, "clear")
1021
+ },
1022
+ styles: {},
1023
+ renderer: {
1024
+ draw: /* @__PURE__ */ __name(() => {}, "draw")
1025
+ },
1026
+ parser: {
1027
+ parse: /* @__PURE__ */ __name(() => {
1028
+ throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks");
1029
+ }, "parse")
1030
+ },
1031
+ init: /* @__PURE__ */ __name(() => null, "init")
1032
+ }, (text) => {
1033
+ return text.toLowerCase().trimStart().startsWith("---");
1034
+ });
1035
+ if (true) {
1036
+ registerLazyLoadedDiagrams(detector_default2, detector_default4, architectureDetector_default);
1037
+ }
1038
+ registerLazyLoadedDiagrams(c4Detector_default, detector_default5, classDetector_V2_default, classDetector_default, erDetector_default, ganttDetector_default, info, pie, requirementDetector_default, sequenceDetector_default, detector_default, flowDetector_v2_default, flowDetector_default, detector_default3, gitGraphDetector_default, stateDetector_V2_default, stateDetector_default, journeyDetector_default, quadrantDetector_default, sankeyDetector_default, packet, xychartDetector_default, blockDetector_default, detector_default7, detector_default6, radar, ishikawa, treemap, railroad, railroadEbnf, railroadAbnf, railroadPeg, vennDetector_default, wardleyDetector_default, cynefin);
1039
+ }, "addDiagrams");
1040
+ var loadRegisteredDiagrams = /* @__PURE__ */ __name(async () => {
1041
+ log.debug(`Loading registered diagrams`);
1042
+ const results = await Promise.allSettled(Object.entries(detectors).map(async ([key, { detector: detector39, loader: loader39 }]) => {
1043
+ if (!loader39) {
1044
+ return;
1045
+ }
1046
+ try {
1047
+ getDiagram(key);
1048
+ } catch {
1049
+ try {
1050
+ const { diagram: diagram2, id: id39 } = await loader39();
1051
+ registerDiagram(id39, diagram2, detector39);
1052
+ } catch (err) {
1053
+ log.error(`Failed to load external diagram with key ${key}. Removing from detectors.`);
1054
+ delete detectors[key];
1055
+ throw err;
1056
+ }
1057
+ }
1058
+ }));
1059
+ const failed = results.filter((result) => result.status === "rejected");
1060
+ if (failed.length > 0) {
1061
+ log.error(`Failed to load ${failed.length} external diagrams`);
1062
+ for (const res of failed) {
1063
+ log.error(res);
1064
+ }
1065
+ throw new Error(`Failed to load ${failed.length} external diagrams`);
1066
+ }
1067
+ }, "loadRegisteredDiagrams");
1068
+ var SVG_ROLE = "graphics-document document";
1069
+ function setA11yDiagramInfo(svg, diagramType) {
1070
+ svg.attr("role", SVG_ROLE);
1071
+ if (diagramType !== "") {
1072
+ svg.attr("aria-roledescription", diagramType);
1073
+ }
1074
+ }
1075
+ __name(setA11yDiagramInfo, "setA11yDiagramInfo");
1076
+ function addSVGa11yTitleDescription(svg, a11yTitle, a11yDesc, baseId) {
1077
+ if (svg.insert === undefined) {
1078
+ return;
1079
+ }
1080
+ if (a11yDesc) {
1081
+ const descId = `chart-desc-${baseId}`;
1082
+ svg.attr("aria-describedby", descId);
1083
+ svg.insert("desc", ":first-child").attr("id", descId).text(a11yDesc);
1084
+ }
1085
+ if (a11yTitle) {
1086
+ const titleId = `chart-title-${baseId}`;
1087
+ svg.attr("aria-labelledby", titleId);
1088
+ svg.insert("title", ":first-child").attr("id", titleId).text(a11yTitle);
1089
+ }
1090
+ }
1091
+ __name(addSVGa11yTitleDescription, "addSVGa11yTitleDescription");
1092
+ var Diagram = class _Diagram {
1093
+ constructor(type, text, db, parser, renderer2) {
1094
+ this.type = type;
1095
+ this.text = text;
1096
+ this.db = db;
1097
+ this.parser = parser;
1098
+ this.renderer = renderer2;
1099
+ }
1100
+ static {
1101
+ __name(this, "Diagram");
1102
+ }
1103
+ static async fromText(text, metadata = {}) {
1104
+ const config = getConfig();
1105
+ const type = detectType(text, config);
1106
+ text = encodeEntities(text) + `
1107
+ `;
1108
+ try {
1109
+ getDiagram(type);
1110
+ } catch {
1111
+ const loader39 = getDiagramLoader(type);
1112
+ if (!loader39) {
1113
+ throw new UnknownDiagramError(`Diagram ${type} not found.`);
1114
+ }
1115
+ const { id: id39, diagram: diagram2 } = await loader39();
1116
+ registerDiagram(id39, diagram2);
1117
+ }
1118
+ const { db, parser, renderer: renderer2, init: init2 } = getDiagram(type);
1119
+ if (parser.parser) {
1120
+ parser.parser.yy = db;
1121
+ }
1122
+ db.clear?.();
1123
+ init2?.(config);
1124
+ if (metadata.title) {
1125
+ db.setDiagramTitle?.(metadata.title);
1126
+ }
1127
+ await parser.parse(text);
1128
+ return new _Diagram(type, text, db, parser, renderer2);
1129
+ }
1130
+ async render(id39, version) {
1131
+ await this.renderer.draw(this.text, id39, version, this);
1132
+ }
1133
+ getParser() {
1134
+ return this.parser;
1135
+ }
1136
+ getType() {
1137
+ return this.type;
1138
+ }
1139
+ };
1140
+ var interactionFunctions = [];
1141
+ var attachFunctions = /* @__PURE__ */ __name(() => {
1142
+ interactionFunctions.forEach((f) => {
1143
+ f();
1144
+ });
1145
+ interactionFunctions = [];
1146
+ }, "attachFunctions");
1147
+ var cleanupComments = /* @__PURE__ */ __name((text) => {
1148
+ return text.replace(/^\s*%%(?!{)[^\n]+\n?/gm, "").trimStart();
1149
+ }, "cleanupComments");
1150
+ function extractFrontMatter(text) {
1151
+ const matches = text.match(frontMatterRegex);
1152
+ if (!matches) {
1153
+ return {
1154
+ text,
1155
+ metadata: {}
1156
+ };
1157
+ }
1158
+ const indent = matches[1];
1159
+ const yamlBody = indent ? matches[2].split(`
1160
+ `).map((line2) => line2.startsWith(indent) ? line2.slice(indent.length) : line2).join(`
1161
+ `) : matches[2];
1162
+ let parsed = load(yamlBody, {
1163
+ schema: JSON_SCHEMA
1164
+ }) ?? {};
1165
+ parsed = typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
1166
+ const metadata = {};
1167
+ if (parsed.displayMode) {
1168
+ metadata.displayMode = parsed.displayMode.toString();
1169
+ }
1170
+ if (parsed.title) {
1171
+ metadata.title = parsed.title.toString();
1172
+ }
1173
+ if (parsed.config) {
1174
+ metadata.config = parsed.config;
1175
+ }
1176
+ return {
1177
+ text: text.slice(matches[0].length),
1178
+ metadata
1179
+ };
1180
+ }
1181
+ __name(extractFrontMatter, "extractFrontMatter");
1182
+ var cleanupText = /* @__PURE__ */ __name((code) => {
1183
+ return code.replace(/\r\n?/g, `
1184
+ `).replace(/<(\w+)([^>]*)>/g, (match2, tag, attributes) => "<" + tag + attributes.replace(/="([^"]*)"/g, "='$1'") + ">");
1185
+ }, "cleanupText");
1186
+ var processFrontmatter = /* @__PURE__ */ __name((code) => {
1187
+ const { text, metadata } = extractFrontMatter(code);
1188
+ const { displayMode, title, config = {} } = metadata;
1189
+ if (displayMode) {
1190
+ if (!config.gantt) {
1191
+ config.gantt = {};
1192
+ }
1193
+ config.gantt.displayMode = displayMode;
1194
+ }
1195
+ return { title, config, text };
1196
+ }, "processFrontmatter");
1197
+ var processDirectives = /* @__PURE__ */ __name((code) => {
1198
+ const initDirective = utils_default.detectInit(code) ?? {};
1199
+ const wrapDirectives = utils_default.detectDirective(code, "wrap");
1200
+ if (Array.isArray(wrapDirectives)) {
1201
+ initDirective.wrap = wrapDirectives.some(({ type }) => type === "wrap");
1202
+ } else if (wrapDirectives?.type === "wrap") {
1203
+ initDirective.wrap = true;
1204
+ }
1205
+ return {
1206
+ text: removeDirectives(code),
1207
+ directive: initDirective
1208
+ };
1209
+ }, "processDirectives");
1210
+ function preprocessDiagram(code) {
1211
+ const cleanedCode = cleanupText(code);
1212
+ const frontMatterResult = processFrontmatter(cleanedCode);
1213
+ const directiveResult = processDirectives(frontMatterResult.text);
1214
+ const config = cleanAndMerge(frontMatterResult.config, directiveResult.directive);
1215
+ code = cleanupComments(directiveResult.text);
1216
+ return {
1217
+ code,
1218
+ title: frontMatterResult.title,
1219
+ config
1220
+ };
1221
+ }
1222
+ __name(preprocessDiagram, "preprocessDiagram");
1223
+ function toBase64(str) {
1224
+ const utf8Bytes = new TextEncoder().encode(str);
1225
+ const utf8Str = Array.from(utf8Bytes, (byte) => String.fromCodePoint(byte)).join("");
1226
+ return btoa(utf8Str);
1227
+ }
1228
+ __name(toBase64, "toBase64");
1229
+ var MAX_TEXTLENGTH = 50000;
1230
+ var MAX_TEXTLENGTH_EXCEEDED_MSG = "graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa";
1231
+ var SECURITY_LVL_SANDBOX = "sandbox";
1232
+ var SECURITY_LVL_LOOSE = "loose";
1233
+ var XMLNS_SVG_STD = "http://www.w3.org/2000/svg";
1234
+ var XMLNS_XLINK_STD = "http://www.w3.org/1999/xlink";
1235
+ var XMLNS_XHTML_STD = "http://www.w3.org/1999/xhtml";
1236
+ var IFRAME_WIDTH = "100%";
1237
+ var IFRAME_HEIGHT = "100%";
1238
+ var IFRAME_STYLES = "border:0;margin:0;";
1239
+ var IFRAME_BODY_STYLE = "margin:0";
1240
+ var IFRAME_SANDBOX_OPTS = "allow-top-navigation-by-user-activation allow-popups";
1241
+ var IFRAME_NOT_SUPPORTED_MSG = 'The "iframe" tag is not supported by your browser.';
1242
+ var DOMPURIFY_TAGS = ["foreignobject"];
1243
+ var DOMPURIFY_ATTR = ["dominant-baseline"];
1244
+ function processAndSetConfigs(text) {
1245
+ const processed = preprocessDiagram(text);
1246
+ reset();
1247
+ addDirective(processed.config ?? {});
1248
+ return processed;
1249
+ }
1250
+ __name(processAndSetConfigs, "processAndSetConfigs");
1251
+ async function parse2(text, parseOptions) {
1252
+ addDiagrams();
1253
+ try {
1254
+ const { code, config } = processAndSetConfigs(text);
1255
+ const diagram2 = await getDiagramFromText(code);
1256
+ return { diagramType: diagram2.type, config };
1257
+ } catch (error) {
1258
+ if (parseOptions?.suppressErrors) {
1259
+ return false;
1260
+ }
1261
+ throw error;
1262
+ }
1263
+ }
1264
+ __name(parse2, "parse");
1265
+ var cssImportantStyles = /* @__PURE__ */ __name((cssClass, element, cssClasses = []) => {
1266
+ const declarationBlock = sanitizeCss(`{ ${cssClasses.join(" !important; ")} !important; }`);
1267
+ return `.${cssClass} ${element} ${declarationBlock}`;
1268
+ }, "cssImportantStyles");
1269
+ var createCssStyles = /* @__PURE__ */ __name((config, classDefs = /* @__PURE__ */ new Map) => {
1270
+ const cssStyles = new CSSStyleSheet;
1271
+ if (config.fontFamily !== undefined) {
1272
+ cssStyles.insertRule(`:root { --mermaid-font-family: ${config.fontFamily}}`, cssStyles.cssRules.length);
1273
+ }
1274
+ if (config.altFontFamily !== undefined) {
1275
+ cssStyles.insertRule(`:root { --mermaid-alt-font-family: ${config.altFontFamily}}`, cssStyles.cssRules.length);
1276
+ }
1277
+ if (classDefs instanceof Map) {
1278
+ const htmlLabels = getEffectiveHtmlLabels(config);
1279
+ const cssHtmlElements = ["> *", "span"];
1280
+ const cssShapeElements = ["rect", "polygon", "ellipse", "circle", "path"];
1281
+ const cssElements = htmlLabels ? cssHtmlElements : cssShapeElements;
1282
+ classDefs.forEach((styleClassDef) => {
1283
+ if (!isEmpty(styleClassDef.styles)) {
1284
+ cssElements.forEach((cssElement) => {
1285
+ cssStyles.insertRule(cssImportantStyles(styleClassDef.id, cssElement, styleClassDef.styles), cssStyles.cssRules.length);
1286
+ });
1287
+ }
1288
+ if (!isEmpty(styleClassDef.textStyles)) {
1289
+ cssStyles.insertRule(cssImportantStyles(styleClassDef.id, "tspan", (styleClassDef?.textStyles || []).map((s) => s.replace("color", "fill"))), cssStyles.cssRules.length);
1290
+ }
1291
+ });
1292
+ }
1293
+ let cssString = "";
1294
+ if (config.themeCSS !== undefined) {
1295
+ if (typeof cssStyles.replaceSync === "function") {
1296
+ const themeCssStyleSheet = new CSSStyleSheet;
1297
+ themeCssStyleSheet.replaceSync(config.themeCSS);
1298
+ cssString = cssStyleSheetToString(themeCssStyleSheet) + `
1299
+ `;
1300
+ } else {
1301
+ cssString += `${config.themeCSS}
1302
+ `;
1303
+ }
1304
+ }
1305
+ return cssString + cssStyleSheetToString(cssStyles);
1306
+ }, "createCssStyles");
1307
+ var compileCSS = /* @__PURE__ */ __name((namespace, css) => {
1308
+ return serialize(compile(`${namespace}{${css}}`), middleware([
1309
+ /* @__PURE__ */ __name(function addNamespace(element, _index, _children, _callback) {
1310
+ if (element.type === "rule" && Array.isArray(element.props)) {
1311
+ if (element.parent && element.parent.type === KEYFRAMES) {
1312
+ return;
1313
+ }
1314
+ element.props = element.props.map((prop) => {
1315
+ if (prop === namespace && Array.isArray(element.children) && element.children.every((child) => {
1316
+ if (child.type !== "decl") {
1317
+ return false;
1318
+ }
1319
+ const allowedProps = /* @__PURE__ */ new Set([
1320
+ "font-family",
1321
+ "font-size",
1322
+ "fill"
1323
+ ]);
1324
+ return allowedProps.has(child.props);
1325
+ })) {
1326
+ return prop;
1327
+ }
1328
+ const alreadyNamespaced = (prop.startsWith(`${namespace} `) || prop.startsWith(`${namespace}>`)) && !prop.startsWith(`${namespace} ||`);
1329
+ if (!alreadyNamespaced) {
1330
+ return `${namespace} ${prop}`;
1331
+ }
1332
+ return prop;
1333
+ });
1334
+ } else if (element.type.startsWith("@")) {
1335
+ const nestedAtRules = [
1336
+ MEDIA,
1337
+ SUPPORTS,
1338
+ LAYER,
1339
+ SCOPE,
1340
+ "@container",
1341
+ "@starting-style"
1342
+ ];
1343
+ const allowedAtRules = [
1344
+ ...nestedAtRules,
1345
+ KEYFRAMES
1346
+ ];
1347
+ if (!allowedAtRules.includes(element.type)) {
1348
+ log.warn(`Removing unsupported at-rule ${element.type} from CSS`);
1349
+ element.type = COMMENT;
1350
+ }
1351
+ }
1352
+ }, "addNamespace"),
1353
+ stringify
1354
+ ]));
1355
+ }, "compileCSS");
1356
+ var createUserStyles = /* @__PURE__ */ __name((config, graphType, classDefs, svgId) => {
1357
+ const userCSSstyles = createCssStyles(config, classDefs);
1358
+ const allStyles = styles_default(graphType, userCSSstyles, { ...config.themeVariables, theme: config.theme, look: config.look }, svgId);
1359
+ return compileCSS(svgId, allStyles);
1360
+ }, "createUserStyles");
1361
+ var cleanUpSvgCode = /* @__PURE__ */ __name((svgCode = "", inSandboxMode, useArrowMarkerUrls) => {
1362
+ let cleanedUpSvg = svgCode;
1363
+ if (!useArrowMarkerUrls && !inSandboxMode) {
1364
+ cleanedUpSvg = cleanedUpSvg.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g, 'marker-end="url(#');
1365
+ }
1366
+ cleanedUpSvg = decodeEntities(cleanedUpSvg);
1367
+ cleanedUpSvg = cleanedUpSvg.replace(/<br>/g, "<br/>");
1368
+ return cleanedUpSvg;
1369
+ }, "cleanUpSvgCode");
1370
+ var putIntoIFrame = /* @__PURE__ */ __name((svgCode = "", svgElement) => {
1371
+ const height = svgElement?.viewBox?.baseVal?.height ? svgElement.viewBox.baseVal.height + "px" : IFRAME_HEIGHT;
1372
+ const base64encodedSrc = toBase64(`<body style="${IFRAME_BODY_STYLE}">${svgCode}</body>`);
1373
+ return `<iframe style="width:${IFRAME_WIDTH};height:${height};${IFRAME_STYLES}" src="data:text/html;charset=UTF-8;base64,${base64encodedSrc}" sandbox="${IFRAME_SANDBOX_OPTS}">
1374
+ ${IFRAME_NOT_SUPPORTED_MSG}
1375
+ </iframe>`;
1376
+ }, "putIntoIFrame");
1377
+ var appendDivSvgG = /* @__PURE__ */ __name((parentRoot, id39, enclosingDivId, divStyle, svgXlink) => {
1378
+ const enclosingDiv = parentRoot.append("div");
1379
+ enclosingDiv.attr("id", enclosingDivId);
1380
+ if (divStyle) {
1381
+ enclosingDiv.attr("style", divStyle);
1382
+ }
1383
+ const svgNode = enclosingDiv.append("svg").attr("id", id39).attr("width", "100%").attr("xmlns", XMLNS_SVG_STD);
1384
+ if (svgXlink) {
1385
+ svgNode.attr("xmlns:xlink", svgXlink);
1386
+ }
1387
+ svgNode.append("g");
1388
+ return parentRoot;
1389
+ }, "appendDivSvgG");
1390
+ function sandboxedIframe(parentNode, iFrameId) {
1391
+ return parentNode.append("iframe").attr("id", iFrameId).attr("style", "width: 100%; height: 100%;").attr("sandbox", "");
1392
+ }
1393
+ __name(sandboxedIframe, "sandboxedIframe");
1394
+ var removeExistingElements = /* @__PURE__ */ __name((doc, id39, divId, iFrameId) => {
1395
+ doc.getElementById(id39)?.remove();
1396
+ doc.getElementById(divId)?.remove();
1397
+ doc.getElementById(iFrameId)?.remove();
1398
+ }, "removeExistingElements");
1399
+ var render = /* @__PURE__ */ __name(async function(id39, text, svgContainingElement) {
1400
+ addDiagrams();
1401
+ const processed = processAndSetConfigs(text);
1402
+ text = processed.code;
1403
+ const config = getConfig();
1404
+ log.debug(config);
1405
+ if (text.length > (config?.maxTextSize ?? MAX_TEXTLENGTH)) {
1406
+ text = MAX_TEXTLENGTH_EXCEEDED_MSG;
1407
+ }
1408
+ const idSelector = `#${id39}`;
1409
+ const iFrameID = "i" + id39;
1410
+ const iFrameID_selector = "#" + iFrameID;
1411
+ const enclosingDivID = "d" + id39;
1412
+ const enclosingDivID_selector = "#" + enclosingDivID;
1413
+ const removeTempElements = /* @__PURE__ */ __name(() => {
1414
+ const tmpElementSelector = isSandboxed ? iFrameID_selector : enclosingDivID_selector;
1415
+ const node2 = select_default(tmpElementSelector).node();
1416
+ if (node2 && "remove" in node2) {
1417
+ node2.remove();
1418
+ }
1419
+ }, "removeTempElements");
1420
+ let root = select_default(document.body);
1421
+ const isSandboxed = config.securityLevel === SECURITY_LVL_SANDBOX;
1422
+ const isLooseSecurityLevel = config.securityLevel === SECURITY_LVL_LOOSE;
1423
+ const fontFamily = config.fontFamily;
1424
+ if (svgContainingElement !== undefined) {
1425
+ if (svgContainingElement) {
1426
+ svgContainingElement.innerHTML = "";
1427
+ }
1428
+ if (isSandboxed) {
1429
+ const iframe = sandboxedIframe(select_default(svgContainingElement), iFrameID);
1430
+ root = select_default(iframe.nodes()[0].contentDocument.body);
1431
+ root.node().style.margin = "0";
1432
+ } else {
1433
+ root = select_default(svgContainingElement);
1434
+ }
1435
+ appendDivSvgG(root, id39, enclosingDivID, `font-family: ${fontFamily}`, XMLNS_XLINK_STD);
1436
+ } else {
1437
+ removeExistingElements(document, id39, enclosingDivID, iFrameID);
1438
+ if (isSandboxed) {
1439
+ const iframe = sandboxedIframe(select_default(document.body), iFrameID);
1440
+ root = select_default(iframe.nodes()[0].contentDocument.body);
1441
+ root.node().style.margin = "0";
1442
+ } else {
1443
+ root = select_default("body");
1444
+ }
1445
+ appendDivSvgG(root, id39, enclosingDivID);
1446
+ }
1447
+ let diag;
1448
+ let parseEncounteredException;
1449
+ try {
1450
+ diag = await Diagram.fromText(text, { title: processed.title });
1451
+ } catch (error) {
1452
+ if (config.suppressErrorRendering) {
1453
+ removeTempElements();
1454
+ throw error;
1455
+ }
1456
+ diag = await Diagram.fromText("error");
1457
+ parseEncounteredException = error;
1458
+ }
1459
+ const element = root.select(enclosingDivID_selector).node();
1460
+ const diagramType = diag.type;
1461
+ const svg = element.firstChild;
1462
+ const firstChild = svg.firstChild;
1463
+ const diagramClassDefs = diag.renderer.getClasses?.(text, diag);
1464
+ const rules = createUserStyles(config, diagramType, diagramClassDefs, idSelector);
1465
+ const style1 = document.createElement("style");
1466
+ style1.innerHTML = rules;
1467
+ svg.insertBefore(style1, firstChild);
1468
+ try {
1469
+ await diag.renderer.draw(text, id39, "11.16.1", diag);
1470
+ } catch (e) {
1471
+ if (config.suppressErrorRendering) {
1472
+ removeTempElements();
1473
+ } else {
1474
+ errorRenderer_default.draw(text, id39, "11.16.1");
1475
+ }
1476
+ throw e;
1477
+ }
1478
+ const svgNode = root.select(`${enclosingDivID_selector} svg`);
1479
+ const a11yTitle = diag.db.getAccTitle?.();
1480
+ const a11yDescr = diag.db.getAccDescription?.();
1481
+ addA11yInfo(diagramType, svgNode, a11yTitle, a11yDescr);
1482
+ root.select(`[id="${id39}"]`).selectAll("foreignobject > *").attr("xmlns", XMLNS_XHTML_STD);
1483
+ let svgCode = root.select(enclosingDivID_selector).node().innerHTML;
1484
+ log.debug("config.arrowMarkerAbsolute", config.arrowMarkerAbsolute);
1485
+ svgCode = cleanUpSvgCode(svgCode, isSandboxed, evaluate(config.arrowMarkerAbsolute));
1486
+ if (isSandboxed) {
1487
+ const svgEl = root.select(enclosingDivID_selector + " svg").node();
1488
+ svgCode = putIntoIFrame(svgCode, svgEl);
1489
+ } else if (!isLooseSecurityLevel) {
1490
+ svgCode = dompurify_shim_default.sanitize(svgCode, {
1491
+ ADD_TAGS: DOMPURIFY_TAGS,
1492
+ ADD_ATTR: DOMPURIFY_ATTR,
1493
+ HTML_INTEGRATION_POINTS: { foreignobject: true }
1494
+ });
1495
+ }
1496
+ attachFunctions();
1497
+ if (parseEncounteredException) {
1498
+ throw parseEncounteredException;
1499
+ }
1500
+ removeTempElements();
1501
+ return {
1502
+ diagramType,
1503
+ svg: svgCode,
1504
+ bindFunctions: diag.db.bindFunctions
1505
+ };
1506
+ }, "render");
1507
+ function initialize(userOptions = {}) {
1508
+ const options = assignWithDepth_default({}, userOptions);
1509
+ if (options?.fontFamily && !options.themeVariables?.fontFamily) {
1510
+ if (!options.themeVariables) {
1511
+ options.themeVariables = {};
1512
+ }
1513
+ options.themeVariables.fontFamily = options.fontFamily;
1514
+ }
1515
+ saveConfigFromInitialize(options);
1516
+ if (options?.theme && options.theme in themes_default) {
1517
+ options.themeVariables = themes_default[options.theme].getThemeVariables(options.themeVariables);
1518
+ } else if (options) {
1519
+ options.themeVariables = themes_default.default.getThemeVariables(options.themeVariables);
1520
+ }
1521
+ const config = typeof options === "object" ? setSiteConfig(options) : getSiteConfig();
1522
+ setLogLevel(config.logLevel);
1523
+ addDiagrams();
1524
+ }
1525
+ __name(initialize, "initialize");
1526
+ var getDiagramFromText = /* @__PURE__ */ __name((text, metadata = {}) => {
1527
+ const { code } = preprocessDiagram(text);
1528
+ return Diagram.fromText(code, metadata);
1529
+ }, "getDiagramFromText");
1530
+ function addA11yInfo(diagramType, svgNode, a11yTitle, a11yDescr) {
1531
+ setA11yDiagramInfo(svgNode, diagramType);
1532
+ addSVGa11yTitleDescription(svgNode, a11yTitle, a11yDescr, svgNode.attr("id"));
1533
+ }
1534
+ __name(addA11yInfo, "addA11yInfo");
1535
+ var mermaidAPI = Object.freeze({
1536
+ render,
1537
+ parse: parse2,
1538
+ getDiagramFromText,
1539
+ initialize,
1540
+ getConfig,
1541
+ setConfig,
1542
+ getSiteConfig,
1543
+ updateSiteConfig,
1544
+ reset: /* @__PURE__ */ __name(() => {
1545
+ reset();
1546
+ }, "reset"),
1547
+ globalReset: /* @__PURE__ */ __name(() => {
1548
+ reset(defaultConfig);
1549
+ }, "globalReset"),
1550
+ defaultConfig
1551
+ });
1552
+ setLogLevel(getConfig().logLevel);
1553
+ reset(getConfig());
1554
+ var handleError = /* @__PURE__ */ __name((error, errors, parseError) => {
1555
+ log.warn(error);
1556
+ if (isDetailedError(error)) {
1557
+ if (parseError) {
1558
+ parseError(error.str, error.hash);
1559
+ }
1560
+ errors.push({ ...error, message: error.str, error });
1561
+ } else {
1562
+ if (parseError) {
1563
+ parseError(error);
1564
+ }
1565
+ if (error instanceof Error) {
1566
+ errors.push({
1567
+ str: error.message,
1568
+ message: error.message,
1569
+ hash: error.name,
1570
+ error
1571
+ });
1572
+ }
1573
+ }
1574
+ }, "handleError");
1575
+ var run = /* @__PURE__ */ __name(async function(options = {
1576
+ querySelector: ".mermaid"
1577
+ }) {
1578
+ try {
1579
+ await runThrowsErrors(options);
1580
+ } catch (e) {
1581
+ if (isDetailedError(e)) {
1582
+ log.error(e.str);
1583
+ }
1584
+ if (mermaid.parseError) {
1585
+ mermaid.parseError(e);
1586
+ }
1587
+ if (!options.suppressErrors) {
1588
+ log.error("Use the suppressErrors option to suppress these errors");
1589
+ throw e;
1590
+ }
1591
+ }
1592
+ }, "run");
1593
+ var runThrowsErrors = /* @__PURE__ */ __name(async function({ postRenderCallback, querySelector, nodes } = {
1594
+ querySelector: ".mermaid"
1595
+ }) {
1596
+ const conf = mermaidAPI.getConfig();
1597
+ log.debug(`${!postRenderCallback ? "No " : ""}Callback function found`);
1598
+ let nodesToProcess;
1599
+ if (nodes) {
1600
+ nodesToProcess = nodes;
1601
+ } else if (querySelector) {
1602
+ nodesToProcess = document.querySelectorAll(querySelector);
1603
+ } else {
1604
+ throw new Error("Nodes and querySelector are both undefined");
1605
+ }
1606
+ log.debug(`Found ${nodesToProcess.length} diagrams`);
1607
+ if (conf?.startOnLoad !== undefined) {
1608
+ log.debug("Start On Load: " + conf?.startOnLoad);
1609
+ mermaidAPI.updateSiteConfig({ startOnLoad: conf?.startOnLoad });
1610
+ }
1611
+ const idGenerator = new utils_default.InitIDGenerator(conf.deterministicIds, conf.deterministicIDSeed);
1612
+ let txt;
1613
+ const errors = [];
1614
+ for (const element of Array.from(nodesToProcess)) {
1615
+ log.info("Rendering diagram: " + element.id);
1616
+ if (element.getAttribute("data-processed")) {
1617
+ continue;
1618
+ }
1619
+ element.setAttribute("data-processed", "true");
1620
+ const id39 = `mermaid-${idGenerator.next()}`;
1621
+ txt = element.innerHTML;
1622
+ txt = dedent(utils_default.entityDecode(txt)).trim().replace(/<br\s*\/?>/gi, "<br/>");
1623
+ const init2 = utils_default.detectInit(txt);
1624
+ if (init2) {
1625
+ log.debug("Detected early reinit: ", init2);
1626
+ }
1627
+ try {
1628
+ const { svg, bindFunctions } = await render2(id39, txt, element);
1629
+ element.innerHTML = svg;
1630
+ if (postRenderCallback) {
1631
+ await postRenderCallback(id39);
1632
+ }
1633
+ if (bindFunctions) {
1634
+ bindFunctions(element);
1635
+ }
1636
+ } catch (error) {
1637
+ handleError(error, errors, mermaid.parseError);
1638
+ }
1639
+ }
1640
+ if (errors.length > 0) {
1641
+ throw errors[0];
1642
+ }
1643
+ }, "runThrowsErrors");
1644
+ var initialize2 = /* @__PURE__ */ __name(function(config) {
1645
+ mermaidAPI.initialize(config);
1646
+ }, "initialize");
1647
+ var init = /* @__PURE__ */ __name(async function(config, nodes, callback) {
1648
+ log.warn("mermaid.init is deprecated. Please use run instead.");
1649
+ if (config) {
1650
+ initialize2(config);
1651
+ }
1652
+ const runOptions = { postRenderCallback: callback, querySelector: ".mermaid" };
1653
+ if (typeof nodes === "string") {
1654
+ runOptions.querySelector = nodes;
1655
+ } else if (nodes) {
1656
+ if (nodes instanceof HTMLElement) {
1657
+ runOptions.nodes = [nodes];
1658
+ } else {
1659
+ runOptions.nodes = nodes;
1660
+ }
1661
+ }
1662
+ await run(runOptions);
1663
+ }, "init");
1664
+ var registerExternalDiagrams = /* @__PURE__ */ __name(async (diagrams, {
1665
+ lazyLoad = true
1666
+ } = {}) => {
1667
+ addDiagrams();
1668
+ registerLazyLoadedDiagrams(...diagrams);
1669
+ if (lazyLoad === false) {
1670
+ await loadRegisteredDiagrams();
1671
+ }
1672
+ }, "registerExternalDiagrams");
1673
+ var contentLoaded = /* @__PURE__ */ __name(function() {
1674
+ if (mermaid.startOnLoad) {
1675
+ const { startOnLoad } = mermaidAPI.getConfig();
1676
+ if (startOnLoad) {
1677
+ mermaid.run().catch((err) => log.error("Mermaid failed to initialize", err));
1678
+ }
1679
+ }
1680
+ }, "contentLoaded");
1681
+ if (typeof document !== "undefined") {
1682
+ window.addEventListener("load", contentLoaded, false);
1683
+ }
1684
+ var setParseErrorHandler = /* @__PURE__ */ __name(function(parseErrorHandler) {
1685
+ mermaid.parseError = parseErrorHandler;
1686
+ }, "setParseErrorHandler");
1687
+ var executionQueue = [];
1688
+ var executionQueueRunning = false;
1689
+ var executeQueue = /* @__PURE__ */ __name(async () => {
1690
+ if (executionQueueRunning) {
1691
+ return;
1692
+ }
1693
+ executionQueueRunning = true;
1694
+ while (executionQueue.length > 0) {
1695
+ const f = executionQueue.shift();
1696
+ if (f) {
1697
+ try {
1698
+ await f();
1699
+ } catch (e) {
1700
+ log.error("Error executing queue", e);
1701
+ }
1702
+ }
1703
+ }
1704
+ executionQueueRunning = false;
1705
+ }, "executeQueue");
1706
+ var parse22 = /* @__PURE__ */ __name(async (text, parseOptions) => {
1707
+ return new Promise((resolve, reject) => {
1708
+ const performCall = /* @__PURE__ */ __name(() => new Promise((res, rej) => {
1709
+ mermaidAPI.parse(text, parseOptions).then((r) => {
1710
+ res(r);
1711
+ resolve(r);
1712
+ }, (e) => {
1713
+ log.error("Error parsing", e);
1714
+ mermaid.parseError?.(e);
1715
+ rej(e);
1716
+ reject(e);
1717
+ });
1718
+ }), "performCall");
1719
+ executionQueue.push(performCall);
1720
+ executeQueue().catch(reject);
1721
+ });
1722
+ }, "parse");
1723
+ var render2 = /* @__PURE__ */ __name((id39, text, container) => {
1724
+ return new Promise((resolve, reject) => {
1725
+ const performCall = /* @__PURE__ */ __name(() => new Promise((res, rej) => {
1726
+ mermaidAPI.render(id39, text, container).then((r) => {
1727
+ res(r);
1728
+ resolve(r);
1729
+ }, (e) => {
1730
+ log.error("Error parsing", e);
1731
+ mermaid.parseError?.(e);
1732
+ rej(e);
1733
+ reject(e);
1734
+ });
1735
+ }), "performCall");
1736
+ executionQueue.push(performCall);
1737
+ executeQueue().catch(reject);
1738
+ });
1739
+ }, "render");
1740
+ var getRegisteredDiagramsMetadata = /* @__PURE__ */ __name(() => {
1741
+ return Object.keys(detectors).map((id39) => ({
1742
+ id: id39
1743
+ }));
1744
+ }, "getRegisteredDiagramsMetadata");
1745
+ var mermaid = {
1746
+ startOnLoad: true,
1747
+ mermaidAPI,
1748
+ parse: parse22,
1749
+ render: render2,
1750
+ init,
1751
+ run,
1752
+ registerExternalDiagrams,
1753
+ registerLayoutLoaders,
1754
+ initialize: initialize2,
1755
+ parseError: undefined,
1756
+ contentLoaded,
1757
+ setParseErrorHandler,
1758
+ detectType,
1759
+ registerIconPacks,
1760
+ getRegisteredDiagramsMetadata
1761
+ };
1762
+ var mermaid_default = mermaid;
1763
+ /*! Check if previously processed */
1764
+ /*!
1765
+ * Wait for document loaded before starting the execution
1766
+ */
1767
+
1768
+ // src/gallery-web/frame/renderers/mermaid.ts
1769
+ var initialized = false;
1770
+ function mermaidInitializeConfig(theme) {
1771
+ return {
1772
+ startOnLoad: false,
1773
+ securityLevel: "loose",
1774
+ suppressErrorRendering: true,
1775
+ theme: theme === "dark" ? "dark" : "default",
1776
+ darkMode: theme === "dark",
1777
+ htmlLabels: false,
1778
+ flowchart: { htmlLabels: false },
1779
+ class: { htmlLabels: false }
1780
+ };
1781
+ }
1782
+ function ensureMermaidInitialized(theme) {
1783
+ if (initialized)
1784
+ return;
1785
+ initialized = true;
1786
+ mermaid_default.initialize(mermaidInitializeConfig(theme));
1787
+ }
1788
+ var renderCounter = 0;
1789
+ async function renderMermaidInto(container, source, theme) {
1790
+ ensureMermaidInitialized(theme);
1791
+ renderCounter += 1;
1792
+ const id39 = `facet-mermaid-${renderCounter}-${crypto.randomUUID()}`;
1793
+ let svg;
1794
+ try {
1795
+ const result = await mermaid_default.render(id39, source);
1796
+ svg = result.svg;
1797
+ } catch (error) {
1798
+ const message = error instanceof Error ? error.message : String(error);
1799
+ throw new FacetRenderError(`mermaid render failed: ${message}`, "mermaid_render_error");
1800
+ } finally {
1801
+ document.getElementById(`d${id39}`)?.remove();
1802
+ }
1803
+ await importSanitizedSvgText(container, svg, { marker: "graph" });
1804
+ restoreNaturalSize(container.lastElementChild);
1805
+ }
1806
+ function restoreNaturalSize(el) {
1807
+ if (el === null || el.tagName.toLowerCase() !== "svg")
1808
+ return;
1809
+ const viewBox = el.getAttribute("viewBox");
1810
+ if (viewBox === null)
1811
+ return;
1812
+ const parts = viewBox.trim().split(/[\s,]+/).map(Number);
1813
+ const width = parts[2];
1814
+ if (parts.length !== 4 || width === undefined || !Number.isFinite(width) || width <= 0) {
1815
+ return;
1816
+ }
1817
+ const svg = el;
1818
+ svg.style.width = `${Math.ceil(width)}px`;
1819
+ svg.style.maxWidth = "none";
1820
+ svg.style.height = "auto";
1821
+ }
1822
+ async function renderMermaidDocument(ctx, bytes) {
1823
+ await renderMermaidInto(ctx.container, decodeArtifactBytes(bytes), ctx.theme);
1824
+ }
1825
+
1826
+ export { mermaidInitializeConfig, renderMermaidInto, renderMermaidDocument };