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,4 +1,4 @@
|
|
|
1
|
-
import{b as e,c as t,e as i,f as o,g as r,h as n}from"./chunk-
|
|
1
|
+
import{b as e,c as t,e as i,f as o,g as r,h as n}from"./chunk-64JFHCJC.js";import{c as a}from"./chunk-J57YRC2M.js";import{b as l,e as s,g as c,h as d,i as u,o as p}from"./chunk-XHU3A432.js";import{d as h}from"./chunk-5LKPDHPC.js";import{t as g}from"./chunk-V6I2VGNQ.js";import"./chunk-7UFOFWBA.js";import{c as m}from"./chunk-VRZKI33U.js";import{D as y,a as f,b as b,c as x,d as k,e as v,g as _,i as F}from"./chunk-QVSZOF5M.js";import{B as $,c as S,h as j,k as C,l as M,oa as z,s as W,x as w}from"./chunk-G4JBA7HU.js";import{f as L,i as T,j as A,k as N,l as I,m as D,q as Y,t as P}from"./chunk-3JTYTXA6.js";import{c as H,g as X,h as J}from"./chunk-YVNJDVQO.js";import{Aa as B,C as O,Da as R,E as E,G as G,M as Z,N as Q,O as V,U as U,Vb as q,_ as K,da as ee,o as et,oa as ei,wa as eo,xa as er}from"./chunk-EIYLJ4FI.js";import{s as en,t as ea}from"./chunk-PJJSDGLB.js";import{a as el}from"./chunk-YHMTSXIR.js";import"./chunk-QCU5G5PZ.js";var es=Object.freeze({id:"journey",upstreamId:"journey",maturity:"stable",label:"Journey",headers:["journey"],aliases:[],config:{section:"journey",keys:["diagramMarginX","diagramMarginY","leftMargin","maxLabelWidth","width","height","taskFontSize","taskFontFamily","taskMargin","actorColours","sectionFills","sectionColours","titleColor","titleFontFamily","titleFontSize","useMaxWidth","boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","bottomMarginAdj","rightAngles","activationWidth","textPlacement"],noopKeys:["boxMargin","boxTextMargin","noteMargin","messageMargin","messageAlign","bottomMarginAdj","rightAngles","activationWidth","textPlacement"]},identity:{id:"family:journey",kind:"family",version:"1.0.0",compatibility:{core:"0.5.4"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:["value","category"],semanticRoles:["prelude","defs","chrome","title","series","grid","axis","rail","legend","actor","section","group-header","task","marker-line","label","score"],scenePrimitiveEvidence:[{role:"prelude",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"defs",primitive:"marker",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"chrome",primitive:"document",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"series",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"grid",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"grid",primitive:"connector",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:"rail",primitive:"connector",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:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"actor",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"section",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"section",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"task",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"task",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"task",primitive:"data-mark",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"marker-line",primitive:"connector",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"score",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"score",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"score",primitive:"data-mark",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`journey
|
|
2
2
|
title Checkout
|
|
3
3
|
section Browse
|
|
4
4
|
Find product: 4: Shopper
|
|
@@ -7,10 +7,10 @@ import{b as e,c as t,e as i,f as o,g as r,h as n}from"./chunk-J7FFAFQF.js";impor
|
|
|
7
7
|
`).replace(/\\n/g,`
|
|
8
8
|
`).replace(/<\/?(?:sub|sup|small|mark)\s*>/gi,"").replace(/\*\*(.+?)\*\*/g,"<b>$1</b>").replace(/(?<!\*)\*([^\s*](?:[^*]*[^\s*])?)\*(?!\*)/g,"<i>$1</i>").replace(/~~(.+?)~~/g,"<s>$1</s>").split(/\r?\n/).map(e=>e.trim()).join(`
|
|
9
9
|
`)}function ef(e,t=!1){let i=t?ey(e).split(`
|
|
10
|
-
`).filter(Boolean).join(" / "):ey(e),o=a(i);if(o===i)return{value:o};let r=E(
|
|
10
|
+
`).filter(Boolean).join(" / "):ey(e),o=a(i);if(o===i)return{value:o};let r=E(G(i),j,e=>a(e));return JSON.stringify(eb(r))===JSON.stringify(eb(G(o)))?{value:o}:{value:o,content:{value:o,prepared:r}}}function eb(e){return e.lines.map(e=>e.map(({text:e,bold:t,italic:i,underline:o,strikethrough:r})=>({text:e,bold:t,italic:i,underline:o,strikethrough:r})))}function ex(e,t){return JSON.stringify([e,t?.value===e?eb(t.prepared):null])}function ek(e){return e.startsWith("%%")||e.startsWith("#")||e.startsWith("%")}function ev(e,t,i){let o=(o,r)=>i.issue?.({code:o,lineIndex:t,statement:e,detail:r}),r=w([e],0);if(r){let e=a(ey(r.value));r.title?i.accTitle?.(e,t):i.accDescr?.(e,t);return}let n=e.match(ep);if(n){let r=ef(n[1]);return r.value?void i.title?.(r.value,t,r.content):o("empty_title",`Journey title is empty: "${e}"`)}let l=e.match(eh);if(l){let r=ef(l[1]);return r.value?void i.section?.(r.value,t,r.content):o("section_colon",`Journey section labels must not contain ':': "${e}"`)}let s=e.match(eg);if(s){let r=ef(s[1]);if(!r.value)return o("empty_task_text",`Journey task text is empty: "${e}"`);let n=s[2],a=Number(n);if(!(Number.isFinite(a)&&a>=1&&a<=5))return o("invalid_score",e_(r.value,n));let l=(s[3]??"").split(",").map(e=>ef(e,!0)).filter(e=>e.value);return void i.task?.(r.value,a,l.map(e=>e.value),t,r.content,l.some(e=>e.content)?l.map(e=>e.content):void 0)}let c=e.match(em);if(c){let e=ey(c[1]),t=c[2].trim();if(e&&t)return o("invalid_score",e_(e,t))}return o("unrecognized_line",`Invalid user journey line: "${e}". Expected title, section, accessibility metadata, or "Task name: 3: Actor"`)}function e_(e,t){return`Journey task "${e}" has invalid score ${t}. Expected a finite number from 1 through 5`}var eF=/^&(?:[a-zA-Z][a-zA-Z0-9]{1,31}|#[0-9]{1,7}|#x[0-9a-fA-F]{1,6});$/;function e$(e,t,i,o=0){return t>=o&&i-t+1<=34&&eF.test(e.slice(t,i+1))}function eS(e){let t=-1;for(let i=0;i<e.length;i++)if("&"===e[i]&&(t=i),";"===e[i]&&!e$(e,t,i))return!0;return!1}function ej(e,t){if(!e.trim())return[];if(!e.includes(";"))return[e.trim()];let i=[],o=0,r=-1;for(let n=0;n<e.length;n++)if("&"===e[n]&&(r=n),";"===e[n]){if(e$(e,r,n,o)){t?.();continue}i.push(e.slice(o,n)),o=n+1,r=-1}return i.push(e.slice(o)),i.map(e=>e.trim()).filter(e=>e&&!ek(e))}var eC={nodeLabelFontSize:13,edgeLabelFontSize:11,groupHeaderFontSize:12,nodeLabelFontWeight:500,edgeLabelFontWeight:600,groupHeaderFontWeight:600,nodePaddingX:14,nodePaddingY:12,nodeCornerRadius:5,nodeLineWidth:H.outerBox,edgeLineWidth:H.connector,groupCornerRadius:6,groupPaddingX:16,groupPaddingY:10,groupLabelPaddingX:16,groupLineWidth:H.outerBox};function eM(e={}){var t;let i,o;return i=e.mermaidConfig?.journey,o=ez(i?.titleFontSize,18),{visual:{paddingX:eW(i?.diagramMarginX,32),paddingY:eW(i?.diagramMarginY,28),legendMinWidth:eW(i?.leftMargin,96),maxLabelWidth:eW(i?.maxLabelWidth,360),taskGap:eW(i?.taskMargin,26),taskMinWidth:eW(i?.width,124),taskMinHeight:eW(i?.height,58),titleFontSize:o,titleFontSizeCss:String(i?.titleFontSize??o),titleFontFamily:L(i?.titleFontFamily),titleColor:"string"==typeof(t=i?.titleColor)&&t.trim().length>0?t.trim():void 0,taskFontFamily:L(i?.taskFontFamily),actorColours:i?.actorColours??[],sectionFills:i?.sectionFills??[],sectionColours:i?.sectionColours??[]},styleDefaults:{...eC,nodeLabelFontSize:ez(i?.taskFontSize,eC.nodeLabelFontSize)},useMaxWidth:i?.useMaxWidth===!0}}function ez(e,t){if("number"==typeof e&&Number.isFinite(e)&&e>0)return e;if("string"!=typeof e)return t;let i=e.trim(),o=Number.parseFloat(i);return!Number.isFinite(o)||o<=0?t:/^[0-9.]+(?:px)?$/i.test(i)?o:/^[0-9.]+ex$/i.test(i)?8*o:/^[0-9.]+em$/i.test(i)?o*t:t}function eW(e,t){return"number"==typeof e&&Number.isFinite(e)&&e>0?e:t}function ew(e,t){return void 0!==t&&t!==ex(e)?[t]:[]}function eL(...e){return e.find(e=>void 0!==e&&er(e))}function eT(...e){return e.find(e=>void 0!==e&&null!==B(e))}function eA(e){return B(e)?.[3]===1}function eN(e,t){return`journey-actor-${e%t.actorColors.length}`}function eI(e,t){return t.actorColors[e%t.actorColors.length]}function eD(e,t){return t.sectionBands[e%t.sectionBands.length]}function eY(e,t){return t.sectionTextColors[e%t.sectionTextColors.length]}var eP=S(function(a,l){var s,c;let d,u,p,h,g,m,y,f,b,x,k,v,_,{positioned:F,colors:$,resolved:S}=l,j=S.renderOptions,C=$.font??"Inter",M=j.transparent??!1,W=[],w=S.familyAppearance;if(!w)throw Error("Journey rendering requires request-boundary family appearance resolution");let L=J(j,w.styleDefaults,S.styleFace),H=w.visual,B=(s={sectionCount:F.sections.length,actorCount:F.actors.length},d=L.edgeStrokeColor??"var(--_arrow)",u=L.nodeFillColor??"var(--_node-fill)",p=L.nodeBorderColor??"var(--_node-stroke)",h=function(e,t,i){if(i>6&&eA(e.bg)){let o=eT(t.edgeStrokeColor,e.accent);if(o)return n(i,{accent:o,bg:e.bg})}if(!er(e.bg)||!er(e.fg))return;let o=I(e),r=eL(t.edgeStrokeColor,e.accent,o.arrow);if(r)return n(i,{accent:r,bg:e.bg})}($,L,Math.max(6,s.sectionCount))||[d,"var(--line, var(--_line))","var(--accent, var(--_arrow))","var(--muted, var(--_text-sec))","var(--border, var(--_node-stroke))","var(--fg)"],m=Array.from({length:g=Math.max(H.sectionFills.length,H.sectionColours.length,Math.min(h.length,Math.max(s.sectionCount,1)))},(e,t)=>H.sectionFills[t%H.sectionFills.length]??L.groupFillColor??`color-mix(in srgb, ${h[t%h.length]} ${0===t?8:9}%, var(--bg))`),y=Array.from({length:g},(e,t)=>H.sectionFills[t%H.sectionFills.length]??L.groupHeaderFillColor??`color-mix(in srgb, ${h[t%h.length]} ${0===t?14:16}%, var(--bg))`),f=Array.from({length:g},(e,t)=>{let i=H.sectionFills[t%H.sectionFills.length];return i?`color-mix(in srgb, ${i} ${0===t?42:38}%, var(--bg))`:L.groupBorderColor??`color-mix(in srgb, ${h[t%h.length]} ${0===t?42:38}%, var(--bg))`}),b=y.map((e,t)=>{let i=h[t%h.length];return void 0===H.sectionFills[t%H.sectionFills.length]&&void 0===L.groupHeaderFillColor&&er(i)&&er($.bg)?ei(i,$.bg,0===t?14:16):e}),x=Array.from({length:g},(e,t)=>(function(e,t,i,o){let r=o.bg;if(e){let i=R(e,t,r);if(null!==i&&i>=4.5)return e}else{let e=D(i,o);if(void 0!==e&&er(t))return eo(e,t)}let n=R("#000000",t,r),a=R("#ffffff",t,r);return null!==n&&null!==a?n>=a?"#000000":"#ffffff":i})(H.sectionColours.length>0?H.sectionColours[t%H.sectionColours.length]:void 0,b[t],L.groupTextColor??"var(--_text)",$)),k=H.actorColours.length>0?H.actorColours:function(a,l,s,c){let d=Math.max(c,1);if(d>6&&eA(l.bg)){let e=eT(s.edgeStrokeColor,l.accent);if(e)return n(d,{accent:e,bg:l.bg})}if(er(l.bg)&&er(l.fg)){let a=I(l),c=eL(s.edgeStrokeColor,l.accent,a.arrow);if(c){if(d<=6){let n=function(o,r,n){let[a,l]=e(o),s=i(r),c=l<20?230:a,d=Math.min(72,Math.max(42,l<20?46:l)),u=s?64:38,p=[],h=new Set,g=Math.min(n,256);for(let e=0;p.length<g&&e<4096;e++){let i=Math.floor(e/360),o=t((c+e%360*137.508)%360,Math.max(34,d-i%4*7),Math.max(s?46:24,Math.min(s?78:58,u+(i%2==0?-(2*i):2*i))));h.has(o)||(h.add(o),p.push(o))}return Array.from({length:n},(e,t)=>p[t%p.length])}(c,l.bg,d);if((d<2||o(n)>=.1)&&n.every(e=>R(e,l.bg)>=1.25&&Math.abs(r(e,l.bg))>=15))return n}return n(d,{accent:c,bg:l.bg})}}let u=[a,"var(--line, var(--_line))","var(--accent, var(--_arrow))","var(--muted, var(--_text-sec))","var(--border, var(--_node-stroke))","var(--fg)","color-mix(in srgb, var(--accent, var(--_arrow)) 62%, var(--bg))","color-mix(in srgb, var(--line, var(--_line)) 72%, var(--bg))"];return u.slice(0,Math.max(d<=u.length?d:u.length,1))}(d,$,L,s.actorCount),{arrow:d,nodeFill:u,nodeStroke:p,taskText:L.nodeTextColor??z("var(--_text)",u,$),titleColor:H.titleColor??L.groupTextColor??L.nodeTextColor??"var(--_text)",sectionFills:m,sectionBands:y,sectionStrokes:f,sectionTextColors:x,actorColors:k,scoreFaceFill:`color-mix(in srgb, ${d} 22%, var(--bg))`,scoreFaceStroke:d,scoreFaceInk:L.edgeTextColor??L.nodeTextColor??"var(--_text)"}),O={title:F.accessibilityTitle??F.title?.text,description:F.accessibilityDescription},E=(v=F.sections.flatMap(e=>[e.id,e.label??"",...e.tasks.flatMap(e=>[e.id,e.text,String(e.score),...e.actors])]),`journey-${q(F.width,F.height,F.title?.text??"",F.accessibilityTitle??"",F.accessibilityDescription??"",...v)}`),G={id:`${E}-arrowhead`,shape:"arrow",size:{width:10,height:8},ref:{x:9,y:4},orient:"auto",geometry:{kind:"path",d:"M0,0 L10,4 L0,8 Z"},paint:{fill:B.arrow}},K=`${E}-title`,en=`${E}-desc`,ea=j.journey?.experienceCurve!==!1?F.sections.flatMap(e=>e.tasks.map(e=>e.marker)):[],el=ea.length>=2,es=H.taskFontFamily?`<style>
|
|
11
11
|
.journey-task-text { font-family: ${H.taskFontFamily}; }
|
|
12
|
-
</style>`:void 0;W.push(a.documentOpen({id:"prelude",width:F.width,height:F.height,colors:$,transparent:M,font:C,hasMonoFont:!1,...es?{extraCss:es}:{}},(c=w.useMaxWidth,N(F.width,F.height,$,M,{...c?{width:"100%",height:"100%",style:`max-width:${F.width}px`}:{},attrs:
|
|
13
|
-
${[T($),
|
|
12
|
+
</style>`:void 0;W.push(a.documentOpen({id:"prelude",width:F.width,height:F.height,colors:$,transparent:M,font:C,hasMonoFont:!1,...es?{extraCss:es}:{}},(c=w.useMaxWidth,N(F.width,F.height,$,M,{...c?{width:"100%",height:"100%",style:`max-width:${F.width}px`}:{},attrs:Y(O.title,O.description,K,en,"user journey")})))),O.title&&W.push(a.documentContent({id:"a11y-title",role:"chrome",nonPaint:"accessibility"},`<title id="${K}">${Z(O.title)}</title>`)),O.description&&W.push(a.documentContent({id:"a11y-desc",role:"chrome",nonPaint:"accessibility"},`<desc id="${en}">${Z(O.description)}</desc>`)),W.push(a.documentContent({id:"style",role:"chrome",nonPaint:"stylesheet"},A(C,!1,$.shadow,$.embedFontImport))),W.push(a.definitions({id:"defs",markerResources:[G]},`<defs>
|
|
13
|
+
${[T($),P(G)].filter(Boolean).join(`
|
|
14
14
|
`)}
|
|
15
|
-
</defs>`)),es&&W.push(a.documentContent({id:"journey-style",role:"chrome",nonPaint:"stylesheet"},es)),W.push(function(e,t,i,o){let r=[];for(let o of t.ticks)r.push({indent:2,node:e.connector({id:`score-guide:${o.score}`,role:"grid",geometry:{kind:"line",x1:o.x1,y1:o.y,x2:o.x2,y2:o.y},lineStyle:"solid",paint:{stroke:`color-mix(in srgb, ${i.nodeBorderColor??"var(--_node-stroke)"} 62%, var(--bg))`,strokeWidth:"1"},channels:{value:o.score/5},attributes:{className:"journey-guide"}})}),r.push({indent:2,node:e.text({id:`score-label:${o.score}`,role:"axis",text:o.block?.text??String(o.score),block:o.block,x:o.labelX,y:o.labelY,fontSize:i.edgeLabelFontSize,fontWeight:i.edgeLabelFontWeight,letterSpacing:i.edgeLetterSpacing,anchor:"end",paint:{fill:i.edgeTextColor??"var(--_text-sec)"},channels:{value:o.score/5},attributes:{className:"journey-score-label"}})});let n=t.baseline;return r.push({indent:2,node:e.connector({id:"journey-baseline",role:"rail",geometry:{kind:"line",x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2},lineStyle:"solid",paint:{stroke:i.edgeStrokeColor??"var(--_arrow)",strokeWidth:String(Math.max(2,2*i.lineWidth))},markers:{mid:[],end:o},attributes:{className:"journey-baseline"}})}),e.group({id:"score-guide",role:"grid",open:'<g class="journey-score-guide" data-score-min="1" data-score-max="5">',close:"</g>",children:r})}(a,F.scoreGuide,L,K)),F.actors.length>0&&W.push(function(e,t,i,o,r){let n=t[0],a=n.x-5,l=n.y-26,s=r?.text??P("Actors",i.groupTextTransform),c=[{indent:2,node:e.text({id:"actor-legend-title",role:"legend",text:s,block:r,x:a,y:l,fontSize:i.groupHeaderFontSize,fontWeight:i.groupHeaderFontWeight,letterSpacing:i.groupLetterSpacing,anchor:"start",paint:{fill:i.groupTextColor??"var(--_text-sec)"},attributes:{className:"journey-actor-legend-title"}})}];for(let r of t)c.push({indent:2,node:e.shape({id:q("actor-legend-dot",r.category,...ew(r.category,r.key)),role:"actor",geometry:{kind:"circle",cx:r.x,cy:r.y,r:5},paint:{fill:eD(r.colorIndex,o),stroke:"var(--bg)",strokeWidth:"1"},channels:{category:r.category},attributes:{className:`journey-actor-dot ${eN(r.colorIndex,o)}`,data:{actor:r.category}}})}),c.push({indent:2,node:e.text({id:q("actor-legend-label",r.category,...ew(r.category,r.key)),role:"legend",text:r.label,block:r.block,x:r.x+5+12,y:r.y,fontSize:i.edgeLabelFontSize,fontWeight:i.edgeLabelFontWeight,letterSpacing:i.edgeLetterSpacing,anchor:"start",paint:{fill:i.groupTextColor??"var(--_text-sec)"},channels:{category:r.category},attributes:{className:"journey-actor-legend-text"}})});return e.group({id:"actor-legend",role:"legend",open:'<g class="journey-actor-legend">',close:"</g>",children:c})}(a,F.actors,L,J,F.actorLegendTitle));let ec=j.mermaidConfig?.journey,ed=ec?.sectionFills!==void 0||ec?.sectionColours!==void 0;for(let e of(F.sections.forEach((e,t)=>{e.framed&&W.push(function(e,t,i,o,r,n,a){let l=t.category,s=t.label?` data-label="${G(t.label)}"`:"",c=[];if(c.push({indent:2,node:e.shape({id:`section-bg:${t.id}`,role:"section",geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.height,rx:i.groupCornerRadius,ry:i.groupCornerRadius},paint:{fill:o.sectionFills[r%o.sectionFills.length],stroke:o.sectionStrokes[r%o.sectionStrokes.length],strokeWidth:String(i.groupLineWidth)},attributes:{className:`journey-section-bg journey-section-${r%o.sectionFills.length}`}})}),t.label){let s,d,u,p,h,g,m,y,f,b,x,k,v,_,F=et(n,"group-header",{category:l},{includeFallback:!1}),$=t.block?.text??P(t.label,F?.textTransform??i.groupTextTransform),S=F?.fontSize??i.groupHeaderFontSize,j=F?.fontWeight??i.groupHeaderFontWeight,C=F?.letterSpacing??i.groupLetterSpacing,M=a?eI(r,o):F?.textColor??eI(r,o);c.push({indent:2,node:(d=et(n,"group-header",s={category:t.category},{includeFallback:!1}),u=a?eX(r,o):d?.fillColor??eX(r,o),p=d?.cue??"none",h=d?.strokeColor??d?.borderColor??("none"!==p?"var(--fg)":"none"),m=void 0===(g=d?.lineWidth??("none"!==p?i.groupLineWidth:void 0))?void 0:"outline"===p?g+1:"double-line"===p?g+2:g,y="pattern"===p?"3 2":"double-line"===p?"8 2 2 2":void 0,f=Math.min(6,Math.max(3,t.height/6)),b=Math.max(18,Math.min(t.height-2*f,i.groupHeaderFontSize+i.groupPaddingY)),x=t.x+f,k=t.labelY-b/2,v=Math.max(0,t.width-2*f),_=Math.min(i.groupCornerRadius,b/2),e.shape({id:`section-band:${t.id}`,role:"group-header",geometry:{kind:"rect",x:x,y:k,width:v,height:b,rx:_,ry:_},paint:{fill:u,stroke:h,...void 0!==m?{strokeWidth:String(m)}:{},...y?{strokeDasharray:y}:{}},channels:s,attributes:{className:`journey-section-label-band journey-section-band-${r%o.sectionBands.length}`,..."none"!==p?{data:{"brand-cue":p}}:{}}}))}),c.push({indent:2,node:e.text({id:`section-label:${t.id}`,role:"group-header",text:$,block:t.block,x:t.labelX,y:t.labelY,fontSize:S,fontWeight:j,letterSpacing:C,anchor:"middle",paint:{fill:M},attributes:{className:`journey-section-label journey-section-label-${r%o.sectionTextColors.length}`}})})}return e.group({id:`section:${t.id}`,role:"section",open:`<g class="journey-section" data-id="${U(t.id)}"${s}>`,close:"</g>",children:c,channels:{category:l}})}(a,e,L,J,t,S.styleFace,ed))}),el&&W.push((_=function(e){let t=e[0],i=`M${t.x},${t.y}`,o=[];for(let t=1;t<e.length;t++){let r=e[t-1],n=e[t],a=(n.x-r.x)/3,l={x:r.x+a,y:r.y},s={x:n.x-a,y:n.y};i+=` C${l.x},${l.y} ${s.x},${s.y} ${n.x},${n.y}`,o.push({kind:"cubic",control1:l,control2:s,end:n})}return V(i,t,o)}(ea.map(e=>({x:e.cx,y:e.cy}))),a.connector({id:"experience-curve",role:"series",geometry:_.geometry,lineStyle:"solid",paint:{stroke:`color-mix(in srgb, ${J.arrow} 55%, var(--bg))`,strokeWidth:String(Math.max(2,2*L.lineWidth)),strokeLinecap:"round"},route:{ownership:"family",contours:_.contours},attributes:{className:"journey-curve"}}))),F.sections))for(let t of e.tasks)W.push(function(e,t,i,o,r){var n,a;let l=i?` data-section="${U(i)}"`:"",s=t.actors.length>0?` data-actors="${U(t.actors.join(", "))}"`:"",c=t.score/5,d=i?{value:c,category:i}:{value:c},u=[{indent:2,node:(n=t.track,e.connector({id:`track:${t.id}`,role:"marker-line",geometry:{kind:"line",x1:n.x,y1:n.y1,x2:n.x,y2:n.y2},lineStyle:"dashed",paint:{stroke:`color-mix(in srgb, ${r.nodeStroke} 78%, var(--bg))`,strokeWidth:String(o.lineWidth),strokeDasharray:"4 7"},channels:{value:t.score/5},attributes:{className:"journey-track"}}))},{indent:2,node:e.shape({id:`task-box:${t.id}`,role:"task",geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.height,rx:o.cornerRadius??0,ry:o.cornerRadius??0},paint:{fill:r.nodeFill,stroke:r.nodeStroke,strokeWidth:String(o.nodeLineWidth)},channels:d,attributes:{className:"journey-task-box"}})},{indent:2,node:e.text({id:`task-label:${t.id}`,role:"label",text:t.text,block:t.block,x:t.textX,y:t.textY,fontSize:o.nodeLabelFontSize,fontWeight:o.nodeLabelFontWeight,letterSpacing:o.nodeLetterSpacing,anchor:"middle",paint:{fill:r.taskText},channels:d,attributes:{className:"journey-task-text"}})}],p=new Map;for(let i of t.actorDots){let o=i.key??ex(i.label),n=p.get(o)??0;p.set(o,n+1),u.push({indent:2,node:(a=t.id,e.shape({id:q("actor-dot",a,i.label,...ew(i.label,i.key),...n>0?[n]:[]),role:"actor",geometry:{kind:"circle",cx:i.x,cy:i.y,r:i.r},paint:{fill:eD(i.colorIndex,r),stroke:"var(--bg)",strokeWidth:"1"},channels:{category:i.label},attributes:{className:`journey-actor-dot ${eN(i.colorIndex,r)}`,data:{actor:i.label}}}))})}return u.push({indent:2,node:function(e,t,i,o,r){let n=t.cy-4.5,a=t.cx-5.5,l=t.cx+5.5,s=function(e){let t=e.cx,i=e.cy;return e.score>=4.5?`M${t-8},${i+4} Q${t},${i+13} ${t+8},${i+4}`:e.score>3?`M${t-8},${i+5} Q${t},${i+11} ${t+8},${i+5}`:3===e.score?`M${t-8},${i+6} L${t+8},${i+6}`:e.score>=1.5?`M${t-8},${i+10} Q${t},${i+2} ${t+8},${i+10}`:`M${t-9},${i+11} Q${t},${i} ${t+9},${i+11}`}(t);return e.group({id:`score-marker:${i}`,role:"score",open:`<g class="journey-score-marker" data-score="${t.score}">`,close:"</g>",children:[{indent:2,node:e.shape({id:`score-face:${i}`,role:"score",geometry:{kind:"circle",cx:t.cx,cy:t.cy,r:t.r},paint:{fill:o.scoreFaceFill,stroke:o.scoreFaceStroke,strokeWidth:"1.2"},channels:r,attributes:{className:"journey-score-face"}})},{indent:2,node:e.shape({id:`score-eye-left:${i}`,role:"score",geometry:{kind:"circle",cx:a,cy:n,r:2},paint:{fill:o.scoreFaceInk},channels:r,attributes:{className:"journey-face-eye"}})},{indent:2,node:e.shape({id:`score-eye-right:${i}`,role:"score",geometry:{kind:"circle",cx:l,cy:n,r:2},paint:{fill:o.scoreFaceInk},channels:r,attributes:{className:"journey-face-eye"}})},{indent:2,node:e.shape({id:`score-mouth:${i}`,role:"score",geometry:{kind:"path",d:s},paint:{fill:"none",stroke:o.scoreFaceInk,strokeWidth:"1.6",strokeLinecap:"round"},channels:r,attributes:{className:"journey-face-mouth"}})}],channels:r})}(e,t.marker,t.id,r,d)}),e.group({id:`task:${t.id}`,role:"task",open:`<g class="journey-task" data-id="${U(t.id)}" data-score="${t.score}"${l}${s}>`,close:"</g>",children:u,channels:d})}(a,t,e.label,L,J));return F.title&&W.push(a.text({id:"title",role:"title",text:F.title.text,block:F.title.block,x:F.title.x,y:F.title.y,fontSize:H.titleFontSize,fontWeight:600,anchor:"middle",paint:{fill:J.titleColor},attributes:{className:"journey-title"}})),W.push(a.documentClose()),{family:"journey",width:F.width,height:F.height,colors:$,transparent:M,parts:W}}),eH=k(es,{configDiagnostics:e=>h("journey",e,ec),normalizeRequest:e=>({appearance:{family:eM(e.renderOptions)}}),layout:e=>x(function(e,t,i={},o){let r=t.visual,n=B(i,t.styleDefaults,o),a=e.sections.some(e=>!!e.label),l=e.title?K(J(e.title,e.titleContent),{transform:n.groupTextTransform,fontSize:r.titleFontSize,fontWeight:600,letterSpacing:n.groupLetterSpacing,fontFamily:r.titleFontFamily}):void 0,s=l?.text,c=(function(e){let t=[],i=new Set;for(let o of e.sections)for(let e of o.tasks)for(let[o,r]of e.actors.entries()){let n=ex(r,e.actorContents?.[o]);i.has(n)||(i.add(n),t.push({value:r,content:e.actorContents?.[o]}))}return t})(e).map(e=>{let t=K(J(e.value,e.content),{transform:n.edgeTextTransform,fontSize:n.edgeLabelFontSize,fontWeight:n.edgeLabelFontWeight,letterSpacing:n.edgeLetterSpacing,maxWidth:r.maxLabelWidth});return{raw:e.value,key:ex(e.value,e.content),label:t.text,block:t}}),d=new Map(c.map((e,t)=>[e.key,t])),u=c.map(e=>e.block),p=K("Actors",{transform:n.groupTextTransform,fontSize:n.groupHeaderFontSize,fontWeight:n.groupHeaderFontWeight,letterSpacing:n.groupLetterSpacing}),h=[5,4,3,2,1].map(e=>K(String(e),{transform:n.edgeTextTransform,fontSize:n.edgeLabelFontSize,fontWeight:n.edgeLabelFontWeight,letterSpacing:n.edgeLetterSpacing})),g=c.length>0?Math.max(r.legendMinWidth,22+Math.max(p.width,...u.map(e=>e.width))):0,m=e.sections.map(e=>{let t=e.label??e.id,i=et(o,"group-header",{category:t},{includeFallback:!1}),a=i?.fontSize??n.groupHeaderFontSize,l=i?.fontWeight??n.groupHeaderFontWeight,s=i?.letterSpacing??n.groupLetterSpacing,c=e.label?K(J(e.label,e.labelContent),{transform:i?.textTransform??n.groupTextTransform,fontSize:a,fontWeight:l,letterSpacing:s,fontFamily:i?.fontFamily??n.groupFont,maxWidth:r.maxLabelWidth}):void 0,d=c?.text,u=c?.width??0,p=c?.height??0,h=e.tasks.map(e=>{var t,i;let o,a,l,s,c,d;return t=J(e.text,e.textContent),i=e.actors.length,a=(o=K(t,{transform:n.nodeTextTransform,fontSize:n.nodeLabelFontSize,fontWeight:n.nodeLabelFontWeight,letterSpacing:n.nodeLetterSpacing,fontFamily:r.taskFontFamily,maxWidth:r.maxLabelWidth})).text,l=i>0?4*i*2+(i-1)*8:0,s=Math.max(r.taskMinWidth,o.width+2*n.nodePaddingX,l+2*n.nodePaddingX),c=8*(i>0),d=Math.max(r.taskMinHeight,2*n.nodePaddingY+o.height+(c>0?12+c:0)),{text:a,block:o,textWidth:o.width,textHeight:o.height,actorDotsWidth:l,width:s,height:d}}),g=Math.max(r.taskMinWidth,u+32);return{category:t,label:d,block:c,labelWidth:u,labelHeight:p,tasks:h,emptyWidth:g}}),y=Math.max(r.taskMinHeight,...m.flatMap(e=>e.tasks.map(e=>e.height))),f=r.paddingY;l&&(f+=l.height+22);let b=a?Math.max(36,...m.map(e=>e.label?e.labelHeight+2*n.groupPaddingY:0)):0,x=f,k=Math.max(x+(a?b+30:0),c.length>0?21+p.height/2:0),v=k+y+56,_=v+160+32,F=r.paddingX+g+26*(g>0)+Math.max(22,...h.map(e=>e.width+12)),$=F,S=[];for(let t=0;t<e.sections.length;t++){let i=e.sections[t],o=m[t],a=!!o.label;t>0&&($+=8);let l=o.tasks.length>0?o.tasks.reduce((e,t)=>e+t.width,0)+(o.tasks.length-1)*r.taskGap:0,s=a?Math.max(l>0?l+20:o.emptyWidth,o.labelWidth+32):Math.max(l,0===o.tasks.length?o.emptyWidth:0),c=$,u=[],p=c+(s-l)/2;for(let e=0;e<i.tasks.length;e++){let t=i.tasks[e],a=o.tasks[e];e>0&&(p+=r.taskGap);let l=p,s=l+a.width/2,c=v+(5-t.score)*40,h=function(e,t,i,o){let r=e.actors.length;if(0===r)return[];let n=i-(4*r*2+(r-1)*8)/2+4;return e.actors.map((i,r)=>{let a={label:i,key:ex(i,e.actorContents?.[r]),colorIndex:t.get(ex(i,e.actorContents?.[r]))??0,x:n,y:o,r:4};return n+=16,a})}(t,d,s,k+a.height-n.nodePaddingY-4);u.push({id:t.id,sectionId:i.id,text:a.text,block:a.block,score:t.score,actors:t.actors,x:l,y:k,width:a.width,height:a.height,textX:s,textY:k+n.nodePaddingY+a.textHeight/2,centerX:s,track:{x:s,y1:k+a.height,y2:_},marker:{cx:s,cy:c,r:16,score:t.score},actorDots:h}),p+=a.width}$=c+s,S.push({id:i.id,category:o.category,label:o.label,block:o.block,x:c,y:x,width:s,height:a?b:0,labelX:c+s/2,labelY:x+b/2,framed:a,headerHeight:a?b:0,tasks:u})}let j=Math.max($+28,F+200),C=Math.max(Math.max(j,...S.map(e=>e.x+e.width))+r.paddingX,l?l.width+2*r.paddingX:0),M=k+5,z=c.map((e,t)=>{let i=u[t],o={category:e.raw,key:e.key,label:e.label,block:e.block,x:r.paddingX+5,y:M,colorIndex:t},n=e.label.includes(`
|
|
16
|
-
`);return M+=n?Math.max(22,i.height+8):22,o}),W=z.length>0?Math.max(...z.map(e=>e.y+Math.max(5,(e.block?.height??0)/2))):0;return{width:C,height:Math.max(_+6+r.paddingY,W+r.paddingY),title:s?{text:s,block:l,x:C/2,y:r.paddingY+l.height/2}:void 0,accessibilityTitle:e.accessibilityTitle,accessibilityDescription:e.accessibilityDescription,actors:z,actorLegendTitle:p,scoreGuide:{x:F,y:v,width:j-F,height:160,ticks:[5,4,3,2,1].map((e,t)=>{let i=v+(5-e)*40;return{score:e,block:h[t],x1:F,x2:j,y:i,labelX:F-12,labelY:i}}),baseline:{x1:F,y1:_,x2:j,y2:_}},sections:S}}(g(function(e,t={}){let i={sections:[],...$(t)};v("journey")&&(_("journey","header",e[0]??"",{line:1,unit:"normalized"}),F("journey","initialize",i));let o,r=0,n=0;return function(e,t,i){for(let t=1;t<e.length;t++){let o=e[t].trim();if(ek(o)&&!/^#\w+;/.test(o))continue;let r=C(eu(e[t].trim()));if(!r||ek(r))continue;let n=w(e,t);if(void 0===n)return void i.issue?.({code:"unclosed_accdescr",lineIndex:t,statement:r,detail:'Journey accDescr block is missing a closing "}"'});if(n?.form==="block"){i.accDescr?.(a(ey(C(eu(n.value)))),t),t=n.endIndex;let e=C(eu(n.suffixLine??"")),o=w([e],0);if(o?.form==="inline"){let e=a(ey(o.value));o.title?i.accTitle?.(e,t):i.accDescr?.(e,t);continue}for(let o of(eS(e)&&i.statementDelimiter?.(t),i.entitySemicolon&&ej(n.suffixLine??"",()=>i.entitySemicolon(t)),ej(e)))if("stop"===ev(o,n.endIndex,i))return;continue}if(n?.form==="inline"){let e=a(ey(C(eu(n.value))));n.title?i.accTitle?.(e,t):i.accDescr?.(e,t);continue}for(let o of(eS(r)&&i.statementDelimiter?.(t),i.entitySemicolon&&ej(e[t].trim(),()=>i.entitySemicolon(t)),ej(r)))if("stop"===ev(o,t,i))return}}(e,0,{title:(e,t,o)=>{v("journey")&&_("journey","title",e,{line:t+1,unit:"normalized"}),i.title=e,o?i.titleContent=o:delete i.titleContent,v("journey")&&F("journey","setTitle",e,{line:t+1,unit:"normalized"})},accTitle:(e,t)=>{v("journey")&&_("journey","accTitle",e,{line:t+1,unit:"normalized"}),i.accessibilityTitle=e,v("journey")&&F("journey","setAccessibilityTitle",e,{line:t+1,unit:"normalized"})},accDescr:(e,t)=>{v("journey")&&_("journey","accDescr",e,{line:t+1,unit:"normalized"}),i.accessibilityDescription=e,v("journey")&&F("journey","setAccessibilityDescription",e,{line:t+1,unit:"normalized"})},section:(e,t,n)=>{v("journey")&&_("journey","section",e,{line:t+1,unit:"normalized"}),o={id:`section-${r++}`,label:e,...n?{labelContent:n}:{},tasks:[]},i.sections.push(o),v("journey")&&F("journey","addSection",o,{line:t+1,unit:"normalized"})},task:(e,t,a,l,s,c)=>{v("journey")&&_("journey","task",e,{line:l+1,unit:"normalized"});let d={id:`task-${n++}`,text:e,...s?{textContent:s}:{},score:t,actors:a,...c?{actorContents:c}:{}};(o||(o={id:`section-${r++}`,tasks:[]},i.sections.push(o),v("journey")&&F("journey","addImplicitSection",o),o)).tasks.push(d),v("journey")&&F("journey","addTask",{...d,sectionId:o.id},{line:l+1,unit:"normalized"})},issue:e=>{throw v("journey")&&_("journey",`invalid:${e.code}`,e.statement,{line:e.lineIndex+1,unit:"normalized"}),function(e){switch(e.code){case"section_colon":return W({what:`Invalid user journey section: "${e.statement}"`,expectedForm:"section Section name",example:"section Go to work"});case"empty_task_text":return W({what:`Invalid user journey task: "${e.statement}"`,expectedForm:"Task name: score: Actor[, Actor…]",example:"Pay: 3: Shopper"});case"invalid_score":case"unclosed_accdescr":return Error(e.detail);case"empty_title":case"unrecognized_line":return Error(`Invalid user journey line: "${e.statement}". Expected title, section, accessibility metadata, or "Task name: 3: Actor"`)}}(e)}}),i}(e.source.authoredFamilyLines??e.source.familyLines,e.source.accessibility),e.source.frontmatter),e.familyAppearance??eM(e.renderOptions),e.renderOptions,e.styleFace)),projectPositioned:f(function({positioned:e}){let t=[],i=[];for(let o of e.sections){let e=[];for(let i of o.tasks)t.push({id:i.id,x:m(i.x),y:m(i.y),w:m(i.width),h:m(i.height),shape:"rectangle",label:i.text,...y(i.block,i.textX,i.textY,i)}),e.push(i.id);let r=o.tasks.length>0?Math.max(o.y+o.height,...o.tasks.map(e=>e.y+e.height)):o.y+o.height;i.push({id:o.id,x:m(o.x),y:m(o.y),w:m(o.width),h:m(r-o.y),members:e,label:o.label})}return{version:1,nodes:t,edges:[],groups:i,bounds:{w:m(e.width),h:m(e.height)}}}),lowerScene:b(
|
|
15
|
+
</defs>`)),es&&W.push(a.documentContent({id:"journey-style",role:"chrome",nonPaint:"stylesheet"},es)),W.push(function(e,t,i,o){let r=[];for(let o of t.ticks)r.push({indent:2,node:e.connector({id:`score-guide:${o.score}`,role:"grid",geometry:{kind:"line",x1:o.x1,y1:o.y,x2:o.x2,y2:o.y},lineStyle:"solid",paint:{stroke:`color-mix(in srgb, ${i.nodeBorderColor??"var(--_node-stroke)"} 62%, var(--bg))`,strokeWidth:"1"},channels:{value:o.score/5},attributes:{className:"journey-guide"}})}),r.push({indent:2,node:e.text({id:`score-label:${o.score}`,role:"axis",text:o.block?.text??String(o.score),block:o.block,x:o.labelX,y:o.labelY,fontSize:i.edgeLabelFontSize,fontWeight:i.edgeLabelFontWeight,letterSpacing:i.edgeLetterSpacing,anchor:"end",paint:{fill:i.edgeTextColor??"var(--_text-sec)"},channels:{value:o.score/5},attributes:{className:"journey-score-label"}})});let n=t.baseline;return r.push({indent:2,node:e.connector({id:"journey-baseline",role:"rail",geometry:{kind:"line",x1:n.x1,y1:n.y1,x2:n.x2,y2:n.y2},lineStyle:"solid",paint:{stroke:i.edgeStrokeColor??"var(--_arrow)",strokeWidth:String(Math.max(2,2*i.lineWidth))},markers:{mid:[],end:o},attributes:{className:"journey-baseline"}})}),e.group({id:"score-guide",role:"grid",open:'<g class="journey-score-guide" data-score-min="1" data-score-max="5">',close:"</g>",children:r})}(a,F.scoreGuide,L,G)),F.actors.length>0&&W.push(function(e,t,i,o,r){let n=t[0],a=n.x-5,l=n.y-26,s=r?.text??X("Actors",i.groupTextTransform),c=[{indent:2,node:e.text({id:"actor-legend-title",role:"legend",text:s,block:r,x:a,y:l,fontSize:i.groupHeaderFontSize,fontWeight:i.groupHeaderFontWeight,letterSpacing:i.groupLetterSpacing,anchor:"start",paint:{fill:i.groupTextColor??"var(--_text-sec)"},attributes:{className:"journey-actor-legend-title"}})}];for(let r of t)c.push({indent:2,node:e.shape({id:U("actor-legend-dot",r.category,...ew(r.category,r.key)),role:"actor",geometry:{kind:"circle",cx:r.x,cy:r.y,r:5},paint:{fill:eI(r.colorIndex,o),stroke:"var(--bg)",strokeWidth:"1"},channels:{category:r.category},attributes:{className:`journey-actor-dot ${eN(r.colorIndex,o)}`,data:{actor:r.category}}})}),c.push({indent:2,node:e.text({id:U("actor-legend-label",r.category,...ew(r.category,r.key)),role:"legend",text:r.label,block:r.block,x:r.x+5+12,y:r.y,fontSize:i.edgeLabelFontSize,fontWeight:i.edgeLabelFontWeight,letterSpacing:i.edgeLetterSpacing,anchor:"start",paint:{fill:i.groupTextColor??"var(--_text-sec)"},channels:{category:r.category},attributes:{className:"journey-actor-legend-text"}})});return e.group({id:"actor-legend",role:"legend",open:'<g class="journey-actor-legend">',close:"</g>",children:c})}(a,F.actors,L,B,F.actorLegendTitle));let ec=j.mermaidConfig?.journey,ed=ec?.sectionFills!==void 0||ec?.sectionColours!==void 0;for(let e of(F.sections.forEach((e,t)=>{e.framed&&W.push(function(e,t,i,o,r,n,a){let l=t.category,s=t.label?` data-label="${V(t.label)}"`:"",c=[];if(c.push({indent:2,node:e.shape({id:`section-bg:${t.id}`,role:"section",geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.height,rx:i.groupCornerRadius,ry:i.groupCornerRadius},paint:{fill:o.sectionFills[r%o.sectionFills.length],stroke:o.sectionStrokes[r%o.sectionStrokes.length],strokeWidth:String(i.groupLineWidth)},attributes:{className:`journey-section-bg journey-section-${r%o.sectionFills.length}`}})}),t.label){let s,d,u,p,h,g,m,y,f,b,x,k,v,_,F=et(n,"group-header",{category:l},{includeFallback:!1}),$=t.block?.text??X(t.label,F?.textTransform??i.groupTextTransform),S=F?.fontSize??i.groupHeaderFontSize,j=F?.fontWeight??i.groupHeaderFontWeight,C=F?.letterSpacing??i.groupLetterSpacing,M=a?eY(r,o):F?.textColor??eY(r,o);c.push({indent:2,node:(d=et(n,"group-header",s={category:t.category},{includeFallback:!1}),u=a?eD(r,o):d?.fillColor??eD(r,o),p=d?.cue??"none",h=d?.strokeColor??d?.borderColor??("none"!==p?"var(--fg)":"none"),m=void 0===(g=d?.lineWidth??("none"!==p?i.groupLineWidth:void 0))?void 0:"outline"===p?g+1:"double-line"===p?g+2:g,y="pattern"===p?"3 2":"double-line"===p?"8 2 2 2":void 0,f=Math.min(6,Math.max(3,t.height/6)),b=Math.max(18,Math.min(t.height-2*f,i.groupHeaderFontSize+i.groupPaddingY)),x=t.x+f,k=t.labelY-b/2,v=Math.max(0,t.width-2*f),_=Math.min(i.groupCornerRadius,b/2),e.shape({id:`section-band:${t.id}`,role:"group-header",geometry:{kind:"rect",x:x,y:k,width:v,height:b,rx:_,ry:_},paint:{fill:u,stroke:h,...void 0!==m?{strokeWidth:String(m)}:{},...y?{strokeDasharray:y}:{}},channels:s,attributes:{className:`journey-section-label-band journey-section-band-${r%o.sectionBands.length}`,..."none"!==p?{data:{"brand-cue":p}}:{}}}))}),c.push({indent:2,node:e.text({id:`section-label:${t.id}`,role:"group-header",text:$,block:t.block,x:t.labelX,y:t.labelY,fontSize:S,fontWeight:j,letterSpacing:C,anchor:"middle",paint:{fill:M},attributes:{className:`journey-section-label journey-section-label-${r%o.sectionTextColors.length}`}})})}return e.group({id:`section:${t.id}`,role:"section",open:`<g class="journey-section" data-id="${Q(t.id)}"${s}>`,close:"</g>",children:c,channels:{category:l}})}(a,e,L,B,t,S.styleFace,ed))}),el&&W.push((_=function(e){let t=e[0],i=`M${t.x},${t.y}`,o=[];for(let t=1;t<e.length;t++){let r=e[t-1],n=e[t],a=(n.x-r.x)/3,l={x:r.x+a,y:r.y},s={x:n.x-a,y:n.y};i+=` C${l.x},${l.y} ${s.x},${s.y} ${n.x},${n.y}`,o.push({kind:"cubic",control1:l,control2:s,end:n})}return ee(i,t,o)}(ea.map(e=>({x:e.cx,y:e.cy}))),a.connector({id:"experience-curve",role:"series",geometry:_.geometry,lineStyle:"solid",paint:{stroke:`color-mix(in srgb, ${B.arrow} 55%, var(--bg))`,strokeWidth:String(Math.max(2,2*L.lineWidth)),strokeLinecap:"round"},route:{ownership:"family",contours:_.contours},attributes:{className:"journey-curve"}}))),F.sections))for(let t of e.tasks)W.push(function(e,t,i,o,r){var n,a;let l=i?` data-section="${Q(i)}"`:"",s=t.actors.length>0?` data-actors="${Q(t.actors.join(", "))}"`:"",c=t.score/5,d=i?{value:c,category:i}:{value:c},u=[{indent:2,node:(n=t.track,e.connector({id:`track:${t.id}`,role:"marker-line",geometry:{kind:"line",x1:n.x,y1:n.y1,x2:n.x,y2:n.y2},lineStyle:"dashed",paint:{stroke:`color-mix(in srgb, ${r.nodeStroke} 78%, var(--bg))`,strokeWidth:String(o.lineWidth),strokeDasharray:"4 7"},channels:{value:t.score/5},attributes:{className:"journey-track"}}))},{indent:2,node:e.shape({id:`task-box:${t.id}`,role:"task",geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.height,rx:o.cornerRadius??0,ry:o.cornerRadius??0},paint:{fill:r.nodeFill,stroke:r.nodeStroke,strokeWidth:String(o.nodeLineWidth)},channels:d,attributes:{className:"journey-task-box"}})},{indent:2,node:e.text({id:`task-label:${t.id}`,role:"label",text:t.text,block:t.block,x:t.textX,y:t.textY,fontSize:o.nodeLabelFontSize,fontWeight:o.nodeLabelFontWeight,letterSpacing:o.nodeLetterSpacing,anchor:"middle",paint:{fill:r.taskText},channels:d,attributes:{className:"journey-task-text"}})}],p=new Map;for(let i of t.actorDots){let o=i.key??ex(i.label),n=p.get(o)??0;p.set(o,n+1),u.push({indent:2,node:(a=t.id,e.shape({id:U("actor-dot",a,i.label,...ew(i.label,i.key),...n>0?[n]:[]),role:"actor",geometry:{kind:"circle",cx:i.x,cy:i.y,r:i.r},paint:{fill:eI(i.colorIndex,r),stroke:"var(--bg)",strokeWidth:"1"},channels:{category:i.label},attributes:{className:`journey-actor-dot ${eN(i.colorIndex,r)}`,data:{actor:i.label}}}))})}return u.push({indent:2,node:function(e,t,i,o,r){let n=t.cy-4.5,a=t.cx-5.5,l=t.cx+5.5,s=function(e){let t=e.cx,i=e.cy;return e.score>=4.5?`M${t-8},${i+4} Q${t},${i+13} ${t+8},${i+4}`:e.score>3?`M${t-8},${i+5} Q${t},${i+11} ${t+8},${i+5}`:3===e.score?`M${t-8},${i+6} L${t+8},${i+6}`:e.score>=1.5?`M${t-8},${i+10} Q${t},${i+2} ${t+8},${i+10}`:`M${t-9},${i+11} Q${t},${i} ${t+9},${i+11}`}(t);return e.group({id:`score-marker:${i}`,role:"score",open:`<g class="journey-score-marker" data-score="${t.score}">`,close:"</g>",children:[{indent:2,node:e.shape({id:`score-face:${i}`,role:"score",geometry:{kind:"circle",cx:t.cx,cy:t.cy,r:t.r},paint:{fill:o.scoreFaceFill,stroke:o.scoreFaceStroke,strokeWidth:"1.2"},channels:r,attributes:{className:"journey-score-face"}})},{indent:2,node:e.shape({id:`score-eye-left:${i}`,role:"score",geometry:{kind:"circle",cx:a,cy:n,r:2},paint:{fill:o.scoreFaceInk},channels:r,attributes:{className:"journey-face-eye"}})},{indent:2,node:e.shape({id:`score-eye-right:${i}`,role:"score",geometry:{kind:"circle",cx:l,cy:n,r:2},paint:{fill:o.scoreFaceInk},channels:r,attributes:{className:"journey-face-eye"}})},{indent:2,node:e.shape({id:`score-mouth:${i}`,role:"score",geometry:{kind:"path",d:s},paint:{fill:"none",stroke:o.scoreFaceInk,strokeWidth:"1.6",strokeLinecap:"round"},channels:r,attributes:{className:"journey-face-mouth"}})}],channels:r})}(e,t.marker,t.id,r,d)}),e.group({id:`task:${t.id}`,role:"task",open:`<g class="journey-task" data-id="${Q(t.id)}" data-score="${t.score}"${l}${s}>`,close:"</g>",children:u,channels:d})}(a,t,e.label,L,B));return F.title&&W.push(a.text({id:"title",role:"title",text:F.title.text,block:F.title.block,x:F.title.x,y:F.title.y,fontSize:H.titleFontSize,fontWeight:600,anchor:"middle",paint:{fill:B.titleColor},attributes:{className:"journey-title"}})),W.push(a.documentClose()),{family:"journey",width:F.width,height:F.height,colors:$,transparent:M,parts:W}}),eH=k(es,{configDiagnostics:e=>h("journey",e,ec),normalizeRequest:e=>({appearance:{family:eM(e.renderOptions)}}),layout:e=>x(function(e,t,i={},o){let r=t.visual,n=J(i,t.styleDefaults,o),a=e.sections.some(e=>!!e.label),l=e.title?K(O(e.title,e.titleContent),{transform:n.groupTextTransform,fontSize:r.titleFontSize,fontWeight:600,letterSpacing:n.groupLetterSpacing,fontFamily:r.titleFontFamily}):void 0,s=l?.text,c=(function(e){let t=[],i=new Set;for(let o of e.sections)for(let e of o.tasks)for(let[o,r]of e.actors.entries()){let n=ex(r,e.actorContents?.[o]);i.has(n)||(i.add(n),t.push({value:r,content:e.actorContents?.[o]}))}return t})(e).map(e=>{let t=K(O(e.value,e.content),{transform:n.edgeTextTransform,fontSize:n.edgeLabelFontSize,fontWeight:n.edgeLabelFontWeight,letterSpacing:n.edgeLetterSpacing,maxWidth:r.maxLabelWidth});return{raw:e.value,key:ex(e.value,e.content),label:t.text,block:t}}),d=new Map(c.map((e,t)=>[e.key,t])),u=c.map(e=>e.block),p=K("Actors",{transform:n.groupTextTransform,fontSize:n.groupHeaderFontSize,fontWeight:n.groupHeaderFontWeight,letterSpacing:n.groupLetterSpacing}),h=[5,4,3,2,1].map(e=>K(String(e),{transform:n.edgeTextTransform,fontSize:n.edgeLabelFontSize,fontWeight:n.edgeLabelFontWeight,letterSpacing:n.edgeLetterSpacing})),g=c.length>0?Math.max(r.legendMinWidth,22+Math.max(p.width,...u.map(e=>e.width))):0,m=e.sections.map(e=>{let t=e.label??e.id,i=et(o,"group-header",{category:t},{includeFallback:!1}),a=i?.fontSize??n.groupHeaderFontSize,l=i?.fontWeight??n.groupHeaderFontWeight,s=i?.letterSpacing??n.groupLetterSpacing,c=e.label?K(O(e.label,e.labelContent),{transform:i?.textTransform??n.groupTextTransform,fontSize:a,fontWeight:l,letterSpacing:s,fontFamily:i?.fontFamily??n.groupFont,maxWidth:r.maxLabelWidth}):void 0,d=c?.text,u=c?.width??0,p=c?.height??0,h=e.tasks.map(e=>{var t,i;let o,a,l,s,c,d;return t=O(e.text,e.textContent),i=e.actors.length,a=(o=K(t,{transform:n.nodeTextTransform,fontSize:n.nodeLabelFontSize,fontWeight:n.nodeLabelFontWeight,letterSpacing:n.nodeLetterSpacing,fontFamily:r.taskFontFamily,maxWidth:r.maxLabelWidth})).text,l=i>0?4*i*2+(i-1)*8:0,s=Math.max(r.taskMinWidth,o.width+2*n.nodePaddingX,l+2*n.nodePaddingX),c=8*(i>0),d=Math.max(r.taskMinHeight,2*n.nodePaddingY+o.height+(c>0?12+c:0)),{text:a,block:o,textWidth:o.width,textHeight:o.height,actorDotsWidth:l,width:s,height:d}}),g=Math.max(r.taskMinWidth,u+32);return{category:t,label:d,block:c,labelWidth:u,labelHeight:p,tasks:h,emptyWidth:g}}),y=Math.max(r.taskMinHeight,...m.flatMap(e=>e.tasks.map(e=>e.height))),f=r.paddingY;l&&(f+=l.height+22);let b=a?Math.max(36,...m.map(e=>e.label?e.labelHeight+2*n.groupPaddingY:0)):0,x=f,k=Math.max(x+(a?b+30:0),c.length>0?21+p.height/2:0),v=k+y+56,_=v+160+32,F=r.paddingX+g+26*(g>0)+Math.max(22,...h.map(e=>e.width+12)),$=F,S=[];for(let t=0;t<e.sections.length;t++){let i=e.sections[t],o=m[t],a=!!o.label;t>0&&($+=8);let l=o.tasks.length>0?o.tasks.reduce((e,t)=>e+t.width,0)+(o.tasks.length-1)*r.taskGap:0,s=a?Math.max(l>0?l+20:o.emptyWidth,o.labelWidth+32):Math.max(l,0===o.tasks.length?o.emptyWidth:0),c=$,u=[],p=c+(s-l)/2;for(let e=0;e<i.tasks.length;e++){let t=i.tasks[e],a=o.tasks[e];e>0&&(p+=r.taskGap);let l=p,s=l+a.width/2,c=v+(5-t.score)*40,h=function(e,t,i,o){let r=e.actors.length;if(0===r)return[];let n=i-(4*r*2+(r-1)*8)/2+4;return e.actors.map((i,r)=>{let a={label:i,key:ex(i,e.actorContents?.[r]),colorIndex:t.get(ex(i,e.actorContents?.[r]))??0,x:n,y:o,r:4};return n+=16,a})}(t,d,s,k+a.height-n.nodePaddingY-4);u.push({id:t.id,sectionId:i.id,text:a.text,block:a.block,score:t.score,actors:t.actors,x:l,y:k,width:a.width,height:a.height,textX:s,textY:k+n.nodePaddingY+a.textHeight/2,centerX:s,track:{x:s,y1:k+a.height,y2:_},marker:{cx:s,cy:c,r:16,score:t.score},actorDots:h}),p+=a.width}$=c+s,S.push({id:i.id,category:o.category,label:o.label,block:o.block,x:c,y:x,width:s,height:a?b:0,labelX:c+s/2,labelY:x+b/2,framed:a,headerHeight:a?b:0,tasks:u})}let j=Math.max($+28,F+200),C=Math.max(Math.max(j,...S.map(e=>e.x+e.width))+r.paddingX,l?l.width+2*r.paddingX:0),M=k+5,z=c.map((e,t)=>{let i=u[t],o={category:e.raw,key:e.key,label:e.label,block:e.block,x:r.paddingX+5,y:M,colorIndex:t},n=e.label.includes(`
|
|
16
|
+
`);return M+=n?Math.max(22,i.height+8):22,o}),W=z.length>0?Math.max(...z.map(e=>e.y+Math.max(5,(e.block?.height??0)/2))):0;return{width:C,height:Math.max(_+6+r.paddingY,W+r.paddingY),title:s?{text:s,block:l,x:C/2,y:r.paddingY+l.height/2}:void 0,accessibilityTitle:e.accessibilityTitle,accessibilityDescription:e.accessibilityDescription,actors:z,actorLegendTitle:p,scoreGuide:{x:F,y:v,width:j-F,height:160,ticks:[5,4,3,2,1].map((e,t)=>{let i=v+(5-e)*40;return{score:e,block:h[t],x1:F,x2:j,y:i,labelX:F-12,labelY:i}}),baseline:{x1:F,y1:_,x2:j,y2:_}},sections:S}}(g(function(e,t={}){let i={sections:[],...$(t)};v("journey")&&(_("journey","header",e[0]??"",{line:1,unit:"normalized"}),F("journey","initialize",i));let o,r=0,n=0;return function(e,t,i){for(let t=1;t<e.length;t++){let o=e[t].trim();if(ek(o)&&!/^#\w+;/.test(o))continue;let r=C(eu(e[t].trim()));if(!r||ek(r))continue;let n=w(e,t);if(void 0===n)return void i.issue?.({code:"unclosed_accdescr",lineIndex:t,statement:r,detail:'Journey accDescr block is missing a closing "}"'});if(n?.form==="block"){i.accDescr?.(a(ey(C(eu(n.value)))),t),t=n.endIndex;let e=C(eu(n.suffixLine??"")),o=w([e],0);if(o?.form==="inline"){let e=a(ey(o.value));o.title?i.accTitle?.(e,t):i.accDescr?.(e,t);continue}for(let o of(eS(e)&&i.statementDelimiter?.(t),i.entitySemicolon&&ej(n.suffixLine??"",()=>i.entitySemicolon(t)),ej(e)))if("stop"===ev(o,n.endIndex,i))return;continue}if(n?.form==="inline"){let e=a(ey(C(eu(n.value))));n.title?i.accTitle?.(e,t):i.accDescr?.(e,t);continue}for(let o of(eS(r)&&i.statementDelimiter?.(t),i.entitySemicolon&&ej(e[t].trim(),()=>i.entitySemicolon(t)),ej(r)))if("stop"===ev(o,t,i))return}}(e,0,{title:(e,t,o)=>{v("journey")&&_("journey","title",e,{line:t+1,unit:"normalized"}),i.title=e,o?i.titleContent=o:delete i.titleContent,v("journey")&&F("journey","setTitle",e,{line:t+1,unit:"normalized"})},accTitle:(e,t)=>{v("journey")&&_("journey","accTitle",e,{line:t+1,unit:"normalized"}),i.accessibilityTitle=e,v("journey")&&F("journey","setAccessibilityTitle",e,{line:t+1,unit:"normalized"})},accDescr:(e,t)=>{v("journey")&&_("journey","accDescr",e,{line:t+1,unit:"normalized"}),i.accessibilityDescription=e,v("journey")&&F("journey","setAccessibilityDescription",e,{line:t+1,unit:"normalized"})},section:(e,t,n)=>{v("journey")&&_("journey","section",e,{line:t+1,unit:"normalized"}),o={id:`section-${r++}`,label:e,...n?{labelContent:n}:{},tasks:[]},i.sections.push(o),v("journey")&&F("journey","addSection",o,{line:t+1,unit:"normalized"})},task:(e,t,a,l,s,c)=>{v("journey")&&_("journey","task",e,{line:l+1,unit:"normalized"});let d={id:`task-${n++}`,text:e,...s?{textContent:s}:{},score:t,actors:a,...c?{actorContents:c}:{}};(o||(o={id:`section-${r++}`,tasks:[]},i.sections.push(o),v("journey")&&F("journey","addImplicitSection",o),o)).tasks.push(d),v("journey")&&F("journey","addTask",{...d,sectionId:o.id},{line:l+1,unit:"normalized"})},issue:e=>{throw v("journey")&&_("journey",`invalid:${e.code}`,e.statement,{line:e.lineIndex+1,unit:"normalized"}),function(e){switch(e.code){case"section_colon":return W({what:`Invalid user journey section: "${e.statement}"`,expectedForm:"section Section name",example:"section Go to work"});case"empty_task_text":return W({what:`Invalid user journey task: "${e.statement}"`,expectedForm:"Task name: score: Actor[, Actor…]",example:"Pay: 3: Shopper"});case"invalid_score":case"unclosed_accdescr":return Error(e.detail);case"empty_title":case"unrecognized_line":return Error(`Invalid user journey line: "${e.statement}". Expected title, section, accessibility metadata, or "Task name: 3: Actor"`)}}(e)}}),i}(e.source.authoredFamilyLines??e.source.familyLines,e.source.accessibility),e.source.frontmatter),e.familyAppearance??eM(e.renderOptions),e.renderOptions,e.styleFace)),projectPositioned:f(function({positioned:e}){let t=[],i=[];for(let o of e.sections){let e=[];for(let i of o.tasks)t.push({id:i.id,x:m(i.x),y:m(i.y),w:m(i.width),h:m(i.height),shape:"rectangle",label:i.text,...y(i.block,i.textX,i.textY,i)}),e.push(i.id);let r=o.tasks.length>0?Math.max(o.y+o.height,...o.tasks.map(e=>e.y+e.height)):o.y+o.height;i.push({id:o.id,x:m(o.x),y:m(o.y),w:m(o.width),h:m(r-o.y),members:e,label:o.label})}return{version:1,nodes:t,edges:[],groups:i,bounds:{w:m(e.width),h:m(e.height)}}}),lowerScene:b(eP)});export{eH as default};
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import{a as e,b as t}from"./chunk-
|
|
1
|
+
import{a as e,b as t}from"./chunk-TT5GR5EJ.js";import{d as i}from"./chunk-J57YRC2M.js";import{a as a,b as n}from"./chunk-D6MQ7QSU.js";import{b as r,c as o,e as s,f as l}from"./chunk-XHU3A432.js";import{b as d,d as c}from"./chunk-5LKPDHPC.js";import{p as h,t as p,v as m,y as u}from"./chunk-V6I2VGNQ.js";import{d as f}from"./chunk-7UFOFWBA.js";import{a as g}from"./chunk-IUI4DYC3.js";import{a as b,c as k}from"./chunk-VRZKI33U.js";import{D as x,a as y,b as v,c as w,d as _,e as $,f as S,g as W,i as M}from"./chunk-QVSZOF5M.js";import{J as I,M as j,c as F,m as U,qa as C,s as E,x as z}from"./chunk-G4JBA7HU.js";import"./chunk-3JTYTXA6.js";import{h as T,l as O,n as L,o as K}from"./chunk-YVNJDVQO.js";import{N as B,Qb as N,_ as R,aa as Y}from"./chunk-EIYLJ4FI.js";import{M as D}from"./chunk-PJJSDGLB.js";import"./chunk-YHMTSXIR.js";import"./chunk-QCU5G5PZ.js";var P=Object.freeze({id:"kanban",upstreamId:"kanban",maturity:"stable",label:"Kanban",headers:["kanban"],aliases:[],config:{section:"kanban",keys:["padding","sectionWidth","ticketBaseUrl","useMaxWidth"],noopKeys:["useMaxWidth"]},identity:{id:"family:kanban",kind:"family",version:"1.0.0",compatibility:{core:"0.5.4"},provenance:{owner:"agentic-mermaid",source:"built-in"}},collisionPriority:100,semanticChannels:[],semanticRoles:["prelude","chrome","title","node","label","group","group-header"],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:"title",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"node",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"label",primitive:"text",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group",primitive:"container",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]},{role:"group-header",primitive:"shape",applicability:"applicable",realization:"native",evidence:["src/__tests__/section-a-family-descriptor-conformance.test.ts"]}],example:`kanban
|
|
2
2
|
todo[To do]
|
|
3
3
|
parser[Build parser]
|
|
4
4
|
done[Done]
|
|
5
|
-
research[Research]`,detect:
|
|
6
|
-
`),c=s?/\r|\n/g:/\r\n?|\n/g,p=d.split(c),m=d.match(c)??[],u=2,f=0;for(;p.length&&(!p[0].trim()||p[0].trim().startsWith("%%"));)f+=p[0].length+(m[0]?.length??0),p.shift(),m.shift(),u++;let g=f,b=p.shift()??"";f+=b.length+(m[0]?.length??0);let k=(e,t,i)=>{if(!l)return;let n=a(e);n>=0&&l(e.slice(n+2).trim(),t,{start:i+n+2,end:i+e.length})};k(b,u-1,g),m.shift();let x=f,y=$("kanban")||l?p.map((e,t)=>{let i=x;return x+=e.length+(m[t]?.length??0),i}):void 0;if(
|
|
5
|
+
research[Research]`,detect:D,detectLoose:D});function H(e={}){let t=u(e,["kanban"])??{};return{padding:"number"==typeof t.padding&&Number.isFinite(t.padding)&&t.padding>=0?t.padding:8,sectionWidth:"number"==typeof t.sectionWidth&&Number.isFinite(t.sectionWidth)&&t.sectionWidth>0?t.sectionWidth:240,ticketBaseUrl:"string"==typeof t.ticketBaseUrl?t.ticketBaseUrl:""}}function J(e,t){if(!e||!t)return;let i=e.replaceAll("#TICKET#",encodeURIComponent(t));return/^(?:https?:|mailto:|\/|#)/i.test(i)&&f(i)&&!/[\u0000-\u0020\u007f-\u009f]/.test(i)?i:void 0}var A=/(\(\(|\{\{|\(-|-\)|\)\)|\[|\(|\))/,G={"[":"]","(":")","((":"))","{{":"}}",")":"(","))":"((","(-":"-)","-)":"(-"};function Q(r,o={},s,l){let d="string"==typeof r?r:r.join(`
|
|
6
|
+
`),c=s?/\r|\n/g:/\r\n?|\n/g,p=d.split(c),m=d.match(c)??[],u=2,f=0;for(;p.length&&(!p[0].trim()||p[0].trim().startsWith("%%"));)f+=p[0].length+(m[0]?.length??0),p.shift(),m.shift(),u++;let g=f,b=p.shift()??"";f+=b.length+(m[0]?.length??0);let k=(e,t,i)=>{if(!l)return;let n=a(e);n>=0&&l(e.slice(n+2).trim(),t,{start:i+n+2,end:i+e.length})};k(b,u-1,g),m.shift();let x=f,y=$("kanban")||l?p.map((e,t)=>{let i=x;return x+=e.length+(m[t]?.length??0),i}):void 0;if(W("kanban","header",b,{line:u-1,unit:"normalized"}),!/^kanban\s*$/i.test(n(b).trim()))throw E({what:"Invalid Kanban header",expectedForm:"kanban",example:`kanban
|
|
7
7
|
Todo
|
|
8
|
-
task[Write documentation]`});let v={kind:"kanban",columns:[],accessibilityTitle:o.title,accessibilityDescription:o.descr},w=new Set,_=new Map,
|
|
9
|
-
`)+p[++a];let l=i.indexOf(o,s);if(l<0)throw b("Unclosed Kanban quoted label",g+
|
|
10
|
-
`)+p[++a];let r=i.indexOf(t);if(r<0)throw b("Unclosed Kanban label",g+
|
|
8
|
+
task[Write documentation]`});let v={kind:"kanban",columns:[],accessibilityTitle:o.title,accessibilityDescription:o.descr},w=new Set,_=new Map,S,F,C,T=(e,t)=>{if(!s)return`line ${u+e}, column ${t+1}`;let i=s.originalText.split(/\r\n?|\n/),a=(s.wrapperSource?.match(/\r\n?|\n/g)?.length??0)+1;for(let n=0;n<=e;n++){let r=p[n].trim();for(;a<i.length&&i[a].trim()!==r;)a++;if(a>=i.length)break;if(n===e){let e=i[a].length-i[a].trimStart().length,r=p[n].length-p[n].trimStart().length;return`line ${a+1}, column ${t+e-r+1}`}a++}return`line ${u+e}, column ${t+1}`};for(let a=0;a<p.length;a++){var O;let r=p[a],s=0,d=r.trim();if(!d||d.startsWith("%%"))continue;let c=z(p,a);if(c){if(c.title&&void 0===o.title?v.accessibilityTitle=c.value:c.title||void 0!==o.descr||(v.accessibilityDescription=c.value),a=c.endIndex,!c.suffixLine)continue;r=c.suffixLine,s=p[a].length-r.length,d=r.trim()}let f=a,g=r.length-r.trimStart().length,b=(e,t,i,a=f)=>E({what:`Kanban syntax at ${T(a,t)}: ${e}`,expectedForm:i,example:"task[Work]@{ assigned: Alice }"});if(d.startsWith(":::")||d.startsWith("::icon(")){if(!C)throw b("Kanban decoration has no preceding item",g,"a column or task before its decoration");if(d.startsWith(":::"))k(d.slice(3),a+u,(y?.[a]??0)+s+g+3),C.className=n(d.slice(3)).trim();else{let e=/^::icon\(([^)]*)\)\s*(?:%%.*)?$/.exec(d);if(!e)throw b("Invalid Kanban icon decoration",g,"::icon(icon-name)");k(d.slice(d.indexOf(")")+1),a+u,(y?.[a]??0)+s+g+d.indexOf(")")+1),C.icon=e[1].trim()}W("kanban",d.startsWith(":::")?"class":"icon",r,{line:a+u,unit:"normalized"}),$("kanban")&&M("kanban",d.startsWith(":::")?"set-class":"set-icon",{id:C.id,sourceId:C.sourceId,value:d.startsWith(":::")?C.className:C.icon});continue}let x="",L="",K=!1,B=g,N="",R=d.indexOf("@{"),Y=A.exec(R<0?d:d.slice(0,R));if(Y){K=!(x=d.slice(0,Y.index).trim());let e=Y[0],t=G[e],i=d.slice(Y.index+e.length),n;if(i.startsWith('"')){let r=i.startsWith('"`'),o=r?'`"':'"',s=r?2:1;for(B=g+Y.index+e.length+s;0>i.indexOf(o,s)&&a+1<p.length;)i+=("\r"===m[a]?"\r":`
|
|
9
|
+
`)+p[++a];let l=i.indexOf(o,s);if(l<0)throw b("Unclosed Kanban quoted label",g+Y.index+e.length,`closing ${o}${t}`);if(L=i.slice(s,l),n=l+o.length,!i.slice(n).startsWith(t))throw b("Unclosed Kanban label",g+Y.index,`closing ${t}`);n+=t.length}else{for(B=g+Y.index+e.length;!i.includes(t)&&a+1<p.length;)i+=("\r"===m[a]?"\r":`
|
|
10
|
+
`)+p[++a];let r=i.indexOf(t);if(r<0)throw b("Unclosed Kanban label",g+Y.index,`closing ${t}`);L=i.slice(0,r),n=r+t.length}N=i.slice(n).trim(),K&&(x=L)}else{let e=R<0?d:d.slice(0,R);k(e,a+u,(y?.[a]??0)+s+g),x=L=n(e).trim(),N=R<0?"":d.slice(R)}if(!x||!L)throw b("Empty Kanban item",g,"a column or card with a non-empty label");let D=L,P={},H;if(N.startsWith("@{")){let i=p.slice(f,a+1).join(`
|
|
11
11
|
`),n=i.lastIndexOf(N),r=N,o=t(r,1,"flowchart");for(;!o.ok&&o.unclosed&&a+1<p.length;)r+=`
|
|
12
12
|
`+p[++a],o=t(r,1,"flowchart");if(!o.ok){let e=i.slice(0,n),t=e.split(`
|
|
13
13
|
`).length-1,a=n-(e.lastIndexOf(`
|
|
14
|
-
`)+1);throw b(`Invalid Kanban metadata (${o.message})`,a,"a closed @{ key: value } metadata mapping",f+t)}if(
|
|
14
|
+
`)+1);throw b(`Invalid Kanban metadata (${o.message})`,a,"a closed @{ key: value } metadata mapping",f+t)}if(P=Object.fromEntries(o.entries),$("kanban")&&(H=function(t,i){let a,n=0,r=h(t,1,"flowchart",(e,t,i)=>{let r=e-2+n;(a??=[]).push({start:r,end:r+i,sourceStart:e-2,sourceEnd:t-2}),n+=i-(t-e)});if("closed"!==r.kind)return[];let o=[],s=e(r.body),l=s.text.includes(`
|
|
15
15
|
`),d=2*!l,c=l?`${s.text}
|
|
16
16
|
`:`{
|
|
17
17
|
${s.text}
|
|
18
|
-
}`,p=e=>{let t=s.sourceOffset(Math.max(0,Math.min(s.text.length,e-d))),n=0,r=a?.length??0;for(;n<r;){let e=n+r>>>1;a[e].start<=t?n=e+1:r=e}let o=a?.[n-1];return i+2+(o?t<o.end?o.sourceStart:t-o.end+o.sourceEnd:t)};for(let e of I(c))o.push({name:s.restore(e.name),keyStart:p(e.keyStart),keyEnd:p(e.keyEnd),valueStart:p(e.valueStart),valueEnd:p(e.valueEnd)});return o}(r,n)),N=r.slice(o.end+1).trim(),
|
|
19
|
-
`),{line:f+u,offset:y[f],endOffset:y[a]+p[a].length,unit:"normalized"}),x=i(x),
|
|
20
|
-
`).length-1)},()=>
|
|
18
|
+
}`,p=e=>{let t=s.sourceOffset(Math.max(0,Math.min(s.text.length,e-d))),n=0,r=a?.length??0;for(;n<r;){let e=n+r>>>1;a[e].start<=t?n=e+1:r=e}let o=a?.[n-1];return i+2+(o?t<o.end?o.sourceStart:t-o.end+o.sourceEnd:t)};for(let e of I(c))o.push({name:s.restore(e.name),keyStart:p(e.keyStart),keyEnd:p(e.keyEnd),valueStart:p(e.valueStart),valueEnd:p(e.valueEnd)});return o}(r,n)),N=r.slice(o.end+1).trim(),P.shape&&("string"!=typeof P.shape||P.shape!==P.shape.toLowerCase()||P.shape.includes("_")))throw b("Invalid Kanban metadata shape",g,"a lowercase shape without underscores");P.label&&(L=String(P.label))}if(n(N).trim())throw b(`Unexpected Kanban suffix: ${N}`,g,"a node followed by optional @{ metadata }");let J=l?p[a].length-p[a].trimEnd().length:0;k(N,a+u,(y?.[a]??0)+p[a].length-J-N.length),$("kanban")&&W("kanban","node",p.slice(f,a+1).join(`
|
|
19
|
+
`),{line:f+u,offset:y[f],endOffset:y[a]+p[a].length,unit:"normalized"}),x=i(x),L=((O=P.label)?i(U(String(O))):void 0)??i(L);let Q=_.get(x)??0;_.set(x,Q+1);let V=Q?`${x}#${Q+1}`:x;for(;w.has(V);)V+="#";w.add(V);let X={id:V,sourceId:x,...K?{implicitId:!0}:{},label:L,metadata:P,...P.icon?{icon:String(P.icon)}:{}};if(S??=g,g<S)throw b(`Items without section detected, found section ("${L}")`,g,"columns at the first column indentation and cards indented beneath them");if(g===S)F={...X,tasks:[]},v.columns.push(F),C=F,$("kanban")&&M("kanban","add-column",{...X,indent:g,declaredStart:s+g,declaredLabel:D,declaredLabelStart:s+B,...H?{metadataSpans:H}:{}});else{if(!F)throw Error("Kanban card has no column");F.tasks.push(X),C=X,$("kanban")&&M("kanban","add-task",{...X,indent:g,declaredStart:s+g,declaredLabel:D,declaredLabelStart:s+B,parentId:F.sourceId,...H?{metadataSpans:H}:{}})}j("nodes",w.size)}return v}var V=F(function(e,{positioned:t,colors:i,resolved:a}){let n=T(a.renderOptions,void 0,a.styleFace),r=C(i),o=a.renderOptions.transparent??!1,s=[];t.title&&s.push(e.text(K(t.title,n)));let l=(t,i,a,n)=>e.text({id:t,role:"label",owner:n,text:i.block.text,block:i.block,x:i.x,y:i.y,fontSize:i.block.fontSize,fontWeight:i.block.fontWeight,letterSpacing:i.block.letterSpacing,anchor:"start",paint:{fill:a}});for(let i of t.columns){let t=n.groupFillColor??"var(--_group-fill)",o=n.groupHeaderFillColor??"var(--_group-hdr)",d=[e.shape({id:`${i.id}:surface`,role:"group",identity:!1,owner:{id:i.id,role:"group"},geometry:{kind:"rect",x:i.x,y:i.y,width:i.width,height:i.height,rx:n.groupCornerRadius},paint:{fill:t,stroke:n.groupBorderColor??"var(--_node-stroke)",strokeWidth:String(n.groupLineWidth)}}),e.shape({id:`${i.id}:header`,role:"group-header",owner:{id:i.id,role:"group"},geometry:{kind:"rect",x:i.x,y:i.y,width:i.width,height:i.headerHeight,rx:n.groupCornerRadius},paint:{fill:o,stroke:"none"}})],c=n.groupTextColor??r("var(--_text)",o);for(let t of(i.texts.forEach((e,t)=>d.push(l(`${i.id}:text-${t}`,e,c,{id:i.id,role:"group"}))),i.tasks)){let o=n.nodeFillColor??"var(--_node-fill)",s=n.nodeTextColor??r("var(--_text)",o),c=[e.shape({id:`${t.id}:surface`,role:"node",identity:!1,owner:{id:t.id,role:"node"},geometry:{kind:"rect",x:t.x,y:t.y,width:t.width,height:t.height,rx:n.cornerRadius??5},paint:{fill:o,stroke:n.nodeBorderColor??"var(--_node-stroke)",strokeWidth:String(n.nodeLineWidth)}})];t.texts.forEach((e,i)=>c.push(l(`${t.id}:text-${i}`,e,s,{id:t.id,role:"node"})));let h=t.className?.split(/\s+/).filter(e=>/^[\w-]+$/.test(e)).join(" "),p=t.ticketUrl&&"strict"!==a.renderOptions.security?` data-href="${B(t.ticketUrl)}" role="link" tabindex="0"`:"";d.push(e.group({id:t.id,role:"node",open:`<g data-id="${B(t.id)}" data-parent="${B(i.id)}"${h?` class="${B(h)}"`:""}${p}>`,close:"</g>",children:c.map(e=>({node:e,indent:2}))}))}let h=i.className?.split(/\s+/).filter(e=>/^[\w-]+$/.test(e)).join(" ");s.push(e.group({id:i.id,role:"group",open:`<g data-id="${B(i.id)}"${h?` class="${B(h)}"`:""}>`,close:"</g>",children:d.map(e=>({node:e,indent:2}))}))}return g(e,"kanban",t,i,o,s)}),X=_(P,{statementEnds:function(e){let t=e.map((e,t)=>t);try{S("kanban",i=>{if("statement"!==i.unit||"node"!==i.kind||!i.source?.line||void 0===i.text)return;let a=i.source.line-1;t[a]=Math.min(e.length-1,a+i.text.split(`
|
|
20
|
+
`).length-1)},()=>Q(e),{mutations:[]})}catch(e){if(e instanceof N)throw e}return t},configDiagnostics:e=>{let t=c("kanban",e,{padding:o,sectionWidth:r,ticketBaseUrl:l,useMaxWidth:s}),i=d(e.root,"kanban")?.ticketBaseUrl;return"string"==typeof i&&i&&!J(i,"TICKET")&&t.push({code:"INEFFECTIVE_CONFIG",field:"kanban.ticketBaseUrl",message:"kanban.ticketBaseUrl is not a safe inert link; ticket text is preserved without navigation."}),t},normalizeRequest:e=>({familyConfig:{visual:H(e.source.frontmatter)}}),layout:e=>w(function(e,t={},i=H(),a){j("nodes",e.columns.reduce((e,t)=>e+t.tasks.length+1,0));let n=T(t,void 0,a),r=t.padding??24,o=Math.max(4,i.padding),s=Math.max(8,n.nodePaddingX),l=Math.max(8,n.nodePaddingY),d=a?.group?.paddingX??o,c=a?.group?.paddingY??o,h=a?.group?.paddingX??o+s,p=a?.group?.paddingY??l,m=Math.max(160,2*d+2*s+24,2*h+24),u=t.kanban?.maxWidth,f=Math.max(void 0===u?0:m,Math.min(Math.max(i.sectionWidth,2*d+2*s+24,2*h+24),void 0===u?1/0:u-2*r)),g=Math.max(16,2*o),b=O(e.title,n),k=(e,i)=>{let a,r;return(a=[{text:e.label,kind:"label"}],e.metadata.ticket&&a.push({text:String(e.metadata.ticket),kind:"ticket"}),e.metadata.assigned&&a.push({text:`Assigned: ${e.metadata.assigned}`,kind:"assigned"}),e.metadata.priority&&a.push({text:`Priority: ${e.metadata.priority}`,kind:"priority"}),(r=e.icon??e.metadata.icon)&&a.push({text:`Icon: ${r}`,kind:"icon"}),a).map(({text:e,kind:a})=>{let r="label"===a,o=R(e,{display:"formatted",transform:i?n.groupTextTransform:n.nodeTextTransform,fontSize:i?n.groupHeaderFontSize:r?n.nodeLabelFontSize:n.edgeLabelFontSize,fontWeight:i?n.groupHeaderFontWeight:r?n.nodeLabelFontWeight:n.edgeLabelFontWeight,letterSpacing:i?n.groupLetterSpacing:n.nodeLetterSpacing,fontFamily:i?n.groupFont??t.font:t.font,maxWidth:f-2*(i?h:d+s)});return{text:e,kind:a,block:o,x:0,y:0}})},x=e.columns.map(e=>Y(k(e,!0),{top:r+(b?.height??0)+p,gap:6,trailingGap:!0})),y=Math.max(32,...x.map(e=>e.height+2*p)),v=[];e.columns.forEach((e,t)=>{let a=r+t*(f+g),n=r+(b?.height??0),p=x[t].rows.map(({item:e,textY:t})=>(e.x=a+h,e.y=t,e)),m=n+y+c,u=e.tasks.map(t=>{let n=Y(k(t,!1),{top:m+l,gap:6}),r=Math.max(40,n.height+2*l),c=n.rows.map(({item:e,textY:t})=>(e.x=a+d+s,e.y=t,e)),h={...t,parentId:e.id,x:a+d,y:m,width:f-2*d,height:r,texts:c,...t.metadata.ticket?{ticketUrl:J(i.ticketBaseUrl,String(t.metadata.ticket))}:{}};return m+=r+o,h});v.push({...e,x:a,y:n,width:f,height:m-n+c,headerHeight:y,texts:p,tasks:u})});let w=Math.max(y+2*c,...v.map(e=>e.height));for(let e of v)e.height=w;let _=void 0===u?Math.max(1,v.length):Math.max(1,Math.floor((u-2*r+g)/(f+g))),$=w;if(_<v.length){let e=r+(b?.height??0);for(let t=0;t<v.length;t+=_){for(let[i,a]of v.slice(t,t+_).entries()){let t=r+i*(f+g)-a.x,n=e-a.y;for(let e of(a.x+=t,a.y+=n,a.texts))e.x+=t,e.y+=n;for(let e of a.tasks)for(let i of(e.x+=t,e.y+=n,e.texts))i.x+=t,i.y+=n}e+=w+g}$=e-g-r-(b?.height??0)}let S=Math.min(v.length,_),W=Math.max(2*r+Math.max(0,S*f+Math.max(0,S-1)*g),(b?.width??0)+2*r);return{columns:v,visual:i,width:W,height:2*r+(b?.height??0)+$,...b?{title:L(b,W,r)}:{}}}(p(Q(m(e.source),e.source.accessibility,e.source),e.source.frontmatter),e.renderOptions,e.familyConfig?.visual??H(),e.styleFace)),projectPositioned:y(function({positioned:e}){return{version:1,nodes:e.columns.flatMap(t=>t.tasks.map(i=>({id:i.id,parentId:t.id,x:k(i.x),y:k(i.y),w:k(i.width),h:k(i.height),shape:"rectangle",label:i.label,...x(i.texts[0]?.block,i.texts[0]?.x??i.x,i.texts[0]?.y??i.y,b(e),"start")}))),edges:[],groups:e.columns.map(e=>({id:e.id,label:e.label,x:k(e.x),y:k(e.y),w:k(e.width),h:k(e.height),members:e.tasks.map(e=>e.id)})),bounds:{w:k(e.width),h:k(e.height)}}}),lowerScene:v(V)});export{X as default};
|