agentic-mermaid 0.5.3 → 0.5.4
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/CHANGELOG.md +34 -0
- package/dist/agent-core.d.ts +7 -7
- package/dist/agent-core.js +1 -1
- package/dist/agent.d.ts +7 -7
- package/dist/agent.js +1 -1
- package/dist/agentic-mermaid-mcp.js +1 -1
- package/dist/am.js +1 -1
- package/dist/browser-lazy/chunks/{agentic-producer-core-CC6OOLDW.js → agentic-producer-core-ECZ3CMZM.js} +1 -1
- package/dist/browser-lazy/chunks/{architecture-QUFVKYJR.js → architecture-H5LTMKQW.js} +6 -6
- package/dist/browser-lazy/chunks/{block-6J3Q63BO.js → block-566X6FNV.js} +5 -5
- package/dist/browser-lazy/chunks/{builtin-backends-7SOZZHPF.js → builtin-backends-VAFEZXKY.js} +6 -6
- package/dist/browser-lazy/chunks/{c4-SQVBZAKJ.js → c4-ZXFDLBFK.js} +5 -5
- package/dist/browser-lazy/chunks/{chunk-5X6MJX3H.js → chunk-2JQXRKBC.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-E2WMJZNM.js → chunk-37FZNMPR.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-TYZOZXUJ.js → chunk-3JTYTXA6.js} +6 -6
- package/dist/browser-lazy/chunks/{chunk-PQGPS2YV.js → chunk-4NILRBC7.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-AMJLVPUB.js → chunk-5LKPDHPC.js} +2 -2
- package/dist/browser-lazy/chunks/{chunk-BY2CPG6B.js → chunk-62MR3LWJ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-J7FFAFQF.js → chunk-64JFHCJC.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-6GPDLZFQ.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-VWVZGQE2.js → chunk-6UOOATQR.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-7TTFBJYA.js +1 -0
- package/dist/browser-lazy/chunks/chunk-7UFOFWBA.js +20 -0
- package/dist/browser-lazy/chunks/{chunk-5B2Z7575.js → chunk-A7V5VDKN.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-CPO5P4L2.js +1 -0
- package/dist/browser-lazy/chunks/chunk-EIYLJ4FI.js +20 -0
- package/dist/browser-lazy/chunks/{chunk-X2UYKWKM.js → chunk-G4JBA7HU.js} +3 -3
- package/dist/browser-lazy/chunks/{chunk-2UIA2IME.js → chunk-IUI4DYC3.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-QA6GJQ4X.js → chunk-J57YRC2M.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-BU5LHXNJ.js → chunk-LBXXKLIR.js} +3 -3
- package/dist/browser-lazy/chunks/chunk-NKW2ZNCD.js +1 -0
- package/dist/browser-lazy/chunks/{chunk-ICC7HBJX.js → chunk-O34YYEQV.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-UL6NDWLL.js → chunk-OBI5U5XU.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-YCEICNM6.js → chunk-OFOS57WQ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-OZ443IVJ.js → chunk-PSZEE64O.js} +7 -7
- package/dist/browser-lazy/chunks/{chunk-SZELX2EJ.js → chunk-PXTLV57R.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-HLWUNUCM.js → chunk-QVSZOF5M.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-2GPK4VFF.js → chunk-TT5GR5EJ.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-DF6765YX.js → chunk-V6I2VGNQ.js} +5 -5
- package/dist/browser-lazy/chunks/{chunk-CN7WTBWB.js → chunk-VRZKI33U.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-2SH76OTH.js → chunk-XHU3A432.js} +1 -1
- package/dist/browser-lazy/chunks/{chunk-NO7ZIVRU.js → chunk-YVNJDVQO.js} +1 -1
- package/dist/browser-lazy/chunks/chunk-Z7UHFVKN.js +6 -0
- package/dist/browser-lazy/chunks/{class-5QA4SCTS.js → class-XIFNVBFE.js} +8 -8
- package/dist/{zenuml/chunks/decode-BWERFDGK.js → browser-lazy/chunks/decode-5MFOG3AZ.js} +1 -1
- package/dist/browser-lazy/chunks/{elk.bundled-L4CADV5W.js → elk.bundled-RYWHIS5N.js} +8 -8
- package/dist/browser-lazy/chunks/er-VEUYJBGG.js +11 -0
- package/dist/browser-lazy/chunks/{eventmodeling-2BPLHWRN.js → eventmodeling-G7DITZX7.js} +10 -10
- package/dist/browser-lazy/chunks/{flowchart-NEIMZTB5.js → flowchart-SSFIU4EU.js} +1 -1
- package/dist/browser-lazy/chunks/{forest-implementation-AEP24AIP.js → forest-implementation-RWFF7XDV.js} +1 -1
- package/dist/browser-lazy/chunks/{gantt-RDPIFYAF.js → gantt-HQNVDX2B.js} +6 -6
- package/dist/browser-lazy/chunks/{gitgraph-N4Y5RYB7.js → gitgraph-Z5MN6M6L.js} +4 -4
- package/dist/browser-lazy/chunks/{ishikawa-LD3YBDJN.js → ishikawa-UEERNFQV.js} +2 -2
- package/dist/browser-lazy/chunks/{journey-6YQR5DJX.js → journey-3BEWWGB5.js} +6 -6
- package/dist/browser-lazy/chunks/{kanban-PLMJ7NBW.js → kanban-2WFNCWLB.js} +10 -10
- package/dist/browser-lazy/chunks/{mermaid-yaml-runtime-QVYX4EWK.js → mermaid-yaml-runtime-IK4ET4BT.js} +8 -8
- package/dist/browser-lazy/chunks/{mindmap-K2UBFO3Y.js → mindmap-R2C6SNYR.js} +4 -4
- package/dist/browser-lazy/chunks/{packet-CUW4QY6Y.js → packet-GMVCI5YZ.js} +3 -3
- package/dist/browser-lazy/chunks/{pie-7F7UUCG3.js → pie-WER45DKC.js} +7 -7
- package/dist/browser-lazy/chunks/{quadrant-TOONO2WC.js → quadrant-NCUPSFKN.js} +4 -4
- package/dist/browser-lazy/chunks/{radar-J6JVWVAX.js → radar-WLYS4YC5.js} +8 -8
- package/dist/browser-lazy/chunks/render-core-42UVWIPF.js +3 -0
- package/dist/browser-lazy/chunks/{requirement-CMAKDJPO.js → requirement-AK3NWMJ6.js} +7 -7
- package/dist/browser-lazy/chunks/{sankey-AWXQEP3F.js → sankey-C2DY6WVU.js} +4 -4
- package/dist/browser-lazy/chunks/{sequence-Q2RJRB4L.js → sequence-D4WJB44W.js} +1 -1
- package/dist/browser-lazy/chunks/{state-WRBFQEDX.js → state-YUQVESE7.js} +2 -2
- package/dist/browser-lazy/chunks/{timeline-D2KILFXM.js → timeline-BMBJJXWR.js} +4 -4
- package/dist/browser-lazy/chunks/{treemap-N3VYX5D4.js → treemap-B66XBZZ6.js} +3 -3
- package/dist/browser-lazy/chunks/{xychart-G73OGK66.js → xychart-HAVFROGT.js} +6 -6
- package/dist/browser-lazy/chunks/{zenuml-H4BXNYXR.js → zenuml-62RLYFWP.js} +7 -7
- package/dist/browser-lazy/index.js +1 -1
- package/dist/browser.global.js +507 -507
- package/dist/{chunk-DQDKA5ND.js → chunk-2DNGDTJD.js} +2 -2
- package/dist/{chunk-GVCHLSHH.js → chunk-4F2UGYTM.js} +2 -2
- package/dist/{chunk-H3NCS2XZ.js → chunk-7XYB2LNC.js} +2 -2
- package/dist/chunk-DOFB572I.js +58 -0
- package/dist/chunk-EHJI3QYE.js +52 -0
- package/dist/{chunk-UA234O4M.js → chunk-HINRNKPO.js} +2 -2
- package/dist/{chunk-JZOJ4YGS.js → chunk-KXMANAST.js} +33 -33
- package/dist/{chunk-7CRDX2QR.js → chunk-U4MT3RRE.js} +2 -2
- package/dist/{chunk-NKNFOREZ.js → chunk-WYIB6BUR.js} +2 -2
- package/dist/{cli-YGGTJZH7.js → cli-ZYIDBYNS.js} +2 -2
- package/dist/{index-EeXqJXr5.d.ts → index-Bvhprdxz.d.ts} +3 -3
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/{mcp-cli-63DYXTVD.js → mcp-cli-YVDCORWA.js} +2 -2
- package/dist/{paint-certification-6rwQjIv_.d.ts → paint-certification-BoLyr006.d.ts} +2 -2
- package/dist/{server-5NEOHOFS.js → server-4JGAVXR3.js} +2 -2
- package/dist/{svg-styles-BdnoM7AT.d.ts → svg-styles-BnCoXyYe.d.ts} +1 -1
- package/dist/svg-styles.d.ts +1 -1
- package/dist/svg-styles.js +1 -1
- package/dist/svg.d.ts +4 -4
- package/dist/svg.js +1 -1
- package/dist/{types-BcS52Mjt.d.ts → types-CLVJCaH2.d.ts} +1 -1
- package/dist/zenuml/chunks/{appearance-UOQ5KA6O.js → appearance-5RM5MVM2.js} +1 -1
- package/dist/zenuml/chunks/{builtin-backends-KDKE7YHO.js → builtin-backends-UTNWL4N3.js} +11 -11
- package/dist/zenuml/chunks/{chunk-QWX77U7G.js → chunk-3A6S6GNB.js} +2 -2
- package/dist/zenuml/chunks/{chunk-OXQWRSBM.js → chunk-55WS466K.js} +11 -11
- package/dist/zenuml/chunks/chunk-6J4BGPB2.js +29 -0
- package/dist/zenuml/chunks/chunk-CNLL4BGF.js +1 -0
- package/dist/zenuml/chunks/{chunk-RZ6XK5CD.js → chunk-IARQ24W3.js} +13 -13
- package/dist/zenuml/chunks/{chunk-42DXZ5C6.js → chunk-ZNZRIISS.js} +2 -2
- package/dist/{browser-lazy/chunks/decode-63UIZGD2.js → zenuml/chunks/decode-LDNNXEAO.js} +1 -1
- package/dist/zenuml/chunks/{mermaid-yaml-runtime-KZVU74WU.js → mermaid-yaml-runtime-A5CNJ3IE.js} +8 -8
- package/dist/zenuml/chunks/render-core-ECIWU5ZS.js +3 -0
- package/dist/zenuml/chunks/{zenuml-EA2ZFRUX.js → zenuml-N3LZMB2G.js} +8 -8
- package/dist/zenuml.d.ts +2 -2
- package/dist/zenuml.js +1 -1
- package/docs/MCP-DIRECTORY-LISTINGS.md +81 -12
- package/docs/api.md +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
- package/dist/browser-lazy/chunks/chunk-4LHYF3BS.js +0 -1
- package/dist/browser-lazy/chunks/chunk-FAIMVOX5.js +0 -6
- package/dist/browser-lazy/chunks/chunk-GVOEAY52.js +0 -1
- package/dist/browser-lazy/chunks/chunk-J35HAQQF.js +0 -20
- package/dist/browser-lazy/chunks/chunk-RIVTHZAQ.js +0 -1
- package/dist/browser-lazy/chunks/chunk-Z3FDIVLN.js +0 -20
- package/dist/browser-lazy/chunks/er-7ZSKGN7Y.js +0 -11
- package/dist/browser-lazy/chunks/render-core-BZOM3K7D.js +0 -3
- package/dist/chunk-EHCMJUMD.js +0 -52
- package/dist/chunk-OMY6NRQD.js +0 -58
- package/dist/zenuml/chunks/chunk-7TVYPTDW.js +0 -1
- package/dist/zenuml/chunks/chunk-RLJEI7YN.js +0 -29
- package/dist/zenuml/chunks/render-core-V5RQ737O.js +0 -3
- /package/dist/browser-lazy/chunks/{chunk-5FQ534HP.js → chunk-BMZ24VPS.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-2I4UPL7Q.js → chunk-D6MQ7QSU.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-CQE4HQEW.js → chunk-HJVO5VC3.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-LH7HUDKW.js → chunk-L4UC3KGS.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-NMQQMRIR.js → chunk-MFTQWHUB.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-N5ELX7LR.js → chunk-PJJSDGLB.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-CSFUKSU6.js → chunk-QCU5G5PZ.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-VQYYGAXP.js → chunk-TLFX3U6S.js} +0 -0
- /package/dist/browser-lazy/chunks/{chunk-5UVGUSD6.js → chunk-YHMTSXIR.js} +0 -0
- /package/dist/zenuml/chunks/{chunk-EVPSMEKN.js → chunk-GC7IPQ5P.js} +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import{a as e}from"./chunk-
|
|
1
|
+
import{a as e}from"./chunk-TLFX3U6S.js";import{a as t,b as i}from"./chunk-2JQXRKBC.js";import{a as l,b as o,c as a}from"./chunk-4NILRBC7.js";import"./chunk-64JFHCJC.js";import{c as r}from"./chunk-J57YRC2M.js";import{b as n,c as s,f as c}from"./chunk-D6MQ7QSU.js";import{j as d,l as p}from"./chunk-XHU3A432.js";import{d as h}from"./chunk-5LKPDHPC.js";import{t as u,w as m,y as f}from"./chunk-V6I2VGNQ.js";import"./chunk-7UFOFWBA.js";import{a as g,c as b,h as x}from"./chunk-VRZKI33U.js";import{D as v,a as y,b as $,c as S,d as k,e as w,g as z,i as L}from"./chunk-QVSZOF5M.js";import{c as P,g as W,j as F,k as T,ma as M,s as _,y as C}from"./chunk-G4JBA7HU.js";import{e as j,i as A,j as D,k as E,m as H}from"./chunk-3JTYTXA6.js";import{c as N,h as O}from"./chunk-YVNJDVQO.js";import{M as X,_ as I,ba as B,o as Y,oa as J,u as R,wa as U,xa as V}from"./chunk-EIYLJ4FI.js";import{x as Q}from"./chunk-PJJSDGLB.js";import{a as Z}from"./chunk-YHMTSXIR.js";import"./chunk-QCU5G5PZ.js";var G=Object.freeze({id:"pie",upstreamId:"pie",maturity:"stable",label:"Pie",headers:["pie"],aliases:[],config:{section:"pie",keys:["textPosition","donutHole","legendPosition","highlightSlice","useMaxWidth","useWidth"],noopKeys:["useMaxWidth","useWidth"]},identity:{id:"family:pie",kind:"family",version:"1.0.0",compatibility:{core:"0.5.4"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["value","category","emphasis"],semanticRoles:["prelude","chrome","pie-slice","legend","title","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:"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:"pie-slice",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"pie-slice",primitive:"data-mark",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:"data-mark",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:`pie title Plans
|
|
2
2
|
"Free" : 60
|
|
3
3
|
"Pro" : 30
|
|
4
|
-
"Enterprise" : 10`,detect:
|
|
4
|
+
"Enterprise" : 10`,detect:Q,detectLoose:Q}),K={textPosition:p(0,1),donutHole:p(0,.9),legendPosition:d("top","bottom","left","right","center")},q={textPosition:.75,donutHole:0,legendPosition:"right",paletteOverrides:[]},ee=["top","bottom","left","right","center"];function et(e){if("number"==typeof e&&Number.isFinite(e)&&e>0)return e;if("string"==typeof e){let t=/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(?:px)?$/.exec(e.trim());if(t){let e=Number.parseFloat(t[1]);if(Number.isFinite(e)&&e>0)return e}}}function ei(e={}){let t=f(e,["pie"])??{},i=f(e,["themeVariables"])??{},l={...q,paletteOverrides:[]},o=t.textPosition;"number"==typeof o&&Number.isFinite(o)&&o>=0&&o<=1&&(l.textPosition=o);let a=t.donutHole;"number"==typeof a&&Number.isFinite(a)&&a>0&&a<=.9&&(l.donutHole=a);let r=t.legendPosition;"string"==typeof r&&ee.includes(r)&&(l.legendPosition=r,l.legendPositionExplicit=!0),"string"==typeof t.highlightSlice&&t.highlightSlice.trim()&&(l.highlightSlice=t.highlightSlice.trim());for(let e=0;e<12;e++){let t=j(i[`pie${e+1}`]);void 0!==t&&(l.paletteOverrides[e]=t)}l.paletteOverrides=Array.from(l.paletteOverrides,e=>e??null);let n=j(i.pieStrokeColor);void 0!==n&&(l.strokeColor=n);let s=et(i.pieStrokeWidth);void 0!==s&&(l.strokeWidth=s);let c=et(i.pieOuterStrokeWidth);void 0!==c&&(l.outerStrokeWidth=c);let d=j(i.pieOuterStrokeColor);void 0!==d&&(l.outerStrokeColor=d);let p=i.pieOpacity;"number"==typeof p&&Number.isFinite(p)&&p>=0&&p<=1&&(l.opacity=p);let h=et(i.pieSectionTextSize);void 0!==h&&(l.sectionTextSize=h);let u=j(i.pieSectionTextColor);void 0!==u&&(l.sectionTextColor=u);let m=et(i.pieTitleTextSize);void 0!==m&&(l.titleTextSize=m);let g=j(i.pieTitleTextColor);void 0!==g&&(l.titleTextColor=g);let b=et(i.pieLegendTextSize);void 0!==b&&(l.legendTextSize=b);let x=j(i.pieLegendTextColor);return void 0!==x&&(l.legendTextColor=x),l}var el={nodeLabelFontSize:13,edgeLabelFontSize:13,groupHeaderFontSize:18,nodeLabelFontWeight:500,edgeLabelFontWeight:500,groupHeaderFontWeight:600,nodePaddingX:0,nodePaddingY:0,nodeLineWidth:1.5,edgeLineWidth:N.connector,groupCornerRadius:0,groupPaddingX:0,groupPaddingY:0,groupLineWidth:N.outerBox};function eo(e){return e>0?`${Math.max(.1,Math.round(1e3*e)/10).toFixed(1)}%`:"0.0%"}function ea(e,t,i,l){return{x:e+i*Math.sin(l),y:t-i*Math.cos(l)}}function er(e){return Math.round(100*e)/100}function en(e,i,o,a,r){let n=O(i,el,a),s=function(e){let t=e.reduce((e,t)=>e+t.value,0);if(!Number.isFinite(t))throw Error("Pie total exceeds the finite numeric range; rescale the values");if(e.some(e=>e.value>0&&e.value/t==0))throw Error("Pie slice share underflows the finite numeric range; rescale the values");return t}(e.entries),c=o.donutHole>0?er(95*o.donutHole):0,d=void 0===r?void 0:Math.max(r,238),p=70+222*("left"===o.legendPosition||"right"===o.legendPosition),h=void 0===d||d<=p?void 0:d-p,u=o.titleTextSize??n.groupHeaderFontSize,m=o.legendTextSize??n.nodeLabelFontSize,f=e.title?I(e.displayTitle??e.title,{display:void 0===e.displayTitle?"formatted":"literal",transform:n.groupTextTransform,fontSize:u,fontWeight:n.groupHeaderFontWeight,letterSpacing:n.groupLetterSpacing,safeFont:!0,...void 0===d?{}:{maxWidth:d-48}}):void 0;f&&void 0!==d&&f.width>d-48+.01&&(f=I(f.prepared,f));let g=f?.text,b=f?f.height:0,x=f?b+20:0,v=f?.width??0,y="hover"===o.highlightSlice?void 0:o.highlightSlice,$=e.entries.map(i=>{let l=s>0?i.value/s:0,a=`${e.showData?` [${t(i.value)}]`:""} (${eo(l)})`,r=(i.displayLabel??i.label).split(`
|
|
5
5
|
`),c=y===i.label?700:n.nodeLabelFontWeight,d=r.map((e,t)=>t===r.length-1?`${e}${a}`:e).join(`
|
|
6
|
-
`),p=700===c?1.1:1,u="center"===o.legendPosition||void 0===h?void 0:h/p,f=
|
|
7
|
-
`,t:" ",r:"\r",b:"\b",f:"\f",v:"\v",0:"\0"};return e.replace(/\\(.)/g,(e,i)=>t[i]??i)}function eb(e){return Math.max(e+1,2.5)}function ex(e,t){return e&&/[<>*~]/.test(t)?{data:{"literal-text":"true"}}:{}}function ev(e){return Math.round(100*e)/100}var ey=
|
|
6
|
+
`),p=700===c?1.1:1,u="center"===o.legendPosition||void 0===h?void 0:h/p,f=I(d,{display:void 0===i.displayLabel?"formatted":"literal",transform:n.nodeTextTransform,fontSize:m,fontWeight:c,letterSpacing:n.nodeLetterSpacing,safeFont:!0,...void 0===u?{}:{maxWidth:u}});void 0!==u&&f.width>u+.01&&(f=I(f.prepared,f));let g=f.lines,b=f.width,x=700===c?1.1*b:b;return{block:f,lines:g,fraction:l,textWidth:x,reservedWidth:x}}),S={gap:8,minRowHeight:14,leadingWidth:22,columnGap:16,...void 0!==d&&("top"===o.legendPosition||"bottom"===o.legendPosition)?{maxWidth:d-48}:{}},k=B($,S),w=k.width,z=k.height,L=24+x,P=o.legendPosition,W,F,T,M,_,C;if("left"===P||"right"===P){let e=Math.max(190,z);F=L+e/2,M=L+(e-z)/2,"right"===P?(W=119,_=(T=246)+w+24):(T=24,_=(W=24+w+32+95)+95+24),_=Math.max(_,v+48),C=L+e+24}else{let e=Math.max(190,w);if(T=(W=((_=Math.max(48+e,v+48))-e)/2+e/2)-w/2,"top"===P)M=L,C=(F=L+z+24+95)+95+24;else if("bottom"===P)F=L+95,C=(M=L+190+24)+z+24;else{let e=Math.max(190,z);M=(F=L+e/2)-z/2,C=L+e+24}}let j=[],A=0;for(let i of(e.entries.forEach(e=>{let t=s>0?e.value/s:0,i=A,l=s>0?A+t*Math.PI*2:A;A=l,j.push({label:e.label,...void 0===e.displayLabel?{}:{displayLabel:e.displayLabel},value:e.value,fraction:t,startAngle:i,endAngle:l,path:function(e,t,i,l,o,a=0){let r=o-l,n=a>0?Math.min(a,95):0;if(r>=2*Math.PI-1e-9){let i=er(e),l=er(t-95),o=er(t+95),a=`M ${i} ${l} A ${er(95)} ${er(95)} 0 1 1 ${i} ${o} A ${er(95)} ${er(95)} 0 1 1 ${i} ${l} Z`;if(n<=0)return a;let r=er(t-n),s=er(t+n),c=`M ${i} ${r} A ${er(n)} ${er(n)} 0 1 0 ${i} ${s} A ${er(n)} ${er(n)} 0 1 0 ${i} ${r} Z`;return`${a} ${c}`}let s=ea(e,t,95,l),c=ea(e,t,95,o),d=+(r>Math.PI);if(n<=0)return`M ${er(e)} ${er(t)} L ${er(s.x)} ${er(s.y)} A ${er(95)} ${er(95)} 0 ${d} 1 ${er(c.x)} ${er(c.y)} Z`;let p=ea(e,t,n,l),h=ea(e,t,n,o);return`M ${er(s.x)} ${er(s.y)} A ${er(95)} ${er(95)} 0 ${d} 1 ${er(c.x)} ${er(c.y)} L ${er(h.x)} ${er(h.y)} A ${er(n)} ${er(n)} 0 ${d} 0 ${er(p.x)} ${er(p.y)} Z`}(W,F,0,i,l,c)})}),j)){let e=(i.startAngle+i.endAngle)/2,a=95*o.textPosition,r=`${(i.displayLabel??i.label).replace(/\n/g," ")}: ${t(i.value)} (${eo(i.fraction)})`;i.tooltip=l(er(er(W)+a*Math.sin(e)),er(er(F)-a*Math.cos(e)),r)}for(let e of(function(e,t,i,l,o){let a=95*o.textPosition,r=o.sectionTextSize??12,n=1.1*r,s=[];for(let l=0;l<e.length;l++){var c;let o=e[l];if(o.fraction<.01)continue;let n=(c=o.fraction,`${(100*c).toFixed(0)}%`);if("0%"===n)continue;let d=o.endAngle-o.startAngle;if(!(d>0))continue;let p=R(n,r,500);if(p+4>2*a*Math.sin(Math.min(d,Math.PI)/2))continue;let h=(o.startAngle+o.endAngle)/2;s.push({index:l,fraction:o.fraction,halfWidth:p/2,label:{text:n,x:er(t+a*Math.sin(h)),y:er(i-a*Math.cos(h)),fontSize:r}})}s.sort((e,t)=>t.fraction-e.fraction||e.index-t.index);let d=[];for(let t of s){let i={x0:t.label.x-t.halfWidth,y0:t.label.y-n/2,x1:t.label.x+t.halfWidth,y1:t.label.y+n/2};d.some(e=>Math.min(i.x1,e.x1)-Math.max(i.x0,e.x0)>1&&Math.min(i.y1,e.y1)-Math.max(i.y0,e.y0)>1)||(d.push(i),e[t.index].pctLabel=t.label)}}(j,W,F,0,o),j))e.pctLabel&&(e.pctLabel.block=I(e.pctLabel.text,{display:"literal",fontSize:e.pctLabel.fontSize,fontWeight:500}));let D=B($,{...S,top:M}).rows.map(({item:t,x:i=0,top:l,textY:o},a)=>{let r=e.entries[a];return{label:r.label,...void 0===r.displayLabel?{}:{literalText:!0},value:r.value,fraction:t.fraction,x:er(T+i),y:er(l),swatchSize:14,textX:er(T+i+14+8),textY:er(o),lines:t.lines,block:t.block,textWidth:er(t.textWidth)}});return{width:er(_),height:er(C),title:e.title?{text:g,block:f,x:er(_/2),y:24+b/2,...void 0===e.displayTitle?{}:{literalText:!0}}:void 0,cx:er(W),cy:er(F),radius:95,innerRadius:c,slices:j,legend:D,showData:e.showData,total:s,visual:o}}var es={wholeLine:e=>/^(?:pie(?:\s+showData)?\s+)?title(?:\s|$)/i.test(e)},ec=/^"((?:[^"\\]|\\.)*)"\s*:\s*(.+)$/,ed=/^\+?(?:\d+(?:\.\d+)?|\.\d+)$/,ep=/[\u0000-\u0008\u000b\u000c\u000e-\u001f]/;function eh(e){return s(e,es)}function eu(e){return/[<>*~]/.test(e)}function em(e){let t=r(T(F(e)),ef);if(ep.test(t))throw _({what:"Pie title display contains an XML-disallowed control character",expectedForm:"a title without XML-disallowed control characters",example:"title Safe chart"});return t}var ef={subject:"Pie entity",example:'"Alpha#" : 10'};function eg(e){let t={n:`
|
|
7
|
+
`,t:" ",r:"\r",b:"\b",f:"\f",v:"\v",0:"\0"};return e.replace(/\\(.)/g,(e,i)=>t[i]??i)}function eb(e){return Math.max(e+1,2.5)}function ex(e,t){return e&&/[<>*~]/.test(t)?{data:{"literal-text":"true"}}:{}}function ev(e){return Math.round(100*e)/100}var ey=P(function(e,l){let r,n,{positioned:s,colors:c,resolved:d}=l,p=d.renderOptions,h=c.font??"Inter",u=p.transparent??!1,m=p.interactive??!1,f=O(p,el,d.styleFace),g=Y(d.styleFace,"pie-slice",{},{includeFallback:!1}),b=s.visual,x=[],v=i(s.slices.length,{accent:c.accent,bg:c.bg,overrides:b.paletteOverrides}),y="hover"===b.highlightSlice,$=!y&&s.slices.some(e=>b.highlightSlice===e.label),S=[];S.push(E(s.width,s.height,c,u,{attrs:{role:"img","aria-roledescription":"pie chart"}})),S.push(D(h,!1,c.shadow,c.embedFontImport));let k=A(c);k&&S.push(`<defs>${k}</defs>`);let w=(r=eb(b.strokeWidth??g?.lineWidth??f.nodeLineWidth),n=m?a("pie",["pie-slice-group"]):"",`<style>
|
|
8
8
|
.pie-slice.highlighted-on-hover:hover${"hover"===b.highlightSlice?`,
|
|
9
9
|
.pie-slice-group:hover > .pie-slice-hover-target`:""} { stroke: var(--fg); stroke-width: ${r}; opacity: 1; }${n}
|
|
10
10
|
</style>`);if(S.push(w),x.push(e.documentOpen({id:"prelude",width:s.width,height:s.height,colors:c,transparent:u,font:h,hasMonoFont:!1,extraCss:w},S.join(`
|
|
11
|
-
`))),void 0!==b.outerStrokeWidth||void 0!==b.outerStrokeColor){let t=b.outerStrokeWidth??2,i=ev(s.radius+t/2);x.push(e.shape({id:"outer-circle",role:"chrome",geometry:{kind:"circle",cx:s.cx,cy:s.cy,r:i},paint:{fill:"none",stroke:b.outerStrokeColor??f.nodeBorderColor??"var(--_node-stroke)",strokeWidth:String(t)},attributes:{className:"pie-outer-circle"}}))}let z=new Map,L=[],
|
|
12
|
-
`);x.push(e.text({id:
|
|
11
|
+
`))),void 0!==b.outerStrokeWidth||void 0!==b.outerStrokeColor){let t=b.outerStrokeWidth??2,i=ev(s.radius+t/2);x.push(e.shape({id:"outer-circle",role:"chrome",geometry:{kind:"circle",cx:s.cx,cy:s.cy,r:i},paint:{fill:"none",stroke:b.outerStrokeColor??f.nodeBorderColor??"var(--_node-stroke)",strokeWidth:String(t)},attributes:{className:"pie-outer-circle"}}))}let z=new Map,L=[],P=(e,t)=>{let i=`${e}:${t}`,l=z.get(i)??0;return z.set(i,l+1),0===l?i:`${i}#${l}`},W=eb(b.strokeWidth??g?.lineWidth??f.nodeLineWidth);for(let t=0;t<s.slices.length;t++){let i=s.slices[t],l=eo(i.fraction),o={category:i.label,value:i.fraction},a=Y(d.styleFace,"pie-slice",o,{includeFallback:!1}),r=b.paletteOverrides[t]??a?.fillColor??v[t];v[t]=r;let n=b.strokeColor??a?.strokeColor??a?.borderColor??f.nodeBorderColor??"var(--bg)",c=b.strokeWidth??a?.lineWidth??f.nodeLineWidth,p=a?.cue??"none",h="outline"===p?c+1:"double-line"===p?c+2:c,u="pattern"===p?"3 2":"double-line"===p?"8 2 2 2":void 0,m=eb(h),g=$&&b.highlightSlice===i.label,S=$&&!g,k=`pie-slice${g?" highlighted":""}${y?" highlighted-on-hover":""}${S?" pie-dim":""}`,w=g?1:S?ev((b.opacity??1)*.4):b.opacity,z=P("slice",i.label);L[t]=z,x.push(e.shape({id:z,role:"pie-slice",geometry:{kind:"path",d:i.path},paint:{fill:r,stroke:g?"var(--fg)":n,strokeWidth:String(g?m:h),...u?{strokeDasharray:u}:{},...void 0!==w?{opacity:String(w)}:{}},channels:{...o,...g?{emphasis:!0}:{}},attributes:{className:k,data:{label:i.label,value:String(i.value),percent:l,..."none"!==p?{"brand-cue":p}:{},...g?{highlighted:"true"}:{}}}}))}for(let t=0;t<s.slices.length;t++){let i=s.slices[t],l=i.pctLabel;if(!l)continue;let o=$&&b.highlightSlice!==i.label,a=$&&!o?1:o?(b.opacity??1)*.4:b.opacity??1,r=function(e,t,i){let l=H("var(--bg)",i);if(!(void 0===l||!V(e)))return t>=1?e:J(e,l,100*t)}(v[t],a,c),n=f.nodeTextColor??c.fg,d=b.sectionTextColor??(void 0===r?o?n:M(v[t])??n:o?U(H(n,c)??n,r):M(r)??n);x.push(e.text({id:P("slice-label",i.label),role:"label",text:l.text,x:l.x,y:l.y,fontSize:l.fontSize,fontWeight:500,block:l.block,anchor:"middle",dominantBaseline:"middle",paint:{fill:d},channels:{category:i.label,value:i.fraction},attributes:{className:"pie-slice-label"}}))}for(let t=0;t<s.legend.length;t++){let i=s.legend[t],l=v[t],o=$&&b.highlightSlice===i.label,a=$&&!o,r=o?700:f.nodeLabelFontWeight;x.push(e.shape({id:P("legend",i.label),role:"legend",geometry:{kind:"rect",x:i.x,y:i.y,width:i.swatchSize,height:i.swatchSize,rx:2,ry:2},paint:{fill:l,stroke:f.nodeBorderColor??"var(--_node-stroke)",strokeWidth:String(f.nodeBorderColor?Math.max(1,f.nodeLineWidth):1),...a?{opacity:String(.4)}:{}},channels:{category:i.label,value:i.fraction},attributes:{className:`pie-legend-swatch${a?" pie-dim":""}`}}));let n=i.lines.join(`
|
|
12
|
+
`);x.push(e.text({id:P("legend-label",i.label),role:"legend",text:n,x:i.textX,y:i.textY,fontSize:b.legendTextSize??f.nodeLabelFontSize,fontWeight:r,letterSpacing:f.nodeLetterSpacing,block:i.block,...!0===i.literalText?{display:"literal"}:{},anchor:"start",dominantBaseline:"middle",paint:{fill:b.legendTextColor??f.nodeTextColor??"var(--_text)"},channels:{category:i.label,value:i.fraction},attributes:{className:"pie-legend-text",...ex(!0===i.literalText,n)}}))}if(s.title){let t=s.title.text;x.push(e.text({id:"title",role:"title",text:t,x:s.title.x,y:s.title.y,fontSize:b.titleTextSize??f.groupHeaderFontSize,fontWeight:f.groupHeaderFontWeight,letterSpacing:f.groupLetterSpacing,block:s.title.block,...!0===s.title.literalText?{display:"literal"}:{},anchor:"middle",dominantBaseline:"middle",paint:{fill:b.titleTextColor??f.groupTextColor??f.nodeTextColor??"var(--_text)"},attributes:{className:"pie-title",...ex(!0===s.title.literalText,t)}}))}if(m||y)for(let[i,l]of s.slices.entries()){let a=`${(l.displayLabel??l.label).replace(/\n/g," ")}: ${t(l.value)} (${eo(l.fraction)})`,r=P("tooltip:slice",l.label),n={id:L[i],role:"pie-slice"};x.push(e.group({id:r,role:"chrome",owner:n,open:'<g class="pie-slice-group">',close:"</g>",join:"",children:[{indent:0,node:e.shape({id:`${r}:hit`,role:"chrome",owner:n,...y?{visibility:"conditional",conditionalPaint:{fill:"transparent",stroke:"var(--fg)",strokeWidth:String(W)}}:{},geometry:{kind:"path",d:l.path},paint:{fill:"transparent",...y?{stroke:"transparent",strokeWidth:String(W)}:{}},...y?{attributes:{className:"pie-slice-hover-target"}}:{}})},...m?[{indent:0,node:e.documentContent({id:`${r}:title`,role:"chrome",nonPaint:"interaction-metadata"},`<title>${X(a)}</title>`)},{indent:0,node:o(e,"pie",l.tooltip,`${r}:body`,n)}]:[]]}))}return x.push(e.documentClose()),{family:"pie",width:s.width,height:s.height,colors:c,transparent:u,parts:x}}),e$=k(G,{configDiagnostics:e=>h("pie",e,K),statementEnds:eh,normalizeRequest:e=>({familyConfig:{visual:ei(e.source.frontmatter)}}),layout:t=>S(function(t,i={},l=q,o){let a=en(t,i,l,o),r=i.pie?.maxWidth;return void 0===r?a:e(a,r,e=>{if(1!==e)return;let a=l.legendPositionExplicit||"right"!==l.legendPosition?l.legendPosition:"bottom";return en(t,i,{...l,legendPosition:a},o,r)})}(u(function(e){if(0===(e=c(C(e,eh(e)).familyLines,es).map(n)).length)throw Error("Pie chart is empty");let t=e[0].trim(),i=t.match(/^pie\b(.*)$/i);if(!i)throw Error(`Pie chart must start with "pie", got: "${t}"`);w("pie")&&z("pie","header",t,{line:1,unit:"normalized"});let l=!1,o,a,s=i[1].trim(),d=s.match(/^showData\b\s*(.*)$/i);d&&(l=!0,w("pie")&&L("pie","setShowData",l,{line:1,unit:"normalized"}),s=d[1].trim());let p=s.match(/^title\s+(.+)$/i);if(p){let e=p[1].trim();o=e,w("pie")&&L("pie","setTitle",o,{line:1,unit:"normalized"}),a=em(e),w("pie")&&L("pie","resolveTitleDisplay",a,{line:1,unit:"normalized"})}else if(s.length>0)throw Error(`Unexpected text after pie header: "${s}"`);let h=[],u=new Set,m=!1,f=!1;for(let t=1;t<e.length;t++){let i=e[t].trim();if(0===i.length||i.startsWith("%%"))continue;if(/^showData\s*$/i.test(i)){w("pie")&&z("pie","showData",i,{line:t+1,unit:"normalized"}),l=!0,w("pie")&&L("pie","setShowData",l,{line:t+1,unit:"normalized"});continue}let n=i.match(/^title\s+(.+)$/i);if(n){w("pie")&&z("pie","title",i,{line:t+1,unit:"normalized"});let e=n[1].trim();o=e,w("pie")&&L("pie","setTitle",o,{line:t+1,unit:"normalized"}),a=em(e),w("pie")&&L("pie","resolveTitleDisplay",a,{line:t+1,unit:"normalized"});continue}let s=i.match(ec);if(s){w("pie")&&z("pie","entry",i,{line:t+1,unit:"normalized"});let e=eg(s[1]);/[\u0000-\u001f]/.test(eg(s[1].replace(/\n/g,"")))&&(f=!0,w("pie")&&L("pie","setHasEscapedControlLabels",!0,{line:t+1,unit:"normalized"}));let l=s[2].trim();if(!ed.test(l))throw Error(`Pie slice "${e}" has invalid value "${l}". Values must be non-negative numbers.`);let o=Number.parseFloat(l);if(!Number.isFinite(o)||o<0)throw Error(`Pie slice "${e}" has invalid value "${l}". Values must be non-negative numbers.`);if(ep.test(e))throw _({what:"Pie slice label contains an XML-disallowed control character",expectedForm:"a label without XML-disallowed control characters",example:'"Alpha" : 10'});let a=F(i),n=eg(T(ec.exec(a)?.[1]??s[1])),c=r(n,ef);if(w("pie")&&L("pie","resolveEntryDisplay",{sourceKey:n,label:c},{line:t+1,unit:"normalized"}),function(e,t){if(!W.test(t))return!1;let i=new Uint32Array(160);for(let t of e){let e=t.charCodeAt(0);e<160&&W.test(t)&&(i[e]=i[e]+1)}for(let e of t){let t=e.charCodeAt(0);if(!(t>=160||!W.test(e))){if(0===i[t])return!0;i[t]=i[t]-1}}return!1}(e,c))throw _({what:"Pie entity projection creates a terminal control character after escape decoding",expectedForm:"an entity that displays printable text",example:'"Alpha#" : 10'});if(ep.test(c))throw _({what:"Pie slice display label contains an XML-disallowed control character",expectedForm:"a label without XML-disallowed control characters",example:'"Alpha" : 10'});let d=function(e){if(!e.includes(`
|
|
13
13
|
`))return e;let t=[];for(let i of e.split(`
|
|
14
|
-
`)){let e=0,l=i.length;for(;e<l&&(" "===i[e]||" "===i[e]);)e++;for(;l>e&&(" "===i[l-1]||" "===i[l-1]);)l--;e<l&&t.push(i.slice(e,l))}return t.join(" ")}(c);u.has(n)?(m=!0,w("pie")&&L("pie","setHasDuplicateSourceLabels",!0,{line:t+1,unit:"normalized"})):(u.add(n),w("pie")&&L("pie","addSourceLabel",n,{line:t+1,unit:"normalized"}),h.push({label:e,value:o,...d===e&&!eu(e)?{}:{displayLabel:d}}),w("pie")&&L("pie","appendEntry",h[h.length-1],{line:t+1,unit:"normalized"}));continue}throw i.includes(":")?(w("pie")&&z("pie","invalidEntry",i,{line:t+1,unit:"normalized"}),Error(`Invalid pie entry: "${i}". Expected: "label" : positiveNumber`)):(w("pie")&&z("pie","unrecognized",i,{line:t+1,unit:"normalized"}),_({what:`Unrecognized pie chart line: "${i}"`,expectedForm:'a title, showData, or a slice ("Label" : number)',example:'"Free" : 60'}))}return{title:o,showData:l,entries:h,...a!==o||void 0!==o&&eu(o)?{displayTitle:a}:{},...m?{hasDuplicateSourceLabels:!0}:{},...f?{hasEscapedControlLabels:!0}:{}}}(function(e){if(!e.authoredFamilyLines)return e.familyLines;let t=/^\s*"(?:[^"\\]|\\.)*"/;return m(c(e.authoredFamilyLines,es).map((e,i)=>{let l=function(e,t){let i=
|
|
14
|
+
`)){let e=0,l=i.length;for(;e<l&&(" "===i[e]||" "===i[e]);)e++;for(;l>e&&(" "===i[l-1]||" "===i[l-1]);)l--;e<l&&t.push(i.slice(e,l))}return t.join(" ")}(c);u.has(n)?(m=!0,w("pie")&&L("pie","setHasDuplicateSourceLabels",!0,{line:t+1,unit:"normalized"})):(u.add(n),w("pie")&&L("pie","addSourceLabel",n,{line:t+1,unit:"normalized"}),h.push({label:e,value:o,...d===e&&!eu(e)?{}:{displayLabel:d}}),w("pie")&&L("pie","appendEntry",h[h.length-1],{line:t+1,unit:"normalized"}));continue}throw i.includes(":")?(w("pie")&&z("pie","invalidEntry",i,{line:t+1,unit:"normalized"}),Error(`Invalid pie entry: "${i}". Expected: "label" : positiveNumber`)):(w("pie")&&z("pie","unrecognized",i,{line:t+1,unit:"normalized"}),_({what:`Unrecognized pie chart line: "${i}"`,expectedForm:'a title, showData, or a slice ("Label" : number)',example:'"Free" : 60'}))}return{title:o,showData:l,entries:h,...a!==o||void 0!==o&&eu(o)?{displayTitle:a}:{},...m?{hasDuplicateSourceLabels:!0}:{},...f?{hasEscapedControlLabels:!0}:{}}}(function(e){if(!e.authoredFamilyLines)return e.familyLines;let t=/^\s*"(?:[^"\\]|\\.)*"/;return m(c(e.authoredFamilyLines,es).map((e,i)=>{let l=function(e,t){let i=Z(e),l="header"===t?i.match(/^(\s*pie\b(?:\s+showData\b)?\s+title)(\s+)(.+)$/i):i.match(/^(\s*title)(\s+)(.+)$/i);if(!l)return null;let o=l[1].length,a=o+l[2].length,r=0,n=0,s=()=>{let t=e[n],i=1;if("&"===t){let l=e.slice(n).match(/^&(?:#(?:x[0-9a-f]+|\d+)|[a-z][a-z0-9]+);/i)?.[0];if(l){let e=Z(l);e!==l&&(t=e,i=l.length)}}return{text:t,length:i,entity:i>1}};for(;r<o&&n<e.length;){let e=s();if(i.slice(r,r+e.text.length)!==e.text)return null;r+=e.text.length,n+=e.length}if(r!==o)return null;let c=!1;for(;r<a&&n<e.length;){let e=s();if(e.entity&&c)break;if(!/^\s+$/u.test(e.text))return null;r+=e.text.length,n+=e.length,c=!0}return c?{decodedPrefix:i.slice(0,r),authoredTitle:e.slice(n)}:null}(e,0===i?"header":"body");if(l)return l.decodedPrefix+l.authoredTitle;let o=t.exec(e)?.[0];return void 0===o?Z(e):o+Z(e.slice(o.length))}).join(`
|
|
15
15
|
`)).familyLines}(t.source)),t.source.frontmatter),t.renderOptions,t.familyConfig?.visual??ei(),t.styleFace)),projectPositioned:y(function({positioned:e,options:t}){let i={version:1,nodes:e.legend.map((t,i)=>{let l=`${t.label} (${eo(t.fraction)})`,o=Math.max(t.swatchSize,t.textX-t.x+t.textWidth);return{id:`slice#${i}:${t.label}`,x:b(t.x),y:b(t.y),w:b(o),h:b(t.swatchSize),shape:"rectangle",label:l,...v(t.block,t.textX,t.textY,g(e),"start")}}),edges:[],groups:[],bounds:{w:b(e.width),h:b(e.height)}};return t.debug&&(i.certificates=x("pie",i,"legend-contained")),i}),lowerScene:$(ey)});export{e$ as default};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import{a as e,b as t,c as i}from"./chunk-
|
|
1
|
+
import{a as e,b as t,c as i}from"./chunk-4NILRBC7.js";import{b as a,c as r,d as n,e as o}from"./chunk-D6MQ7QSU.js";import{b as l,c as s,e as d}from"./chunk-XHU3A432.js";import{d as c}from"./chunk-5LKPDHPC.js";import{t as u,y as h,z as x}from"./chunk-V6I2VGNQ.js";import"./chunk-7UFOFWBA.js";import{a as p,b as m,c as y,h as f}from"./chunk-VRZKI33U.js";import{a as b,b as g,c as v,d as k,e as q,g as S,i as $,j as z}from"./chunk-QVSZOF5M.js";import{A as w,D as L,c as M,s as W,y as F}from"./chunk-G4JBA7HU.js";import{c as P,i as _,j as C,k as A,q as B}from"./chunk-3JTYTXA6.js";import{c as N,h as I}from"./chunk-YVNJDVQO.js";import{H as T,M as j,Vb as H,_ as E,x as O}from"./chunk-EIYLJ4FI.js";import{y as D,z as Q}from"./chunk-PJJSDGLB.js";import"./chunk-YHMTSXIR.js";import"./chunk-QCU5G5PZ.js";var Y=Object.freeze({id:"quadrant",upstreamId:"quadrantChart",maturity:"stable",label:"Quadrant",headers:["quadrantChart"],aliases:["quadrant"],config:{section:"quadrantChart",keys:["chartWidth","chartHeight","titleFontSize","titlePadding","quadrantPadding","quadrantLabelFontSize","xAxisLabelFontSize","yAxisLabelFontSize","xAxisLabelPadding","yAxisLabelPadding","pointLabelFontSize","pointRadius","pointTextPadding","quadrantInternalBorderStrokeWidth","quadrantExternalBorderStrokeWidth","useMaxWidth","quadrantTextTopPadding","xAxisPosition","yAxisPosition","useWidth"],noopKeys:["quadrantTextTopPadding","xAxisPosition","yAxisPosition","useWidth"]},identity:{id:"family:quadrant",kind:"family",version:"1.0.0",compatibility:{core:"0.5.4"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["category"],semanticRoles:["prelude","chrome","plate","grid","point","axis","title","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:"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:"plate",primitive:"shape",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:"point",primitive:"shape",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:"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:`quadrantChart
|
|
2
2
|
title Prioritize
|
|
3
3
|
x-axis Low Effort --> High Effort
|
|
4
4
|
y-axis Low Value --> High Value
|
|
5
5
|
Quick win: [0.2, 0.8]
|
|
6
|
-
Money pit: [0.8, 0.2]`,detect:D,detectLoose:Q}),
|
|
7
|
-
</style>`:void 0,g=[(r=n.visual.useMaxWidth?{width:"100%",height:"100%",style:`max-width:${n.width}px`}:{},A(n.width,n.height,o,c,{...r,attrs:{id:m,...
|
|
6
|
+
Money pit: [0.8, 0.2]`,detect:D,detectLoose:Q}),X=Object.fromEntries([...["chartWidth","chartHeight","titleFontSize","quadrantLabelFontSize","xAxisLabelFontSize","yAxisLabelFontSize","pointLabelFontSize","pointRadius"].map(e=>[e,l]),...["titlePadding","quadrantPadding","xAxisLabelPadding","yAxisLabelPadding","pointTextPadding","quadrantInternalBorderStrokeWidth","quadrantExternalBorderStrokeWidth"].map(e=>[e,s]),["useMaxWidth",d]]),R=["chartWidth","chartHeight","titleFontSize","quadrantLabelFontSize","xAxisLabelFontSize","yAxisLabelFontSize","pointLabelFontSize","pointRadius"],V=["titlePadding","quadrantPadding","xAxisLabelPadding","yAxisLabelPadding","pointTextPadding","quadrantInternalBorderStrokeWidth","quadrantExternalBorderStrokeWidth"];function J(e={}){let t=h(e,["quadrantChart"])??{},i={};for(let e of R){let a=x(t,[e]);"number"==typeof a&&Number.isFinite(a)&&a>0&&(i[e]=a)}for(let e of V){let a=x(t,[e]);"number"==typeof a&&Number.isFinite(a)&&a>=0&&(i[e]=a)}let a=x(t,["useMaxWidth"]);return"boolean"==typeof a&&(i.useMaxWidth=a),i}var U=class extends Error{code="INVALID_STYLE_COLOR";subject;property;value;constructor(e,t,i){let a=e.slice(0,128),r=i.slice(0,256);super(W({what:`${a}: ${t} ${JSON.stringify(r)} is not a CSS color`,expectedForm:"a drawable color name, hex color, rgb()/rgba(), hsl()/hsla(), transparent, currentColor, none, or var(--name)",example:`${t}: #f96`}).message),this.name="QuadrantStyleColorError",this.subject=a,this.property=t,this.value=r}},Z=/^\d+(?:\.\d+)?$/,G=/^\d+(?:\.\d+)?(?:px)?$/,K=/^[#\w][\w#(),.%+\s/~-]*$/;function ee(e,t="quadrant point style"){let i=e.trim();if(0===i.length)return{ok:!0,style:void 0};let a={},r=!1,n=function(e){let t=[],i=0,a=0;for(let r=0;r<e.length;r++){let n=e[r];if("("===n)a++;else if(")"===n){if(--a<0)return null}else","===n&&0===a&&(t.push(e.slice(i,r)),i=r+1)}return 0!==a?null:(t.push(e.slice(i)),t)}(i);if(!n)return{ok:!1,error:"style functions have unbalanced parentheses"};for(let e of n){let i=e.trim();if(!i)continue;let n=i.match(/^([a-z][\w-]*)\s*:\s*(.+)$/i);if(!n)return{ok:!1,error:`malformed style entry "${i}" (expected key: value)`};let o=n[1].toLowerCase(),l=n[2].trim();switch(o){case"radius":if(!Z.test(l))return{ok:!1,error:`radius must be a non-negative number, got "${l}"`};a.radius=Number.parseFloat(l);break;case"color":if(void 0===P(l,!0))throw new U(t,"color",l);a.color=l;break;case"stroke-color":if(void 0===P(l,!0))throw new U(t,"stroke-color",l);a.strokeColor=l;break;case"stroke-width":if(!G.test(l))return{ok:!1,error:`stroke-width must be a number with optional px suffix, got "${l}"`};a.strokeWidth=l;break;default:if(!K.test(l))return{ok:!1,error:`style property "${o}" has unsupported characters: "${l}"`};a.extra=a.extra??[],a.extra.push(`${o}: ${l}`)}r=!0}return{ok:!0,style:r?a:void 0}}var et=/\s*:::\s*([A-Za-z_][\w-]*)\s*$/;function ei(e={}){return{nodeLabelFontSize:e.pointLabelFontSize??12,edgeLabelFontSize:e.xAxisLabelFontSize??13,groupHeaderFontSize:e.quadrantLabelFontSize??15,nodeLabelFontWeight:500,edgeLabelFontWeight:500,groupHeaderFontWeight:600,nodePaddingX:0,nodePaddingY:0,nodeLineWidth:N.innerBox,edgeLineWidth:1,groupCornerRadius:0,groupPaddingX:0,groupPaddingY:0,groupLineWidth:2}}function ea(e){return Math.round(100*e)/100}function er(e,t,i,a,r,n){return E(e,{display:"formatted",transform:n,maxWidth:t,fontSize:i,fontWeight:a,letterSpacing:r})}var en=class{cells=new Map;values=[];wide=[];visited=[];query=0;cellsOf(e){let t=Math.floor(e.x0/64),i=Math.floor(e.x1/64),a=Math.floor(e.y0/64),r=Math.floor(e.y1/64);if(!(![t,i,a,r].every(Number.isSafeInteger)||i<t||r<a||(i-t+1)*(r-a+1)>256))return[t,i,a,r]}add(e,t){let i=this.values.length;this.values.push(t);let a=this.cellsOf(e);if(!a)return void this.wide.push(i);let[r,n,o,l]=a;for(let e=o;e<=l;e++)for(let t=r;t<=n;t++){let a=`${t},${e}`,r=this.cells.get(a);r?r.push(i):this.cells.set(a,[i])}}some(e,t){let i=this.cellsOf(e);if(!i)return this.values.some(t);let a=++this.query,r=e=>this.visited[e]!==a&&(this.visited[e]=a,t(this.values[e]));for(let e of this.wide)if(r(e))return!0;let[n,o,l,s]=i;for(let e=l;e<=s;e++)for(let t=n;t<=o;t++)for(let i of this.cells.get(`${t},${e}`)??[])if(r(i))return!0;return!1}},eo=(e,t)=>Math.min(e.x1,t.x1)-Math.max(e.x0,t.x0)>.5&&Math.min(e.y1,t.y1)-Math.max(e.y0,t.y0)>.5,el=[0,Math.PI,-Math.PI/2,Math.PI/2,-Math.PI/4,Math.PI/4,-3*Math.PI/4,3*Math.PI/4,-Math.PI/8,Math.PI/8,-3*Math.PI/8,3*Math.PI/8,-5*Math.PI/8,5*Math.PI/8,-7*Math.PI/8,7*Math.PI/8].map(e=>{let t=Math.cos(e);return{cos:t,sin:Math.sin(e),anchor:t>.38?"start":t<-.38?"end":"middle"}});function es(e,t,i,a){let r=a.x-e,n=a.y-t,o=Math.hypot(r,n)||1,l="start"===a.anchor?a.box.x0-2:"end"===a.anchor?a.box.x1+2:a.x,s="middle"===a.anchor?a.y>t?a.box.y0-1:a.box.y1+1:a.y;return{x1:ea(e+r/o*i),y1:ea(t+n/o*i),x2:ea(l),y2:ea(s)}}function ed(e,t,i){let a=i.x2-i.x1,r=i.y2-i.y1,n=a*a+r*r,o=0===n?0:Math.max(0,Math.min(1,((e-i.x1)*a+(t-i.y1)*r)/n));return Math.hypot(e-(i.x1+o*a),t-(i.y1+o*r))}function ec(e,t){var i,a,r,n,o,l,s,d,c,u,h,x,p,m,y,f,b,g,v,k;if(.5>=Math.hypot(e.x1-t.x1,e.y1-t.y1))return!1;let q=(e,t,i)=>{var a,r;return .01>=Math.abs((a=e.x1,r=e.y1,(e.x2-a)*(i-r)-(e.y2-r)*(t-a)))&&t>=Math.min(e.x1,e.x2)-.01&&t<=Math.max(e.x1,e.x2)+.01&&i>=Math.min(e.y1,e.y2)-.01&&i<=Math.max(e.y1,e.y2)+.01},S=(i=e.x1,a=e.y1,r=e.x2,n=e.y2,o=t.x1,(r-i)*(t.y1-a)-(n-a)*(o-i)),$=(l=e.x1,s=e.y1,d=e.x2,c=e.y2,u=t.x2,(d-l)*(t.y2-s)-(c-s)*(u-l)),z=(h=t.x1,x=t.y1,p=t.x2,m=t.y2,y=e.x1,(p-h)*(e.y1-x)-(m-x)*(y-h)),w=(f=t.x1,b=t.y1,g=t.x2,v=t.y2,k=e.x2,(g-f)*(e.y2-b)-(v-b)*(k-f));return!!(S*$<-.01&&z*w<-.01||q(e,t.x1,t.y1)||q(e,t.x2,t.y2)||q(t,e.x1,e.y1)||q(t,e.x2,e.y2))||3>Math.min(ed(e.x1,e.y1,t),ed(e.x2,e.y2,t),ed(t.x1,t.y1,e),ed(t.x2,t.y2,e))}function eu(e,t){let i={x0:t.x0-2,y0:t.y0-2,x1:t.x1+2,y1:t.y1+2};if(Math.max(e.x1,e.x2)<i.x0||Math.min(e.x1,e.x2)>i.x1||Math.max(e.y1,e.y2)<i.y0||Math.min(e.y1,e.y2)>i.y1)return!1;let a=(e,t)=>e>=i.x0&&e<=i.x1&&t>=i.y0&&t<=i.y1;return!!(a(e.x1,e.y1)||a(e.x2,e.y2))||[{x1:i.x0,y1:i.y0,x2:i.x1,y2:i.y0},{x1:i.x1,y1:i.y0,x2:i.x1,y2:i.y1},{x1:i.x1,y1:i.y1,x2:i.x0,y2:i.y1},{x1:i.x0,y1:i.y1,x2:i.x0,y2:i.y0}].some(t=>ec(e,t))}var eh=/^title\s+(.+)$/i,ex=/^([xy])-axis\s+(.+)$/is,ep=/^quadrant-([1-4])\s+(.+)$/is,em=/^(.+?)\s*:\s*\[\s*([^,\]]+)\s*,\s*([^,\]]+)\s*\]\s*(.*)$/s,ey=/^classDef\s+(.+)$/i;function ef(e){if(!e.includes(";")||eh.test(e))return[e];let t=[],i=0,a=!1,r=0;for(let n=0;n<e.length;n++){let o=e[n];if('"'===o&&(a=!a),!a){if("%"===o&&"%"===e[n+1])break;if("("===o)r++;else if(")"===o)r--;else if(";"===o&&0===r&&(t.push(e.slice(i,n)),i=n+1,/^\s*title\s/i.test(e.slice(i))))break}}t.push(e.slice(i));let n=[],o=[];for(let e=0;e<t.length;e++){let i=t[e];if(!i.trim()&&0===o.length)continue;o.push(i);let a=t[e+1]?.trim()??"",r=em.test(i.trim())||ey.test(i.trim())||/^quadrant(?:Chart)?$/i.test(i.trim()),l=ex.test(o[0].trim())||ep.test(o[0].trim()),s=em.test(a)||ey.test(a)||eh.test(a)||ex.test(a)||ep.test(a);if(r||l&&s||e===t.length-1){let e=o.join(";").trim();e&&n.push(e),o=[]}}return n}var eb=/^[\d.,+\s-]*$/,eg=/^[\d.,+\s-]*\]/;function ev(e){let t=r(e,{escapes:!1,wholeLine:e=>eh.test(e)});for(let i=0;i<e.length;i=t[i]+1){let r=t[i],o=a(n(e,i,r).trim()).replace(/"[^"]*"/g,'""'),l=o.lastIndexOf("[");if(eh.test(o)||l<0||o.includes("]",l)||!o.slice(0,l).trimEnd().endsWith(":"))continue;let s=r+1;for(;s<e.length&&eb.test(e[s]);)s++;s<e.length&&eg.test(e[s].trim())&&(t[i]=s)}return t}var ek=/^"[^"]*"/,eq=/[<>()[\]{}|@^~:;"\n\r\x00-\x08\x0e-\x1f\x7f]/,eS=/(?<![A-Za-z])(?:[xy]-axis|quadrant-[1-4]|quadrantChart|(?:classDef|title)(?![A-Za-z0-9_]))/i;function e$(e,t,i){let a=function(e,t=!1){let i=t?e.replace(ek,""):e;return i.match(eq)?.[0]??i.match(eS)?.[0]??(e.startsWith("-")?"-":void 0)}(e,!0);void 0!==a&&i?.(`Quadrant ${t} ${JSON.stringify(e)} has ${JSON.stringify(a)} outside a quoted string`);let r=/^"([^"]*)"/.exec(e);return T(r?r[1]+e.slice(r[0].length):e)}function ez(e,t){if(!/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/.test(t))throw Error(`Quadrant point "${e}" has non-numeric coordinate "${t}". Coordinates must be numbers in [0, 1].`);let i=Number.parseFloat(t);if(!Number.isFinite(i)||i<0||i>1)throw Error(`Quadrant point "${e}" coordinate "${t}" is out of range. Coordinates must be in [0, 1].`);return i}function ew(e,t){return t.groupFillColor?`color-mix(in srgb, ${t.groupFillColor} ${1===e||3===e?88:76}%, var(--bg))`:`color-mix(in srgb, var(--accent, var(--_arrow)) ${1===e||3===e?10:5}%, var(--bg))`}var eL=M(function(e,a){let r,{positioned:n,colors:o,resolved:l}=a,s=l.renderOptions,d=o.font??"Inter",c=s.transparent??!1,u=s.interactive??!1,h=I(s,ei(n.visual),l.styleFace),x=[],p={title:n.accessibility?.title??n.title?.text,description:n.accessibility?.description},m=`quadrant-${H(n.width,n.height,p.title??"",p.description??"",...n.points.flatMap(e=>[e.label,e.nx,e.ny]))}`,y=`${m}-title`,f=`${m}-desc`,b=u?`<style>${i("quadrant",["quadrant-point-group"])}
|
|
7
|
+
</style>`:void 0,g=[(r=n.visual.useMaxWidth?{width:"100%",height:"100%",style:`max-width:${n.width}px`}:{},A(n.width,n.height,o,c,{...r,attrs:{id:m,...B(p.title,p.description,y,f,"quadrant chart")}}))];p.title&&g.push(`<title id="${y}">${j(p.title)}</title>`),p.description&&g.push(`<desc id="${f}">${j(p.description)}</desc>`),g.push(C(d,!1,o.shadow,o.embedFontImport));let v=_(o);v&&g.push(`<defs>${v}</defs>`),b&&g.push(b),x.push(e.documentOpen({id:"prelude",width:n.width,height:n.height,colors:o,transparent:c,font:d,hasMonoFont:!1,...b?{extraCss:b}:{}},g.join(`
|
|
8
8
|
`)));let{plot:k}=n,q=k.size/2,S=n.visual.quadrantInternalBorderStrokeWidth??h.lineWidth,$=n.visual.quadrantExternalBorderStrokeWidth??h.groupLineWidth;for(let t of n.regions){let i=ew(t.number,h);x.push(e.shape({id:`plate:${t.number}`,role:"plate",geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.height},paint:{fill:i,stroke:"none"},channels:t.label?{category:t.label}:void 0,attributes:{className:"quadrant-region",data:{quadrant:String(t.number)}}}))}let z=k.x+q,w=k.y+q,L={stroke:h.edgeStrokeColor??"var(--_line)",strokeWidth:String(S)};for(let t of(x.push(e.shape({id:"divider:v",role:"grid",geometry:{kind:"line",x1:z,y1:k.y,x2:z,y2:k.y+k.size},paint:L,attributes:{className:"quadrant-divider"}})),x.push(e.shape({id:"divider:h",role:"grid",geometry:{kind:"line",x1:k.x,y1:w,x2:k.x+k.size,y2:w},paint:L,attributes:{className:"quadrant-divider"}})),x.push(e.shape({id:"border",role:"chrome",geometry:{kind:"rect",x:k.x,y:k.y,width:k.size,height:k.size},paint:{fill:"none",stroke:h.groupBorderColor??h.nodeBorderColor??"var(--_node-stroke)",strokeWidth:String($)},attributes:{className:"quadrant-border"}})),n.regions)){if(!t.label)continue;let i=t.labelBlock?.text??t.label;x.push(e.text({id:`quadrant-label:${t.number}`,role:"label",text:i,x:t.labelX,y:t.labelY,fontSize:h.groupHeaderFontSize,fontWeight:h.groupHeaderFontWeight,letterSpacing:h.groupLetterSpacing,block:t.labelBlock,anchor:"middle",dominantBaseline:"middle",paint:{fill:h.groupTextColor??"var(--_text-sec)"},channels:{category:t.label},attributes:{className:"quadrant-label"}}))}let M=[],W=new Map;for(let i of n.points){let a=W.get(i.label)??0;W.set(i.label,a+1);let r=0===a?`point:${i.label}`:`point:${i.label}#${a}`;if(i.leader){let t=i.leader;x.push(e.shape({id:`leader:${i.label}`,role:"chrome",geometry:{kind:"line",x1:t.x1,y1:t.y1,x2:t.x2,y2:t.y2},paint:{stroke:h.edgeStrokeColor??"var(--_line)",strokeWidth:"1"},attributes:{className:"quadrant-leader"}}))}let o=i.className?`quadrant-point ${i.className}`:"quadrant-point";if(x.push(e.shape({id:r,role:"point",geometry:{kind:"circle",cx:i.cx,cy:i.cy,r:i.radius},paint:{fill:i.fill??h.nodeFillColor??"var(--accent, var(--_arrow))",stroke:i.stroke??h.nodeBorderColor??"var(--bg)",strokeWidth:i.strokeWidth??String(Math.max(1,h.nodeLineWidth))},attributes:{className:o,data:{label:i.label,x:String(i.nx),y:String(i.ny)}}})),!i.labelHidden){let t=function(e,t,i){let a=e.labelBox,r=a?(a.x0+a.x1)/2:e.labelX,n=a?(a.y0+a.y1)/2:e.labelY,o=t.regions.find(e=>r>=e.x&&r<=e.x+e.width&&n>=e.y&&n<=e.y+e.height);return o?ew(o.number,i):"var(--bg)"}(i,n,h);x.push(e.text({id:`${r}:label`,role:"label",text:i.label,x:i.labelX,y:i.labelY,fontSize:h.nodeLabelFontSize,fontWeight:h.nodeLabelFontWeight,letterSpacing:h.nodeLetterSpacing,block:i.labelBlock,anchor:i.labelAnchor,dominantBaseline:"middle",paint:{fill:h.nodeTextColor??"var(--_text)",stroke:t,strokeWidth:String(3),strokeLinejoin:"round",paintOrder:"stroke"},attributes:{className:"quadrant-point-label"}}))}if(u){let a=`${i.label}: [${i.nx}, ${i.ny}]`,n={id:r,role:"point"};M.push(e.group({id:`tooltip:${r}`,role:"chrome",owner:n,open:'<g class="quadrant-point-group">',close:"</g>",join:"",children:[{indent:0,node:e.shape({id:`${r}:hit`,role:"chrome",owner:n,geometry:{kind:"circle",cx:i.cx,cy:i.cy,r:i.radius+6},paint:{fill:"transparent"}})},{indent:0,node:e.documentContent({id:`${r}:title`,role:"chrome",nonPaint:"interaction-metadata"},`<title>${j(a)}</title>`)},{indent:0,node:t(e,"quadrant",i.tooltip,`${r}:tooltip`,n)}]}))}}for(let t of(x.push(...M),n.axisLabels)){let i=t.text.split(`
|
|
9
9
|
`),a=i.join(`
|
|
10
|
-
`),r=t.x<k.x?{kind:"rotate",angle:-90,cx:t.x,cy:t.y}:void 0,n=t.block?.lineHeight??1.3*t.fontSize,o=t.y+(i.length-1)*n/2-.35*t.fontSize;x.push(e.text({id:`axis:${t.text}`,role:"axis",text:a,x:t.x,y:o,fontSize:t.fontSize,fontWeight:h.edgeLabelFontWeight,letterSpacing:h.edgeLetterSpacing,block:t.block,anchor:t.anchor,paint:{fill:h.edgeTextColor??"var(--_text-muted)"},transform:r,attributes:{className:"quadrant-axis-label"}}))}if(n.title){let t=n.title.text;x.push(e.text({id:"title",role:"title",text:t,x:n.title.x,y:n.title.y,fontSize:n.title.fontSize,fontWeight:Math.max(h.groupHeaderFontWeight,600),letterSpacing:h.groupLetterSpacing,block:n.title.block,anchor:"middle",dominantBaseline:"middle",paint:{fill:h.groupTextColor??h.nodeTextColor??"var(--_text)"},attributes:{className:"quadrant-title"}}))}return x.push(e.documentClose()),{family:"quadrant",width:n.width,height:n.height,colors:o,transparent:c,parts:x}}),eM=k(Y,{configDiagnostics:e=>c("quadrant",e,U),statementEnds:ev,normalizeRequest:e=>({familyConfig:{visual:V(e.source.frontmatter)}}),layout:t=>v(function(t,i={},a={},r){var n;let o=T(i,ei(a),r),l=a.quadrantPadding??24,s=a.quadrantPadding??24,d=a.titleFontSize??18,c=a.titlePadding??18,u=Math.max(o.groupHeaderFontWeight,600),h=t.title?E(t.title,{display:"formatted",transform:o.groupTextTransform,fontSize:d,fontWeight:u,letterSpacing:o.groupLetterSpacing}):void 0,x=h?.text,p=t.title?d+c:0,m=a.xAxisLabelFontSize??o.edgeLabelFontSize,y=a.yAxisLabelFontSize??o.edgeLabelFontSize,f=a.xAxisLabelPadding??4,b=a.yAxisLabelPadding??4,g=m+2*f+7,v=y+2*b+7,k=g,q=v,S=(n=t.points.length)<=8?380:Math.min(720,380+(n-8)*20),$,z;for(let e=0;e<2;e++){if(void 0!==a.chartWidth||void 0!==a.chartHeight){let e=2*l+q,t=2*s+p+k;S=Math.max(60,Math.min(void 0!==a.chartWidth?a.chartWidth-e:1/0,void 0!==a.chartHeight?a.chartHeight-t:1/0))}let e=Math.max(24,S/2-12);$=t.xAxis?{near:er(t.xAxis.near,e,m,o.edgeLabelFontWeight,o.edgeLetterSpacing,o.edgeTextTransform),...t.xAxis.far?{far:er(t.xAxis.far,e,m,o.edgeLabelFontWeight,o.edgeLetterSpacing,o.edgeTextTransform)}:{}}:void 0,z=t.yAxis?{near:er(t.yAxis.near,e,y,o.edgeLabelFontWeight,o.edgeLetterSpacing,o.edgeTextTransform),...t.yAxis.far?{far:er(t.yAxis.far,e,y,o.edgeLabelFontWeight,o.edgeLetterSpacing,o.edgeTextTransform)}:{}}:void 0,t.title&&(x=(h=E(t.title,{display:"formatted",transform:o.groupTextTransform,fontSize:d,fontWeight:u,letterSpacing:o.groupLetterSpacing,maxWidth:S})).text,p=h.height-(h.lineHeight-h.fontSize)+c);let i=Math.max(m*O,...[$?.near,$?.far].map(e=>e?.height??0)),r=Math.max(y*O,...[z?.near,z?.far].map(e=>e?.height??0));k=g+i-m*O,q=v+r-y*O}let w=l+q,L=s+p,M=S/2,W=w+S+l,F=L+S+k+s,P=[{number:2,col:0,row:0},{number:1,col:1,row:0},{number:3,col:0,row:1},{number:4,col:1,row:1}].map(({number:e,col:i,row:a})=>{let r=w+i*M,n=L+a*M;return{number:e,label:t.quadrants[e-1],labelBlock:void 0===t.quadrants[e-1]?void 0:E(t.quadrants[e-1],{display:"formatted",transform:o.groupTextTransform,fontSize:o.groupHeaderFontSize,fontWeight:o.groupHeaderFontWeight,letterSpacing:o.groupLetterSpacing}),x:ea(r),y:ea(n),width:ea(M),height:ea(M),labelX:ea(r+M/2),labelY:ea(n+M/2)}}),_=o.nodeLabelFontSize,C=o.nodeLabelFontWeight,A=a.pointTextPadding??4,N=P.filter(e=>e.label).map(e=>{let t=e.labelBlock.width;return{x0:e.labelX-t/2,y0:e.labelY-e.labelBlock.height/2,x1:e.labelX+t/2,y1:e.labelY+e.labelBlock.height/2}}),B=a.pointRadius??6,I=t.points.map(e=>{var i,a;let r,n,o,l,s;return i=t.classDefs,a={radius:B},r=e.className&&i&&Object.hasOwn(i,e.className)?i[e.className]:void 0,n={radius:e.style?.radius??r?.radius??a.radius},o=e.style?.color??r?.color,l=e.style?.strokeColor??r?.strokeColor,s=e.style?.strokeWidth??r?.strokeWidth,void 0!==o&&(n.fill=o),void 0!==l&&(n.stroke=l),void 0!==s&&(n.strokeWidth=s),n}),j=t.points.map((e,t)=>{let i=w+e.x*S,a=L+(1-e.y)*S,r=I[t].radius+1;return{x0:i-r,y0:a-r,x1:i+r,y1:a+r}}),H={x0:2,y0:2,x1:W-2,y1:F-2},D=[],Q=t.points.length>=128,Y=Q?new en:void 0,U=Q?new en:void 0,X=Q?new en:void 0;if(Y&&U){for(let e of N)Y.add(e,e);for(let e of j)U.add(e,e)}let R=t.points.map((t,i)=>{let a=I[i],r=ea(w+t.x*S),n=ea(L+(1-t.y)*S),l=E(t.label,{display:"formatted",transform:o.nodeTextTransform,fontSize:_,fontWeight:C,letterSpacing:o.nodeLetterSpacing}),s=l.text,d=l.width,c=l.height,u=a.radius+A,h=e=>{let t=e.box;if(!(t.x0>=H.x0&&t.y0>=H.y0&&t.x1<=H.x1&&t.y1<=H.y1)||(Y?Y.some(t,e=>eo(t,e)):N.some(e=>eo(t,e)))||(U?U.some(t,e=>eo(t,e)):j.some(e=>eo(t,e))))return!1;if(!e.far)return!0;let i=es(r,n,a.radius,e);if(!Y||!X)return!N.some(e=>eu(i,e))&&!D.some(e=>ec(i,e));let o={x0:Math.min(i.x1,i.x2),y0:Math.min(i.y1,i.y2),x1:Math.max(i.x1,i.x2),y1:Math.max(i.y1,i.y2)},l={x0:o.x0-2,y0:o.y0-2,x1:o.x1+2,y1:o.y1+2},s={x0:o.x0-3,y0:o.y0-3,x1:o.x1+3,y1:o.y1+3};return!Y.some(l,e=>eu(i,e))&&!X.some(s,e=>ec(i,e))},x,p;for(let e of function*(e,t,i,a,r){yield{x:e+i,y:t,anchor:"start",far:!1,box:{x0:e+i,y0:t-r/2,x1:e+i+a,y1:t+r/2}},yield{x:e-i,y:t,anchor:"end",far:!1,box:{x0:e-i-a,y0:t-r/2,x1:e-i,y1:t+r/2}},yield{x:e,y:t+i+r/2,anchor:"middle",far:!1,box:{x0:e-a/2,y0:t+i,x1:e+a/2,y1:t+i+r}},yield{x:e,y:t-i-r/2,anchor:"middle",far:!1,box:{x0:e-a/2,y0:t-i-r,x1:e+a/2,y1:t-i}};for(let n=1;n<=10;n++){let o=i+n*(r+6);for(let{cos:i,sin:n,anchor:l}of el){let s=e+i*o,d=t+n*o,c="start"===l?s:"end"===l?s-a:s-a/2;yield{x:s,y:d,anchor:l,far:!0,box:{x0:c,y0:d-r/2,x1:c+a,y1:d+r/2}}}}}(r,n,u,d,c))if(x??=e,h(e)){p=e;break}let m={label:s,labelBlock:l,nx:t.x,ny:t.y,cx:r,cy:n,radius:a.radius,labelX:ea((p??x).x),labelY:ea((p??x).y),labelAnchor:(p??x).anchor};if(m.tooltip=e(r,n-a.radius,`${s}: [${t.x}, ${t.y}]`),void 0!==a.fill&&(m.fill=a.fill),void 0!==a.stroke&&(m.stroke=a.stroke),void 0!==a.strokeWidth&&(m.strokeWidth=a.strokeWidth),void 0!==t.className&&(m.className=t.className),p){if(N.push(p.box),Y?.add(p.box,p.box),m.labelBox={x0:ea(p.box.x0),y0:ea(p.box.y0),x1:ea(p.box.x1),y1:ea(p.box.y1)},p.far){m.leader=es(r,n,a.radius,p),D.push(m.leader);let e=m.leader;X?.add({x0:Math.min(e.x1,e.x2),y0:Math.min(e.y1,e.y2),x1:Math.max(e.x1,e.x2),y1:Math.max(e.y1,e.y2)},e)}}else m.labelHidden=!0;return m}),V=[],Z=e=>L+S+Math.max(m,e.lineHeight/2)+f;if($&&(V.push({text:$.near.text,block:$.near,x:ea(w+4),y:ea(Z($.near)),anchor:"start",fontSize:m}),$.far&&V.push({text:$.far.text,block:$.far,x:ea(w+S-4),y:ea(Z($.far)),anchor:"end",fontSize:m})),z){let e=e=>l+Math.max(y,e.lineHeight/2);V.push({text:z.near.text,block:z.near,x:ea(e(z.near)),y:ea(L+S-4),anchor:"start",fontSize:y}),z.far&&V.push({text:z.far.text,block:z.far,x:ea(e(z.far)),y:ea(L+4),anchor:"end",fontSize:y})}return{width:ea(W),height:ea(F),title:void 0!==x?{text:x,block:h,x:ea(w+S/2),y:ea(s+(p-c)/2),fontSize:d}:void 0,accessibility:t.accessibility?{...t.accessibility}:void 0,plot:{x:ea(w),y:ea(L),size:ea(S)},regions:P,points:R,axisLabels:V,visual:a}}(u(L(function(e,t,i){let r;if(r)for(let t of e)r.push(r[r.length-1]+t.length+1);let n=F(e,ev(e));w(n);let l=n.familyLines;if(0===(e=o(l,ev(l))).length)throw Error("Quadrant chart is empty");let s=ef(e[0].trim()),d=a(s[0]??"");if(!/^quadrant(?:Chart)?\b\s*$/i.test(d))throw Error(`Quadrant chart must start with "quadrant" or "quadrantChart", got: "${d}"`);q("quadrant")&&S("quadrant","header",d,{line:1,unit:"normalized"});let c,u={...void 0!==n.accessibility.title?{title:I(n.accessibility.title)}:{},...void 0!==n.accessibility.descr?{description:I(n.accessibility.descr)}:{}},h,x,p=[void 0,void 0,void 0,void 0],m=[],y=Object.create(null),f=new Set;for(let t=0;t<e.length;t++)for(let i of(0===t&&(e[t].indexOf(s[0]),s[0].length),0===t?s.slice(1):ef(e[t].trim()))){let e,r=eh.test(i)?i:a(i);if(!(0===r.length||r.startsWith("%%"))){if(e=r.match(ey)){q("quadrant")&&S("quadrant","classDef",r,{line:t+1,unit:"normalized"});let i=function(e){let t=e.trim().match(/^([A-Za-z_][\w-]*)\s+(.+)$/);if(!t)return{ok:!1,error:`expected "classDef <name> <styles>", got "classDef ${e.trim()}"`};let i=t[1],a=ee(t[2],`quadrant classDef ${i}`);return a.ok?a.style?{ok:!0,name:i,style:a.style}:{ok:!1,error:`classDef ${i} has no style entries`}:{ok:!1,error:`classDef ${i}: ${a.error}`}}(e[1]);if(!i.ok)throw Error(`Invalid quadrant classDef: ${i.error}`);y[i.name]=i.style,q("quadrant")&&$("quadrant","setClassDef",{name:i.name,style:i.style},{line:t+1,unit:"normalized"});continue}if(e=r.match(eh)){q("quadrant")&&S("quadrant","title",r,{line:t+1,unit:"normalized"}),c=I(e[1].trim()),q("quadrant")&&$("quadrant","setTitle",c,{line:t+1,unit:"normalized"});continue}if(e=r.match(ex)){q("quadrant")&&S("quadrant","axis",r,{line:t+1,unit:"normalized"});let i=function(e,t,i){let a="x"===t?"left":"bottom",r=!1,n=-1,o=0;for(let t=0;t<e.length;t++){if('"'===e[t]&&(r=!r),r||"-"!==e[t])continue;let i=/^--+>/.exec(e.slice(t));if(i){n=t,o=i[0].length;break}}if(n>=0){let r=e$(e.slice(0,n).trim(),`${t}-axis text`,i),l=e.slice(n+o).trim();if(!r)throw Error(`Quadrant ${t}-axis is missing its ${a} label: "${e}"`);return l?{near:r,far:e$(l,`${t}-axis text`,i)}:{near:r+" ⟶ "}}let l=e$(e.trim(),`${t}-axis text`,i);if(!l)throw Error(`Quadrant ${t}-axis is missing its ${a} label`);return{near:l}}(e[2].trim(),e[1].toLowerCase(),void 0);"x"===e[1].toLowerCase()?h=i:x=i,q("quadrant")&&$("quadrant","setAxis",{axis:e[1].toLowerCase(),value:i},{line:t+1,unit:"normalized"});continue}if(e=r.match(ep)){q("quadrant")&&S("quadrant","quadrant",r,{line:t+1,unit:"normalized"});let i=Number.parseInt(e[1],10)-1;p[i]=e$(e[2].trim(),`quadrant-${e[1]} label`,void 0),q("quadrant")&&$("quadrant","setQuadrant",{quadrant:i+1,label:p[i]},{line:t+1,unit:"normalized"});continue}if(e=r.match(em)){q("quadrant")&&S("quadrant","point",r,{line:t+1,unit:"normalized"});let{label:i,className:a}=function(e){let t=e.match(et);return t?{label:e.slice(0,t.index).trim(),className:t[1]}:{label:e}}(e[1].trim()),n=e$(i,"point label",void 0),o=e[4].trim(),l=ee(o,`quadrant point ${n}`);if(!l.ok)throw Error(`Unsupported quadrant point style metadata: "${o}" \u2014 ${l.error}. Expected comma-separated radius/color/stroke-color/stroke-width entries.`);let s=ez(n,e[2].trim()),d=ez(n,e[3].trim());if(f.has(n))throw Error(`Duplicate quadrant point label: "${n}"`);f.add(n),q("quadrant")&&$("quadrant","addPointLabel",n,{line:t+1,unit:"normalized"});let c={label:n,x:s,y:d};q("quadrant")&&$("quadrant","createPoint",c,{line:t+1,unit:"normalized"}),void 0!==a&&(c.className=a,q("quadrant")&&$("quadrant","setPointClass",{label:n,className:a},{line:t+1,unit:"normalized"})),void 0!==l.style&&(c.style=l.style,q("quadrant")&&$("quadrant","setPointStyle",{label:n,style:l.style},{line:t+1,unit:"normalized"})),m.push(c),q("quadrant")&&$("quadrant","appendPoint",c,{line:t+1,unit:"normalized"});continue}throw r.includes(":")?(q("quadrant")&&S("quadrant","invalidPoint",r,{line:t+1,unit:"normalized"}),Error(`Invalid quadrant point: "${r}". Expected: Label: [x, y] with x,y in [0,1]`)):(q("quadrant")&&S("quadrant","unrecognized",r,{line:t+1,unit:"normalized"}),W({what:`Unrecognized quadrant chart line: "${r}"`,expectedForm:"a title, x-axis/y-axis, a quadrant-N label, a point (Label: [x, y]), or a classDef",example:"Quick win: [0.2, 0.8]"}))}}return{title:c,...u.title||u.description?{accessibility:u}:{},xAxis:h,yAxis:x,quadrants:p,points:m,classDefs:y}}(t.source.familyLines),t.source.accessibility),t.source.frontmatter),t.renderOptions,t.familyConfig?.visual??V(),t.styleFace)),projectPositioned:b(function({positioned:e,options:t}){let i={version:1,nodes:e.points.map((t,i)=>({id:`point#${i}:${t.label}`,x:y(t.cx-t.radius),y:y(t.cy-t.radius),w:y(2*t.radius),h:y(2*t.radius),shape:"circle",label:t.label,role:"labelled-mark",labelVisibility:t.labelHidden?"hidden":"visible",labelBounds:t.labelBox?{x:z(t.labelBox.x0),y:z(t.labelBox.y0),w:z(t.labelBox.x1-t.labelBox.x0),h:z(t.labelBox.y1-t.labelBox.y0)}:void 0,labelContainer:m(p(e)),dataPosition:{x:z(t.nx),y:z(t.ny)}})),edges:[],groups:e.regions.map(t=>({id:`quadrant#${t.number}`,x:y(t.x),y:y(t.y),w:y(t.width),h:y(t.height),members:e.points.map((e,t)=>({point:e,index:t})).filter(({point:e})=>t.number===(e.nx>=.5?e.ny>=.5?1:4:e.ny>=.5?2:3)).map(({point:e,index:t})=>`point#${t}:${e.label}`),label:t.label})),bounds:{w:y(e.width),h:y(e.height)}};return t.debug&&(i.certificates=f("quadrant",i,"plot-contained")),i}),lowerScene:g(eL)});export{eM as default};
|
|
10
|
+
`),r=t.x<k.x?{kind:"rotate",angle:-90,cx:t.x,cy:t.y}:void 0,n=t.block?.lineHeight??1.3*t.fontSize,o=t.y+(i.length-1)*n/2-.35*t.fontSize;x.push(e.text({id:`axis:${t.text}`,role:"axis",text:a,x:t.x,y:o,fontSize:t.fontSize,fontWeight:h.edgeLabelFontWeight,letterSpacing:h.edgeLetterSpacing,block:t.block,anchor:t.anchor,paint:{fill:h.edgeTextColor??"var(--_text-muted)"},transform:r,attributes:{className:"quadrant-axis-label"}}))}if(n.title){let t=n.title.text;x.push(e.text({id:"title",role:"title",text:t,x:n.title.x,y:n.title.y,fontSize:n.title.fontSize,fontWeight:Math.max(h.groupHeaderFontWeight,600),letterSpacing:h.groupLetterSpacing,block:n.title.block,anchor:"middle",dominantBaseline:"middle",paint:{fill:h.groupTextColor??h.nodeTextColor??"var(--_text)"},attributes:{className:"quadrant-title"}}))}return x.push(e.documentClose()),{family:"quadrant",width:n.width,height:n.height,colors:o,transparent:c,parts:x}}),eM=k(Y,{configDiagnostics:e=>c("quadrant",e,X),statementEnds:ev,normalizeRequest:e=>({familyConfig:{visual:J(e.source.frontmatter)}}),layout:t=>v(function(t,i={},a={},r){var n;let o=I(i,ei(a),r),l=a.quadrantPadding??24,s=a.quadrantPadding??24,d=a.titleFontSize??18,c=a.titlePadding??18,u=Math.max(o.groupHeaderFontWeight,600),h=t.title?E(t.title,{display:"formatted",transform:o.groupTextTransform,fontSize:d,fontWeight:u,letterSpacing:o.groupLetterSpacing}):void 0,x=h?.text,p=t.title?d+c:0,m=a.xAxisLabelFontSize??o.edgeLabelFontSize,y=a.yAxisLabelFontSize??o.edgeLabelFontSize,f=a.xAxisLabelPadding??4,b=a.yAxisLabelPadding??4,g=m+2*f+7,v=y+2*b+7,k=g,q=v,S=(n=t.points.length)<=8?380:Math.min(720,380+(n-8)*20),$,z;for(let e=0;e<2;e++){if(void 0!==a.chartWidth||void 0!==a.chartHeight){let e=2*l+q,t=2*s+p+k;S=Math.max(60,Math.min(void 0!==a.chartWidth?a.chartWidth-e:1/0,void 0!==a.chartHeight?a.chartHeight-t:1/0))}let e=Math.max(24,S/2-12);$=t.xAxis?{near:er(t.xAxis.near,e,m,o.edgeLabelFontWeight,o.edgeLetterSpacing,o.edgeTextTransform),...t.xAxis.far?{far:er(t.xAxis.far,e,m,o.edgeLabelFontWeight,o.edgeLetterSpacing,o.edgeTextTransform)}:{}}:void 0,z=t.yAxis?{near:er(t.yAxis.near,e,y,o.edgeLabelFontWeight,o.edgeLetterSpacing,o.edgeTextTransform),...t.yAxis.far?{far:er(t.yAxis.far,e,y,o.edgeLabelFontWeight,o.edgeLetterSpacing,o.edgeTextTransform)}:{}}:void 0,t.title&&(x=(h=E(t.title,{display:"formatted",transform:o.groupTextTransform,fontSize:d,fontWeight:u,letterSpacing:o.groupLetterSpacing,maxWidth:S})).text,p=h.height-(h.lineHeight-h.fontSize)+c);let i=Math.max(m*O,...[$?.near,$?.far].map(e=>e?.height??0)),r=Math.max(y*O,...[z?.near,z?.far].map(e=>e?.height??0));k=g+i-m*O,q=v+r-y*O}let w=l+q,L=s+p,M=S/2,W=w+S+l,F=L+S+k+s,P=[{number:2,col:0,row:0},{number:1,col:1,row:0},{number:3,col:0,row:1},{number:4,col:1,row:1}].map(({number:e,col:i,row:a})=>{let r=w+i*M,n=L+a*M;return{number:e,label:t.quadrants[e-1],labelBlock:void 0===t.quadrants[e-1]?void 0:E(t.quadrants[e-1],{display:"formatted",transform:o.groupTextTransform,fontSize:o.groupHeaderFontSize,fontWeight:o.groupHeaderFontWeight,letterSpacing:o.groupLetterSpacing}),x:ea(r),y:ea(n),width:ea(M),height:ea(M),labelX:ea(r+M/2),labelY:ea(n+M/2)}}),_=o.nodeLabelFontSize,C=o.nodeLabelFontWeight,A=a.pointTextPadding??4,B=P.filter(e=>e.label).map(e=>{let t=e.labelBlock.width;return{x0:e.labelX-t/2,y0:e.labelY-e.labelBlock.height/2,x1:e.labelX+t/2,y1:e.labelY+e.labelBlock.height/2}}),N=a.pointRadius??6,T=t.points.map(e=>{var i,a;let r,n,o,l,s;return i=t.classDefs,a={radius:N},r=e.className&&i&&Object.hasOwn(i,e.className)?i[e.className]:void 0,n={radius:e.style?.radius??r?.radius??a.radius},o=e.style?.color??r?.color,l=e.style?.strokeColor??r?.strokeColor,s=e.style?.strokeWidth??r?.strokeWidth,void 0!==o&&(n.fill=o),void 0!==l&&(n.stroke=l),void 0!==s&&(n.strokeWidth=s),n}),j=t.points.map((e,t)=>{let i=w+e.x*S,a=L+(1-e.y)*S,r=T[t].radius+1;return{x0:i-r,y0:a-r,x1:i+r,y1:a+r}}),H={x0:2,y0:2,x1:W-2,y1:F-2},D=[],Q=t.points.length>=128,Y=Q?new en:void 0,X=Q?new en:void 0,R=Q?new en:void 0;if(Y&&X){for(let e of B)Y.add(e,e);for(let e of j)X.add(e,e)}let V=t.points.map((t,i)=>{let a=T[i],r=ea(w+t.x*S),n=ea(L+(1-t.y)*S),l=E(t.label,{display:"formatted",transform:o.nodeTextTransform,fontSize:_,fontWeight:C,letterSpacing:o.nodeLetterSpacing}),s=l.text,d=l.width,c=l.height,u=a.radius+A,h=e=>{let t=e.box;if(!(t.x0>=H.x0&&t.y0>=H.y0&&t.x1<=H.x1&&t.y1<=H.y1)||(Y?Y.some(t,e=>eo(t,e)):B.some(e=>eo(t,e)))||(X?X.some(t,e=>eo(t,e)):j.some(e=>eo(t,e))))return!1;if(!e.far)return!0;let i=es(r,n,a.radius,e);if(!Y||!R)return!B.some(e=>eu(i,e))&&!D.some(e=>ec(i,e));let o={x0:Math.min(i.x1,i.x2),y0:Math.min(i.y1,i.y2),x1:Math.max(i.x1,i.x2),y1:Math.max(i.y1,i.y2)},l={x0:o.x0-2,y0:o.y0-2,x1:o.x1+2,y1:o.y1+2},s={x0:o.x0-3,y0:o.y0-3,x1:o.x1+3,y1:o.y1+3};return!Y.some(l,e=>eu(i,e))&&!R.some(s,e=>ec(i,e))},x,p;for(let e of function*(e,t,i,a,r){yield{x:e+i,y:t,anchor:"start",far:!1,box:{x0:e+i,y0:t-r/2,x1:e+i+a,y1:t+r/2}},yield{x:e-i,y:t,anchor:"end",far:!1,box:{x0:e-i-a,y0:t-r/2,x1:e-i,y1:t+r/2}},yield{x:e,y:t+i+r/2,anchor:"middle",far:!1,box:{x0:e-a/2,y0:t+i,x1:e+a/2,y1:t+i+r}},yield{x:e,y:t-i-r/2,anchor:"middle",far:!1,box:{x0:e-a/2,y0:t-i-r,x1:e+a/2,y1:t-i}};for(let n=1;n<=10;n++){let o=i+n*(r+6);for(let{cos:i,sin:n,anchor:l}of el){let s=e+i*o,d=t+n*o,c="start"===l?s:"end"===l?s-a:s-a/2;yield{x:s,y:d,anchor:l,far:!0,box:{x0:c,y0:d-r/2,x1:c+a,y1:d+r/2}}}}}(r,n,u,d,c))if(x??=e,h(e)){p=e;break}let m={label:s,labelBlock:l,nx:t.x,ny:t.y,cx:r,cy:n,radius:a.radius,labelX:ea((p??x).x),labelY:ea((p??x).y),labelAnchor:(p??x).anchor};if(m.tooltip=e(r,n-a.radius,`${s}: [${t.x}, ${t.y}]`),void 0!==a.fill&&(m.fill=a.fill),void 0!==a.stroke&&(m.stroke=a.stroke),void 0!==a.strokeWidth&&(m.strokeWidth=a.strokeWidth),void 0!==t.className&&(m.className=t.className),p){if(B.push(p.box),Y?.add(p.box,p.box),m.labelBox={x0:ea(p.box.x0),y0:ea(p.box.y0),x1:ea(p.box.x1),y1:ea(p.box.y1)},p.far){m.leader=es(r,n,a.radius,p),D.push(m.leader);let e=m.leader;R?.add({x0:Math.min(e.x1,e.x2),y0:Math.min(e.y1,e.y2),x1:Math.max(e.x1,e.x2),y1:Math.max(e.y1,e.y2)},e)}}else m.labelHidden=!0;return m}),J=[],U=e=>L+S+Math.max(m,e.lineHeight/2)+f;if($&&(J.push({text:$.near.text,block:$.near,x:ea(w+4),y:ea(U($.near)),anchor:"start",fontSize:m}),$.far&&J.push({text:$.far.text,block:$.far,x:ea(w+S-4),y:ea(U($.far)),anchor:"end",fontSize:m})),z){let e=e=>l+Math.max(y,e.lineHeight/2);J.push({text:z.near.text,block:z.near,x:ea(e(z.near)),y:ea(L+S-4),anchor:"start",fontSize:y}),z.far&&J.push({text:z.far.text,block:z.far,x:ea(e(z.far)),y:ea(L+4),anchor:"end",fontSize:y})}return{width:ea(W),height:ea(F),title:void 0!==x?{text:x,block:h,x:ea(w+S/2),y:ea(s+(p-c)/2),fontSize:d}:void 0,accessibility:t.accessibility?{...t.accessibility}:void 0,plot:{x:ea(w),y:ea(L),size:ea(S)},regions:P,points:V,axisLabels:J,visual:a}}(u(L(function(e,t,i){let r;if(r)for(let t of e)r.push(r[r.length-1]+t.length+1);let n=F(e,ev(e));w(n);let l=n.familyLines;if(0===(e=o(l,ev(l))).length)throw Error("Quadrant chart is empty");let s=ef(e[0].trim()),d=a(s[0]??"");if(!/^quadrant(?:Chart)?\b\s*$/i.test(d))throw Error(`Quadrant chart must start with "quadrant" or "quadrantChart", got: "${d}"`);q("quadrant")&&S("quadrant","header",d,{line:1,unit:"normalized"});let c,u={...void 0!==n.accessibility.title?{title:T(n.accessibility.title)}:{},...void 0!==n.accessibility.descr?{description:T(n.accessibility.descr)}:{}},h,x,p=[void 0,void 0,void 0,void 0],m=[],y=Object.create(null),f=new Set;for(let t=0;t<e.length;t++)for(let i of(0===t&&(e[t].indexOf(s[0]),s[0].length),0===t?s.slice(1):ef(e[t].trim()))){let e,r=eh.test(i)?i:a(i);if(!(0===r.length||r.startsWith("%%"))){if(e=r.match(ey)){q("quadrant")&&S("quadrant","classDef",r,{line:t+1,unit:"normalized"});let i=function(e){let t=e.trim().match(/^([A-Za-z_][\w-]*)\s+(.+)$/);if(!t)return{ok:!1,error:`expected "classDef <name> <styles>", got "classDef ${e.trim()}"`};let i=t[1],a=ee(t[2],`quadrant classDef ${i}`);return a.ok?a.style?{ok:!0,name:i,style:a.style}:{ok:!1,error:`classDef ${i} has no style entries`}:{ok:!1,error:`classDef ${i}: ${a.error}`}}(e[1]);if(!i.ok)throw Error(`Invalid quadrant classDef: ${i.error}`);y[i.name]=i.style,q("quadrant")&&$("quadrant","setClassDef",{name:i.name,style:i.style},{line:t+1,unit:"normalized"});continue}if(e=r.match(eh)){q("quadrant")&&S("quadrant","title",r,{line:t+1,unit:"normalized"}),c=T(e[1].trim()),q("quadrant")&&$("quadrant","setTitle",c,{line:t+1,unit:"normalized"});continue}if(e=r.match(ex)){q("quadrant")&&S("quadrant","axis",r,{line:t+1,unit:"normalized"});let i=function(e,t,i){let a="x"===t?"left":"bottom",r=!1,n=-1,o=0;for(let t=0;t<e.length;t++){if('"'===e[t]&&(r=!r),r||"-"!==e[t])continue;let i=/^--+>/.exec(e.slice(t));if(i){n=t,o=i[0].length;break}}if(n>=0){let r=e$(e.slice(0,n).trim(),`${t}-axis text`,i),l=e.slice(n+o).trim();if(!r)throw Error(`Quadrant ${t}-axis is missing its ${a} label: "${e}"`);return l?{near:r,far:e$(l,`${t}-axis text`,i)}:{near:r+" ⟶ "}}let l=e$(e.trim(),`${t}-axis text`,i);if(!l)throw Error(`Quadrant ${t}-axis is missing its ${a} label`);return{near:l}}(e[2].trim(),e[1].toLowerCase(),void 0);"x"===e[1].toLowerCase()?h=i:x=i,q("quadrant")&&$("quadrant","setAxis",{axis:e[1].toLowerCase(),value:i},{line:t+1,unit:"normalized"});continue}if(e=r.match(ep)){q("quadrant")&&S("quadrant","quadrant",r,{line:t+1,unit:"normalized"});let i=Number.parseInt(e[1],10)-1;p[i]=e$(e[2].trim(),`quadrant-${e[1]} label`,void 0),q("quadrant")&&$("quadrant","setQuadrant",{quadrant:i+1,label:p[i]},{line:t+1,unit:"normalized"});continue}if(e=r.match(em)){q("quadrant")&&S("quadrant","point",r,{line:t+1,unit:"normalized"});let{label:i,className:a}=function(e){let t=e.match(et);return t?{label:e.slice(0,t.index).trim(),className:t[1]}:{label:e}}(e[1].trim()),n=e$(i,"point label",void 0),o=e[4].trim(),l=ee(o,`quadrant point ${n}`);if(!l.ok)throw Error(`Unsupported quadrant point style metadata: "${o}" \u2014 ${l.error}. Expected comma-separated radius/color/stroke-color/stroke-width entries.`);let s=ez(n,e[2].trim()),d=ez(n,e[3].trim());if(f.has(n))throw Error(`Duplicate quadrant point label: "${n}"`);f.add(n),q("quadrant")&&$("quadrant","addPointLabel",n,{line:t+1,unit:"normalized"});let c={label:n,x:s,y:d};q("quadrant")&&$("quadrant","createPoint",c,{line:t+1,unit:"normalized"}),void 0!==a&&(c.className=a,q("quadrant")&&$("quadrant","setPointClass",{label:n,className:a},{line:t+1,unit:"normalized"})),void 0!==l.style&&(c.style=l.style,q("quadrant")&&$("quadrant","setPointStyle",{label:n,style:l.style},{line:t+1,unit:"normalized"})),m.push(c),q("quadrant")&&$("quadrant","appendPoint",c,{line:t+1,unit:"normalized"});continue}throw r.includes(":")?(q("quadrant")&&S("quadrant","invalidPoint",r,{line:t+1,unit:"normalized"}),Error(`Invalid quadrant point: "${r}". Expected: Label: [x, y] with x,y in [0,1]`)):(q("quadrant")&&S("quadrant","unrecognized",r,{line:t+1,unit:"normalized"}),W({what:`Unrecognized quadrant chart line: "${r}"`,expectedForm:"a title, x-axis/y-axis, a quadrant-N label, a point (Label: [x, y]), or a classDef",example:"Quick win: [0.2, 0.8]"}))}}return{title:c,...u.title||u.description?{accessibility:u}:{},xAxis:h,yAxis:x,quadrants:p,points:m,classDefs:y}}(t.source.familyLines),t.source.accessibility),t.source.frontmatter),t.renderOptions,t.familyConfig?.visual??J(),t.styleFace)),projectPositioned:b(function({positioned:e,options:t}){let i={version:1,nodes:e.points.map((t,i)=>({id:`point#${i}:${t.label}`,x:y(t.cx-t.radius),y:y(t.cy-t.radius),w:y(2*t.radius),h:y(2*t.radius),shape:"circle",label:t.label,role:"labelled-mark",labelVisibility:t.labelHidden?"hidden":"visible",labelBounds:t.labelBox?{x:z(t.labelBox.x0),y:z(t.labelBox.y0),w:z(t.labelBox.x1-t.labelBox.x0),h:z(t.labelBox.y1-t.labelBox.y0)}:void 0,labelContainer:m(p(e)),dataPosition:{x:z(t.nx),y:z(t.ny)}})),edges:[],groups:e.regions.map(t=>({id:`quadrant#${t.number}`,x:y(t.x),y:y(t.y),w:y(t.width),h:y(t.height),members:e.points.map((e,t)=>({point:e,index:t})).filter(({point:e})=>t.number===(e.nx>=.5?e.ny>=.5?1:4:e.ny>=.5?2:3)).map(({point:e,index:t})=>`point#${t}:${e.label}`),label:t.label})),bounds:{w:y(e.width),h:y(e.height)}};return t.debug&&(i.certificates=f("quadrant",i,"plot-contained")),i}),lowerScene:g(eL)});export{eM as default};
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import{a as e}from"./chunk-
|
|
1
|
+
import{a as e}from"./chunk-TLFX3U6S.js";import{a as t,b as i}from"./chunk-2JQXRKBC.js";import"./chunk-64JFHCJC.js";import{b as a,c as r,f as l}from"./chunk-D6MQ7QSU.js";import{e as o,l as n,m as s,n as c}from"./chunk-XHU3A432.js";import{b as d,d as h}from"./chunk-5LKPDHPC.js";import{y as u,z as m}from"./chunk-V6I2VGNQ.js";import"./chunk-7UFOFWBA.js";import{a as p,c as f}from"./chunk-VRZKI33U.js";import{D as g,a as x,b as b,c as y,d as v,e as k,g as w,i as S}from"./chunk-QVSZOF5M.js";import{A as $,c as F,s as z,x as W,y as L}from"./chunk-G4JBA7HU.js";import{b as M,c as C,i as E,j as R,k as _,q as O}from"./chunk-3JTYTXA6.js";import{c as T,h as j}from"./chunk-YVNJDVQO.js";import{Da as I,H as N,M as B,Vb as V,_ as A,ba as P,o as X,pb as Y}from"./chunk-EIYLJ4FI.js";import{G as G}from"./chunk-PJJSDGLB.js";import"./chunk-YHMTSXIR.js";import"./chunk-QCU5G5PZ.js";var D=Object.freeze({id:"radar",upstreamId:"radar",maturity:"experimental",label:"Radar",headers:["radar-beta"],aliases:[],config:{section:"radar",keys:["width","height","marginTop","marginRight","marginBottom","marginLeft","axisScaleFactor","axisLabelFactor","curveTension","useMaxWidth","tickLabels","useWidth"],noopKeys:["useWidth"]},identity:{id:"family:radar",kind:"family",version:"1.0.0",compatibility:{core:"0.5.4"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["category"],semanticRoles:["prelude","chrome","grid","pie-slice","point","axis","legend","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:"grid",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"pie-slice",primitive:"shape",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:"axis",primitive:"text",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:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`radar-beta
|
|
2
2
|
title Skills
|
|
3
3
|
axis speed["Speed"], power["Power"], range["Range"]
|
|
4
4
|
curve now["Current"]{4, 3, 5}
|
|
5
5
|
curve goal["Target"]{5, 5, 4}
|
|
6
|
-
max 5`,detect:
|
|
7
|
-
`:"r"===l?"\r":"t"===l?" ":"b"===l?"\b":"f"===l?"\f":l}return a}var em=["showLegend","graticule","accTitle","accDescr","title","ticks","curve","axis","max","min"];function ep(e,t){for(let i of em){if(e.slice(t,t+i.length).toLowerCase()!==i.toLowerCase())continue;let a=e[t+i.length];if(void 0===a||/[\s:]/.test(a))return i}}function ef(e,t){let i=e.trim();if(i.startsWith("-")||i.startsWith("+"))throw Error(`Radar ${t} "${i}" has a sign \u2014 radar numbers must be non-negative (the grammar has no sign token).`);if(!er.test(i))throw Error(`Radar ${t} "${i}" is not a valid number.`);let a=Number.parseFloat(i);if(!Number.isFinite(a))throw Error(`Radar ${t} "${i}" is not finite.`);return a}function eg(e={}){return{nodeLabelFontSize:e.legendFontSize??13,edgeLabelFontSize:e.axisLabelFontSize??12.5,groupHeaderFontSize:e.titleFontSize??18,nodeLabelFontWeight:500,edgeLabelFontWeight:500,groupHeaderFontWeight:600,nodePaddingX:0,nodePaddingY:0,nodeLineWidth:e.curveStrokeWidth??2.2,edgeLineWidth:e.axisStrokeWidth??1,groupCornerRadius:0,groupPaddingX:0,groupPaddingY:0,groupLineWidth:
|
|
8
|
-
`)));for(let t=0;t<r.rings.length;t++){let i=r.rings[t];h.push(e.shape({id:`ring:${t}`,role:"grid",geometry:r.polygonGraticule?{kind:"polygon",points:i.points}:{kind:"circle",cx:r.cx,cy:r.cy,r:i.r},paint:{fill:"none",stroke:f,strokeOpacity:String(b),strokeWidth:String(i.emphasized?eS(1.4*x):x)},attributes:{className:`radar-ring${i.emphasized?" radar-ring-outer":""}`}}))}for(let[t,i]of r.axes.entries()){let a=$[t];h.push(e.shape({id:`spoke:${a}`,role:"grid",geometry:{kind:"line",x1:r.cx,y1:r.cy,x2:i.x,y2:i.y},paint:{stroke:p,strokeWidth:String(g)},attributes:{className:"radar-axis-line"}}))}let
|
|
9
|
-
`),x:i.labelX,y:i.labelY,fontSize:r.typography.axisFontSize,block:i.block,fontWeight:r.typography.axisFontWeight,letterSpacing:d.edgeLetterSpacing,display:"literal",anchor:i.anchor,dominantBaseline:"middle",baselineShift:0,paint:{fill:k},attributes:{className:"radar-axis-label",ariaLabel:i.label}}))}for(let t of r.legend){let i={category:t.label},a=
|
|
10
|
-
`),x:t.textX,y:t.textY,fontSize:r.typography.legendFontSize,fontWeight:r.typography.legendFontWeight,letterSpacing:d.nodeLetterSpacing,block:t.block,display:"literal",anchor:"start",dominantBaseline:"middle",baselineShift:0,paint:{fill:a?.textColor??d.nodeTextColor??"var(--_text)"},attributes:{className:"radar-legend-text"}}))}return r.title&&h.push(e.text({id:"title",role:"title",text:r.title.text,x:r.title.x,y:r.title.y,fontSize:r.title.fontSize,fontWeight:r.typography.titleFontWeight,letterSpacing:d.groupLetterSpacing,block:r.title.block,display:"literal",anchor:"middle",dominantBaseline:"middle",baselineShift:0,paint:{fill:y},attributes:{className:"radar-title"}})),h.push(e.documentClose()),{family:"radar",width:r.width,height:r.height,colors:l,transparent:c,parts:h}}),
|
|
6
|
+
max 5`,detect:G,detectLoose:G}),H=["axisColor","axisStrokeWidth","axisLabelFontSize","curveOpacity","curveStrokeWidth","graticuleColor","graticuleStrokeWidth","graticuleOpacity","legendBoxSize","legendFontSize"],J=["width","height","axisScaleFactor"],U=Object.freeze({dimension:4096,margin:4096,factor:8,axisLabelFactorMin:1.1,fontSize:256,lineWidth:64,legendBoxSize:512}),q=["marginTop","marginRight","marginBottom","marginLeft"];function Q(e={}){let t=u(e,["radar"])??{},i={};for(let e of J){let a=m(t,[e]),r="width"===e||"height"===e?U.dimension:U.factor;"number"==typeof a&&Number.isFinite(a)&&a>0&&a<=r&&(i[e]=a)}let a=m(t,["axisLabelFactor"]);for(let e of("number"==typeof a&&Number.isFinite(a)&&a>=U.axisLabelFactorMin&&a<=U.factor&&(i.axisLabelFactor=a),q)){let a=m(t,[e]);"number"==typeof a&&Number.isFinite(a)&&a>=0&&a<=U.margin&&(i[e]=a)}let r=m(t,["curveTension"]);"number"==typeof r&&Number.isFinite(r)&&r>=0&&r<=1&&(i.curveTension=r);let l=m(t,["useMaxWidth"]);"boolean"==typeof l&&(i.useMaxWidth=l);let o=m(t,["tickLabels"]);"boolean"==typeof o&&(i.tickLabels=o);let n=u(e,["themeVariables","radar"])??{};for(let e of["axisStrokeWidth","axisLabelFontSize","curveStrokeWidth","graticuleStrokeWidth","legendBoxSize","legendFontSize"]){let t=m(n,[e]),a="legendBoxSize"===e?U.legendBoxSize:e.endsWith("FontSize")?U.fontSize:U.lineWidth;"number"==typeof t&&Number.isFinite(t)&&t>0&&t<=a&&(i[e]=t)}for(let e of["curveOpacity","graticuleOpacity"]){let t=m(n,[e]);"number"==typeof t&&Number.isFinite(t)&&t>=0&&t<=1&&(i[e]=t)}for(let e of["axisColor","graticuleColor"]){let t=C(m(n,[e]),"graticuleColor"===e);t&&(i[e]=t)}let s=C(m(e,["themeVariables","titleColor"]));s&&(i.titleColor=s);let c=m(e,["themeVariables","fontSize"]),d="number"==typeof c?c:"string"==typeof c&&/^\d+(?:\.\d+)?(?:px)?$/i.test(c.trim())?Number.parseFloat(c):NaN;Number.isFinite(d)&&d>0&&d<=U.fontSize&&(i.titleFontSize=d);let h=[],p=!1;for(let t=0;t<12;t++){let i=C(m(e,["themeVariables",`cScale${t}`]));i&&(h[t]=i,p=!0)}return p&&(i.paletteOverrides=Array.from(h,e=>e??null)),i}var Z={width:s(U.dimension),height:s(U.dimension),marginTop:c(U.margin),marginRight:c(U.margin),marginBottom:c(U.margin),marginLeft:c(U.margin),axisScaleFactor:s(U.factor),axisLabelFactor:n(U.axisLabelFactorMin,U.factor),curveTension:n(0,1),useMaxWidth:o,tickLabels:o},K=/^radar-beta(?:[\t ]*:)?(?=$|\s)/i,ee=/^title(?:[\t ]+(.*))?$/i,et=/^axis\s+([\s\S]+)$/i,ei=/^curve\s+([\s\S]+)$/i,ea=/^(showLegend|ticks|max|min|graticule)\b(.*)$/i,er=/^(?:0|[1-9]\d*|\d+\.\d+|0\.\d+)$/,el=String.raw`[\w](?:[\w-]*[\w])?`,eo=String.raw`(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')`,en=new RegExp(String.raw`^(${el})\s*(?:\[\s*(${eo})\s*\])?$`),es=new RegExp(String.raw`^(${el})\s*(?:\[\s*(${eo})\s*\])?\s*\{([\s\S]*)\}$`),ec=new RegExp(String.raw`^(${el})(?:\s*:\s*|\s+)(.+)$`),ed={spanning:"\"'",wholeLine:e=>/^(?:title|accTitle|accDescr)(?=[\s:{]|$)/i.test(e)};function eh(e,t){let i=[],a=0,r=0,l=null,o=!1,n="";for(let t of e){if(o){n+=t,o=!1;continue}if(l&&"\\"===t){n+=t,o=!0;continue}if('"'===t||"'"===t){l===t?l=null:null===l&&(l=t),n+=t;continue}l||("["===t?a++:"]"===t?a--:"{"===t?r++:"}"===t&&r--),","!==t||l||0!==a||0!==r?n+=t:(i.push(n.trim()),n="")}if(i.push(n.trim()),l||0!==a||0!==r)throw Error(`Radar ${t} has unbalanced quotes or delimiters.`);if(i.some(e=>0===e.length))throw Error(`Radar ${t} contains an empty comma-separated entry.`);return i}function eu(e,t){let i=e[0];if('"'!==i&&"'"!==i||e.at(-1)!==i)throw Error(`Radar ${t} must use a quoted label.`);let a="";for(let i=1;i<e.length-1;i++){let r=e[i];if("\\"!==r){a+=r;continue}if(++i>=e.length-1)throw Error(`Radar ${t} has an incomplete escape.`);let l=e[i];a+="n"===l?`
|
|
7
|
+
`:"r"===l?"\r":"t"===l?" ":"b"===l?"\b":"f"===l?"\f":l}return a}var em=["showLegend","graticule","accTitle","accDescr","title","ticks","curve","axis","max","min"];function ep(e,t){for(let i of em){if(e.slice(t,t+i.length).toLowerCase()!==i.toLowerCase())continue;let a=e[t+i.length];if(void 0===a||/[\s:]/.test(a))return i}}function ef(e,t){let i=e.trim();if(i.startsWith("-")||i.startsWith("+"))throw Error(`Radar ${t} "${i}" has a sign \u2014 radar numbers must be non-negative (the grammar has no sign token).`);if(!er.test(i))throw Error(`Radar ${t} "${i}" is not a valid number.`);let a=Number.parseFloat(i);if(!Number.isFinite(a))throw Error(`Radar ${t} "${i}" is not finite.`);return a}function eg(e={}){return{nodeLabelFontSize:e.legendFontSize??13,edgeLabelFontSize:e.axisLabelFontSize??12.5,groupHeaderFontSize:e.titleFontSize??18,nodeLabelFontWeight:500,edgeLabelFontWeight:500,groupHeaderFontWeight:600,nodePaddingX:0,nodePaddingY:0,nodeLineWidth:e.curveStrokeWidth??2.2,edgeLineWidth:e.axisStrokeWidth??1,groupCornerRadius:0,groupPaddingX:0,groupPaddingY:0,groupLineWidth:T.outerBox}}function ex(e){return Math.round(100*e)/100}function eb(e,t){return 2*Math.PI*e/t}function ey(e,t,i,a){return{x:e+i*Math.sin(a),y:t-i*Math.cos(a)}}function ev(e,t,i=0){return e.left<t.right+i&&t.left<e.right+i&&e.top<t.bottom+i&&t.top<e.bottom+i}function ek(e,i,a,r,l){let o=j(i,eg(a),r),n=e.axes.length;if(n>256)throw Error("Radar charts support at most 256 axes.");let s=120;(void 0!==a.width||void 0!==a.height)&&(s=Math.min(Math.max(Math.min(a.width??a.height??240,a.height??a.width??240)/2-56,40),400)),l?.radius!==void 0&&(s=l.radius);let c=a.axisScaleFactor??1,d=a.axisLabelFactor??1.05,h=a.curveTension??.17,u="circle"===e.graticule&&h>0,m=function(e){if(!Number.isFinite(e.min)||e.min<0)throw Error(`Radar min must be a finite non-negative number, got ${e.min}.`);if(void 0!==e.max&&(!Number.isFinite(e.max)||e.max<0))throw Error(`Radar max must be a finite non-negative number, got ${e.max}.`);let t=!1,i=1;for(let a of e.curves)for(let e of a.values){if(!Number.isFinite(e)||e<0)throw Error(`Radar curve "${a.id}" contains a non-finite or negative value.`);(!t||e>i)&&(i=e),t=!0}let a=e.max??(t?i:1);if(!(a>e.min))throw Error(`Radar scale is degenerate: max (${a}) must be greater than min (${e.min}). Set an explicit \`max\`, or ensure curve values span a range.`);return{min:e.min,max:a}}(e),{min:p,max:f}=m,g=e=>s*((Math.min(Math.max(e,m.min),m.max)-m.min)/(m.max-m.min)),x=o.edgeLabelFontSize,b=o.edgeLabelFontWeight,y=o.groupHeaderFontSize,v=Math.max(o.groupHeaderFontWeight,600),k=Math.max(58,Math.min(96,1.05*s)),w=t=>e.axes.map(e=>A(e.label,{display:"literal",transform:o.edgeTextTransform,fontSize:x,fontWeight:b,letterSpacing:o.edgeLetterSpacing,maxWidth:t})),S=96,$=w(96);for(let e=0;e<8&&Math.max(0,...$.map(e=>e.width))>k&&S>58;e++)$=w(S=Math.max(58,S-12));let F=$.map(e=>e.lines),z=$.map(e=>e.width),W=$.map(e=>e.height),L=Array(n).fill(0);for(let t of e.curves)t.values.length===n&&t.values.forEach((e,t)=>{L[t]=Math.max(L[t],g(e))});let M=1.05*s+8,C=void 0===a.axisLabelFactor?0:s*(d-1.05),E=e.axes.map((e,t)=>{let i=Math.sin(eb(t,n));return i>.3?"start":i<-.3?"end":"middle"}),R=Math.max(s,s*c,...L)+3+7,_=Array(n).fill(0).map((e,t)=>Math.max(0,R+W[t]/2-M)+C),O=Array(n).fill(!1),T=e=>{let t=eb(e,n),i=M+_[e],a=i*Math.sin(t),r=-i*Math.cos(t),l=z[e],o="start"===E[e]?a:"end"===E[e]?a-l:a-l/2;return{left:o,right:o+l,top:r-W[e]/2,bottom:r+W[e]/2,rx:a,ry:r}},I=[];for(let e=0;e<n;e++){let t=_[e],i=()=>I.some(t=>ev(T(e),T(t),2));if(i()){O[e]=!0;let a=6,r=!1;for(let l=0;l<48;l++){if(_[e]=t+a,!i()){r=!0;break}a*=2}if(!r)throw Error("Radar axis labels could not be placed within finite layout bounds.")}I.push(e)}let N=a.marginLeft??22,B=a.marginRight??22,V=a.marginTop??22,X=a.marginBottom??22,Y=s*Math.max(1,c),G=Y,D=Y,H=Y,J=Y;for(let e=0;e<n;e++){let t=T(e);G=Math.max(G,-t.left),D=Math.max(D,t.right),H=Math.max(H,-t.top),J=Math.max(J,t.bottom)}if(a.width){let e=a.width/2;G=Math.max(G,e),D=Math.max(D,e)}if(a.height){let e=a.height/2;H=Math.max(H,e),J=Math.max(J,e)}let U=l?Math.max(l.maxWidth,N+G+D+B):void 0,q=o.nodeLabelFontSize,Q=o.nodeLabelFontWeight,Z=e.showLegend&&e.curves.length>0,K=a.legendBoxSize??14,ee=12.923076923076923*q,et=void 0===U?0:U-N-B-K-8,ei=et>0?et:ee,ea=(Z?e.curves.map(e=>{let t=A(e.label,{display:"literal",transform:o.nodeTextTransform,fontSize:q,fontWeight:Q,letterSpacing:o.nodeLetterSpacing,maxWidth:ei});return l&&t.width>ei+.01?A(t.prepared,{...t,maxWidth:ee}):t}):[]).map(e=>({block:e})),er={gap:9,minRowHeight:K,leadingWidth:K+8,columnGap:16,...void 0===U?{}:{maxWidth:U-N-B}},el=P(ea,er),eo=Z?el.width:0,en=el.height;Z&&!l&&(H=Math.max(H,en/2),J=Math.max(J,en/2));let es=e.title?A(e.title,{display:"literal",transform:o.groupTextTransform,fontSize:y,fontWeight:v,letterSpacing:o.groupLetterSpacing,...void 0===U?{}:{maxWidth:Math.max(1,U-N-B)}}):void 0;es&&void 0!==U&&es.width>U-N-B+.01&&(es=A(es.prepared,es));let ec=es?es.height:0,ed=es?ec+16:0,eh=N+G+D+(Z&&!l?30+eo:0)+B,eu=l&&Z?Math.max(eh,N+eo+B):eh,em=N+G+(eu-eh)/2,ep=es?.width??0,ef=Math.max(0,ep/2-em),ek=Math.max(0,em+ep/2-eu),ew=eu+ef+ek,eS=V+ed+H+J+X+(l&&Z?30+en:0),e$=em+ef,eF=V+ed+H,ez=[];for(let t=1;n>0&&t<=e.ticks;t++){let i=s*t/e.ticks,a=t===e.ticks?f:p+(f-p)*(t/e.ticks),r="polygon"===e.graticule?e.axes.map((e,t)=>{let a=ey(e$,eF,i,eb(t,n));return{x:ex(a.x),y:ex(a.y)}}):[];ez.push({r:ex(i),value:a,points:r,emphasized:t===e.ticks})}let eW=e.axes.map((e,t)=>{let i,a,r=eb(t,n),l=ey(e$,eF,s*c,r),o=M+_[t],d=ey(e$,eF,o,r),h=O[t]||_[t]>9?(i=ey(e$,eF,Math.max(s,s*c)+1,r),a=ey(e$,eF,o-W[t]/2-2,r),{x1:ex(i.x),y1:ex(i.y),x2:ex(a.x),y2:ex(a.y)}):void 0;return{id:e.id,label:e.label,block:$[t],x:ex(l.x),y:ex(l.y),labelX:ex(d.x),labelY:ex(d.y),anchor:E[t],lines:F[t],labelWidth:ex(z[t]),leader:h}}),eL=e.curves.map((e,t)=>{let i=e.values.length===n,a=i?e.values.map((e,t)=>{let i=ey(e$,eF,g(e),eb(t,n));return{x:ex(i.x),y:ex(i.y)}}):[];return{id:e.id,label:e.label,colorIndex:t,areaPath:i?function(e,t,i){if(0===e.length)return"";if(!t||e.length<3)return"M "+e.map(e=>`${ex(e.x)} ${ex(e.y)}`).join(" L ")+" Z";let a=e.length,r=`M ${ex(e[0].x)} ${ex(e[0].y)}`;for(let t=0;t<a;t++){let l=e[(t-1+a)%a],o=e[t],n=e[(t+1)%a],s=e[(t+2)%a],c=o.x+(n.x-l.x)*i,d=o.y+(n.y-l.y)*i,h=n.x-(s.x-o.x)*i,u=n.y-(s.y-o.y)*i;r+=` C ${ex(c)} ${ex(d)} ${ex(h)} ${ex(u)} ${ex(n.x)} ${ex(n.y)}`}return r+" Z"}(a,u,h):"",vertices:a,arityMismatch:!i}}),eM=[];if(a.tickLabels&&n>0){let e=eb(0,n)+Math.PI/n;for(let i of[...ez].reverse()){let a=ey(e$,eF,i.r,e),r=t(i.value),l=A(r,{display:"literal",fontSize:9.5,fontWeight:b,letterSpacing:o.edgeLetterSpacing}),n=l.width+8,s={text:r,block:l,x:ex(a.x),y:ex(a.y),w:ex(n),h:ex(15.5)},c={left:s.x-s.w/2,right:s.x+s.w/2,top:s.y-s.h/2,bottom:s.y+s.h/2};eM.some(e=>ev(c,{left:e.x-e.w/2,right:e.x+e.w/2,top:e.y-e.h/2,bottom:e.y+e.h/2},1))||eM.unshift(s)}}let eC=[];if(Z){let t=l?(ew-eo)/2:ef+N+G+D+30,i=l?eF+J+30:eF-en/2,a=P(ea,{...er,top:i});e.curves.forEach((e,i)=>{let{item:{block:r},x:l=0,top:o,height:n,textY:s}=a.rows[i];eC.push({label:e.label,lines:r.lines,block:r,colorIndex:i,x:ex(t+l),y:ex(o+(n-K)/2),swatchSize:K,textX:ex(t+l+K+8),textY:ex(s)})})}return{width:ex(ew),height:ex(eS),cx:ex(e$),cy:ex(eF),radius:ex(s),title:e.title?{text:es.text,block:es,x:ex(e$),y:ex(V+ec/2),fontSize:y}:void 0,accessibility:e.accessibility?{...e.accessibility}:void 0,rings:ez,axes:eW,curves:eL,tickLabels:eM,legend:eC,polygonGraticule:"polygon"===e.graticule,typography:{axisFontSize:x,axisFontWeight:b,legendFontSize:q,legendFontWeight:Q,titleFontSize:y,titleFontWeight:v,tickFontSize:9.5,tickFontWeight:b},visual:a}}function ew(e,t,i){let a=I(e,t);if(null!==a&&a>=4.5)return e;let r=[i,"#000000","#ffffff"].map(e=>({color:e,ratio:I(e,t)})).filter(e=>null!==e.ratio).sort((e,t)=>t.ratio-e.ratio)[0];return r&&r.ratio>=4.5?r.color:i}function eS(e){return Math.round(100*e)/100}function e$(e){let t=new Map;for(let i of e)t.set(i,(t.get(i)??0)+1);let i=new Map;return e.map(e=>{if((t.get(e)??0)<=1)return e;let a=i.get(e)??0;return i.set(e,a+1),`${e}#${a}`})}var eF=F(function(e,t){let a,{positioned:r,colors:l,resolved:o}=t,n=o.renderOptions,s=l.font??"Inter",c=n.transparent??!1,d=j(n,eg(r.visual),o.styleFace),h=[],u=i(r.curves.length,{accent:l.accent,bg:l.bg,overrides:r.visual.paletteOverrides}),m=r.visual.curveOpacity??.5,p=r.visual.axisColor??d.edgeStrokeColor??"var(--_line)",f=r.visual.graticuleColor??d.edgeStrokeColor??"var(--_line)",g=r.visual.axisStrokeWidth??1,x=r.visual.graticuleStrokeWidth??1,b=r.visual.graticuleOpacity??.7,y=r.visual.titleColor??d.groupTextColor??d.nodeTextColor??"var(--_text)",v=d.nodeBorderColor??"var(--bg)",k=r.visual.axisColor??ew(d.edgeTextColor??l.fg,l.bg,l.fg),w=ew(d.edgeTextColor??l.fg,l.bg,l.fg),S={title:r.accessibility?.title??r.title?.text??"Radar chart",description:r.accessibility?.description},$=e$(r.axes.map(e=>e.id)),F=e$(r.curves.map(e=>e.id)),z=[r.width,r.height,S.title??""];for(let e of r.axes)z.push(e.id);for(let e of r.curves)z.push(e.label);let W=`radar-${V(z.join("|"))}`,L=`${W}-title`,M=`${W}-desc`,C=[(a=r.visual.useMaxWidth?{width:"100%",height:"100%",style:`max-width:${r.width}px`}:{},_(r.width,r.height,l,c,{...a,attrs:{id:W,"aria-roledescription":"radar chart",...O(S.title,S.description,L,M,"radar chart")}}))];S.title&&C.push(`<title id="${L}">${B(S.title)}</title>`),S.description&&C.push(`<desc id="${M}">${B(S.description)}</desc>`),C.push(R(s,!1,l.shadow,l.embedFontImport));let T=E(l);T&&C.push(`<defs>${T}</defs>`),h.push(e.documentOpen({id:"prelude",width:r.width,height:r.height,colors:l,transparent:c,font:s,hasMonoFont:!1},C.join(`
|
|
8
|
+
`)));for(let t=0;t<r.rings.length;t++){let i=r.rings[t];h.push(e.shape({id:`ring:${t}`,role:"grid",geometry:r.polygonGraticule?{kind:"polygon",points:i.points}:{kind:"circle",cx:r.cx,cy:r.cy,r:i.r},paint:{fill:"none",stroke:f,strokeOpacity:String(b),strokeWidth:String(i.emphasized?eS(1.4*x):x)},attributes:{className:`radar-ring${i.emphasized?" radar-ring-outer":""}`}}))}for(let[t,i]of r.axes.entries()){let a=$[t];h.push(e.shape({id:`spoke:${a}`,role:"grid",geometry:{kind:"line",x1:r.cx,y1:r.cy,x2:i.x,y2:i.y},paint:{stroke:p,strokeWidth:String(g)},attributes:{className:"radar-axis-line"}}))}let I=new Map;for(let[t,i]of r.curves.entries()){if(i.arityMismatch||0===i.vertices.length)continue;let a=F[t],l={category:i.label},n=X(o.styleFace,"pie-slice",l,{includeFallback:!1}),s=r.visual.paletteOverrides?.[i.colorIndex],c=s??n?.fillColor??u[i.colorIndex],p=s??n?.strokeColor??n?.borderColor??c;I.set(i.colorIndex,p);let f=n?.lineWidth??d.nodeLineWidth,g={fill:c,fillOpacity:String(m),stroke:p,strokeWidth:String(f),strokeLinejoin:"round"},x={className:"radar-area",data:{curve:i.label}};h.push(e.shape({id:`curve:${a}`,role:"pie-slice",geometry:r.polygonGraticule?{kind:"polygon",points:i.vertices}:{kind:"path",d:i.areaPath},paint:g,channels:l,attributes:x}))}for(let[t,i]of r.curves.entries()){if(i.arityMismatch)continue;let a=F[t],l={category:i.label},n=X(o.styleFace,"point",l,{includeFallback:!1}),s=r.visual.paletteOverrides?.[i.colorIndex]??n?.fillColor??I.get(i.colorIndex)??u[i.colorIndex],c=n?.strokeColor??n?.borderColor??v,d=n?.lineWidth??1.2;i.vertices.forEach((t,i)=>{h.push(e.shape({id:`dot:${a}:${i}`,role:"point",geometry:{kind:"circle",cx:t.x,cy:t.y,r:3},paint:{fill:s,stroke:c,strokeWidth:String(d)},channels:l,attributes:{className:"radar-dot"}}))})}for(let[t,i]of r.axes.entries()){if(!i.leader)continue;let a=$[t],r=i.leader;h.push(e.shape({id:`leader:${a}`,role:"grid",geometry:{kind:"line",x1:r.x1,y1:r.y1,x2:r.x2,y2:r.y2},paint:{stroke:f,strokeOpacity:"0.5",strokeWidth:"1"},attributes:{className:"radar-leader"}}))}for(let t=0;t<r.tickLabels.length;t++){let i=r.tickLabels[t],a=eS(i.x-i.w/2),l=eS(i.y-i.h/2);h.push(e.shape({id:`tick-box:${t}`,role:"grid",geometry:{kind:"rect",x:a,y:l,width:i.w,height:i.h,rx:4,ry:4},paint:{fill:"var(--bg)",stroke:f,strokeOpacity:"0.35",strokeWidth:"0.75"},attributes:{className:"radar-tick-box"}}))}for(let t=0;t<r.tickLabels.length;t++){let i=r.tickLabels[t];h.push(e.text({id:`tick:${t}`,role:"axis",text:i.text,x:i.x,y:i.y,fontSize:r.typography.tickFontSize,fontWeight:r.typography.tickFontWeight,letterSpacing:d.edgeLetterSpacing,block:i.block,display:"literal",anchor:"middle",dominantBaseline:"middle",baselineShift:0,paint:{fill:w},attributes:{className:"radar-tick-label"}}))}for(let[t,i]of r.axes.entries()){let a=$[t],l=i.lines;h.push(e.text({id:`axis-label:${a}`,role:"axis",text:l.join(`
|
|
9
|
+
`),x:i.labelX,y:i.labelY,fontSize:r.typography.axisFontSize,block:i.block,fontWeight:r.typography.axisFontWeight,letterSpacing:d.edgeLetterSpacing,display:"literal",anchor:i.anchor,dominantBaseline:"middle",baselineShift:0,paint:{fill:k},attributes:{className:"radar-axis-label",ariaLabel:i.label}}))}for(let t of r.legend){let i={category:t.label},a=X(o.styleFace,"legend",i,{includeFallback:!1}),l=r.visual.paletteOverrides?.[t.colorIndex]??a?.fillColor??I.get(t.colorIndex)??u[t.colorIndex],n=a?.strokeColor??a?.borderColor??d.nodeBorderColor??"var(--_node-stroke)",s=a?.lineWidth??1;h.push(e.shape({id:`legend-swatch:${t.colorIndex}`,role:"legend",geometry:{kind:"rect",x:t.x,y:t.y,width:t.swatchSize,height:t.swatchSize,rx:2,ry:2},paint:{fill:l,fillOpacity:"1",stroke:n,strokeWidth:String(s)},channels:i,attributes:{className:"radar-legend-swatch"}})),h.push(e.text({id:`legend-label:${t.colorIndex}`,role:"legend",text:t.lines.join(`
|
|
10
|
+
`),x:t.textX,y:t.textY,fontSize:r.typography.legendFontSize,fontWeight:r.typography.legendFontWeight,letterSpacing:d.nodeLetterSpacing,block:t.block,display:"literal",anchor:"start",dominantBaseline:"middle",baselineShift:0,paint:{fill:a?.textColor??d.nodeTextColor??"var(--_text)"},attributes:{className:"radar-legend-text"}}))}return r.title&&h.push(e.text({id:"title",role:"title",text:r.title.text,x:r.title.x,y:r.title.y,fontSize:r.title.fontSize,fontWeight:r.typography.titleFontWeight,letterSpacing:d.groupLetterSpacing,block:r.title.block,display:"literal",anchor:"middle",dominantBaseline:"middle",baselineShift:0,paint:{fill:y},attributes:{className:"radar-title"}})),h.push(e.documentClose()),{family:"radar",width:r.width,height:r.height,colors:l,transparent:c,parts:h}}),ez=v(D,{configDiagnostics:e=>[...function(e){let t=d(e,"themeVariables");if(!t||!("radar"in t))return[];let i=d(t,"radar");if(!i)return[{code:"INEFFECTIVE_CONFIG",field:"themeVariables.radar",message:"themeVariables.radar must be an object; the invalid value has no effect."}];let a=new Set(H),r=[],l=new Set(["axisStrokeWidth","curveStrokeWidth","graticuleStrokeWidth"]),o=new Set(["axisLabelFontSize","legendFontSize"]),c=new Set(["curveOpacity","graticuleOpacity"]),h=new Set(["axisColor","graticuleColor"]);for(let e of Object.keys(i).sort(Y)){let t=i[e],d;a.has(e)?l.has(e)&&!s(U.lineWidth).valid(t)?d=s(U.lineWidth).expected:o.has(e)&&!s(U.fontSize).valid(t)?d=s(U.fontSize).expected:"legendBoxSize"!==e||s(U.legendBoxSize).valid(t)?c.has(e)&&!n(0,1).valid(t)?d="a finite number from 0 through 1":h.has(e)&&!M(t)&&(d="a safe CSS color without url(), variables, or context-breaking characters"):d=s(U.legendBoxSize).expected:d="a documented radar theme field",d&&r.push({code:"INEFFECTIVE_CONFIG",field:`themeVariables.radar.${e}`,message:`themeVariables.radar.${e} must be ${d}; the invalid value has no effect.`})}return r}(e.root),...h("radar",e,Z)],statementEnds:function(e){return r(e,ed)},normalizeRequest:e=>({familyConfig:{visual:Q(e.source.frontmatter)}}),layout:t=>y(function(t,i={},a={},r){let l=ek(t,i,a,r),o=i.radar?.maxWidth;return void 0===o?l:e(l,o,(e,n)=>{let s;if(2===e&&(void 0!==a.width||void 0!==a.height))return;if(2===e){let e=t.axes.map((e,i)=>Math.sin(eb(i,t.axes.length))),i=Math.max(0,...e)-Math.min(0,...e),r=Math.max(1,a.axisScaleFactor??1)+(void 0===a.axisLabelFactor?0:a.axisLabelFactor-1.05);s=Math.max(60,l.radius-Math.max(0,n.width-o)/Math.max(1,i*r))}let c=ek(t,i,a,r,{maxWidth:o,...void 0===s?{}:{radius:s}});return l.tickLabels.some((e,t)=>c.tickLabels[t]?.text!==e.text)?n:c})}(function(e,t={}){let i=L(l(e.join(`
|
|
11
11
|
`).split(/\r?\n/),ed).map(a));$(i);let r=i.familyLines.join(`
|
|
12
12
|
`).trimStart();if(!r)throw Error("Radar chart is empty");let o=r.match(K);if(!o)throw Error(`Radar chart must start with "radar-beta", got: "${r.split(/\r?\n/,1)[0]}"`);k("radar")&&w("radar","header",o[0],{offset:0,endOffset:o[0].length,unit:"normalized"});let n=function(e,t){let i=[],a=0;for(;a<e.length;){for(;a<e.length&&/\s/.test(e[a]);)a++;if(a>=e.length)break;let r=a,l=ep(e,a);if(l&&/^(?:title|accTitle)$/i.test(l)){for(;a<e.length&&e[a]!==`
|
|
13
13
|
`&&"\r"!==e[a];)a++;let o=e.slice(r,a).trim();o&&(i.push(o),k("radar")&&w("radar",l,o,{offset:r+t,endOffset:a+t,unit:"normalized"}));continue}if(l?.toLowerCase()==="accdescr"){let o=a+l.length;for(;o<e.length&&/[\t ]/.test(e[o]);)o++;if(":"===e[o])for(o++;o<e.length&&/[\t ]/.test(e[o]);)o++;if("{"===e[o]){let n=e.indexOf("}",o+1);if(n<0)throw Error(`Radar statement is missing a closing "}": "${e.slice(r).trim()}"`);a=n+1,i.push(e.slice(r,a).trim()),k("radar")&&w("radar",l,i[i.length-1],{offset:r+t,endOffset:a+t,unit:"normalized"});continue}for(;a<e.length&&e[a]!==`
|
|
14
14
|
`&&"\r"!==e[a];)a++;let n=e.slice(r,a).trim();n&&(i.push(n),k("radar")&&w("radar",l,n,{offset:r+t,endOffset:a+t,unit:"normalized"}));continue}let o=0,n=0,s=null,c=!1;for(;a<e.length;a++){let t=e[a];if(c){c=!1;continue}if(s&&"\\"===t){c=!0;continue}if('"'===t||"'"===t){s===t?s=null:null===s&&(s=t);continue}if(!s){if("["===t?o++:"]"===t?o--:"{"===t?n++:"}"===t&&n--,o<0||n<0)throw Error(`Radar statement has an unexpected closing delimiter: "${e.slice(r,a+1).trim()}"`);if((t===`
|
|
15
|
-
`||"\r"===t)&&0===o&&0===n)break;if(/[\t ]/.test(t)&&0===o&&0===n){let t=a+1;for(;t<e.length&&/[\t ]/.test(e[t]);)t++;let i=a-1;for(;i>=r&&/[\t ]/.test(e[i]);)i--;if(","!==e[i]&&ep(e,t))break}}}if(s||0!==o||0!==n)throw Error(`Radar statement has unbalanced quotes or delimiters: "${e.slice(r,a).trim()}"`);let d=e.slice(r,a).trim();d&&(i.push(d),k("radar")&&w("radar",l??"unrecognized",d,{offset:r+t,endOffset:a+t,unit:"normalized"}))}return i}(r.slice(o[0].length),o[0].length),s=t.title;void 0!==s&&k("radar")&&S("radar","setFrontmatterTitle",s);let c={...void 0!==i.accessibility.title?{title:
|
|
16
|
-
`),0);if(void 0===r)throw Error('Radar accDescr block is missing a closing "}"');if(null!==r){let e=
|
|
15
|
+
`||"\r"===t)&&0===o&&0===n)break;if(/[\t ]/.test(t)&&0===o&&0===n){let t=a+1;for(;t<e.length&&/[\t ]/.test(e[t]);)t++;let i=a-1;for(;i>=r&&/[\t ]/.test(e[i]);)i--;if(","!==e[i]&&ep(e,t))break}}}if(s||0!==o||0!==n)throw Error(`Radar statement has unbalanced quotes or delimiters: "${e.slice(r,a).trim()}"`);let d=e.slice(r,a).trim();d&&(i.push(d),k("radar")&&w("radar",l??"unrecognized",d,{offset:r+t,endOffset:a+t,unit:"normalized"}))}return i}(r.slice(o[0].length),o[0].length),s=t.title;void 0!==s&&k("radar")&&S("radar","setFrontmatterTitle",s);let c={...void 0!==i.accessibility.title?{title:N(i.accessibility.title)}:{},...void 0!==i.accessibility.descr?{description:N(i.accessibility.descr)}:{}},d=[],h=[],u=0,m,p=5,f="circle",g=!0,x={};for(let e=0;e<n.length;e++){let t=n[e],a,r=W(t.split(`
|
|
16
|
+
`),0);if(void 0===r)throw Error('Radar accDescr block is missing a closing "}"');if(null!==r){let e=N(r.value);r.title?(x.title=r.value,void 0===i.accessibility.title&&(c.title=e)):(x.descr=r.value,void 0===i.accessibility.descr&&(c.description=e)),k("radar")&&S("radar",r.title?"setAccessibilityTitle":"setAccessibilityDescription",e);continue}if(a=t.match(ee)){s=N((a[1]??"").trim()),k("radar")&&S("radar","setTitle",s);continue}if(a=t.match(et)){for(let e of eh(a[1],"axis list")){if(d.length>=256)throw Error("Radar charts support at most 256 axes.");d.push(function(e){let t=e.match(en);if(!t)throw z({what:`Invalid radar axis: "${e}"`,expectedForm:'an id (not ending in "-") with an optional quoted label',example:'axis speed["Top Speed"], range'});let i=t[1],a=void 0!==t[2]?N(eu(t[2],`axis "${i}" label`)):i;return{id:i,label:a}}(e)),k("radar")&&S("radar","appendAxis",d[d.length-1])}continue}if(a=t.match(ei)){for(let e of eh(a[1],"curve list"))h.push(e),k("radar")&&S("radar","appendPendingCurve",e);continue}if(ea.test(t)){for(let e of eh(t,"option list")){let t=e.match(ea);if(!t)throw Error(`Invalid radar option: "${e}"`);let i=t[1].toLowerCase(),a=t[2].trim();switch(i){case"showlegend":if(!/^(true|false)$/i.test(a))throw Error(`Radar showLegend must be true or false, got "${a}".`);g="true"===a.toLowerCase(),k("radar")&&S("radar","setShowLegend",g);break;case"ticks":p=function(e){let t=ef(e,"ticks");if(!Number.isInteger(t)||t<1||t>64)throw Error(`Radar ticks must be an integer from 1 through 64, got "${e.trim()}".`);return t}(a),k("radar")&&S("radar","setTicks",p);break;case"max":m=ef(a,"max"),k("radar")&&S("radar","setMax",m);break;case"min":u=ef(a,"min"),k("radar")&&S("radar","setMin",u);break;case"graticule":if("circle"!==a&&"polygon"!==a)throw Error(`Radar graticule must be circle or polygon, got "${a}".`);f=a,k("radar")&&S("radar","setGraticule",f)}}continue}throw z({what:`Unrecognized radar chart line: "${t}"`,expectedForm:"a title, accessibility directive, axis, curve, or option (min/max/ticks/graticule/showLegend)",example:"axis a, b, c"})}let b=h.map(e=>{let t=function(e,t){let i=e.match(es);if(!i)throw z({what:`Invalid radar curve: "${e}"`,expectedForm:'an id (not ending in "-") with an optional quoted label and a `{…}` value block',example:'curve a["Alice"]{85, 90, 80}'});let a=i[1],r=void 0!==i[2]?N(eu(i[2],`curve "${a}" label`)):a,l=eh(i[3],`curve "${a}" value block`),o=l.map(e=>!/^[+-]?(?:\d|\.)/.test(e)),n=o.some(Boolean),s=o.every(Boolean);if(n&&!s)throw Error(`Radar curve "${a}" mixes positional and keyed entries \u2014 use one form.`);if(!n)return{id:a,label:r,values:l.map(e=>ef(e,`curve "${a}" value`))};if(0===t.length)throw Error(`Radar curve "${a}" uses keyed entries (axis: value) but no axes are declared.`);let c=new Map;for(let e of l){let t=e.match(ec);if(!t)throw Error(`Radar curve "${a}" has an invalid keyed entry: "${e}".`);let i=t[1],r=ef(t[2],`curve "${a}" entry for "${i}"`);c.has(i)||(c.set(i,r),k("radar")&&S("radar","setCurveAxisValue",{curve:a,axis:i,value:r}))}let d=t.map(e=>{let t=c.get(e.id);if(void 0===t)throw Error(`Radar curve "${a}" is missing an entry for axis "${e.id}".`);return k("radar")&&S("radar","resolveCurveAxisValue",{curve:a,axis:e.id,value:t}),t});return{id:a,label:r,values:d}}(e,d);return k("radar")&&S("radar","resolveCurve",t),t});if(void 0!==m&&m<=u)throw Error(`Radar max (${m}) must be greater than min (${u}).`);return{title:s,...c.title||c.description?{accessibility:c}:{},...Object.keys(x).length>0?{statementAccessibility:x}:{},axes:d,curves:b,min:u,max:m,ticks:p,graticule:f,showLegend:g}}(t.source.lines,{title:"string"==typeof t.source.frontmatter.title?t.source.frontmatter.title:void 0}),t.renderOptions,t.familyConfig?.visual??Q(t.source.frontmatter),t.styleFace),{injectAccessibility:!1}),projectPositioned:x(function({positioned:e}){let t=[],i=e.rings.map((t,i)=>({id:`ring:${i}`,x:f(e.cx-t.r),y:f(e.cy-t.r),w:f(2*t.r),h:f(2*t.r),members:[]}));e.axes.forEach((i,a)=>{let r=Math.max(8,i.block?.width??i.labelWidth),l=i.block?.height??0,o="start"===i.anchor?i.labelX:"end"===i.anchor?i.labelX-r:i.labelX-r/2;t.push({id:`axis#${a}:${i.id}`,x:f(o),y:f(i.labelY-l/2),w:f(r),h:f(l),shape:"rectangle",label:i.label,role:"labelled-mark",...g(i.block,i.labelX,i.labelY,p(e),i.anchor)})}),e.tickLabels.forEach((i,a)=>{let r=i.block?.width??i.w,l=i.block?.height??i.h;t.push({id:`tick:${a}`,x:f(i.x-r/2),y:f(i.y-l/2),w:f(r),h:f(l),shape:"rectangle",label:i.text,role:"labelled-mark",...g(i.block,i.x,i.y,p(e))})});let a=new Map;for(let t of e.curves)a.set(t.id,(a.get(t.id)??0)+1);let r=new Map;for(let[i,l]of(e.curves.forEach(e=>{let i=r.get(e.id)??0;r.set(e.id,i+1);let l=(a.get(e.id)??0)>1?`${e.id}#${i}`:e.id;e.vertices.forEach((e,i)=>{t.push({id:`dot:${l}:${i}`,x:f(e.x-3),y:f(e.y-3),w:f(6),h:f(6),shape:"circle",role:"mark"})})}),e.legend.entries())){t.push({id:`legend-swatch#${i}`,x:f(l.x),y:f(l.y),w:f(l.swatchSize),h:f(l.swatchSize),shape:"rectangle",role:"mark"});let a=Math.max(8,l.block?.width??0),r=l.block?.height??0;t.push({id:`legend-label#${i}`,x:f(l.textX),y:f(l.textY-r/2),w:f(a),h:f(r),shape:"rectangle",label:l.lines.join(" "),role:"labelled-mark",...g(l.block,l.textX,l.textY,p(e),"start")})}if(e.title){let i=e.title.block?.width??0,a=e.title.block?.height??0;t.push({id:"title",x:f(e.title.x-i/2),y:f(e.title.y-a/2),w:f(i),h:f(a),shape:"rectangle",label:e.title.text,role:"labelled-mark",...g(e.title.block,e.title.x,e.title.y,p(e))})}return{version:1,nodes:t,edges:[],groups:i,bounds:{w:f(e.width),h:f(e.height)}}}),lowerScene:b(eF)});export{ez as default};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{b as e,c as t,d as n,e as i,f as r,g as a,k as o,l as s,m as l}from"./chunk-7TTFBJYA.js";import"./chunk-CPO5P4L2.js";import{a as c,b as d,c as u}from"./chunk-37FZNMPR.js";import{e as f,f as p,g as h,h as m,i as g,j as y,k as w,l as b}from"./chunk-5LKPDHPC.js";import{g as v}from"./chunk-V6I2VGNQ.js";import{f as x,h as k,k as $,l as S,m as j,n as M,o as C,q as E,t as O,v as F,w as N,x as I}from"./chunk-7UFOFWBA.js";import{b as z,e as A,f as L}from"./chunk-G4JBA7HU.js";import{g as W,n as R}from"./chunk-3JTYTXA6.js";import{A as G,Ab as D,B as P,Bb as B,Cb as T,Db as V,Eb as q,Fa as _,Fb as H,Gb as J,Ha as U,Hb as Y,Ib as K,Jb as Z,Lb as Q,Mb as X,Nb as ee,Ob as et,Pb as en,Q as ei,Rb as er,X as ea,Ya as eo,Z as es,Zb as el,ab as ec,bb as ed,cb as eu,gb as ef,hb as ep,lb as eh,nb as em,q as eg,s as ey,u as ew,v as eb,w as ev,wb as ex,yb as ek,z as e$}from"./chunk-EIYLJ4FI.js";import"./chunk-PJJSDGLB.js";import{a as eS}from"./chunk-YHMTSXIR.js";import"./chunk-QCU5G5PZ.js";function ej(e,t){return e.match(RegExp(`\\b${t}\\s*=\\s*(["'])(.*?)\\1`,"i"))?.[2]}function eM(e,t){return ej(e,"style")?.match(RegExp(`(?:^|;)\\s*${t}\\s*:\\s*([^;]+)`,"i"))?.[1]?.trim()??ej(e,t)}function eC(e,t,n){let i=Number.parseFloat(eM(e,t)??"");return Number.isFinite(i)?i:n}function eE(e,t){let n=eM(e,"font-weight")?.trim().toLowerCase();if(void 0===n)return t;if("normal"===n)return 400;if("bold"===n)return 700;if("bolder"===n)return t<350?400:t<550?700:900;if("lighter"===n)return t<550?100:t<750?400:700;let i=Number.parseFloat(n);return Number.isFinite(i)?i:t}function eO(e){return e.children.filter(e=>"element"===e.kind)}function eF(e,t){var n;let i="b"===t.name||"strong"===t.name,r=e.mono||(n=t.attrs,/\bclass\s*=\s*(["'])[^"']*\bmono\b/i.test(n)||/(?:^|[,\s])monospace(?:[,\s]|$)/i.test(eM(n,"font-family")??""));return{size:eC(t.attrs,"font-size",e.size),weight:i?Math.max(700,eE(t.attrs,e.weight)):eE(t.attrs,e.weight),letterSpacing:eC(t.attrs,"letter-spacing",e.letterSpacing),mono:r,fontFamily:eM(t.attrs,"font-family")??(r&&!e.mono?void 0:e.fontFamily),fontStyle:"i"===t.name||"em"===t.name||"italic"===eM(t.attrs,"font-style")?"italic":"normal"===eM(t.attrs,"font-style")?"normal":e.fontStyle}}function eN(e,t){return RegExp(`\\b${t}\\s*=`,"i").test(e)}function eI(e){return"tspan"===e.name&&["x","y","dx","dy"].some(t=>eN(e.attrs,t))}var ez=new WeakMap,eA=0,eL=new WeakMap,eW=0,eR=new WeakMap,eG=new P(128,8388608),eD=new P(128,0x1000000,e=>{eG.delete(e)}),eP=new WeakSet;function eB(e,t){let n=ez.get(e);return void 0===n&&(n=eA++,ez.set(e,n)),`${n}:${t}`}function eT(e,t=!1){let n=structuredClone(e),i=new WeakSet,r=(e,n)=>{if(null===e||"object"!=typeof e||null===n||"object"!=typeof n)return n;if(t&&ea(e))return e;if(i.has(e))return n;if(i.add(e),es(e,n),e instanceof Map&&n instanceof Map){let t=n.entries();for(let[i,a]of e){let[e,o]=t.next().value,s=r(i,e),l=r(a,o);n.delete(e),n.set(s,l)}}else if(e instanceof Set&&n instanceof Set){let t=n.values();for(let i of e){let e=t.next().value;n.delete(e),n.add(r(i,e))}}else for(let t of Object.keys(e))n[t]=r(e[t],n[t]);return n};return r(e,n)}function eV(e,t,n,i,r){let a={result:n,...i?{projection:i}:{}},o=2*t.length+W([a,X(n)],0x1000000)+1024;if(o>0x1000000)return void ec("positioned-layout","store-skipped","weight-limit");let s=a;if(r){try{s=eT(a,!0)}catch(e){if(e instanceof Error&&"DataCloneError"===e.name)return void ec("positioned-layout","store-skipped","uncloneable");throw e}ee(n,s.result)}r||eL.set(s,{locallyRepeated:!1}),eD.set(eB(e,t),s,o),eP.add(s.result)}function eq(e,t,n){let i=eR.get(t);if(!n)return void eR.delete(t);if(!i||i.request!==e||eD.get(i.key)!==i.snapshot)return;let r=++eW,a=eL.get(i.snapshot);a.locallyRepeated=a.lastUse===r-1,a.lastUse=r;let o=eG.get(i.key);return o?.owner===i.snapshot?o.drawing:void 0}var e_=new Set(["rectangle","rounded","note","service","diamond","stadium","hexagon","cylinder"]),eH={journey:"x",sequence:"none",xychart:"center",quadrant:"center"};function eJ(e){return e.role?"box"===e.role:e_.has(e.shape)}function eU(e,t,n,i){return Number.isFinite(e)&&Number.isFinite(t)&&Number.isFinite(n)&&Number.isFinite(i)&&n>=0&&i>=0}function eY(e,t){let n=Math.min(e.x+e.w,t.x+t.w)-Math.max(e.x,t.x),i=Math.min(e.y+e.h,t.y+t.h)-Math.max(e.y,t.y);return n>.5&&i>.5}function eK(e,t,n="both"){let i="center"===n?t.x+t.w/2>=e.x-.5&&t.x+t.w/2<=e.x+e.w+.5:t.x>=e.x-.5&&t.x+t.w<=e.x+e.w+.5,r="x"===n||("center"===n?t.y+t.h/2>=e.y-.5&&t.y+t.h/2<=e.y+e.h+.5:t.y>=e.y-.5&&t.y+t.h<=e.y+e.h+.5);return i&&r}function eZ(e,t,n){let i=t,r=new Set;for(;i?.parentId&&!r.has(i.id);){if(r.add(i.id),i.parentId===e.id)return!0;i=n.get(i.parentId)}return!1}var eQ=new WeakMap,eX=new WeakMap,e0=new WeakSet;function e1(e,t,n){if(Q(e,{...t,role:n}),"agentic"!==t.requested||"elk"!==t.selected||e0.has(e))return;e0.add(e);let i={code:"INEFFECTIVE_CONFIG",field:"graphLayout.backend",message:`Agentic graph layout declined this input; using the requested ELK fallback: ${t.reason??"candidate rejected"}`};(p(e).onConfigDiagnostic??(e=>console.warn(e.message)))(i)}var e5=new Set(["media","supports","container","layer","document"]),e2=new WeakSet;function e3(e,t,n=C()){let i=e.id.startsWith("family:"),r=E(t,i?"external":"internal",n);if(!i&&!n)return r;let a=[];i&&r.family!==e.id&&a.push({code:"SCENE_DOCUMENT",path:"scene.family",message:`external family "${e.id}" emitted a document owned by "${r.family}"`});let o=new Set(e.semanticRoles),s=new Set(e.semanticChannels),l=new Map(e.scenePrimitiveEvidence.map(e=>[`${e.role}\0${e.primitive}`,e]));if(function e(t,n,i="scene.parts"){t.forEach((t,r)=>{let a=`${i}[${r}]`;n(t,a),"group"===t.kind&&e(t.children.map(e=>e.node),n,`${a}.children`)})}(r.parts,(e,t)=>{if(!o.has(e.role))return void a.push({code:"SCENE_PRIMITIVE_CLAIM",path:`${t}.role`,message:`emitted undeclared role "${e.role}"`});for(let n of Object.keys(e.channels??{}))s.has(n)||a.push({code:"SCENE_CHANNEL_CLAIM",path:`${t}.channels.${n}`,message:`emitted undeclared semantic channel "${n}"`});for(let n of k(e)){let i=l.get(`${e.role}\0${n}`);i&&"applicable"===i.applicability&&"unsupported"!==i.realization||a.push({code:"SCENE_PRIMITIVE_CLAIM",path:t,message:`emitted undeclared ${e.role}/${n} primitive`})}}),a.length>0)throw new S(Object.freeze(a));return r}var e8=new WeakMap,e4=new WeakMap;function e6(e,t){let n=e4.get(t);n||(n=new WeakMap,e4.set(t,n));let i=n.get(e);if(i)return ec("positioned-scene","hit"),C(e)&&!i.crossChecks&&(e3(p(e).family,i.scene,!0),i.crossChecks=!0),i.scene;ec("positioned-scene","miss");let r=p(e);if(!r.family.lowerScene)throw Error(`Resolved ${e.output} family has no Scene lowering`);let a="png"===e.output&&!1!==e.appearance.colors.embedFontImport?{...e.appearance.colors,embedFontImport:!1}:e.appearance.colors,o=C(e),s=()=>r.family.lowerScene({positioned:t.positioned,colors:a,resolved:m(e)}),l=ey(r.textMeasurement,()=>e3(r.family,o||r.family.id.startsWith("family:")?s():eo(s),o));return n.set(e,{scene:l,crossChecks:o}),l}function e7(o,s){let l=p(o),c=C(o)?"scene-assertions":l.family.id.startsWith("family:")?"external-family":l.backend&&!F(l.backend.backend)?"alternate-backend":("layout"===l.mode?"default"===o.appearance.inferredBackend:"scene"===l.mode&&l.backend?.inputName==="default")?void 0:"unsupported-mode";!c&&"er"===l.family.id&&(eQ.get(s)?.nodes.length??0)>256&&(c="paint-proof-capacity");let d=c?void 0:A(l.family.lowerScene);if(d||(c??="no-native-producer"),c){ec("native-drawing","bypass",c),ed("native-drawing",c);return}let u=e8.get(s);u||(u=new WeakMap,e8.set(s,u));let f=u.get(o);if(f){if(ec("native-drawing","hit"),f.producer===A(l.family.lowerScene))return f.drawing;ec("native-drawing","bypass","changed-producer"),u.delete(o)}l.backend&&I(l.backend.conformance,l.backend.inputName);let h=eq(o,s,(d=A(l.family.lowerScene))===L(l.family.lowerScene));if(h){ec("native-drawing","hit",void 0,"positioned-owner");let e=d;if(e&&e===A(l.family.lowerScene)&&e===L(l.family.lowerScene))return u.set(o,{drawing:h,producer:e,certification:h.certification}),h;ec("native-drawing","bypass","changed-producer"),eq(o,s,!1),d=A(l.family.lowerScene)}if(ec("native-drawing","miss"),!(d=A(l.family.lowerScene))){ec("native-drawing","bypass","no-native-producer"),ed("native-drawing","no-native-producer");return}let g=d,y="png"===o.output&&!1!==o.appearance.colors.embedFontImport?{...o.appearance.colors,embedFontImport:!1}:o.appearance.colors,w=ey(l.textMeasurement,()=>{let c;return function(o,s,l,c){var d;let u,f,p={family:l,width:s.positioned.width,height:s.positioned.height,colors:s.colors,transparent:s.resolved.renderOptions.transparent??!1},h=a(r);l.startsWith("family:")&&h.uncertain();let m=h.snapshot(p),g=M(p),y=new WeakSet,w=e=>(h.retainFragment()&&y.add(e),Object.freeze(e)),b=e=>{let t=h.leaf(e),n=g.node(t.node);return w({kind:"leaf",node:t.node,svg:n,conditional:t.conditional,nodeCount:1,depth:0,prepared:"document"===e.kind?!/<\s*text/i.test(n):"text"!==e.kind||"prepared"===e.measurement&&void 0!==e.block})},v={shape:e=>b(D(e)),text:e=>b(T(e)),connector:e=>b(B(e)),documentOpen:(e,t)=>{let n=h.snapshot(e);return n?(m=Object.freeze({family:l,width:n.width,height:n.height,colors:n.colors,transparent:n.transparent}),m=h.header(m,t)):h.uncertain(),b(K(e,t))},documentContent:(e,t)=>b(V(e,t)),documentText:e=>b(q(e)),definitions:(e,t)=>b(H(e,t)),documentClose:()=>b(J()),group(t){let n=Object.getOwnPropertyDescriptor(t,"children");n&&"value"in n||h.uncertain();let{children:i,...r}=t,a=h.parts(i,$.maxNodes),o=[],s=1,l=0,c=1,d=!0,u=[];for(let e of a){let t=Object.getOwnPropertyDescriptor(e,"node"),n=Object.getOwnPropertyDescriptor(e,"indent");t&&"value"in t&&n&&"value"in n||h.uncertain();let i=Object.freeze({node:e.node,indent:e.indent});o.push(i),y.has(i.node)||h.uncertain(),u.push(i.node),s+=i.node.nodeCount,l+=i.node.svg.length,c=Math.max(c,1+i.node.depth),d=d&&i.node.prepared}if(s>$.maxNodes)throw RangeError("Native drawing contains too many emitted nodes");if(l>$.maxSerializationBytesPerNode)throw RangeError("Native group has an oversized SVG serialization");let f=Y({...r,children:[]});g.node(f),g.depth(c);let p=h.snapshot(f),m=p?h.group(p,f):void 0,b=p?.identity??{id:f.id,role:f.role};for(let e of u)"leaf"!==e.kind||"shape"!==e.node.kind||e.node.identity||g.enclosure(e.node.id,b);let v=[f.open];for(let e of o)v.push(ex(e.node.svg,e.indent));v.push(f.close);let x=v.join(f.join);return g.serialization(x),w({kind:"group",svg:x,children:Object.freeze(u),matrix:m,own:b,owner:p?.owner,conditional:!p||"conditional"===f.visibility,opacity:e(p?.paint?.opacity),nodeCount:s,depth:c,prepared:!/<\s*text/i.test(f.open+f.close)&&d})},pathArtwork:e=>Z(v,e)},x=eo(()=>o(v,s));for(let e of["parts","family","width","height","colors","transparent"]){let t=Object.getOwnPropertyDescriptor(x,e);t&&"value"in t||h.uncertain()}let k=h.parts(x.parts,$.maxNodes);for(let e of k)y.has(e)||h.uncertain();let C=g.finish();if(!C.valid)throw new S(C.diagnostics);let E=0,F=-1,N=!0;for(let e of k)E+=e.nodeCount,F+=e.svg.length+1,N=N&&e.prepared;if(E>$.maxNodes)throw RangeError("Native drawing contains too many emitted nodes");if(F>$.maxFinalSvgBytes)throw RangeError("Native drawing exceeds the final SVG limit");let I=O(x,{seed:0,...c?{style:c}:{}}),z=k.map((e,t)=>0===t&&I?`${e.svg}
|
|
2
|
+
${I}`:e.svg).join(`
|
|
3
|
+
`);j(z,"native drawing output");let A=m??Object.freeze({...p,colors:Object.freeze({bg:"none",fg:"none"})}),L=h.snapshot({family:x.family,width:x.width,height:x.height,colors:x.colors,transparent:x.transparent}),W=Object.freeze({...A,family:L?.family??l});L&&h.same({...L,width:Number(ei(L.width)),height:Number(ei(L.height))},W)||h.uncertain();let R=(d=h.observe,u=i(W),f=[],function e(i,r,a){for(let o=0;o<i.length;o++){let s=i[o],l=`${r}.${o}`;if("group"===s.kind){f.push(s);let i,r=1,o;for(let e=f.length-1;e>=0;e--){let n=f[e];(void 0!==n.matrix||void 0!==i)&&(i=U(n.matrix??_,i??_)),r=t(n.opacity,r),n.conditional&&(o=!0)}let c=n(a?.ancestors,s.own),d=s.owner?.id===s.own.id&&s.owner.role===s.own.role?c.at(-1):s.owner;e(s.children,l,{parentMatrix:i,ancestors:c,owner:d,conditional:o,groupOpacity:r}),f.pop()}else if(a){let e=!s.conditional&&d(s.node,s.svg);u.leaf(s.node,l,a.parentMatrix,a.ancestors,a.conditional||!e,a.groupOpacity,s.node.owner??a.owner)}else{let e=!s.conditional&&d(s.node,s.svg);u.leaf(s.node,l,void 0,void 0,!e)}}}(k,"scene"),u.finish());return h.finish(R,W),Object.freeze({svg:z,header:W,preparedText:N,paint:R})}(g,{positioned:(c=eX.get(s))&&c!==g?eT(s.positioned,!0):s.positioned,colors:y,resolved:m(o)},l.family.id,o.appearance.styled?o.appearance.style:void 0)});return u.set(o,{drawing:w,producer:g,evidence:w}),w}function e9(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}async function te(e,t,n){return(await tt(e,t,n)).svg}async function tt(e,t,n){"default"!==w(t=y(t))&&await import("./builtin-backends-VAFEZXKY.js"),v(n);let i,r=new Map;for(;;)try{return i??=et("request",()=>b(e,t,"svg",void 0,{expectedFamilyId:n.id,familyDescriptor:n})),function(e){return eu(()=>(function(e){var t;!function(e){if(e2.has(e))return;e2.add(e);let t=p(e),n=t.configDiagnostics??[];if(0===n.length)return;let i=t.onConfigDiagnostic??(e=>console.warn(e.message));for(let e of n)i(e)}(e);let n=[],i=(t=et("layout",()=>{let t,n,i,r;return n=A((t=p(e)).family.lowerScene),i="scene"===t.mode&&N(t.backend?.backend)&&z(t.family)&&!t.textMeasurement&&!!n&&n===L(t.family.lowerScene)&&!C(e),r=function(e,t,n,i,r,a=!1){let o=p(t),s=o.family;if(s.id!==e)throw Error(`Resolved request planned family ${s.id}, not ${e}`);if(!s.layout)throw Error(`No layout registered for Mermaid family ${e}`);let l=!e.startsWith("family:"),c=`${e}:final`;if(l&&!s.projectPositioned)throw new en([{strategy:c,violations:["missing final geometry projection"]}]);let d=m(t),u=globalThis.process?.env,f=G("position-cache")&&l&&"gantt"!==e&&!o.textMeasurement&&(u?.AGENTIC_MERMAID_ELK_CACHE??globalThis.AGENTIC_MERMAID_ELK_CACHE)!=="0",h=f&&n===t.source?{...n,cleanup:void 0}:n,g=f?JSON.stringify([h,t.renderOptions,t.appearance,t.familyConfig,i,"class"===e?d.paintBackendId??"backend:default":void 0,Object.entries(u??{}).filter(([e])=>e.startsWith("APL_")).sort(),e$.map(G)]):void 0,y=void 0!==g&&g.length<=65536?g:void 0;return void 0===y&&ec("positioned-layout","bypass",G("position-cache")?l?"gantt"===e?"time-dependent-family":o.textMeasurement?"custom-text-measurement":void 0===g?"elk-cache-disabled":"key-limit":"external-family":"disabled"),ey(o.textMeasurement,()=>{var o,u;let f="ascii"===t.output||"unicode"===t.output||"html"===t.output?"companion":"primary";if(r&&void 0!==y){let e=function(e,t,n){let i=eB(e,t),r=eD.get(i);if(ec("positioned-layout",r?"hit":"miss"),n&&r&&eL.has(r)){let e=Object.freeze({...r.result});return ee(r.result,e),eR.set(e,{key:i,snapshot:r,request:n}),eP.add(e),{...r,result:e}}return r}(s,y,"svg"===t.output?t:void 0);if(e?.projection){for(let n of X(e.result))e1(t,n,f);return eQ.set(e.result,e.projection),e.result}}let p=void 0===y?void 0:function(e,t,n=!1,i=!1){let r=eD.get(eB(e,t));if(n||ec("positioned-layout",r?"hit":"miss"),!r)return;let a=eT(r.result,i);return ee(r.result,a),a}(s,y,r,a),h=[],m=p??("positioned"in(o=el(e=>{h.push(e),e1(t,e,f)},()=>s.layout({source:n,renderOptions:d.renderOptions,...d.styleFace?{styleFace:d.styleFace}:{},...d.paintBackendId?{paintBackendId:d.paintBackendId}:{},...d.familyConfig?{familyConfig:d.familyConfig}:{},...d.familyAppearance?{familyAppearance:d.familyAppearance}:{}})))?o:{positioned:o});if(p)for(let e of X(p))e1(t,e,f);else for(let e of h)Q(m,e);if(l)try{let t=s.projectPositioned({positioned:m.positioned,options:i}),n=(u={...t,kind:e},function(e){let t=[];eU(0,0,e.bounds.w,e.bounds.h)||t.push({metric:"nonFiniteGeometry",detail:`bounds ${e.bounds.w}\xd7${e.bounds.h}`});let n=(n,i,r)=>{r&&(eU(r.x,r.y,r.w,r.h)?(r.x<-.5||r.y<-.5||r.x+r.w>e.bounds.w+.5||r.y+r.h>e.bounds.h+.5)&&t.push({metric:"offCanvas",detail:"node"===n?`node ${i} at (${r.x},${r.y}) ${r.w}\xd7${r.h}`:`${n} ${i}`}):t.push({metric:"nonFiniteGeometry",detail:`${n} ${i}`}))};for(let t of e.nodes)n("node",t.id,t);for(let t of e.nodes)"hidden"!==t.labelVisibility&&"semantic"!==t.labelVisibility&&n("label",t.id,t.labelBounds);for(let t of e.edges)n("label",t.id,t.label?.bounds);for(let t of e.labels??[])"hidden"!==t.visibility&&"semantic"!==t.visibility&&n("label",t.id,t.bounds);for(let n of e.edges){let i=!1;for(let[r,a]of n.path){if(!Number.isFinite(r)||!Number.isFinite(a)){t.push({metric:"nonFiniteGeometry",detail:`edge ${n.id} path`}),i=!0;break}!i&&(r<-.5||a<-.5||r>e.bounds.w+.5||a>e.bounds.h+.5)&&(t.push({metric:"offCanvas",detail:`edge ${n.id} point (${r},${a})`}),i=!0)}}for(let t of e.groups)n("group",t.id,t);let i=e.nodes.filter(eJ);for(let e=0;e<i.length;e++)for(let n=e+1;n<i.length;n++){let r=i[e],a=i[n];eU(r.x,r.y,r.w,r.h)&&eU(a.x,a.y,a.w,a.h)&&eY(r,a)&&t.push({metric:"nodeOverlaps",detail:`${r.id} overlaps ${a.id}`})}let r=eH[e.kind]??"both",a=new Map(e.groups.map(e=>[e.id,e]));if("none"!==r){let n=new Map(e.nodes.map(e=>[e.id,e]));for(let i of e.groups){let e=i.parentId?a.get(i.parentId):void 0;for(let a of(e&&eU(i.x,i.y,i.w,i.h)&&eU(e.x,e.y,e.w,e.h)&&(eK(e,i,r)||t.push({metric:"groupBreaches",detail:`${i.id} outside parent ${e.id}`})),i.members)){let e=n.get(a);!e||!eU(e.x,e.y,e.w,e.h)||eK(i,e,r)||t.push({metric:"groupBreaches",detail:`${a} outside ${i.id}`})}}}for(let n=0;n<e.groups.length;n++)for(let i=n+1;i<e.groups.length;i++){let r=e.groups[n],o=e.groups[i];!eU(r.x,r.y,r.w,r.h)||!eU(o.x,o.y,o.w,o.h)||eY(r,o)&&(eK(r,o)||eK(o,r)||eZ(r,o,a)||eZ(o,r,a)||t.push({metric:"groupOverlaps",detail:`${r.id} partially overlaps ${o.id}`}))}return{violations:t,groupById:a}}(u).violations);if(n.length)throw new en([{strategy:c,violations:n.map(e=>`${e.metric}: ${e.detail}`)}]);eQ.set(m,t)}catch(e){throw e instanceof en?e:new en([{strategy:c,violations:[e instanceof Error?e.message:String(e)]}])}return p||void 0===y||(r&&"svg"===t.output&&("sequence"===e||"flowchart"===e||"state"===e)?function(e,t,n,i){eV(e,t,n,i,!1)}:function(e,t,n,i){eV(e,t,n,i,!0)})(s,y,m,eQ.get(m)),m})}(t.family.id,e,e.source,{},i,!0),i&&eP.has(r)&&eX.set(r,n),r}),ey(p(e).textMeasurement,()=>(function(e,t,n,i){let r,a,h=p(e);if("scene"!==h.mode&&"family-svg"!==h.mode||!h.executionDecision)throw Error(`Resolved ${e.output} request has no graphical execution plan`);let g=e.renderOptions,y=h.family,w=(r=e.appearance.colors,a="png"===e.output&&!1!==r.embedFontImport?{...r,embedFontImport:!1}:r,{positioned:t.positioned,colors:a,resolved:m(e)}),b,v=!1,k;if("scene"===h.mode){let n=i?void 0:et("drawing",()=>e7(e,t)),r=n?void 0:et("scene",()=>(function(e,t){if("scene"!==p(e).mode)throw Error(`Resolved ${e.output} request has no Scene execution plan`);return e6(e,t)})(e,t));if(k=et("paint-certification",()=>(function(e,t){let n=e8.get(t)?.get(e)?.drawing??e7(e,t);if(n){let i=e8.get(t).get(e);if(ec("paint-certification",i.certification?"hit":"miss",void 0,"native"),i.certification)return i.certification;let r=i.evidence,a=s(r.header,r.paint,eQ.get(t),{outputSupported:!e.appearance.colors.shadow});i.certification=a;let o=Object.freeze({svg:n.svg,preparedText:n.preparedText,certification:a}),l=p(e).family.lowerScene;return i.producer===A(l)&&i.producer===L(l)?function(e,t,n){let i=eR.get(t);if(!i||i.request!==e||eD.get(i.key)!==i.snapshot)return;let r=eL.get(i.snapshot);if(r.oversized)return ec("native-drawing","store-skipped","weight-limit");let a=r.drawingWeight??2*i.key.length+4*n.svg.length+1024,o=eG.leastRecentlyUsed(),s=o&&eL.get(o.owner)?.lastUse,l=void 0!==s&&eW-s>=128;if(!r.locallyRepeated&&!l&&!eG.canFit(i.key,a))return ec("native-drawing","store-skipped","drawing-budget");let c={owner:i.snapshot,drawing:n},d=2*i.key.length+W(n,8388608)+1024;if(r.drawingWeight=d,d>8388608){r.oversized=!0,ec("native-drawing","store-skipped","weight-limit");return}r.locallyRepeated||l||eG.canFit(i.key,d)?eG.set(i.key,c,d):ec("native-drawing","store-skipped","drawing-budget")}(e,t,o):(ec("native-drawing","store-skipped","changed-producer"),eq(e,t,!1)),a}let i=e6(e,t),r=e4.get(t).get(e);if(ec("paint-certification",r.certification?"hit":"miss",void 0,"scene"),r.certification)return r.certification;let a=p(e),l=!e.appearance.colors.shadow&&("layout"===a.mode?"default"===e.appearance.inferredBackend:"scene"===a.mode&&a.backend?.inputName==="default");return r.certification=o(i,eQ.get(t),{outputSupported:l})})(e,t)),"strict"===g.layoutSafety&&"passed"!==k.status||"failed"===k.status&&h.backend?.inputName==="default")throw new l(k);b=n?.svg??et("backend",()=>{let t={seed:g.seed??0,...e.appearance.styled?{style:e.appearance.style}:{}};return i?.begin(t,r),h.backend.backend.render(r,t)}),v=h.backend?.inputName==="default"&&!y.id.startsWith("family:")&&(n?.preparedText??ek(r))}else{if("strict"===g.layoutSafety)throw new f("Strict layout safety requires native Scene evidence");b=et("backend",()=>y.renderSvg(w))}j(b,"backend/family SVG output");let $=R(b,w.colors);k?.repairs.length&&h.backend?.inputName==="default"&&($=function(e,t){let n=ef(e);if(!n)throw Error("Cannot certify a graphical output with no SVG root");let i=e.slice(n.start,n.end).replace(/\sviewBox="[^"]*"/g,""),r=` viewBox="${t.x} ${t.y} ${t.width} ${t.height}"`;return em(e,n,i.slice(0,-1)+r+">")}($,k.viewport)),j($,"color-resolved SVG output"),v||($=function(e,t){let n=function(e){let t=[],n=[],i=0;for(;i<e.length;){let r=e.indexOf("<",i);if(r<0){n.length>0&&i<e.length&&n[n.length-1].children.push({kind:"text-node",raw:e.slice(i)}),i=e.length;break}if(n.length>0&&r>i&&n[n.length-1].children.push({kind:"text-node",raw:e.slice(i,r)}),e.startsWith("\x3c!--",r)){let t=e.indexOf("--\x3e",r+4);if(t<0)return null;i=t+3;continue}let a=function(e,t){let n="";for(let i=t+1;i<e.length;i++){let t=e[i];if(n){t===n&&(n="");continue}if('"'===t||"'"===t){n=t;continue}if(">"===t)return i}return -1}(e,r);if(a<0)return null;let o=e.slice(r,a+1);if(/^<\?/.test(o)||/^<!/.test(o)){i=a+1;continue}let s=o.match(/^<\/\s*([\w:-]+)\s*>$/);if(s){let e=n.pop();if(!e||e.name!==s[1].toLowerCase())return null;e.closeStart=r,i=a+1;continue}let l=o.match(/^<\s*([\w:-]+)([\s\S]*?)(\/?)>$/);if(!l)return null;let c={kind:"element",name:l[1].toLowerCase(),attrs:l[2],openEnd:a+1,closeStart:a+1,children:[]};n.length>0?n[n.length-1].children.push(c):t.push(c),"/"!==l[3]&&n.push(c),i=a+1}return 0===n.length?t:null}(e);if(!n)return e;let i=[],r={size:0,weight:400,letterSpacing:0,mono:!1,fontStyle:"normal",fontFamily:t},a=(e,t,n,r=!1)=>{if(eN(e.attrs,"data-prepared-text"))return;let o=eF(t,e),s=r||eN(e.attrs,"data-literal-text"),l="text"===e.name&&!n,c=l||n&&eI(e);if(c&&eN(e.attrs,"textLength"))return;if(c&&!(l&&function e(t){return eO(t).some(t=>eI(t)||e(t))}(e))){let n,r,a,o=(n=[],r=!1,(a=(e,t,i)=>{let o=eF(t,e);if(!(!i&&eI(e))){if(!i&&eN(e.attrs,"textLength")){r=!0;return}for(let t of e.children)if("text-node"===t.kind){let e=eS(t.raw);e.length>0&&n.push({text:e,metrics:o})}else a(t,o,!1)}})(e,t,!0),{runs:n,blocked:r}),l=o.blocked?null:function(e,t=!1){let n=e.filter(e=>e.text.length>0);if(0===n.length||n.every(e=>0===e.text.trim().length))return null;let i=0,r=0,a=0;for(let e of n){if(!(e.metrics.size>0))return null;let n=eg(e.text).length;r>0&&n>0&&(i+=a),i+=e.metrics.mono?eb(e.text,e.metrics.size,e.metrics.letterSpacing,e.metrics.weight,e.metrics.fontStyle,e.metrics.fontFamily):t?ew(e.text,e.metrics.size,e.metrics.weight,e.metrics.fontStyle,e.metrics.fontFamily)+Math.max(0,n-1)*e.metrics.letterSpacing:ev(e.text,e.metrics.size,e.metrics.weight,e.metrics.letterSpacing,e.metrics.fontStyle,e.metrics.fontFamily),r=n,a=e.metrics.letterSpacing}return Math.round(1e3*i)/1e3}(o.runs,s);null!==l&&i.push({offset:e.openEnd-1,text:` textLength="${l}" lengthAdjust="spacingAndGlyphs" data-font-metrics="deterministic-fit"`})}let d=n||l;for(let t of eO(e))a(t,o,d,s)};for(let e of n)a(e,r,!1);let o=e;for(let e of i.sort((e,t)=>t.offset-e.offset))o=o.slice(0,e.offset)+e.text+o.slice(e.offset);return o}($,e.appearance.font)),j($,"font-geometry-fitted SVG output");let S=g.idPrefix??"";S&&j($=u($,S),"namespaced SVG output");let M=e.source.accessibility,C="c4"===y.id?"C4 architecture diagram":void 0;(t.injectAccessibility??!0)&&(M.title||M.descr||C)&&j($=function(e,t,n,i){let r=`${n}svg-title`,a=`${n}svg-desc`,o=[],s=[];if(t.title&&(o.push(`aria-labelledby="${r}"`),s.push(`<title id="${r}">${e9(t.title)}</title>`)),t.descr&&(o.push(`aria-describedby="${a}"`),s.push(`<desc id="${a}">${e9(t.descr)}</desc>`)),0===s.length&&!i)return e;let l=ef(e);if(!l||ep(l,"aria-labelledby")||ep(l,"aria-describedby"))return e;!i||t.title||ep(l,"aria-label")||o.push(`aria-label="${e9(i).replace(/"/g,""")}"`);let c=`${ep(l,"role")?"":' role="img"'} ${o.join(" ")}`,d=e.slice(l.start,l.end);return em(e,l,`${d.slice(0,-1)}${c}>${s.join("")}`)}($,M,S,C),"accessibility-projected SVG output"),i&&($=i.finish($)),j($=function(e){let t=ef(e);if(!t)return e;let n=eh(e);if(0===n.length)return e;let i=`am-${function(e){let t=0xdeadbeef,n=0x41c6ce57;for(let i=0;i<e.length;i++){let r=e.charCodeAt(i);t=Math.imul(t^r,0x9e3779b1),n=Math.imul(n^r,0x5f356495)}return t=Math.imul(t^t>>>16,0x85ebca6b)^Math.imul(n^n>>>13,0xc2b2ae35),n=Math.imul(n^n>>>16,0x85ebca6b)^Math.imul(t^t>>>13,0xc2b2ae35),`${(n>>>0).toString(36).padStart(7,"0")}${(t>>>0).toString(36).padStart(7,"0")}`}(e)}`,r=e;for(let e=n.length-1;e>=0;e--){let t=n[e];r=`${r.slice(0,t.start)}${function e(t,n){let i="",r=0,a=0,o,s=0;for(;r<t.length;){let l=t[r];if(o){"\\"===l?r++:l===o&&(o=void 0),r++;continue}if("/"===l&&"*"===t[r+1]){let e=t.indexOf("*/",r+2);r=e<0?t.length:e+2;continue}if('"'===l||"'"===l)o=l;else if("("===l)s++;else if(")"===l)s=Math.max(0,s-1);else if(";"===l&&0===s)i+=t.slice(a,r+1),a=r+1;else if("{"===l&&0===s){let o=function(e,t){let n=0,i;for(let r=t;r<e.length;r++){let t=e[r];if(i)"\\"===t?r++:t===i&&(i=void 0);else if("/"===t&&"*"===e[r+1]){let t=e.indexOf("*/",r+2);if(t<0)return e.length;r=t+1}else if('"'===t||"'"===t)i=t;else if("{"===t)n++;else if("}"===t&&0==--n)return r}return e.length}(t,r);i+=function(t,n,i){let r=t.match(/^(?:\s*\/\*[\s\S]*?\*\/)*/)[0],a=t.slice(r.length),o=/^\s*@([\w-]+)/.exec(a);if(o){let r=o[1].toLowerCase(),a=e5.has(r)?e(n,i):n;return`${t}{${a}}`}let s=(function(e){let t=[],n=0,i,r=0;for(let a=0;a<e.length;a++){let o=e[a];i?"\\"===o?a++:o===i&&(i=void 0):'"'===o||"'"===o?i=o:"("===o||"["===o?n++:")"===o||"]"===o?n--:","===o&&0===n&&(t.push(e.slice(r,a)),r=a+1)}return t.push(e.slice(r)),t})(a).map(e=>{let t,n;return t=e.match(/^\s*/)[0],0===(n=e.slice(t.length)).length?e:/^svg(?![\w-])/.exec(n)?`${t}svg.${i}${n.slice(3)}`:`${t}.${i} ${n}`}).join(",");return`${r}${s}{${n}}`}(t.slice(a,r),t.slice(r+1,o),n),a=r=o+1;continue}r++}return i+t.slice(a)}(r.slice(t.start,t.end),i)}${r.slice(t.end)}`}let a=r.slice(t.start,t.end),o=ep(t,"class"),s=o?`${a.slice(0,o.valueEnd-t.start)}${o.value?" ":""}${i}${a.slice(o.valueEnd-t.start)}`:`${a.slice(0,-1)} class="${i}">`;return em(r,t,s)}(c($)),"style-scoped SVG output"),g.compact&&j($=d($),"compacted SVG output");let E="png"===e.output?"strict":g.security,O=et("svg-security",()=>x($,E));return n.push(...O.diagnostics),j($=O.svg,"final SVG output"),Object.freeze({svg:$,executionDecision:h.executionDecision,...k?{layoutCertification:k}:{}})})(e,t,n,void 0)));return function(e,t,n){let i=Object.hasOwn(t,"layoutCertification")?t.layoutCertification:void 0;return function(e,t){let n=t,i;return Object.freeze({svg:e,get receipt(){return void 0===i&&(i=n(),n=void 0),i}})}(t.svg,()=>{var r;let a=(j(r=t.svg,"graphical projection digest input"),g(JSON.stringify(r)));return Object.freeze({...h(e,n),graphicalProjectionDigest:a,executionDecision:t.executionDecision,...i?{layoutCertification:Object.freeze({...i,outputDigest:a})}:{}})})}(e,i,n)})(e))}(i)}catch(i){let e=er(i),t=e?e.load:i?.loadHtmlEntityTable,n=e?"ELK"===e.dependency||"YAML"===e.dependency||"Agentic layout"===e.dependency||"Forest layout"===e.dependency?e.dependency:void 0:"function"==typeof t?"HTML entities":void 0;if(!n||"function"!=typeof t||r.has(n)||[...r.values()].includes(t))throw i;r.set(n,t),await t()}}export{te as renderLoadedFamilySvg,tt as renderLoadedFamilySvgWithReceipt};
|