@inkeep/open-knowledge 0.38.0-beta.9 → 0.38.1
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.
- package/dist/THIRD_PARTY_NOTICES.md +7 -6
- package/dist/{acp-harness-probe-BXgvrzfd.mjs → acp-harness-probe-BiIP2ma7.mjs} +2 -2
- package/dist/assets/skills/discovery/SKILL.md +1 -1
- package/dist/assets/skills/project/SKILL.md +1 -1
- package/dist/assets/skills/write-skill/SKILL.md +1 -1
- package/dist/cli.mjs +62 -64
- package/dist/constants-C66Cr63I.mjs +2 -0
- package/dist/git-handle-DluCIpMR.mjs +1 -0
- package/dist/{git-handle-B30Z3S49.mjs → git-handle-DnLoe9hy.mjs} +2 -2
- package/dist/index.mjs +1 -1
- package/dist/init-Bos4UGuO.mjs +1 -0
- package/dist/{init-CzBUWeSe.mjs → init-CZem0BSM.mjs} +5 -5
- package/dist/{launch-json-removal-4bMDpY61.mjs → launch-json-removal-DhJlKIWu.mjs} +2 -2
- package/dist/loader-BZ4AallX.mjs +1 -0
- package/dist/{loader-DigniDF3.mjs → loader-Bi9_RmKT.mjs} +2 -2
- package/dist/md-manager-DtA0LK6p.mjs +2 -0
- package/dist/{open-browser-D6esrKJP.mjs → open-browser-Bbzq7Z7d.mjs} +2 -2
- package/dist/parse-worker.mjs +1 -1
- package/dist/preview-DJVI5fyI.mjs +1 -0
- package/dist/{preview-bPeVpuMS.mjs → preview-ofV-XWka.mjs} +2 -2
- package/dist/public/assets/{ActivityModeContent-BMPZl3tb.js → ActivityModeContent-CQTRie_S.js} +1 -1
- package/dist/public/assets/{AgentDiffPane-Cw5qpBlW.js → AgentDiffPane-ZsuLVO9W.js} +1 -1
- package/dist/public/assets/{AgentThreadClientBinder-CBCAdG4p.js → AgentThreadClientBinder-poPjsQXP.js} +1 -1
- package/dist/public/assets/{AppMenubar-hPGBtMtR.js → AppMenubar-DqlpmcU7.js} +1 -1
- package/dist/public/assets/{CodeMirrorPropInput-QvShYcbF.js → CodeMirrorPropInput-DUwQlljh.js} +3 -3
- package/dist/public/assets/{DocumentContext-BvywpAcT.js → DocumentContext-CPZffvoA.js} +2 -2
- package/dist/public/assets/{EnableSyncConfirmDialog-5rWSIoBH.js → EnableSyncConfirmDialog-BfZ_iVD2.js} +1 -1
- package/dist/public/assets/{FeedbackForm-BGZFeizL.js → FeedbackForm-BUn96JmL.js} +1 -1
- package/dist/public/assets/{GraphPanel-CG7ehFyf.js → GraphPanel-BjCltqW1.js} +1 -1
- package/dist/public/assets/{ManagedArtifactProperties-DHph_UjU.js → ManagedArtifactProperties-CHmkRShb.js} +1 -1
- package/dist/public/assets/{McpConsentDialogBody-BEu_w4lu.js → McpConsentDialogBody-B0VkhB1e.js} +1 -1
- package/dist/public/assets/{MermaidDocEditor-CkwmBdaN.js → MermaidDocEditor-cedDjA-A.js} +1 -1
- package/dist/public/assets/PropertyPanel-CpcpWkfS.js +2 -0
- package/dist/public/assets/{ReportBugDialogBody--5aXNg8I.js → ReportBugDialogBody-hPmCfQyc.js} +1 -1
- package/dist/public/assets/{SettingsDialogBody-DjAi_I1t.js → SettingsDialogBody-B6_psJil.js} +1 -1
- package/dist/public/assets/{ShareBranchSwitchDialog-Dz3x9STZ.js → ShareBranchSwitchDialog-GXTPAgND.js} +1 -1
- package/dist/public/assets/{ShareReceiveDialog-B4PVwjNG.js → ShareReceiveDialog-IVAS4xf8.js} +1 -1
- package/dist/public/assets/{ShareReceiveMissDialog-CfmR8h5c.js → ShareReceiveMissDialog-ClkBICGx.js} +1 -1
- package/dist/public/assets/{SkillEditorActions-Dr52b0PZ.js → SkillEditorActions-BEtnBlep.js} +1 -1
- package/dist/public/assets/{SourceEditor-DSyO1lGU.js → SourceEditor-Bp45kdTW.js} +1 -1
- package/dist/public/assets/{TerminalPanel-BpSo4w0_.js → TerminalPanel-CUoZt7C0.js} +1 -1
- package/dist/public/assets/{TerminalSessionsHost-C289EqcI.js → TerminalSessionsHost-CNebjNFj.js} +2 -2
- package/dist/public/assets/{TerminalWindowApp-Bd8MRyRT.js → TerminalWindowApp-B6bT25Jw.js} +1 -1
- package/dist/public/assets/{ThreadView-DNyNBhL-.js → ThreadView-CmIHLGuV.js} +1 -1
- package/dist/public/assets/{TimelineDiffPane-oLpdDeEi.js → TimelineDiffPane-DffKOwf1.js} +1 -1
- package/dist/public/assets/{abnfDiagram-VRR7QNED-D9F9DXsr.js → abnfDiagram-VRR7QNED-VSTZcs2U.js} +1 -1
- package/dist/public/assets/{agent-diff-store-Bd0NDaYd.js → agent-diff-store-D6N0WX_4.js} +1 -1
- package/dist/public/assets/{agent-visibility-bo7-lQPw.js → agent-visibility-Z2AQQ5Ce.js} +1 -1
- package/dist/public/assets/architecture-TIHT7OUA-ei5hsjAY.js +1 -0
- package/dist/public/assets/{architectureDiagram-ZJ3FMSHR-DfsVDv0h.js → architectureDiagram-ZJ3FMSHR-CdM-QQxh.js} +1 -1
- package/dist/public/assets/{auth-state-cache-DPxIwzLQ.js → auth-state-cache-CfU3gJ3i.js} +1 -1
- package/dist/public/assets/{chunk-5FCAYU7R-BZbSx9vA.js → chunk-5FCAYU7R-NiUcHUPk.js} +1 -1
- package/dist/public/assets/{chunk-5HE753X5-B2Flc7i4.js → chunk-5HE753X5-Dg-RP8eS.js} +1 -1
- package/dist/public/assets/{chunk-5JV3BV7I-B6P7lOib.js → chunk-5JV3BV7I-B4O-mi81.js} +1 -1
- package/dist/public/assets/{chunk-5TONJI2A-Bx2IxKM5.js → chunk-5TONJI2A-0kIjpsBw.js} +1 -1
- package/dist/public/assets/{chunk-BIQX33UG-BK09YW6f.js → chunk-BIQX33UG-D48fi9B_.js} +1 -1
- package/dist/public/assets/{chunk-CQNSW5MT-BAtlNSBX.js → chunk-CQNSW5MT-v0U-WvYg.js} +1 -1
- package/dist/public/assets/{chunk-CYSBUYHQ-D8hsDORv.js → chunk-CYSBUYHQ-DxqLAiLc.js} +1 -1
- package/dist/public/assets/{chunk-EMLP6XTP-ChQSYJxh.js → chunk-EMLP6XTP-CJ9U9-wH.js} +1 -1
- package/dist/public/assets/{chunk-JG7HCLWE-Biog_J3i.js → chunk-JG7HCLWE-C-1xmmk6.js} +1 -1
- package/dist/public/assets/{chunk-MOZMSUNE-CPb1eEls.js → chunk-MOZMSUNE-C1Vt9ku6.js} +1 -1
- package/dist/public/assets/{chunk-OSBZ3O6U-DLOl9lpV.js → chunk-OSBZ3O6U-C6W744Of.js} +1 -1
- package/dist/public/assets/{chunk-QBLGF6JB-CXHeFNVR.js → chunk-QBLGF6JB-gEqmaH-L.js} +1 -1
- package/dist/public/assets/{chunk-R7FJI6CG-C16CHt3a.js → chunk-R7FJI6CG-BDAk393G.js} +1 -1
- package/dist/public/assets/{chunk-U6XO7XAA-DbjPtJON.js → chunk-U6XO7XAA-BrFJStxD.js} +1 -1
- package/dist/public/assets/{chunk-YOTPTUD7-CI44npHy.js → chunk-YOTPTUD7-D0J4uIcv.js} +1 -1
- package/dist/public/assets/client-version-BBhtdyiC.js +1 -0
- package/dist/public/assets/{config-provider-DEma7e0E.js → config-provider-DstRVgzH.js} +1 -1
- package/dist/public/assets/cynefin-VYW2F7L2-CSnwYRoV.js +1 -0
- package/dist/public/assets/{cynefinDiagram-TSTJHNR4-BerNcsRY.js → cynefinDiagram-TSTJHNR4-BSgy8cxo.js} +1 -1
- package/dist/public/assets/{diagram-FQU43EPY-Bn3pI3fo.js → diagram-FQU43EPY-CMvIHgbq.js} +1 -1
- package/dist/public/assets/{diagram-G47NLZAW-DlmHXzE8.js → diagram-G47NLZAW-fKFf9jF_.js} +1 -1
- package/dist/public/assets/{diagram-NH7WQ7WH-DSU5C3aY.js → diagram-NH7WQ7WH-B7-_M2pB.js} +1 -1
- package/dist/public/assets/{diagram-OA4YK3LP-BxczHUUr.js → diagram-OA4YK3LP-DZtbNsi6.js} +1 -1
- package/dist/public/assets/{diagram-WEI45ONY-9RfHZ21T.js → diagram-WEI45ONY-CCuX-lrB.js} +1 -1
- package/dist/public/assets/dist-BS_gC2L8.js +124 -0
- package/dist/public/assets/{dist-BmKvzgDR.js → dist-DKsN2Ojq.js} +1 -1
- package/dist/public/assets/{dist-df-v6kvy.js → dist-Vm1kQiqo.js} +64 -64
- package/dist/public/assets/{doc-hash-NyLrtNo2.js → doc-hash-B8kD24Kw.js} +1 -1
- package/dist/public/assets/{documents-events-BHJB8gGz.js → documents-events-DQ6Iario.js} +1 -1
- package/dist/public/assets/{ebnfDiagram-CCIWWBDH-D2xzvzqw.js → ebnfDiagram-CCIWWBDH-lTULSp5K.js} +1 -1
- package/dist/public/assets/eventmodeling-45OFAUF4-DaV8ZCTn.js +1 -0
- package/dist/public/assets/{file-tree-adapter-BnZwo5Ls.js → file-tree-adapter-eftmn56d.js} +1 -1
- package/dist/public/assets/gitGraph-TEB2WS4Q-P9_tpoZt.js +1 -0
- package/dist/public/assets/{gitGraphDiagram-IHSO6WYX-LRtYXzVh.js → gitGraphDiagram-IHSO6WYX-DST3agGX.js} +1 -1
- package/dist/public/assets/index-BgQgA_cx.js +1995 -0
- package/dist/public/assets/index-POPidK7Y.css +1 -0
- package/dist/public/assets/info-DKCQHKI2-DJJ8FtaQ.js +1 -0
- package/dist/public/assets/{infoDiagram-FWYZ7A6U-CoQbECuU.js → infoDiagram-FWYZ7A6U-Cj1rH5Ql.js} +1 -1
- package/dist/public/assets/{keyboard-shortcuts-Ctc7xams.js → keyboard-shortcuts-DZ9kTSZ4.js} +1 -1
- package/dist/public/assets/{lint-config-client-BwIg_Zty.js → lint-config-client-Bg-6mquJ.js} +1 -1
- package/dist/public/assets/{mermaid-parser.core-3Xu6H-xr.js → mermaid-parser.core-BO-Jr815.js} +2 -2
- package/dist/public/assets/{mermaid.core-BgfUsmdk.js → mermaid.core-BQ2yyMHt.js} +3 -3
- package/dist/public/assets/{navigation-targets-D1rdXyAI.js → navigation-targets-4J3F85tT.js} +1 -1
- package/dist/public/assets/{open-managed-artifact-tab-MjzvjrV8.js → open-managed-artifact-tab-ze9HkqWn.js} +1 -1
- package/dist/public/assets/packet-7NZHBO7P-DOwsFu9x.js +1 -0
- package/dist/public/assets/{pegDiagram-2B236MQR-BWoigFVh.js → pegDiagram-2B236MQR-VQ3qdS5Z.js} +1 -1
- package/dist/public/assets/{pending-receive-nav-store-D7HSeXpy.js → pending-receive-nav-store-CVDTioM4.js} +1 -1
- package/dist/public/assets/pie-RZYD4A2V-DEV7c1Ne.js +1 -0
- package/dist/public/assets/{pieDiagram-ENE6RG2P-CkC6m5hO.js → pieDiagram-ENE6RG2P-B5fNaqzS.js} +1 -1
- package/dist/public/assets/{prop-types-C0wWXvTx.js → prop-types-B0l6ZN6O.js} +1 -1
- package/dist/public/assets/radar-I7S5WNFK-B607lrnK.js +1 -0
- package/dist/public/assets/railroad-3IZDKUUU-CRgAnFFT.js +1 -0
- package/dist/public/assets/railroad-abnf-AHOZXSZD-DulrY9_U.js +1 -0
- package/dist/public/assets/railroad-ebnf-EBAXGLYW-D8e0kEYb.js +1 -0
- package/dist/public/assets/railroad-peg-LSFZ7HO6-C2iIAAkK.js +1 -0
- package/dist/public/assets/{railroadDiagram-RFXS5EU6-DFdEG7eg.js → railroadDiagram-RFXS5EU6-hi-XN2Rm.js} +1 -1
- package/dist/public/assets/{receive-store-B3ygF-LA.js → receive-store-jfaprLyZ.js} +1 -1
- package/dist/public/assets/{selection-context-t5daNj99.js → selection-context-BpEA0WhV.js} +1 -1
- package/dist/public/assets/{skill-actions-DeZSwOo7.js → skill-actions-s_ATobEI.js} +1 -1
- package/dist/public/assets/{skills-api-vt4KnCX6.js → skills-api-CYoD9FQt.js} +1 -1
- package/dist/public/assets/{src-BS_Yyi8K.js → src-B-pNk3y3.js} +1 -1
- package/dist/public/assets/{target-navigation-intent-DNrmu8Sx.js → target-navigation-intent-95GTKrco.js} +1 -1
- package/dist/public/assets/{telemetry-impl-DEJSJ5rS.js → telemetry-impl-BgQUPJ0t.js} +1 -1
- package/dist/public/assets/{telemetry-startup-Bvr_iW-w.js → telemetry-startup-DcvNN2rn.js} +1 -1
- package/dist/public/assets/{terminal-launch-events-vDhBoD8w.js → terminal-launch-events-D0NkBM4g.js} +1 -1
- package/dist/public/assets/{terminal-telemetry-D1lMQO11.js → terminal-telemetry-DxZXlrf4.js} +1 -1
- package/dist/public/assets/treeView-QDETBFTQ-DIWn4fzK.js +1 -0
- package/dist/public/assets/treemap-6X3UGDF4-WPqEPk4A.js +1 -0
- package/dist/public/assets/{typing-burst-detector-GlRUPS8u.js → typing-burst-detector-CI_4wux0.js} +1 -1
- package/dist/public/assets/{use-activity-panel-Dq1IdrW7.js → use-activity-panel-DoU5dDI7.js} +1 -1
- package/dist/public/assets/{use-apply-config-color-theme-R1RZkk5a.js → use-apply-config-color-theme-DBdIMwiU.js} +1 -1
- package/dist/public/assets/{use-collab-url-B-LUA0g9.js → use-collab-url-CwAStsIj.js} +1 -1
- package/dist/public/assets/{use-live-xterm-theme-DW54zfIk.js → use-live-xterm-theme-oqXGh0AM.js} +1 -1
- package/dist/public/assets/{use-terminal-enabled-CqEC-KDC.js → use-terminal-enabled-B1QnDzPO.js} +1 -1
- package/dist/public/assets/{use-timeline-entry-diff-CHEjXPj0.js → use-timeline-entry-diff-C_hkFzJg.js} +2 -2
- package/dist/public/assets/{use-workspace-0T1cdRp3.js → use-workspace-DyAcZSjY.js} +1 -1
- package/dist/public/assets/wardley-OPB4EBWU-CFdyGX48.js +1 -0
- package/dist/public/assets/{wardleyDiagram-EHGQE667-C30zq5TO.js → wardleyDiagram-EHGQE667-ZOtSnSGU.js} +1 -1
- package/dist/public/assets/{workspace-paths-nkXut9sM.js → workspace-paths-B_ozK4P-.js} +1 -1
- package/dist/public/assets/{zod-BmQcPlGk.js → zod-CCGVCn6n.js} +1 -1
- package/dist/public/index.html +36 -36
- package/dist/{repair-launch-json-BXp_E5e-.mjs → repair-launch-json-BGucssnq.mjs} +2 -2
- package/dist/{repair-mcp-configs-CecsGNcz.mjs → repair-mcp-configs-DmRQJ8ZA.mjs} +2 -2
- package/dist/{repair-skills-B7V4_S1t.mjs → repair-skills-DaVaOiQC.mjs} +2 -2
- package/dist/repair-skills-vw_jVt0o.mjs +1 -0
- package/dist/server-lock-DZZ64TDY.mjs +1 -0
- package/dist/{server-lock-CSEWSPO0.mjs → server-lock-DzWMWbLN.mjs} +2 -2
- package/dist/{src-FuRMJntf.mjs → src-Cwu3lS3D.mjs} +107 -107
- package/dist/{src-BEhsONIX.mjs → src-DJ0-ChPY.mjs} +6 -6
- package/dist/src-DxAg43k_.mjs +3264 -0
- package/dist/{src-DuSq_ZD1.mjs → src-eVRfK1KK.mjs} +1 -1
- package/dist/start-9DwCccQZ.mjs +3 -0
- package/dist/start-CyWHw24I.mjs +1 -0
- package/dist/{write-project-skill-BD-Ei4Cn.mjs → write-project-skill-DtERurRT.mjs} +4 -4
- package/package.json +4 -4
- package/dist/constants-BJqUJSv-.mjs +0 -2
- package/dist/git-handle-RhB108wn.mjs +0 -1
- package/dist/init-4NtP5JU0.mjs +0 -1
- package/dist/loader-BgbJbbJx.mjs +0 -1
- package/dist/md-manager-DqdW_K1F.mjs +0 -2
- package/dist/preview-CoMTeiii.mjs +0 -1
- package/dist/public/assets/PropertyPanel-SSFVfVqt.js +0 -2
- package/dist/public/assets/architecture-TIHT7OUA-B1GVwxkr.js +0 -1
- package/dist/public/assets/client-version-CCRyjBYZ.js +0 -1
- package/dist/public/assets/cynefin-VYW2F7L2-IoPsg8uT.js +0 -1
- package/dist/public/assets/dist-DfKVxirz.js +0 -124
- package/dist/public/assets/eventmodeling-45OFAUF4-Miu5EHpe.js +0 -1
- package/dist/public/assets/gitGraph-TEB2WS4Q-OmjugmYN.js +0 -1
- package/dist/public/assets/index-CJ7E0pG6.css +0 -1
- package/dist/public/assets/index-NnhVM8i9.js +0 -1995
- package/dist/public/assets/info-DKCQHKI2-BNI5cXhn.js +0 -1
- package/dist/public/assets/packet-7NZHBO7P-B_5BB2Lm.js +0 -1
- package/dist/public/assets/pie-RZYD4A2V-DN_XCApP.js +0 -1
- package/dist/public/assets/radar-I7S5WNFK-KdS1Y0nk.js +0 -1
- package/dist/public/assets/railroad-3IZDKUUU-CargXMo2.js +0 -1
- package/dist/public/assets/railroad-abnf-AHOZXSZD-rKz-719h.js +0 -1
- package/dist/public/assets/railroad-ebnf-EBAXGLYW-BwxcIuUm.js +0 -1
- package/dist/public/assets/railroad-peg-LSFZ7HO6-D-qfZOX5.js +0 -1
- package/dist/public/assets/treeView-QDETBFTQ-ocdjjjzR.js +0 -1
- package/dist/public/assets/treemap-6X3UGDF4-PQZ2TLFo.js +0 -1
- package/dist/public/assets/wardley-OPB4EBWU-CAyNEwcQ.js +0 -1
- package/dist/repair-skills-OJT-GLmM.mjs +0 -1
- package/dist/server-lock-BjmrAQDi.mjs +0 -1
- package/dist/src-DBW4MhVj.mjs +0 -3264
- package/dist/start-BLpCv7H7.mjs +0 -3
- package/dist/start-ByI_eq9k.mjs +0 -1
- /package/dist/public/assets/{chunk-KEIR6QF5-dYt3HMDt.js → chunk-KEIR6QF5-CFEoHvxJ.js} +0 -0
- /package/dist/public/assets/{dist-Y35lJRjm.js → dist-BneDw0Gk.js} +0 -0
- /package/dist/public/assets/{panzoom.es-DSQCRJbU.js → panzoom.es-BH0upAOZ.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-CX0MjbSu.js";import{t}from"./src-BlkIpXCO.js";import{D as n,H as r,K as i,U as a,a as o,b as s,c,f as l,v as u,w as d,y as f}from"./chunk-WYO6CB5R-DyzfGKK0.js";import{i as p}from"./chunk-ICXQ74PX-BF1AraUQ.js";import{t as m}from"./chunk-VAUOI2AC-BGyW6aBf.js";import{t as h}from"./chunk-JWPE2WC7-BuX-EugW.js";import{n as g}from"./mermaid-parser.core-
|
|
1
|
+
import{n as e}from"./chunk-Y2CYZVJY-CX0MjbSu.js";import{t}from"./src-BlkIpXCO.js";import{D as n,H as r,K as i,U as a,a as o,b as s,c,f as l,v as u,w as d,y as f}from"./chunk-WYO6CB5R-DyzfGKK0.js";import{i as p}from"./chunk-ICXQ74PX-BF1AraUQ.js";import{t as m}from"./chunk-VAUOI2AC-BGyW6aBf.js";import{t as h}from"./chunk-JWPE2WC7-BuX-EugW.js";import{n as g}from"./mermaid-parser.core-BO-Jr815.js";var _=e(()=>({domains:new Map,transitions:[]}),`createDefaultData`),v=_(),y={getDomains:e(()=>v.domains,`getDomains`),getTransitions:e(()=>v.transitions,`getTransitions`),setDomains:e(e=>{if(e)for(let t of e){let e=t.domain,n=(t.items??[]).map(e=>({label:e.label}));v.domains.set(e,{name:e,items:n})}},`setDomains`),setTransitions:e(e=>{e&&(v.transitions=e.filter(e=>e.from===e.to?(t.warn(`Cynefin: self-loop transition on domain "${e.from}" is not meaningful and will be skipped.`),!1):!0).map(e=>({from:e.from,to:e.to,label:e.label||void 0})))},`setTransitions`),getConfig:e(()=>p({...l.cynefin,...s().cynefin}),`getConfig`),clear:e(()=>{o(),v=_()},`clear`),setAccTitle:a,getAccTitle:f,setDiagramTitle:i,getDiagramTitle:d,getAccDescription:u,setAccDescription:r},b=e(e=>{h(e,y),y.setDomains(e.domains),y.setTransitions(e.transitions)},`populate`),x={parse:e(async e=>{let n=await g(`cynefin`,e);t.debug(n),b(n)},`parse`)};function S(e){let t=e+1831565813|0;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}e(S,`seededRandom`);function C(e){let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);t=(t<<5)-t+r,t|=0}return t}e(C,`hashString`);function w(e,t){return typeof e==`number`&&Number.isFinite(e)&&e!==0?e:C(t)}e(w,`resolveSeed`);function T(e,t,n,r){let i=e/2,a=r??e*.015,o=t/7,s=[];for(let e=0;e<=7;e++){let t=S(n+e*17)*a*2-a;s.push({x:i+t,y:e*o})}let c=`M${s[0].x},${s[0].y}`;for(let e=0;e<s.length-1;e++){let t=s[e],r=s[e+1],i=(t.y+r.y)/2,o=e%2==0?1:-1,l=a*1.5*o*S(n+e*31+7),u=t.x+l,d=i,f=r.x-l;c+=` C${u},${d} ${f},${i} ${r.x},${r.y}`}return c}e(T,`generateFoldPath`);function E(e,t,n,r){let i=t/2,a=r??t*.015,o=e/7,s=[];for(let e=0;e<=7;e++){let t=S(n+e*23)*a*2-a;s.push({x:e*o,y:i+t})}let c=`M${s[0].x},${s[0].y}`;for(let e=0;e<s.length-1;e++){let t=s[e],r=s[e+1],i=(t.x+r.x)/2,o=e%2==0?1:-1,l=a*1.5*o*S(n+e*37+11),u=i,d=t.y+l,f=i,p=r.y-l;c+=` C${u},${d} ${f},${p} ${r.x},${r.y}`}return c}e(E,`generateHorizontalBoundary`);function D(e,t){let n=e/2,r=t*.5,i=t,a=e*.03;return[`M${n},${r}`,`C${n+a},${r+(i-r)*.2}`,`${n-a*1.5},${r+(i-r)*.55}`,`${n+a*.5},${r+(i-r)*.75}`,`C${n-a},${r+(i-r)*.85}`,`${n+a*.3},${r+(i-r)*.95}`,`${n},${i}`].join(` `)}e(D,`generateCliffPath`);function O(e,t,n,r){return[`M${e-n},${t}`,`A${n},${r} 0 1,1 ${e+n},${t}`,`A${n},${r} 0 1,1 ${e-n},${t}`,`Z`].join(` `)}e(O,`generateConfusionPath`);var k={complex:{model:`Probe → Sense → Respond`,practice:`Emergent Practices`},complicated:{model:`Sense → Analyse → Respond`,practice:`Good Practices`},clear:{model:`Sense → Categorise → Respond`,practice:`Best Practices`},chaotic:{model:`Act → Sense → Respond`,practice:`Novel Practices`},confusion:{model:``,practice:`Disorder`}},A=e((e,t)=>{let n=e/2,r=t/2;return{complex:{cx:n/2,cy:r/2,x:0,y:0,w:n,h:r},complicated:{cx:n+n/2,cy:r/2,x:n,y:0,w:n,h:r},chaotic:{cx:n/2,cy:r+r/2,x:0,y:r,w:n,h:r},clear:{cx:n+n/2,cy:r+r/2,x:n,y:r,w:n,h:r},confusion:{cx:n,cy:r,x:n*.7,y:r*.7,w:n*.6,h:r*.6}}},`getDomainLayouts`),j=e(()=>p(n(),s().themeVariables).cynefin,`getCynefinDomainColors`),M=3,N={draw:e((e,n,r,i)=>{let a=i.db,o=a.getDomains(),s=a.getTransitions(),l=a.getDiagramTitle(),u=a.getAccTitle(),d=a.getAccDescription(),f=a.getConfig(),p=j();t.debug(`Rendering Cynefin diagram`);let h=f.width,g=f.height,_=f.padding,v=f.showDomainDescriptions,y=f.boundaryAmplitude,b=h+_*2,x=g+_*2,S={complex:p.complexBg,complicated:p.complicatedBg,clear:p.clearBg,chaotic:p.chaoticBg,confusion:p.confusionBg},C=m(n);c(C,x,b,f.useMaxWidth??!0),C.attr(`viewBox`,`0 0 ${b} ${x}`),u&&C.append(`title`).text(u),d&&C.append(`desc`).text(d);let N=C.append(`g`).attr(`transform`,`translate(${_}, ${_})`),P=A(h,g),F=w(f.seed,n),I=N.append(`g`).attr(`class`,`cynefin-backgrounds`),L=[`complex`,`complicated`,`chaotic`,`clear`];for(let e of L){let t=P[e];I.append(`rect`).attr(`class`,`cynefinDomain`).attr(`x`,t.x).attr(`y`,t.y).attr(`width`,t.w).attr(`height`,t.h).attr(`fill`,S[e]).attr(`fill-opacity`,.4).attr(`stroke`,`none`)}let R=N.append(`g`).attr(`class`,`cynefin-boundaries`);R.append(`path`).attr(`class`,`cynefinBoundary`).attr(`d`,T(h,g,F,y)).attr(`fill`,`none`),R.append(`path`).attr(`class`,`cynefinBoundary`).attr(`d`,E(h,g,F+100,y)).attr(`fill`,`none`),R.append(`path`).attr(`class`,`cynefinCliff`).attr(`d`,D(h,g)).attr(`fill`,`none`);let z=h*.15,B=g*.15;N.append(`path`).attr(`class`,`cynefinConfusion`).attr(`d`,O(h/2,g/2,z,B)).attr(`fill`,S.confusion).attr(`fill-opacity`,.5);let V=N.append(`g`).attr(`class`,`cynefin-labels`);for(let e of L){let t=P[e];V.append(`text`).attr(`class`,`cynefinDomainLabel`).attr(`x`,t.cx).attr(`y`,v?t.cy-30:t.cy).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(e.charAt(0).toUpperCase()+e.slice(1))}if(V.append(`text`).attr(`class`,`cynefinDomainLabel`).attr(`x`,h/2).attr(`y`,v?g/2-10:g/2).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(`Confusion`),v){let e=N.append(`g`).attr(`class`,`cynefin-subtitles`);for(let t of L){let n=P[t],r=k[t];e.append(`text`).attr(`class`,`cynefinSubtitle`).attr(`x`,n.cx).attr(`y`,n.cy-10).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(r.model),e.append(`text`).attr(`class`,`cynefinSubtitle`).attr(`x`,n.cx).attr(`y`,n.cy+5).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(r.practice)}e.append(`text`).attr(`class`,`cynefinSubtitle`).attr(`x`,h/2).attr(`y`,g/2+8).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(k.confusion.practice)}let H=N.append(`g`).attr(`class`,`cynefin-items`);for(let e of[`complex`,`complicated`,`chaotic`,`clear`,`confusion`]){let t=o.get(e);if(!t||t.items.length===0)continue;let n=P[e],r=e===`confusion`,i=t.items,a=0;r&&t.items.length>M&&(a=t.items.length-M,i=t.items.slice(0,M));let s;if(r){let e=v?22:14;s=n.cy+e}else s=n.cy+(v?25:15);if([...i].forEach((t,r)=>{let i=s+r*30,a=H.append(`g`),o=a.append(`text`).attr(`class`,`cynefinItemText`).attr(`x`,0).attr(`y`,26/2).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`central`).text(t.label),c=t.label.length*7,l=o.node();if(l&&typeof l.getBBox==`function`){let e=l.getBBox();e.width>0&&(c=e.width)}let u=c+20,d=n.cx-u/2;a.attr(`transform`,`translate(${d}, ${i})`),a.insert(`rect`,`text`).attr(`class`,`cynefinItem`).attr(`x`,0).attr(`y`,0).attr(`width`,u).attr(`height`,26).attr(`rx`,4).attr(`ry`,4).attr(`fill`,S[e]).attr(`fill-opacity`,.95),o.attr(`x`,u/2).attr(`y`,26/2)}),a>0){let t=s+i.length*30,r=`+${a} more`,o=H.append(`g`),c=o.append(`text`).attr(`class`,`cynefinItemText`).attr(`x`,0).attr(`y`,26/2).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`central`).text(r),l=r.length*7,u=c.node();if(u&&typeof u.getBBox==`function`){let e=u.getBBox();e.width>0&&(l=e.width)}let d=l+20,f=n.cx-d/2;o.attr(`transform`,`translate(${f}, ${t})`),o.insert(`rect`,`text`).attr(`class`,`cynefinItemOverflow`).attr(`x`,0).attr(`y`,0).attr(`width`,d).attr(`height`,26).attr(`rx`,4).attr(`ry`,4).attr(`fill`,S[e]).attr(`fill-opacity`,.6),c.attr(`x`,d/2).attr(`y`,26/2)}}if(s.length>0){let e=C.select(`defs`).empty()?C.append(`defs`):C.select(`defs`),r=`cynefin-arrow-${n}`;e.append(`marker`).attr(`id`,r).attr(`viewBox`,`0 0 10 10`).attr(`refX`,9).attr(`refY`,5).attr(`markerWidth`,6).attr(`markerHeight`,6).attr(`orient`,`auto-start-reverse`).append(`path`).attr(`d`,`M 0 0 L 10 5 L 0 10 z`).attr(`class`,`cynefinArrowHead`);let i=N.append(`g`).attr(`class`,`cynefin-arrows`);s.forEach(e=>{let n=P[e.from],a=P[e.to];if(!n||!a)return;if(e.from===e.to){t.warn(`Cynefin renderer: skipping self-loop on domain "${e.from}"`);return}let o=n.cx,s=n.cy,c=a.cx,l=a.cy,u=(o+c)/2,d=(s+l)/2,f=c-o,p=l-s,m=Math.sqrt(f*f+p*p),h=m*.15,g=-p/m,_=f/m,v=u+g*h,y=d+_*h;i.append(`path`).attr(`class`,`cynefinArrowLine`).attr(`d`,`M${o},${s} Q${v},${y} ${c},${l}`).attr(`fill`,`none`).attr(`marker-end`,`url(#${r})`),e.label&&i.append(`text`).attr(`class`,`cynefinArrowLabel`).attr(`x`,v).attr(`y`,y-6).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`auto`).text(e.label)})}l&&N.append(`text`).attr(`class`,`cynefinTitle`).attr(`x`,h/2).attr(`y`,-_/2).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(l)},`draw`)},P=e(()=>p(n(),s().themeVariables).cynefin,`getCynefinTheme`),F={parser:x,db:y,renderer:N,styles:e(()=>{let e=P();return`
|
|
2
2
|
.cynefinDomain {
|
|
3
3
|
stroke: none;
|
|
4
4
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{T as e}from"./chunk-KEIR6QF5-
|
|
1
|
+
import{T as e}from"./chunk-KEIR6QF5-CFEoHvxJ.js";import{n as t}from"./chunk-Y2CYZVJY-CX0MjbSu.js";import{t as n}from"./src-BlkIpXCO.js";import{H as r,K as i,U as a,Y as o,a as s,b as c,f as l,v as u,w as d,x as f,y as p,z as m}from"./chunk-WYO6CB5R-DyzfGKK0.js";import{C as h}from"./src-DlwJ21NB.js";import{_ as g,i as ee,t as te}from"./chunk-ICXQ74PX-BF1AraUQ.js";import{t as ne}from"./chunk-JWPE2WC7-BuX-EugW.js";import{n as re}from"./mermaid-parser.core-BO-Jr815.js";var _=`position frame`,v=`frame positioned`,y=`position relation`,b=`relation positioned`,ie=t(function(e){n.debug(`options str`,e)},`setOptions`),ae=t(function(){return{}},`getOptions`),oe=t(function(){x(),s()},`clear`);function x(){S={}}t(x,`reset`);var se=l.eventmodeling,ce=t(()=>ee({...se,...c().eventmodeling}),`getConfig`),S={};function C(){let e=le,{ast:t}=S,r=E();if(!t)throw Error(`No data for EventModel`);return t.frames.forEach((i,a)=>{let o=N(i,t.dataEntities,r);e=q(e,{$kind:_,index:a,frame:i,textProps:o});let s;B(i)?(n.debug(`source frame`,i.sourceFrames),s=t.frames.filter(e=>i.sourceFrames.some(t=>t.$refText===e.name)),s.forEach(t=>{e=q(e,{$kind:y,index:a,frame:i,sourceFrame:t})})):e=q(e,{$kind:y,index:a,frame:i})}),e={...e,sortedSwimlanesArray:L(e.swimlanes)},e}t(C,`getState`);function w(e){S.ast=e}t(w,`setAst`);var T={swimlaneMinHeight:70,swimlanePadding:15,swimlaneGap:10,boxPadding:10,boxOverlap:90,boxDefaultY:0,boxMinWidth:80,boxMaxWidth:450,boxMinHeight:80,boxMaxHeight:750,contentStartX:250,textMaxWidth:430,boxTextFontWeight:`bold`,boxTextPadding:10,swimlaneTextFontWeight:`bold`,labelUiAutomation:`UI/Automation`,labelUiAutomationPrefix:`UI/A: `,labelCommandReadModel:`Command/Read Model`,labelCommandReadModelPrefix:`C/RM: `,labelEvents:`Events`,labelEventsPrefix:`Stream: `};function E(){return T}t(E,`getDiagramProps`);var le={boxes:[],swimlanes:{},relations:[],maxR:0,sortedSwimlanesArray:[]};function D(e){let t=e.split(`.`);if(t.length===2)return t[0]}t(D,`extractNamespace`);function O(e){let t=e.split(`.`);return t.length===2?t[1]:e}t(O,`extractName`);function k(e,t){if(!(!t||t.length===0))return Object.values(e).find(e=>e.namespace===t)}t(k,`findSwimlaneByNamespace`);function A(e,t,n){return Math.max(t,...Object.keys(e).filter(e=>{let r=Number.parseInt(e);return r>t&&r<n}).map(e=>Number.parseInt(e)))+1}t(A,`findNextAvailableIndex`);function j(e,t){let n=D(e.entityIdentifier),r=k(t,n);switch(e.modelEntityType){case`ui`:case`pcr`:case`processor`:return r?{index:r.index,label:r.namespace||T.labelUiAutomation}:n?{index:A(t,0,100),label:T.labelUiAutomationPrefix+n}:{index:0,label:T.labelUiAutomation};case`rmo`:case`readmodel`:case`cmd`:case`command`:return r?{index:r.index,label:r.namespace||T.labelCommandReadModel}:n?{index:A(t,100,200),label:T.labelCommandReadModelPrefix+n}:{index:100,label:T.labelCommandReadModel};default:return r?{index:r.index,label:r.namespace||T.labelEvents}:n?{index:A(t,200,300),label:T.labelEventsPrefix+n}:{index:200,label:T.labelEvents}}}t(j,`calculateSwimlaneProps`);function M(e){let{themeVariables:t}=c();switch(e.modelEntityType){case`ui`:return{fill:t.emUiFill??`white`,stroke:t.emUiStroke??`#dbdada`};case`pcr`:case`processor`:return{fill:t.emProcessorFill??`#edb3f6`,stroke:t.emProcessorStroke??`#b88cbf`};case`rmo`:case`readmodel`:return{fill:t.emReadModelFill??`#d3f1a2`,stroke:t.emReadModelStroke??`#a3b732`};case`cmd`:case`command`:return{fill:t.emCommandFill??`#bcd6fe`,stroke:t.emCommandStroke??`#679ac3`};case`evt`:case`event`:return{fill:t.emEventFill??`#ffb778`,stroke:t.emEventStroke??`#c19a0f`};default:return{fill:`red`,stroke:`black`}}}t(M,`calculateEntityVisualProps`);function N(e,t,r){let i=c(),a=m(O(e.entityIdentifier)??``,i),o,s={fontSize:16,fontWeight:700,fontFamily:`"trebuchet ms", verdana, arial, sans-serif`,joinWith:`<br/>`},l=`<b>${g(a,r.textMaxWidth,s)}</b>`;if(e.dataInlineValue&&(o=e.dataInlineValue,o=o.substring(o.indexOf(`{`)+1),o=o.substring(0,o.lastIndexOf(`}`)-1),o=m(o,i),o=g(o,r.textMaxWidth,s),o=o.replaceAll(` `,` `)),e.dataReference){let n=t.find(t=>t.name===e.dataReference?.$refText);n&&(o=n.dataBlockValue,o=o.substring(o.indexOf(`{
|
|
2
2
|
`)+2),o=o.substring(0,o.lastIndexOf(`}`)-1),o=m(o,i),o=g(o,r.textMaxWidth,s),o=o.replaceAll(` `,` `),o+=`<br/>`)}let u=o!==void 0;u&&(l+=`<br/><br/><code style="text-align: left; display: block;max-width:${r.textMaxWidth}px">${o}</code>`);let d={fontSize:s.fontSize,fontWeight:s.fontWeight,fontFamily:s.fontFamily},f=te(l,d),p=u?f.width/3:f.width,h={content:l,width:p,height:f.height};return n.debug(`[${e.name}] ${e.entityIdentifier} text`,h),h}t(N,`calculateTextProps`);function P(e,t){let n=t,r=M(n.frame),i={width:n.textProps.width+2*T.boxTextPadding,height:n.textProps.height+2*T.boxTextPadding};return[{$kind:v,frame:n.frame,index:n.index,visual:r,dimension:i,textProps:n.textProps}]}t(P,`decidePositionFrame`);function F(e,t,n){return t===void 0?T.contentStartX:t.index===e.index&&e.r?e.r+T.boxPadding:n===void 0?T.contentStartX:n.r-T.boxOverlap+T.boxPadding}t(F,`calculateX`);function I(e,t){let n=[...e.map(e=>e.r),t];return Math.max(...n)}t(I,`calculateMaxRight`);function L(e){return Object.values(e).sort((e,t)=>e.index-t.index)}t(L,`sortedSwimlanesArray`);function R(e,t){let n=t,r=j(n.frame,e.swimlanes),i;i=r.index in e.swimlanes?e.swimlanes[r.index]:{index:r.index,label:r.label,r:0,y:r.index*T.swimlaneMinHeight+T.swimlaneGap,height:T.swimlaneMinHeight,maxHeight:T.swimlaneMinHeight};let a=e.boxes.length>0?e.boxes[e.boxes.length-1]:void 0,o=e.previousSwimlaneNumber===void 0?void 0:e.swimlanes[e.previousSwimlaneNumber],s={width:Math.max(T.boxMinWidth,Math.min(T.boxMaxWidth,n.dimension.width))+2*T.boxPadding,height:Math.max(T.boxMinHeight,Math.min(T.boxMaxHeight,n.dimension.height))+2*T.boxPadding},c=F(i,o,a),l=c+s.width+T.boxPadding,u=I(Object.values(e.swimlanes),l);i.r=c+s.width,i.maxHeight=Math.max(i.maxHeight,s.height),i.height=Math.max(T.swimlaneMinHeight,i.maxHeight)+2*T.swimlanePadding;let d={x:c,y:T.swimlanePadding+i.y,r:l,dimension:s,leftSibling:!1,swimlane:i,visual:n.visual,text:n.textProps.content,frame:n.frame,index:n.index},f={...e,boxes:[...e.boxes,d],swimlanes:{...e.swimlanes,[`${i.index}`]:i},previousSwimlaneNumber:r.index,previousFrame:n.frame,maxR:u},p=L(f.swimlanes);p.length>0&&(p[0].y=0);for(let e=1;e<p.length;e++){let t=p[e],n=p[e-1];t.y=n.y+n.height+T.swimlaneGap}return f}t(R,`evolveFramePositioned`);function z(e,t){return e===0&&t.sourceFrames.length===0}t(z,`isFirstFrame`);function B(e){return e.sourceFrames!==void 0&&e.sourceFrames!==null&&e.sourceFrames.length>0}t(B,`hasSourceFrame`);function V(e,t){if(t!=null)return e.find(e=>e.frame.name===t.name)}t(V,`findBoxByFrame`);function H(e,t,n){if(!(n<0))for(let r=n;r>=0;r--){let n=e[r];if(n.swimlane.index!==t)return n}}t(H,`findBoxByLineIndex`);function U(t,n){let r=n;if(e(r.frame)||z(r.index,r.frame))return[];let i=V(t.boxes,r.frame);if(i===void 0)throw Error(`Target box not found for frame ${r.frame.name}`);let a;return a=r.sourceFrame?V(t.boxes,r.sourceFrame):H(t.boxes,i.swimlane.index,r.index-1),a===void 0?[]:[{$kind:b,frame:r.frame,index:r.index,sourceBox:a,targetBox:i}]}t(U,`decidePositionRelation`);function W(e,t){let n=t,r={visual:{fill:`none`,stroke:`#000`},source:{x:n.sourceBox.x,y:n.sourceBox.y},target:{x:n.targetBox.x,y:n.targetBox.y},sourceBox:n.sourceBox,targetBox:n.targetBox};return{...e,relations:[...e.relations,r]}}t(W,`evolveRelationPositioned`);var ue={[_]:P,[y]:U},de={[v]:R,[b]:W};function G(e,t){let r=ue[t.$kind];if(r==null)return[];let i=r(e,t);return n.debug(`decided events`,i),i}t(G,`decide`);function K(e,t){let r=t.reduce((e,t)=>{let n=de[t.$kind];return n==null?e:n(e,t)},e);return n.debug(`evolve events`,{state:e,newState:r,events:t}),r}t(K,`evolve`);function q(e,t){return K(e,G(e,t))}t(q,`dispatch`);var J={getConfig:ce,setOptions:ie,getOptions:ae,clear:oe,setAccTitle:a,getAccTitle:p,getAccDescription:u,setAccDescription:r,setDiagramTitle:i,getDiagramTitle:d,setAst:w,getDiagramProps:E,getState:C},fe={parse:t(async e=>{let t=await re(`eventmodeling`,e);n.debug(t),J.setAst(t),ne(t,J)},`parse`)},Y=f()?.eventmodeling;function X(e,t){return n=>{let r=n.swimlane.y+t.swimlanePadding,i=e.append(`g`).attr(`class`,`em-box`);i.append(`rect`).attr(`x`,n.x).attr(`y`,r).attr(`rx`,`3`).attr(`width`,n.dimension.width).attr(`height`,n.dimension.height).attr(`stroke`,n.visual.stroke).attr(`fill`,n.visual.fill),i.append(`foreignObject`).attr(`x`,n.x+t.boxPadding).attr(`y`,r+10).attr(`width`,n.dimension.width-2*t.boxPadding).attr(`height`,n.dimension.height-2*t.boxPadding).append(`xhtml:div`).style(`display`,`table`).style(`height`,`100%`).style(`width`,`100%`).append(`span`).style(`display`,`table-cell`).style(`text-align`,`center`).style(`vertical-align`,`middle`).html(n.text)}}t(X,`renderD3Box`);function Z(e,t){return e>t}t(Z,`dirUpwards`);function Q(e,t,r,i){return a=>{let o=a.sourceBox.swimlane.y+t.swimlanePadding,s=a.targetBox.swimlane.y+t.swimlanePadding,c=Z(o,s),l=a.sourceBox.x+a.sourceBox.dimension.width*2/3,u=a.targetBox.x+a.targetBox.dimension.width/3,d,f;n.debug(`rendering relation up=${c} for `,{sourceBox:a.sourceBox,targetBox:a.targetBox}),c?(d=o,f=s+a.targetBox.dimension.height):(d=o+a.sourceBox.dimension.height,f=s);let p=i.emRelationStroke??a.visual.stroke;e.append(`path`).attr(`class`,`em-relation`).attr(`fill`,a.visual.fill).attr(`stroke`,p).attr(`stroke-width`,`1`).attr(`marker-end`,`url(#${r})`).attr(`d`,`M${l} ${d} L${u} ${f}`)}}t(Q,`renderD3Relation`);function $(e,t,n,r){return i=>{let a=e.append(`g`).attr(`class`,`em-swimlane`),o=r.emSwimlaneBackgroundOdd??`rgb(250,250,250)`,s=r.emSwimlaneBackgroundStroke??`rgb(240,240,240)`;a.append(`rect`).attr(`x`,0).attr(`y`,i.y).attr(`rx`,`3`).attr(`width`,t+n.swimlanePadding).attr(`height`,i.height).attr(`fill`,o).attr(`stroke`,s),a.append(`text`).attr(`font-weight`,n.swimlaneTextFontWeight).attr(`x`,30).attr(`y`,i.y+30).text(i.label)}}t($,`renderD3Swimlane`);var pe={parser:fe,db:J,renderer:{draw:t(function(e,t,r,i){if(n.debug(`in eventmodeling renderer`,e+`
|
|
3
3
|
`,`id:`,t,r),!Y)throw Error(`EventModeling config not found`);let a=i.db,{themeVariables:s,eventmodeling:c}=f(),l=h(`[id="${t}"]`),u=a.getDiagramProps(),d=a.getState(),p=`em-arrowhead-${t}`,m=s.emArrowhead??`#000000`;d.sortedSwimlanesArray.forEach($(l,d.maxR,u,s)),d.boxes.forEach(X(l,u)),d.relations.forEach(Q(l,u,p,s)),l.append(`defs`).append(`marker`).attr(`id`,p).attr(`markerWidth`,`10`).attr(`markerHeight`,`7`).attr(`refX`,`10`).attr(`refY`,`3.5`).attr(`orient`,`auto`).append(`polygon`).attr(`points`,`0 0, 10 3.5, 0 7`).attr(`fill`,m),o(void 0,l,c?.padding??30,c?.useMaxWidth)},`draw`)},styles:t(e=>``,`getStyles`)};export{pe as diagram};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-CX0MjbSu.js";import{t}from"./src-BlkIpXCO.js";import{D as n,H as r,K as i,U as a,a as o,b as s,c,f as l,v as u,w as d,y as f}from"./chunk-WYO6CB5R-DyzfGKK0.js";import{t as p}from"./ordinal-DC5m951M.js";import{C as m}from"./src-DlwJ21NB.js";import{t as h}from"./defaultLocale-D0l1NlB5.js";import{i as g}from"./chunk-ICXQ74PX-BF1AraUQ.js";import{t as _}from"./chunk-VAUOI2AC-BGyW6aBf.js";import{t as v}from"./chunk-JWPE2WC7-BuX-EugW.js";import{n as y}from"./mermaid-parser.core-3Xu6H-xr.js";import{t as b}from"./chunk-VR4S4FIN-DRClO3Vp.js";import{i as x,n as S}from"./chunk-C7G6YPKG-DyJUpciK.js";function C(e){var t=0,n=e.children,r=n&&n.length;if(!r)t=1;else for(;--r>=0;)t+=n[r].value;e.value=t}function w(){return this.eachAfter(C)}function T(e,t){let n=-1;for(let r of this)e.call(t,r,++n,this);return this}function E(e,t){for(var n=this,r=[n],i,a,o=-1;n=r.pop();)if(e.call(t,n,++o,this),i=n.children)for(a=i.length-1;a>=0;--a)r.push(i[a]);return this}function D(e,t){for(var n=this,r=[n],i=[],a,o,s,c=-1;n=r.pop();)if(i.push(n),a=n.children)for(o=0,s=a.length;o<s;++o)r.push(a[o]);for(;n=i.pop();)e.call(t,n,++c,this);return this}function O(e,t){let n=-1;for(let r of this)if(e.call(t,r,++n,this))return r}function k(e){return this.eachAfter(function(t){for(var n=+e(t.data)||0,r=t.children,i=r&&r.length;--i>=0;)n+=r[i].value;t.value=n})}function A(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}function j(e){for(var t=this,n=M(t,e),r=[t];t!==n;)t=t.parent,r.push(t);for(var i=r.length;e!==n;)r.splice(i,0,e),e=e.parent;return r}function M(e,t){if(e===t)return e;var n=e.ancestors(),r=t.ancestors(),i=null;for(e=n.pop(),t=r.pop();e===t;)i=e,e=n.pop(),t=r.pop();return i}function N(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}function P(){return Array.from(this)}function F(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}function I(){var e=this,t=[];return e.each(function(n){n!==e&&t.push({source:n.parent,target:n})}),t}function*L(){var e=this,t,n=[e],r,i,a;do for(t=n.reverse(),n=[];e=t.pop();)if(yield e,r=e.children)for(i=0,a=r.length;i<a;++i)n.push(r[i]);while(n.length)}function R(e,t){e instanceof Map?(e=[void 0,e],t===void 0&&(t=V)):t===void 0&&(t=B);for(var n=new W(e),r,i=[n],a,o,s,c;r=i.pop();)if((o=t(r.data))&&(c=(o=Array.from(o)).length))for(r.children=o,s=c-1;s>=0;--s)i.push(a=o[s]=new W(o[s])),a.parent=r,a.depth=r.depth+1;return n.eachBefore(U)}function z(){return R(this).eachBefore(H)}function B(e){return e.children}function V(e){return Array.isArray(e)?e[1]:null}function H(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function U(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function W(e){this.data=e,this.depth=this.height=0,this.parent=null}W.prototype=R.prototype={constructor:W,count:w,each:T,eachAfter:D,eachBefore:E,find:O,sum:k,sort:A,path:j,ancestors:N,descendants:P,leaves:F,links:I,copy:z,[Symbol.iterator]:L};function G(e){if(typeof e!=`function`)throw Error();return e}function K(){return 0}function q(e){return function(){return e}}function J(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}function ee(e,t,n,r,i){for(var a=e.children,o,s=-1,c=a.length,l=e.value&&(r-t)/e.value;++s<c;)o=a[s],o.y0=n,o.y1=i,o.x0=t,o.x1=t+=o.value*l}function te(e,t,n,r,i){for(var a=e.children,o,s=-1,c=a.length,l=e.value&&(i-n)/e.value;++s<c;)o=a[s],o.x0=t,o.x1=r,o.y0=n,o.y1=n+=o.value*l}var ne=(1+Math.sqrt(5))/2;function re(e,t,n,r,i,a){for(var o=[],s=t.children,c,l,u=0,d=0,f=s.length,p,m,h=t.value,g,_,v,y,b,x,S;u<f;){p=i-n,m=a-r;do g=s[d++].value;while(!g&&d<f);for(_=v=g,x=Math.max(m/p,p/m)/(h*e),S=g*g*x,b=Math.max(v/S,S/_);d<f;++d){if(g+=l=s[d].value,l<_&&(_=l),l>v&&(v=l),S=g*g*x,y=Math.max(v/S,S/_),y>b){g-=l;break}b=y}o.push(c={value:g,dice:p<m,children:s.slice(u,d)}),c.dice?ee(c,n,r,i,h?r+=m*g/h:a):te(c,n,r,h?n+=p*g/h:i,a),h-=g,u=d}return o}var ie=(function e(t){function n(e,n,r,i,a){re(t,e,n,r,i,a)}return n.ratio=function(t){return e((t=+t)>1?t:1)},n})(ne);function ae(){var e=ie,t=!1,n=1,r=1,i=[0],a=K,o=K,s=K,c=K,l=K;function u(e){return e.x0=e.y0=0,e.x1=n,e.y1=r,e.eachBefore(d),i=[0],t&&e.eachBefore(J),e}function d(t){var n=i[t.depth],r=t.x0+n,u=t.y0+n,d=t.x1-n,f=t.y1-n;d<r&&(r=d=(r+d)/2),f<u&&(u=f=(u+f)/2),t.x0=r,t.y0=u,t.x1=d,t.y1=f,t.children&&(n=i[t.depth+1]=a(t)/2,r+=l(t)-n,u+=o(t)-n,d-=s(t)-n,f-=c(t)-n,d<r&&(r=d=(r+d)/2),f<u&&(u=f=(u+f)/2),e(t,r,u,d,f))}return u.round=function(e){return arguments.length?(t=!!e,u):t},u.size=function(e){return arguments.length?(n=+e[0],r=+e[1],u):[n,r]},u.tile=function(t){return arguments.length?(e=G(t),u):e},u.padding=function(e){return arguments.length?u.paddingInner(e).paddingOuter(e):u.paddingInner()},u.paddingInner=function(e){return arguments.length?(a=typeof e==`function`?e:q(+e),u):a},u.paddingOuter=function(e){return arguments.length?u.paddingTop(e).paddingRight(e).paddingBottom(e).paddingLeft(e):u.paddingTop()},u.paddingTop=function(e){return arguments.length?(o=typeof e==`function`?e:q(+e),u):o},u.paddingRight=function(e){return arguments.length?(s=typeof e==`function`?e:q(+e),u):s},u.paddingBottom=function(e){return arguments.length?(c=typeof e==`function`?e:q(+e),u):c},u.paddingLeft=function(e){return arguments.length?(l=typeof e==`function`?e:q(+e),u):l},u}var Y=class{constructor(){this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.setAccTitle=a,this.getAccTitle=f,this.setDiagramTitle=i,this.getDiagramTitle=d,this.getAccDescription=u,this.setAccDescription=r}static{e(this,`TreeMapDB`)}getNodes(){return this.nodes}getConfig(){let e=l,t=s();return g({...e.treemap,...t.treemap??{}})}addNode(e,t){this.nodes.push(e),this.levels.set(e,t),t===0&&(this.outerNodes.push(e),this.root??=e)}getRoot(){return{name:``,children:this.outerNodes}}addClass(e,t){let n=this.classes.get(e)??{id:e,styles:[],textStyles:[]},r=t.replace(/\\,/g,`§§§`).replace(/,/g,`;`).replace(/§§§/g,`,`).split(`;`);r&&r.forEach(e=>{S(e)&&(n?.textStyles?n.textStyles.push(e):n.textStyles=[e]),n?.styles?n.styles.push(e):n.styles=[e]}),this.classes.set(e,n)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){o(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function X(e){if(!e.length)return[];let t=[],n=[];return e.forEach(e=>{let r={name:e.name,children:e.type===`Leaf`?void 0:[]};for(r.classSelector=e?.classSelector,e?.cssCompiledStyles&&(r.cssCompiledStyles=e.cssCompiledStyles),e.type===`Leaf`&&e.value!==void 0&&(r.value=e.value);n.length>0&&n[n.length-1].level>=e.level;)n.pop();if(n.length===0)t.push(r);else{let e=n[n.length-1].node;e.children?e.children.push(r):e.children=[r]}e.type!==`Leaf`&&n.push({node:r,level:e.level})}),t}e(X,`buildHierarchy`);var oe=e((t,n)=>{v(t,n);let r=[];for(let e of t.TreemapRows??[])e.$type===`ClassDefStatement`&&n.addClass(e.className??``,e.styleText??``);for(let e of t.TreemapRows??[]){let t=e.item;if(!t)continue;let i=e.indent?parseInt(e.indent):0,a=se(t),o=t.classSelector?n.getStylesForClass(t.classSelector):[],s=o.length>0?o:void 0,c={level:i,name:a,type:t.$type,value:t.value,classSelector:t.classSelector,cssCompiledStyles:s};r.push(c)}let i=X(r),a=e((e,t)=>{for(let r of e)n.addNode(r,t),r.children&&r.children.length>0&&a(r.children,t+1)},`addNodesRecursively`);a(i,0)},`populate`),se=e(e=>e.name?String(e.name):``,`getItemName`),Z={parser:{yy:void 0},parse:e(async e=>{try{let n=await y(`treemap`,e);t.debug(`Treemap AST:`,n);let r=Z.parser?.yy;if(!(r instanceof Y))throw Error(`parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.`);oe(n,r)}catch(e){throw t.error(`Error parsing treemap:`,e),e}},`parse`)},ce=10,Q=10,$=25,le={draw:e((n,r,i,a)=>{let o=a.db,l=o.getConfig(),u=l.padding??ce,d=o.getDiagramTitle(),f=o.getRoot(),{themeVariables:g}=s();if(!f)return;let v=d?30:0,y=_(r),S=l.nodeWidth?l.nodeWidth*Q:960,C=l.nodeHeight?l.nodeHeight*Q:500,w=S,T=C+v;y.attr(`viewBox`,`0 0 ${w} ${T}`),c(y,T,w,l.useMaxWidth);let E;try{let t=l.valueFormat||`,`;if(t===`$0,0`)E=e(e=>`$`+h(`,`)(e),`valueFormat`);else if(t.startsWith(`$`)&&t.includes(`,`)){let n=/\.\d+/.exec(t),r=n?n[0]:``;E=e(e=>`$`+h(`,`+r)(e),`valueFormat`)}else if(t.startsWith(`$`)){let n=t.substring(1);E=e(e=>`$`+h(n||``)(e),`valueFormat`)}else E=h(t)}catch(e){t.error(`Error creating format function:`,e),E=h(`,`)}let D=p().range([`transparent`,g.cScale0,g.cScale1,g.cScale2,g.cScale3,g.cScale4,g.cScale5,g.cScale6,g.cScale7,g.cScale8,g.cScale9,g.cScale10,g.cScale11]),O=p().range([`transparent`,g.cScalePeer0,g.cScalePeer1,g.cScalePeer2,g.cScalePeer3,g.cScalePeer4,g.cScalePeer5,g.cScalePeer6,g.cScalePeer7,g.cScalePeer8,g.cScalePeer9,g.cScalePeer10,g.cScalePeer11]),k=p().range([g.cScaleLabel0,g.cScaleLabel1,g.cScaleLabel2,g.cScaleLabel3,g.cScaleLabel4,g.cScaleLabel5,g.cScaleLabel6,g.cScaleLabel7,g.cScaleLabel8,g.cScaleLabel9,g.cScaleLabel10,g.cScaleLabel11]);d&&y.append(`text`).attr(`x`,w/2).attr(`y`,v/2).attr(`class`,`treemapTitle`).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(d);let A=y.append(`g`).attr(`transform`,`translate(0, ${v})`).attr(`class`,`treemapContainer`),j=R(f).sum(e=>e.value??0).sort((e,t)=>(t.value??0)-(e.value??0)),M=ae().size([S,C]).paddingTop(e=>e.children&&e.children.length>0?$+Q:0).paddingInner(u).paddingLeft(e=>e.children&&e.children.length>0?Q:0).paddingRight(e=>e.children&&e.children.length>0?Q:0).paddingBottom(e=>e.children&&e.children.length>0?Q:0).round(!0)(j),N=M.descendants().filter(e=>e.children&&e.children.length>0),P=A.selectAll(`.treemapSection`).data(N).enter().append(`g`).attr(`class`,`treemapSection`).attr(`transform`,e=>`translate(${e.x0},${e.y0})`);P.append(`rect`).attr(`width`,e=>e.x1-e.x0).attr(`height`,$).attr(`class`,`treemapSectionHeader`).attr(`fill`,`none`).attr(`fill-opacity`,.6).attr(`stroke-width`,.6).attr(`style`,e=>e.depth===0?`display: none;`:``),P.append(`clipPath`).attr(`id`,(e,t)=>`clip-section-${r}-${t}`).append(`rect`).attr(`width`,e=>Math.max(0,e.x1-e.x0-12)).attr(`height`,$),P.append(`rect`).attr(`width`,e=>e.x1-e.x0).attr(`height`,e=>e.y1-e.y0).attr(`class`,(e,t)=>`treemapSection section${t}`).attr(`fill`,e=>D(e.data.name)).attr(`fill-opacity`,.6).attr(`stroke`,e=>O(e.data.name)).attr(`stroke-width`,2).attr(`stroke-opacity`,.4).attr(`style`,e=>{if(e.depth===0)return`display: none;`;let t=x({cssCompiledStyles:e.data.cssCompiledStyles});return t.nodeStyles+`;`+t.borderStyles.join(`;`)}),P.append(`text`).attr(`class`,`treemapSectionLabel`).attr(`x`,6).attr(`y`,$/2).attr(`dominant-baseline`,`middle`).text(e=>e.depth===0?``:e.data.name).attr(`font-weight`,`bold`).attr(`clip-path`,(e,t)=>`url(#clip-section-${r}-${t})`).attr(`style`,e=>e.depth===0?`display: none;`:`dominant-baseline: middle; font-size: 12px; fill:`+k(e.data.name)+`; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;`+x({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`)).each(function(e){if(e.depth===0)return;let t=m(this),n=e.data.name;t.text(n);let r=e.x1-e.x0,i;i=l.showValues!==!1&&e.value?r-10-30-10-6:r-6-6;let a=Math.max(15,i),o=t.node();if(o.getComputedTextLength()>a){let e=n;for(;e.length>0;){if(e=n.substring(0,e.length-1),e.length===0){t.text(`...`),o.getComputedTextLength()>a&&t.text(``);break}if(t.text(e+`...`),o.getComputedTextLength()<=a)break}}}),l.showValues!==!1&&P.append(`text`).attr(`class`,`treemapSectionValue`).attr(`x`,e=>e.x1-e.x0-10).attr(`y`,$/2).attr(`text-anchor`,`end`).attr(`dominant-baseline`,`middle`).text(e=>e.value?E(e.value):``).attr(`font-style`,`italic`).attr(`style`,e=>e.depth===0?`display: none;`:`text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:`+k(e.data.name)+`; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;`+x({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`));let F=M.leaves(),I=F.length>20,L=I?16:38,z=I?14:28,B=I?4:8,V=I?4:6,H=I?2:4,U=I?8:10,W=I?1:2,G=A.selectAll(`.treemapLeafGroup`).data(F).enter().append(`g`).attr(`class`,(e,t)=>`treemapNode treemapLeafGroup leaf${t}${e.data.classSelector?` ${e.data.classSelector}`:``}x`).attr(`transform`,e=>`translate(${e.x0},${e.y0})`);G.append(`rect`).attr(`width`,e=>e.x1-e.x0).attr(`height`,e=>e.y1-e.y0).attr(`class`,`treemapLeaf`).attr(`fill`,e=>e.parent?D(e.parent.data.name):D(e.data.name)).attr(`style`,e=>x({cssCompiledStyles:e.data.cssCompiledStyles}).nodeStyles).attr(`fill-opacity`,.3).attr(`stroke`,e=>e.parent?D(e.parent.data.name):D(e.data.name)).attr(`stroke-width`,3),G.append(`clipPath`).attr(`id`,(e,t)=>`clip-${r}-${t}`).append(`rect`).attr(`width`,e=>Math.max(0,e.x1-e.x0-4)).attr(`height`,e=>Math.max(0,e.y1-e.y0-4)),G.append(`text`).attr(`class`,`treemapLabel`).attr(`x`,e=>(e.x1-e.x0)/2).attr(`y`,e=>(e.y1-e.y0)/2).attr(`style`,e=>`text-anchor: middle; dominant-baseline: middle; font-size: ${L}px;fill:`+k(e.data.name)+`;`+x({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`)).attr(`clip-path`,(e,t)=>`url(#clip-${r}-${t})`).text(e=>e.data.name).each(function(e){let t=m(this),n=e.x1-e.x0,r=e.y1-e.y0,i=t.node(),a=n-2*H,o=r-2*H;if(a<U||o<U){t.style(`display`,`none`);return}let s=parseInt(t.style(`font-size`),10),c=.6;for(;i.getComputedTextLength()>a&&s>B;)s--,t.style(`font-size`,`${s}px`);let l=Math.max(V,Math.min(z,Math.round(s*c))),u=s+W+l;for(;u>o&&s>B&&(s--,l=Math.max(V,Math.min(z,Math.round(s*c))),!(l<V&&s===B));)t.style(`font-size`,`${s}px`),u=s+W+l;t.style(`font-size`,`${s}px`),I?(s<B||o<B)&&t.style(`display`,`none`):(i.getComputedTextLength()>a||s<B||o<s)&&t.style(`display`,`none`)}),l.showValues!==!1&&G.append(`text`).attr(`class`,`treemapValue`).attr(`x`,e=>(e.x1-e.x0)/2).attr(`y`,function(e){return(e.y1-e.y0)/2}).attr(`style`,e=>`text-anchor: middle; dominant-baseline: hanging; font-size: ${z}px;fill:`+k(e.data.name)+`;`+x({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`)).attr(`clip-path`,(e,t)=>`url(#clip-${r}-${t})`).text(e=>e.value?E(e.value):``).each(function(e){let t=m(this),n=this.parentNode;if(!n){t.style(`display`,`none`);return}let r=m(n).select(`.treemapLabel`);if(r.empty()||r.style(`display`)===`none`){t.style(`display`,`none`);return}let i=parseFloat(r.style(`font-size`)),a=Math.max(V,Math.min(z,Math.round(i*.6)));t.style(`font-size`,`${a}px`);let o=(e.y1-e.y0)/2+i/2+W;t.attr(`y`,o);let s=e.x1-e.x0,c=e.y1-e.y0-4,l=s-2*H;t.node().getComputedTextLength()>l||o+a>c||a<V?t.style(`display`,`none`):t.style(`display`,null)}),b(y,l.diagramPadding??8,`flowchart`,l?.useMaxWidth||!1)},`draw`),getClasses:e(function(e,t){return t.db.getClasses()},`getClasses`)},ue={sectionStrokeColor:`black`,sectionStrokeWidth:`1`,sectionFillColor:`#efefef`,leafStrokeColor:`black`,leafStrokeWidth:`1`,leafFillColor:`#efefef`,labelFontSize:`12px`,valueFontSize:`10px`,titleFontSize:`14px`},de={parser:Z,get db(){return new Y},renderer:le,styles:e(({treemap:e}={})=>{let t=g(n(),s().themeVariables),r=g(ue,e),i=r.titleColor??t.titleColor,a=r.labelColor??t.textColor,o=r.valueColor??t.textColor;return`
|
|
1
|
+
import{n as e}from"./chunk-Y2CYZVJY-CX0MjbSu.js";import{t}from"./src-BlkIpXCO.js";import{D as n,H as r,K as i,U as a,a as o,b as s,c,f as l,v as u,w as d,y as f}from"./chunk-WYO6CB5R-DyzfGKK0.js";import{t as p}from"./ordinal-DC5m951M.js";import{C as m}from"./src-DlwJ21NB.js";import{t as h}from"./defaultLocale-D0l1NlB5.js";import{i as g}from"./chunk-ICXQ74PX-BF1AraUQ.js";import{t as _}from"./chunk-VAUOI2AC-BGyW6aBf.js";import{t as v}from"./chunk-JWPE2WC7-BuX-EugW.js";import{n as y}from"./mermaid-parser.core-BO-Jr815.js";import{t as b}from"./chunk-VR4S4FIN-DRClO3Vp.js";import{i as x,n as S}from"./chunk-C7G6YPKG-DyJUpciK.js";function C(e){var t=0,n=e.children,r=n&&n.length;if(!r)t=1;else for(;--r>=0;)t+=n[r].value;e.value=t}function w(){return this.eachAfter(C)}function T(e,t){let n=-1;for(let r of this)e.call(t,r,++n,this);return this}function E(e,t){for(var n=this,r=[n],i,a,o=-1;n=r.pop();)if(e.call(t,n,++o,this),i=n.children)for(a=i.length-1;a>=0;--a)r.push(i[a]);return this}function D(e,t){for(var n=this,r=[n],i=[],a,o,s,c=-1;n=r.pop();)if(i.push(n),a=n.children)for(o=0,s=a.length;o<s;++o)r.push(a[o]);for(;n=i.pop();)e.call(t,n,++c,this);return this}function O(e,t){let n=-1;for(let r of this)if(e.call(t,r,++n,this))return r}function k(e){return this.eachAfter(function(t){for(var n=+e(t.data)||0,r=t.children,i=r&&r.length;--i>=0;)n+=r[i].value;t.value=n})}function A(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}function j(e){for(var t=this,n=M(t,e),r=[t];t!==n;)t=t.parent,r.push(t);for(var i=r.length;e!==n;)r.splice(i,0,e),e=e.parent;return r}function M(e,t){if(e===t)return e;var n=e.ancestors(),r=t.ancestors(),i=null;for(e=n.pop(),t=r.pop();e===t;)i=e,e=n.pop(),t=r.pop();return i}function N(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}function P(){return Array.from(this)}function F(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}function I(){var e=this,t=[];return e.each(function(n){n!==e&&t.push({source:n.parent,target:n})}),t}function*L(){var e=this,t,n=[e],r,i,a;do for(t=n.reverse(),n=[];e=t.pop();)if(yield e,r=e.children)for(i=0,a=r.length;i<a;++i)n.push(r[i]);while(n.length)}function R(e,t){e instanceof Map?(e=[void 0,e],t===void 0&&(t=V)):t===void 0&&(t=B);for(var n=new W(e),r,i=[n],a,o,s,c;r=i.pop();)if((o=t(r.data))&&(c=(o=Array.from(o)).length))for(r.children=o,s=c-1;s>=0;--s)i.push(a=o[s]=new W(o[s])),a.parent=r,a.depth=r.depth+1;return n.eachBefore(U)}function z(){return R(this).eachBefore(H)}function B(e){return e.children}function V(e){return Array.isArray(e)?e[1]:null}function H(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function U(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function W(e){this.data=e,this.depth=this.height=0,this.parent=null}W.prototype=R.prototype={constructor:W,count:w,each:T,eachAfter:D,eachBefore:E,find:O,sum:k,sort:A,path:j,ancestors:N,descendants:P,leaves:F,links:I,copy:z,[Symbol.iterator]:L};function G(e){if(typeof e!=`function`)throw Error();return e}function K(){return 0}function q(e){return function(){return e}}function J(e){e.x0=Math.round(e.x0),e.y0=Math.round(e.y0),e.x1=Math.round(e.x1),e.y1=Math.round(e.y1)}function ee(e,t,n,r,i){for(var a=e.children,o,s=-1,c=a.length,l=e.value&&(r-t)/e.value;++s<c;)o=a[s],o.y0=n,o.y1=i,o.x0=t,o.x1=t+=o.value*l}function te(e,t,n,r,i){for(var a=e.children,o,s=-1,c=a.length,l=e.value&&(i-n)/e.value;++s<c;)o=a[s],o.x0=t,o.x1=r,o.y0=n,o.y1=n+=o.value*l}var ne=(1+Math.sqrt(5))/2;function re(e,t,n,r,i,a){for(var o=[],s=t.children,c,l,u=0,d=0,f=s.length,p,m,h=t.value,g,_,v,y,b,x,S;u<f;){p=i-n,m=a-r;do g=s[d++].value;while(!g&&d<f);for(_=v=g,x=Math.max(m/p,p/m)/(h*e),S=g*g*x,b=Math.max(v/S,S/_);d<f;++d){if(g+=l=s[d].value,l<_&&(_=l),l>v&&(v=l),S=g*g*x,y=Math.max(v/S,S/_),y>b){g-=l;break}b=y}o.push(c={value:g,dice:p<m,children:s.slice(u,d)}),c.dice?ee(c,n,r,i,h?r+=m*g/h:a):te(c,n,r,h?n+=p*g/h:i,a),h-=g,u=d}return o}var ie=(function e(t){function n(e,n,r,i,a){re(t,e,n,r,i,a)}return n.ratio=function(t){return e((t=+t)>1?t:1)},n})(ne);function ae(){var e=ie,t=!1,n=1,r=1,i=[0],a=K,o=K,s=K,c=K,l=K;function u(e){return e.x0=e.y0=0,e.x1=n,e.y1=r,e.eachBefore(d),i=[0],t&&e.eachBefore(J),e}function d(t){var n=i[t.depth],r=t.x0+n,u=t.y0+n,d=t.x1-n,f=t.y1-n;d<r&&(r=d=(r+d)/2),f<u&&(u=f=(u+f)/2),t.x0=r,t.y0=u,t.x1=d,t.y1=f,t.children&&(n=i[t.depth+1]=a(t)/2,r+=l(t)-n,u+=o(t)-n,d-=s(t)-n,f-=c(t)-n,d<r&&(r=d=(r+d)/2),f<u&&(u=f=(u+f)/2),e(t,r,u,d,f))}return u.round=function(e){return arguments.length?(t=!!e,u):t},u.size=function(e){return arguments.length?(n=+e[0],r=+e[1],u):[n,r]},u.tile=function(t){return arguments.length?(e=G(t),u):e},u.padding=function(e){return arguments.length?u.paddingInner(e).paddingOuter(e):u.paddingInner()},u.paddingInner=function(e){return arguments.length?(a=typeof e==`function`?e:q(+e),u):a},u.paddingOuter=function(e){return arguments.length?u.paddingTop(e).paddingRight(e).paddingBottom(e).paddingLeft(e):u.paddingTop()},u.paddingTop=function(e){return arguments.length?(o=typeof e==`function`?e:q(+e),u):o},u.paddingRight=function(e){return arguments.length?(s=typeof e==`function`?e:q(+e),u):s},u.paddingBottom=function(e){return arguments.length?(c=typeof e==`function`?e:q(+e),u):c},u.paddingLeft=function(e){return arguments.length?(l=typeof e==`function`?e:q(+e),u):l},u}var Y=class{constructor(){this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.setAccTitle=a,this.getAccTitle=f,this.setDiagramTitle=i,this.getDiagramTitle=d,this.getAccDescription=u,this.setAccDescription=r}static{e(this,`TreeMapDB`)}getNodes(){return this.nodes}getConfig(){let e=l,t=s();return g({...e.treemap,...t.treemap??{}})}addNode(e,t){this.nodes.push(e),this.levels.set(e,t),t===0&&(this.outerNodes.push(e),this.root??=e)}getRoot(){return{name:``,children:this.outerNodes}}addClass(e,t){let n=this.classes.get(e)??{id:e,styles:[],textStyles:[]},r=t.replace(/\\,/g,`§§§`).replace(/,/g,`;`).replace(/§§§/g,`,`).split(`;`);r&&r.forEach(e=>{S(e)&&(n?.textStyles?n.textStyles.push(e):n.textStyles=[e]),n?.styles?n.styles.push(e):n.styles=[e]}),this.classes.set(e,n)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){o(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function X(e){if(!e.length)return[];let t=[],n=[];return e.forEach(e=>{let r={name:e.name,children:e.type===`Leaf`?void 0:[]};for(r.classSelector=e?.classSelector,e?.cssCompiledStyles&&(r.cssCompiledStyles=e.cssCompiledStyles),e.type===`Leaf`&&e.value!==void 0&&(r.value=e.value);n.length>0&&n[n.length-1].level>=e.level;)n.pop();if(n.length===0)t.push(r);else{let e=n[n.length-1].node;e.children?e.children.push(r):e.children=[r]}e.type!==`Leaf`&&n.push({node:r,level:e.level})}),t}e(X,`buildHierarchy`);var oe=e((t,n)=>{v(t,n);let r=[];for(let e of t.TreemapRows??[])e.$type===`ClassDefStatement`&&n.addClass(e.className??``,e.styleText??``);for(let e of t.TreemapRows??[]){let t=e.item;if(!t)continue;let i=e.indent?parseInt(e.indent):0,a=se(t),o=t.classSelector?n.getStylesForClass(t.classSelector):[],s=o.length>0?o:void 0,c={level:i,name:a,type:t.$type,value:t.value,classSelector:t.classSelector,cssCompiledStyles:s};r.push(c)}let i=X(r),a=e((e,t)=>{for(let r of e)n.addNode(r,t),r.children&&r.children.length>0&&a(r.children,t+1)},`addNodesRecursively`);a(i,0)},`populate`),se=e(e=>e.name?String(e.name):``,`getItemName`),Z={parser:{yy:void 0},parse:e(async e=>{try{let n=await y(`treemap`,e);t.debug(`Treemap AST:`,n);let r=Z.parser?.yy;if(!(r instanceof Y))throw Error(`parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.`);oe(n,r)}catch(e){throw t.error(`Error parsing treemap:`,e),e}},`parse`)},ce=10,Q=10,$=25,le={draw:e((n,r,i,a)=>{let o=a.db,l=o.getConfig(),u=l.padding??ce,d=o.getDiagramTitle(),f=o.getRoot(),{themeVariables:g}=s();if(!f)return;let v=d?30:0,y=_(r),S=l.nodeWidth?l.nodeWidth*Q:960,C=l.nodeHeight?l.nodeHeight*Q:500,w=S,T=C+v;y.attr(`viewBox`,`0 0 ${w} ${T}`),c(y,T,w,l.useMaxWidth);let E;try{let t=l.valueFormat||`,`;if(t===`$0,0`)E=e(e=>`$`+h(`,`)(e),`valueFormat`);else if(t.startsWith(`$`)&&t.includes(`,`)){let n=/\.\d+/.exec(t),r=n?n[0]:``;E=e(e=>`$`+h(`,`+r)(e),`valueFormat`)}else if(t.startsWith(`$`)){let n=t.substring(1);E=e(e=>`$`+h(n||``)(e),`valueFormat`)}else E=h(t)}catch(e){t.error(`Error creating format function:`,e),E=h(`,`)}let D=p().range([`transparent`,g.cScale0,g.cScale1,g.cScale2,g.cScale3,g.cScale4,g.cScale5,g.cScale6,g.cScale7,g.cScale8,g.cScale9,g.cScale10,g.cScale11]),O=p().range([`transparent`,g.cScalePeer0,g.cScalePeer1,g.cScalePeer2,g.cScalePeer3,g.cScalePeer4,g.cScalePeer5,g.cScalePeer6,g.cScalePeer7,g.cScalePeer8,g.cScalePeer9,g.cScalePeer10,g.cScalePeer11]),k=p().range([g.cScaleLabel0,g.cScaleLabel1,g.cScaleLabel2,g.cScaleLabel3,g.cScaleLabel4,g.cScaleLabel5,g.cScaleLabel6,g.cScaleLabel7,g.cScaleLabel8,g.cScaleLabel9,g.cScaleLabel10,g.cScaleLabel11]);d&&y.append(`text`).attr(`x`,w/2).attr(`y`,v/2).attr(`class`,`treemapTitle`).attr(`text-anchor`,`middle`).attr(`dominant-baseline`,`middle`).text(d);let A=y.append(`g`).attr(`transform`,`translate(0, ${v})`).attr(`class`,`treemapContainer`),j=R(f).sum(e=>e.value??0).sort((e,t)=>(t.value??0)-(e.value??0)),M=ae().size([S,C]).paddingTop(e=>e.children&&e.children.length>0?$+Q:0).paddingInner(u).paddingLeft(e=>e.children&&e.children.length>0?Q:0).paddingRight(e=>e.children&&e.children.length>0?Q:0).paddingBottom(e=>e.children&&e.children.length>0?Q:0).round(!0)(j),N=M.descendants().filter(e=>e.children&&e.children.length>0),P=A.selectAll(`.treemapSection`).data(N).enter().append(`g`).attr(`class`,`treemapSection`).attr(`transform`,e=>`translate(${e.x0},${e.y0})`);P.append(`rect`).attr(`width`,e=>e.x1-e.x0).attr(`height`,$).attr(`class`,`treemapSectionHeader`).attr(`fill`,`none`).attr(`fill-opacity`,.6).attr(`stroke-width`,.6).attr(`style`,e=>e.depth===0?`display: none;`:``),P.append(`clipPath`).attr(`id`,(e,t)=>`clip-section-${r}-${t}`).append(`rect`).attr(`width`,e=>Math.max(0,e.x1-e.x0-12)).attr(`height`,$),P.append(`rect`).attr(`width`,e=>e.x1-e.x0).attr(`height`,e=>e.y1-e.y0).attr(`class`,(e,t)=>`treemapSection section${t}`).attr(`fill`,e=>D(e.data.name)).attr(`fill-opacity`,.6).attr(`stroke`,e=>O(e.data.name)).attr(`stroke-width`,2).attr(`stroke-opacity`,.4).attr(`style`,e=>{if(e.depth===0)return`display: none;`;let t=x({cssCompiledStyles:e.data.cssCompiledStyles});return t.nodeStyles+`;`+t.borderStyles.join(`;`)}),P.append(`text`).attr(`class`,`treemapSectionLabel`).attr(`x`,6).attr(`y`,$/2).attr(`dominant-baseline`,`middle`).text(e=>e.depth===0?``:e.data.name).attr(`font-weight`,`bold`).attr(`clip-path`,(e,t)=>`url(#clip-section-${r}-${t})`).attr(`style`,e=>e.depth===0?`display: none;`:`dominant-baseline: middle; font-size: 12px; fill:`+k(e.data.name)+`; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;`+x({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`)).each(function(e){if(e.depth===0)return;let t=m(this),n=e.data.name;t.text(n);let r=e.x1-e.x0,i;i=l.showValues!==!1&&e.value?r-10-30-10-6:r-6-6;let a=Math.max(15,i),o=t.node();if(o.getComputedTextLength()>a){let e=n;for(;e.length>0;){if(e=n.substring(0,e.length-1),e.length===0){t.text(`...`),o.getComputedTextLength()>a&&t.text(``);break}if(t.text(e+`...`),o.getComputedTextLength()<=a)break}}}),l.showValues!==!1&&P.append(`text`).attr(`class`,`treemapSectionValue`).attr(`x`,e=>e.x1-e.x0-10).attr(`y`,$/2).attr(`text-anchor`,`end`).attr(`dominant-baseline`,`middle`).text(e=>e.value?E(e.value):``).attr(`font-style`,`italic`).attr(`style`,e=>e.depth===0?`display: none;`:`text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:`+k(e.data.name)+`; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;`+x({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`));let F=M.leaves(),I=F.length>20,L=I?16:38,z=I?14:28,B=I?4:8,V=I?4:6,H=I?2:4,U=I?8:10,W=I?1:2,G=A.selectAll(`.treemapLeafGroup`).data(F).enter().append(`g`).attr(`class`,(e,t)=>`treemapNode treemapLeafGroup leaf${t}${e.data.classSelector?` ${e.data.classSelector}`:``}x`).attr(`transform`,e=>`translate(${e.x0},${e.y0})`);G.append(`rect`).attr(`width`,e=>e.x1-e.x0).attr(`height`,e=>e.y1-e.y0).attr(`class`,`treemapLeaf`).attr(`fill`,e=>e.parent?D(e.parent.data.name):D(e.data.name)).attr(`style`,e=>x({cssCompiledStyles:e.data.cssCompiledStyles}).nodeStyles).attr(`fill-opacity`,.3).attr(`stroke`,e=>e.parent?D(e.parent.data.name):D(e.data.name)).attr(`stroke-width`,3),G.append(`clipPath`).attr(`id`,(e,t)=>`clip-${r}-${t}`).append(`rect`).attr(`width`,e=>Math.max(0,e.x1-e.x0-4)).attr(`height`,e=>Math.max(0,e.y1-e.y0-4)),G.append(`text`).attr(`class`,`treemapLabel`).attr(`x`,e=>(e.x1-e.x0)/2).attr(`y`,e=>(e.y1-e.y0)/2).attr(`style`,e=>`text-anchor: middle; dominant-baseline: middle; font-size: ${L}px;fill:`+k(e.data.name)+`;`+x({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`)).attr(`clip-path`,(e,t)=>`url(#clip-${r}-${t})`).text(e=>e.data.name).each(function(e){let t=m(this),n=e.x1-e.x0,r=e.y1-e.y0,i=t.node(),a=n-2*H,o=r-2*H;if(a<U||o<U){t.style(`display`,`none`);return}let s=parseInt(t.style(`font-size`),10),c=.6;for(;i.getComputedTextLength()>a&&s>B;)s--,t.style(`font-size`,`${s}px`);let l=Math.max(V,Math.min(z,Math.round(s*c))),u=s+W+l;for(;u>o&&s>B&&(s--,l=Math.max(V,Math.min(z,Math.round(s*c))),!(l<V&&s===B));)t.style(`font-size`,`${s}px`),u=s+W+l;t.style(`font-size`,`${s}px`),I?(s<B||o<B)&&t.style(`display`,`none`):(i.getComputedTextLength()>a||s<B||o<s)&&t.style(`display`,`none`)}),l.showValues!==!1&&G.append(`text`).attr(`class`,`treemapValue`).attr(`x`,e=>(e.x1-e.x0)/2).attr(`y`,function(e){return(e.y1-e.y0)/2}).attr(`style`,e=>`text-anchor: middle; dominant-baseline: hanging; font-size: ${z}px;fill:`+k(e.data.name)+`;`+x({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace(`color:`,`fill:`)).attr(`clip-path`,(e,t)=>`url(#clip-${r}-${t})`).text(e=>e.value?E(e.value):``).each(function(e){let t=m(this),n=this.parentNode;if(!n){t.style(`display`,`none`);return}let r=m(n).select(`.treemapLabel`);if(r.empty()||r.style(`display`)===`none`){t.style(`display`,`none`);return}let i=parseFloat(r.style(`font-size`)),a=Math.max(V,Math.min(z,Math.round(i*.6)));t.style(`font-size`,`${a}px`);let o=(e.y1-e.y0)/2+i/2+W;t.attr(`y`,o);let s=e.x1-e.x0,c=e.y1-e.y0-4,l=s-2*H;t.node().getComputedTextLength()>l||o+a>c||a<V?t.style(`display`,`none`):t.style(`display`,null)}),b(y,l.diagramPadding??8,`flowchart`,l?.useMaxWidth||!1)},`draw`),getClasses:e(function(e,t){return t.db.getClasses()},`getClasses`)},ue={sectionStrokeColor:`black`,sectionStrokeWidth:`1`,sectionFillColor:`#efefef`,leafStrokeColor:`black`,leafStrokeWidth:`1`,leafFillColor:`#efefef`,labelFontSize:`12px`,valueFontSize:`10px`,titleFontSize:`14px`},de={parser:Z,get db(){return new Y},renderer:le,styles:e(({treemap:e}={})=>{let t=g(n(),s().themeVariables),r=g(ue,e),i=r.titleColor??t.titleColor,a=r.labelColor??t.textColor,o=r.valueColor??t.textColor;return`
|
|
2
2
|
.treemapNode.section {
|
|
3
3
|
stroke: ${r.sectionStrokeColor};
|
|
4
4
|
stroke-width: ${r.sectionStrokeWidth};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-CX0MjbSu.js";import{t}from"./src-BlkIpXCO.js";import{H as n,K as r,U as i,a,b as o,c as s,f as c,v as l,w as u,y as d}from"./chunk-WYO6CB5R-DyzfGKK0.js";import{i as f}from"./chunk-ICXQ74PX-BF1AraUQ.js";import{t as p}from"./chunk-VAUOI2AC-BGyW6aBf.js";import{t as m}from"./chunk-JWPE2WC7-BuX-EugW.js";import{n as h}from"./mermaid-parser.core-
|
|
1
|
+
import{n as e}from"./chunk-Y2CYZVJY-CX0MjbSu.js";import{t}from"./src-BlkIpXCO.js";import{H as n,K as r,U as i,a,b as o,c as s,f as c,v as l,w as u,y as d}from"./chunk-WYO6CB5R-DyzfGKK0.js";import{i as f}from"./chunk-ICXQ74PX-BF1AraUQ.js";import{t as p}from"./chunk-VAUOI2AC-BGyW6aBf.js";import{t as m}from"./chunk-JWPE2WC7-BuX-EugW.js";import{n as h}from"./mermaid-parser.core-BO-Jr815.js";var g=c.packet,_=class{constructor(){this.packet=[],this.setAccTitle=i,this.getAccTitle=d,this.setDiagramTitle=r,this.getDiagramTitle=u,this.getAccDescription=l,this.setAccDescription=n}static{e(this,`PacketDB`)}getConfig(){let e=f({...g,...o().packet});return e.showBits&&(e.paddingY+=10),e}getPacket(){return this.packet}pushWord(e){e.length>0&&this.packet.push(e)}clear(){a(),this.packet=[]}},v=1e4,y=e((e,n)=>{m(e,n);let r=-1,i=[],a=1,{bitsPerRow:o}=n.getConfig();for(let{start:s,end:c,bits:l,label:u}of e.blocks){if(s!==void 0&&c!==void 0&&c<s)throw Error(`Packet block ${s} - ${c} is invalid. End must be greater than start.`);if(s??=r+1,s!==r+1)throw Error(`Packet block ${s} - ${c??s} is not contiguous. It should start from ${r+1}.`);if(l===0)throw Error(`Packet block ${s} is invalid. Cannot have a zero bit field.`);for(c??=s+(l??1)-1,l??=c-s+1,r=c,t.debug(`Packet block ${s} - ${r} with label ${u}`);i.length<=o+1&&n.getPacket().length<v;){let[e,t]=b({start:s,end:c,bits:l,label:u},a,o);if(i.push(e),e.end+1===a*o&&(n.pushWord(i),i=[],a++),!t)break;({start:s,end:c,bits:l,label:u}=t)}}n.pushWord(i)},`populate`),b=e((e,t,n)=>{if(e.start===void 0)throw Error(`start should have been set during first phase`);if(e.end===void 0)throw Error(`end should have been set during first phase`);if(e.start>e.end)throw Error(`Block start ${e.start} is greater than block end ${e.end}.`);if(e.end+1<=t*n)return[e,void 0];let r=t*n-1,i=t*n;return[{start:e.start,end:r,label:e.label,bits:r-e.start},{start:i,end:e.end,label:e.label,bits:e.end-i}]},`getNextFittingBlock`),x={parser:{yy:void 0},parse:e(async e=>{let n=await h(`packet`,e),r=x.parser?.yy;if(!(r instanceof _))throw Error(`parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.`);t.debug(n),y(n,r)},`parse`)},S=e((e,t,n,r)=>{let i=r.db,a=i.getConfig(),{rowHeight:o,paddingY:c,bitWidth:l,bitsPerRow:u}=a,d=i.getPacket(),f=i.getDiagramTitle(),m=o+c,h=m*(d.length+1)-(f?0:o),g=l*u+2,_=p(t);_.attr(`viewBox`,`0 0 ${g} ${h}`),s(_,h,g,a.useMaxWidth);for(let[e,t]of d.entries())C(_,t,e,a);_.append(`text`).text(f).attr(`x`,g/2).attr(`y`,h-m/2).attr(`dominant-baseline`,`middle`).attr(`text-anchor`,`middle`).attr(`class`,`packetTitle`)},`draw`),C=e((e,t,n,{rowHeight:r,paddingX:i,paddingY:a,bitWidth:o,bitsPerRow:s,showBits:c})=>{let l=e.append(`g`),u=n*(r+a)+a;for(let e of t){let t=e.start%s*o+1,n=(e.end-e.start+1)*o-i;if(l.append(`rect`).attr(`x`,t).attr(`y`,u).attr(`width`,n).attr(`height`,r).attr(`class`,`packetBlock`),l.append(`text`).attr(`x`,t+n/2).attr(`y`,u+r/2).attr(`class`,`packetLabel`).attr(`dominant-baseline`,`middle`).attr(`text-anchor`,`middle`).text(e.label),!c)continue;let a=e.end===e.start,d=u-2;l.append(`text`).attr(`x`,t+(a?n/2:0)).attr(`y`,d).attr(`class`,`packetByte start`).attr(`dominant-baseline`,`auto`).attr(`text-anchor`,a?`middle`:`start`).text(e.start),a||l.append(`text`).attr(`x`,t+n).attr(`y`,d).attr(`class`,`packetByte end`).attr(`dominant-baseline`,`auto`).attr(`text-anchor`,`end`).text(e.end)}},`drawWord`),w={draw:S},T={byteFontSize:`10px`,startByteColor:`black`,endByteColor:`black`,labelColor:`black`,labelFontSize:`12px`,titleColor:`black`,titleFontSize:`14px`,blockStrokeColor:`black`,blockStrokeWidth:`1`,blockFillColor:`#efefef`},E={parser:x,get db(){return new _},renderer:w,styles:e(({packet:e}={})=>{let t=f(T,e);return`
|
|
2
2
|
.packetByte {
|
|
3
3
|
font-size: ${t.byteFontSize};
|
|
4
4
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-CX0MjbSu.js";import{t}from"./src-BlkIpXCO.js";import{H as n,K as r,U as i,a,b as o,c as s,f as c,v as l,w as u,y as d,z as f}from"./chunk-WYO6CB5R-DyzfGKK0.js";import{i as p}from"./chunk-ICXQ74PX-BF1AraUQ.js";import{t as m}from"./chunk-VAUOI2AC-BGyW6aBf.js";import{t as h}from"./chunk-JWPE2WC7-BuX-EugW.js";import{n as g}from"./mermaid-parser.core-
|
|
1
|
+
import{n as e}from"./chunk-Y2CYZVJY-CX0MjbSu.js";import{t}from"./src-BlkIpXCO.js";import{H as n,K as r,U as i,a,b as o,c as s,f as c,v as l,w as u,y as d,z as f}from"./chunk-WYO6CB5R-DyzfGKK0.js";import{i as p}from"./chunk-ICXQ74PX-BF1AraUQ.js";import{t as m}from"./chunk-VAUOI2AC-BGyW6aBf.js";import{t as h}from"./chunk-JWPE2WC7-BuX-EugW.js";import{n as g}from"./mermaid-parser.core-BO-Jr815.js";import{r as _,t as v}from"./chunk-HOUHSVGY-F4yPi64m.js";import{t as y}from"./chunk-2Q5K7J3B-Bk0ErfBQ.js";var b=/[─━│┃└┗├┣]/,x=/[└┗├┣]/,S=/[─━]/,C=/^[\s│┃]+$/,w=/^\s*(title[\t ]|accTitle[\t ]*:|accDescr[\t ]*[:{])/,T=/^\s*%%/,E=` `;function D(e){return e.some(e=>b.test(e))}e(D,`isBoxDrawingFormat`);function O(e){for(let t of e){let e=x.exec(t);if(e?.index&&e.index>0)return e.index}return 4}e(O,`inferSegmentWidth`);function k(e,t){return e.replace(/\bline\s+(\d+)\b/gi,(e,n)=>{let r=parseInt(n,10),i=t.get(r);return i?`line ${i}`:e})}e(k,`remapErrorLines`);function A(e){let t=e.split(`
|
|
2
2
|
`),n=new Map,r=-1;for(let[e,n]of t.entries())if(n.trim()===`treeView-beta`){r=e;break}if(r===-1)return{text:e,lineMap:n};let i=[];for(let e=r+1;e<t.length;e++){let n=t[e];n.trim()===``||T.test(n)||w.test(n)||C.test(n)||i.push(n.replace(/\t/g,` `))}if(!D(i))return{text:e,lineMap:n};let a=O(i),o=[],s=0;for(let e=0;e<=r;e++)o.push(t[e]),s++,n.set(s,e+1);for(let e=r+1;e<t.length;e++){let r=t[e],i=r.trim(),c=e+1;if(i===``){o.push(r),s++,n.set(s,c);continue}if(T.test(r)){o.push(r),s++,n.set(s,c);continue}if(w.test(r)){o.push(r),s++,n.set(s,c);continue}if(C.test(r))continue;let l=r.replace(/\t/g,` `),u=x.exec(l);if(u?.index!==void 0){let e=u.index,t=Math.round(e/a)+1,r=e+1;for(;r<l.length&&S.test(l[r]);)r++;for(;r<l.length&&l[r]===` `;)r++;let i=l.slice(r).trimEnd();if(!i)throw Error(`Line ${c}: Empty node \u2014 expected a filename or directory name after the box-drawing prefix`);let d=E.repeat(t);o.push(d+i),s++,n.set(s,c)}else if(/^[\s─━│┃└┗├┣]+$/.test(l))continue;else if(b.test(l))o.push(r),s++,n.set(s,c);else if(/^\s+/.test(l))throw Error(`Line ${c}: Unexpected indentation without box-drawing characters. In box-drawing format, use \u251C\u2500\u2500 or \u2514\u2500\u2500 prefixes for indented nodes.`);else o.push(r),s++,n.set(s,c)}return{text:o.join(`
|
|
3
3
|
`),lineMap:n}}e(A,`preprocessBoxDrawing`);var j=new y(()=>({cnt:1,stack:[{id:0,level:-1,name:`/`,nodeType:`directory`,children:[]}]})),M=e(()=>{j.reset(),a()},`clear`),N=e(()=>j.records.stack[0],`getRoot`),P=e(()=>j.records.cnt,`getCount`),F=c.treeView,I={clear:M,addNode:e((e,t,n,r,i,a)=>{for(;e<=j.records.stack[j.records.stack.length-1].level;)j.records.stack.pop();let o={id:j.records.cnt++,level:e,name:t,nodeType:n,icon:i,cssClass:r,description:a,children:[]};j.records.stack[j.records.stack.length-1].children.push(o),j.records.stack.push(o)},`addNode`),getRoot:N,getCount:P,getConfig:e(()=>p(F,o().treeView),`getConfig`),getAccTitle:d,getAccDescription:l,getDiagramTitle:u,setAccDescription:n,setAccTitle:i,setDiagramTitle:r},L=e(e=>{h(e,I);for(let t of e.nodes){let e=typeof t.indent==`number`?t.indent:0,n=t.name,r=n.endsWith(`/`);r&&(n=n.slice(0,-1));let i=r?`directory`:`file`,a=t.classAnnotation||void 0,s=t.iconAnnotation,c=s===void 0?void 0:s||`none`,l=t.descAnnotation||void 0,u=l?f(l,o()):void 0;I.addNode(e,n,i,a,c,u)}},`populate`),R={parse:e(async e=>{let{text:n,lineMap:r}=A(e);try{let e=await g(`treeView`,n);t.debug(e),L(e)}catch(e){throw r.size>0&&e instanceof Error&&(e.message=k(e.message,r)),e}},`parse`)},z={prefix:`mermaid-treeview`,height:24,width:24,icons:{folder:{body:`<path fill="currentColor" d="M10.59 4.59A2 2 0 0 0 9.17 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.17z"/>`},file:{body:`<path fill="currentColor" fill-rule="evenodd" d="M6 2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8.83a2 2 0 0 0-.59-1.42l-4.82-4.82A2 2 0 0 0 13.17 2H6Zm7.5 1.9l4.6 4.6h-3.6a1 1 0 0 1-1-1V3.9Z" clip-rule="evenodd"/>`}}};function B(e,t){let n=t?.filenameIcons?.[e];if(n)return n;let r=e.lastIndexOf(`.`);if(r>0){let n=e.substring(r).toLowerCase(),i=t?.extensionIcons;return i?.[n]??i?.[n.slice(1)]}}e(B,`detectIcon`);function V(e,t){return e.includes(`:`)?e:e in z.icons||!t?`${z.prefix}:${e}`:`${t}:${e}`}e(V,`qualifyIcon`);function H(e,t){if(e.icon!==`none`){if(e.icon)return V(e.icon,t.defaultIconPack);if(t.showIcons){if(e.nodeType===`file`){let n=B(e.name,t);if(n===`none`)return;if(n)return V(n,t.defaultIconPack)}return`${z.prefix}:${e.nodeType===`directory`?`folder`:`file`}`}}}e(H,`getNodeIcon`),_([{name:z.prefix,icons:z}]);var U=14,W=4,G=16,K=e((e,t)=>`tv-icon-${e}-${t.replace(/[^\w-]/g,`-`)}`,`iconSymbolId`),q=e(async(t,n,r,i)=>{let a=new Set,o=e(e=>{let t=H(e,r);t&&a.add(t),e.children.forEach(o)},`collect`);if(o(n),a.size===0)return;let s=await Promise.all([...a].map(async e=>({icon:e,svg:await v(e,{height:U,width:U})}))),c=t.append(`defs`);for(let{icon:e,svg:t}of s)c.append(`g`).attr(`id`,K(i,e)).html(t)},`injectIconDefs`),J=e((e,t,n,r,i,a)=>{let o=r.append(`g`),s=`treeView-node-label`;n.nodeType===`directory`&&(s+=` treeView-node-dir`),n.cssClass&&(s+=` ${n.cssClass}`);let c=U+W,l=H(n,i),u=l!==void 0;l&&o.append(`use`).attr(`xlink:href`,`#${K(a,l)}`).attr(`x`,e+i.paddingX).attr(`y`,t+i.paddingY).attr(`class`,`treeView-node-icon`);let d=o.append(`text`).text(n.name).attr(`dominant-baseline`,`middle`).attr(`class`,s),{height:f,width:p}=d.node().getBBox(),m=f+i.paddingY*2,h=e+i.paddingX+(u?c:0);d.attr(`x`,h),d.attr(`y`,t+m/2);let g=h+p;return n.BBox={x:e,y:t,width:p+i.paddingX*2+(u?c:0),height:m},n.cssClass?.split(/\s+/).includes(`highlight`)&&o.insert(`rect`,`:first-child`).attr(`x`,e).attr(`y`,t+1).attr(`width`,0).attr(`height`,m-2).attr(`rx`,3).attr(`class`,`treeView-highlight-bg`),{node:n,nodeGroup:o,labelRightEdge:g,centerY:t+m/2}},`positionLabel`),Y=e((e,t,n,r,i,a)=>e.append(`line`).attr(`x1`,t).attr(`y1`,n).attr(`x2`,r).attr(`y2`,i).attr(`stroke-width`,a).attr(`class`,`treeView-node-line`),`positionLine`),X=e((t,n,r,i)=>{let a=0,o=0,s=[],c=e((e,t,n,r)=>{let c=r*(n.rowIndent+n.paddingX),l=J(c,a,t,e,n,i);s.push(l);let{height:u,width:d}=t.BBox;Y(e,c-n.rowIndent,a+u/2,c,a+u/2,n.lineThickness),o=Math.max(o,c+d),a+=u},`drawNode`),l=e((e,n=0)=>{c(t,e,r,n),e.children.forEach(e=>{l(e,n+1)});let{x:i,y:a,height:o}=e.BBox;if(e.children.length){let{y:n,height:s}=e.children[e.children.length-1].BBox;Y(t,i+r.paddingX,a+o,i+r.paddingX,n+s/2+r.lineThickness/2,r.lineThickness)}},`processNode`);l(n);let u=s.filter(e=>e.node.description);if(u.length>0){let e=Math.max(...s.map(e=>e.labelRightEdge))+G;for(let t of u){let n=t.nodeGroup.append(`text`).text(t.node.description).attr(`dominant-baseline`,`middle`).attr(`class`,`treeView-node-description`).attr(`x`,e).attr(`y`,t.centerY).node().getBBox();o=Math.max(o,e+n.width+r.paddingX)}}for(let e of s)if(e.node.cssClass?.split(/\s+/).includes(`highlight`)){let t=e.nodeGroup.select(`.treeView-highlight-bg`);if(!t.empty()){let n=o-e.node.BBox.x+8;t.attr(`width`,n),o=Math.max(o,e.node.BBox.x+n+2)}}return{totalHeight:a,totalWidth:o}},`drawTree`),Z={draw:e(async(e,n,r,i)=>{t.debug(`Rendering treeView diagram
|
|
4
4
|
`+e);let a=i.db,o=a.getRoot(),c=a.getConfig(),l=m(n);await q(l,o,c,n);let u=l.append(`g`);u.attr(`class`,`tree-view`);let{totalHeight:d,totalWidth:f}=X(u,o,c,n);l.attr(`viewBox`,`-${c.lineThickness/2} 0 ${f} ${d}`),s(l,d,f,c.useMaxWidth)},`draw`)},Q={labelFontSize:`16px`,labelColor:`black`,lineColor:`black`,iconColor:`#546e7a`,descriptionColor:`#6a9955`,highlightBg:`rgba(255, 193, 7, 0.15)`,highlightStroke:`#ffc107`},$={db:I,renderer:Z,parser:R,styles:e(({treeView:e})=>{let{labelFontSize:t,labelColor:n,lineColor:r,iconColor:i,descriptionColor:a,highlightBg:o,highlightStroke:s}=p(Q,e);return`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./chunk-Y2CYZVJY-CX0MjbSu.js";import{t}from"./src-BlkIpXCO.js";import{D as n,H as r,K as i,U as a,a as o,b as s,c,f as l,v as u,w as d,y as f}from"./chunk-WYO6CB5R-DyzfGKK0.js";import{i as p}from"./chunk-ICXQ74PX-BF1AraUQ.js";import{t as m}from"./chunk-VAUOI2AC-BGyW6aBf.js";import{t as h}from"./chunk-JWPE2WC7-BuX-EugW.js";import{n as g}from"./mermaid-parser.core-
|
|
1
|
+
import{n as e}from"./chunk-Y2CYZVJY-CX0MjbSu.js";import{t}from"./src-BlkIpXCO.js";import{D as n,H as r,K as i,U as a,a as o,b as s,c,f as l,v as u,w as d,y as f}from"./chunk-WYO6CB5R-DyzfGKK0.js";import{i as p}from"./chunk-ICXQ74PX-BF1AraUQ.js";import{t as m}from"./chunk-VAUOI2AC-BGyW6aBf.js";import{t as h}from"./chunk-JWPE2WC7-BuX-EugW.js";import{n as g}from"./mermaid-parser.core-BO-Jr815.js";var _={showLegend:!0,ticks:5,max:null,min:0,graticule:`circle`},v={axes:[],curves:[],options:_},y=structuredClone(v),b=l.radar,x=e(()=>p({...b,...s().radar}),`getConfig`),S=e(()=>y.axes,`getAxes`),C=e(()=>y.curves,`getCurves`),w=e(()=>y.options,`getOptions`),T=e(e=>{y.axes=e.map(e=>({name:e.name,label:e.label??e.name}))},`setAxes`),E=e(e=>{y.curves=e.map(e=>({name:e.name,label:e.label??e.name,entries:D(e.entries)}))},`setCurves`),D=e(e=>{if(e[0].axis==null)return e.map(e=>e.value);let t=S();if(t.length===0)throw Error(`Axes must be populated before curves for reference entries`);return t.map(t=>{let n=e.find(e=>e.axis?.$refText===t.name);if(n===void 0)throw Error(`Missing entry for axis `+t.label);return n.value})},`computeCurveEntries`),O={getAxes:S,getCurves:C,getOptions:w,setAxes:T,setCurves:E,setOptions:e(e=>{let t=e.reduce((e,t)=>(e[t.name]=t,e),{});y.options={showLegend:t.showLegend?.value??_.showLegend,ticks:t.ticks?.value??_.ticks,max:t.max?.value??_.max,min:t.min?.value??_.min,graticule:t.graticule?.value??_.graticule}},`setOptions`),getConfig:x,clear:e(()=>{o(),y=structuredClone(v)},`clear`),setAccTitle:a,getAccTitle:f,setDiagramTitle:i,getDiagramTitle:d,getAccDescription:u,setAccDescription:r},k=e(e=>{h(e,O);let{axes:t,curves:n,options:r}=e;O.setAxes(t),O.setCurves(n),O.setOptions(r)},`populate`),A={parse:e(async e=>{let n=await g(`radar`,e);t.debug(n),k(n)},`parse`)},j=e((e,t,n,r)=>{let i=r.db,a=i.getAxes(),o=i.getCurves(),s=i.getOptions(),c=i.getConfig(),l=i.getDiagramTitle(),u=M(m(t),c),d=s.max??Math.max(...o.map(e=>Math.max(...e.entries))),f=s.min,p=Math.min(c.width,c.height)/2;N(u,a,p,s.ticks,s.graticule),P(u,a,p,c),F(u,a,o,f,d,s.graticule,c),R(u,o,s.showLegend,c),u.append(`text`).attr(`class`,`radarTitle`).text(l).attr(`x`,0).attr(`y`,-c.height/2-c.marginTop)},`draw`),M=e((e,t)=>{let n=t.width+t.marginLeft+t.marginRight,r=t.height+t.marginTop+t.marginBottom,i={x:t.marginLeft+t.width/2,y:t.marginTop+t.height/2};return c(e,r,n,t.useMaxWidth??!0),e.attr(`viewBox`,`0 0 ${n} ${r}`).attr(`overflow`,`visible`),e.append(`g`).attr(`transform`,`translate(${i.x}, ${i.y})`)},`drawFrame`),N=e((e,t,n,r,i)=>{if(i===`circle`)for(let t=0;t<r;t++){let i=n*(t+1)/r;e.append(`circle`).attr(`r`,i).attr(`class`,`radarGraticule`)}else if(i===`polygon`){let i=t.length;for(let a=0;a<r;a++){let o=n*(a+1)/r,s=t.map((e,t)=>{let n=2*t*Math.PI/i-Math.PI/2;return`${o*Math.cos(n)},${o*Math.sin(n)}`}).join(` `);e.append(`polygon`).attr(`points`,s).attr(`class`,`radarGraticule`)}}},`drawGraticule`),P=e((e,t,n,r)=>{let i=t.length;for(let a=0;a<i;a++){let o=t[a].label,s=2*a*Math.PI/i-Math.PI/2,c=Math.cos(s),l=Math.sin(s);e.append(`line`).attr(`x1`,0).attr(`y1`,0).attr(`x2`,n*r.axisScaleFactor*c).attr(`y2`,n*r.axisScaleFactor*l).attr(`class`,`radarAxisLine`);let u=c>.01?`start`:c<-.01?`end`:`middle`,d=l>.01?`hanging`:l<-.01?`auto`:`central`;e.append(`text`).text(o).attr(`x`,n*r.axisLabelFactor*c+4*c).attr(`y`,n*r.axisLabelFactor*l+4*l).attr(`text-anchor`,u).attr(`dominant-baseline`,d).attr(`class`,`radarAxisLabel`)}},`drawAxes`);function F(e,t,n,r,i,a,o){let s=t.length,c=Math.min(o.width,o.height)/2;n.forEach((t,n)=>{if(t.entries.length!==s)return;let l=t.entries.map((e,t)=>{let n=2*Math.PI*t/s-Math.PI/2,a=I(e,r,i,c);return{x:a*Math.cos(n),y:a*Math.sin(n)}});a===`circle`?e.append(`path`).attr(`d`,L(l,o.curveTension)).attr(`class`,`radarCurve-${n}`):a===`polygon`&&e.append(`polygon`).attr(`points`,l.map(e=>`${e.x},${e.y}`).join(` `)).attr(`class`,`radarCurve-${n}`)})}e(F,`drawCurves`);function I(e,t,n,r){return r*(Math.min(Math.max(e,t),n)-t)/(n-t)}e(I,`relativeRadius`);function L(e,t){let n=e.length,r=`M${e[0].x},${e[0].y}`;for(let i=0;i<n;i++){let a=e[(i-1+n)%n],o=e[i],s=e[(i+1)%n],c=e[(i+2)%n],l={x:o.x+(s.x-a.x)*t,y:o.y+(s.y-a.y)*t},u={x:s.x-(c.x-o.x)*t,y:s.y-(c.y-o.y)*t};r+=` C${l.x},${l.y} ${u.x},${u.y} ${s.x},${s.y}`}return`${r} Z`}e(L,`closedRoundCurve`);function R(e,t,n,r){if(!n)return;let i=(r.width/2+r.marginRight)*3/4,a=-(r.height/2+r.marginTop)*3/4;t.forEach((t,n)=>{let r=e.append(`g`).attr(`transform`,`translate(${i}, ${a+n*20})`);r.append(`rect`).attr(`width`,12).attr(`height`,12).attr(`class`,`radarLegendBox-${n}`),r.append(`text`).attr(`x`,16).attr(`y`,0).attr(`class`,`radarLegendText`).text(t.label)})}e(R,`drawLegend`);var z={draw:j},B=e((e,t)=>{let n=``;for(let r=0;r<e.THEME_COLOR_LIMIT;r++){let i=e[`cScale${r}`];n+=`
|
|
2
2
|
.radarCurve-${r} {
|
|
3
3
|
color: ${i};
|
|
4
4
|
fill: ${i};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import{MESSAGE_OPS as e,PARTICIPANT_TYPES as t}from"./dist-BneDw0Gk.js";function n(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function r(e,t){let r=new Map,i=new Map,a=new Map,o=[],s=[...e.querySelectorAll(`g.node`)],c=new Set;for(let e of t.nodes){let t=RegExp(`[-_]${n(e.id)}[-_]\\d+$`),i=s.find(e=>!c.has(e)&&t.test(e.id));i&&(r.set(e.entityId,i),c.add(i),i.setAttribute(`data-mw-entity`,e.entityId))}let l=t.nodes.filter(e=>!r.has(e.entityId)),u=s.filter(e=>!c.has(e));if(l.length===u.length)l.forEach((e,t)=>{r.set(e.entityId,u[t]),u[t].setAttribute(`data-mw-entity`,e.entityId)});else for(let e of l)o.push(e.entityId);let d=[...e.querySelectorAll(`.edgePaths > path, path.flowchart-link`)],f=new Set;for(let e of t.edges){let t=RegExp(`^L[-_]${n(e.source)}[-_]${n(e.target)}[-_]\\d+`),r=d.find(e=>!f.has(e)&&t.test(e.id));r&&(i.set(e.entityId,r),f.add(r),r.setAttribute(`data-mw-entity`,e.entityId))}let p=t.edges.filter(e=>!i.has(e.entityId)),m=d.filter(e=>!f.has(e));if(p.length===m.length)p.forEach((e,t)=>{i.set(e.entityId,m[t]),m[t].setAttribute(`data-mw-entity`,e.entityId)});else for(let e of p)o.push(e.entityId);for(let n of t.subgraphs){let t=[...e.querySelectorAll(`g.cluster`)].find(e=>e.id===n.id||e.id.includes(n.id)||e.querySelector(`.cluster-label`)?.textContent?.trim()===(n.title??n.id));t&&!t.hasAttribute(`data-mw-entity`)&&(t.setAttribute(`data-mw-entity`,n.entityId),r.set(n.entityId,t))}let h=[...e.querySelectorAll(`.edgeLabels > .edgeLabel`)];if(h.length===t.edges.length)t.edges.forEach((e,t)=>{a.set(e.entityId,h[t]),h[t].setAttribute(`data-mw-entity`,e.entityId)});else{let e=t.edges.filter(e=>e.label!==null&&e.label!==``);h.length===e.length&&e.forEach((e,t)=>{a.set(e.entityId,h[t]),h[t].setAttribute(`data-mw-entity`,e.entityId)})}return{nodes:r,edges:i,edgeLabels:a,failed:o}}function i(e,t){let r=new Map,i=new Map,a=new Map,o=[],s=[...e.querySelectorAll(`g.node`)].filter(e=>!/root_start|root_end/.test(e.id)),c=new Set;for(let e of t.states){let t=RegExp(`[-_]${n(e.id)}[-_]\\d+$`),i=s.find(e=>!c.has(e)&&t.test(e.id));i&&(r.set(e.entityId,i),c.add(i),i.setAttribute(`data-mw-entity`,e.entityId))}let l=t.states.filter(e=>!r.has(e.entityId)),u=s.filter(e=>!c.has(e));if(l.length===u.length)l.forEach((e,t)=>{r.set(e.entityId,u[t]),u[t].setAttribute(`data-mw-entity`,e.entityId)});else for(let e of l)o.push(e.entityId);for(let n of t.states.filter(e=>e.isComposite)){let t=[...e.querySelectorAll(`g.cluster`)].find(e=>e.id.includes(n.id)||e.querySelector(`.cluster-label, .label-container + *`)?.textContent?.trim()===n.label);t&&!t.hasAttribute(`data-mw-entity`)&&(t.setAttribute(`data-mw-entity`,n.entityId),r.set(n.entityId,t))}let d=[...e.querySelectorAll(`.edgePaths > path, path.transition`)];if(d.length===t.transitions.length)t.transitions.forEach((e,t)=>{i.set(e.entityId,d[t]),d[t].setAttribute(`data-mw-entity`,e.entityId)});else for(let e of t.transitions)o.push(e.entityId);let f=[...e.querySelectorAll(`.edgeLabels > .edgeLabel`)];if(f.length===t.transitions.length)t.transitions.forEach((e,t)=>{a.set(e.entityId,f[t]),f[t].setAttribute(`data-mw-entity`,e.entityId)});else{let e=t.transitions.filter(e=>e.label);f.length===e.length&&e.forEach((e,t)=>{a.set(e.entityId,f[t]),f[t].setAttribute(`data-mw-entity`,e.entityId)})}return{nodes:r,edges:i,edgeLabels:a,failed:o}}function a(e,t){let r=new Map,i=new Map,a=new Map,o=[],s=[...e.querySelectorAll(`g.node`)],c=new Set;for(let e of t.classes){let t=RegExp(`[-_]${n(e.id)}[-_]\\d+$`),i=s.find(e=>!c.has(e)&&t.test(e.id));i&&(r.set(e.entityId,i),c.add(i),i.setAttribute(`data-mw-entity`,e.entityId))}let l=t.classes.filter(e=>!r.has(e.entityId)),u=s.filter(e=>!c.has(e));if(l.length===u.length)l.forEach((e,t)=>{r.set(e.entityId,u[t]),u[t].setAttribute(`data-mw-entity`,e.entityId)});else for(let e of l)o.push(e.entityId);for(let e of t.classes){let t=r.get(e.entityId);if(!t)continue;let n=[...t.querySelectorAll(`.nodeLabel`)],i=e.members.filter(e=>!e.text.includes(`(`)),a=e.members.filter(e=>e.text.includes(`(`));[...i,...a].forEach((t,r)=>{let i=n[r+1];i&&(i.setAttribute(`data-mw-member-class`,e.id),i.setAttribute(`data-mw-member-line`,String(t.lineIndex)))})}let d=[...e.querySelectorAll(`.edgePaths > path, path.relation`)];if(d.length===t.relations.length)t.relations.forEach((e,t)=>{i.set(e.entityId,d[t]),d[t].setAttribute(`data-mw-entity`,e.entityId)});else for(let e of t.relations)o.push(e.entityId);let f=[...e.querySelectorAll(`.edgeLabels > .edgeLabel`)];return f.length===t.relations.length&&t.relations.forEach((e,t)=>{a.set(e.entityId,f[t]),f[t].setAttribute(`data-mw-entity`,e.entityId)}),{nodes:r,edges:i,edgeLabels:a,failed:o}}function o(e,t){let r=new Map,i=new Map,a=new Map,o=[],s=[...e.querySelectorAll(`g[id*="entity"], g.node`)],c=new Set;for(let e of t.entities){let t=RegExp(`entity-${n(e.id)}-|[-_]${n(e.id)}[-_]\\d+$`),i=s.find(e=>!c.has(e)&&t.test(e.id));i&&(r.set(e.entityId,i),c.add(i),i.setAttribute(`data-mw-entity`,e.entityId))}let l=t.entities.filter(e=>!r.has(e.entityId)),u=s.filter(e=>!c.has(e));if(l.length&&l.length===u.length)l.forEach((e,t)=>{r.set(e.entityId,u[t]),u[t].setAttribute(`data-mw-entity`,e.entityId)});else for(let e of l)o.push(e.entityId);for(let e of t.entities){let t=r.get(e.entityId);if(!t||!e.attributes.length)continue;let n=[...t.querySelectorAll(`.nodeLabel`)];e.attributes.forEach((t,r)=>{for(let i=0;i<4;i++){let a=n[1+r*4+i];a&&(a.setAttribute(`data-mw-attr-entity`,e.id),a.setAttribute(`data-mw-attr-line`,String(t.lineIndex)))}})}let d=[...e.querySelectorAll(`path.relationshipLine, .er.relationshipLine, .edgePaths > path`)];if(d.length===t.relations.length)t.relations.forEach((e,t)=>{i.set(e.entityId,d[t]),d[t].setAttribute(`data-mw-entity`,e.entityId)});else for(let e of t.relations)o.push(e.entityId);let f=[...e.querySelectorAll(`.relationshipLabel, .er.relationshipLabel, .edgeLabels > .edgeLabel`)];return f.length===t.relations.length&&t.relations.forEach((e,t)=>{a.set(e.entityId,f[t]),f[t].setAttribute(`data-mw-entity`,e.entityId)}),{nodes:r,edges:i,edgeLabels:a,failed:o}}function s(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[...e.querySelectorAll(`.pieCircle`)];[...e.querySelectorAll(`g.legend`)].forEach((e,r)=>{let i=e.querySelector(`text`)?.textContent?.trim()??``,a=t.slices.find(e=>e.label===i||i.startsWith(`${e.label} `));if(!a)return;let s=o[r];s&&!n.has(a.entityId)&&(n.set(a.entityId,s),s.setAttribute(`data-mw-entity`,a.entityId),e.setAttribute(`data-mw-entity`,a.entityId))});for(let e of t.slices)n.has(e.entityId)||a.push(e.entityId);return{nodes:n,edges:r,edgeLabels:i,failed:a}}function c(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[...e.querySelectorAll(`rect.task`)],s=[...e.querySelectorAll(`text.taskText`)];if(o.length===t.tasks.length)t.tasks.forEach((e,t)=>{n.set(e.entityId,o[t]),o[t].setAttribute(`data-mw-entity`,e.entityId),s[t]?.setAttribute(`data-mw-entity`,e.entityId)});else for(let e of t.tasks)a.push(e.entityId);return{nodes:n,edges:r,edgeLabels:i,failed:a}}function l(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[...e.querySelectorAll(`text, span, p, div`)].filter(e=>e.children.length===0||e.tagName===`text`),s=new Set;for(let r of t.items){if(!r.matchText){a.push(r.entityId);continue}let t=r.matchText.trim(),i=o.find(e=>!s.has(e)&&e.textContent?.trim()===t)??o.find(e=>!s.has(e)&&(e.textContent?.trim().startsWith(t)??!1));if(!i){a.push(r.entityId);continue}s.add(i);let c=i,l=i.closest(`g`)??i.parentElement;l&&l!==e&&(l.textContent?.trim().length??0)<=t.length+24&&(c=l),c.setAttribute(`data-mw-entity`,r.entityId),c!==i&&i.setAttribute(`data-mw-entity`,r.entityId);for(let e of new Set([c,i])){let t=e.style;t&&(t.pointerEvents=`auto`)}n.set(r.entityId,c)}return{nodes:n,edges:r,edgeLabels:i,failed:a}}function u(e,t){let n=new Map,r=new Map,i=new Map,a=new Map,o=[];for(let r of t.participants){let t=[...e.querySelectorAll(`[name="${CSS.escape(r.id)}"]`)];if(t.length){n.set(r.entityId,t);for(let e of t)e.setAttribute(`data-mw-entity`,r.entityId);for(let e of t){let t=e.parentElement;t&&t.tagName===`g`&&t.setAttribute(`data-mw-entity`,r.entityId)}}else o.push(r.entityId)}let s=[...e.querySelectorAll(`line.actor-line, .actor-line`)];for(let e of t.participants){let t=n.get(e.entityId);if(!t?.length)continue;let i=t[0].getBoundingClientRect(),a=i.left+i.width/2,o=null,c=1/0;for(let e of s){let t=e.getBoundingClientRect(),n=Math.abs(t.left+t.width/2-a);n<c&&(c=n,o=e)}o&&c<40&&r.set(e.entityId,o)}let c=t.events.filter(e=>e.kind===`message`),l=[...e.querySelectorAll(`text.messageText`)],u=[...e.querySelectorAll(`.messageLine0, .messageLine1`)];c.forEach((e,t)=>{let n=u[t],r=l[t];n?(i.set(e.entityId,n),n.setAttribute(`data-mw-entity`,e.entityId)):o.push(e.entityId),r&&(a.set(e.entityId,r),r.setAttribute(`data-mw-entity`,e.entityId))});let d=t.events.filter(e=>e.kind===`note`),f=[...e.querySelectorAll(`.note`)],p=[...e.querySelectorAll(`.noteText`)];return d.forEach((e,t)=>{let n=f[t],r=p[t];if(n){i.set(e.entityId,n),n.setAttribute(`data-mw-entity`,e.entityId);let t=n.parentElement;t&&t.tagName===`g`&&t.setAttribute(`data-mw-entity`,e.entityId)}else o.push(e.entityId);r&&(a.set(e.entityId,r),r.setAttribute(`data-mw-entity`,e.entityId))}),{participants:n,lifelines:r,events:i,eventTexts:a,failed:o}}var d=e=>`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`,f={trash:d(`<path d="M3 6h18"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/><line x1="10" x2="10" y1="11" y2="17"/><line x1="14" x2="14" y1="11" y2="17"/>`),pencil:d(`<path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/><path d="m15 5 4 4"/>`),palette:d(`<circle cx="13.5" cy="6.5" r=".5" fill="currentColor"/><circle cx="17.5" cy="10.5" r=".5" fill="currentColor"/><circle cx="8.5" cy="7.5" r=".5" fill="currentColor"/><circle cx="6.5" cy="12.5" r=".5" fill="currentColor"/><path d="M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z"/>`),copy:d(`<rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/>`),shapes:d(`<path d="M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z"/><rect x="3" y="14" width="7" height="7" rx="1"/><circle cx="17.5" cy="17.5" r="3.5"/>`),arrowRight:d(`<path d="M5 12h14"/><path d="m12 5 7 7-7 7"/>`),arrowLeftRight:d(`<path d="M8 3 4 7l4 4"/><path d="M4 7h16"/><path d="m16 21 4-4-4-4"/><path d="M20 17H4"/>`),arrowLeftToLine:d(`<path d="M3 19V5"/><path d="m13 6-6 6 6 6"/><path d="M7 12h14"/>`),arrowRightToLine:d(`<path d="M17 12H3"/><path d="m11 18 6-6-6-6"/><path d="M21 5v14"/>`),square:d(`<rect width="18" height="18" x="3" y="3" rx="2"/>`),stickyNote:d(`<path d="M16 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h11l5-5V5a2 2 0 0 0-2-2Z"/><path d="M15 21v-4a2 2 0 0 1 2-2h4"/>`),frame:d(`<line x1="22" x2="2" y1="6" y2="6"/><line x1="22" x2="2" y1="18" y2="18"/><line x1="6" x2="6" y1="2" y2="22"/><line x1="18" x2="18" y1="2" y2="22"/>`),group:d(`<path d="M3 7V5a2 2 0 0 1 2-2h2"/><path d="M17 3h2a2 2 0 0 1 2 2v2"/><path d="M21 17v2a2 2 0 0 1-2 2h-2"/><path d="M7 21H5a2 2 0 0 1-2-2v-2"/><rect width="7" height="5" x="7" y="7" rx="1"/><rect width="7" height="5" x="10" y="12" rx="1"/>`),listPlus:d(`<path d="M11 12H3"/><path d="M16 6H3"/><path d="M16 18H3"/><path d="M18 9v6"/><path d="M21 12h-6"/>`),braces:d(`<path d="M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1"/><path d="M16 21h1a2 2 0 0 0 2-2v-5c0-1.1.9-2 2-2a2 2 0 0 1-2-2V5a2 2 0 0 0-2-2h-1"/>`),hash:d(`<line x1="4" x2="20" y1="9" y2="9"/><line x1="4" x2="20" y1="15" y2="15"/><line x1="10" x2="8" y1="3" y2="21"/><line x1="16" x2="14" y1="3" y2="21"/>`),calendar:d(`<path d="M8 2v4"/><path d="M16 2v4"/><rect width="18" height="18" x="3" y="4" rx="2"/><path d="M3 10h18"/>`),user:d(`<path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/>`),minus:d(`<path d="M5 12h14"/>`),plus:d(`<path d="M5 12h14"/><path d="M12 5v14"/>`),maximize:d(`<path d="M8 3H5a2 2 0 0 0-2 2v3"/><path d="M21 8V5a2 2 0 0 0-2-2h-3"/><path d="M3 16v3a2 2 0 0 0 2 2h3"/><path d="M16 21h3a2 2 0 0 0 2-2v-3"/>`),ellipsis:d(`<circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/>`),chevronDown:d(`<path d="m6 9 6 6 6-6"/>`)},p=class{host;el=null;panelEl=null;constructor(e){this.host=e}get isOpen(){return this.el!==null}show(e,t){this.hide();let n=document.createElement(`div`);n.className=`mw-popover`,n.addEventListener(`pointerdown`,e=>e.stopPropagation());for(let e of t){let t=document.createElement(`button`);if(t.type=`button`,t.className=`mw-popover-btn`+(e.active?` active`:``)+(e.danger?` danger`:``),t.title=e.title,e.icon?t.innerHTML=e.icon:(t.classList.add(`text`),t.textContent=e.glyph??``),e.panel){t.classList.add(`has-panel`);let e=document.createElement(`span`);e.className=`mw-caret`,e.innerHTML=f.chevronDown,t.appendChild(e)}t.addEventListener(`click`,t=>{t.stopPropagation(),e.panel?this.togglePanel(e.panel):(this.hide(),e.onClick?.())}),n.appendChild(t)}this.host.appendChild(n),this.el=n;let r=this.host.parentElement,i=e.left+e.width/2,a=n.offsetWidth/2;r&&r.clientWidth>n.offsetWidth+8&&(i=Math.min(Math.max(i,a+4+r.scrollLeft),r.scrollLeft+r.clientWidth-a-4)),n.style.left=`${i}px`;let o=e.top-8;o-n.offsetHeight<4?(n.classList.add(`mw-popover-below`),n.style.top=`${e.top+(e.height??0)+8}px`):n.style.top=`${o}px`}togglePanel(e){if(this.panelEl){this.panelEl.remove(),this.panelEl=null;return}let t=document.createElement(`div`);t.className=`mw-popover-panel`;let n=document.createElement(`div`);n.className=`mw-popover-panel-title`,n.textContent=e.title,t.appendChild(n);let r=e.sections??[{items:e.items??[]}];for(let e of r){if(e.title){let n=document.createElement(`div`);n.className=`mw-popover-section-title`,n.textContent=e.title,t.appendChild(n)}let n=document.createElement(`div`);n.className=`mw-popover-grid`,n.style.gridTemplateColumns=`repeat(${e.columns??3}, 1fr)`;for(let t of e.items){let e=document.createElement(`button`);if(e.type=`button`,e.className=`mw-popover-cell`+(t.selected?` selected`:``)+(t.swatch?` swatch`:``),e.title=t.title,t.swatch){let n=document.createElement(`span`);n.className=`mw-swatch-dot`,t.swatch===`none`?n.classList.add(`none`):n.style.background=t.swatch,e.appendChild(n)}else e.textContent=t.glyph??``;e.addEventListener(`click`,e=>{e.stopPropagation(),this.hide(),t.onClick()}),n.appendChild(e)}t.appendChild(n)}this.el.appendChild(t),this.panelEl=t;let i=this.host.getBoundingClientRect().top;t.getBoundingClientRect().top<i+2&&t.classList.add(`below`)}hide(){this.el?.remove(),this.el=null,this.panelEl=null}},m=`
|
|
2
|
+
.mw-popover.mw-popover-below { transform: translate(-50%, 0); }
|
|
3
|
+
.mw-popover {
|
|
4
|
+
position: absolute; z-index: 20; transform: translate(-50%, -100%);
|
|
5
|
+
display: flex; align-items: center; gap: 2px; padding: 4px;
|
|
6
|
+
background: var(--mw-chrome-bg, #0a0a0a); border: 1px solid var(--mw-chrome-border, #333);
|
|
7
|
+
border-radius: 8px; box-shadow: 0 0 0 1px rgba(0,0,0,0.4), 0 8px 30px rgba(0,0,0,0.45);
|
|
8
|
+
font: 13px/1 -apple-system, "Geist", "Inter", "Segoe UI", ui-sans-serif, system-ui, sans-serif;
|
|
9
|
+
}
|
|
10
|
+
.mw-popover-btn {
|
|
11
|
+
border: none; background: none; border-radius: 6px; cursor: pointer;
|
|
12
|
+
height: 28px; min-width: 28px; padding: 0 6px;
|
|
13
|
+
display: inline-flex; align-items: center; justify-content: center; gap: 3px;
|
|
14
|
+
color: var(--mw-chrome-dim, #a1a1a1); line-height: 1;
|
|
15
|
+
transition: background 0.12s, color 0.12s;
|
|
16
|
+
}
|
|
17
|
+
.mw-popover-btn svg { width: 15px; height: 15px; flex: none; }
|
|
18
|
+
.mw-popover-btn.text { font-size: 11.5px; font-weight: 500; letter-spacing: 0.01em; }
|
|
19
|
+
.mw-popover-btn .mw-caret { display: inline-flex; opacity: 0.55; margin-left: -1px; }
|
|
20
|
+
.mw-popover-btn .mw-caret svg { width: 9px; height: 9px; }
|
|
21
|
+
.mw-popover-btn:hover { background: var(--mw-chrome-hover, #1f1f1f); color: var(--mw-chrome-fg, #ededed); }
|
|
22
|
+
.mw-popover-btn.active { background: var(--mw-accent, #0070f3); color: #fff; }
|
|
23
|
+
.mw-popover-btn.danger:hover { background: rgba(255, 68, 68, 0.12); color: #ff4444; }
|
|
24
|
+
.mw-popover-panel {
|
|
25
|
+
position: absolute; bottom: calc(100% + 6px); left: 50%; transform: translateX(-50%);
|
|
26
|
+
background: var(--mw-chrome-bg, #0a0a0a); border: 1px solid var(--mw-chrome-border, #333);
|
|
27
|
+
border-radius: 8px; box-shadow: 0 0 0 1px rgba(0,0,0,0.4), 0 8px 30px rgba(0,0,0,0.45);
|
|
28
|
+
padding: 6px; min-width: 140px;
|
|
29
|
+
}
|
|
30
|
+
.mw-popover-panel.below { bottom: auto; top: calc(100% + 6px); }
|
|
31
|
+
.mw-popover-panel-title {
|
|
32
|
+
font-size: 10px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.07em;
|
|
33
|
+
color: var(--mw-chrome-dim, #666); padding: 3px 5px 7px; white-space: nowrap;
|
|
34
|
+
}
|
|
35
|
+
.mw-popover-section-title {
|
|
36
|
+
font-size: 10px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.06em;
|
|
37
|
+
color: var(--mw-chrome-dim, #666); padding: 6px 5px 4px; white-space: nowrap;
|
|
38
|
+
}
|
|
39
|
+
.mw-popover-grid { display: grid; gap: 2px; }
|
|
40
|
+
.mw-popover-cell {
|
|
41
|
+
border: 1px solid transparent; background: none; border-radius: 6px; padding: 7px 8px;
|
|
42
|
+
cursor: pointer; font-size: 12px; color: var(--mw-chrome-dim, #a1a1a1); white-space: nowrap;
|
|
43
|
+
transition: background 0.12s, color 0.12s;
|
|
44
|
+
}
|
|
45
|
+
.mw-popover-cell:hover { background: var(--mw-chrome-hover, #1f1f1f); color: var(--mw-chrome-fg, #ededed); }
|
|
46
|
+
.mw-popover-cell.selected {
|
|
47
|
+
border-color: var(--mw-accent, #0070f3); color: var(--mw-chrome-fg, #ededed);
|
|
48
|
+
background: color-mix(in srgb, var(--mw-accent, #0070f3) 12%, transparent);
|
|
49
|
+
}
|
|
50
|
+
.mw-popover-cell.swatch { padding: 5px; display: flex; align-items: center; justify-content: center; }
|
|
51
|
+
.mw-swatch-dot { width: 15px; height: 15px; border-radius: 99px; display: block; border: 1px solid rgba(255,255,255,0.18); }
|
|
52
|
+
.mw-swatch-dot.none {
|
|
53
|
+
background: linear-gradient(to top left, transparent 45%, #ff4444 46%, #ff4444 54%, transparent 55%);
|
|
54
|
+
border: 1px solid var(--mw-chrome-dim, #666);
|
|
55
|
+
}
|
|
56
|
+
.mw-lifeline-plus {
|
|
57
|
+
position: absolute; z-index: 15; transform: translate(-50%, -50%);
|
|
58
|
+
width: 18px; height: 18px; border-radius: 99px; border: none; cursor: pointer;
|
|
59
|
+
background: var(--mw-accent, #0070f3); color: #fff; font-size: 13px; line-height: 1;
|
|
60
|
+
display: flex; align-items: center; justify-content: center;
|
|
61
|
+
box-shadow: 0 2px 8px rgba(0,0,0,0.5);
|
|
62
|
+
transition: transform 0.12s;
|
|
63
|
+
}
|
|
64
|
+
.mw-lifeline-plus:hover { transform: translate(-50%, -50%) scale(1.15); }
|
|
65
|
+
.mw-plus-menu {
|
|
66
|
+
position: absolute; z-index: 21; transform: translate(-50%, 4px);
|
|
67
|
+
background: var(--mw-chrome-bg, #0a0a0a); border: 1px solid var(--mw-chrome-border, #333);
|
|
68
|
+
border-radius: 8px; box-shadow: 0 0 0 1px rgba(0,0,0,0.4), 0 8px 30px rgba(0,0,0,0.45); padding: 4px;
|
|
69
|
+
display: flex; flex-direction: column; min-width: 150px;
|
|
70
|
+
font: 13px/1.2 -apple-system, "Geist", "Inter", "Segoe UI", ui-sans-serif, system-ui, sans-serif;
|
|
71
|
+
}
|
|
72
|
+
.mw-plus-menu button {
|
|
73
|
+
border: none; background: none; text-align: left; border-radius: 6px; padding: 7px 10px;
|
|
74
|
+
cursor: pointer; color: var(--mw-chrome-dim, #a1a1a1); font-size: 12.5px;
|
|
75
|
+
transition: background 0.12s, color 0.12s;
|
|
76
|
+
}
|
|
77
|
+
.mw-plus-menu button:hover { background: var(--mw-chrome-hover, #1f1f1f); color: var(--mw-chrome-fg, #ededed); }
|
|
78
|
+
`,h=[`#ef4444`,`#f97316`,`#eab308`,`#22c55e`,`#06b6d4`,`#6366f1`,`#d946ef`,`#64748b`],g=`
|
|
79
|
+
.mw-canvas { position: relative; overflow: auto; outline: none; }
|
|
80
|
+
.mw-canvas .mw-svg-host { user-select: none; -webkit-user-select: none; }
|
|
81
|
+
.mw-canvas .mw-svg-host { min-height: 100%; display: flex; align-items: flex-start; justify-content: center; padding: 16px; box-sizing: border-box; }
|
|
82
|
+
.mw-canvas svg { max-width: 100%; height: auto; }
|
|
83
|
+
.mw-canvas.mw-panzoom { overflow: hidden; }
|
|
84
|
+
.mw-canvas.mw-panzoom .mw-svg-host { position: absolute; inset: 0; display: block; padding: 0; min-height: 0; overflow: hidden; }
|
|
85
|
+
.mw-canvas.mw-panzoom .mw-svg-host svg { position: absolute; left: 0; top: 0; max-width: none; height: auto; transform-origin: 0 0; }
|
|
86
|
+
.mw-canvas.mw-panzoom .mw-svg-host { cursor: grab; }
|
|
87
|
+
.mw-canvas.mw-panzoom.mw-panning .mw-svg-host { cursor: grabbing; }
|
|
88
|
+
.mw-canvas.mw-panzoom [data-mw-entity] { cursor: pointer; }
|
|
89
|
+
.mw-zoom-controls { position: absolute; right: 10px; bottom: 10px; display: flex; gap: 4px; z-index: 6; }
|
|
90
|
+
.mw-zoom-btn { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; padding: 0; border-radius: 7px; border: 1px solid var(--mw-chrome-border, rgba(128,128,128,.35)); background: var(--mw-chrome-bg, rgba(24,24,27,.92)); color: var(--mw-chrome-fg, #e4e4e7); cursor: pointer; }
|
|
91
|
+
.mw-zoom-btn:hover { background: var(--mw-chrome-hover, rgba(63,63,70,.9)); }
|
|
92
|
+
.mw-zoom-btn svg { width: 14px; height: 14px; }
|
|
93
|
+
.mw-canvas [data-mw-entity] { cursor: pointer; }
|
|
94
|
+
.mw-canvas.mw-readonly [data-mw-entity] { cursor: default; }
|
|
95
|
+
.mw-canvas.mw-tool-connect [data-mw-entity^="node:"] { cursor: crosshair; }
|
|
96
|
+
.mw-canvas [data-mw-entity]:hover { filter: drop-shadow(0 0 3px var(--mw-accent, #6366f1)); }
|
|
97
|
+
.mw-canvas .mw-selected { filter: drop-shadow(0 0 2px var(--mw-accent, #6366f1)) drop-shadow(0 0 5px var(--mw-accent, #6366f1)) !important; }
|
|
98
|
+
.mw-canvas .mw-ghost-edge { stroke: var(--mw-accent, #6366f1); stroke-width: 2; stroke-dasharray: 6 4; fill: none; pointer-events: none; }
|
|
99
|
+
.mw-canvas .mw-connect-source { filter: drop-shadow(0 0 5px var(--mw-accent, #6366f1)) !important; }
|
|
100
|
+
.mw-inplace-editor {
|
|
101
|
+
position: absolute; z-index: 10; white-space: pre; outline: none;
|
|
102
|
+
padding: 1px 3px; margin: -1px -3px; border-radius: 3px;
|
|
103
|
+
caret-color: var(--mw-accent, #6366f1);
|
|
104
|
+
box-shadow: 0 1.5px 0 0 var(--mw-accent, #6366f1);
|
|
105
|
+
background: color-mix(in srgb, var(--mw-editor-bg, #fff) 35%, transparent);
|
|
106
|
+
}
|
|
107
|
+
.mw-error-badge {
|
|
108
|
+
position: absolute; top: 8px; right: 8px; z-index: 5;
|
|
109
|
+
font: 500 11px/1.4 ui-sans-serif, system-ui, sans-serif;
|
|
110
|
+
background: #dc2626; color: #fff; border-radius: 6px; padding: 3px 8px;
|
|
111
|
+
max-width: 60%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
|
|
112
|
+
}
|
|
113
|
+
.mw-drop-indicator {
|
|
114
|
+
position: absolute; left: 6%; right: 6%; height: 2.5px; z-index: 14;
|
|
115
|
+
background: var(--mw-accent, #6366f1); border-radius: 2px; pointer-events: none;
|
|
116
|
+
box-shadow: 0 0 6px var(--mw-accent, #6366f1);
|
|
117
|
+
}
|
|
118
|
+
.mw-canvas [contenteditable="true"] {
|
|
119
|
+
outline: 1.5px solid var(--mw-accent, #6366f1); outline-offset: 2px; border-radius: 3px;
|
|
120
|
+
cursor: text; white-space: pre-wrap; min-width: 8px;
|
|
121
|
+
}
|
|
122
|
+
`,_=!1,v=0;function y(e){return(e.innerHTML??``).replace(/<br\s*\/?>/gi,`<br/>`).trim()}function b(e){let t=window.getSelection();if(!t?.anchorNode||!e.contains(t.anchorNode))return-1;let n=document.createRange();return n.selectNodeContents(e),n.setEnd(t.anchorNode,t.anchorOffset),n.toString().length}function x(e,t){let n=window.getSelection();if(!n)return;let r=document.createRange(),i=Math.max(0,t),a=document.createTreeWalker(e,NodeFilter.SHOW_TEXT),o=a.nextNode();for(;o;){let e=o.textContent?.length??0;if(i<=e){r.setStart(o,i),r.collapse(!0),n.removeAllRanges(),n.addRange(r);return}i-=e,o=a.nextNode()}r.selectNodeContents(e),r.collapse(!1),n.removeAllRanges(),n.addRange(r)}var S=class{editor;container;mermaid;mermaidConfig;svgHost;overlayHost;errorBadge;correlation=null;seqCorrelation=null;popover;plusButtons=[];plusMenu=null;hoveredLifeline=null;svg=null;svgTransformObserver=null;popoverFollowRaf=0;popoverAnchorPick=null;tool=`select`;readOnly;debounceMs;defaultEdge;hooks;renderTimer=null;lastRenderedCode=``;disposers=[];listeners=new Map;connectSource=null;suppressNextClick=!1;ghostPath=null;dragEvent=null;dragStartY=0;dragging=!1;dropIndicator=null;dropSlots=[];inlineInput=null;inlineHidden=null;pendingEditEntity=null;inPlaceSession=null;lastError=null;renderHeldByEdit=!1;panZoomEnabled;zoomScale=1;zoomTx=0;zoomTy=0;hasUserView=!1;svgSize=null;panSession=null;zoomControls=null;renderSeq=0;constructor(e){if(this.editor=e.editor,this.container=e.container,this.mermaid=e.mermaid,this.readOnly=e.readOnly??!1,this.panZoomEnabled=e.panZoom??!1,this.debounceMs=e.debounceMs??200,this.defaultEdge=e.defaultEdge??{},this.hooks=e.hooks??{},this.mermaidConfig={startOnLoad:!1,...e.mermaidConfig},!_){let e=document.createElement(`style`);e.setAttribute(`data-mw`,``),e.textContent=g+m,document.head.appendChild(e),_=!0}this.container.classList.add(`mw-canvas`),this.container.tabIndex=0,e.accentColor&&this.container.style.setProperty(`--mw-accent`,e.accentColor),this.readOnly&&this.container.classList.add(`mw-readonly`),this.svgHost=document.createElement(`div`),this.svgHost.className=`mw-svg-host`,this.overlayHost=document.createElement(`div`),this.errorBadge=document.createElement(`div`),this.errorBadge.className=`mw-error-badge`,this.errorBadge.style.display=`none`,this.container.append(this.svgHost,this.overlayHost,this.errorBadge),this.popover=new p(this.overlayHost),this.mermaid.initialize(this.mermaidConfig),this.disposers.push(this.editor.on(`change`,()=>this.scheduleRender()),this.editor.on(`selectionChange`,()=>this.applySelectionStyles()));let t=e=>this.onKeyDown(e);this.container.addEventListener(`keydown`,t),this.disposers.push(()=>this.container.removeEventListener(`keydown`,t));let n=e=>{let t=e.target;!t||this.container.contains(t)||(this.inPlaceSession?.finish?.(!0),this.clearLifelineUi(),this.popover.hide(),this.editor.selection.length&&this.editor.clearSelection(`canvas`))};document.addEventListener(`pointerdown`,n,!0),this.disposers.push(()=>document.removeEventListener(`pointerdown`,n,!0)),this.panZoomEnabled&&this.setupPanZoom(),this.render()}on(e,t){return this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(t),()=>this.listeners.get(e).delete(t)}emit(e,t){this.listeners.get(e)?.forEach(e=>e(t))}get currentTool(){return this.tool}get renderError(){return this.lastError}setTool(e){this.tool=e,this.container.classList.toggle(`mw-tool-connect`,e===`connect`),this.cancelConnect(),this.emit(`toolChange`,e)}setReadOnly(e){this.readOnly=e,this.container.classList.toggle(`mw-readonly`,e),this.closeInlineEditor(!1),this.cancelConnect(),this.clearLifelineUi(),this.updatePopover()}setHooks(e){this.hooks=e}setAccentColor(e){this.container.style.setProperty(`--mw-accent`,e)}setMermaidConfig(e){this.mermaidConfig={...this.mermaidConfig,...e},this.mermaid.initialize(this.mermaidConfig),this.lastRenderedCode=``,this.render()}addNode(e=`rect`,t=`New node`){if(this.readOnly)return;let n=this.editor.dispatch({type:`addNode`,shape:e,label:t})?.created?.[0];n&&(this.pendingEditEntity=n)}scheduleRender(){this.renderTimer&&clearTimeout(this.renderTimer),this.renderTimer=setTimeout(()=>void this.render(),this.debounceMs)}setupPanZoom(){this.container.classList.add(`mw-panzoom`);let e=e=>{if(!e.ctrlKey&&!e.metaKey)return;e.preventDefault();let t=Math.max(-40,Math.min(40,e.deltaY));this.zoomAt(e.clientX,e.clientY,Math.exp(-t*.01))};this.container.addEventListener(`wheel`,e,{passive:!1}),this.disposers.push(()=>this.container.removeEventListener(`wheel`,e));let t=e=>{if(e.button!==0||this.tool===`connect`||e.altKey||this.inlineInput||this.inPlaceSession)return;let t=e.target;if(!t||!this.svgHost.contains(t))return;let n=t;for(;n&&n!==this.container;){if(n.getAttribute?.(`data-mw-entity`))return;n=n.parentElement}this.panSession={pointerId:e.pointerId,x:e.clientX,y:e.clientY,tx:this.zoomTx,ty:this.zoomTy,moved:!1}},n=e=>{let t=this.panSession;if(!t||e.pointerId!==t.pointerId)return;let n=e.clientX-t.x,r=e.clientY-t.y;if(!t.moved&&Math.hypot(n,r)>4){t.moved=!0,this.container.classList.add(`mw-panning`);try{this.container.setPointerCapture(e.pointerId)}catch{}this.popover.hide()}t.moved&&(this.zoomTx=t.tx+n,this.zoomTy=t.ty+r,this.hasUserView=!0,this.applyViewTransform())},r=e=>{let t=this.panSession;!t||e.pointerId!==t.pointerId||(this.panSession=null,this.container.classList.remove(`mw-panning`),t.moved&&(this.suppressNextClick=!0,this.updatePopover()))};this.container.addEventListener(`pointerdown`,t),this.container.addEventListener(`pointermove`,n),this.container.addEventListener(`pointerup`,r),this.container.addEventListener(`pointercancel`,r),this.disposers.push(()=>{this.container.removeEventListener(`pointerdown`,t),this.container.removeEventListener(`pointermove`,n),this.container.removeEventListener(`pointerup`,r),this.container.removeEventListener(`pointercancel`,r)});let i=document.createElement(`div`);i.className=`mw-zoom-controls`;let a=(e,t,n)=>{let r=document.createElement(`button`);r.type=`button`,r.className=`mw-zoom-btn`,r.title=e,r.innerHTML=t,r.addEventListener(`pointerdown`,e=>e.stopPropagation()),r.addEventListener(`click`,e=>{e.stopPropagation(),n()}),i.appendChild(r)};if(a(`Zoom out`,f.minus,()=>this.zoomBy(1/1.25)),a(`Zoom in`,f.plus,()=>this.zoomBy(1.25)),a(`Fit diagram`,f.maximize,()=>this.fitView()),this.container.appendChild(i),this.zoomControls=i,typeof ResizeObserver<`u`){let e=new ResizeObserver(()=>{this.hasUserView||this.fitView()});e.observe(this.container),this.disposers.push(()=>e.disconnect())}}zoomBy(e){let t=this.container.getBoundingClientRect();this.zoomAt(t.left+t.width/2,t.top+t.height/2,e)}zoomAt(e,t,n){if(!this.panZoomEnabled)return;let r=this.container.getBoundingClientRect(),i=e-r.left,a=t-r.top,o=Math.min(Math.max(this.zoomScale*n,.1),4),s=o/this.zoomScale;s!==1&&(this.zoomTx=i-(i-this.zoomTx)*s,this.zoomTy=a-(a-this.zoomTy)*s,this.zoomScale=o,this.hasUserView=!0,this.applyViewTransform(),this.updatePopover())}fitView(){if(!this.panZoomEnabled||!this.svg||!this.svgSize)return;let e=this.container.clientWidth,t=this.container.clientHeight;if(!e||!t)return;let{width:n,height:r}=this.svgSize,i=Math.min((e-56)/n,(t-56)/r);this.zoomScale=Math.min(Math.max(i,.1),2),this.zoomTx=(e-n*this.zoomScale)/2,this.zoomTy=(t-r*this.zoomScale)/2,this.hasUserView=!1,this.applyViewTransform(),this.updatePopover()}applyViewTransform(){this.svg&&(this.svg.style.transform=`translate(${this.zoomTx}px, ${this.zoomTy}px) scale(${this.zoomScale})`)}prepareSvgForPanZoom(){let e=this.svg;if(!e)return;let t=0,n=0,r=e.viewBox?.baseVal;if(r&&r.width&&r.height)t=r.width,n=r.height;else{let r=e.getBBox?.();t=r?.width||800,n=r?.height||600}this.svgSize={width:t,height:n},e.removeAttribute(`width`),e.removeAttribute(`height`),e.style.width=`${t}px`,e.style.height=`${n}px`,e.style.maxWidth=`none`,this.hasUserView?this.applyViewTransform():this.fitView()}async render(){if(this.inPlaceSession){this.renderHeldByEdit=!0;return}let e=this.editor.code;if(e===this.lastRenderedCode){this.lastError&&(this.lastError=null,this.errorBadge.style.display=`none`,this.editor.setDiagnostics([]),this.emit(`render`,{ok:!0}));return}let t=++this.renderSeq,n=`mw-render-${++v}`;try{let{svg:r}=await this.mermaid.render(n,e);if(t!==this.renderSeq)return;let i=null,a=this.activeInPlaceSession(),o=a?.label;if(a&&o?.isConnected&&(i={value:y(o),caret:b(o)},a.liveTimer&&=(clearTimeout(a.liveTimer),null)),this.lastRenderedCode=e,this.lastError=null,this.errorBadge.style.display=`none`,this.svgHost.innerHTML=r,this.svg=this.svgHost.querySelector(`svg`),this.svg&&(this.panZoomEnabled?this.prepareSvgForPanZoom():this.svg.style.maxWidth=`100%`,this.bindSvg()),this.editor.setDiagnostics([]),this.emit(`render`,{ok:!0}),this.activeInPlaceSession())this.resumeInPlaceSession(i);else if(this.pendingEditEntity){let e=this.pendingEditEntity;this.pendingEditEntity=null,this.editor.entityExists(e)&&this.editEntityLabel(e)}}catch(e){if(t!==this.renderSeq)return;document.getElementById(`d${n}`)?.remove(),document.getElementById(n)?.remove();let r=e instanceof Error?e.message.split(`
|
|
123
|
+
`)[0]:String(e);this.lastError=r,this.errorBadge.textContent=`render error: ${r}`,this.errorBadge.style.display=`block`;let i={message:r,span:null,severity:`error`,source:`mermaid`};this.editor.setDiagnostics([i]),this.emit(`render`,{ok:!1,error:r})}}bindSvg(){let e=this.svg;if(!e)return;let{flowchart:t,sequence:n,state:d,classGraph:f,er:p}=this.editor.result;this.correlation=t?r(e,t):d?i(e,d):f?a(e,f):p?o(e,p):this.editor.result.pie?s(e,this.editor.result.pie):this.editor.result.gantt?c(e,this.editor.result.gantt):this.editor.result.lineItems?l(e,this.editor.result.lineItems):null,this.seqCorrelation=n?u(e,n):null,this.clearLifelineUi(),e.addEventListener(`click`,e=>this.onSvgClick(e)),e.addEventListener(`dblclick`,e=>this.onSvgDblClick(e)),e.addEventListener(`pointerdown`,e=>this.onSvgPointerDown(e)),e.addEventListener(`pointermove`,e=>this.onSvgPointerMove(e)),e.addEventListener(`pointerup`,e=>this.onSvgPointerUp(e)),this.seqCorrelation&&(e.addEventListener(`pointermove`,e=>this.onLifelineHover(e)),e.addEventListener(`pointerleave`,()=>this.scheduleLifelineClear())),this.svgTransformObserver?.disconnect(),typeof MutationObserver<`u`&&(this.svgTransformObserver=new MutationObserver(()=>{this.popoverFollowRaf||!this.popover.isOpen||(this.popoverFollowRaf=(typeof requestAnimationFrame==`function`?requestAnimationFrame:e=>setTimeout(e,16))(()=>{this.popoverFollowRaf=0,this.updatePopover()}))}),this.svgTransformObserver.observe(e,{attributes:!0,attributeFilter:[`style`,`transform`],subtree:!0})),this.applySelectionStyles()}entityFromEvent(e){return this.entityHitFromEvent(e)?.id??null}entityHitFromEvent(e){let t=e.target;for(;t&&t!==this.svg;){let e=t.getAttribute?.(`data-mw-entity`);if(e)return{id:e,el:t};t=t.parentElement}return null}topmostEntityElement(e){let t=null,n=1/0;return this.svg?.querySelectorAll(`[data-mw-entity="${CSS.escape(e)}"]`).forEach(e=>{let r=e.getBoundingClientRect().top;r<n&&(n=r,t=e)}),t}onSvgClick(e){if(this.suppressNextClick){this.suppressNextClick=!1;return}if(this.inlineInput||this.inPlaceSession)return;let t=this.entityHitFromEvent(e);if(t){let n=t.id;if(this.hooks.onEntityClick?.(n,e),this.popoverAnchorPick={entityId:n,index:this.entityElementIndex(n,t.el)},e.shiftKey||e.metaKey||e.ctrlKey){let e=this.editor.selection.includes(n)?this.editor.selection.filter(e=>e!==n):[...this.editor.selection,n];this.editor.setSelection(e,`canvas`)}else this.editor.setSelection([n],`canvas`),this.updatePopover();this.container.focus({preventScroll:!0})}else this.editor.clearSelection(`canvas`)}entityElementIndex(e,t){if(!this.svg)return 0;let n=[...this.svg.querySelectorAll(`[data-mw-entity="${CSS.escape(e)}"]`)].indexOf(t);return n>=0?n:0}onSvgDblClick(e){if(this.readOnly)return;let t=e.target.closest?.(`[data-mw-member-line]`);if(t&&this.editor.result.classGraph){let n=t.getAttribute(`data-mw-member-class`),r=Number(t.getAttribute(`data-mw-member-line`)),i=this.editor.result.classGraph.classById.get(n)?.members.find(e=>e.lineIndex===r);if(i){e.preventDefault(),this.popover.hide(),this.editInPlace(`member:${n}:${r}`,t,`.nodeLabel`,i.text,e=>this.editor.dispatch({type:`cl.setMemberText`,id:n,memberLine:r,text:e},`canvas`),{live:!1});return}}let n=e.target.closest?.(`[data-mw-attr-line]`);if(n&&this.editor.result.er){let t=n.getAttribute(`data-mw-attr-entity`),r=Number(n.getAttribute(`data-mw-attr-line`)),i=this.editor.result.er.entityById.get(t)?.attributes.find(e=>e.lineIndex===r);if(i){e.preventDefault(),this.popover.hide(),this.openOverlayEditor(n,i.text,e=>this.editor.dispatch({type:`er.setAttributeText`,id:t,attrLine:r,text:e},`canvas`));return}}let r=this.entityHitFromEvent(e);r&&(e.preventDefault(),!this.hooks.onEntityDoubleClick?.(r.id)&&this.editEntityLabel(r.id,r.el))}onSvgPointerDown(e){if(this.readOnly)return;let t=this.entityFromEvent(e),n=t?.startsWith(`node:`)||t?.startsWith(`participant:`)||t?.startsWith(`state:`)||t?.startsWith(`class:`)||t?.startsWith(`entity:`),r=this.tool===`connect`||e.altKey;if(n&&r&&t){e.preventDefault(),this.connectSource=t,this.svg?.setPointerCapture?.(e.pointerId),this.entityElement(t)?.classList.add(`mw-connect-source`),this.emit(`connectPreview`,{source:t});return}t?.startsWith(`event:`)&&this.editor.result.sequence&&e.detail<=1&&(this.dragEvent=t,this.dragStartY=e.clientY,this.dragging=!1)}entityElement(e){return this.svg?.querySelector(`[data-mw-entity="${CSS.escape(e)}"]`)??null}onSvgPointerMove(e){if(this.dragEvent&&this.svg){if(!this.dragging&&Math.abs(e.clientY-this.dragStartY)>8&&(this.dragging=!0,this.svg.setPointerCapture?.(e.pointerId),this.computeDropSlots(),this.popover.hide()),this.dragging){let t=this.container.getBoundingClientRect(),n=e.clientY-t.top+this.container.scrollTop,r=this.nearestSlot(n);r&&this.showDropIndicator(r.y)}return}if(!this.connectSource||!this.svg)return;let t=this.entityCenter(this.connectSource),n=this.clientToSvg(e.clientX,e.clientY);!t||!n||(this.ghostPath||(this.ghostPath=document.createElementNS(`http://www.w3.org/2000/svg`,`line`),this.ghostPath.classList.add(`mw-ghost-edge`),this.svg.appendChild(this.ghostPath)),this.ghostPath.setAttribute(`x1`,String(t.x)),this.ghostPath.setAttribute(`y1`,String(t.y)),this.ghostPath.setAttribute(`x2`,String(n.x)),this.ghostPath.setAttribute(`y2`,String(n.y)))}onSvgPointerUp(e){if(this.dragEvent){let t=this.dragEvent,n=this.dragging;if(this.dragEvent=null,this.dragging=!1,this.dropIndicator?.remove(),this.dropIndicator=null,n){this.suppressNextClick=!0;let n=this.container.getBoundingClientRect(),r=this.nearestSlot(e.clientY-n.top+this.container.scrollTop);r&&this.editor.dispatch({type:`seq.moveEvent`,eventId:t,afterEvent:r.afterEvent})}return}if(!this.connectSource)return;let t=this.connectSource,n=t.startsWith(`node:`)?`node:`:t.startsWith(`state:`)?`state:`:t.startsWith(`class:`)?`class:`:t.startsWith(`entity:`)?`entity:`:`participant:`,r=document.elementFromPoint(e.clientX,e.clientY),i=null,a=r;for(;a&&a!==this.container;){let e=a.getAttribute?.(`data-mw-entity`);if(e?.startsWith(n)){i=e;break}a=a.parentElement}this.cancelConnect(),this.suppressNextClick=!0,i&&i!==t&&n===`node:`?this.editor.dispatch({type:`connect`,source:t.slice(5),target:i.slice(5),line:this.defaultEdge.line,arrowEnd:this.defaultEdge.arrowEnd}):i&&i!==t&&n===`participant:`?this.editor.dispatch({type:`seq.addMessage`,source:t.slice(12),target:i.slice(12),text:`message`}):i&&i!==t&&n===`state:`?this.editor.dispatch({type:`st.connect`,source:t.slice(6),target:i.slice(6)}):i&&i!==t&&n===`class:`?this.editor.dispatch({type:`cl.connect`,source:t.slice(6),target:i.slice(6)}):i&&i!==t&&n===`entity:`?this.editor.dispatch({type:`er.connect`,source:t.slice(7),target:i.slice(7)}):(this.editor.setSelection([t],`canvas`),this.container.focus({preventScroll:!0}))}cancelConnect(){this.connectSource&&this.entityElement(this.connectSource)?.classList.remove(`mw-connect-source`),this.connectSource=null,this.ghostPath?.remove(),this.ghostPath=null,this.emit(`connectPreview`,{source:null})}editEntityLabel(e,t){if(this.readOnly)return;let{flowchart:n,sequence:r}=this.editor.result;this.closeInlineEditor(!1),this.inPlaceSession&&this.inPlaceSession.entityId!==e&&this.inPlaceSession.finish?.(!0),this.popover.hide();let i=t&&t.getAttribute(`data-mw-entity`)===e?t:null,a=null,o=``,s=()=>{};if(n&&e.startsWith(`node:`)){let t=n.nodeById.get(e.slice(5));if(!t||(o=t.label,a=this.correlation?.nodes.get(e)??null,s=e=>this.editor.dispatch({type:`renameNode`,id:t.id,label:e},`canvas`),a&&this.editInPlace(e,a,`.nodeLabel`,o,s)))return}else if(n&&e.startsWith(`edge:`)){let t=n.edges.find(t=>t.entityId===e);if(!t||(o=t.label??``,a=this.correlation?.edgeLabels.get(e)??this.correlation?.edges.get(e)??null,s=t=>this.editor.dispatch({type:`setEdgeLabel`,edgeId:e,label:t},`canvas`),t.label&&a&&this.editInPlace(e,a,`.edgeLabel`,o,s)))return}else if(n&&e.startsWith(`subgraph:`)){let t=n.subgraphs.find(t=>t.entityId===e);if(!t)return;o=t.title??t.id,a=this.correlation?.nodes.get(e)?.querySelector(`.cluster-label`)??i??this.correlation?.nodes.get(e)??this.svg?.querySelector(`#${CSS.escape(t.id)}`)??null,s=e=>this.editor.dispatch({type:`renameSubgraph`,id:t.id,title:e},`canvas`)}else if(this.editor.result.state&&e.startsWith(`state:`)){let t=this.editor.result.state.stateById.get(e.slice(6));if(!t||(o=t.label,a=this.correlation?.nodes.get(e)??null,s=e=>this.editor.dispatch({type:`st.setStateLabel`,id:t.id,label:e},`canvas`),a&&this.editInPlace(e,a,`.nodeLabel`,o,s)))return}else if(this.editor.result.state&&e.startsWith(`trans:`)){let t=this.editor.result.state.transitions.find(t=>t.entityId===e);if(!t||(o=t.label??``,a=this.correlation?.edgeLabels.get(e)??this.correlation?.edges.get(e)??null,s=t=>this.editor.dispatch({type:`st.setTransitionLabel`,transId:e,label:t},`canvas`),t.label&&a&&this.editInPlace(e,a,`.edgeLabel`,o,s)))return}else if(this.editor.result.classGraph&&e.startsWith(`class:`)){let t=this.editor.result.classGraph.classById.get(e.slice(6));if(!t)return;o=t.id,a=i??this.correlation?.nodes.get(e)??null,s=e=>this.editor.dispatch({type:`cl.renameClass`,id:t.id,name:e},`canvas`)}else if(this.editor.result.classGraph&&e.startsWith(`rel:`)){let t=this.editor.result.classGraph.relations.find(t=>t.entityId===e);if(!t)return;o=t.label??``,a=this.correlation?.edgeLabels.get(e)??this.correlation?.edges.get(e)??null,s=t=>this.editor.dispatch({type:`cl.setRelationLabel`,relId:e,label:t},`canvas`)}else if(this.editor.result.er&&e.startsWith(`entity:`)){let t=this.editor.result.er.entityById.get(e.slice(7));if(!t)return;o=t.id,a=i??this.correlation?.nodes.get(e)??null,s=e=>this.editor.dispatch({type:`er.renameEntity`,id:t.id,name:e},`canvas`)}else if(this.editor.result.er&&e.startsWith(`erel:`)){let t=this.editor.result.er.relations.find(t=>t.entityId===e);if(!t)return;o=t.label,a=this.correlation?.edgeLabels.get(e)??this.correlation?.edges.get(e)??null,s=t=>this.editor.dispatch({type:`er.setRelationLabel`,relId:e,label:t},`canvas`)}else if(this.editor.result.pie&&e.startsWith(`slice:`)){let t=this.editor.result.pie.slices.find(t=>t.entityId===e);if(!t)return;o=String(t.value),a=i??this.entityElement(e),s=t=>{let n=Number(t);Number.isFinite(n)&&this.editor.dispatch({type:`pie.setValue`,sliceId:e,value:n},`canvas`)}}else if(this.editor.result.gantt&&e.startsWith(`task:`)){let t=this.editor.result.gantt.tasks.find(t=>t.entityId===e);if(!t)return;o=t.name,a=i??this.entityElement(e),s=t=>this.editor.dispatch({type:`gantt.setTaskName`,taskId:e,name:t},`canvas`)}else if(this.editor.result.lineItems&&e.startsWith(`item:`)){let t=this.editor.result.lineItems.items.find(t=>t.entityId===e);if(!t)return;o=t.text,a=i??this.entityElement(e),s=t=>this.editor.dispatch({type:`li.setLine`,itemId:e,text:t},`canvas`)}else if(r&&e.startsWith(`participant:`)){let t=r.participantById.get(e.slice(12));if(!t)return;o=t.label,a=i??this.topmostEntityElement(e),s=e=>this.editor.dispatch({type:`seq.renameParticipant`,id:t.id,name:e},`canvas`)}else if(r&&e.startsWith(`event:`)){let t=r.events.find(t=>t.entityId===e);if(!t)return;o=t.stmt.text,a=this.seqCorrelation?.eventTexts.get(e)??i??this.entityElement(e),s=t=>this.editor.dispatch({type:`seq.setEventText`,eventId:e,text:t},`canvas`)}a&&this.openOverlayEditor(a,o,s)}editInPlace(e,t,n,r,i,a={}){let o=t.matches?.(n)?t.querySelector(`p`)??t:t.querySelector(`${n} p`)??t.querySelector(n);if(!o||!(o instanceof HTMLElement))return!1;let s=this.inPlaceSession?.entityId===e;if(s&&this.inPlaceSession.label===o&&o.isConnected)return o.focus(),!0;s||(this.inPlaceSession={entityId:e,labelSelector:n,original:r,lastCommitted:r,caretOffset:-1,commitValue:i,liveTimer:null,label:null,finish:null});let c=this.inPlaceSession;c.label=o,o.setAttribute(`contenteditable`,`true`);let l=o.closest(`foreignObject`),u=o.style.whiteSpace,d=l?.style.overflow??``;if(o.style.whiteSpace=`nowrap`,l&&(l.style.overflow=`visible`),o.focus(),s&&c.caretOffset>=0)x(o,c.caretOffset);else{let e=window.getSelection(),t=document.createRange();t.selectNodeContents(o),e?.removeAllRanges(),e?.addRange(t)}let f=()=>{let e=b(o);e>=0&&(c.caretOffset=e)},p=()=>{if(this.inPlaceSession!==c)return;let e=y(o);!e||e===c.lastCommitted||(f(),c.lastCommitted=e,c.commitValue(e))},m=e=>{if(this.inPlaceSession!==c)return;this.inPlaceSession=null,c.liveTimer&&clearTimeout(c.liveTimer),o.removeAttribute(`contenteditable`),o.style.whiteSpace=u,l&&(l.style.overflow=d),o.removeEventListener(`keydown`,g),o.removeEventListener(`blur`,_),o.removeEventListener(`input`,h);let t=y(o);e?t&&t!==c.lastCommitted?c.commitValue(t):t||(o.textContent=c.lastCommitted):(o.innerHTML=c.original,c.lastCommitted!==c.original&&c.commitValue(c.original)),this.renderHeldByEdit&&(this.renderHeldByEdit=!1,this.scheduleRender()),this.updatePopover()},h=()=>{a.live!==!1&&(c.liveTimer&&clearTimeout(c.liveTimer),c.liveTimer=setTimeout(p,450))},g=e=>{e.stopPropagation(),e.key===`Enter`?(e.preventDefault(),m(!0)):e.key===`Escape`&&m(!1)},_=()=>{setTimeout(()=>{this.inPlaceSession===c&&o.isConnected&&document.activeElement!==o&&m(!0)},60)};return c.finish=m,o.addEventListener(`keydown`,g),o.addEventListener(`blur`,_),o.addEventListener(`input`,h),!0}activeInPlaceSession(){return this.inPlaceSession}resumeInPlaceSession(e){let t=this.inPlaceSession;if(!t)return;if(!this.editor.entityExists(t.entityId)){this.inPlaceSession=null;return}let n=(t.entityId.startsWith(`edge:`)?this.correlation?.edgeLabels.get(t.entityId):null)??this.entityElement(t.entityId);if(!n){this.inPlaceSession=null;return}this.editInPlace(t.entityId,n,t.labelSelector,t.lastCommitted,t.commitValue);let r=this.inPlaceSession===t?t.label:null;!r||!e||(e.value&&e.value!==t.lastCommitted&&e.value!==y(r)&&(r.innerHTML=e.value,r.dispatchEvent(new Event(`input`))),e.caret>=0&&x(r,e.caret))}findTextTarget(e,t){let n=e=>(e.tagName===`text`||e.tagName===`SPAN`||e.tagName===`P`||e.tagName===`DIV`||e.tagName===`tspan`)&&(e.children.length===0||e.tagName===`text`)&&(e.textContent?.trim().length??0)>0;if(n(e))return e;let r=[...e.querySelectorAll(`text, tspan, span, p, div`)].filter(n);return!r.length&&e.parentElement&&(r=[...e.parentElement.querySelectorAll(`text, tspan, span, p, div`)].filter(n)),r.find(e=>e.textContent?.trim()===t.trim())??r.find(e=>t.trim().startsWith(e.textContent?.trim()??`\0`))??r[0]??e}openOverlayEditor(e,t,n){e=this.findTextTarget(e,t);let r=this.hostRect(e),i=e.querySelector(`tspan`)??e,a=window.getComputedStyle(i),o=document.createElement(`div`);o.className=`mw-inplace-editor`,o.contentEditable=`true`,o.spellcheck=!1,o.textContent=t,o.style.left=`${r.left+r.width/2}px`,o.style.top=`${r.top}px`,o.style.transform=`translateX(-50%)`,o.style.textAlign=`center`,o.style.minWidth=`${Math.max(24,r.width)}px`,o.style.lineHeight=`${Math.max(r.height,12)}px`,o.style.fontStyle=a.fontStyle,o.style.fontWeight=a.fontWeight;let s=this.panZoomEnabled?this.zoomScale:1,c=Number.parseFloat(a.fontSize);o.style.fontSize=Number.isFinite(c)?`${c*s}px`:a.fontSize,o.style.fontFamily=a.fontFamily;let l=a.fill&&a.fill!==`none`&&i instanceof SVGElement?a.fill:a.color;o.style.color=l||`inherit`,this.overlayHost.appendChild(o),this.inlineInput=o;let u=e,d=u.style?.visibility??``;u.style&&(u.style.visibility=`hidden`),this.inlineHidden={el:u,prevVisibility:d},o.focus();let f=document.createRange();f.selectNodeContents(o);let p=window.getSelection();p?.removeAllRanges(),p?.addRange(f);let m=()=>{let e=(o.textContent??``).trim();this.closeInlineEditor(!1),e!==t&&n(e)};o.addEventListener(`keydown`,e=>{e.stopPropagation(),e.key===`Enter`&&(e.preventDefault(),m()),e.key===`Escape`&&this.closeInlineEditor(!1)}),o.addEventListener(`blur`,m)}closeInlineEditor(e){if(this.inlineHidden&&=(this.inlineHidden.el.style&&(this.inlineHidden.el.style.visibility=this.inlineHidden.prevVisibility),null),this.inlineInput){let t=this.inlineInput;this.inlineInput=null,t.remove(),e&&this.container.focus({preventScroll:!0})}}onKeyDown(e){if(!this.inlineInput){if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`z`){e.preventDefault(),e.shiftKey?this.editor.redo():this.editor.undo();return}if(!this.readOnly){if((e.key===`Delete`||e.key===`Backspace`)&&this.editor.selection.length){e.preventDefault(),this.editor.deleteEntities(this.editor.selection,`canvas`);return}if(e.key===`Escape`){this.cancelConnect(),this.editor.clearSelection(`canvas`);return}e.key===`Enter`&&this.editor.selection.length===1&&(e.preventDefault(),this.editEntityLabel(this.editor.selection[0]))}}}applySelectionStyles(){if(this.svg){this.svg.querySelectorAll(`.mw-selected`).forEach(e=>e.classList.remove(`mw-selected`));for(let e of this.editor.selection)this.svg.querySelectorAll(`[data-mw-entity="${CSS.escape(e)}"]`).forEach(e=>{e.classList.add(`mw-selected`)});this.updatePopover()}}hostRect(e){let t=e.getBoundingClientRect(),n=this.container.getBoundingClientRect();return{left:t.left-n.left+this.container.scrollLeft,top:t.top-n.top+this.container.scrollTop,width:t.width,height:t.height}}updatePopover(){if(this.popover.hide(),this.readOnly||this.inlineInput||this.inPlaceSession)return;let e=this.editor.selection;if(e.length!==1||!this.svg)return;let t=e[0],n=[...this.svg.querySelectorAll(`[data-mw-entity="${CSS.escape(t)}"]`)],r=null,i=this.popoverAnchorPick;if(i&&i.entityId===t&&n[i.index])r=n[i.index];else{let e=1/0;for(let t of n){let n=t.getBoundingClientRect().top;n<e&&(e=n,r=t)}}if(!r)return;let a=this.actionsFor(t);a.length&&this.popover.show(this.hostRect(r),a)}colorSection(e,t){return{title:e,columns:5,items:[...h.map(n=>({swatch:n,title:`${e}: ${n}`,onClick:()=>t(n)})),{swatch:`none`,title:`${e}: default`,onClick:()=>t(null)}]}}actionsFor(n){let{flowchart:r,sequence:i}=this.editor.result,a={icon:f.trash,title:`Delete`,danger:!0,onClick:()=>this.editor.deleteEntities([n])},o={icon:f.pencil,title:`Edit text`,onClick:()=>this.editEntityLabel(n)};if(r&&n.startsWith(`node:`)){let e=r.nodeById.get(n.slice(5));return e?[{icon:f.shapes,title:`Node shape`,panel:{title:`Node shape`,items:[{s:`rect`,g:`▭`,t:`Rectangle`},{s:`round`,g:`▢`,t:`Rounded`},{s:`stadium`,g:`⬭`,t:`Stadium`},{s:`diamond`,g:`◇`,t:`Diamond`},{s:`hexagon`,g:`⬡`,t:`Hexagon`},{s:`circle`,g:`◯`,t:`Circle`},{s:`cylinder`,g:`⛁`,t:`Cylinder`},{s:`subroutine`,g:`⧉`,t:`Subroutine`}].map(t=>({glyph:t.g,title:t.t,selected:e.shape===t.s,onClick:()=>this.editor.dispatch({type:`setNodeShape`,id:e.id,shape:t.s})}))}},{icon:f.palette,title:`Colors`,panel:{title:`Colors`,sections:[`fill`,`stroke`,`color`].map(t=>this.colorSection(t===`fill`?`Fill`:t===`stroke`?`Border`:`Text`,n=>this.editor.dispatch({type:`setNodeColor`,id:e.id,prop:t,value:n})))}},{icon:f.copy,title:`Duplicate`,onClick:()=>this.editor.dispatch({type:`duplicateNode`,id:e.id})},o,a]:[]}if(r&&n.startsWith(`subgraph:`))return[{icon:f.pencil,title:`Rename subgraph`,onClick:()=>this.editEntityLabel(n)}];if(r&&n.startsWith(`edge:`)){let e=r.edges.find(e=>e.entityId===n);return e?[{icon:f.arrowRight,title:`Edge type`,panel:{title:`Edge type`,items:[{line:`solid`,arrowEnd:`arrow`,g:`—▶`,t:`solid arrow`},{line:`dotted`,arrowEnd:`arrow`,g:`⋯▶`,t:`dotted arrow`},{line:`thick`,arrowEnd:`arrow`,g:`═▶`,t:`thick arrow`},{line:`solid`,arrowEnd:`open`,g:`——`,t:`solid open`},{line:`dotted`,arrowEnd:`open`,g:`⋯⋯`,t:`dotted open`},{line:`thick`,arrowEnd:`open`,g:`══`,t:`thick open`},{line:`solid`,arrowEnd:`cross`,g:`—✕`,t:`solid cross`},{line:`solid`,arrowEnd:`circle`,g:`—●`,t:`solid circle`}].map(t=>({glyph:t.g,title:t.t,selected:e.seg.line===t.line&&e.seg.arrowEnd===t.arrowEnd,onClick:()=>this.editor.dispatch({type:`setEdgeStyle`,edgeId:n,line:t.line,arrowEnd:t.arrowEnd})}))}},{icon:f.palette,title:`Edge color`,panel:{title:`Edge color`,sections:[this.colorSection(`Stroke`,e=>this.editor.dispatch({type:`setEdgeColor`,edgeId:n,value:e}))]}},{icon:f.arrowLeftRight,title:`Reverse direction`,onClick:()=>this.editor.dispatch({type:`reverseEdge`,edgeId:n})},o,a]:[]}if(this.editor.result.state&&n.startsWith(`state:`)){let e=this.editor.result.state.stateById.get(n.slice(6));return e?e.isComposite?[o]:[{icon:f.square,title:`State type`,panel:{title:`State type`,items:[{t:`state`,g:`▢`},{t:`choice`,g:`◇`},{t:`fork`,g:`⑃`},{t:`join`,g:`⑂`}].map(t=>({glyph:t.g,title:t.t,selected:(e.stereotype??`state`)===t.t,onClick:()=>this.editor.dispatch({type:`st.setStateType`,id:e.id,stype:t.t})}))}},{icon:f.stickyNote,title:`Add note`,panel:{title:`Note`,items:[`left`,`right`].map(t=>({glyph:t===`left`?`◧`:`◨`,title:`Note ${t}`,onClick:()=>this.editor.dispatch({type:`st.addStateNote`,id:e.id,side:t})}))}},{icon:f.frame,title:`Move to composite`,onClick:()=>this.editor.dispatch({type:`st.moveToComposite`,id:e.id})},o,a]:[]}if(this.editor.result.state&&n.startsWith(`trans:`))return[{icon:f.arrowLeftRight,title:`Reverse direction`,onClick:()=>this.editor.dispatch({type:`st.reverseTransition`,transId:n})},o,a];if(this.editor.result.classGraph&&n.startsWith(`class:`)){let e=this.editor.result.classGraph.classById.get(n.slice(6));return e?[{icon:f.listPlus,title:`Add member`,onClick:()=>{this.editor.dispatch({type:`cl.addMember`,id:e.id,text:`+attribute`})}},{icon:f.braces,title:`Annotation`,panel:{title:`Annotation`,items:[...[`interface`,`abstract`,`service`,`enumeration`].map(t=>({glyph:t,title:`<<${t}>>`,onClick:()=>this.editor.dispatch({type:`cl.setAnnotation`,id:e.id,annotation:t})})),{glyph:`none`,title:`Remove annotation`,onClick:()=>this.editor.dispatch({type:`cl.setAnnotation`,id:e.id,annotation:null})}]}},{icon:f.stickyNote,title:`Add note`,onClick:()=>this.editor.dispatch({type:`cl.addNoteFor`,id:e.id})},{icon:f.pencil,title:`Rename class`,onClick:()=>this.editEntityLabel(n)},a]:[]}if(this.editor.result.classGraph&&n.startsWith(`rel:`)){let e=this.editor.result.classGraph.relations.find(e=>e.entityId===n);return e?[{icon:f.arrowRight,title:`Relation type`,panel:{title:`Relation type`,items:[{op:`<|--`,g:`◁—`,t:`inheritance`},{op:`*--`,g:`◆—`,t:`composition`},{op:`o--`,g:`◇—`,t:`aggregation`},{op:`-->`,g:`—▶`,t:`association`},{op:`--`,g:`——`,t:`link (solid)`},{op:`..>`,g:`⋯▶`,t:`dependency`},{op:`..|>`,g:`⋯▷`,t:`realization`},{op:`..`,g:`⋯⋯`,t:`link (dashed)`}].map(t=>({glyph:t.g,title:t.t,selected:e.stmt.op===t.op,onClick:()=>this.editor.dispatch({type:`cl.setRelationType`,relId:n,op:t.op})}))}},{icon:f.arrowLeftRight,title:`Reverse direction`,onClick:()=>this.editor.dispatch({type:`cl.reverseRelation`,relId:n})},{glyph:`1:1`,title:`Cardinality (e.g. 1, 0..1, 1..*, *)`,onClick:()=>{let t=this.entityElement(n);if(!t)return;this.popover.hide();let r=`${e.stmt.sourceCard??``}:${e.stmt.targetCard??``}`;this.openOverlayEditor(t,r,t=>{let[r=``,i=``]=t.split(`:`);this.editor.dispatch({type:`cl.setCardinality`,relId:n,side:`source`,value:r.trim()||null},`canvas`);let a=this.editor.result.classGraph?.relations.find(t=>t.lineIndex===e.lineIndex&&t.source===e.source&&t.target===e.target);a&&this.editor.dispatch({type:`cl.setCardinality`,relId:a.entityId,side:`target`,value:i.trim()||null},`canvas`)})}},o,a]:[]}if(this.editor.result.er&&n.startsWith(`entity:`)){let e=this.editor.result.er.entityById.get(n.slice(7));return e?[{icon:f.listPlus,title:`Add attribute`,onClick:()=>this.editor.dispatch({type:`er.addAttribute`,id:e.id})},{icon:f.pencil,title:`Rename entity`,onClick:()=>this.editEntityLabel(n)},a]:[]}if(this.editor.result.er&&n.startsWith(`erel:`)){let e=this.editor.result.er.relations.find(e=>e.entityId===n);if(!e)return[];let t=[{c:`zero-or-one`,g:`0..1`},{c:`exactly-one`,g:`1`},{c:`zero-or-more`,g:`0..*`},{c:`one-or-more`,g:`1..*`}],r=r=>({icon:r===`left`?f.arrowLeftToLine:f.arrowRightToLine,title:`${r===`left`?`Source`:`Target`} cardinality`,panel:{title:`${r===`left`?e.source:e.target} cardinality`,items:t.map(e=>({glyph:e.g,title:e.c,onClick:()=>this.editor.dispatch({type:`er.setCardinality`,relId:n,side:r,card:e.c})}))}});return[r(`left`),r(`right`),{icon:e.stmt.line===`--`?f.minus:f.ellipsis,title:e.stmt.line===`--`?`Make non-identifying (dashed)`:`Make identifying (solid)`,onClick:()=>this.editor.dispatch({type:`er.setIdentifying`,relId:n,identifying:e.stmt.line!==`--`})},o,a]}if(this.editor.result.pie&&n.startsWith(`slice:`)){let e=this.editor.result.pie.slices.find(e=>e.entityId===n);return e?[{icon:f.hash,title:`Edit value`,onClick:()=>this.editEntityLabel(n)},{icon:f.pencil,title:`Edit label`,onClick:()=>{let t=this.entityElement(n);t&&(this.popover.hide(),this.openOverlayEditor(t,e.label,e=>this.editor.dispatch({type:`pie.setLabel`,sliceId:n,label:e},`canvas`)))}},a]:[]}if(this.editor.result.gantt&&n.startsWith(`task:`)){let e=this.editor.result.gantt.tasks.find(e=>e.entityId===n);return e?[{icon:f.pencil,title:`Rename task`,onClick:()=>this.editEntityLabel(n)},{icon:f.calendar,title:`Edit schedule (id, start, duration)`,onClick:()=>{let t=this.entityElement(n);t&&(this.popover.hide(),this.openOverlayEditor(t,e.meta,e=>this.editor.dispatch({type:`gantt.setTaskMeta`,taskId:n,meta:e},`canvas`)))}},a]:[]}if(this.editor.result.lineItems&&n.startsWith(`item:`))return[{icon:f.pencil,title:`Edit line`,onClick:()=>this.editEntityLabel(n)},a];if(i&&n.startsWith(`participant:`)){let e=i.participantById.get(n.slice(12));if(!e)return[];let r={participant:`▭`,actor:`웃`,boundary:`⊢○`,control:`◉`,entity:`◯`,database:`⛁`,collections:`⧉`,queue:`▤`};return[{icon:f.user,title:`Participant type`,panel:{title:`Participant type`,items:t.map(t=>({glyph:r[t],title:t,selected:e.ptype===t,onClick:()=>this.editor.dispatch({type:`seq.setParticipantType`,id:e.id,ptype:t})}))}},{icon:f.pencil,title:`Rename`,onClick:()=>this.editEntityLabel(n)},a]}if(i&&n.startsWith(`event:`)){let t=i.events.find(e=>e.entityId===n);if(!t)return[];if(t.kind===`message`){let r={"->":`——`,"->>":`—▶`,"-->":`⋯⋯`,"-->>":`⋯▶`,"-x":`—✕`,"--x":`⋯✕`,"-)":`—⟩`,"--)":`⋯⟩`};return[{icon:f.arrowRight,title:`Message type`,panel:{title:`Message type`,items:e.map(e=>({glyph:r[e.op],title:e.label,selected:t.stmt.op===e.op,onClick:()=>this.editor.dispatch({type:`seq.setMessageOp`,eventId:n,op:e.op})}))}},{icon:f.arrowLeftRight,title:`Reverse direction`,onClick:()=>this.editor.dispatch({type:`seq.reverseMessage`,eventId:n})},{icon:f.group,title:`Wrap in fragment`,panel:{title:`Fragment`,items:[`loop`,`alt`,`opt`,`par`,`critical`,`break`,`rect`].map(e=>({glyph:e,title:`Wrap in ${e}`,onClick:()=>this.editor.dispatch({type:`seq.wrapInFragment`,eventId:n,kind:e})}))}},o,a]}return[o,a]}return[]}computeDropSlots(){let e=this.editor.result.sequence;if(this.dropSlots=[],!e||!this.seqCorrelation)return;let t=e.events.map(e=>{let t=this.seqCorrelation.events.get(e.entityId);if(!t)return null;let n=this.hostRect(t);return{ev:e,y:n.top+n.height/2}}).filter(e=>e!==null);if(t.length){this.dropSlots.push({y:t[0].y-24,afterEvent:null});for(let e=1;e<t.length;e++)this.dropSlots.push({y:(t[e-1].y+t[e].y)/2,afterEvent:t[e-1].ev.entityId});this.dropSlots.push({y:t[t.length-1].y+24,afterEvent:t[t.length-1].ev.entityId})}}nearestSlot(e){let t=null,n=1/0;for(let r of this.dropSlots){let i=Math.abs(r.y-e);i<n&&(n=i,t=r)}return t}showDropIndicator(e){this.dropIndicator||(this.dropIndicator=document.createElement(`div`),this.dropIndicator.className=`mw-drop-indicator`,this.overlayHost.appendChild(this.dropIndicator)),this.dropIndicator.style.top=`${e}px`}plusHovered=!1;lifelineClearTimer=null;onLifelineHover(e){if(this.readOnly||!this.seqCorrelation||this.connectSource||!this.editor.result.sequence)return;let t=null;for(let[n,r]of this.seqCorrelation.lifelines){let i=r.getBoundingClientRect(),a=i.left+i.width/2;if(Math.abs(e.clientX-a)<=16&&e.clientY>=i.top-8&&e.clientY<=i.bottom+8){t=n;break}}t!==this.hoveredLifeline&&(t?this.showLifelinePlus(t):this.scheduleLifelineClear())}showLifelinePlus(e){this.clearLifelineUi();let t=this.editor.result.sequence,n=this.seqCorrelation?.lifelines.get(e);if(!t||!n)return;this.hoveredLifeline=e;let r=e.slice(12),i=this.hostRect(n),a=i.left+i.width/2,o=[],s=t.events.map(e=>{let t=this.seqCorrelation?.events.get(e.entityId);if(!t)return null;let n=this.hostRect(t);return{ev:e,y:n.top+n.height/2}}).filter(e=>e!==null);if(s.length===0)o.push({y:i.top+i.height/2,afterEvent:null});else{o.push({y:(i.top+s[0].y)/2,afterEvent:null});for(let e=1;e<s.length;e++)o.push({y:(s[e-1].y+s[e].y)/2,afterEvent:s[e-1].ev.entityId});o.push({y:(s[s.length-1].y+i.top+i.height)/2,afterEvent:s[s.length-1].ev.entityId})}for(let e of o){let t=document.createElement(`button`);t.type=`button`,t.className=`mw-lifeline-plus`,t.textContent=`+`,t.title=`Insert here (self message / note)`,t.style.left=`${a}px`,t.style.top=`${e.y}px`,t.addEventListener(`pointerenter`,()=>{this.plusHovered=!0}),t.addEventListener(`pointerleave`,()=>{this.plusHovered=!1,this.scheduleLifelineClear()}),t.addEventListener(`click`,n=>{n.stopPropagation(),this.openPlusMenu(t,r,e.afterEvent)}),this.overlayHost.appendChild(t),this.plusButtons.push(t)}}openPlusMenu(e,t,n){this.plusMenu?.remove();let r=document.createElement(`div`);r.className=`mw-plus-menu`,r.style.left=e.style.left,r.style.top=`${parseFloat(e.style.top)+12}px`,r.addEventListener(`pointerdown`,e=>e.stopPropagation());let i=(e,t)=>{let n=document.createElement(`button`);n.type=`button`,n.textContent=e,n.addEventListener(`click`,e=>{e.stopPropagation(),this.clearLifelineUi(),t()}),r.appendChild(n)};i(`↩ Self message`,()=>{let e=this.editor.dispatch({type:`seq.addMessage`,source:t,target:t,text:`message`,afterEvent:n},`canvas`);e?.created?.[0]&&(this.pendingEditEntity=e.created[0])});let a=(e,r)=>i(e,()=>{let e=this.editor.dispatch({type:`seq.addNote`,participant:t,placement:r,text:`note`,afterEvent:n},`canvas`);e?.created?.[0]&&(this.pendingEditEntity=e.created[0])});a(`▭ Note over`,`over`),a(`▭ Note left`,`left of`),a(`▭ Note right`,`right of`),this.overlayHost.appendChild(r),this.plusMenu=r}scheduleLifelineClear(){this.lifelineClearTimer&&clearTimeout(this.lifelineClearTimer),this.lifelineClearTimer=setTimeout(()=>{!this.plusHovered&&!this.plusMenu&&this.clearLifelineUi()},400)}clearLifelineUi(){this.plusButtons.forEach(e=>e.remove()),this.plusButtons=[],this.plusMenu?.remove(),this.plusMenu=null,this.hoveredLifeline=null,this.plusHovered=!1}clientToSvg(e,t){if(!this.svg)return null;let n=this.svg.getScreenCTM();if(!n)return null;let r=new DOMPoint(e,t).matrixTransform(n.inverse());return{x:r.x,y:r.y}}entityCenter(e){let t=this.entityElement(e);if(!t)return null;let n=t.getBoundingClientRect();return this.clientToSvg(n.left+n.width/2,n.top+n.height/2)}async validate(){try{return await this.mermaid.parse(this.editor.code),!0}catch(e){let t=e instanceof Error?e.message.split(`
|
|
124
|
+
`)[0]:String(e);return this.editor.setDiagnostics([{message:t,span:null,severity:`error`,source:`mermaid`}]),!1}}destroy(){this.renderTimer&&clearTimeout(this.renderTimer),this.lifelineClearTimer&&clearTimeout(this.lifelineClearTimer),this.inPlaceSession?.liveTimer&&clearTimeout(this.inPlaceSession.liveTimer),this.inPlaceSession=null,this.svgTransformObserver?.disconnect(),this.svgTransformObserver=null,this.disposers.forEach(e=>e()),this.closeInlineEditor(!1),this.cancelConnect(),this.clearLifelineUi(),this.popover.hide(),this.container.classList.remove(`mw-canvas`,`mw-tool-connect`,`mw-readonly`,`mw-panzoom`,`mw-panning`),this.svgHost.remove(),this.overlayHost.remove(),this.errorBadge.remove(),this.zoomControls?.remove()}};export{S as MermaidCanvasView,p as Popover,r as correlateFlowchart,u as correlateSequence};
|