agentic-mermaid 0.4.1 → 0.5.3
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/AGENT_NATIVE.md +94 -627
- package/CHANGELOG.md +651 -0
- package/Instructions_for_agents.md +44 -23
- package/LICENSES/Khroma-MIT.txt +21 -0
- package/LICENSES/Mermaid-MIT.txt +21 -0
- package/LICENSES/es-toolkit-MIT.txt +21 -0
- package/LICENSES/pele-MIT.txt +40 -0
- package/LICENSES/zenuml-core-MIT.txt +21 -0
- package/README.md +93 -50
- package/SECURITY.md +28 -12
- package/THIRD_PARTY_NOTICES.md +60 -0
- package/assets/hero.png +0 -0
- package/dist/agent-core.d.ts +478 -210
- package/dist/agent-core.js +1 -396
- package/dist/agent.d.ts +17 -8
- package/dist/agent.js +1 -408
- package/dist/agentic-mermaid-mcp.js +1 -11
- package/dist/am.js +1 -34562
- package/dist/browser-lazy/chunks/agentic-producer-core-CC6OOLDW.js +1 -0
- package/dist/browser-lazy/chunks/architecture-QUFVKYJR.js +13 -0
- package/dist/browser-lazy/chunks/block-6J3Q63BO.js +11 -0
- package/dist/browser-lazy/chunks/builtin-backends-7SOZZHPF.js +12 -0
- package/dist/browser-lazy/chunks/c4-SQVBZAKJ.js +10 -0
- package/dist/browser-lazy/chunks/chunk-2GPK4VFF.js +5 -0
- package/dist/browser-lazy/chunks/chunk-2I4UPL7Q.js +3 -0
- package/dist/browser-lazy/chunks/chunk-2SH76OTH.js +1 -0
- package/dist/browser-lazy/chunks/chunk-2UIA2IME.js +3 -0
- package/dist/browser-lazy/chunks/chunk-4LHYF3BS.js +1 -0
- package/dist/browser-lazy/chunks/chunk-5B2Z7575.js +1 -0
- package/dist/browser-lazy/chunks/chunk-5FQ534HP.js +1 -0
- package/dist/browser-lazy/chunks/chunk-5UVGUSD6.js +1 -0
- package/dist/browser-lazy/chunks/chunk-5X6MJX3H.js +1 -0
- package/dist/browser-lazy/chunks/chunk-AMJLVPUB.js +4 -0
- package/dist/browser-lazy/chunks/chunk-BU5LHXNJ.js +3 -0
- package/dist/browser-lazy/chunks/chunk-BY2CPG6B.js +1 -0
- package/dist/browser-lazy/chunks/chunk-CN7WTBWB.js +1 -0
- package/dist/browser-lazy/chunks/chunk-CQE4HQEW.js +1 -0
- package/dist/browser-lazy/chunks/chunk-CSFUKSU6.js +1 -0
- package/dist/browser-lazy/chunks/chunk-DF6765YX.js +17 -0
- package/dist/browser-lazy/chunks/chunk-E2WMJZNM.js +1 -0
- package/dist/browser-lazy/chunks/chunk-FAIMVOX5.js +6 -0
- package/dist/browser-lazy/chunks/chunk-GVOEAY52.js +1 -0
- package/dist/browser-lazy/chunks/chunk-HLWUNUCM.js +1 -0
- package/dist/browser-lazy/chunks/chunk-ICC7HBJX.js +1 -0
- package/dist/browser-lazy/chunks/chunk-J35HAQQF.js +20 -0
- package/dist/browser-lazy/chunks/chunk-J7FFAFQF.js +1 -0
- package/dist/browser-lazy/chunks/chunk-LH7HUDKW.js +1 -0
- package/dist/browser-lazy/chunks/chunk-N5ELX7LR.js +2 -0
- package/dist/browser-lazy/chunks/chunk-NMQQMRIR.js +1 -0
- package/dist/browser-lazy/chunks/chunk-NO7ZIVRU.js +1 -0
- package/dist/browser-lazy/chunks/chunk-OZ443IVJ.js +16 -0
- package/dist/browser-lazy/chunks/chunk-PQGPS2YV.js +7 -0
- package/dist/browser-lazy/chunks/chunk-QA6GJQ4X.js +1 -0
- package/dist/browser-lazy/chunks/chunk-RIVTHZAQ.js +1 -0
- package/dist/browser-lazy/chunks/chunk-SZELX2EJ.js +1 -0
- package/dist/browser-lazy/chunks/chunk-TYZOZXUJ.js +22 -0
- package/dist/browser-lazy/chunks/chunk-UL6NDWLL.js +1 -0
- package/dist/browser-lazy/chunks/chunk-VQYYGAXP.js +1 -0
- package/dist/browser-lazy/chunks/chunk-VWVZGQE2.js +1 -0
- package/dist/browser-lazy/chunks/chunk-X2UYKWKM.js +4 -0
- package/dist/browser-lazy/chunks/chunk-YCEICNM6.js +1 -0
- package/dist/browser-lazy/chunks/chunk-Z3FDIVLN.js +20 -0
- package/dist/browser-lazy/chunks/class-5QA4SCTS.js +13 -0
- package/dist/browser-lazy/chunks/decode-63UIZGD2.js +1 -0
- package/dist/browser-lazy/chunks/elk.bundled-L4CADV5W.js +24 -0
- package/dist/browser-lazy/chunks/er-7ZSKGN7Y.js +11 -0
- package/dist/browser-lazy/chunks/eventmodeling-2BPLHWRN.js +19 -0
- package/dist/browser-lazy/chunks/flowchart-NEIMZTB5.js +4 -0
- package/dist/browser-lazy/chunks/forest-implementation-AEP24AIP.js +1 -0
- package/dist/browser-lazy/chunks/gantt-RDPIFYAF.js +11 -0
- package/dist/browser-lazy/chunks/gitgraph-N4Y5RYB7.js +9 -0
- package/dist/browser-lazy/chunks/ishikawa-LD3YBDJN.js +6 -0
- package/dist/browser-lazy/chunks/journey-6YQR5DJX.js +16 -0
- package/dist/browser-lazy/chunks/kanban-PLMJ7NBW.js +20 -0
- package/dist/browser-lazy/chunks/mermaid-yaml-runtime-QVYX4EWK.js +136 -0
- package/dist/browser-lazy/chunks/mindmap-K2UBFO3Y.js +12 -0
- package/dist/browser-lazy/chunks/packet-CUW4QY6Y.js +7 -0
- package/dist/browser-lazy/chunks/pie-7F7UUCG3.js +15 -0
- package/dist/browser-lazy/chunks/quadrant-TOONO2WC.js +10 -0
- package/dist/browser-lazy/chunks/radar-J6JVWVAX.js +16 -0
- package/dist/browser-lazy/chunks/render-core-BZOM3K7D.js +3 -0
- package/dist/browser-lazy/chunks/requirement-CMAKDJPO.js +19 -0
- package/dist/browser-lazy/chunks/sankey-AWXQEP3F.js +13 -0
- package/dist/browser-lazy/chunks/sequence-Q2RJRB4L.js +5 -0
- package/dist/browser-lazy/chunks/state-WRBFQEDX.js +4 -0
- package/dist/browser-lazy/chunks/timeline-D2KILFXM.js +6 -0
- package/dist/browser-lazy/chunks/treemap-N3VYX5D4.js +6 -0
- package/dist/browser-lazy/chunks/xychart-G73OGK66.js +16 -0
- package/dist/browser-lazy/chunks/zenuml-H4BXNYXR.js +16 -0
- package/dist/browser-lazy/index.d.ts +544 -275
- package/dist/browser-lazy/index.js +1 -1
- package/dist/browser.global.js +802 -565
- package/dist/chunk-3LGLPG33.js +2 -0
- package/dist/chunk-7CRDX2QR.js +2 -0
- package/dist/chunk-7PPW2BMO.js +2 -0
- package/dist/chunk-DQDKA5ND.js +2 -0
- package/dist/chunk-EHCMJUMD.js +52 -0
- package/dist/chunk-GVCHLSHH.js +4 -0
- package/dist/chunk-H3NCS2XZ.js +19 -0
- package/dist/chunk-JZOJ4YGS.js +201 -0
- package/dist/chunk-MKE7GNYU.js +146 -0
- package/dist/chunk-NKNFOREZ.js +2 -0
- package/dist/chunk-O7H2UX5K.js +2 -0
- package/dist/chunk-OMY6NRQD.js +58 -0
- package/dist/chunk-UA234O4M.js +4 -0
- package/dist/chunk-VUFVLGTH.js +2 -0
- package/dist/chunk-XU5LPD2D.js +2 -0
- package/dist/cli-YGGTJZH7.js +226 -0
- package/dist/elk-constructor.js +2 -0
- package/dist/elk-constructor.node.js +11 -0
- package/dist/index-EeXqJXr5.d.ts +1223 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +1 -334
- package/dist/jsonl-RPJY6YWO.js +2 -0
- package/dist/mcp-cli-63DYXTVD.js +2 -0
- package/dist/{index-BGA_-6LV.d.ts → paint-certification-6rwQjIv_.d.ts} +5283 -6173
- package/dist/server-5NEOHOFS.js +524 -0
- package/dist/svg-styles-BdnoM7AT.d.ts +724 -0
- package/dist/svg-styles.d.ts +1 -0
- package/dist/svg-styles.js +2 -0
- package/dist/svg.d.ts +13 -0
- package/dist/svg.js +2 -0
- package/dist/types-BcS52Mjt.d.ts +1360 -0
- package/dist/zenuml/chunks/appearance-UOQ5KA6O.js +1 -0
- package/dist/zenuml/chunks/builtin-backends-KDKE7YHO.js +12 -0
- package/dist/zenuml/chunks/chunk-42DXZ5C6.js +4 -0
- package/dist/zenuml/chunks/chunk-7TVYPTDW.js +1 -0
- package/dist/zenuml/chunks/chunk-EVPSMEKN.js +1 -0
- package/dist/zenuml/chunks/chunk-OXQWRSBM.js +20 -0
- package/dist/zenuml/chunks/chunk-QWX77U7G.js +2 -0
- package/dist/zenuml/chunks/chunk-RLJEI7YN.js +29 -0
- package/dist/zenuml/chunks/chunk-RZ6XK5CD.js +29 -0
- package/dist/zenuml/chunks/decode-BWERFDGK.js +1 -0
- package/dist/zenuml/chunks/mermaid-yaml-runtime-KZVU74WU.js +136 -0
- package/dist/zenuml/chunks/render-core-V5RQ737O.js +3 -0
- package/dist/zenuml/chunks/zenuml-EA2ZFRUX.js +20 -0
- package/dist/zenuml-frame.global.js +3626 -0
- package/dist/zenuml.d.ts +83 -0
- package/dist/zenuml.js +1 -0
- package/docs/MCP-DIRECTORY-LISTINGS.md +5 -1
- package/docs/README.md +59 -103
- package/docs/agent-api-cookbook.md +26 -16
- package/docs/agent-mutation-policy.md +86 -15
- package/docs/agent-workflow-examples.md +1 -1
- package/docs/api-advanced.md +385 -0
- package/docs/api.md +320 -366
- package/docs/ascii.md +40 -4
- package/docs/browser.md +46 -7
- package/docs/choosing-a-diagram.md +148 -0
- package/docs/code-mode-impact.md +1 -0
- package/docs/comparison.md +244 -28
- package/docs/computational-aesthetics-prototype-plan.md +10 -10
- package/docs/config.md +60 -2
- package/docs/custom-fonts.md +78 -21
- package/docs/diagram-families.md +160 -10
- package/docs/eventmodeling-and-zenuml.md +165 -0
- package/docs/features.md +21 -19
- package/docs/fork-differences.md +105 -32
- package/docs/getting-started.md +56 -51
- package/docs/layout-certification.md +126 -0
- package/docs/mcp-code-mode-rationale.md +20 -12
- package/docs/mcp-http-transport.md +14 -8
- package/docs/quality.md +145 -15
- package/docs/react.md +76 -31
- package/docs/style-authoring.md +23 -11
- package/docs/svg-semantic-contract.md +104 -4
- package/docs/testing-strategy.md +684 -126
- package/docs/theming.md +27 -8
- package/examples/styles/readme-hero.md +25 -0
- package/examples/styles/readme-hero.mmd +13 -0
- package/examples/styles/readme-hero.style.json +7 -0
- package/package.json +114 -57
- package/server.json +2 -2
- package/skills/agentic-mermaid-diagram-workflow/SKILL.md +26 -8
- package/skills/agentic-mermaid-diagram-workflow/references/cli.md +13 -3
- package/skills/agentic-mermaid-diagram-workflow/references/code-mode.md +2 -1
- package/skills/agentic-mermaid-diagram-workflow/references/flowchart.md +9 -6
- package/skills/agentic-mermaid-diagram-workflow/references/hosted-mcp.md +1 -0
- package/skills/agentic-mermaid-diagram-workflow/references/sequence.md +4 -3
- package/skills/agentic-mermaid-diagram-workflow/references/timeline.md +7 -6
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/agentflow.md +574 -0
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/architecture.md +10 -2
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/c4.md +18 -0
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/classDiagram.md +123 -0
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/cynefin.md +6 -1
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/entityRelationshipDiagram.md +129 -9
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/eventmodeling.md +22 -0
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/flowchart.md +188 -60
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/gitgraph.md +13 -7
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/mindmap.md +110 -1
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/packet.md +38 -0
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/requirementDiagram.md +115 -0
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/sequenceDiagram.md +101 -0
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/stateDiagram.md +87 -0
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/swimlanes.md +105 -2
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/timeline.md +12 -6
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/usecase.md +953 -0
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/venn.md +77 -0
- package/skills/agentic-mermaid-diagram-workflow/references/upstream/xyChart.md +1 -1
- package/dist/browser-lazy/chunks/architecture-KTHE2HX3.js +0 -31
- package/dist/browser-lazy/chunks/chunk-2XCPFAD5.js +0 -46
- package/dist/browser-lazy/chunks/chunk-3H4F7RBT.js +0 -1
- package/dist/browser-lazy/chunks/chunk-4EVLW2NJ.js +0 -1
- package/dist/browser-lazy/chunks/chunk-5Q4S74UO.js +0 -1
- package/dist/browser-lazy/chunks/chunk-6OAPWSDO.js +0 -1
- package/dist/browser-lazy/chunks/chunk-A7L4WWVW.js +0 -143
- package/dist/browser-lazy/chunks/chunk-C7FJO2I3.js +0 -4
- package/dist/browser-lazy/chunks/chunk-D3XXDKIO.js +0 -1
- package/dist/browser-lazy/chunks/chunk-DXA5WL7H.js +0 -4
- package/dist/browser-lazy/chunks/chunk-EPFMQPXX.js +0 -1
- package/dist/browser-lazy/chunks/chunk-FFOHLPDA.js +0 -2
- package/dist/browser-lazy/chunks/chunk-FLD63DXE.js +0 -2
- package/dist/browser-lazy/chunks/chunk-G6OLSHRG.js +0 -7
- package/dist/browser-lazy/chunks/chunk-GRXCKTHX.js +0 -0
- package/dist/browser-lazy/chunks/chunk-I6VE56S7.js +0 -1
- package/dist/browser-lazy/chunks/chunk-KJVNXJ5Y.js +0 -1
- package/dist/browser-lazy/chunks/chunk-L227EPFP.js +0 -11
- package/dist/browser-lazy/chunks/chunk-LNIHDJSF.js +0 -1
- package/dist/browser-lazy/chunks/chunk-M6BT2HIP.js +0 -1
- package/dist/browser-lazy/chunks/chunk-NZRUMODH.js +0 -1
- package/dist/browser-lazy/chunks/chunk-OFRMKQA6.js +0 -1
- package/dist/browser-lazy/chunks/chunk-P7HMSKHJ.js +0 -1
- package/dist/browser-lazy/chunks/chunk-PXKL3O6H.js +0 -1
- package/dist/browser-lazy/chunks/chunk-PZEWZT35.js +0 -1
- package/dist/browser-lazy/chunks/chunk-STQRDZ67.js +0 -1
- package/dist/browser-lazy/chunks/chunk-SUFMSWTX.js +0 -1
- package/dist/browser-lazy/chunks/chunk-T7IJ6V4B.js +0 -3
- package/dist/browser-lazy/chunks/chunk-UAEZO5VL.js +0 -1
- package/dist/browser-lazy/chunks/chunk-WEUWIFG3.js +0 -1
- package/dist/browser-lazy/chunks/chunk-X64T74C5.js +0 -24
- package/dist/browser-lazy/chunks/class-F7R6TJ73.js +0 -9
- package/dist/browser-lazy/chunks/er-BDK7CM5L.js +0 -9
- package/dist/browser-lazy/chunks/flowchart-KFU6XV7S.js +0 -4
- package/dist/browser-lazy/chunks/gantt-I64VVDSP.js +0 -28
- package/dist/browser-lazy/chunks/gitgraph-EDUVJ5IJ.js +0 -8
- package/dist/browser-lazy/chunks/journey-TLO2RNM3.js +0 -40
- package/dist/browser-lazy/chunks/mindmap-OJCNDYPM.js +0 -9
- package/dist/browser-lazy/chunks/pie-HVG6XO7K.js +0 -19
- package/dist/browser-lazy/chunks/quadrant-U6S2L4MJ.js +0 -24
- package/dist/browser-lazy/chunks/radar-ZDLOBTVG.js +0 -32
- package/dist/browser-lazy/chunks/render-core-Y2DFNMQG.js +0 -12
- package/dist/browser-lazy/chunks/sequence-Z4WFS3VB.js +0 -12
- package/dist/browser-lazy/chunks/state-2HV2YGN3.js +0 -4
- package/dist/browser-lazy/chunks/timeline-XM4UFPOC.js +0 -20
- package/dist/browser-lazy/chunks/xychart-7JDHWTQY.js +0 -36
- package/dist/chunk-GGXCNCNA.js +0 -4118
- package/dist/chunk-IVD4NXNE.js +0 -615
- package/dist/chunk-JDMRPUAG.js +0 -37
- package/dist/chunk-JWAAW3FH.js +0 -149
- package/dist/chunk-LCGBT32P.js +0 -62036
- package/dist/chunk-RWMZRUIC.js +0 -4715
- package/dist/mcp-cli-4MLKC3ZH.js +0 -17
- package/docs/mutation-testing.md +0 -285
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import{a as e,b as t}from"./chunk-5X6MJX3H.js";import{i as n}from"./chunk-J7FFAFQF.js";import{a as i,e as o,f as r,j as l,l as a,n as s}from"./chunk-2SH76OTH.js";import{d as d}from"./chunk-AMJLVPUB.js";import{v as u,y as c}from"./chunk-DF6765YX.js";import{j as f}from"./chunk-J35HAQQF.js";import{a as h,c as g,d as p}from"./chunk-CN7WTBWB.js";import{D as y,a as m,b as k,c as b,d as x,e as v,g as w,i as S}from"./chunk-HLWUNUCM.js";import{c as $,s as L,x as M}from"./chunk-X2UYKWKM.js";import{c as W,i as j,j as C,k as F}from"./chunk-TYZOZXUJ.js";import{c as I,h as _}from"./chunk-NO7ZIVRU.js";import{Qb as z,Va as E,Z as V,a as P,o as A,pa as O}from"./chunk-Z3FDIVLN.js";import{H as N,I as H}from"./chunk-N5ELX7LR.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var T=Object.freeze({id:"sankey",upstreamId:"sankey",maturity:"experimental",label:"Sankey",headers:["sankey","sankey-beta"],aliases:[],config:{section:"sankey",keys:["width","height","linkColor","nodeAlignment","showValues","prefix","suffix","labelStyle","nodeWidth","nodePadding","nodeColors","useMaxWidth"],noopKeys:["useMaxWidth"]},identity:{id:"family:sankey",kind:"family",version:"1.0.0",compatibility:{core:"0.5.3"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["value","category"],semanticRoles:["prelude","chrome","defs","edge","bar","label","title"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"bar",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"bar",primitive:"data-mark",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`sankey-beta
|
|
2
|
+
Coal,Electricity grid,127.93
|
|
3
|
+
Electricity grid,Industry,71.24
|
|
4
|
+
Electricity grid,Losses,56.69`,detect:N,detectLoose:H}),B={width:600,height:400,linkColor:{mode:"gradient"},nodeAlignment:"justify",showValues:!0,prefix:"",suffix:"",labelStyle:"legacy",nodeWidth:10,nodePadding:12,nodeColors:{}},U=["justify","center","left","right"],X=["legacy","outlined"],q=["source","target","gradient"],Y=Object.freeze({width:{min:1,max:1e4},height:{min:1,max:1e4},nodeWidth:{min:1,max:200},nodePadding:{min:0,max:200}});function R(e,t,n){if(!("number"!=typeof e||!Number.isFinite(e))&&!(e<t||e>n))return e}function D(e={}){let t=c(e,["sankey"])??{},n={...B},i=R(t.width,Y.width.min,Y.width.max);void 0!==i&&(n.width=i);let o=R(t.height,Y.height.min,Y.height.max);void 0!==o&&(n.height=o);let r=R(t.nodeWidth,Y.nodeWidth.min,Y.nodeWidth.max);void 0!==r&&(n.nodeWidth=r);let l=R(t.nodePadding,Y.nodePadding.min,Y.nodePadding.max);void 0!==l&&(n.nodePadding=l);let a=t.nodeAlignment;"string"==typeof a&&U.includes(a)&&(n.nodeAlignment=a);let s=t.labelStyle;"string"==typeof s&&X.includes(s)&&(n.labelStyle=s),"boolean"==typeof t.showValues&&(n.showValues=t.showValues),"string"==typeof t.prefix&&(n.prefix=t.prefix),"string"==typeof t.suffix&&(n.suffix=t.suffix);let d=t.linkColor;if("string"==typeof d)if(q.includes(d))n.linkColor={mode:d};else{let e=W(d,!0);void 0!==e&&(n.linkColor={mode:"static",color:e})}let u=c(e,["sankey","nodeColors"]);if(u){let e={};for(let[t,i]of Object.entries(u)){let o=W(i,"gradient"!==n.linkColor.mode);void 0!==o&&(e[t]=o)}Object.keys(e).length>0&&(n.nodeColors=Object.freeze(e))}return n}var J={width:a(Y.width.min,Y.width.max),height:a(Y.height.min,Y.height.max),nodeWidth:a(Y.nodeWidth.min,Y.nodeWidth.max),nodePadding:s(Y.nodePadding.max),linkColor:i("source, target, gradient, or a drawable CSS color",e=>"string"==typeof e&&(["source","target","gradient"].includes(e)||void 0!==W(e,!0))),nodeAlignment:l("justify","center","left","right"),showValues:o,prefix:r,suffix:r,labelStyle:l("legacy","outlined"),nodeColors:i("an object mapping node labels to drawable CSS colors",e=>!!e&&"object"==typeof e&&!Array.isArray(e)&&Object.values(e).every(e=>void 0!==W(e,!0)))};function Q(e,t){let n;if(void 0===t)for(let t of e)null!=t&&(n<t||void 0===n&&t>=t)&&(n=t);else{let i=-1;for(let o of e)null!=(o=t(o,++i,e))&&(n<o||void 0===n&&o>=o)&&(n=o)}return n}function Z(e,t){let n;if(void 0===t)for(let t of e)null!=t&&(n>t||void 0===n&&t>=t)&&(n=t);else{let i=-1;for(let o of e)null!=(o=t(o,++i,e))&&(n>o||void 0===n&&o>=o)&&(n=o)}return n}function K(e,t){let n=0;if(void 0===t)for(let t of e)(t*=1)&&(n+=t);else{let i=-1;for(let o of e)(o=+t(o,++i,e))&&(n+=o)}return n}function G(e){return e.target.depth}function ee(e,t){return e.sourceLinks.length?e.depth:t-1}function et(e){return function(){return e}}function en(e,t){return eo(e.source,t.source)||e.index-t.index}function ei(e,t){return eo(e.target,t.target)||e.index-t.index}function eo(e,t){return e.y0-t.y0}function er(e){return e.value}function el(e){return e.index}function ea(e){return e.nodes}function es(e){return e.links}function ed(e,t){let n=e.get(t);if(!n)throw Error("missing: "+t);return n}function eu({nodes:e}){for(let t of e){let e=t.y0,n=e;for(let n of t.sourceLinks)n.y0=e+n.width/2,e+=n.width;for(let e of t.targetLinks)e.y1=n+e.width/2,n+=e.width}}var ec={nodeLabelFontSize:13,edgeLabelFontSize:13,groupHeaderFontSize:18,nodeLabelFontWeight:500,edgeLabelFontWeight:500,groupHeaderFontWeight:600,nodePaddingX:0,nodePaddingY:0,nodeLineWidth:1,edgeLineWidth:I.connector,groupCornerRadius:0,groupPaddingX:0,groupPaddingY:0,groupLineWidth:I.outerBox};function ef(e){return Math.round(100*e)/100}var eh={left:function(e){return e.depth},right:function(e,t){return t-1-e.height},center:function(e){return e.targetLinks.length?e.depth:e.sourceLinks.length?Z(e.sourceLinks,G)-1:0},justify:ee};function eg(e,t){if(void 0===e||!Number.isFinite(e))throw Error(`d3-sankey did not assign ${t}`);return e}var ep=/^\+?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/,ey=e=>/^sankey(?:-beta)?\s*$/i.test(e.trim());function em(e,t){return e.derived?n(e.color,t,50):e.color}function ek(e){return Math.round(100*e)/100}var eb=$(function(e,i){var o;let r,{positioned:l,colors:a,resolved:s}=i,d=s.renderOptions,u=a.font??"Inter",c=d.transparent??!1,h=_(d,ec,s.styleFace),g=l.visual,p=[],y=null!==(r=(o=a.bg)?O(o):null)&&r<.18?"normal":"multiply",m=t(l.nodes.length,{accent:a.accent,bg:a.bg}),k=new Map,b=h.nodeBorderColor??"var(--_node-stroke)",x=h.nodeLineWidth;l.nodes.forEach((e,t)=>{var n;let i=A(s.styleFace,"bar",{category:e.label,value:e.value},{includeFallback:!1}),o=(n=e.label,Object.hasOwn(g.nodeColors,n)?g.nodeColors[n]:void 0),r=i?.fillColor;k.set(e.label,{color:o??r??m[t],derived:void 0===o&&void 0===r,stroke:i?.strokeColor??i?.borderColor??b,strokeWidth:i?.lineWidth??x})});let v=[];v.push(F(l.width,l.height,a,c,{attrs:{role:"img","aria-roledescription":"sankey diagram"}})),v.push(C(u,!1,a.shadow,a.embedFontImport));let w=j(a);w&&v.push(`<defs>${w}</defs>`),p.push(e.documentOpen({id:"prelude",width:l.width,height:l.height,colors:a,transparent:c,font:u,hasMonoFont:!1},v.join(`
|
|
5
|
+
`)));let S=new Map;if("gradient"===g.linkColor.mode){let t=l.links.map((e,t)=>{let n=`sankey-gradient-${t+1}`;S.set(e.sceneId,n);let i=k.get(e.source),o=k.get(e.target);return{id:n,units:"userSpaceOnUse",x1:e.sx,y1:e.sy,x2:e.tx,y2:e.ty,stops:[{offset:0,color:em(i,a.bg)},{offset:1,color:em(o,a.bg)}]}});t.length>0&&p.push(e.definitions({id:"sankey-gradient-definitions",gradientResources:t},`<defs>
|
|
6
|
+
${f(t)}
|
|
7
|
+
</defs>`))}for(let t of l.links){let i=String(t.width),o=function(e,t,i,o,r){let l=(e,i)=>i?n(e,t,50):e;switch(e.linkColor.mode){case"source":return l(i.color,i.derived);case"target":return l(o.color,o.derived);case"static":return e.linkColor.color;default:if(!r)throw Error("Sankey gradient mode requires a typed local gradient resource");return`url(#${r})`}}(g,a.bg,k.get(t.source),k.get(t.target),S.get(t.sceneId));p.push(e.connector({id:t.sceneId,role:"edge",geometry:{kind:"path",d:t.path,points:t.points},lineStyle:"solid",paint:{fill:"none",stroke:o,strokeWidth:i,opacity:String(.5)},stroke:{mixBlendMode:y,encodesValue:!0},identity:{id:t.id,from:t.source,to:t.target},endpoints:{from:t.sourceId,to:t.targetId},relationship:{kind:"flow",direction:"forward"},channels:{category:t.source,value:t.value},attributes:{className:"sankey-link",data:{source:t.source,target:t.target,value:String(t.value)}}}))}for(let t of l.nodes){let n=k.get(t.label),i=n.color;p.push(e.shape({id:t.id,role:"bar",identity:{id:t.label},geometry:{kind:"rect",x:t.x0,y:t.y0,width:ek(t.x1-t.x0),height:ek(t.y1-t.y0)},paint:{fill:i,stroke:n.stroke,strokeWidth:String(n.strokeWidth)},channels:{category:t.label,value:t.value},attributes:{className:"sankey-node",data:{label:P(t.label),value:String(t.value),layer:String(t.layer)}}}))}let $=h.nodeTextColor??"var(--_text)";for(let t of l.nodes){let n=t.labelLines.join(`
|
|
8
|
+
`);p.push(e.text({id:`${t.id}:label`,role:"label",text:n,x:t.labelX,y:t.labelY,fontSize:h.nodeLabelFontSize,fontWeight:h.nodeLabelFontWeight,letterSpacing:h.nodeLetterSpacing,block:t.labelBlock,anchor:t.labelAnchor,dominantBaseline:"middle",paint:{fill:$,stroke:"var(--bg)",strokeWidth:String(3),paintOrder:"stroke fill"},channels:{category:t.label,value:t.value},attributes:{className:"sankey-node-label"}}))}if(l.title){let t=l.title.text;p.push(e.text({id:"title",identity:{id:l.title.id},role:"title",text:t,x:l.title.x,y:l.title.y,fontSize:h.groupHeaderFontSize,fontWeight:h.groupHeaderFontWeight,letterSpacing:h.groupLetterSpacing,block:l.title.block,anchor:"middle",dominantBaseline:"middle",paint:{fill:h.groupTextColor??h.nodeTextColor??"var(--_text)"},attributes:{className:"sankey-title"}}))}return p.push(e.documentClose()),{family:"sankey",width:l.width,height:l.height,colors:a,transparent:c,parts:p}}),ex=x(T,{configDiagnostics:e=>d("sankey",e,J),normalizeRequest:e=>({familyConfig:{visual:D(e.source.frontmatter)}}),layout:t=>b(function(t,n={},i=B,o){let r,l,a=(r=z(t.nodes),l=new Map,{links:t.links.map(({source:e,target:t})=>{let n=l.get(e);n||l.set(e,n=new Map);let i=n.get(t)??0;n.set(t,i+1);let o=`link:${e}->${t}`;return{id:r(0===i?o:`${o}#${i}`,["link",e,t,i]),source:e,target:t,occurrence:i}}),...t.title?{titleId:r("title",["title"])}:{}}),s=_(n,ec,o),d=s.nodeLabelFontSize,u=i.nodePadding+15*!!i.showValues,c=Math.max(i.width,i.nodeWidth*function(e){let t=new Map(e.nodes.map(e=>[e,0])),n=new Map;for(let i of e.links)t.set(i.target,(t.get(i.target)??0)+1),n.set(i.source,[...n.get(i.source)??[],i.target]);let i=new Map(e.nodes.map(e=>[e,0])),o=e.nodes.filter(e=>0===t.get(e));for(let e=0;e<o.length;e++){let r=o[e];for(let e of n.get(r)??[]){i.set(e,Math.max(i.get(e)??0,(i.get(r)??0)+1));let n=(t.get(e)??1)-1;t.set(e,n),0===n&&o.push(e)}}return Math.max(1,...i.values())+1}(t)),f=t.links.every(e=>0===e.value),h=function(e){let t=new Map(e.nodes.map(e=>[e,0])),n=new Map(e.nodes.map(e=>[e,0]));for(let i of e.links)n.set(i.source,(n.get(i.source)??0)+i.value),t.set(i.target,(t.get(i.target)??0)+i.value);return new Map(e.nodes.map(e=>[e,Math.max(t.get(e)??0,n.get(e)??0)]))}(t),g={nodes:t.nodes.map((e,t)=>({id:e,authoredIndex:t})),links:t.links.map((e,t)=>({source:e.source,target:e.target,value:f?1:e.value,authoredIndex:t,authoredValue:e.value}))};(function(){let e=0,t=0,n=1,i=1,o=24,r=8,l,a=el,s=ee,d,u,c=ea,f=es,h=6;function g(){let g={nodes:c.apply(null,arguments),links:f.apply(null,arguments)};return function({nodes:e,links:t}){for(let[t,n]of e.entries())n.index=t,n.sourceLinks=[],n.targetLinks=[];let n=new Map(e.map((t,n)=>[a(t,n,e),t]));for(let[e,i]of t.entries()){i.index=e;let{source:t,target:o}=i;"object"!=typeof t&&(t=i.source=ed(n,t)),"object"!=typeof o&&(o=i.target=ed(n,o)),t.sourceLinks.push(i),o.targetLinks.push(i)}if(null!=u)for(let{sourceLinks:t,targetLinks:n}of e)t.sort(u),n.sort(u)}(g),function({nodes:e}){for(let t of e)t.value=void 0===t.fixedValue?Math.max(K(t.sourceLinks,er),K(t.targetLinks,er)):t.fixedValue}(g),function({nodes:e}){let t=e.length,n=new Set(e),i=new Set,o=0;for(;n.size;){for(let e of n)for(let{target:t}of(e.depth=o,e.sourceLinks))i.add(t);if(++o>t)throw Error("circular link");n=i,i=new Set}}(g),function({nodes:e}){let t=e.length,n=new Set(e),i=new Set,o=0;for(;n.size;){for(let e of n)for(let{source:t}of(e.height=o,e.targetLinks))i.add(t);if(++o>t)throw Error("circular link");n=i,i=new Set}}(g),function(a){let c=function({nodes:t}){let i=Q(t,e=>e.depth)+1,r=(n-e-o)/(i-1),l=Array(i);for(let n of t){let t=Math.max(0,Math.min(i-1,Math.floor(s.call(null,n,i))));n.layer=t,n.x0=e+t*r,n.x1=n.x0+o,l[t]?l[t].push(n):l[t]=[n]}if(d)for(let e of l)e.sort(d);return l}(a);l=Math.min(r,(i-t)/(Q(c,e=>e.length)-1)),function(e){let n=Z(e,e=>(i-t-(e.length-1)*l)/K(e,er));for(let o of e){let e=t;for(let t of o)for(let i of(t.y0=e,t.y1=e+t.value*n,e=t.y1+l,t.sourceLinks))i.width=i.value*n;e=(i-e+l)/(o.length+1);for(let t=0;t<o.length;++t){let n=o[t];n.y0+=e*(t+1),n.y1+=e*(t+1)}if(void 0===u)for(let{sourceLinks:e,targetLinks:t}of o)e.sort(ei),t.sort(en)}}(c);for(let e=0;e<h;++e){let t=Math.pow(.99,e),n=Math.max(1-t,(e+1)/h);(function(e,t,n){for(let i=e.length,o=i-2;o>=0;--o){let i=e[o];for(let e of i){let n=0,i=0;for(let{target:t,value:o}of e.sourceLinks){let r=o*(t.layer-e.layer);n+=function(e,t){let n=t.y0-(t.targetLinks.length-1)*l/2;for(let{source:i,width:o}of t.targetLinks){if(i===e)break;n+=o+l}for(let{target:i,width:o}of e.sourceLinks){if(i===t)break;n-=o}return n}(e,t)*r,i+=r}if(!(i>0))continue;let o=(n/i-e.y0)*t;e.y0+=o,e.y1+=o,k(e)}void 0===d&&i.sort(eo),p(i,n)}})(c,t,n),function(e,t,n){for(let i=1,o=e.length;i<o;++i){let o=e[i];for(let e of o){let n=0,i=0;for(let{source:t,value:o}of e.targetLinks){let r=o*(e.layer-t.layer);n+=function(e,t){let n=e.y0-(e.sourceLinks.length-1)*l/2;for(let{target:i,width:o}of e.sourceLinks){if(i===t)break;n+=o+l}for(let{source:i,width:o}of t.targetLinks){if(i===e)break;n-=o}return n}(t,e)*r,i+=r}if(!(i>0))continue;let o=(n/i-e.y0)*t;e.y0+=o,e.y1+=o,k(e)}void 0===d&&o.sort(eo),p(o,n)}}(c,t,n)}}(g),eu(g),g}function p(e,n){let o=e.length>>1,r=e[o];m(e,r.y0-l,o-1,n),y(e,r.y1+l,o+1,n),m(e,i,e.length-1,n),y(e,t,0,n)}function y(e,t,n,i){for(;n<e.length;++n){let o=e[n],r=(t-o.y0)*i;r>1e-6&&(o.y0+=r,o.y1+=r),t=o.y1+l}}function m(e,t,n,i){for(;n>=0;--n){let o=e[n],r=(o.y1-t)*i;r>1e-6&&(o.y0-=r,o.y1-=r),t=o.y0-l}}function k({sourceLinks:e,targetLinks:t}){if(void 0===u){for(let{source:{sourceLinks:e}}of t)e.sort(ei);for(let{target:{targetLinks:t}}of e)t.sort(en)}}return g.update=function(e){return eu(e),e},g.nodeId=function(e){return arguments.length?(a="function"==typeof e?e:et(e),g):a},g.nodeAlign=function(e){return arguments.length?(s="function"==typeof e?e:et(e),g):s},g.nodeSort=function(e){return arguments.length?(d=e,g):d},g.nodeWidth=function(e){return arguments.length?(o=+e,g):o},g.nodePadding=function(e){return arguments.length?(r=l=+e,g):r},g.nodes=function(e){return arguments.length?(c="function"==typeof e?e:et(e),g):c},g.links=function(e){return arguments.length?(f="function"==typeof e?e:et(e),g):f},g.linkSort=function(e){return arguments.length?(u=e,g):u},g.size=function(o){return arguments.length?(e=t=0,n=+o[0],i=+o[1],g):[n-e,i-t]},g.extent=function(o){return arguments.length?(e=+o[0][0],n=+o[1][0],t=+o[0][1],i=+o[1][1],g):[[e,t],[n,i]]},g.iterations=function(e){return arguments.length?(h=+e,g):h},g})().nodeId(e=>e.id).nodeWidth(i.nodeWidth).nodePadding(u).nodeAlign(eh[i.nodeAlignment]).extent([[0,0],[c,i.height]])(g);let p=g.nodes,y=g.links,m=new Map(p.map(t=>{let n=h.get(t.id)??0,o=i.showValues?`${t.id}
|
|
9
|
+
${i.prefix}${e(n)}${i.suffix}`:t.id;return[t,V(o,{display:"formatted",transform:s.nodeTextTransform,fontSize:d,fontWeight:s.nodeLabelFontWeight,letterSpacing:s.nodeLetterSpacing,safeFont:!0})]})),k=new Map(y.map(e=>[e,ef(Math.max(+(e.authoredValue>0),f?0:e.width??0))])),b=new Map;for(let e of p){let t=(e.sourceLinks??[]).reduce((e,t)=>e+k.get(t),0),n=(e.targetLinks??[]).reduce((e,t)=>e+k.get(t),0),i=f?0:eg(e.y1,`y1 for node ${e.id}`)-eg(e.y0,`y0 for node ${e.id}`);b.set(e,Math.max(1,i,t,n))}let x=new Map;for(let e of p){let t=e.layer??e.depth??0;x.set(t,[...x.get(t)??[],e])}let v=new Map,w=i.height;for(let e of x.values()){e.sort((e,t)=>eg(e.y0,`y0 for node ${e.id}`)-eg(t.y0,`y0 for node ${t.id}`)||e.authoredIndex-t.authoredIndex);let t=0;for(let[n,i]of e.entries()){let e=b.get(i),o=Math.max(0,(m.get(i).height-e)/2),r=Math.max(eg(i.y0,`y0 for node ${i.id}`),0===n?0:t+o);v.set(i,r),t=r+e+o+u}w=Math.max(w,t-u)}let S=new Map,$=new Map;for(let e of p){let t=v.get(e),n=b.get(e),i=(i,o)=>{let r=("source"===i?e.sourceLinks:e.targetLinks)??[],l=e=>eg("source"===i?e.y0:e.y1,`${i} y for link ${e.authoredIndex}`);r.sort((e,t)=>l(e)-l(t)||e.authoredIndex-t.authoredIndex);let a=t+(n-r.reduce((e,t)=>e+k.get(t),0))/2;for(let e of r){let t=k.get(e);o.set(e,a+t/2),a+=t}};i("source",S),i("target",$)}let L=s.groupHeaderFontSize,M=t.title?V(t.title,{display:"formatted",transform:s.groupTextTransform,fontSize:L,fontWeight:s.groupHeaderFontWeight,letterSpacing:s.groupLetterSpacing,safeFont:!0}):void 0,W=M?.text,j=M?M.height-(M.lineHeight-M.fontSize):0,C=24+(M?j+20:0),F=24+c/2,I=p.reduce((e,t)=>(h.get(t.id)??0)>(h.get(e.id)??0)?t:e,p[0]).layer??0,P=new Map;for(let e of p){let t=e.layer??e.depth??0,n=eg(e.x0,`x0 for node ${e.id}`),o=m.get(e),r=o.lines,l="outlined"===i.labelStyle?t<I?"end":"start":24+n<F?"start":"end",a=o.width;P.set(e,{lines:r,block:o,anchor:l,width:a})}let A=24,O=24+c,N=C,H=C+w;for(let e of p){let t=P.get(e),n=24+eg(e.x0,`x0 for node ${e.id}`),i=24+eg(e.x1,`x1 for node ${e.id}`);"start"===t.anchor?O=Math.max(O,i+6+t.width):A=Math.min(A,n-6-t.width);let o=C+v.get(e)+b.get(e)/2;N=Math.min(N,o-t.block.height/2),H=Math.max(H,o+t.block.height/2)}for(let e of y){let t=24+eg(e.source.x1,`x1 for node ${e.source.id}`),n=24+eg(e.target.x0,`x0 for node ${e.target.id}`);if(!(n>t))continue;let i=E((n-t)/2,(n-t)/2,Math.abs($.get(e)-S.get(e)),k.get(e)/2);A=Math.min(A,t-i),O=Math.max(O,n+i)}let T=24-A,U=C-N,X=Math.max(O+T+24,(M?.width??0)+48),q=H+U+24,Y=p.map(e=>{let t=P.get(e),n=24+eg(e.x0,`x0 for node ${e.id}`)+T,i=24+eg(e.x1,`x1 for node ${e.id}`)+T,o=C+v.get(e)+U,r=o+b.get(e);return{id:`sankey-node-${e.authoredIndex+1}`,label:e.id,value:h.get(e.id)??0,layer:e.layer??e.depth??0,x0:ef(n),y0:ef(o),x1:ef(i),y1:ef(r),labelLines:t.lines,labelBlock:t.block,labelX:ef("start"===t.anchor?i+6:n-6),labelY:ef((o+r)/2),labelAnchor:t.anchor}}),R=new Map(Y.map(e=>[e.label,e])),D=y.map(e=>{let t=e.source,n=e.target,i=a.links[e.authoredIndex],o=ef(24+eg(t.x1,`x1 for node ${t.id}`)+T),r=ef(24+eg(n.x0,`x0 for node ${n.id}`)+T),l=ef(C+S.get(e)+U),s=ef(C+$.get(e)+U),d=function(e,t,n,i){let o=ef((e+n)/2),r=`M ${e} ${t} C ${o} ${t}, ${o} ${i}, ${n} ${i}`,l=[];for(let r of[0,.25,.5,.75,1]){let a=1-r,s=a*a*a*e+3*a*a*r*o+3*a*r*r*o+r*r*r*n,d=a*a*a*t+3*a*a*r*t+3*a*r*r*i+r*r*r*i;l.push({x:ef(s),y:ef(d)})}return{path:r,points:l}}(o,l,r,s);return{id:i.id,sceneId:`sankey-link-${e.authoredIndex+1}`,source:i.source,target:i.target,sourceId:R.get(t.id).id,targetId:R.get(n.id).id,value:e.authoredValue,path:d.path,points:d.points,width:k.get(e),sx:o,sy:l,tx:r,ty:s}});return{width:ef(X),height:ef(q),...W?{title:{id:a.titleId,text:W,block:M,x:ef(X/2),y:24+j/2}}:{},nodes:Y,links:D,total:t.links.reduce((e,t)=>e+t.value,0),visual:i}}(function(e,t={}){let n=e.findIndex(e=>e.trim().length>0&&!e.trim().startsWith("%%"));if(n<0)throw Error("Sankey diagram is empty");let i=e[n].trim();if(!ey(i))throw Error(`Sankey diagram must start with "sankey" or "sankey-beta", got: "${i}"`);v("sankey")&&w("sankey","header",i,{line:n+1,unit:"physical"});let o=[],r=new Set,l=[],a=(e,t)=>{r.has(e)||(r.add(e),o.push(e),v("sankey")&&S("sankey","appendNode",e,{line:t,unit:"physical"}))};for(let t=n+1;t<e.length;t++){let n=e[t].replace(/\r$/,""),i=t+1,o=n.trim();if(ey(o)){v("sankey")&&w("sankey","header",n,{line:i,unit:"physical"});continue}if(0===o.length||o.startsWith("%%"))continue;let r=M(e,t);if(r){v("sankey")&&w("sankey",r.title?"accTitle":"accDescr",e.slice(t,r.endIndex+1).join(`
|
|
10
|
+
`),{line:i,unit:"physical"}),t=r.endIndex;continue}for(;function(e){let t=!1;for(let n=0;n<e.length;n++)if('"'===e[n]){if(t&&'"'===e[n+1]){n++;continue}t=!t}return t}(n)&&t+1<e.length;)t++,n+=`
|
|
11
|
+
${e[t].replace(/\r$/,"")}`;let s=n.trim();v("sankey")&&w("sankey","csvRecord",n,{line:i,unit:"physical"});let d=function(e,t){let n=[],i=0;for(;;){let o=i;for(;o<e.length&&(" "===e[o]||" "===e[o]);)o++;if('"'===e[o]){let r=o+1,l="",a=!1;for(;r<e.length;){let t=e[r];if('"'===t){if('"'===e[r+1]){l+='"',r+=2;continue}a=!0,r++;break}l+=t,r++}if(!a)throw Error(`Sankey row ${t} has an unterminated quoted field: "${e.trim()}"`);let s=r;for(;s<e.length&&(" "===e[s]||" "===e[s]);)s++;if(s<e.length&&","!==e[s])throw Error(`Sankey row ${t} has text after a closing quote: "${e.trim()}". Escape a literal quote by doubling it ("").`);n.push(l.trim()),i=s}else{let r=e.indexOf(",",o);-1===r&&(r=e.length);let l=e.slice(i,r).trim();if(l.includes('"'))throw Error(`Sankey row ${t} has a quote inside the unquoted field "${l}": "${e.trim()}". Quote the whole field and double each quote inside it ("").`);n.push(l),i=r}if(i>=e.length)break;if(++i>=e.length){n.push("");break}}return n}(n,i);if(3!==d.length)throw L({what:`Sankey row ${i} has ${d.length} column${1===d.length?"":"s"}: "${s}"`,expectedForm:"exactly three CSV columns: source,target,value",example:"Electricity grid,Industry,342.165"});let[u,c,f]=d;if(0===u.length||0===c.length)throw Error(`Sankey row ${i} has an empty ${0===u.length?"source":"target"} label: "${s}"`);if(!ep.test(f))throw Error(`Sankey flow "${u}" -> "${c}" has invalid value "${f}". Values must be non-negative numbers.`);let h=Number(f);if(!Number.isFinite(h)||h<0)throw Error(`Sankey flow "${u}" -> "${c}" has invalid value "${f}". Values must be non-negative numbers.`);if(u===c)throw Error(`Sankey flow "${u}" -> "${c}" is a self-loop. Sankey diagrams must be acyclic (upstream rejects circular links).`);a(u,i),a(c,i),l.push({source:u,target:c,value:h}),v("sankey")&&S("sankey","appendLink",l[l.length-1],{line:i,unit:"physical"})}if(0===l.length)throw Error("Sankey diagram must include at least one source,target,value row");let s=function(e){let t=[],n=new Set,i=new Map;for(let o of e){for(let e of[o.source,o.target])n.has(e)||(n.add(e),t.push(e));let e=i.get(o.source);e?e.push(o.target):i.set(o.source,[o.target])}let o=new Map;for(let e of t){if(o.has(e))continue;let t=[{label:e,next:0}];for(o.set(e,"active");t.length>0;){let e=t[t.length-1],n=i.get(e.label)??[];if(e.next>=n.length){o.set(e.label,"done"),t.pop();continue}let r=n[e.next];e.next++;let l=o.get(r);if("active"===l){let e=t.findIndex(e=>e.label===r);return[...t.slice(e).map(e=>e.label),r]}void 0===l&&(o.set(r,"active"),t.push({label:r,next:0}))}}}(l);if(v("sankey")&&S("sankey","resolveCycle",s),s)throw Error(`Sankey diagram contains a cycle: ${s.map(e=>`"${e}"`).join(" -> ")}. Sankey diagrams must be acyclic (upstream rejects circular links).`);let d={...void 0!==t.title?{title:t.title}:{},nodes:o,links:l};return void 0!==t.title&&v("sankey")&&S("sankey","setFrontmatterTitle",d.title),d}(function(e){let t=u(e);if(!t.includes("\r"))return t.split(`
|
|
12
|
+
`);let n=t.split(/\r|\n/),i=t.match(/\r|\n/g)??[],o=[],r="",l=0,a=!1,s=-1;for(let e=0;e<n.length;e++){let t=n[e];if(r+=t,!a&&e>s)if(t.trimStart().startsWith("%%"))s=e;else{let t=M(n,e);t?s=t.endIndex:void 0===t&&(s=n.length-1)}if(e>s)for(let e=0;e<t.length;e++)'"'===t[e]&&(a&&'"'===t[e+1]?e++:a=!a);if(a&&void 0!==i[e])r+="\r"===i[e]?"\r":`
|
|
13
|
+
`,l++;else{for(o.push(r);l>0;)o.push(""),l--;r=""}}return o}(t.source),{title:"string"==typeof t.source.frontmatter.title?t.source.frontmatter.title:void 0}),t.renderOptions,t.familyConfig?.visual??D(t.source.frontmatter),t.styleFace)),projectPositioned:m(function({positioned:e}){let t=e.nodes.map(t=>({id:t.label,x:g(t.x0),y:g(t.y0),w:p(t.x0,t.x1-t.x0),h:p(t.y0,t.y1-t.y0),shape:"rectangle",label:t.label,role:"labelled-mark",...y(t.labelBlock,t.labelX,t.labelY,h(e),t.labelAnchor)})),n=e.links.map(e=>({id:e.id,from:e.source,to:e.target,path:e.points.map(e=>[g(e.x),g(e.y)])}));if(e.title){let n=e.title.block?.width??0,i=e.title.block?.height??0;t.push({id:e.title.id,x:g(e.title.x-n/2),y:g(e.title.y-i/2),w:g(n),h:g(i),shape:"rectangle",label:e.title.text,role:"labelled-mark",...y(e.title.block,e.title.x,e.title.y,h(e))})}return{version:1,nodes:t,edges:n,groups:[],bounds:{w:g(e.width),h:g(e.height)}}}),lowerScene:k(eb)});export{ex as default};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{a as e,d as i,e as t,f as a,h as r,i as o}from"./chunk-FAIMVOX5.js";import"./chunk-2GPK4VFF.js";import"./chunk-QA6GJQ4X.js";import{c as n,e as s}from"./chunk-2SH76OTH.js";import{d as c}from"./chunk-AMJLVPUB.js";import{t as l,z as p}from"./chunk-DF6765YX.js";import"./chunk-J35HAQQF.js";import"./chunk-CN7WTBWB.js";import{a as m,b as d,c as _,d as v}from"./chunk-HLWUNUCM.js";import{C as f}from"./chunk-X2UYKWKM.js";import"./chunk-TYZOZXUJ.js";import"./chunk-NO7ZIVRU.js";import"./chunk-Z3FDIVLN.js";import{k as b,l as g}from"./chunk-N5ELX7LR.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var u=Object.freeze({id:"sequence",upstreamId:"sequence",maturity:"stable",label:"Sequence",headers:["sequenceDiagram"],aliases:[],config:{section:"sequence",keys:["actorMargin","width","height","diagramMarginX","diagramMarginY","messageMargin","noteMargin","activationWidth","showSequenceNumbers","boxMargin","boxTextMargin","messageAlign","mirrorActors","bottomMarginAdj","rightAngles","wrap","wrapPadding","labelBoxWidth","labelBoxHeight","hideUnusedParticipants","forceMenus","arrowMarkerAbsolute","noteAlign","actorFontSize","actorFontFamily","actorFontWeight","noteFontSize","noteFontFamily","noteFontWeight","messageFontSize","messageFontFamily","messageFontWeight","actorFont","noteFont","messageFont","useMaxWidth","useWidth","look","theme"],noopKeys:["actorFont","actorFontFamily","actorFontSize","actorFontWeight","arrowMarkerAbsolute","bottomMarginAdj","boxMargin","boxTextMargin","forceMenus","hideUnusedParticipants","labelBoxHeight","labelBoxWidth","look","messageAlign","messageFont","messageFontFamily","messageFontSize","messageFontWeight","mirrorActors","noteAlign","noteFont","noteFontFamily","noteFontSize","noteFontWeight","rightAngles","theme","useMaxWidth","useWidth","wrapPadding"]},identity:{id:"family:sequence",kind:"family",version:"1.0.0",compatibility:{core:"0.5.3"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["category"],semanticRoles:["prelude","title","defs","chrome","actor","lifeline","activation","message","block","group","note","label","icon"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"actor",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"actor",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"lifeline",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"lifeline",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"activation",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"activation",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"message",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"message",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"block",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"block",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"block",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"note",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"note",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"icon",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"icon",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"icon",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`sequenceDiagram
|
|
2
|
+
participant U as User
|
|
3
|
+
participant S as Server
|
|
4
|
+
U->>S: request
|
|
5
|
+
S-->>U: response`,detect:b,detectLoose:g}),y=Object.fromEntries([...["actorMargin","width","height","diagramMarginX","diagramMarginY","messageMargin","noteMargin","activationWidth"].map(e=>[e,n]),["showSequenceNumbers",s],["wrap",s]]),h=["actorMargin","width","height","diagramMarginX","diagramMarginY","messageMargin","noteMargin","activationWidth"];[...h];var F=v(u,{configDiagnostics:e=>c("sequence",e,y),normalizeRequest:e=>({familyConfig:{sequence:function(e){if(!e)return{};let i={};for(let t of h){let a=p(e,["sequence",t]);"number"==typeof a&&Number.isFinite(a)&&a>=0&&(i[t]=a)}!0===p(e,["sequence","showSequenceNumbers"])&&(i.showSequenceNumbers=!0);let t=p(e,["wrap"]),a=p(e,["sequence","wrap"]);return"boolean"==typeof t?i.wrap=t:"boolean"==typeof a&&(i.wrap=a),i}(e.source.frontmatter)}}),layout:r=>{let o=r.familyConfig?.sequence??{},n=e(r.source,"decoded");return _(a(l(f(i(n.familyLines,{...o,authoredLine:t(n)}),r.source.accessibility),r.source.frontmatter),r.renderOptions,o,r.styleFace))},projectPositioned:m(o),lowerScene:d(r)});export{F as default};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{a as e,c as i,e as t}from"./chunk-OZ443IVJ.js";import{b as a}from"./chunk-BU5LHXNJ.js";import"./chunk-E2WMJZNM.js";import"./chunk-VWVZGQE2.js";import{a as r}from"./chunk-GVOEAY52.js";import"./chunk-NMQQMRIR.js";import"./chunk-ICC7HBJX.js";import"./chunk-4LHYF3BS.js";import"./chunk-CQE4HQEW.js";import"./chunk-LH7HUDKW.js";import"./chunk-5FQ534HP.js";import"./chunk-BY2CPG6B.js";import"./chunk-SZELX2EJ.js";import"./chunk-2GPK4VFF.js";import"./chunk-QA6GJQ4X.js";import{b as o,c as n}from"./chunk-AMJLVPUB.js";import{u as s}from"./chunk-DF6765YX.js";import"./chunk-J35HAQQF.js";import{a as c,b as l,c as p,d as d}from"./chunk-HLWUNUCM.js";import{da as m}from"./chunk-X2UYKWKM.js";import"./chunk-TYZOZXUJ.js";import{f as f}from"./chunk-NO7ZIVRU.js";import{ob as u}from"./chunk-Z3FDIVLN.js";import{i as g,j as h}from"./chunk-N5ELX7LR.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var v=Object.freeze({id:"state",upstreamId:"stateDiagram",maturity:"stable",label:"State",headers:["stateDiagram","stateDiagram-v2"],aliases:[],config:{section:"state",keys:["arrowMarkerAbsolute","compositTitleSize","defaultRenderer","dividerMargin","edgeLengthFactor","fontSize","fontSizeFactor","forkHeight","forkWidth","labelHeight","layout","look","miniPadding","minNodeWidth","nodeSpacing","noteMargin","padding","radius","rankSpacing","sizeUnit","textHeight","theme","titleShift","titleTopMargin","wrappingWidth"]},identity:{id:"family:state",kind:"family",version:"1.0.0",compatibility:{core:"0.5.3"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["status"],semanticRoles:["prelude","title","defs","chrome","group","group-header","edge","edge-label","node","note","label"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"edge-label",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"note",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"note",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`stateDiagram-v2
|
|
2
|
+
[*] --> Draft
|
|
3
|
+
Draft --> Review : submit
|
|
4
|
+
Review --> [*] : approve`,detect:g,detectLoose:h}),_=new Set(["arrowMarkerAbsolute","compositTitleSize","defaultRenderer","dividerMargin","edgeLengthFactor","fontSize","fontSizeFactor","forkHeight","forkWidth","labelHeight","layout","look","miniPadding","minNodeWidth","nodeSpacing","noteMargin","padding","radius","rankSpacing","sizeUnit","textHeight","theme","titleShift","titleTopMargin","wrappingWidth"]),b=new Set(["compositTitleSize","dividerMargin","fontSize","forkHeight","forkWidth","nodeSpacing","noteMargin","padding","radius","rankSpacing"]),y=new Set(["arrowMarkerAbsolute","edgeLengthFactor","fontSizeFactor","labelHeight","miniPadding","sizeUnit","textHeight","titleShift","titleTopMargin"]),k=new Set(["layout","look","minNodeWidth","theme","wrappingWidth"]),S=new Set(["fontSize","compositTitleSize","forkWidth","forkHeight"]),z=e=>"number"==typeof e&&Number.isFinite(e)&&e>0?e:void 0,F=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0?e:void 0;function j(e){let i=e?.state;return i&&"object"==typeof i&&!Array.isArray(i)?i:{}}var E=d(v,{configDiagnostics:({root:e,config:i})=>{let t=o(e,i.section);return t?function(e,i=!1){let t=new Map;for(let i of e.filter(e=>!!e&&"object"==typeof e&&!Array.isArray(e)))for(let[e,a]of Object.entries(i))t.set(e,a);let a=[];for(let[e,r]of[...t].sort(([e],[i])=>u(e,i))){if(!_.has(e)){i&&a.push({code:"INEFFECTIVE_CONFIG",field:`state.${e}`,message:`State config field "state.${e}" is unknown and has no effect; check the spelling or remove it.`});continue}if(y.has(e)){a.push({code:"INEFFECTIVE_CONFIG",field:`state.${e}`,message:`State config field "state.${e}" is a legacy Dagre/fixed-metric option with no faithful effect in the ELK measured-text renderer.`});continue}if(k.has(e)){a.push({code:"INEFFECTIVE_CONFIG",field:`state.${e}`,message:`State config field "state.${e}" is accepted for Mermaid compatibility but has no effect on this renderer.`});continue}if("defaultRenderer"===e){"elk"!==r&&a.push({code:"INEFFECTIVE_CONFIG",field:"state.defaultRenderer",message:`State config field "state.defaultRenderer" requested ${JSON.stringify(r)}; this renderer supports only "elk" and will not silently select a different engine.`});continue}if(b.has(e)){let i=S.has(e);(i?void 0!==z(r):void 0!==F(r))||a.push({code:"INEFFECTIVE_CONFIG",field:`state.${e}`,message:`State config field "state.${e}" must be a ${i?"positive":"non-negative"} finite number; the supplied value was ignored.`})}}return a}([t],!0):n("state",e,i)},statementEnds:i,normalizeRequest:e=>{var i,t;let a,r,o,n,s,c,l,p,d,m,{stateVisual:u,...g}=(i=e.source.frontmatter,t=e.renderOptions,r=F((a={...j(i),...j(t.mermaidConfig)}).nodeSpacing),o=F(a.rankSpacing),n=F(a.padding),s=F(a.radius),c=z(a.fontSize),l=z(a.compositTitleSize),p={...f,...void 0===n?{}:{nodePaddingX:n,nodePaddingY:n},...void 0===s?{}:{nodeCornerRadius:s},...void 0===c?{}:{nodeLabelFontSize:c,edgeLabelFontSize:c},...void 0===l?{}:{groupHeaderFontSize:l}},d=t.nodeSpacing??r,m=t.layerSpacing??o,{...t,...void 0===d?{}:{nodeSpacing:d},...void 0===m?{}:{layerSpacing:m},stateVisual:{forkWidth:z(a.forkWidth)??70,forkHeight:z(a.forkHeight)??10,noteMargin:F(a.noteMargin)??18,dividerMargin:F(a.dividerMargin)??0,styleDefaults:p}});return{renderOptions:g,...u?{appearance:{family:{visual:u}}}:{}}},layout:e=>{let i=e.familyAppearance?.visual,a=s(e.source.frontmatter),o=t(e.source.familyText);return m(o),p(r(o,{...e.renderOptions,...e.styleFace?{styleFace:e.styleFace}:{},...i?{stateVisual:i}:{},...a?{diagramTitle:a}:{}}))},projectPositioned:c(e),lowerScene:l(a)});export{E as default};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{c as e}from"./chunk-QA6GJQ4X.js";import{e as i,i as t}from"./chunk-2SH76OTH.js";import{d as n}from"./chunk-AMJLVPUB.js";import{t as l}from"./chunk-DF6765YX.js";import"./chunk-J35HAQQF.js";import{c as r,h as a}from"./chunk-CN7WTBWB.js";import{D as o,a as s,b as d,c as c,d as p,e as h,g as m,i as g}from"./chunk-HLWUNUCM.js";import{A as u,B as f,c as b,k as v,oa as x,s as y,y as k}from"./chunk-X2UYKWKM.js";import{i as _,j as $,k as W,q as w}from"./chunk-TYZOZXUJ.js";import{c as M,h as S}from"./chunk-NO7ZIVRU.js";import{M as L,N as z,O as F,Tb as C,Z as T,sb as X}from"./chunk-Z3FDIVLN.js";import{m as P,n as H}from"./chunk-N5ELX7LR.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var j=Object.freeze({id:"timeline",upstreamId:"timeline",maturity:"experimental",label:"Timeline",headers:["timeline"],aliases:[],config:{section:"timeline",keys:["disableMulticolor","sectionFills","sectionColours","diagramMarginX","diagramMarginY","leftMargin","width","height","padding","boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","bottomMarginAdj","rightAngles","taskFontSize","taskFontFamily","taskMargin","activationWidth","textPlacement","actorColours","useMaxWidth","useWidth"],noopKeys:["diagramMarginX","diagramMarginY","leftMargin","width","height","padding","boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","bottomMarginAdj","rightAngles","taskFontSize","taskFontFamily","taskMargin","activationWidth","textPlacement","actorColours","useMaxWidth","useWidth"]},identity:{id:"family:timeline",kind:"family",version:"1.0.0",compatibility:{core:"0.5.3"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["category"],semanticRoles:["prelude","chrome","rail","title","section","group-header","period","event","label"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"rail",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"section",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"section",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"period",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"period",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"event",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"event",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`timeline
|
|
2
|
+
title Roadmap
|
|
3
|
+
2025 : Alpha : Beta
|
|
4
|
+
2026 : GA`,detect:P,detectLoose:H}),Y={disableMulticolor:i,sectionFills:t,sectionColours:t},R={nodeLabelFontSize:12,edgeLabelFontSize:12,groupHeaderFontSize:12,nodeLabelFontWeight:400,edgeLabelFontWeight:600,groupHeaderFontWeight:600,nodePaddingX:14,nodePaddingY:10,nodeCornerRadius:0,nodeLineWidth:M.outerBox,edgeLineWidth:1.5,groupCornerRadius:0,groupPaddingX:18,groupPaddingY:18,groupLabelPaddingX:12,groupLineWidth:M.outerBox},B={pill:116,event:148,pillMinWidth:72,eventMinWidth:128};function I(e,i,t,n){let l=(e,i)=>n?i:e;return e.sections.map(e=>{let r=e.label?T(e.label,{display:"literal",transform:i.groupTextTransform,fontSize:i.groupHeaderFontSize,fontWeight:i.groupHeaderFontWeight,letterSpacing:i.groupLetterSpacing,fontFamily:i.groupFont,maxWidth:168}):void 0,a=r?.text,o=e.periods.map(e=>{let n=T(e.label,{display:"literal",transform:i.edgeTextTransform,fontSize:i.edgeLabelFontSize,fontWeight:i.edgeLabelFontWeight,letterSpacing:i.edgeLetterSpacing,maxWidth:t.pill}),r=n.text,a=Math.max(t.pillMinWidth,n.width+2*i.nodePaddingX),o=n.height+2*i.nodePaddingY,s=e.events.map(e=>{let n=T(e.text,{display:"literal",transform:i.nodeTextTransform,fontSize:i.nodeLabelFontSize,fontWeight:i.nodeLabelFontWeight,letterSpacing:i.nodeLetterSpacing,maxWidth:t.event});return{text:n.text,block:n,width:Math.max(t.eventMinWidth,n.width+2*i.nodePaddingX),height:n.height+2*i.nodePaddingY}}),d=Math.max(l(a,o),...s.map(e=>l(e.width,e.height)));return{label:r,block:n,pillWidth:a,pillHeight:o,mainExtent:d,events:s}}),s=o.reduce((e,i,t)=>e+24*(0!==t)+i.mainExtent,0),d=a?r.width+2*i.groupLabelPaddingX:0,c=n?s:Math.max(s,d);return{label:a,block:r,headerWidth:d,runMain:s,innerMain:c,periods:o}})}function E(i,t){return e("title"===t||"accessibility"===t?i:i.replace(/<br>/g,`
|
|
5
|
+
`),{subject:"Timeline text entity",example:"2025 : #35;"})}var N=/^title\s+(.+)$/i,A=/^:\s+(.+)$/,D=/^([^:#\n]+?)(\s*:\s+.+)$/;function U(e){let i=[],t=0;for(;t<e.length;){for(;t<e.length&&/\s/.test(e[t]);)t++;if(t>=e.length)break;if(":"!==e[t])throw y({what:`Invalid timeline event list: "${e}"`,expectedForm:'events separated by " : "',example:"Launch : Beta"});if(++t>=e.length||!/\s/.test(e[t]))throw Error(`Timeline events must use ": " separators: "${e}"`);for(;t<e.length&&/\s/.test(e[t]);)t++;let n=t;for(;t<e.length&&!(":"===e[t]&&/\s/.test(e[t+1]??""));)t++;let l=e.slice(n,t).trim();if(!l||t>=e.length&&l.endsWith(":"))throw y({what:`Invalid timeline event separator in "${e}"`,expectedForm:"a non-empty event after every separator, without a trailing colon",example:"2024 : Launch : Beta"});i.push(l)}return i}function O(e){return{className:e,data:{"literal-text":"true"}}}function V(e,i){let t=e%i.length,n=i[t],l=`--tl-accent:${n.accent};--tl-fill:${n.fill};--tl-label:${n.label};--tl-line:${n.line};--tl-section-bg:${Z(n.fill,"var(--bg)",6)};--tl-section-band:${Z(n.fill,"var(--bg)",12)};--tl-pill-fill:${Z(n.fill,"var(--bg)",11)};--tl-pill-stroke:${Z(n.fill,n.line,36)};--tl-event-fill:${Z(n.fill,"var(--_node-fill)",16)}`;return` data-family="${t}" style="${z(l)}"`}function Z(e,i,t){return`color-mix(in srgb, ${e} ${t}%, ${i})`}function q(e,i,t){if(!e)return;let n=e[`${i}${t}`];return"string"==typeof n&&n.length>0?n:void 0}var J=b(function(e,i){let{positioned:t,colors:n,resolved:l}=i,r=l.renderOptions,a=n.font??"Inter",o=r.transparent??!1,s=l.familyAppearance;if(!s)throw Error("Timeline rendering requires request-boundary family appearance resolution");let d=s.timelineConfig,c=[],p=S(r,R,l.styleFace),h=s.familyPalettes,m=function(e,i,t){let n=e.nodeTextColor??"var(--tl-label, var(--_text-muted))";if(void 0!==e.nodeTextColor||t.some(e=>"var(--_text)"!==e.label))return n;let l=x("var(--_text)",e.nodeFillColor??"var(--_node-fill)",i);return"var(--_text)"===l?n:l}(p,n,h),g={title:{fill:p.groupTextColor??p.nodeTextColor??"var(--_text)"},rail:{stroke:p.edgeStrokeColor??"var(--_line)",strokeWidth:String(p.lineWidth),strokeLinecap:"round"},sectionBg:{fill:p.groupFillColor??"var(--tl-section-bg, color-mix(in srgb, var(--_node-fill) 88%, var(--bg)))",stroke:p.groupBorderColor??"var(--tl-line, var(--_node-stroke))",strokeWidth:String(p.groupLineWidth)},sectionBand:{fill:p.groupHeaderFillColor??"var(--tl-section-band, color-mix(in srgb, var(--_arrow) 8%, var(--bg)))",stroke:p.groupBorderColor??"var(--tl-line, var(--_node-stroke))",strokeWidth:String(p.groupLineWidth)},sectionLabel:{fill:p.groupTextColor??"var(--tl-label, var(--_text-sec))"},stem:{stroke:p.edgeStrokeColor??"var(--tl-line, color-mix(in srgb, var(--_arrow) 32%, var(--_line)))",strokeWidth:String(Math.max(1,.75*p.lineWidth)),strokeDasharray:"3 4"},markerRing:{fill:"var(--bg)",stroke:p.edgeStrokeColor??"var(--tl-line, var(--_arrow))",strokeWidth:"1.5"},markerCore:{fill:p.edgeStrokeColor??"var(--tl-accent, var(--_arrow))"},pill:{fill:p.nodeFillColor??"var(--tl-pill-fill, color-mix(in srgb, var(--_arrow) 7%, var(--bg)))",stroke:p.nodeBorderColor??"var(--tl-pill-stroke, color-mix(in srgb, var(--_arrow) 20%, var(--bg)))",strokeWidth:String(p.nodeLineWidth)},periodText:{fill:p.nodeTextColor??"var(--tl-label, var(--_text))"},eventCard:{fill:p.nodeFillColor??"var(--tl-event-fill, var(--_node-fill))",stroke:p.nodeBorderColor??"var(--tl-line, var(--_node-stroke))",strokeWidth:String(p.nodeLineWidth)},eventText:{fill:m}},u=t.accessibilityTitle??t.title?.text.replace(/\n+/g," "),f=t.accessibilityDescription,b=!d.disableMulticolor,v=b&&t.sections.some(e=>!!e.label),y=`tl-${C(t.width,t.height,t.sections.map(e=>e.periods.length).join(","))}`,k=`${y}-title`,M=`${y}-desc`,T=w(u,f,k,M),P=[W(t.width,t.height,n,o,T),$(a,!1,n.shadow,n.embedFontImport)],H=_(n);H&&P.push(`<defs>${H}</defs>`),c.push(e.documentOpen({id:"prelude",width:t.width,height:t.height,colors:n,transparent:o,font:a,hasMonoFont:!1},P.join(`
|
|
6
|
+
`))),u&&c.push(e.documentContent({id:"a11y-title",role:"chrome",nonPaint:"accessibility"},`<title id="${k}">${L(u)}</title>`)),f&&c.push(e.documentContent({id:"a11y-desc",role:"chrome",nonPaint:"accessibility"},`<desc id="${M}">${L(f)}</desc>`));for(let i=0;i<t.sections.length;i++){let n=t.sections[i],l=v?i:0;n.framed&&c.push(function(e,i,t,n,l,r){let a=i.label??i.id,o=i.label?` data-label="${F(i.label)}"`:"",s=V(t,n),d=[];if(d.push({indent:2,node:e.shape({id:`section-bg:${a}`,role:"section",geometry:{kind:"rect",x:i.x,y:i.y,width:i.width,height:i.height,rx:l.groupCornerRadius,ry:l.groupCornerRadius},paint:r.sectionBg,attributes:{className:"timeline-section-bg"}})}),i.headerHeight>0){let t=X(i.x,i.y,i.width,i.headerHeight,l.groupCornerRadius);d.push({indent:2,node:e.shape({id:`section-band:${a}`,role:"group-header",geometry:{kind:"path",d:t},paint:r.sectionBand,attributes:{className:"timeline-section-band"}})}),i.label&&d.push({indent:2,node:e.text({id:`section-label:${a}`,role:"group-header",text:i.label,block:i.block,x:i.x+l.groupLabelPaddingX,y:i.y+i.headerHeight/2,fontSize:l.groupHeaderFontSize,fontWeight:l.groupHeaderFontWeight,letterSpacing:l.groupLetterSpacing,display:"literal",anchor:"start",paint:r.sectionLabel,attributes:O("timeline-section-label")})})}return e.group({id:`section:${a}`,role:"section",open:`<g class="timeline-section" data-id="${z(i.id)}"${o}${s}>`,close:"</g>",children:d,channels:{category:a}})}(e,n,l,h,p,g))}c.push(e.shape({id:"rail",role:"rail",geometry:{kind:"line",x1:t.rail.x1,y1:t.rail.y1,x2:t.rail.x2,y2:t.rail.y2},paint:g.rail,attributes:{className:"timeline-rail"}}));let j=0;for(let i=0;i<t.sections.length;i++){let n=t.sections[i],l=v?i:void 0;for(let i of n.periods){let t=l??(b?j++:0);c.push(function(e,i,t,n,l,r,a){let o=t?` data-section="${z(t)}"`:"",s=V(n,l),d=[];d.push({indent:2,node:e.shape({id:`period-stem:${i.id}`,role:"period",geometry:{kind:"line",x1:i.stem.x1,y1:i.stem.y1,x2:i.stem.x2,y2:i.stem.y2},paint:a.stem,attributes:{className:"timeline-stem"}})}),d.push({indent:2,node:e.shape({id:`period-pill:${i.id}`,role:"period",geometry:{kind:"rect",x:i.pillX,y:i.pillY,width:i.pillWidth,height:i.pillHeight,rx:r.cornerRadius??0,ry:r.cornerRadius??0},paint:a.pill,attributes:{className:"timeline-period-pill"}})}),d.push({indent:2,node:e.text({id:`period-label:${i.id}`,role:"label",text:i.label,block:i.block,x:i.centerX,y:i.pillY+i.pillHeight/2,fontSize:r.edgeLabelFontSize,fontWeight:r.edgeLabelFontWeight,letterSpacing:r.edgeLetterSpacing,display:"literal",anchor:"middle",paint:a.periodText,attributes:O("timeline-period-text")})}),d.push({indent:2,node:e.shape({id:`period-marker-ring:${i.id}`,role:"period",geometry:{kind:"circle",cx:i.markerX,cy:i.markerY,r:8},paint:a.markerRing,attributes:{className:"timeline-marker-ring"}})}),d.push({indent:2,node:e.shape({id:`period-marker-core:${i.id}`,role:"period",geometry:{kind:"circle",cx:i.markerX,cy:i.markerY,r:4.5},paint:a.markerCore,attributes:{className:"timeline-marker-core"}})});for(let o=0;o<i.events.length;o++)d.push({indent:0,node:function(e,i,t,n,l,r,a){let o=t?` data-section="${z(t)}"`:"",s=` data-family="${n%l.length}"`,d=`event:${i.id}`,c=e.shape({id:d,role:"event",geometry:{kind:"rect",x:i.x,y:i.y,width:i.width,height:i.height,rx:r.cornerRadius??0,ry:r.cornerRadius??0},paint:a.eventCard,attributes:{className:"timeline-event-card"}}),p=e.text({id:`${d}:label`,role:"label",text:i.text,block:i.block,x:i.labelX??i.x+r.nodePaddingX,y:i.y+i.height/2,fontSize:r.nodeLabelFontSize,fontWeight:r.nodeLabelFontWeight,letterSpacing:r.nodeLetterSpacing,display:"literal",anchor:"start",paint:a.eventText,attributes:O("timeline-event-text")});return e.group({id:`${d}:group`,role:"event",open:`<g class="timeline-event" data-id="${z(i.id)}" data-period="${z(i.periodLabel)}"${o}${s}>`,close:"</g>",children:[{indent:2,node:c},{indent:2,node:p}]})}(e,i.events[o],t,n,l,r,a)});return e.group({id:`period:${i.id}`,role:"period",open:`<g class="timeline-period" data-id="${z(i.id)}" data-label="${F(i.label)}"${o}${s}>`,close:"</g>",children:d})}(e,i,n.label,t,h,p,g))}}return t.title&&c.push(e.text({id:"title",role:"title",text:t.title.text,block:t.title.block,x:t.title.x,y:t.title.y,fontSize:18,fontWeight:600,display:"literal",anchor:"middle",paint:g.title,attributes:O("timeline-title")})),c.push(e.documentClose()),{family:"timeline",width:t.width,height:t.height,colors:n,transparent:o,parts:c}}),K=p(j,{configDiagnostics:e=>n("timeline",e,Y),normalizeRequest:e=>({appearance:{family:{...function(e={}){var i;let t,n,l=e.mermaidConfig?.timeline??{};return{timelineConfig:l,familyPalettes:(i=e.mermaidConfig?.themeVariables,t=l.sectionFills??[],n=l.sectionColours??[],Array.from({length:12},(e,l)=>{let r=t[l%Math.max(t.length,1)]??q(i,"cScale",l),a=r??"var(--_node-fill)",o=n[l%Math.max(n.length,1)]??q(i,"cScaleLabel",l)??"var(--_text)",s=q(i,"cScaleInv",l)??(r?Z(a,"var(--_line)",48):"var(--_line)");return{accent:r??"var(--_arrow)",fill:a,label:o,line:s}}))}}(e.renderOptions)}}}),layout:e=>c(function(e,i={},t){let n=S(i,R,t),l="TD"===e.direction,r=(e,i)=>l?i:e,a=(e,i)=>l?e:i,o=e.sections.some(e=>!!e.label),s=e.sections.length>1||o,d=o?Math.max(24,n.groupHeaderFontSize+n.groupPaddingY):0,c=s?n.groupPaddingX:0,p=e.title?T(e.title,{display:"literal",transform:n.groupTextTransform,fontSize:18,fontWeight:600,letterSpacing:n.groupLetterSpacing,maxWidth:420}):void 0,h=p?.text,m=I(e,n,B,l),g=i.timeline?.maxWidth;if(!l&&"number"==typeof g&&Number.isFinite(g)&&g>0){let i=function(e,i,t){let n=32;for(let l=0;l<e.length;l++)n+=e[l].innerMain+2*i,l<e.length-1&&(n+=t?28:24);return n+32}(m,c,s),t=m.reduce((e,i)=>e+i.periods.length,0);if(i>g&&t>0){let r=m.reduce((e,i)=>e+i.periods.reduce((e,i)=>e+i.mainExtent,0),0),a=Math.max(36+2*n.nodePaddingX,(g-(i-r))/t),o=Math.max(36,a-2*n.nodePaddingX);m=I(e,n,{pill:Math.min(116,o),event:Math.min(148,o),pillMinWidth:Math.min(72,a),eventMinWidth:Math.min(128,a)},l)}}d=Math.max(d,...m.map(e=>e.block?e.block.height+n.groupPaddingY:0));let u=Math.max(0,...m.flatMap(e=>e.periods.map(e=>a(e.pillWidth,e.pillHeight)))),f=28;p&&(f+=p.height,f+=24);let b=d+14*!!o,v=l?32:f,x=v+(l?s?c:0:b),y=x+u+22,k=y+28,_=l?b:0,$=l?f:32,W=[],w=y+8;for(let i=0;i<e.sections.length;i++){let t=e.sections[i],o=m[i],p=$,h=_+o.innerMain+2*c,g=$+_+c+(o.innerMain-o.runMain)/2,u=[],f=y+8;for(let e=0;e<t.periods.length;e++){let i=t.periods[e],n=o.periods[e],s=g+n.mainExtent/2,d=k,c=i.events.map((e,o)=>{let c=n.events[o],p=s-r(c.width,c.height)/2,h={id:e.id,sectionId:t.id,periodId:i.id,periodLabel:n.label,text:c.text,block:c.block,x:l?d:p,y:l?p:d,width:c.width,height:c.height};return d+=a(c.width,c.height)+10,h}),p=y+8,h=c.length>0?k-10:y+16,m=s-r(n.pillWidth,n.pillHeight)/2;if(u.push({id:i.id,sectionId:t.id,label:n.label,block:n.block,centerX:l?x+n.pillWidth/2:s,markerX:l?y:s,markerY:l?s:y,pillX:l?x:s-n.pillWidth/2,pillY:l?m:x,pillWidth:n.pillWidth,pillHeight:n.pillHeight,stem:l?{x1:p,y1:s,x2:h,y2:s}:{x1:s,y1:p,x2:s,y2:h},events:c}),c.length>0){let e=c[c.length-1];f=Math.max(f,l?e.x+e.width:e.y+e.height)}g+=n.mainExtent+24}f+=n.groupPaddingY,w=Math.max(w,f),W.push({id:t.id,label:o.label,block:o.block,x:l?v:p,y:l?p:v,width:l?f-v:h,height:l?h:f-v,framed:s,headerHeight:d,periods:u}),$+=h,i<e.sections.length-1&&($+=s?28:24)}let M=$+(l?28:32),L=w+(l?32:28),z=Math.max(l?L:M,p?p.width+64:0),F=l?M:L,C=W.flatMap(e=>e.periods),X=e=>l?e.markerY:e.centerX,P=C.length>0?X(C[0]):l?f:32,H=C.length>0?X(C[C.length-1]):M-(l?28:32),j=P===H?P-42:P,Y=P===H?H+42:H;for(let e of W)for(let i of e.periods)for(let e of i.events)e.labelX=e.x+n.nodePaddingX;return{width:z,height:F,title:h?{text:h,block:p,x:z/2,y:28+p.height/2}:void 0,accessibilityTitle:e.accessibilityTitle,accessibilityDescription:e.accessibilityDescription,rail:l?{x1:y,y1:j,x2:y,y2:Y}:{x1:j,y1:y,x2:Y,y2:y},sections:W}}(l(function(e,i={}){var t;let n=k(e.map(e=>v(e.trimStart())));u(n),e=n.familyLines;let l={sections:[],...f(Object.fromEntries(Object.entries({...i,...n.accessibility}).map(([e,i])=>[e,E(v(i),"accessibility")])))},r=function(e){let i=e.trim().match(/^timeline(?=$|[\s;#%])(.*)$/i);if(!i)return null;let t=i[1],n=t.search(/#|%(?!\{)/),l=n>=0,r=(n<0?t:t.slice(0,n)).trim();return r?r.startsWith(";")?{kind:"unsupported",suffix:r}:/^(?:LR|TD)$/i.test(r)?{kind:"supported",direction:r.toUpperCase(),hasInlineComment:l}:{kind:"unsupported",suffix:r}:{kind:"supported",hasInlineComment:l}}(e[0]??"");if(r?.kind==="unsupported")throw t=r.suffix,y({what:`Unsupported timeline header suffix "${t}"; only LR and TD are direction tokens`,expectedForm:"timeline [LR|TD]",example:"timeline TD"});r?.direction&&(l.direction=r.direction),h("timeline")&&(m("timeline","header",e[0]??"",{line:1,unit:"normalized"}),g("timeline","initialize",l));let a,o,s=0,d=0,c=0,p=1,b=()=>a||(a={id:`section-${s++}`,periods:[]},l.sections.push(a),h("timeline")&&g("timeline","addImplicitSection",a,{line:p,unit:"normalized"}),a),x=(e,i)=>{for(let t of i){let i=E(t.trim(),"event");if(!i)continue;let n={id:`event-${c++}`,text:i};e.events.push(n),h("timeline")&&g("timeline","addEvent",{...n,periodId:e.id},{line:p,unit:"normalized"})}};for(let i=1;i<e.length;i++){let t=e[i];if(p=i+1,/^(?:%(?!\{)|#)/.test(t.trimStart()))continue;let n=t.match(N);if(n){h("timeline")&&m("timeline","title",t,{line:i+1,unit:"normalized"}),l.title=E(n[1].trim(),"title"),h("timeline")&&g("timeline","setTitle",l.title,{line:i+1,unit:"normalized"});continue}let r=function(e){let i=/^section\s([^:\n]+)/i.exec(e);return i?{label:i[1],eventSource:e.slice(i[0].length)}:null}(t);if(r){if(h("timeline")&&m("timeline","section",t,{line:i+1,unit:"normalized"}),a={id:`section-${s++}`,label:E(r.label.trim(),"section"),periods:[]},l.sections.push(a),h("timeline")&&g("timeline","addSection",a,{line:i+1,unit:"normalized"}),r.eventSource){if(!o)throw Error("Timeline continuation found before any period was declared");x(o,U(r.eventSource))}continue}let c=t.match(A);if(c){if(h("timeline")&&m("timeline","continuation",t,{line:i+1,unit:"normalized"}),!o)throw Error("Timeline continuation found before any period was declared");x(o,U(`: ${c[1]}`));continue}let u=t.match(D);if(u){h("timeline")&&m("timeline","period",t,{line:i+1,unit:"normalized"});let e=E(u[1].trim(),"period"),n=U(u[2]);if(!e)throw y({what:`Invalid timeline period: "${t}"`,expectedForm:"Period : Event[ : Event…]",example:"2025 : Launch : Beta"});let l={id:`period-${d++}`,label:e,events:[]};if(x(l,n),0===l.events.length)throw Error(`Timeline period "${e}" must include at least one event`);b().periods.push(l),h("timeline")&&g("timeline","addPeriod",{...l,sectionId:a.id},{line:i+1,unit:"normalized"}),o=l;continue}if(!t.includes(":")&&t.trim().length>0){h("timeline")&&m("timeline","bare-period",t,{line:i+1,unit:"normalized"});let e={id:`period-${d++}`,label:E(t.trim(),"period"),events:[]};b().periods.push(e),h("timeline")&&g("timeline","addPeriod",{...e,sectionId:a.id},{line:i+1,unit:"normalized"}),o=e;continue}throw h("timeline")&&m("timeline","invalid",t,{line:i+1,unit:"normalized"}),y({what:`Unsupported timeline syntax: "${t}"`,expectedForm:"a title, a section, or a period (Period : Event…)",example:"2025 : Launch"})}return l}(e.source.familyLines,e.source.accessibility),e.source.frontmatter),e.renderOptions,e.styleFace)),projectPositioned:s(function({positioned:e,options:i}){let t=[],n=[];for(let i of e.sections){let e=[];for(let n of i.periods){let i=`${n.id}:period`;for(let l of(t.push({id:i,x:r(n.pillX),y:r(n.pillY),w:r(n.pillWidth),h:r(n.pillHeight),shape:"rounded",label:n.label,...o(n.block,n.centerX,n.pillY+n.pillHeight/2,{x:n.pillX,y:n.pillY,width:n.pillWidth,height:n.pillHeight})}),e.push(i),n.events))t.push({id:l.id,x:r(l.x),y:r(l.y),w:r(l.width),h:r(l.height),shape:"rectangle",label:l.text,...void 0===l.labelX?{}:o(l.block,l.labelX,l.y+l.height/2,l,"start")}),e.push(l.id)}i.framed&&n.push({id:i.id,x:r(i.x),y:r(i.y),w:r(i.width),h:r(i.height),members:e,label:i.label})}let l={version:1,nodes:t,edges:[],groups:n,bounds:{w:r(e.width),h:r(e.height)}};return i.debug&&(l.certificates=a("timeline",l,"timeline-interval")),l}),lowerScene:d(J)});export{K as default};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{h as e}from"./chunk-J7FFAFQF.js";import{a as t,b as i}from"./chunk-5B2Z7575.js";import{b as a}from"./chunk-2I4UPL7Q.js";import{e as o,f as r,l as n}from"./chunk-2SH76OTH.js";import{d as l}from"./chunk-AMJLVPUB.js";import"./chunk-DF6765YX.js";import"./chunk-J35HAQQF.js";import{a as d}from"./chunk-2UIA2IME.js";import{a as s,b as h,c as c,d as p}from"./chunk-CN7WTBWB.js";import{C as u,D as m,a as g,b as f,c as v,d as b,e as y,g as x,i as w}from"./chunk-HLWUNUCM.js";import{A as M,B as F,M as k,aa as z,c as S,ca as $,n as _,o as W,q as L,qa as j,y as I}from"./chunk-X2UYKWKM.js";import{m as C}from"./chunk-TYZOZXUJ.js";import{f as N,h as H,l as P,n as T,o as A}from"./chunk-NO7ZIVRU.js";import{N as E,Z as Y,ma as D,n as U,o as V,qa as B,sa as O,za as Z}from"./chunk-Z3FDIVLN.js";import{O as X}from"./chunk-N5ELX7LR.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var Q,R,J,K=Object.freeze({id:"treemap",upstreamId:"treemap",maturity:"stable",label:"Treemap",headers:["treemap","treemap-beta"],aliases:[],config:{section:"treemap",keys:["useMaxWidth","padding","diagramPadding","showValues","nodeWidth","nodeHeight","borderWidth","valueFontSize","labelFontSize","valueFormat"],noopKeys:["useMaxWidth"]},identity:{id:"family:treemap",kind:"family",version:"1.0.0",compatibility:{core:"0.5.3"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["value","category"],semanticRoles:["prelude","title","chrome","node","group","bar","label"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"bar",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"bar",primitive:"data-mark",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`treemap
|
|
2
|
+
"Product"
|
|
3
|
+
"Engineering": 60
|
|
4
|
+
"Design": 40`,detect:X,detectLoose:X});function q(e,t){if((i=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var i,a=e.slice(0,i);return[a.length>1?a[0]+a.slice(2):a,+e.slice(i+1)]}var G=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ee(e){var t;if(!(t=G.exec(e)))throw Error("invalid format: "+e);return new et({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}function et(e){this.fill=void 0===e.fill?" ":e.fill+"",this.align=void 0===e.align?">":e.align+"",this.sign=void 0===e.sign?"-":e.sign+"",this.symbol=void 0===e.symbol?"":e.symbol+"",this.zero=!!e.zero,this.width=void 0===e.width?void 0:+e.width,this.comma=!!e.comma,this.precision=void 0===e.precision?void 0:+e.precision,this.trim=!!e.trim,this.type=void 0===e.type?"":e.type+""}function ei(e,t){var i=q(e,t);if(!i)return e+"";var a=i[0],o=i[1];return o<0?"0."+Array(-o).join("0")+a:a.length>o+1?a.slice(0,o+1)+"."+a.slice(o+1):a+Array(o-a.length+2).join("0")}ee.prototype=et.prototype,et.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var ea={"%":(e,t)=>(100*e).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:function(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)},e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>ei(100*e,t),r:ei,s:function(e,t){var i=q(e,t);if(!i)return e+"";var a=i[0],o=i[1],r=o-(Q=3*Math.max(-8,Math.min(8,Math.floor(o/3))))+1,n=a.length;return r===n?a:r>n?a+Array(r-n+1).join("0"):r>0?a.slice(0,r)+"."+a.slice(r):"0."+Array(1-r).join("0")+q(e,Math.max(0,t+r-1))[0]},X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function eo(e){return e}var er=Array.prototype.map,en=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function el(e={}){let t=(t,i,a=0)=>{let o=e[t];return void 0===o||"number"!=typeof o||!Number.isFinite(o)||o<a||o>1e4?i:o};return{width:10*t("nodeWidth",96,1),height:10*t("nodeHeight",50,1),padding:t("padding",10),diagramPadding:t("diagramPadding",16),showValues:!1!==e.showValues,labelFontSize:t("labelFontSize",14,1),valueFontSize:t("valueFontSize",12,1),borderWidth:t("borderWidth",1),valueFormat:"string"==typeof e.valueFormat?e.valueFormat:","}}J=(R=function(e){var t,i,a,o=void 0===e.grouping||void 0===e.thousands?eo:(t=er.call(e.grouping,Number),i=e.thousands+"",function(e,a){for(var o=e.length,r=[],n=0,l=t[0],d=0;o>0&&l>0&&(d+l+1>a&&(l=Math.max(1,a-d)),r.push(e.substring(o-=l,o+l)),!((d+=l+1)>a));)l=t[n=(n+1)%t.length];return r.reverse().join(i)}),r=void 0===e.currency?"":e.currency[0]+"",n=void 0===e.currency?"":e.currency[1]+"",l=void 0===e.decimal?".":e.decimal+"",d=void 0===e.numerals?eo:(a=er.call(e.numerals,String),function(e){return e.replace(/[0-9]/g,function(e){return a[+e]})}),s=void 0===e.percent?"%":e.percent+"",h=void 0===e.minus?"−":e.minus+"",c=void 0===e.nan?"NaN":e.nan+"";function p(e){var t=(e=ee(e)).fill,i=e.align,a=e.sign,p=e.symbol,u=e.zero,m=e.width,g=e.comma,f=e.precision,v=e.trim,b=e.type;"n"===b?(g=!0,b="g"):ea[b]||(void 0===f&&(f=12),v=!0,b="g"),(u||"0"===t&&"="===i)&&(u=!0,t="0",i="=");var y="$"===p?r:"#"===p&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",x="$"===p?n:/[%p]/.test(b)?s:"",w=ea[b],M=/[defgprs%]/.test(b);function F(e){var r,n,s,p=y,F=x;if("c"===b)F=w(e)+F,e="";else{var k=(e*=1)<0||1/e<0;if(e=isNaN(e)?c:w(Math.abs(e),f),v&&(e=function(e){e:for(var t,i=e.length,a=1,o=-1;a<i;++a)switch(e[a]){case".":o=t=a;break;case"0":0===o&&(o=a),t=a;break;default:if(!+e[a])break e;o>0&&(o=0)}return o>0?e.slice(0,o)+e.slice(t+1):e}(e)),k&&0==+e&&"+"!==a&&(k=!1),p=(k?"("===a?a:h:"-"===a||"("===a?"":a)+p,F=("s"===b?en[8+Q/3]:"")+F+(k&&"("===a?")":""),M){for(r=-1,n=e.length;++r<n;)if(48>(s=e.charCodeAt(r))||s>57){F=(46===s?l+e.slice(r+1):e.slice(r))+F,e=e.slice(0,r);break}}}g&&!u&&(e=o(e,1/0));var z=p.length+e.length+F.length,S=z<m?Array(m-z+1).join(t):"";switch(g&&u&&(e=o(S+e,S.length?m-F.length:1/0),S=""),i){case"<":e=p+e+F+S;break;case"=":e=p+S+e+F;break;case"^":e=S.slice(0,z=S.length>>1)+p+e+F+S.slice(z);break;default:e=S+p+e+F}return d(e)}return f=void 0===f?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,f)):Math.max(0,Math.min(20,f)),F.toString=function(){return e+""},F}return{format:p,formatPrefix:function(e,t){var i,a=p(((e=ee(e)).type="f",e)),o=3*Math.max(-8,Math.min(8,Math.floor(((i=q(Math.abs(i=t)))?i[1]:NaN)/3))),r=Math.pow(10,-o),n=en[8+o/3];return function(e){return a(r*e)+n}}}}({thousands:",",grouping:[3],currency:["$",""]})).format,R.formatPrefix;var ed=S(function(i,{positioned:a,colors:o,resolved:r}){let n=H(r.renderOptions,{...N,nodeLabelFontSize:a.config.labelFontSize},r.styleFace),l=a.body.nodes.filter(e=>!e.parentId).length,s={accent:o.accent,bg:o.bg},h=e(l,s),c=[],p=new Map,u=j(o),m=new Map,g=("backend:rough"===r.paintBackendId||"backend:hybrid"===r.paintBackendId)&&U("label").textHalo?Z(C("var(--bg)",o)??o.bg):void 0,f=t=>{if(void 0===t)return h;let i=m.get(t);if(i)return i;let a=Z(C(t,o)??t),r=a?.[3]===1?D(a[0],a[1],a[2]):void 0,n=void 0!==r&&g?.[3]===1&&B(r,D(g[0],g[1],g[2]))>=O,d=void 0===r||n?h:e(l,{...s,labelInk:r});return m.set(t,d),d},v=t(a.body.nodes),b=a.cells.filter(e=>!e.node.parentId).reduce((e,t)=>e+t.total,0);for(let e of(a.title&&c.push(i.text(A(a.title,n))),a.cells)){if(e.width<=0||e.height<=0){p.set(e.node.id,[]);continue}let t=void 0===e.node.value,o={value:b>0?e.total/b:0,category:String(e.category)},l=V(r.styleFace,"bar",o,{includeFallback:!1}),d=e.node.className?a.body.classDefs[e.node.className]:void 0,s=t?n.groupFillColor:n.nodeFillColor,c=t?n.groupTextColor:n.nodeTextColor,m=d?.color??c,g=t&&e.headerHeight?d?.fill??n.groupHeaderFillColor:void 0,v=d?.fill??l?.fillColor??s,y=void 0===v&&void 0===g&&d?.color===void 0?f(c):h,x=v??y[e.category]??"var(--_node-fill)",w=d?.stroke??l?.strokeColor??l?.borderColor??(t?n.groupBorderColor:n.nodeBorderColor)??"var(--bg)",M=d?.["stroke-width"]??String(l?.lineWidth??(t?r.styleFace?.group?.lineWidth:r.styleFace?.node?.lineWidth)??a.config.borderWidth),F=Math.min((t?n.groupCornerRadius:n.cornerRadius)??0,e.width/2,e.height/2,g?e.headerHeight/2:1/0),k=m??u("var(--_text)",g??x,!!(d?.fill||l?.fillColor||g||!s)),z={id:e.node.id,role:t?"group":"node"},S=[];if(e.width>0&&e.height>0&&S.push(i.shape({id:`cell:${e.node.id}`,role:"bar",owner:z,geometry:{kind:"rect",x:e.x,y:e.y,width:e.width,height:e.height,...F>0?{rx:F,ry:F}:{}},paint:{fill:x,stroke:w,strokeWidth:M},channels:o})),g&&e.width>0&&e.height>0){let t=Math.min((Number.parseFloat(M)||0)/2,e.width/2,e.headerHeight/2),a=e.x+t,o=e.y+t,r=e.width-2*t,n=e.headerHeight-t,l=Math.max(0,F-t);r>0&&n>0&&S.push(i.shape({id:`header:${e.node.id}`,role:"chrome",owner:z,geometry:l>0?{kind:"path",d:`M${a+l} ${o}H${a+r-l}Q${a+r} ${o} ${a+r} ${o+l}V${o+n}H${a}V${o+l}Q${a} ${o} ${a+l} ${o}Z`}:{kind:"rect",x:a,y:o,width:r,height:n},paint:{fill:g,stroke:"none"}}))}e.label&&S.push(i.text({id:`label:${e.node.id}`,role:"label",owner:z,text:e.label.text,block:e.label,x:e.x+e.width/2,y:e.labelY,fontSize:e.label.fontSize,fontWeight:e.label.fontWeight,anchor:"middle",paint:{fill:k}})),e.valueLabel&&S.push(i.text({id:`value:${e.node.id}`,role:"label",owner:z,text:e.valueLabel.text,block:e.valueLabel,x:e.x+e.width/2,y:e.valueY,fontSize:e.valueLabel.fontSize,fontWeight:e.valueLabel.fontWeight,anchor:"middle",paint:{fill:k}})),p.set(e.node.id,S)}let y=new Map;for(let e of[...a.cells].reverse()){let t=p.get(e.node.id);for(let i of v.get(e.node.id)??[]){let e=y.get(i.id);e&&t.push(e)}let a=void 0===e.node.value,o=e.label?void 0:E(`${e.node.label}: ${e.total}`);y.set(e.node.id,i.group({id:e.node.id,role:a?"group":"node",open:`<g${e.node.parentId?` data-parent="${E(e.node.parentId)}"`:""}${void 0===o?"":` role="${a?"group":"graphics-symbol"}" aria-roledescription="treemap ${a?"section":"cell"}"`}>${void 0===o?"":`<title>${o}</title>`}`,close:"</g>",children:t.map(e=>({node:e,indent:2}))}))}for(let e of a.cells)e.node.parentId||c.push(y.get(e.node.id));return d(i,"treemap",a,o,r.renderOptions.transparent??!1,c)}),es=b(K,{configDiagnostics:e=>l("treemap",e,{nodeWidth:n(1,1e4),nodeHeight:n(1,1e4),padding:n(0,1e4),diagramPadding:n(0,1e4),labelFontSize:n(1,1e4),valueFontSize:n(1,1e4),borderWidth:n(0,1e4),showValues:o,valueFormat:r,useMaxWidth:o}),normalizeRequest:e=>({familyConfig:{treemap:el(e.source.config.treemap)}}),layout:e=>{let o=function(e){let t=I("string"==typeof e?e.split(/\r?\n/):e);M(t);let i=t.familyLines,o=i.findIndex(e=>e.trim()&&!e.trim().startsWith("%%"));if(!/^treemap(?:-beta)?\s*$/i.test(a(i[o]?.trim()??"")))throw Error("Treemap source must start with treemap");let r={kind:"treemap",nodes:[],classDefs:Object.create(null),...F(L(t.accessibility))},n=[];for(let e=o+1;e<i.length;e++){let t=i[e],o=a(t).trim();if(!o)continue;x("treemap","statement",t,{line:e+1,unit:"normalized"});let l=/^title(?:\s+(.*))?$/i.exec(o);if(l){r.title=W(_(l[1]??""),`\r
|
|
5
|
+
`),w("treemap","set-title",r.title);continue}let d=/^classDef\s+([A-Za-z_]\w*)\s+(.+?);?$/.exec(o);if(d){let e=$(z(d[2]),`classDef ${d[1]}`);r.classDefs[d[1]]={...r.classDefs[d[1]]??{},...e},w("treemap","define-class",{name:d[1],style:e});continue}let s=t.match(/^[\t ]*/)?.[0].length??0,h=s,c=o;for(;c;){let t=/^(?:"([^"]*)"|'([^']*)')(?:\s*[:,]\s*([0-9_.,]+))?(?:\s*:::\s*([A-Za-z_]\w*))?/.exec(c);if(!t)throw Error(`Invalid Treemap statement at line ${e+1}: ${c}`);for(k("nodes",r.nodes.length+1);n.length&&n.at(-1).indent>=h;)n.pop();let i=n.at(-1)?.node.id,a=void 0===t[3]?void 0:Number(t[3].replace(/[,_]/g,""));if(k("nesting",n.length+ +(void 0===a)),void 0!==a&&(!Number.isFinite(a)||a<0))throw Error(`Invalid Treemap value at line ${e+1}`);let l={id:`treemap-${r.nodes.length}`,label:W(_(t[1]??t[2]),`\r
|
|
6
|
+
`),...i?{parentId:i}:{},...void 0===a?{}:{value:a},...t[4]?{className:t[4]}:{}};r.nodes.push(l),y("treemap")&&w("treemap","add-node",l,{line:e+1,column:s+o.length-c.length+1,unit:"normalized"}),void 0===a&&n.push({indent:h,node:l});let d=c.slice(t[0].length);h=d.match(/^[\t ]*/)?.[0].length??0,c=d.slice(h)}}return r}(e.source.authoredFamilyBody??e.source.familyBody);return o.title??="string"==typeof e.source.frontmatter.title?e.source.frontmatter.title:void 0,v(function(e,a={},o=el(),r){i(e.nodes,e=>void 0===e.value);let n=H(a,{...N,nodeLabelFontSize:o.labelFontSize,groupHeaderFontSize:o.labelFontSize,groupHeaderFontWeight:N.nodeLabelFontWeight},r),l=t(e.nodes),d=new Map;for(let t of[...e.nodes].reverse())d.set(t.id,t.value??(l.get(t.id)??[]).reduce((e,t)=>e+(d.get(t.id)??0),0));let s=P(e.title,n),h=o.diagramPadding,c=Math.max(o.width,(s?.width??0)+2*h),p=o.height+(s?.height??0)+2*h,u=[],m=[],g,f=l.get(void 0)??[],v=new Map(f.map((e,t)=>[e.id,t])),b=new Map(e.nodes.map(e=>[e.id,e])),y=[{items:f,box:{x:h,y:h+(s?.height??0),width:c-2*h,height:o.height},depth:0}];for(;y.length;){let e=y.pop();for(let t of function(e,t){let i=e.map((e,t)=>({...e,index:t})).filter(e=>e.value>0).sort((e,t)=>t.value-e.value||e.index-t.index),a=i.reduce((e,t)=>e+t.value,0);if(!Number.isFinite(a))throw Error("Treemap total exceeds the finite numeric range");let o=a>0?t.width*t.height/a:0,r=i.map(e=>({...e,area:e.value*o})),n=[],{x:l,y:d,width:s,height:h}=t,c=0;for(;c<r.length&&s>0&&h>0;){let e=Math.min(s,h),t=c+1,i=r[c].area,a=i,o=i,p=(t,i)=>Math.max(e*e*o/(t*t),t*t/(e*e*i)),u=p(i,a);for(;t<r.length;){let e=r[t].area,o=p(i+e,Math.min(a,e));if(o>u)break;u=o,i+=e,a=Math.min(a,e),t++}let m=s>=h,g=m?Math.min(s,i/h):Math.min(h,i/s),f=m?d:l;for(let e=c;e<t;e++){let i=r[e],a=e===t-1?(m?d+h:l+s)-f:i.area/g;n.push({id:i.id,value:i.value,x:m?l:f,y:m?f:d,width:m?g:a,height:m?a:g}),f+=a}m?(l+=g,s=Math.max(0,s-g)):(d+=g,h=Math.max(0,h-g)),c=t}for(;c<r.length;c++){let e=r[c];n.push({id:e.id,value:e.value,x:t.x,y:t.y,width:0,height:0})}for(let i of e)i.value<=0&&n.push({...i,x:t.x,y:t.y,width:0,height:0});return n}(e.items.map(e=>({id:e.id,value:d.get(e.id)??0})),e.box)){let i=b.get(t.id),d=e.category??v.get(i.id)??0,s={node:i,total:t.value,x:t.x,y:t.y,width:t.width,height:t.height,depth:e.depth,category:d},h=l.get(i.id),c=0;if(t.width>0&&t.height>0){let e=void 0===i.value,l=e?r?.group:r?.node,d=l?.paddingX??6,h=l?.paddingY??6,p=Math.max(1,t.width-2*d),u=e?n.groupFont??a.font:a.font,f=e?n.groupLetterSpacing:n.nodeLetterSpacing,v=e?n.groupTextTransform:n.nodeTextTransform,b=Y(i.label,{fontSize:e?n.groupHeaderFontSize:n.nodeLabelFontSize,fontWeight:e?n.groupHeaderFontWeight:n.nodeLabelFontWeight,letterSpacing:f,transform:v,fontFamily:u,maxWidth:p}),y=o.showValues?Y((g??=function(e){"$0,0"===e&&(e="$,");try{return J(e)}catch{throw Error(`Invalid treemap.valueFormat ${JSON.stringify(e)}`)}}(o.valueFormat))(t.value),{fontSize:l?.fontSize??r?.text?.fontSize??o.valueFontSize,fontWeight:l?.fontWeight??r?.text?.fontWeight??400,letterSpacing:f,transform:v,fontFamily:u,maxWidth:p}):void 0;c=b.height+(y?y.height+4:0)+2*h,b.width<=t.width-2*d&&c<=t.height?(s.label=b,s.valueLabel=y,s.labelY=t.y+h+b.height/2,y&&(s.valueY=t.y+h+4+b.height+y.height/2),e&&void 0!==n.groupHeaderFillColor&&(s.headerHeight=c)):m.push(i.label)}else m.push(i.label);if(u.push(s),h?.length){let i=s.label?c:0,a=Math.min(o.padding,t.width/4,Math.max(0,t.height-i)/4),n=r?.group?.paddingX===void 0?a:Math.min(r.group.paddingX,t.width/4),l=r?.group?.paddingY===void 0?a:Math.min(r.group.paddingY,Math.max(0,t.height-i)/4);y.push({items:h,box:{x:t.x+n,y:t.y+i+l,width:Math.max(0,t.width-2*n),height:Math.max(0,t.height-i-2*l)},depth:e.depth+1,category:d})}}}let x=new Map(e.nodes.map((e,t)=>[e.id,t]));return u.sort((e,t)=>x.get(e.node.id)-x.get(t.node.id)),{width:c,height:p,body:e,cells:u,config:o,hiddenLabels:m,options:a,...s?{title:T(s,c,h)}:{}}}(o,e.renderOptions,e.familyConfig.treemap,e.styleFace))},projectPositioned:g(function({positioned:e}){let i=t(e.body.nodes);return{version:1,bounds:{w:c(e.width),h:c(e.height)},nodes:e.cells.filter(e=>void 0!==e.node.value).map(e=>({id:e.node.id,...e.node.parentId?{parentId:e.node.parentId}:{},x:c(e.x),y:c(e.y),w:p(e.x,e.width),h:p(e.y,e.height),shape:"rectangle",label:e.node.label,role:"mark",labelVisibility:e.label?"visible":"hidden",...e.label?m(e.label,e.x+e.width/2,e.labelY,e):{}})),edges:[],groups:e.cells.filter(e=>void 0===e.node.value).map(e=>({id:e.node.id,...e.node.parentId?{parentId:e.node.parentId}:{},x:c(e.x),y:c(e.y),w:p(e.x,e.width),h:p(e.y,e.height),members:(i.get(e.node.id)??[]).map(e=>e.id),label:e.node.label,regionKind:"compartment"})),labels:[...e.title?[{id:"title",text:e.title.text,bounds:u(e.title.block,e.title.x,e.title.y),container:h(s(e))}]:[],...e.cells.flatMap(e=>[...void 0===e.node.value&&e.label?[{id:`section-label:${e.node.id}`,text:e.label.text,bounds:u(e.label,e.x+e.width/2,e.labelY),container:h(e)}]:[],...e.valueLabel?[{id:`value:${e.node.id}`,text:e.valueLabel.text,bounds:u(e.valueLabel,e.x+e.width/2,e.valueY),container:h(e)}]:[]])]}}),lowerScene:f(ed)});export{es as default};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import{a as e,b as t,c as i}from"./chunk-PQGPS2YV.js";import{a as a,h as l}from"./chunk-J7FFAFQF.js";import{d as n}from"./chunk-QA6GJQ4X.js";import{a as o,c as r,d as s}from"./chunk-2I4UPL7Q.js";import{a as c,b as h,c as d,d as x,e as g,j as u,l as f}from"./chunk-2SH76OTH.js";import{b as p,d as y}from"./chunk-AMJLVPUB.js";import{A as m,t as b,y as v,z as w}from"./chunk-DF6765YX.js";import"./chunk-J35HAQQF.js";import{a as k,b as A,c as L,d as z,h as S}from"./chunk-CN7WTBWB.js";import{C as $,a as C,b as M,c as F,d as T,e as W,g as _,i as I}from"./chunk-HLWUNUCM.js";import{D as P,c as N,ma as O,s as j,y as B}from"./chunk-X2UYKWKM.js";import{a as E,i as Y,j as X,k as D}from"./chunk-TYZOZXUJ.js";import{c as R,g as U,h as q}from"./chunk-NO7ZIVRU.js";import{Da as H,M as V,Z as J,ma as Q,o as Z,x as G,za as K}from"./chunk-Z3FDIVLN.js";import{w as ee}from"./chunk-N5ELX7LR.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var et=Object.freeze({id:"xychart",upstreamId:"xychart",maturity:"stable",label:"XY chart",headers:["xychart","xychart-beta"],aliases:[],config:{section:"xyChart",keys:["width","height","useMaxWidth","useWidth","titleFontSize","titlePadding","chartOrientation","plotReservedSpacePercent","showDataLabel","showDataLabelOutsideBar","showTitle","showLegend","legendFontSize","legendPadding","xAxis","yAxis"]},identity:{id:"family:xychart",kind:"family",version:"1.0.0",compatibility:{core:"0.5.3"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["value","category"],semanticRoles:["prelude","defs","chrome","grid","bar","series","point","axis","legend","title","label"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"grid",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"bar",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"bar",primitive:"data-mark",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"series",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"point",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"point",primitive:"data-mark",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"axis",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"axis",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"legend",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"legend",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"legend",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`xychart-beta
|
|
2
|
+
title "Revenue"
|
|
3
|
+
x-axis [Q1, Q2, Q3]
|
|
4
|
+
y-axis "USD" 0 --> 100
|
|
5
|
+
bar [45, 62, 80]`,detect:ee,detectLoose:ee}),ei={width:h,height:h,useMaxWidth:g,useWidth:h,titleFontSize:h,titlePadding:d,chartOrientation:u("vertical","horizontal"),plotReservedSpacePercent:f(0,100,!1),showDataLabel:g,showDataLabelOutsideBar:g,showTitle:g,showLegend:g,legendFontSize:h,legendPadding:d,xAxis:c("an axis-config object",e=>!!e&&"object"==typeof e&&!Array.isArray(e)),yAxis:c("an axis-config object",e=>!!e&&"object"==typeof e&&!Array.isArray(e))},ea={showLabel:g,labelFontSize:h,labelPadding:d,labelRotation:x,showTitle:g,titleFontSize:h,titlePadding:d,showTick:g,tickLength:d,tickWidth:h,showAxisLine:g,axisLineWidth:h},el={showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},en={width:700,height:500,useMaxWidth:!0,useWidth:void 0,titleFontSize:20,titlePadding:10,chartOrientation:"vertical",plotReservedSpacePercent:50,showDataLabel:!1,showDataLabelOutsideBar:!1,showTitle:!0,showLegend:!0,legendFontSize:14,legendPadding:5,xAxis:{...el},yAxis:{...el}};function eo(e){return{showLabel:ec(e?.showLabel,el.showLabel),labelFontSize:er(e?.labelFontSize,el.labelFontSize),labelPadding:es(e?.labelPadding,el.labelPadding),showTitle:ec(e?.showTitle,el.showTitle),titleFontSize:er(e?.titleFontSize,el.titleFontSize),titlePadding:es(e?.titlePadding,el.titlePadding),showTick:ec(e?.showTick,el.showTick),tickLength:es(e?.tickLength,el.tickLength),tickWidth:er(e?.tickWidth,el.tickWidth),showAxisLine:ec(e?.showAxisLine,el.showAxisLine),axisLineWidth:er(e?.axisLineWidth,el.axisLineWidth)}}function er(e,t){return"number"==typeof e&&Number.isFinite(e)&&e>0?e:t}function es(e,t){return"number"==typeof e&&Number.isFinite(e)&&e>=0?e:t}function ec(e,t){return"boolean"==typeof e?e:t}function eh(e){let t=Math.max(0,...e.series.map(e=>e.data.length));return e.xAxis.categories?Math.max(1,e.xAxis.categories.length,t):Math.max(1,t)}function ed(e,t=eh(e)){if(e.xAxis.range){let{min:i,max:a}=e.xAxis.range,l=t>1?(a-i)/(t-1):0;return Array.from({length:t},(e,t)=>i+l*t)}return Array.from({length:t},(e,t)=>t)}function ex(e,t=eh(e)){return e.xAxis.categories?Array.from({length:t},(t,i)=>e.xAxis.categories[i]??String(i+1)):e.xAxis.range?ed(e,t).map(e=>ep(e)):Array.from({length:t},(e,t)=>String(t+1))}function eg(e,t){let i=Math.min(e.min,e.max);return Math.min(Math.max(e.min,e.max),Math.max(i,t))}function eu(e){if(Number.isInteger(e))return String(e);let t=e.toFixed(+(10>Math.abs(e)));return 0===Number(t)&&0!==e?String(e):t}function ef(e,t,i=10){if(!(i>0))return[];if(e===t)return[e];let a=t<e,[l,n,o]=function e(t,i,a){let l=(i-t)/Math.max(0,a),n=Math.floor(Math.log10(l)),o=l/Math.pow(10,n),r=o>=Math.sqrt(50)?10:o>=Math.sqrt(10)?5:o>=Math.sqrt(2)?2:1,s,c,h;return n<0?(s=Math.round(t*(h=Math.pow(10,-n)/r)),c=Math.round(i*h),s/h<t&&s++,c/h>i&&c--,h=-h):(s=Math.round(t/(h=Math.pow(10,n)*r)),c=Math.round(i/h),s*h<t&&s++,c*h>i&&c--),c<s&&.5<=a&&a<2?e(t,i,2*a):[s,c,h]}(a?t:e,a?e:t,i);if(!(n>=l))return[];let r=n-l+1,s=Array(r);if(a)if(o<0)for(let e=0;e<r;e++)s[e]=-((n-e)/o);else for(let e=0;e<r;e++)s[e]=(n-e)*o;else if(o<0)for(let e=0;e<r;e++)s[e]=-((l+e)/o);else for(let e=0;e<r;e++)s[e]=(l+e)*o;return s.map(ey)}function ep(e){return!Number.isFinite(e)||Number.isInteger(e)?String(e):Number(e.toPrecision(12)).toString()}function ey(e){return Math.round(1e12*e)/1e12}var em={nodeLabelFontSize:14,edgeLabelFontSize:16,groupHeaderFontSize:20,nodeLabelFontWeight:400,edgeLabelFontWeight:400,groupHeaderFontWeight:500,nodePaddingX:0,nodePaddingY:0,nodeLineWidth:0,edgeLineWidth:3,groupCornerRadius:0,groupPaddingX:0,groupPaddingY:0,groupLineWidth:R.outerBox};function eb(e,t,i,a){let l=e.series.some(e=>"line"===e.type)?t:0,n=e=>e.showLabel&&e.showTick?e.tickWidth/2:0;return{value:Math.max(.5,n(i),l),position:a?Math.max(n(a),l):0}}function ev(e){return e.showAxisLine?e.axisLineWidth/2:0}function ew(e,t,i,a,l,n,o){if(!t.showLegend)return{items:[],size:0,hiddenLabels:[]};let r=function(e){if(!(e.length>1||e.some(e=>void 0!==e.label&&e.label.length>0)))return[];let t=[],i=0,a=0;for(let l=0;l<e.length;l++){let n=e[l],o="bar"===n.type?i++:a++,r="bar"===n.type?`Bar ${o+1}`:`Line ${o+1}`;t.push({label:void 0!==n.label&&n.label.length>0?n.label:r,type:n.type,seriesIndex:o,colorIndex:l})}return t}(e.series);if(0===r.length)return{items:[],size:0,hiddenLabels:[]};let s=Math.ceil(Math.max(...r.map(e=>o.legend(e.label,t.legendFontSize)))),c=2*t.legendPadding+12+6+s,h=Math.max(...r.map(e=>o.block("legend",e.label,t.legendFontSize).height),12)+t.legendPadding,d=t.legendPadding+r.length*h;if(c>i||d>n)return{items:[],size:0,hiddenLabels:r.map(e=>e.label)};let x=a-c+t.legendPadding;return{items:r.map((e,i)=>({label:e.label,x:x,y:l+t.legendPadding+i*h,type:e.type,seriesIndex:e.seriesIndex,colorIndex:e.colorIndex})),size:c,hiddenLabels:[]}}function ek(e,t,i,a){if(!e||!t.showTitle)return{height:0};let l=a.wrapTitle(e,t.titleFontSize,Math.max(1,t.width-2*t.titlePadding)),n=(l.height,l.lineHeight,l.height+2*t.titlePadding);return n>i?{height:0}:{height:n,title:{text:l.text,block:l,x:t.width/2,y:t.titlePadding+l.height/2}}}function eA(e,t,i,a,l,n=e.titleFontSize){let o=a,r={...e,showAxisLine:!1,showLabel:!1,showTick:!1,showTitle:!1};if(e.showAxisLine&&o>e.axisLineWidth&&(r.showAxisLine=!0,o-=e.axisLineWidth),e.showLabel&&i.length>0){let t=l()+2*e.labelPadding;t<=o&&(r.showLabel=!0,o-=t)}if(e.showTick&&o>=e.tickLength&&(r.showTick=!0,o-=e.tickLength),e.showTitle&&t){let t=n+2*e.titlePadding;t<=o&&(r.showTitle=!0,o-=t)}return{config:r,size:a-o}}function eL(e,t,i,a,l){let n=t?l.block("axisTitle",t,e.titleFontSize).height-e.titleFontSize*(G-1):e.titleFontSize;return eA(e,t,i,a,()=>Math.max(e.labelFontSize,...i.map(t=>l.block("tick",t,e.labelFontSize).height-e.labelFontSize*(G-1))),n)}function ez(e,t,i,a,l,n){return eA(e,t,i,a,()=>Math.max(...i.map(t=>l.tick(t,e.labelFontSize))),t?l.block("axisTitle",t,e.titleFontSize,Math.max(1,n-4)).height-e.titleFontSize*(G-1):e.titleFontSize)}function eS(e,t,i,a,l,n,o){let r=l.showAxisLine?l.axisLineWidth:0,s=l.showTick?l.tickLength:0,c=a.y+a.height+r+s+l.labelPadding+.4*l.labelFontSize,h=t.map(e=>n.tick(e,l.labelFontSize)),d=h.length?Math.max(...h):0,x=e.map(e=>i(e)),g=1/0;for(let e=1;e<x.length;e++)g=Math.min(g,Math.abs(x[e]-x[e-1]));let u=Number.isFinite(g)&&g>0?Math.max(1,Math.ceil((d+6)/g)):1;return e.map((e,l)=>{let n=l%u==0?t[l]:"",d=i(e);if(void 0!==o&&n){let e=h[l]/2;d=Math.max(2+e,Math.min(o-2-e,d))}return{label:n,x:i(e),y:a.y+a.height+r,tx:i(e),ty:a.y+a.height+r+s,labelX:d,labelY:c,textAnchor:"middle"}})}function e$(e,t,i,a,l){let n=l.showAxisLine?l.axisLineWidth:0,o=l.showTick?l.tickLength:0,r=a.x-n-o-l.labelPadding;return e.map((e,l)=>({label:t[l],x:a.x-n,y:i(e),tx:a.x-n-o,ty:i(e),labelX:r,labelY:i(e),textAnchor:"end"}))}function eC(e,t){let i=e.x-(t.showAxisLine?t.axisLineWidth/2:0);return{x1:i,y1:e.y,x2:i,y2:e.y+e.height}}function eM(e,t,i,a,l){if(!e||!i.showTitle)return;let n=l.block("axisTitle",e,i.titleFontSize,Math.max(1,a-4)),o=n.width/2,r=t.y+t.height/2;return{text:e,block:n,x:i.titlePadding+.8*i.titleFontSize,y:2*o+4>=a?a/2:Math.min(a-2-o,Math.max(2+o,r)),rotate:-90}}function eF(e,t,i,a){let l=e.xAxis.categories;if(!l||e.xAxis.range||!t.xAxis.showLabel)return[];let n=(e,t)=>t<l.length&&""!==e,o=ex(e);return i.showLabel?o.filter((e,t)=>n(e,t)&&a[t]?.label===""):o.filter(n)}function eT(e,t,i,a,l){if(!a.showDataLabel||0===e.length)return{dataLabels:[],unlabeledBars:[]};let n=e.map(e=>eu(e.value)),o=16;for(;o>=8&&!e.every((e,i)=>{let a=l.block("data",n[i],o);return t?a.height<=e.height-4:a.width<=e.width-8});o--);if(o<8)return{dataLabels:[],unlabeledBars:[...e]};let r=[],s=[];return e.forEach((e,c)=>{let h=n[c],d=l.block("data",h,o),x=d.width,g=t?e.width-12>=x:e.height-10>=d.height,u=a=>(t?a?i.x+i.width-(e.x+e.width):e.x-i.x:a?e.y-i.y:i.y+i.height-(e.y+e.height))>=(t?x:d.height)+4,f=e.value>0||0===e.value&&(u(!0)||!u(!1)),p=u(f),y=a.showDataLabelOutsideBar?p?"outside":g?"inside":void 0:g?"inside":p?"outside":void 0;if(!y)return void s.push(e);if(t){let t="outside"===y===f,i=f?e.x+e.width:e.x,a="outside"===y?4:-8;r.push({bar:e,text:h,fontSize:o,placement:y,x:i+(f?a:-a),y:e.y+e.height/2,anchor:t?"start":"end",dominantBaseline:"middle"});return}let m="inside"===y?f:!f;r.push({bar:e,text:h,fontSize:o,placement:y,x:e.x+e.width/2,y:"inside"===y?f?e.y+8:e.y+e.height-8:f?e.y-4:e.y+e.height+4,anchor:"middle",...m?{dominantBaseline:"hanging"}:{}})}),{dataLabels:r,unlabeledBars:s}}function eW(e,t,i,a,l,n,o,r){let s=e.series.filter(e=>"bar"===e.type).length;if(0===s)return[];let c=.95*i,h=c/Math.max(1,s),d=[],x=0,g=0,u=a(eg(l,0));for(let i of e.series){if("bar"!==i.type){g++;continue}for(let e=0;e<i.data.length;e++){let s=t(e)-c/2+x*h,f=a(eg(l,i.data[e])),p=Math.min(f,u),y=Math.abs(u-f);d.push({x:r?p:s,y:r?s:p,width:r?y:h,height:r?h:y,value:i.data[e],label:n[e],seriesIndex:x,colorIndex:o[g]})}x++,g++}return d}function e_(e,t,i,a,l,n,o){let r=[],s=0,c=0;for(let h of e.series){if("line"!==h.type){c++;continue}r.push({points:h.data.map((e,n)=>{let r=t(n),s=i(eg(a,e));return{x:o?s:r,y:o?r:s,value:e,label:l[n],...h.pointLabels?.[n]!==void 0?{textLabel:h.pointLabels[n]}:{}}}),seriesIndex:s,colorIndex:n[c]}),s++,c++}return r}var eI=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(?:\s+([\s\S]+))?$/;function eP(e,t=!1,i){let a=[],l=[];for(let n of eJ(e)){let e=n.trim().match(eI);if(!e)throw Error(`Invalid XYChart point: "${n.trim()}"`);let o=Number(e[1]);if(!Number.isFinite(o))throw Error(`XYChart point must be finite: "${n.trim()}"`);let r=e[2]?.trim();if(t&&void 0!==r&&!r.startsWith('"'))throw Error(`XYChart point labels must be double-quoted: "${n.trim()}"`);let s=void 0===r?void 0:eq(r);if(null===s)throw Error(`Invalid XYChart point label: "${n.trim()}"`);a.push(o),W("xychart")&&I("xychart","appendSeriesValue",{index:a.length-1,value:o},{line:i,unit:"normalized"}),l.push(s),W("xychart")&&I("xychart","appendSeriesPointLabel",{index:l.length-1,label:s},{line:i,unit:"normalized"})}if(0===a.length)throw Error("XYChart series must contain at least one point");return{values:a,labels:l}}var eN=String.raw`[+-]?(?:\d+(?:\.\d+)?|\.\d+)`,eO=RegExp(`^(${eN})\\s*-->\\s*(${eN})$`),ej=/[^A-Za-z0-9&+=*.#_\s-]/,eB=/[^A-Za-z&+=*.#_\s-]/,eE=/(?<![A-Za-z])(?:xychart-beta|xychart|vertical|horizontal|[xy]-axis|title|line|bar)(?![A-Za-z0-9_])/i;function eY(e,t,i,a,l){if(!l||e.startsWith('"'))return;let n=e.startsWith("'")?"'":("xychart_unquoted_axis_title"===a?eB:ej).exec(t)?.[0];if(void 0!==n)return l(a,`${i} ${JSON.stringify(t)} has ${JSON.stringify(n)} outside a double-quoted string, which pinned Mermaid rejects`);let o=eE.exec(t)?.[0];void 0!==o&&l(a,`${i} ${JSON.stringify(t)} has the keyword ${JSON.stringify(o)} outside a double-quoted string, where pinned Mermaid ends the text: it rejects the line or reads another statement there`)}function eX(e,t,i,a,l){let n=t.trim();if(0===n.length)return!1;let o=eV(n);if(o&&"x"===i){let t=o.prefix,n=t.length>0?eq(t):void 0;if(null===n)return!1;let r=function(e){let t=eJ(e),i=[];for(let e of t){let t=eq(e);if(null===t||0===t.length)throw j({what:`Invalid XYChart category ${JSON.stringify(e)}`,expectedForm:"nonempty categories separated by commas",example:'x-axis ["A", "B"]'});i.push(t)}return i}(o.contents);if(0===r.length)return!1;if(l)for(let e of eJ(o.contents))eY(e,e,"XY chart category","xychart_unquoted_text",l);return void 0!==n&&(eY(t,n,`XY chart ${i}-axis title`,"xychart_unquoted_axis_title",l),e.title=n,W("xychart")&&I("xychart","setAxisTitle",{axis:i,title:n},{line:a,unit:"normalized"})),e.categories=r,W("xychart")&&I("xychart","setAxisCategories",{axis:i,categories:r},{line:a,unit:"normalized"}),delete e.range,W("xychart")&&I("xychart","deleteAxisRange",i,{line:a,unit:"normalized"}),delete e.rangeAuthored,W("xychart")&&I("xychart","deleteAxisRangeAuthored",i,{line:a,unit:"normalized"}),e.authored=!0,W("xychart")&&I("xychart","setAxisAuthored",{axis:i,authored:!0},{line:a,unit:"normalized"}),!0}let r=eD(n);return!!r&&(void 0!==r.title&&(eY(n,r.title,`XY chart ${i}-axis title`,"xychart_unquoted_axis_title",l),e.title=r.title,W("xychart")&&I("xychart","setAxisTitle",{axis:i,title:e.title},{line:a,unit:"normalized"})),r.range&&(e.range=r.range,W("xychart")&&I("xychart","setAxisRange",{axis:i,range:e.range},{line:a,unit:"normalized"}),e.rangeAuthored=!0,W("xychart")&&I("xychart","setAxisRangeAuthored",{axis:i,authored:!0},{line:a,unit:"normalized"}),delete e.categories,W("xychart")&&I("xychart","deleteAxisCategories",i,{line:a,unit:"normalized"})),e.authored=!0,W("xychart")&&I("xychart","setAxisAuthored",{axis:i,authored:!0},{line:a,unit:"normalized"}),!0)}function eD(e){let t=e=>({min:parseFloat(e[1]),max:parseFloat(e[2])}),i=e.match(eO);if(i)return{range:t(i),words:!1};let a=eU(e);if(!a)return null;let l=a.rest.match(eO);if(l)return{title:a.value,range:t(l),words:!1};if(0===a.rest.length)return{title:a.value,words:!1};if(/^["']/.test(e))return null;let n=e,o,r=e.lastIndexOf("--\x3e");if(r>=0){let i=e.slice(0,r).trimEnd(),a=i.length;for(;a>0&&!/\s/.test(i[a-1]);)a--;let l=`${i.slice(a)} --> ${e.slice(r+3).trim()}`.match(eO);if(!l)return null;n=i.slice(0,a).trim(),o=t(l)}return/^[^"[\]]+$/.test(n)&&!n.includes("--\x3e")?{title:n,...o?{range:o}:{},words:!0}:null}var eR={subject:"XYChart text entity",example:'title "Say #quot;hi#quot;"'};function eU(e){let t=e.trim();if(0===t.length)return;if(t.startsWith('"')||t.startsWith("'")){let e=function(e){let t=e[0];if('"'!==t&&"'"!==t)return null;let i="",a=!1;for(let l=1;l<e.length;l++){let n=e[l];if(a){n===t||"\\"===n?i+=n:i+=`\\${n}`,a=!1;continue}if("\\"===n){a=!0;continue}if(n===t)return{value:i,endIndex:l};i+=n}return null}(t);return e?{value:n(e.value,eR),rest:t.slice(e.endIndex+1).trim()}:void 0}let i=t.match(/^([^\s]+)(?:\s+(.*))?$/);if(i)return{value:i[1],rest:(i[2]??"").trim()}}function eq(e){let t=e.trim();if(!t)return null;if(!t.startsWith('"')&&!t.startsWith("'"))return t;let i=eU(t);return i&&0===i.rest.length?i.value:null}function eH(e){let t=e.match(/^(bar|line)\b/i);if(!t)return null;let i=eV(e.slice(t[0].length).trim());if(!i)return null;let a=i.prefix.length>0?function(e){if(!e)return;let t=e.trim();return t?eq(t):void 0}(i.prefix):void 0;return null===a?null:{type:t[1].toLowerCase(),label:a,points:i.contents}}function eV(e){let t=null,i=!1,a=-1,l=0,n=-1;for(let o=0;o<e.length;o++){let r=e[o];if(t){if(i){i=!1;continue}if("\\"===r){i=!0;continue}r===t&&(t=null);continue}if('"'===r||"'"===r){t=r;continue}if("["===r){0===l&&(a=o),l++;continue}if("]"===r){if(0===l)return null;0==--l&&(n=o)}}return t||0!==l||a<0||n<a||e.slice(n+1).trim()?null:{prefix:e.slice(0,a).trim(),contents:e.slice(a+1,n)}}function eJ(e){let t=[],i="",a=null,l=!1;for(let n=0;n<e.length;n++){let o=e[n];if(a){if(i+=o,l){l=!1;continue}if("\\"===o){l=!0;continue}o===a&&(a=null);continue}if('"'===o||"'"===o){a=o,i+=o;continue}if(","===o){eQ(t,i),i="";continue}i+=o}if(a)throw Error("Unclosed quoted XYChart value");return eQ(t,i),t}function eQ(e,t){e.push(t.trim())}function eZ(e){let t=v(e,["config"])??e,i=v(e,["config","xyChart"])??v(e,["xyChart"])??{},a=e5(i,["chartOrientation"]),l={width:e1(i,["width"]),height:e1(i,["height"]),useMaxWidth:e0(i,["useMaxWidth"])??e0(t,["useMaxWidth"]),useWidth:e1(i,["useWidth"])??e1(t,["useWidth"]),titleFontSize:e1(i,["titleFontSize"]),titlePadding:e2(i,["titlePadding"]),chartOrientation:"horizontal"===a||"vertical"===a?a:void 0,plotReservedSpacePercent:e1(i,["plotReservedSpacePercent"]),showDataLabel:e0(i,["showDataLabel"]),showDataLabelOutsideBar:e0(i,["showDataLabelOutsideBar"]),showTitle:e0(i,["showTitle"]),showLegend:e0(i,["showLegend"]),legendFontSize:e1(i,["legendFontSize"]),legendPadding:e2(i,["legendPadding"]),xAxis:eK(i,"xAxis"),yAxis:eK(i,"yAxis")};return W("xychart")&&I("xychart","resolveConfig",l),l}function eG(e){let t=v(e,["config"])??e,i=v(e,["config","themeVariables","xyChart"])??v(e,["themeVariables","xyChart"])??{},a={backgroundColor:e5(i,["backgroundColor"]),themeCss:e5(t,["themeCSS"]),titleColor:e5(i,["titleColor"]),xAxisLabelColor:e5(i,["xAxisLabelColor"]),xAxisTickColor:e5(i,["xAxisTickColor"]),xAxisLineColor:e5(i,["xAxisLineColor"]),xAxisTitleColor:e5(i,["xAxisTitleColor"]),yAxisLabelColor:e5(i,["yAxisLabelColor"]),yAxisTickColor:e5(i,["yAxisTickColor"]),yAxisLineColor:e5(i,["yAxisLineColor"]),yAxisTitleColor:e5(i,["yAxisTitleColor"]),legendTextColor:e5(i,["legendTextColor"]),dataLabelColor:e5(i,["dataLabelColor"]),plotColorPalette:function(e,t){let i=m(e,t);if(i&&i.length>0){let e=i.filter(e=>"string"==typeof e).map(e=>e.trim()).filter(Boolean);if(e.length>0)return e}var a=e5(e,t);if(!a)return;let l=E(a).map(e=>e.trim()).filter(Boolean);return l.length>0?l:void 0}(i,["plotColorPalette"])};return W("xychart")&&I("xychart","resolveTheme",a),a}function eK(e,t){let i=v(e,[t]);if(!i)return;let a=e0(i,["showLabel"]),l=e1(i,["labelFontSize"]),n=e2(i,["labelPadding"]),o=e0(i,["showTitle"]),r=e1(i,["titleFontSize"]),s=e2(i,["titlePadding"]),c=e0(i,["showTick"]),h=e2(i,["tickLength"]),d=e1(i,["tickWidth"]),x=e0(i,["showAxisLine"]),g=e1(i,["axisLineWidth"]);if(void 0!==a||void 0!==l||void 0!==n||void 0!==o||void 0!==r||void 0!==s||void 0!==c||void 0!==h||void 0!==d||void 0!==x||void 0!==g)return{showLabel:a,labelFontSize:l,labelPadding:n,showTitle:o,titleFontSize:r,titlePadding:s,showTick:c,tickLength:h,tickWidth:d,showAxisLine:x,axisLineWidth:g}}function e0(e,t){let i=w(e,t);return"boolean"==typeof i?i:void 0}function e1(e,t){let i=w(e,t);return"number"==typeof i&&Number.isFinite(i)&&i>0?i:void 0}function e2(e,t){let i=w(e,t);return"number"==typeof i&&Number.isFinite(i)&&i>=0?i:void 0}function e5(e,t){let i=w(e,t);return"string"==typeof i&&i.trim().length>0?i.trim():void 0}function e4(e){return r(e,{escapes:!1,restOfLine:/(?<!\w)acc(?:Title|Descr)\s*:/iy,block:e8})}function e6(e,t,i){let a=[],l=!1,n=e4(e);for(let r=0;r<e.length;r++){let c=r,h=e[r].trim();if(!h||h.startsWith("%%"))continue;if(l){a.push(h),i?.push(c),h.includes("}")&&(l=!1);continue}let d=/^acc(?:Title|Descr)\b/i.test(h);if(!d){let t=n[r];t>r&&(h=s(e,r,t).trim(),r=t)}for(let e of d?tt(h,t):function(e,t){let i=o(e,e8);if(i<0)return tt(e,t);let a=e.slice(0,i).trimEnd(),l=tt(a,t),n=l.length-1;return n>=0&&e3.test(l[n])&&(l[n]=e.slice(a.length-l[n].length).trim()),l}(h,t)){a.push(e),i?.push(c);let t=e.match(/^accDescr\s*:?\s*\{(.*)$/i);t&&!t[1].includes("}")&&(l=!0)}}return a}var e3=/^acc(?:Title|Descr)\s*:/i,e8=/(?<!\w)accDescr\s*\{/iy,e7=/(?:title|[xy]-axis|bar|line)(?!\w)|acc(?:Title\s*:|Descr\s*[:{])/iy;function e9(e,t,i){let a=0;if(i.length>0){let l=te(t.slice(0,i[0]).trim());for(let n=0;n<i.length;n++){let o=te(t.slice(i[n],i[n+1]).trim());if(l&&o&&("title"!==l||"data"===o)){let r=t.slice(a,i[n]).trim();r&&e.push(r),a=i[n],l=o}else"title"!==l&&(l=o)}}let l=t.slice(a).trim();l&&e.push(l)}function te(e){let t=e.match(/^(title|x-axis|y-axis)\s+([\s\S]+)$/i);if(!t){let t=eH(e);return t&&eJ(t.points).every(e=>eI.test(e.trim()))?"data":void 0}let i=t[2].trim(),a=i.startsWith('"')||i.startsWith("'");if(/^title$/i.test(t[1]))return null===eq(i)?void 0:a?"data":"title";let l=/^x/i.test(t[1])?eV(i):null;if(l)return l.prefix&&null===eq(l.prefix)?void 0:"data";let n=eD(i);return n?n.range||a?"data":n.words?"title":"text":void 0}function tt(e,t){let i=[],a="",l=null,n=0,o=0,r=!1,s=[],c=!1,h=!0;for(let t=0;t<e.length;t++){let d=e[t];if(l){if(a+=d,r){r=!1;continue}if("\\"===d){r=!0;continue}d===l&&(l=null);continue}if('"'===d||"'"===d){l=d,a+=d;continue}if("["===d){n++,a+=d;continue}if("]"===d){n--,a+=d;continue}if("{"===d){o++,a+=d;continue}if("}"===d){o--,a+=d;continue}if(";"===d&&0===n&&0===o){e9(i,a,s),a="",s=[],c=!1,h=!0;continue}if(h&&0===n&&0===o&&/[abltxy]/i.test(d)&&!/\w/.test(e[t-1]??" ")){e7.lastIndex=t;let l=e7.exec(e);if(l&&/^acc/i.test(l[0])){let n=[];if(e9(n,a,s),0===n.length||void 0!==te(n[n.length-1])){if(i.push(...n),a="",s=[],!l[0].endsWith("{"))return i.push(e.slice(t).trim()),i;let o=e.indexOf("}",t+l[0].length);if(o>=0){a+=e.slice(t,o+1),t=o,c=!0,h=!1;continue}}h=!1}else l&&c&&s.push(a.length)}c||/\s/.test(d)||(c=!0),a+=d}if(t&&(l||0!==n||0!==o))throw Error(`Unclosed XYChart delimiter in line: "${e}"`);return e9(i,a,s),i}function ti(e,t,i,a,l,n){if(i.config.showAxisLine&&t.push(e.shape({id:`axis:${a}:line`,role:"axis",geometry:{kind:"line",x1:tn(i.line.x1),y1:tn(i.line.y1),x2:tn(i.line.x2),y2:tn(i.line.y2)},paint:{stroke:l,strokeWidth:String(i.config.axisLineWidth)},attributes:{className:`xychart-axis-line xychart-${a}-axis-line`}})),i.config.showTick)for(let l of i.ticks)t.push(e.shape({id:`axis:${a}:tick:${l.label}`,role:"axis",geometry:{kind:"line",x1:tn(l.x),y1:tn(l.y),x2:tn(l.tx),y2:tn(l.ty)},paint:{stroke:n,strokeWidth:String(i.config.tickWidth)},attributes:{className:`xychart-tick xychart-${a}-tick`}}))}function ta(e,t,i,a,l,n,o){for(let r of i){let i=r.block?.text??U(r.label,n.edgeTextTransform),s="end"===r.textAnchor;t.push(e.text({id:`axis:${l}:label:${r.label}`,role:"axis",text:i,block:r.block,x:r.labelX,y:r.labelY,fontSize:a,fontWeight:n.nodeLabelFontWeight,letterSpacing:n.nodeLetterSpacing,display:"literal",anchor:r.textAnchor,...s?{dominantBaseline:"middle",baselineShift:0}:{},paint:{fill:o},attributes:{className:`xychart-label xychart-${l}-label`}}))}}function tl(e,t,i){let n=t??a,o=e.theme.plotColorPalette,r=l(Math.max(0,...e.bars.map(e=>e.colorIndex),...e.lines.map(e=>e.colorIndex))+1,{accent:n,bg:i}),s=e=>o&&o.length>0?o[e%o.length]:r[e];return{concrete:s,css:e=>!(o&&o.length>0)&&0===e&&r.length<=6&&r[0]===n?`var(--accent, ${a})`:s(e)}}function tn(e){return Math.round(100*e)/100}function to(e){return tn(e).toString()}var tr=N(function(e,a){let l,n,o,r,s,{positioned:c,colors:h,resolved:d}=a,x=d.renderOptions,g=h.font??"Inter",u=x.transparent??!1,f=x.interactive??!1,p=[],y=q(x,em,d.styleFace),m=(l=c.theme,{gridStroke:y.edgeStrokeColor??"color-mix(in srgb, var(--fg) 14%, transparent)",titleColor:l.titleColor??y.groupTextColor??y.nodeTextColor??"var(--_text)",labelColor:y.nodeTextColor??"var(--_text)",xAxisLabelColor:l.xAxisLabelColor??y.nodeTextColor??"var(--_text)",yAxisLabelColor:l.yAxisLabelColor??y.nodeTextColor??"var(--_text)",xAxisTickColor:l.xAxisTickColor??y.groupTextColor??"var(--_text-sec)",yAxisTickColor:l.yAxisTickColor??y.groupTextColor??"var(--_text-sec)",xAxisLineColor:l.xAxisLineColor??y.edgeStrokeColor??"var(--_text-sec)",yAxisLineColor:l.yAxisLineColor??y.edgeStrokeColor??"var(--_text-sec)",xAxisTitleColor:l.xAxisTitleColor??y.edgeTextColor??y.nodeTextColor??"var(--_text)",yAxisTitleColor:l.yAxisTitleColor??y.edgeTextColor??y.nodeTextColor??"var(--_text)",legendTextColor:l.legendTextColor??y.nodeTextColor??"var(--_text)"}),b=!!c.theme.plotColorPalette?.length,v=Math.max(0,...c.bars.map(e=>e.colorIndex),...c.lines.map(e=>e.colorIndex)),w=(n=`mermaid-${function(e){let t=[e.width,e.height,e.title?.text??"",e.accessibility?.title??"",e.accessibility?.description??"",e.bars.length,e.lines.length].join("|"),i=5381;for(let e=0;e<t.length;e++)i=(i<<5)+i^t.charCodeAt(e);return Math.abs(i>>>0).toString(36)}(c)}`,o=c.accessibility?.title?`chart-title-${n}`:void 0,r=c.accessibility?.description?`chart-desc-${n}`:void 0,s=c.config.useWidth??c.width,{openTag:{width:c.config.useMaxWidth?"100%":String(s),height:c.config.useMaxWidth?"100%":String(Math.round(c.height*(s/Math.max(1,c.width)))),style:c.config.useMaxWidth?`max-width:${s}px`:void 0,attrs:{id:n,class:"xychart",role:o||r?"img":void 0,"aria-roledescription":"xychart","aria-labelledby":o,"aria-describedby":r}},title:c.accessibility?.title?`<title id="${o}">${V(c.accessibility.title)}</title>`:void 0,description:c.accessibility?.description?`<desc id="${r}">${V(c.accessibility.description)}</desc>`:void 0}),k=D(c.width,c.height,h,u,w.openTag).replace("<svg ",`<svg data-xychart-colors="${v}" `),{style:A,defs:L}=function(e,t,a,l){let n=new Set;for(let t of e.bars)n.add(t.colorIndex);for(let t of e.lines)n.add(t.colorIndex);let o=[],r=tl(e,a,l);for(let e of[...n].sort((e,t)=>e-t))o.push(` --xychart-color-${e}: ${r.css(e)};`);let s=t?i("xychart",["xychart-bar-group","xychart-dot-group"]):"",c=o.length>0?`
|
|
6
|
+
svg {
|
|
7
|
+
${o.join(`
|
|
8
|
+
`)}
|
|
9
|
+
}`:"",h=e.theme.themeCss?`
|
|
10
|
+
${e.theme.themeCss}
|
|
11
|
+
`:"";return{style:`<style>
|
|
12
|
+
.xychart-data-label { pointer-events: none; }${c}${s}${h}
|
|
13
|
+
</style>`,defs:""}}(c,f,h.accent,h.bg);p.push(e.documentOpen({id:"prelude",width:c.width,height:c.height,colors:h,transparent:u,font:g,hasMonoFont:!1,extraCss:A},k+`
|
|
14
|
+
`+X(g,!1,h.shadow,h.embedFontImport)+`
|
|
15
|
+
`+A));let z=Y(h);z&&p.push(e.definitions({id:"shadow-defs"},`<defs>${z}</defs>`)),L&&p.push(e.definitions({id:"defs"},L)),w.title&&p.push(e.documentContent({id:"acc-title",role:"chrome",nonPaint:"accessibility"},w.title)),w.description&&p.push(e.documentContent({id:"acc-desc",role:"chrome",nonPaint:"accessibility"},w.description));let S={stroke:m.gridStroke,strokeWidth:"1",...y.edgeStrokeColor?{opacity:"0.25"}:{}};c.gridLines.forEach((t,i)=>{p.push(e.shape({id:`grid:y:${i}`,role:"grid",geometry:{kind:"line",x1:tn(t.x1),y1:tn(t.y1),x2:tn(t.x2),y2:tn(t.y2)},paint:S,attributes:{className:"xychart-grid"}}))}),ti(e,p,c.xAxis,"x",m.xAxisLineColor,m.xAxisTickColor),ti(e,p,c.yAxis,"y",m.yAxisLineColor,m.yAxisTickColor);let $=Math.max(0,...c.bars.map(e=>Math.abs(e.value)),...c.lines.flatMap(e=>e.points.map(e=>Math.abs(e.value)))),C=e=>$>0?e/$:void 0,M=[],F=new Map,T=tl(c,h.accent,h.bg),W=new Map,_=new Map;for(let i of c.bars){let a=F.get(i.seriesIndex)??0;F.set(i.seriesIndex,a+1);let l=`bar:${i.seriesIndex}:${i.label??a}`,n={category:`bar-${i.seriesIndex}`,value:C(i.value)},o=Z(d.styleFace,"bar",n,{includeFallback:!1}),r=`var(--xychart-color-${i.colorIndex})`,s=b?r:o?.fillColor??r;_.set(n.category,s),W.set(i,b?T.concrete(i.colorIndex):o?.fillColor??T.concrete(i.colorIndex));let c=o?.strokeColor??o?.borderColor,h=o?.lineWidth;if(p.push(e.shape({id:l,role:"bar",geometry:{kind:"rect",x:tn(i.x),y:tn(i.y),width:tn(i.width),height:tn(i.height)},paint:{fill:s,stroke:c??"none",...void 0!==h?{strokeWidth:String(h)}:{}},channels:n,attributes:{className:`xychart-bar xychart-color-${i.colorIndex}`,data:{value:String(i.value),...i.label?{label:i.label}:{}}}})),f){let a=eu(i.value),n=i.label?`${i.label}: ${a}`:a,o={id:l,role:"bar"};M.push(e.group({id:`tooltip:${l}`,role:"chrome",owner:o,open:'<g class="xychart-bar-group">',close:"</g>",join:"",children:[{indent:0,node:e.shape({id:`${l}:hit`,role:"chrome",owner:o,geometry:{kind:"rect",x:tn(i.x),y:tn(i.y),width:tn(i.width),height:tn(i.height)},paint:{fill:"transparent"}})},{indent:0,node:e.documentContent({id:`${l}:title`,role:"chrome",nonPaint:"interaction-metadata"},`<title>${V(n)}</title>`)},{indent:0,node:t(e,"xychart",i.tooltip,`${l}:tooltip`,o)}]}))}}for(let t of c.lines){let i={category:`line-${t.seriesIndex}`},a=Z(d.styleFace,"series",i,{includeFallback:!1}),l=`var(--xychart-color-${t.colorIndex})`,n=b?l:a?.strokeColor??a?.borderColor??l;if(_.set(i.category,n),t.points.length<2)continue;let o=function(e){if(0===e.length)return"";let t=`M${to(e[0].x)},${to(e[0].y)}`;for(let i=1;i<e.length;i++)t+=` L${to(e[i].x)},${to(e[i].y)}`;return t}(t.points),r=a?.lineWidth??y.lineWidth;p.push(e.connector({id:`series:line-${t.seriesIndex}`,role:"series",geometry:{kind:"path",d:o,points:t.points},lineStyle:"solid",paint:{stroke:n,strokeWidth:String(r),strokeLinecap:"round",strokeLinejoin:"round"},channels:i,attributes:{className:`xychart-line xychart-color-${t.colorIndex}`}}))}let I=(e,t,i)=>{let a=`line-${e}`,l=Z(d.styleFace,"point",{category:a,value:C(i)},{includeFallback:!1}),n=`var(--xychart-color-${t})`;return{fill:b?n:l?.fillColor??_.get(a)??n,stroke:l?.strokeColor??l?.borderColor??"var(--bg)",strokeWidth:String(l?.lineWidth??2)}};for(let t of c.lines)t.points.forEach((i,a)=>{if(void 0===i.textLabel)return;let l=i.textPosition,n=l?.placement??(c.horizontal?"right":"above"),o=l?.x??i.x+8*!!c.horizontal,r=l?.y??i.y+(c.horizontal?4:-8),s=l?.anchor??(c.horizontal?"start":"middle");p.push(e.shape({id:`point-label-dot:${t.seriesIndex}:${a}`,role:"point",geometry:{kind:"circle",cx:tn(i.x),cy:tn(i.y),r:4},paint:I(t.seriesIndex,t.colorIndex,i.value),channels:{category:`line-${t.seriesIndex}`,value:C(i.value)},attributes:{className:`xychart-dot xychart-color-${t.colorIndex}`,data:{value:String(i.value)}}})),p.push(e.text({id:`point-label:${t.seriesIndex}:${a}`,role:"label",text:i.textBlock?.text??i.textLabel,block:i.textBlock,x:tn(o),y:tn(r),fontSize:12,fontWeight:y.nodeLabelFontWeight,letterSpacing:y.nodeLetterSpacing,display:"literal",anchor:s,baselineShift:.35*!!l,paint:{fill:_.get(`line-${t.seriesIndex}`)??`var(--xychart-color-${t.colorIndex})`},channels:{category:`line-${t.seriesIndex}`,value:C(i.value)},attributes:{className:`xychart-point-label xychart-color-${t.colorIndex}`,data:{"label-position":n}}}))});let P=[];if(f)for(let i of c.lines)i.points.forEach((a,l)=>{let n=`point:line-${i.seriesIndex}:${a.label??l}`,o=eu(a.value),r=a.label?`${a.label}: ${o}`:o;P.push(e.group({id:`point-group:line-${i.seriesIndex}:${a.label??l}`,role:"chrome",open:'<g class="xychart-dot-group">',close:"</g>",join:"",children:[{node:e.shape({id:`hit:${n}`,role:"chrome",owner:{id:n,role:"point"},geometry:{kind:"circle",cx:tn(a.x),cy:tn(a.y),r:12},paint:{fill:"transparent"},attributes:{className:"xychart-hit"}}),indent:0},{node:e.shape({id:n,role:"point",geometry:{kind:"circle",cx:tn(a.x),cy:tn(a.y),r:4},paint:I(i.seriesIndex,i.colorIndex,a.value),channels:{category:`line-${i.seriesIndex}`,value:C(a.value)},attributes:{className:`xychart-dot xychart-color-${i.colorIndex}`,data:{value:String(a.value),...a.label?{label:a.label}:{}}}}),indent:0},{node:e.documentContent({id:`title:${n}`,role:"chrome",nonPaint:"interaction-metadata"},`<title>${V(r)}</title>`),indent:0},{node:t(e,"xychart",a.tooltip,`tooltip:${n}`,{id:n,role:"point"}),indent:0}]}))});let N=new Map;for(let t of c.dataLabels){let i=t.block?.text??U(t.text,y.nodeTextTransform),a=N.get(t.bar.seriesIndex)??0;N.set(t.bar.seriesIndex,a+1);let l=void 0===c.theme.dataLabelColor&&"inside"===t.placement?function(e){let t=void 0===e?null:K(e);return t&&1===t[3]?O(Q(t[0],t[1],t[2])):void 0}(W.get(t.bar)):void 0,n=c.theme.dataLabelColor??l??m.labelColor,o="inside"===t.placement?W.get(t.bar)??"var(--bg)":"var(--bg)";p.push(e.text({id:`label:bar:${t.bar.seriesIndex}:${t.bar.label??a}`,role:"label",text:i,block:t.block,x:tn(t.x),y:tn(t.y),fontSize:t.fontSize,fontWeight:y.nodeLabelFontWeight,letterSpacing:y.nodeLetterSpacing,display:"literal",anchor:t.anchor,...t.dominantBaseline?{dominantBaseline:t.dominantBaseline}:{},baselineShift:0,paint:{fill:n,stroke:o,strokeWidth:String(3),strokeLinejoin:"round",paintOrder:"stroke"},...l?{pageFill:m.labelColor}:{},channels:{category:`bar-${t.bar.seriesIndex}`,value:C(t.bar.value)},attributes:{className:"xychart-data-label",data:{"literal-text":"true"}}}))}if(ta(e,p,c.xAxis.ticks,c.xAxis.config.labelFontSize,"x",y,m.xAxisLabelColor),ta(e,p,c.yAxis.ticks,c.yAxis.config.labelFontSize,"y",y,m.yAxisLabelColor),c.xAxis.title){let t=c.xAxis.title,i=t.block?.text??U(t.text,y.edgeTextTransform),a=t.rotate?{kind:"rotate",angle:t.rotate,cx:t.x,cy:t.y}:void 0;p.push(e.text({id:"axis:x:title",role:"axis",text:i,block:t.block,x:t.x,y:t.y,fontSize:c.xAxis.config.titleFontSize,fontWeight:y.edgeLabelFontWeight,letterSpacing:y.edgeLetterSpacing,display:"literal",anchor:"middle",paint:{fill:m.xAxisTitleColor},transform:a,attributes:{className:"xychart-axis-title xychart-x-axis-title"}}))}if(c.yAxis.title){let t=c.yAxis.title,i=t.block?.text??U(t.text,y.edgeTextTransform),a=t.rotate?{kind:"rotate",angle:t.rotate,cx:t.x,cy:t.y}:void 0;p.push(e.text({id:"axis:y:title",role:"axis",text:i,block:t.block,x:t.x,y:t.y,fontSize:c.yAxis.config.titleFontSize,fontWeight:y.edgeLabelFontWeight,letterSpacing:y.edgeLetterSpacing,display:"literal",anchor:"middle",paint:{fill:m.yAxisTitleColor},transform:a,attributes:{className:"xychart-axis-title xychart-y-axis-title"}}))}if(c.title){let t=c.title.text;p.push(e.text({id:"title",role:"title",text:t,block:c.title.block,x:c.title.x,y:c.title.y,fontSize:c.config.titleFontSize,fontWeight:y.groupHeaderFontWeight,letterSpacing:y.groupLetterSpacing,display:"literal",anchor:"middle",paint:{fill:m.titleColor},attributes:{className:"xychart-title"}}))}if(c.legend.length>0){let t=[];for(let i of c.legend){let a=i.y+Math.max(12,i.block?.height??0)/2;"bar"===i.type?t.push({node:e.shape({id:`legend:swatch:${i.colorIndex}`,role:"legend",geometry:{kind:"rect",x:tn(i.x),y:tn(i.y),width:12,height:12,rx:2,ry:2},paint:{fill:_.get(`bar-${i.seriesIndex}`)??`var(--xychart-color-${i.colorIndex})`},channels:{category:`bar-${i.seriesIndex}`},attributes:{className:"xychart-legend-swatch"}}),indent:2}):(t.push({node:e.shape({id:`legend:swatch:${i.colorIndex}`,role:"legend",geometry:{kind:"line",x1:tn(i.x),y1:tn(a),x2:tn(i.x+12),y2:tn(a)},paint:{stroke:_.get(`line-${i.seriesIndex}`)??`var(--xychart-color-${i.colorIndex})`,strokeWidth:String(3),strokeLinecap:"round"},channels:{category:`line-${i.seriesIndex}`},attributes:{className:"xychart-legend-swatch"}}),indent:2}),t.push({node:e.shape({id:`legend:dot:${i.colorIndex}`,role:"legend",geometry:{kind:"circle",cx:tn(i.x+6),cy:tn(a),r:2.5},paint:{fill:_.get(`line-${i.seriesIndex}`)??`var(--xychart-color-${i.colorIndex})`,stroke:"var(--bg)",strokeWidth:"1"},channels:{category:`line-${i.seriesIndex}`},attributes:{className:"xychart-legend-dot"}}),indent:2}));let l=i.block?.text??U(i.label,y.nodeTextTransform),n=i.x+12+6;t.push({node:e.text({id:`legend:label:${i.colorIndex}`,role:"legend",text:l,block:i.block,x:tn(n),y:tn(a),fontSize:c.config.legendFontSize,fontWeight:y.nodeLabelFontWeight,letterSpacing:y.nodeLetterSpacing,display:"literal",anchor:"start",dominantBaseline:"middle",baselineShift:0,paint:{fill:m.legendTextColor},attributes:{className:"xychart-legend-label"}}),indent:2})}p.push(e.group({id:"legend",role:"legend",open:'<g class="xychart-legend">',close:"</g>",children:t}))}for(let e of M)p.push(e);for(let e of P)p.push(e);return p.push(e.documentClose()),{family:"xychart",width:c.width,height:c.height,colors:h,transparent:u,parts:p}}),ts=T(et,{configDiagnostics:e=>{let t=y("xychart",e,ei),i=p(e.root,e.config.section);if(!i)return t;let a=(e,i)=>{t.push({code:"INEFFECTIVE_CONFIG",field:e,message:`${e} must be ${i}; the invalid value has no effect.`})};for(let e of["xAxis","yAxis"]){let l=i[e];if(!(!l||"object"!=typeof l||Array.isArray(l)))for(let i of Object.keys(l).sort()){let n=ea[i];n?n.valid(l[i])?"labelRotation"===i&&t.push({code:"INEFFECTIVE_CONFIG",field:`xyChart.${e}.${i}`,message:`xyChart ${e}.${i} is accepted for Mermaid compatibility but has no effect on this renderer.`}):a(`xyChart.${e}.${i}`,n.expected):a(`xyChart.${e}.${i}`,"a documented axis-config field")}}return t},statementEnds:e4,normalizeRequest:e=>{let t=eZ(e.source.frontmatter),i=eG(e.source.frontmatter);return{familyConfig:{config:t},appearance:{...void 0===e.renderOptions.bg&&i.backgroundColor?{colors:{bg:i.backgroundColor}}:{},family:{theme:i}}}},layout:t=>{var i,a,l;let n,o=t.familyConfig,r=t.familyAppearance;return F(function(t,i={},a){var l,n,o,r,s,c,h;let d,x,g,u,f,p,y,m,b,v,w,k,A,L,z,S,$,C,M,F,T,W,_,I,P,N,O,j,B,E,Y,X,D,R,U,H,V,Q,K,ee,et,ei,ea,el,eg,ey,eA,eI,eP,eN,eO,ej,eB,eE,eY,eX,eD,eR,eU,eq,eH,eV,eJ,eQ,eZ,eG,eK,e0,e1,e2,e5,e4,e6,e3,e8=q(i,em,a),e7={width:er((l=t.config).width,en.width),height:er(l.height,en.height),useMaxWidth:ec(l.useMaxWidth,en.useMaxWidth),useWidth:"number"==typeof(n=l.useWidth)&&Number.isFinite(n)&&n>0?n:void 0,titleFontSize:er(l.titleFontSize,en.titleFontSize),titlePadding:es(l.titlePadding,en.titlePadding),chartOrientation:"vertical"===l.chartOrientation||"horizontal"===l.chartOrientation?l.chartOrientation:en.chartOrientation,plotReservedSpacePercent:(o=l.plotReservedSpacePercent,r=en.plotReservedSpacePercent,"number"==typeof o&&Number.isFinite(o)&&o>0&&o<=100?Math.max(10,o):r),showDataLabel:ec(l.showDataLabel,en.showDataLabel),showDataLabelOutsideBar:ec(l.showDataLabelOutsideBar,en.showDataLabelOutsideBar),showTitle:ec(l.showTitle,en.showTitle),showLegend:ec(l.showLegend,en.showLegend),legendFontSize:er(l.legendFontSize,en.legendFontSize),legendPadding:es(l.legendPadding,en.legendPadding),xAxis:eo(l.xAxis),yAxis:eo(l.yAxis)};(a?.group?.fontSize!=null||a?.text?.fontSize!=null)&&(e7.titleFontSize=e8.groupHeaderFontSize),(a?.node?.fontSize!=null||a?.text?.fontSize!=null)&&(e7.xAxis.labelFontSize=e8.nodeLabelFontSize,e7.yAxis.labelFontSize=e8.nodeLabelFontSize),(a?.edge?.fontSize!=null||a?.text?.fontSize!=null)&&(e7.xAxis.titleFontSize=e8.edgeLabelFontSize,e7.yAxis.titleFontSize=e8.edgeLabelFontSize),a?.edge?.lineWidth!=null&&(e7.xAxis.axisLineWidth=e8.lineWidth,e7.yAxis.axisLineWidth=e8.lineWidth,e7.xAxis.tickWidth=e8.lineWidth,e7.yAxis.tickWidth=e8.lineWidth);let e9=(e6=new Map,{block:e3=(e,t,i,a)=>{let l=JSON.stringify([e,t,i,a]),n=e6.get(l);if(!n){let o="axisTitle"===e;n=J(t,{display:"literal",fontSize:i,fontWeight:o?e8.edgeLabelFontWeight:e8.nodeLabelFontWeight,letterSpacing:o?e8.edgeLetterSpacing:e8.nodeLetterSpacing,transform:"axisTitle"===e||"tick"===e?e8.edgeTextTransform:e8.nodeTextTransform,maxWidth:a}),e6.set(l,n)}return n},wrapTitle:(e,t,i)=>J(e,{display:"literal",transform:e8.groupTextTransform,fontSize:t,fontWeight:e8.groupHeaderFontWeight,letterSpacing:e8.groupLetterSpacing,maxWidth:i}),tick:(e,t)=>e3("tick",e,t).width,legend:(e,t)=>e3("legend",e,t).width}),te=0,tt=Math.max(0,...t.series.flatMap(e=>"line"!==e.type?[]:[Math.max((Z(a,"series",{category:`line-${te++}`},{includeFallback:!1})?.lineWidth??e8.lineWidth)/2,i.interactive||e.pointLabels?.some(e=>void 0!==e)?5:0)])),ti=t.horizontal?(d=e7.width,x=e7.height,g=eh(t),u=ex(t,g),y=(p=ef((f=t.yAxis.range).min,f.max)).map(ep),m=Math.max(0,x-Math.floor(x*e7.plotReservedSpacePercent/100)),b=Math.max(0,d-Math.floor(d*e7.plotReservedSpacePercent/100)),w=(v=ek(t.title,e7,m,e9)).height,m=Math.max(0,m-w),k=eL(e7.yAxis,t.yAxis.title,y,m,e9),m=Math.max(0,m-k.size),A=ez(e7.xAxis,t.xAxis.title,u,b,e9,x),b=Math.max(0,b-A.size),$=eb(t,tt,k.config),M=Math.max(0,x-(C=Math.max(w+k.size,ev(k.config)))),F=Math.max(1,g),T=Math.min(M,Math.max(0,((A.config.showLabel?.6*e7.xAxis.labelFontSize:0)-M/(2*F))/(1-1/(2*F)))),_=ew(t,e7,b,d,C,W=Math.max(0,M-T),e9),P=Math.max(0,Math.max(I=k.config.showLabel&&y.length>0?Math.max(...[y[0],y[y.length-1]].map(e=>e9.tick(e,e7.yAxis.labelFontSize)/2)):0,$.value,ev(A.config))-A.size),N=Math.max(0,I-_.size,$.value-_.size),O={x:A.size+P,y:C,width:Math.max(0,d-A.size-P-_.size-N),height:W},j=e=>O.x+(e-f.min)/(f.max-f.min||1)*O.width,B=e=>O.y+(e+.5)*(O.height/g),E=O.height/Math.max(1,g),Y=k.config.showLabel?(L=(s=k.config).showAxisLine?s.axisLineWidth:0,z=s.showTick?s.tickLength:0,S=O.y-L-z-s.labelPadding,p.map((e,t)=>({label:y[t],x:j(e),y:O.y-L,tx:j(e),ty:O.y-L-z,labelX:j(e),labelY:S,textAnchor:"middle"}))):[],X=A.config.showLabel?e$(u.map((e,t)=>t),u,B,O,A.config):[],D=p.map(e=>({x1:j(e),y1:O.y,x2:j(e),y2:O.y+O.height})),R=t.series.map((e,t)=>t),U=eW(t,B,E,j,f,u,R,!0),H=e_(t,B,j,f,u,R,!0),{width:d,height:x,accessibility:t.accessibility,horizontal:!0,title:v.title,hiddenTitle:t.title&&e7.showTitle&&!v.title?t.title:void 0,xAxis:{ticks:X,line:eC(O,A.config),title:eM(t.xAxis.title,O,A.config,x,e9),config:A.config},yAxis:{ticks:Y,line:(c=k.config,V=O.y-(c.showAxisLine?c.axisLineWidth/2:0),{x1:O.x,y1:V,x2:O.x+O.width,y2:V}),title:function(e,t,i,a){if(!(!e||!a.showTitle))return{text:e,x:t.x+t.width/2,y:i+a.titlePadding+a.titleFontSize}}(t.yAxis.title,O,w,k.config),config:k.config},plotArea:O,bars:U,lines:H,gridLines:D,legend:_.items,hiddenLegendLabels:_.hiddenLabels,hiddenCategoryLabels:eF(t,e7,A.config,X),...eT(U,!0,O,e7,e9),config:e7,theme:t.theme}):(Q=e7.width,K=e7.height,ee=eh(t),et=ex(t,ee),ei=ed(t,ee),eg=(el=ef((ea=t.yAxis.range).min,ea.max)).map(ep),ey=t.xAxis.range?ef(t.xAxis.range.min,t.xAxis.range.max):void 0,eA=ey?.map(ep)??et,eI=Math.max(0,K-Math.floor(K*e7.plotReservedSpacePercent/100)),eP=Math.max(0,Q-Math.floor(Q*e7.plotReservedSpacePercent/100)),eO=(eN=ek(t.title,e7,eI,e9)).height,eI=Math.max(0,eI-eO),ej=eL(e7.xAxis,t.xAxis.title,eA,eI,e9),eI=Math.max(0,eI-ej.size),eB=ez(e7.yAxis,t.yAxis.title,eg,eP,e9,K),eP=Math.max(0,eP-eB.size),eD=Math.max(0,K-(eX=Math.max(eO,eE=eB.config.showLabel&&eg.length>0?e7.yAxis.labelFontSize/2:0,(eY=eb(t,tt,eB.config,t.xAxis.range?ej.config:void 0)).value))-Math.max(ej.size,eE,eY.value,ev(ej.config))),eR=ew(t,e7,eP,Q,eX,eD,e9),eq={x:eU=Math.max(eB.size,eY.position,ev(eB.config)),y:eX,width:Math.max(0,Q-eU-Math.max(eR.size,eY.position)),height:eD},eH=t.xAxis.range&&t.series.some(e=>"bar"===e.type)?eq.width/Math.max(1,ee)/2:0,eV=t.xAxis.range?e=>eq.x+eH+(e-t.xAxis.range.min)/(t.xAxis.range.max-t.xAxis.range.min||1)*(eq.width-2*eH):void 0,eJ=e=>eV?eV(ei[e]):eq.x+(e+.5)*(eq.width/ee),eQ=eV?function(e,t,i){if(e.length<2)return i;let a=1/0;for(let i=1;i<e.length;i++)a=Math.min(a,Math.abs(t(e[i])-t(e[i-1])));return Number.isFinite(a)&&a>0?a:i}(ei,eV,eq.width/Math.max(2,ee)):eq.width/Math.max(1,ee),eZ=e=>eq.y+eq.height-(e-ea.min)/(ea.max-ea.min||1)*eq.height,eG=ej.config.showLabel?t.xAxis.range&&ey&&eV?eS(ey,eA,eV,eq,ej.config,e9,Q):eS(et.map((e,t)=>t),et,eJ,eq,ej.config,e9,Q):[],eK=eB.config.showLabel?e$(el,eg,eZ,eq,eB.config):[],e0=el.map(e=>({x1:eq.x,y1:eZ(e),x2:eq.x+eq.width,y2:eZ(e)})),e1=t.series.map((e,t)=>t),e2=eW(t,eJ,eQ,eZ,ea,et,e1,!1),e5=e_(t,eJ,eZ,ea,et,e1,!1),{width:Q,height:K,accessibility:t.accessibility,title:eN.title,hiddenTitle:t.title&&e7.showTitle&&!eN.title?t.title:void 0,xAxis:{ticks:eG,line:(h=ej.config,e4=eq.y+eq.height+(h.showAxisLine?h.axisLineWidth/2:0),{x1:eq.x,y1:e4,x2:eq.x+eq.width,y2:e4}),title:function(e,t,i,a){if(!(!e||!a.showTitle))return{text:e,x:t.x+t.width/2,y:i-a.titlePadding-a.titleFontSize/2}}(t.xAxis.title,eq,K,ej.config),config:ej.config},yAxis:{ticks:eK,line:eC(eq,eB.config),title:eM(t.yAxis.title,eq,eB.config,K,e9),config:eB.config},plotArea:eq,bars:e2,lines:e5,gridLines:e0,legend:eR.items,hiddenLegendLabels:eR.hiddenLabels,hiddenCategoryLabels:eF(t,e7,ej.config,eG),...eT(e2,!1,eq,e7,e9),config:e7,theme:t.theme});for(let e of[ti.xAxis,ti.yAxis]){if(e.title){let i=e.title.block??=e9.block("axisTitle",e.title.text,e.config.titleFontSize),a=(i.lines.length-1)*i.lineHeight/2+(i.lineHeight-e.config.titleFontSize*G)/2;e.title.rotate?e.title.x+=a:e.title.y+=t.horizontal?a:-a}for(let t of e.ticks){let i=t.block=e9.block("tick",t.label,e.config.labelFontSize),a="start"===t.textAnchor?0:"end"===t.textAnchor?i.width:i.width/2;t.labelX=Math.max(a,Math.min(ti.width-i.width+a,t.labelX)),t.labelY=Math.max(i.height/2,Math.min(ti.height-i.height/2,t.labelY))}}for(let e of ti.legend)e.block=e9.block("legend",e.label,ti.config.legendFontSize);for(let e of ti.dataLabels)e.block=e9.block("data",e.text,e.fontSize);for(let e of ti.lines)for(let t of e.points)if(void 0!==t.textLabel){let e=t.textBlock=e9.block("data",t.textLabel,12,Math.max(1,ti.width-8)),i=(e,t,i)=>Math.max(t,Math.min(i,e));if(ti.horizontal){let a=t.x+8+e.width<=ti.width-4,l=a?"start":"end";t.textPosition={x:a?i(t.x+8,4,ti.width-4-e.width):i(t.x-8,e.width+4,ti.width-4),y:i(t.y,e.height/2,ti.height-e.height/2),anchor:l,placement:a?"right":"left"}}else{let a=t.y-8-e.height>=ti.plotArea.y;t.textPosition={x:i(t.x,e.width/2,ti.width-e.width/2),y:i(t.y+(a?-1:1)*(8+e.height/2),e.height/2,ti.height-e.height/2),anchor:"middle",placement:a?"above":"below"}}}for(let t of ti.bars)t.tooltip=e(ti.horizontal?t.x+t.width:t.x+t.width/2,ti.horizontal?t.y+t.height/2:t.y,eu(t.value));for(let t of ti.lines)for(let i of t.points)i.tooltip=e(i.x,i.y-4,eu(i.value));return ti}((i=b(P(function(e,t={}){let i=e6(e,!0===t.strict),a=B(i),l=a.accessibility,n=a.familyLines;if(void 0!==a.unclosedIndex){if(t.strict)throw Error('XYChart accDescr block is missing a closing "}"');let e=a.unclosedIndex;n=a.familyLines.slice(0,e-i.length),l.descr=i.slice(e).join(`
|
|
16
|
+
`).replace(/^[^{]*\{/,"").trim()||void 0}let o={},r={},s=[],c=e6(n,!0===t.strict),h,d=!1,x,g=c[0],u=g?.match(/^xychart(?:-beta)?(?:\s+(horizontal|vertical))?$/i);if(!u&&t.strict)throw Error(`Invalid XYChart header: "${g??""}"`);u&&W("xychart")&&_("xychart","header",g,{line:1,unit:"normalized"}),u?.[1]&&(x=u[1].toLowerCase(),W("xychart")&&I("xychart","setHeaderOrientation",x,{line:1,unit:"normalized"}),d="horizontal"===x,W("xychart")&&I("xychart","setHorizontal",d,{line:1,unit:"normalized"}));for(let e=+!!u;e<c.length;e++){let i=c[e],a=i.match(/^title\s+([\s\S]+)$/i);if(a){W("xychart")&&_("xychart","title",i,{line:e+1,unit:"normalized"});let l=eq(a[1]);if(null===l){if(t.strict)throw Error(`Invalid XYChart title directive: "${i}"`)}else h=l,W("xychart")&&I("xychart","setTitle",h,{line:e+1,unit:"normalized"});continue}let l=i.match(/^x-axis\s+([\s\S]+)$/i);if(l){if(W("xychart")&&_("xychart","x-axis",i,{line:e+1,unit:"normalized"}),!eX(o,l[1],"x",e+1)&&t.strict)throw Error(`Invalid XYChart x-axis directive: "${i}"`);continue}let n=i.match(/^y-axis\s+([\s\S]+)$/i);if(n){if(W("xychart")&&_("xychart","y-axis",i,{line:e+1,unit:"normalized"}),!eX(r,n[1],"y",e+1)&&t.strict)throw Error(`Invalid XYChart y-axis directive: "${i}"`);continue}let d=eH(i);if(d?.type==="bar"){W("xychart")&&_("xychart","bar",i,{line:e+1,unit:"normalized"});let a=eP(d.points,!0===t.strict,e+1);s.push({type:"bar",label:d.label,data:a.values,...a.labels.some(e=>void 0!==e)?{pointLabels:a.labels}:{}}),W("xychart")&&I("xychart","appendSeries",s[s.length-1],{line:e+1,unit:"normalized"});continue}if(d?.type==="line"){W("xychart")&&_("xychart","line",i,{line:e+1,unit:"normalized"});let a=eP(d.points,!0===t.strict,e+1);s.push({type:"line",label:d.label,data:a.values,...a.labels.some(e=>void 0!==e)?{pointLabels:a.labels}:{}}),W("xychart")&&I("xychart","appendSeries",s[s.length-1],{line:e+1,unit:"normalized"});continue}throw W("xychart")&&_("xychart","unrecognized",i,{line:e+1,unit:"normalized"}),Error(`Unrecognized XYChart line: "${i}"`)}if(!r.range&&s.length>0){let e=s.flatMap(e=>e.data),t=s.some(e=>"bar"===e.type),i=t?Math.min(0,...e):Math.min(...e),a=t?Math.max(0,...e):Math.max(...e),l=a-i||1,n=t&&0===i,o=t&&0===a&&i<0;n||(i-=.1*l),o||(a+=.1*l),i>0&&i<.5*l&&(i=0),r.range={min:i,max:a},W("xychart")&&I("xychart","deriveYAxisRange",r.range)}return r.range||(r.range={min:0,max:100},W("xychart")&&I("xychart","setFallbackYAxisRange",r.range)),{title:h,accessibility:l.title||l.descr?{...void 0!==l.title?{title:l.title}:{},...void 0!==l.descr?{description:l.descr}:{}}:void 0,horizontal:d,headerOrientation:x,xAxis:o,yAxis:r,series:s,config:eZ({}),theme:eG({})}}(t.source.familyLines),t.source.accessibility),t.source.frontmatter),a=o?.config??eZ({}),l=r?.theme??eG({}),n={...i,horizontal:i.headerOrientation?i.horizontal:"horizontal"===a.chartOrientation,config:a,theme:l},W("xychart")&&I("xychart","applyConfig",{horizontal:n.horizontal,config:a,theme:l}),n),t.renderOptions,t.styleFace),{injectAccessibility:!1})},projectPositioned:C(function({positioned:e,options:t}){let i=[],a=[],l=A(k(e)),n=(e,t,i,n,o,r="middle",s=0)=>{if(!t)return;let c=$(i,n,o,r);if(c&&s){let e=H({x0:c.x,y0:c.y,x1:c.x+c.w,y1:c.y+c.h},{x:n,y:o},s);c=A({x:e.x0,y:e.y0,width:e.x1-e.x0,height:e.y1-e.y0})}a.push({id:e,text:t,...c?{bounds:c}:{},container:l})},o=new Map;if(e.bars.forEach(e=>{let t=o.get(e.seriesIndex)??0;o.set(e.seriesIndex,t+1),i.push({id:`bar#${e.seriesIndex}:pt#${t}`,x:L(e.x),y:L(e.y),w:z(e.x,e.width),h:z(e.y,e.height),shape:"rectangle",label:e.label,role:"labelled-mark",labelVisibility:"semantic"})}),e.lines.forEach(t=>{t.points.forEach((a,l)=>{let o=e.plotArea,r=Math.max(o.x,Math.min(o.x+o.width,a.x-3)),s=Math.max(o.y,Math.min(o.y+o.height,a.y-3)),c=Math.max(r,Math.min(o.x+o.width,a.x+3)),h=Math.max(s,Math.min(o.y+o.height,a.y+3));if(i.push({id:`line#${t.seriesIndex}:pt#${l}`,x:L(r),y:L(s),w:z(r,c-r),h:z(s,h-s),shape:"circle",label:a.label,role:a.label?"labelled-mark":"mark",labelVisibility:"semantic"}),void 0!==a.textLabel){let e=a.textPosition;n(`point-label:${t.seriesIndex}:${l}`,a.textBlock?.text??a.textLabel,e?a.textBlock:void 0,e?.x??a.x,e?.y??a.y,e?.anchor??"middle")}})}),e.title){let t=e.title;n("title",t.block?.text??t.text,t.block,t.x,t.y)}for(let[t,i]of[["x",e.xAxis],["y",e.yAxis]]){if(i.title){let e=i.title;n(`axis:${t}:title`,e.block?.text??e.text,e.block,e.x,e.y,"middle",e.rotate)}i.ticks.forEach((e,i)=>n(`axis:${t}:label:${i}`,e.block?.text??e.label,e.block,e.labelX,e.labelY,e.textAnchor))}for(let t of e.legend)n(`legend:label:${t.colorIndex}`,t.block?.text??t.label,t.block,t.x+12+6,t.y+Math.max(12,t.block?.height??0)/2,"start");e.dataLabels.forEach((e,t)=>{let i="hanging"===e.dominantBaseline?e.y+(e.block?.height??0)/2:"middle"===e.dominantBaseline?e.y:e.y-.35*e.fontSize;n(`data-label:${t}`,e.block?.text??e.text,e.block,e.x,i,e.anchor)});let r=[{id:"plot",x:L(e.plotArea.x),y:L(e.plotArea.y),w:z(e.plotArea.x,e.plotArea.width),h:z(e.plotArea.y,e.plotArea.height),members:i.filter(t=>t.x+t.w/2>=e.plotArea.x&&t.x+t.w/2<=e.plotArea.x+e.plotArea.width&&t.y+t.h/2>=e.plotArea.y&&t.y+t.h/2<=e.plotArea.y+e.plotArea.height).map(e=>e.id)}],s={version:1,nodes:i,edges:[],groups:r,bounds:{w:L(e.width),h:L(e.height)},labels:a};return t.debug&&(s.certificates=S("xychart",s,"plot-contained",r[0],"center")),s}),lowerScene:M(tr)});export{ts as default};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import{b as e,c as t,f as i,g as n,i as r}from"./chunk-FAIMVOX5.js";import"./chunk-2GPK4VFF.js";import"./chunk-QA6GJQ4X.js";import{u as s,v as a}from"./chunk-DF6765YX.js";import"./chunk-J35HAQQF.js";import"./chunk-CN7WTBWB.js";import{a as o,b as l,c as c,d as d,e as p,g as m,i as f}from"./chunk-HLWUNUCM.js";import{B as u,H as h,M as y,c as b,t as g,u as v,y as k}from"./chunk-X2UYKWKM.js";import"./chunk-TYZOZXUJ.js";import"./chunk-NO7ZIVRU.js";import{G as _,I as w}from"./chunk-Z3FDIVLN.js";import{R as x,a as $}from"./chunk-N5ELX7LR.js";import"./chunk-5UVGUSD6.js";import"./chunk-CSFUKSU6.js";var E=Object.freeze({id:"zenuml",upstreamId:"zenuml",maturity:"experimental",label:"ZenUML",headers:["zenuml"],aliases:[],config:{section:"zenuml",keys:[],noopKeys:[]},identity:{id:"family:zenuml",kind:"family",version:"1.0.0",compatibility:{core:"0.5.3"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["category"],semanticRoles:["prelude","title","defs","chrome","actor","lifeline","activation","message","block","note","label","icon"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"actor",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"actor",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"lifeline",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"lifeline",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"activation",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"activation",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"message",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"message",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"block",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"block",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"block",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"note",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"note",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"icon",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"icon",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`zenuml
|
|
2
|
+
Alice->Bob: Hello
|
|
3
|
+
Bob->Alice: Reply`,detect:x,detectLoose:x}),I=String.raw`(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|[\p{L}_$][\p{L}\p{N}_$-]*?)`,U=RegExp(`^${I}$`,"u"),L=RegExp(`^(${I})(?![\\p{L}\\p{N}_$-])`,"u"),z=RegExp(`^(${I})\\s*(-->|->)\\s*(${I})\\s*:\\s*([\\s\\S]*)$`,"u"),M=RegExp(`^(${I})(?:\\s+as\\s+(${I}))?$`,"u"),Z=RegExp(`^(?:(${I})\\s*->\\s*)?(${I})\\s*\\.\\s*([\\s\\S]+)$`,"u");function S(e){let t=e.trim();if(!U.test(t))throw Error(`Invalid ZenUML identity: ${e}`);return t.startsWith('"')?JSON.parse(t):t.startsWith("'")?t.slice(1,-1).replace(/\\'/g,"'").replace(/\\\\/g,"\\"):t}function A(e){if(!e||/[\r\n]/.test(e))throw Error("ZenUML identities must be non-empty single-line text");return/^[\p{L}_$][\p{L}\p{N}_$-]*$/u.test(e)&&!j.has(e)?e:JSON.stringify(e)}var j=new Set(["title","if","else","while","for","foreach","forEach","loop","par","opt","try","catch","finally","return","new","critical","group","ref","section","const","readonly","static","await","true","false","null","nil","as","in"]);function q(e){let t=[],i=0,n="",r=!1,s=0,a=0,o=!1,l=!1,c=!1,d=n=>{let r=e.slice(i,n).trim();r&&t.push({kind:"text",text:r,start:i+e.slice(i,n).indexOf(r),end:n-(e.slice(i,n).length-e.slice(i,n).trimEnd().length)})};for(let p=0;p<e.length;p++){let m=e[p],f=!l&&/\S/.test(m);if(f&&(l=!0,!s&&!a&&/^title(?:[ \t]|$)/.test(e.slice(p,p+6))&&(c="title")),n){r?r=!1:"\\"===m?r=!0:m===n&&(n="");continue}if(!c&&('"'===m||"'"===m)){n=m;continue}if(!c&&e.startsWith("//",p)){d(p);let n=e.indexOf(`
|
|
4
|
+
`,p),r=n<0?e.length:n;t.push({kind:"comment",text:e.slice(p+2,r).replace(/^ /,""),start:p,end:r}),p=r-1,i=r,l=!1,o=!1;continue}if(!c&&e.startsWith("%%",p)&&f){let t=e.indexOf(`
|
|
5
|
+
`,p);i=(p=t<0?e.length:t-1)+1,l=!1,o=!1;continue}if(!c){if("("===m&&s++,")"===m){if(!s)throw Error("Unmatched ZenUML parenthesis");s--}if("["===m&&a++,"]"===m){if(!a)throw Error("Unmatched ZenUML bracket");a--}">"!==m||"-"!==e[p-1]||s||a||(o=!0),":"!==m||s||a||!o||(c="event")}s||a||(c||"{"!==m&&"}"!==m)&&m!==`
|
|
6
|
+
`&&(";"!==m||"title"===c)||(d(p),("{"===m||"}"===m)&&t.push({kind:"{"===m?"open":"close",text:m,start:p,end:p+1}),i=p+1,c=!1,l=!1,o=!1)}if(n||s||a)throw Error("Unclosed ZenUML quote or parameter list");return d(e.length),t}function N(e){let t=e.join(`
|
|
7
|
+
`),i=e.map((e,t)=>t);try{let e=0,n=0;for(let r of q(t)){for(;n<r.start;)t[n++]===`
|
|
8
|
+
`&&e++;let s=e;for(;n<r.end;)t[n++]===`
|
|
9
|
+
`&&e++;for(let t=s;t<e;t++)i[t]=e}}catch{}return i}function C(e){let t=e.trim();if(t){if(!t.startsWith("(")||!t.endsWith(")"))throw Error("ZenUML condition requires parentheses");return t.slice(1,-1).trim()}}function O(e,t){for(let i of e)if(t(i,e),("call"===i.kind||"create"===i.kind)&&O(i.children,t),"fragment"===i.kind)for(let e of i.branches)O(e.statements,t)}var R={actor:"actor",boundary:"boundary",control:"control",entity:"entity",database:"database",collections:"collections",queue:"queue",participant:"participant"},W=e=>({value:e,prepared:_(e,"literal")});function T(e){return void 0===e.type?e.name:`${e.name}:${e.type}`}function D(e){return e.assignment?`${e.assignment.name}:${e.constructor}`:e.constructor}var B=b((e,t)=>({...n(e,t),family:"zenuml"})),F=d(E,{statementEnds:N,layout:n=>{let r=function(e,t){let i=Array.isArray(e)?e.join(`
|
|
10
|
+
`):e,n=i.replace(/\r\n?/g,`
|
|
11
|
+
`),r=g(i),s=0,a,o=$(n);if(o){let e=h(o.yaml);if(!e.ok)throw Error(e.message);e.value&&"object"==typeof e.value&&"title"in e.value&&"string"==typeof e.value.title&&(a=e.value.title),n=n.slice(o.source.length),s=o.source.split(`
|
|
12
|
+
`).length-1}let l=k(n.split(`
|
|
13
|
+
`),N(n.split(`
|
|
14
|
+
`))),c=(n=l.familyLines.join(`
|
|
15
|
+
`)).match(/^(?:(?:[^\S\n]*(?:%%[^\n]*)?\n))*[^\S\n]*zenuml\b/);if(!c)throw Error("Expected zenuml header");let d=q(n.slice(c[0].length)),b=g(n),_=e=>{let t=v(b,e+c[0].length);return(r[(l.familyOrigins[t.line-1]??t.line-1)+s]??i.length)+t.col-1},w=(e,t,i)=>{},x={kind:"zenuml",participants:[],statements:[],...u(l.accessibility),...void 0===a?{}:{title:a}},E=0,U=0,A=0,O=!0,R=()=>`statement:${++U}`,W=e=>({offset:_(e.start),endOffset:_(e.end),unit:"physical"}),T=()=>{let e=d[E++];if(e&&p("zenuml")){let t=W(e);m("zenuml",e.kind,i.slice(t.offset,t.endOffset),t)}return e},D=(e,t,i)=>{e.push(t),p("zenuml")&&f("zenuml","append-statement",t,W(i))},B=e=>{if(++A>128)throw Error("ZenUML nesting exceeds 128 scopes");let t=[];for(;E<d.length;){let n=T();if("close"===n.kind){if(!e)throw Error("Unmatched ZenUML closing brace");return A--,t}if("open"===n.kind)throw Error("ZenUML scope has no owner");if("comment"===n.kind){let e={kind:"comment",id:R(),text:n.text};D(t,e,n),w("labels",e.id,n);continue}let r=n.text;if(!e&&("title"===r||r.startsWith("title "))){x.title=r.slice(5).trim(),p("zenuml")&&f("zenuml","set-title",x.title,W(n)),w("labels","title",n);continue}let s=r.match(RegExp(`^@Starter\\(\\s*(${I})\\s*\\)$`,"u"));if(!e&&s&&O){x.starter=S(s[1]),p("zenuml")&&f("zenuml","set-starter",x.starter,W(n));continue}if(!e&&O){let e=function(e){let t=[],i=e,n;for(;/^@[\w]+\s+/.test(i);){let e=i.match(/^@([\w]+)\s+/);t.push(e[1]),i=i.slice(e[0].length)}if(i.startsWith("<<")){let e=i.indexOf(">>");if(e<0)return;n=S(i.slice(2,e).trim()),i=i.slice(e+2).trim()}let r=i.match(M);if(!r||!i.startsWith('"')&&j.has(r[1]))return;let s=S(r[1]);return{id:s,label:r[2]?S(r[2]):s,annotations:t,...n?{stereotype:n}:{}}}(r);if(e){if(x.participants.some(t=>t.id===e.id))throw Error(`Duplicate ZenUML participant: ${e.id}`);let r=[];for(;t.at(-1)?.kind==="comment";){let i=t.pop();r.unshift(i.text),p("zenuml")&&f("zenuml","claim-participant-comment",{participant:e.id,comment:i})}r.length&&(e.comments=r),e.annotations.length>1&&(x.unsupportedSource=i),w("nodes",e.id,n),x.participants.push(e),p("zenuml")&&f("zenuml","append-participant",e,W(n));continue}}O=!1;let a=R();w("edges",a,n);let o=!1;if(/^@(return|reply)(?:\s|$)/.test(r)&&(o=!0,!(r=r.replace(/^@(return|reply)\s*/,"")))){let e=T();if(!e||"text"!==e.kind)throw Error("ZenUML reply annotation requires a message");r=e.text}let l=r.match(z);if(l){w("nodes",S(l[1]),n),w("nodes",S(l[3]),n),D(t,{kind:"message",id:a,from:S(l[1]),to:S(l[3]),label:l[4],reply:o||"--\x3e"===l[2]},n);continue}if(o)throw Error("ZenUML reply annotation requires a directed message");let c=r.match(/^(if|while|for|forEach|foreach|loop|par|opt|try|critical)\b([\s\S]*)$/);if(c){w("groups",a,n);let e=c[1],i=C(c[2]);if(d[E]?.kind!=="open")throw Error(`ZenUML ${e} requires a brace-delimited scope`);T();let r=[{kind:"body",statements:B(!0)}];for(;d[E]?.kind==="text";){let t=d[E].text.match(/^(else\s+if|else|catch|finally)\b([\s\S]*)$/);if(!t)break;let i="else if"===t[1]?"else-if":t[1];if("if"===e?!["else-if","else"].includes(i):"try"!==e||!["catch","finally"].includes(i))break;T();let n=C(t[2]);if(T()?.kind!=="open")throw Error("ZenUML branch requires a brace-delimited scope");r.push({kind:i,...void 0===n?{}:{condition:n},statements:B(!0)})}D(t,{kind:"fragment",id:a,type:e,...void 0===i?{}:{condition:i},branches:r},n);continue}if(/^return\b/.test(r)){D(t,{kind:"return",id:a,label:r.slice(6).trim()},n);continue}let m=function(e){let t=e.match(RegExp(`^(?:(${I})\\s+)?(${I})\\s*=\\s*(?!=)([\\s\\S]+)$`,"u"));return t?{assignment:{name:S(t[2]),...t[1]?{type:S(t[1])}:{}},rest:t[3].trim()}:{rest:e}}(r),u=m.rest.match(RegExp(`^new\\s+(${I})(?:\\s*\\(([\\s\\S]*)\\))?$`,"u")),h=()=>d[E]?.kind!=="open"?[]:(T(),B(!0));if(u){w("nodes",m.assignment?`${m.assignment.name}:${S(u[1])}`:S(u[1]),n),D(t,{kind:"create",id:a,constructor:S(u[1]),...void 0===u[2]?{}:{arguments:u[2]},...m.assignment?{assignment:m.assignment}:{},children:h()},n);continue}let y=m.rest.match(Z),b=y?y[3]:m.rest;if(L.test(b)&&function(e){let t=0,i="",n=!1,r="";for(let s of e){if(i){n?n=!1:"\\"===s?n=!0:s===i&&(i="");continue}if('"'===s||"'"===s){if(!t)return!1;i=s;continue}if("("===s){1==++t&&(r+="()");continue}if(")"===s){t--;continue}t||(r+=s)}return/^[\p{L}_$][\p{L}\p{N}_$-]*(?:\(\))?(?:\s*\.\s*[\p{L}_$][\p{L}\p{N}_$-]*(?:\(\))?)*$/u.test(r.trim())}(b)&&(null!==y||!j.has(L.exec(b)[1]))){y?.[1]&&w("nodes",S(y[1]),n),y?.[2]&&w("nodes",S(y[2]),n),D(t,{kind:"call",id:a,...y?.[1]?{from:S(y[1])}:{},...y?.[2]?{to:S(y[2])}:{},label:b,...m.assignment?{assignment:m.assignment}:{},children:h()},n);continue}D(t,{kind:"opaque",id:a,source:r},n),x.unsupportedSource=i,d[E]?.kind==="open"&&(T(),B(!0))}if(A--,e)throw Error("Unclosed ZenUML scope");return t};x.statements=B(!1);let F=new Set(x.participants.map(e=>e.id));x.starter&&F.add(x.starter);let H=[],X=e=>{for(let t of e)if(H.push(t),("call"===t.kind||"message"===t.kind)&&(t.from&&F.add(t.from),t.to&&F.add(t.to)),"create"===t.kind&&F.add(t.assignment?`${t.assignment.name}:${t.constructor}`:t.constructor),("call"===t.kind||"create"===t.kind)&&X(t.children),"fragment"===t.kind)for(let e of t.branches)X(e.statements)};X(x.statements);let J=new Map,K=0;for(let e of H){let t=e.id;do e.id=`statement:${++K}`;while(F.has(e.id))J.set(t,e.id),t!==e.id&&p("zenuml")&&f("zenuml","readdress-statement",{from:t,to:e.id})}for(let e of[])"nodes"!==e.kind&&"title"!==e.id&&(e.id=J.get(e.id)??e.id);return y("nodes",F.size),y("edges",U),x}(a(n.source));return r.title??=s(n.source.frontmatter),r.accessibilityTitle=n.source.accessibility.title??r.accessibilityTitle,r.accessibilityDescription=n.source.accessibility.descr??r.accessibilityDescription,c(function(n,r={},s,a={}){return i(function(i,n){!function(e,t=!1){let i;if(!e||"zenuml"!==e.kind||!Array.isArray(e.participants)||!Array.isArray(e.statements))throw Error("Invalid ZenUML body");for(let t of[e.title,e.accessibilityTitle,e.accessibilityDescription])if(void 0!==t&&"string"!=typeof t)throw Error("ZenUML metadata must be text");void 0!==e.starter&&A(e.starter);let n=new Set;for(let i of e.participants){if(A(i.id),"string"!=typeof i.label||/[\r\n]/.test(i.label))throw Error("ZenUML aliases must be single-line text");if(n.has(i.id))throw Error(`Duplicate ZenUML participant: ${i.id}`);if(n.add(i.id),!Array.isArray(i.annotations)||i.annotations.some(e=>"string"!=typeof e||!/^\w+$/.test(e)))throw Error("Invalid ZenUML annotator");if(i.annotations.length>1&&(t||void 0===e.unsupportedSource))throw Error("ZenUML declarations accept one participant annotator");if(void 0!==i.stereotype&&("string"!=typeof i.stereotype||!i.stereotype||/[<>\r\n]/.test(i.stereotype)))throw Error("Invalid ZenUML stereotype");if(void 0!==i.comments&&(!Array.isArray(i.comments)||i.comments.some(e=>"string"!=typeof e)))throw Error("Invalid ZenUML participant comments")}let r=new Set,s=new Set,a=e=>{if("string"!=typeof e)throw Error("ZenUML content must be text")},o=e=>{e&&(A(e.name),void 0!==e.type&&A(e.type))},l=(i,n)=>{if(!Array.isArray(i)||n>128)throw Error("Invalid or excessive ZenUML scope nesting");for(let c of i){if(!c||"object"!=typeof c||s.has(c))throw Error("Cyclic or shared ZenUML statement");if(s.add(c),"string"!=typeof c.id||!c.id||r.has(c.id))throw Error("ZenUML statement identities must be unique");switch(r.add(c.id),c.kind){case"call":if(void 0!==c.from&&A(c.from),void 0!==c.to&&A(c.to),void 0!==c.from&&void 0===c.to)throw Error("An explicit ZenUML caller requires a target");a(c.label),o(c.assignment),l(c.children,n+1);break;case"create":A(c.constructor),void 0!==c.arguments&&a(c.arguments),o(c.assignment),l(c.children,n+1);break;case"message":if(A(c.from),A(c.to),a(c.label),"boolean"!=typeof c.reply)throw Error("ZenUML message reply flag must be boolean");break;case"return":a(c.label);break;case"comment":a(c.text);break;case"fragment":{if(!["if","opt","while","for","forEach","foreach","loop","par","try","critical"].includes(c.type)||!Array.isArray(c.branches)||!c.branches.length||c.branches[0]?.kind!=="body")throw Error("Invalid ZenUML fragment");void 0!==c.condition&&a(c.condition);let e=!1;for(let[t,i]of c.branches.entries()){if(t&&(e||("if"===c.type?!["else-if","else"].includes(i.kind):"try"!==c.type||!["catch","finally"].includes(i.kind))))throw Error("Invalid ZenUML branch order");("else"===i.kind||"finally"===i.kind)&&(e=!0),void 0!==i.condition&&a(i.condition),l(i.statements,n+1)}break}case"opaque":if(a(c.source),t||void 0===e.unsupportedSource)throw Error("Unsupported ZenUML syntax is retained; typed editing and rendering require a fully modelled document");break;default:throw Error("Unknown ZenUML statement kind")}}};if(l(e.statements,0),t&&void 0!==e.unsupportedSource)throw Error("Unsupported ZenUML source cannot be rewritten through typed editing");y("nodes",(i=new Set(e.participants.map(e=>e.id)),void 0!==e.starter&&i.add(e.starter),O(e.statements,e=>{("call"===e.kind||"message"===e.kind)&&(void 0!==e.from&&i.add(e.from),void 0!==e.to&&i.add(e.to)),"create"===e.kind&&i.add(e.assignment?`${e.assignment.name}:${e.constructor}`:e.constructor)}),i).size),y("edges",r.size)}(i,!0);let r={actors:[],messages:[],blocks:[],notes:[],activationEvents:[],boxes:[],...void 0===i.title?{}:{title:i.title,titleContent:W(i.title)},...void 0===i.accessibilityTitle?{}:{accessibilityTitle:i.accessibilityTitle},...void 0===i.accessibilityDescription?{}:{accessibilityDescription:i.accessibilityDescription}},s=new Map,a=new Set(i.participants.map(e=>e.id));i.starter&&a.add(i.starter),O(i.statements,e=>{a.add(e.id),("call"===e.kind||"message"===e.kind)&&(e.from&&a.add(e.from),e.to&&a.add(e.to)),"create"===e.kind&&a.add(D(e))});let o="zenuml:outside";for(;a.has(o);)o+=":";let l=e=>{let t=e;for(;a.has(t);)t+=":";return a.add(t),t},c=e=>{let t=e??o;if(!s.has(t)){let i={id:t,label:void 0===e?"":e,type:"participant",labelContent:W(e??""),...void 0===e?{external:!0}:{}};r.actors.push(i),s.set(t,i)}return t};for(let e of i.participants){c(e.id);let t=s.get(e.id);t.type=e.annotations.map(e=>R[e.toLowerCase()]).find(Boolean)??"participant",t.label=[...[...e.annotations.filter(e=>!R[e.toLowerCase()]).map(e=>`@${e}`),...e.stereotype?[e.stereotype]:[]].map(e=>`\xab${e}\xbb`),e.label].join(`
|
|
16
|
+
`),t.labelContent=W(t.label)}let d=i.starter;if(void 0===d)for(let e of i.statements){if("message"===e.kind||"call"===e.kind&&void 0!==e.from){d=e.from;break}if("comment"!==e.kind)break}void 0!==d&&c(d);let p=[],m=new Map,f=[],u=(e,t,i,n,s,a,o=!1,l=e)=>{let d=c(t),p=c(i),m="reply"===a,f={id:e,...s.parentId?{parentId:s.parentId}:{},from:d,to:p,label:n,labelContent:W(n),lineStyle:m?"dashed":"solid",startHead:"none",endHead:m?"open":"filled",centralStart:!1,centralEnd:!1,...o?{activate:!0}:{}};r.messages.push(f)},h=(e,t,i,n)=>{let s=w(t),a={id:e,...n.parentId?{parentId:n.parentId}:{},actorIds:[...new Set(i.length?i:[c(n.owner)])],text:s,textContent:{value:s,authored:t,prepared:_(s,"formatted")},position:"over",afterIndex:r.messages.length-1},o=r.notes.length;for(let e of(r.notes.push(a),f))m.get(e).noteIndices.push(o)},b=(e,t,i)=>e.some(e=>"return"===e.kind||"message"===e.kind&&e.reply&&e.from===t&&e.to===i||"fragment"===e.kind&&e.branches.some(e=>b(e.statements,t,i))),g=(t,i)=>{let n=[],a=e=>{for(let t of n)h(t.id,t.text,e,i);n=[]};for(let o of t){if("comment"===o.kind){n.push(o);continue}switch(o.kind){case"call":{let e=o.from??i.owner,t=o.to??i.owner,n=c(e),s=c(t);a([n,s]);let d=n===s,p=o.assignment&&!d&&b(o.children,t,e);u(o.id,e,t,o.assignment&&(d||p)?`${T(o.assignment)} = ${o.label}`:o.label,i,"call",!0);let m={...i,owner:t,returnTo:e,callAncestors:i.callAncestors};g(o.children,m),!o.assignment||d||p||u(l(`${o.id}:reply`),t,e,T(o.assignment),m,"reply",!1,o.id),r.activationEvents.push({actorId:s,kind:"deactivate",messageIndex:r.messages.length});break}case"create":{let e=D(o),t=c(i.owner);c(e),a([t,e]);let n=s.get(e);if(void 0!==n.createMessageIndex)throw Error(`Repeated creation of ZenUML object ${e} cannot share one sequence lifeline`);n.createMessageIndex=r.messages.length;let d=o.assignment&&b(o.children,e,i.owner),p=`\xab${o.arguments||"create"}\xbb`;u(o.id,i.owner,e,o.assignment&&d?`${T(o.assignment)} = ${p}`:p,i,"creation",!0);let m={...i,owner:e,returnTo:i.owner,callAncestors:i.callAncestors};g(o.children,m),o.assignment&&!d&&u(l(`${o.id}:reply`),e,i.owner,T(o.assignment),m,"reply",!1,o.id),r.activationEvents.push({actorId:e,kind:"deactivate",messageIndex:r.messages.length});break}case"message":a([c(o.from),c(o.to)]),u(o.id,o.from,o.to,o.label,i,o.reply?"reply":"async"),r.messages.at(-1).endHead="open";break;case"return":a([c(i.owner),c(i.returnTo)]),u(o.id,i.owner,i.returnTo,o.label,i,"reply");break;case"fragment":{n.length&&a([c(i.owner)]);let t=r.blocks.length,s="if"===o.type?"alt":"par"===o.type?"par":"opt"===o.type?"opt":"try"===o.type?"break":"critical"===o.type?"critical":"loop",l=["if","opt","par","critical"].includes(o.type)?o.condition??"":`${o.type}${void 0===o.condition?"":` (${o.condition})`}`,d={id:o.id,...i.parentId?{parentId:i.parentId}:{},type:s,label:l,labelContent:W(l),startIndex:r.messages.length,endIndex:r.messages.length-1,dividers:[]};r.blocks.push(d);let u={endMessageExclusive:0,endNoteExclusive:0,dividerNoteIndices:[],noteIndices:[],childBlockIndices:[],childSectionIndices:[]};if(m.set(t,u),void 0!==i.blockIndex){let e=m.get(i.blockIndex);e.childBlockIndices.push(t),e.childSectionIndices.push(i.section)}for(let[e,n]of(p.push({kind:"open",blockIndex:t,messageIndex:r.messages.length,noteIndex:r.notes.length}),f.push(t),("par"===o.type?function(e){let t=[],i=[];for(let n of e)i.push(n),"comment"!==n.kind&&(t.push({kind:"body",statements:i}),i=[]);return(i.length||!t.length)&&t.push({kind:"body",statements:i}),t}(o.branches[0].statements):o.branches).entries())){if(e){let e="else-if"===n.kind?`else if (${n.condition??""})`:"body"===n.kind?"":`${n.kind}${void 0===n.condition?"":` (${n.condition})`}`,i=d.dividers.length;d.dividers.push({index:r.messages.length,label:e,labelContent:W(e)}),u.dividerNoteIndices.push(r.notes.length),p.push({kind:"divider",blockIndex:t,dividerIndex:i,messageIndex:r.messages.length,noteIndex:r.notes.length})}0===e?o.condition:n.condition,g(n.statements,{...i,parentId:o.id,blockIndex:t,section:e,scopes:i.scopes})}f.pop(),d.endIndex=r.messages.length-1,u.endMessageExclusive=r.messages.length,u.endNoteExclusive=r.notes.length,e(d,u),p.push({kind:"close",blockIndex:t,messageIndex:r.messages.length,noteIndex:r.notes.length});break}case"opaque":throw Error("Unsupported ZenUML syntax cannot be projected partially")}}n.length&&a([c(i.owner)])};return g(i.statements,{owner:d,section:0,callAncestors:[],scopes:[]}),!r.actors.length&&(r.blocks.length||r.notes.length)&&c(void 0),t(r,p),r}(n),r,a,s)}(r,n.renderOptions,n.styleFace))},projectPositioned:o(function(e){let t=r(e);return{...t,edges:t.edges.map(e=>{let t=e.route;return t&&"family"in t&&"sequence"===t.family?{...e,route:{...t,family:"zenuml"}}:e})}}),lowerScene:l(B)});export{F as default};
|