@hardikg/mdview 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +63 -0
- package/README.md +52 -10
- package/bin/chunk-RBYD2HWV.mjs +196 -0
- package/bin/chunk-WWM6JNAS.mjs +209 -0
- package/bin/chunk-XFRQFZZ4.mjs +20 -0
- package/bin/mdview.mjs +521 -1323
- package/bin/regex-worker.mjs +52 -0
- package/bin/server-KALIU7HM.mjs +1854 -0
- package/bin/shiki-5SFVA32N.mjs +13 -0
- package/dist/client/assets/23I4SOAX-BN9xvzna.js +2 -0
- package/dist/client/assets/26H2HVXD-Cu1OTMxT.js +2 -0
- package/dist/client/assets/2IZ5MNOH-DMjMO3_9.js +1 -0
- package/dist/client/assets/2P3CZEXH-D-4BP7dg.js +2 -0
- package/dist/client/assets/3E5HRNYT-DUYblpdl.js +5 -0
- package/dist/client/assets/3JIRLDUO-C1CwW1Ha.js +1 -0
- package/dist/client/assets/5MJ3UKSG-DtT76qKq.js +2 -0
- package/dist/client/assets/5THPTBWS-Ce_hS451.js +1 -0
- package/dist/client/assets/7WLXJQOR-D6QVYUu9.js +1 -0
- package/dist/client/assets/A255FCTW-woaH7Mj_.js +1 -0
- package/dist/client/assets/AM43MQ64-CsWC_OQH.js +2 -0
- package/dist/client/assets/AOZTNTMC-BIehUQHD.js +5 -0
- package/dist/client/assets/AQNLM6KG-DIUuJgPm.js +4 -0
- package/dist/client/assets/BNU2RHQB-DeXpwU5k.js +2 -0
- package/dist/client/assets/C5HTQT3I-7U13x70S.js +4 -0
- package/dist/client/assets/CPKRWH5G-CRxaqyOs.js +12 -0
- package/dist/client/assets/CUVCMPQX-JTGMOfG2.js +1 -0
- package/dist/client/assets/D4V2MWCI-CytzCr6g.js +1 -0
- package/dist/client/assets/DHKBVIA3-CVnlqiEq.js +1 -0
- package/dist/client/assets/DKTLEL5E-DciMwFJ1.js +1 -0
- package/dist/client/assets/DUZNPW7S-D3pifVNb.js +2 -0
- package/dist/client/assets/E3FWOBN4-D5m5o2g0.js +4 -0
- package/dist/client/assets/E65FQMJL-Bg5F0Zo8.js +1 -0
- package/dist/client/assets/FTXIJQGB-CggtIYAM.js +1 -0
- package/dist/client/assets/G3MDBVQH-BZmnMkFw.js +1 -0
- package/dist/client/assets/G3OATVW2-VpVvT5i2.js +8 -0
- package/dist/client/assets/IV52FOAS-DgPxxRI4.js +5 -0
- package/dist/client/assets/JTJEEBDN-Bl0iUT_r.js +2 -0
- package/dist/client/assets/K7FUICZ3-DgoihkiR.js +2 -0
- package/dist/client/assets/LHH2HHRB-BXHTnBD0.js +2 -0
- package/dist/client/assets/MSPQPZZY-DQg7F6a8.js +4 -0
- package/dist/client/assets/OB6ZFVKF-UHmC8m-y.js +2 -0
- package/dist/client/assets/PLTZDMI2-C1ZAoc-e.js +1 -0
- package/dist/client/assets/R7EPXMMD-ChI1SqjJ.js +5 -0
- package/dist/client/assets/RVARI57O-CgA1WoRv.js +1 -0
- package/dist/client/assets/SPBWZ4VS-EqfCsJ5V.js +1 -0
- package/dist/client/assets/SR7OOV3Q-CFnFs0kL.js +4 -0
- package/dist/client/assets/STAXBNH4-D4c13Xlj.js +2 -0
- package/dist/client/assets/SXFARSFO-CkFSkgdi.js +1 -0
- package/dist/client/assets/TC77ISAL--WP0GBo0.js +2 -0
- package/dist/client/assets/TYIQQHVC-B67pCpxM.js +13 -0
- package/dist/client/assets/TZUXETIT-BFD9W5hl.js +2 -0
- package/dist/client/assets/U7N72BGE-Do3829la.js +6 -0
- package/dist/client/assets/UFPIB6EZ-DTs_MyQv.js +3 -0
- package/dist/client/assets/UO52YEYL-DN1qbGwF.js +3 -0
- package/dist/client/assets/VIK3ONSK-DC8mR2sZ.js +2 -0
- package/dist/client/assets/VVVO4ZVP-DAtGLbxR.js +2 -0
- package/dist/client/assets/WRGXZO53-D30IuREw.js +3 -0
- package/dist/client/assets/X5SG7MGC-CdjdoL_s.js +2 -0
- package/dist/client/assets/XLHPVVFU-BFP9ID9p.js +2 -0
- package/dist/client/assets/XXYPNCD5-DqCewu_S.js +5 -0
- package/dist/client/assets/Z6WRYFJC-BEt1KCoU.js +7 -0
- package/dist/client/assets/ZI2QNEGF-VzC4uHcW.js +8 -0
- package/dist/client/assets/index-B96jWJTi.css +1 -0
- package/dist/client/assets/index-DCU09WmS.js +2 -0
- package/dist/client/assets/katex-C0xaXAD4.js +257 -0
- package/dist/client/assets/katex.min-3X1qOa03.js +1 -0
- package/dist/client/assets/katex.min-DMey5pMQ.css +1 -0
- package/dist/client/assets/lazy-DaMZI1F7.js +45 -0
- package/dist/client/index.html +2 -2
- package/package.json +32 -27
- package/dist/client/assets/2DXBBFLN-BxPqHNSN.js +0 -5
- package/dist/client/assets/46IJ22JX-u_jvQJNg.js +0 -2
- package/dist/client/assets/4TTDE5I4-BgbNAVNj.js +0 -3
- package/dist/client/assets/4UF3HTLV-DNbPxlOE.js +0 -2
- package/dist/client/assets/5THPTBWS-D57irc_4.js +0 -1
- package/dist/client/assets/7WLXJQOR-CHhKreq0.js +0 -1
- package/dist/client/assets/AAXQQPKT-CsAJqrOC.js +0 -5
- package/dist/client/assets/AKE5O7KZ-MSuBOjCG.js +0 -2
- package/dist/client/assets/BNMLP6AG-Ca3zyKQY.js +0 -3
- package/dist/client/assets/DKTLEL5E-B7ILCVTH.js +0 -1
- package/dist/client/assets/DR6PKOQU-Bw7cHvYp.js +0 -2
- package/dist/client/assets/E4RJ7UJB-CYB5C4K7.js +0 -2
- package/dist/client/assets/ELSXBIJH-DG0MW5dC.js +0 -1
- package/dist/client/assets/ERTIBQVS-BMWumWfk.js +0 -2
- package/dist/client/assets/F653G4FO-FI8M9Mc0.js +0 -12
- package/dist/client/assets/FKCDD66M-BPFkyrwI.js +0 -1
- package/dist/client/assets/FP7KDXVC-BLEBNkCO.js +0 -2
- package/dist/client/assets/FT5I3RHX-j5YoMicq.js +0 -6
- package/dist/client/assets/FTXIJQGB-nrHdCfp7.js +0 -1
- package/dist/client/assets/G3MDBVQH-EkdejvdW.js +0 -1
- package/dist/client/assets/GY35JXOZ-3ovTGxgz.js +0 -2
- package/dist/client/assets/H5EEJPP2-CNVQBEB3.js +0 -1
- package/dist/client/assets/HWDLEDTA-C_JcdBMO.js +0 -1
- package/dist/client/assets/JZWSX6AR-OwVPptYv.js +0 -1
- package/dist/client/assets/KQOEJWJY-DKTXya68.js +0 -2
- package/dist/client/assets/KS3BB3KE-QkpqVdmA.js +0 -1
- package/dist/client/assets/KXJRRZHI-BQRjeGWj.js +0 -2
- package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/client/assets/MFVI5XKI-DrRaRE9X.js +0 -1
- package/dist/client/assets/MWY2J62P-AbEgJnzK.js +0 -12
- package/dist/client/assets/MXGNCBL2-DG3CZR8g.js +0 -2
- package/dist/client/assets/N6DAJLIZ-BsZQKTyT.js +0 -3
- package/dist/client/assets/NU5M23IW-CvtpIovv.js +0 -2
- package/dist/client/assets/NV4XNBIS-nS8wAx3h.js +0 -8
- package/dist/client/assets/OGLU4SIR-DoTUWhkz.js +0 -2
- package/dist/client/assets/OUNS5N76-BwVLonT4.js +0 -8
- package/dist/client/assets/PU4ISKXV-BYX7eA_r.js +0 -2
- package/dist/client/assets/PUZGS23X-n6IKOr7S.js +0 -1
- package/dist/client/assets/Q3IYVLG5-hWt1rVyh.js +0 -4
- package/dist/client/assets/QYHQDLKZ-CjGeJM7R.js +0 -4
- package/dist/client/assets/RVARI57O-CXmrUIiS.js +0 -1
- package/dist/client/assets/RZSVICHU-BiwjruZZ.js +0 -4
- package/dist/client/assets/UEXXS2NB-Dkz_tz-N.js +0 -2
- package/dist/client/assets/UHTQJXKL-lvl-7QeT.js +0 -5
- package/dist/client/assets/URA2L2QI-B8pYKxOk.js +0 -1
- package/dist/client/assets/UXCHDUKG-BGy3ZRLM.js +0 -2
- package/dist/client/assets/VKNV3BUX-DZnoX4IV.js +0 -5
- package/dist/client/assets/VMV7XPHP-6QkisQwm.js +0 -4
- package/dist/client/assets/WEVWDWVA-nohBBhTA.js +0 -2
- package/dist/client/assets/XRRJ35LF-BE7gSN1k.js +0 -2
- package/dist/client/assets/YFKBLVVN-CVTPpei6.js +0 -6
- package/dist/client/assets/YHRE5QGZ-Bs7dUKjj.js +0 -4
- package/dist/client/assets/ZF3OVT4B-6LaC6iLs.js +0 -3
- package/dist/client/assets/index-392ivruk.js +0 -2
- package/dist/client/assets/index-CGQuEJ_w.css +0 -1
- package/dist/client/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
- package/dist/client/assets/jetbrains-mono-cyrillic-600-normal-8K4wrrwR.woff +0 -0
- package/dist/client/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
- package/dist/client/assets/jetbrains-mono-greek-600-normal-mc2nkWzM.woff +0 -0
- package/dist/client/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
- package/dist/client/assets/jetbrains-mono-latin-600-normal-BfsvjouI.woff +0 -0
- package/dist/client/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
- package/dist/client/assets/jetbrains-mono-latin-ext-600-normal-DObL3zCW.woff +0 -0
- package/dist/client/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
- package/dist/client/assets/jetbrains-mono-vietnamese-600-normal-OWROknRo.woff +0 -0
- package/dist/client/assets/katex-C5jXJg4s.js +0 -257
- package/dist/client/assets/katex.min-BYZTj3zW.css +0 -1
- package/dist/client/assets/katex.min-DXaO1tdm.js +0 -1
- package/dist/client/assets/lazy-CKqR1774.js +0 -43
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{_ as e,a as t,f as n,i as r,o as i,s as a,u as o,x as s}from"./E3FWOBN4-D5m5o2g0.js";import{n as c,r as l}from"./DKTLEL5E-DciMwFJ1.js";import{PeleError as u,c as d,d as f,g as p,i as m,s as h,u as g}from"./lazy-DaMZI1F7.js";var _=class{type=`sankey`;nodes=[];links=[];title;accTitle;accDescr;lookup=new Map;findOrCreateNode(e){let t=this.lookup.get(e);return t===void 0&&(t={id:e,index:this.nodes.length},this.lookup.set(e,t),this.nodes.push(t)),t}addLink(e,t,n){this.links.push({source:e,target:t,value:n})}},v=[`$end`,`STUCK`,`SANKEY`,`NEWLINE`,`COMMA`,`DQUOTE`,`NON_ESCAPED_TEXT`,`ESCAPED_TEXT`,`EOF`];function y(e){return e>=32&&e<=126&&e!==34&&e!==44||e>=160&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111}function b(e){let t=e.length,n=[],r=[],i=[],a=[],o=0,s=0,c=(t,a,o)=>{n.push(t),r.push(e.slice(a,o)),i.push(a),s=o},l=t=>e.slice(s,s+t.length).toLowerCase()===t&&!p(e.charCodeAt(s+t.length));for(;s<t;){let u=e.charCodeAt(s),d=s,f=s;if(o===2){if(u===34&&e.charCodeAt(s+1)!==34){a.length>0&&(o=a.pop()),c(5,s,s+1);continue}for(;f<t;){let t=e.codePointAt(f);if(y(t)||t===44||t===13||t===10)f+=t>65535?2:1;else if(t===34&&e.charCodeAt(f+1)===34)f+=2;else break}c(7,s,f)}else{if(o===0&&(u|32)==115){let e=l(`sankey-beta`)?11:l(`sankey`)?6:0;if(e>0){a.push(o),o=1,c(2,s,s+e);continue}}if(u===10||u===13&&e.charCodeAt(s+1)===10){c(3,s,u===10?s+1:s+2);continue}if(u===44){c(4,s,s+1);continue}if(u===34){a.push(o),o=2,c(5,s,s+1);continue}for(;f<t;){let t=e.codePointAt(f);if(!y(t))break;f+=t>65535?2:1}c(6,s,f)}if(f===d)return c(1,s,s),{types:n,texts:r,starts:i}}return c(o===2?7:8,t,t),c(0,t,t),{types:n,texts:r,starts:i}}var x=/[\n\r]+/g,S=/[\x00-\x08\x0b\x0c\x0e-\x1f\ud800-\udfff\ufffe\uffff]/u;function C(e){return e===10||e===13?!1:e<128?e===32||e===9||e===11||e===12:e===160||e===5760||e>=8192&&e<=8202||e===8232||e===8233||e===8239||e===8287||e===12288||e===65279}function w(e,t){let n=0,r=e.length;for(;n<r&&C(e.charCodeAt(n));)n++;for(;r>n&&C(e.charCodeAt(r-1));)r--;let i=e.slice(n,r),a=i.replace(x,`
|
|
2
|
+
`),o=a.trim();if(t!==void 0){let s=a.length-a.trimStart().length;t.push([[0,n,0],[r,e.length,0]],d(i,x,1),[[0,s,0],[s+o.length,a.length,0]])}return o}function T(e,t,n=e){let{types:r,texts:i,starts:a}=b(e),o=0,s=(t,r)=>{let i=[];n!==e&&w(n,i);let a=t>0&&t>=e.length?m(i,e.length-1)+1:m(i,t);return h(`sankey`,n,a,r)},c=e=>{let t=r[o],n=t===1?v[r[o-1]]:v[t];throw s(a[o],`Expecting ${e}, got '${n}'`)},l=(e,t=``)=>{r[o]!==e&&c(`'${v[e]}'${t}`),o++},u=()=>{if(r[o]===6)return i[o++];r[o]!==5&&c(`'DQUOTE', 'NON_ESCAPED_TEXT'`),o++,r[o]!==7&&c(`'ESCAPED_TEXT'`);let e=i[o++];return l(5),e},d=()=>{let e=a[o],t=u().trim().replaceAll(`""`,`"`);if(S.test(f(t)))throw s(e,`Invalid XML character in node name`);return t};for(l(2),l(3);;){let e=d();l(4,`, 'NEWLINE', 'EOF'`);let n=d();l(4,`, 'NEWLINE', 'EOF'`);let i=a[o],c=parseFloat(u());if(!Number.isFinite(c))throw s(i,`Expecting a number`);let f=t.findOrCreateNode(e),p=t.findOrCreateNode(n);if(t.addLink(f,p,c),r[o]!==3)break;o++}r[o]===8&&o++,r[o]!==0&&c(`'NEWLINE', 'EOF'`)}var ee=6;function E(e,t){if(e.length>8)e.sort(t);else for(let n=1;n<e.length;n++){let r=e[n],i=n-1;for(;i>=0&&t(e[i],r)>0;)e[i+1]=e[i],i--;e[i+1]=r}}function D(e,t){let n=e.nodes.length,r=e.links.map(e=>({source:e.source.index,target:e.target.index,value:Number.isFinite(e.value)&&e.value>0?e.value:0,thickness:0,sourceY:0,targetY:0})),i=[],a=[];for(let e=0;e<n;e++)i.push([]),a.push([]);r.forEach((e,t)=>{i[e.source].push(t),a[e.target].push(t)});let o=new Int32Array(n),s=new Int32Array(n),c=[];for(let e=0;e<n;e++)s[e]=a[e].length,s[e]===0&&c.push(e);for(let e=0;e<c.length;e++){let t=c[e];for(let e of i[t]){let n=r[e].target;o[n]<o[t]+1&&(o[n]=o[t]+1),--s[n]===0&&c.push(n)}}if(c.length<n){let t=0;for(;s[t]===0;)t++;let i=new Uint8Array(n);for(;i[t]===0;){i[t]=1;for(let e of a[t])if(s[r[e].source]>0){t=r[e].source;break}}throw new u(`Sankey diagrams cannot have circular links, and "${e.nodes[t].id}" is part of one.`,`semantic`,{type:`sankey`})}let l=1;for(let e=0;e<n;e++)o[e]+1>l&&(l=o[e]+1);let d=new Int32Array(n);for(let e=n-1;e>=0;e--){let t=c[e];for(let e of i[t])d[t]<d[r[e].target]+1&&(d[t]=d[r[e].target]+1)}let f=0;for(let e of r)e.value>f&&(f=e.value);let p=f>0?1/f:0,m=[],h=new Float64Array(n),g=[];for(let e=0;e<l;e++)g.push([]);let _=l>1?(t.width-t.nodeWidth)/(l-1):0;for(let e=0;e<n;e++){let n;if(t.alignment===`left`)n=o[e];else if(t.alignment===`right`)n=l-1-d[e];else if(t.alignment===`center`){if(n=o[e],a[e].length===0&&i[e].length>0){n=l;for(let t of i[e])o[r[t].target]-1<n&&(n=o[r[t].target]-1)}}else n=i[e].length>0?o[e]:l-1;let s=0,c=0,u=0,f=0;for(let t of a[e])s+=r[t].value*p,u+=r[t].value;for(let t of i[e])c+=r[t].value*p,f+=r[t].value;h[e]=Math.max(s,c),m.push({layer:n,value:Math.max(u,f),x:n*_,y:0,height:0}),g[n].push(e)}let v=1;for(let e of g)e.length>v&&(v=e.length);let y=v>1?Math.min(t.nodePadding,t.height/(v-1)):t.nodePadding,b=1/0;for(let e of g){let n=0;for(let t of e)n+=h[t];n>0&&(b=Math.min(b,(t.height-(e.length-1)*y)/n))}(!Number.isFinite(b)||b<0)&&(b=0);let x=Math.max(0,t.labelHeight-y),S=e=>{for(let n of g){let r=(n.length-1)*y;for(let t of n)r+=Math.max(h[t]*e,x);if(r>t.height+1e-6)return!1}return!0};if(x>0&&!S(b)){if(S(0)){let e=0;for(let t=0;t<40;t++){let t=(e+b)/2;S(t)?e=t:b=t}b=e}else x=0}let C=new Float64Array(n);for(let e of r)e.thickness=e.value*p*b;for(let e of g){let n=0;for(let t of e)m[t].height=h[t]*b,C[t]=Math.max(0,x-m[t].height)/2,m[t].y=n+C[t],n+=m[t].height+2*C[t]+y;let r=(t.height-n+y)/(e.length+1);e.forEach((e,t)=>m[e].y+=r*(t+1))}let w=e=>m[e].y+m[e].height/2,T=new Float64Array(r.length),D=new Float64Array(r.length),O=(e,t)=>w(r[e].target)-w(r[t].target)||e-t,k=(e,t)=>w(r[e].source)-w(r[t].source)||e-t,te=(e,t)=>w(e)-w(t)||e-t,A=e=>{let t=0;E(i[e],O);for(let n of i[e])T[n]=t+r[n].thickness/2,t+=r[n].thickness},j=e=>{let t=0;E(a[e],k);for(let n of a[e])D[n]=t+r[n].thickness/2,t+=r[n].thickness},M=()=>{for(let e=0;e<n;e++)A(e),j(e)},N=(e,n,o)=>{for(let t of e){let e=o?a[t]:i[t];if(e.length===0)continue;o?j(t):A(t);let s=0,c=0,l=0;for(let n of e){let e=o?m[r[n].source].y+T[n]-D[n]:m[r[n].target].y+D[n]-T[n];s+=e*r[n].thickness,c+=r[n].thickness,l+=w(o?r[n].source:r[n].target)-m[t].height/2}let u=c>0?s/c:l/e.length;m[t].y+=(u-m[t].y)*n}E(e,te);let s=0;for(let t of e)m[t].y-C[t]<s&&(m[t].y=s+C[t]),s=m[t].y+m[t].height+C[t]+y;s=t.height;for(let t=e.length-1;t>=0;t--){let n=e[t];m[n].y+m[n].height+C[n]>s&&(m[n].y=s-m[n].height-C[n]),s=m[n].y-C[n]-y}};M();for(let e=0;e<ee;e++){let t=.99**e;for(let e=l-2;e>=0;e--)N(g[e],t,!1);M();for(let e=1;e<l;e++)N(g[e],t,!0);M()}for(let e=0;e<r.length;e++)r[e].sourceY=m[r[e].source].y+T[e],r[e].targetY=m[r[e].target].y+D[e];return{nodes:m,links:r}}var O=6,k=15,te=1.8,A=300;function j(e){let t=2166136261,n=5381;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);t=Math.imul(t^i,16777619),n=Math.imul(n,33)+i|0}return(t>>>0).toString(36)+(n>>>0).toString(36)}function M(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function N(e,t,n,r,i){let a=e[t];return typeof a==`number`&&a>=r?Math.min(a,i):n}function ne(e,t){let n=e[t];return typeof n==`string`||typeof n==`number`&&Number.isFinite(n)?String(n):``}function re(e){return Math.abs(e)<0x38d7ea4c68000?Math.round(e*100)/100:e}function ie(e){return typeof e==`string`?a([`fill:${e}`]).shape:``}function P(e,t,n){let r=M(t.sankey)?t.sankey:{},i=N(r,`width`,600,1,1e4);return c(n,i,160,t=>F(e,r,n,t,i))}function F(a,c,u,d,p){let m=u.fontSize??16,h=Math.round(m*.625),_=Math.max(h,Math.round(m*.875*Math.min(1,d/p))),v=u.measurer??g(u.fontFamily,u.fontFamilyMono),y=u.padding??8,b=N(c,`height`,400,1,1e4),x=Math.min(N(c,`nodeWidth`,10,1,200),d),S=c.showValues!==!1,C=f(ne(c,`prefix`)),w=f(ne(c,`suffix`)),T=c.labelStyle===`outlined`,ee=c.nodeAlignment===`left`||c.nodeAlignment===`right`||c.nodeAlignment===`center`?c.nodeAlignment:`justify`,E=typeof c.linkColor==`string`?c.linkColor:`gradient`,P=e=>D(a,{width:d,height:b,nodeWidth:x,nodePadding:N(c,`nodePadding`,12,0,200)+(S?k:0),labelHeight:e*1.15,alignment:ee}),F=P(_),I=new Map,L=1;for(let e of F.nodes){let t=(I.get(e.layer)??0)+1;I.set(e.layer,t),t>L&&(L=t)}let R=Math.max(h,Math.round(b/L/te));R<_&&(_=R,F=P(_));let{nodes:z,links:ae}=F,B=_*1.5,V=new Map;if(M(c.nodeColors))for(let[e,t]of Object.entries(c.nodeColors)){let n=ie(t);n&&V.set(e,n)}let H=e=>V.get(a.nodes[e].id)??``,U=e=>/^ style="fill:(.*);"$/.exec(H(e))?.[1]??n(e),W=0,G=0;z.forEach(e=>{e.value>G&&(G=e.value,W=e.layer)});let K=0,q=d,J=0,Y=b,oe=z.map((e,t)=>{let n=f(a.nodes[t].id),r=S?`${C}${re(e.value)}${w}`:``,i=v.width(r?`${n} ${r}`:n,_,0),o=T?e.layer>=W:e.x<d/2,s=o?e.x+x+O:e.x-O,c=e.y+e.height/2;return K=Math.min(K,o?s:s-i),q=Math.max(q,o?s+i:s),J=Math.min(J,c-_*.75),Y=Math.max(Y,c+_*.75),{value:r,width:i,after:o,left:o?s:s-i,y:c}}),X=new Map;if(z.length<=A)for(let e of oe){let t=Math.floor(e.y/B);for(let n of[t-2,t-1,t,t+1,t+2]){let t=X.get(n);t?t.push(e):X.set(n,[e])}}let se=``,ce=``;z.forEach((e,i)=>{let o=a.nodes[i].id,c=f(o),l=Math.max(e.height,1);ce+=`<rect class="pele-sankey-node" data-id="${r(o)}" x="${s(e.x)}" y="${s(e.y)}" width="${s(x)}" height="${s(l)}" rx="${s(Math.min(2,l/2))}" fill="${n(i)}"${H(i)}/>`;let u=oe[i],d=(e,t)=>(X.get(Math.floor(t/B))??[]).some(n=>n!==u&&Math.abs(n.y-t)<B&&e<n.left+n.width+O&&e+u.width>n.left-O);if(z.length<=A&&d(u.left,u.y))e:for(let t of[0,-B,B])for(let n of[u.after,!u.after]){let r=n?e.x+x+O:e.x-O-u.width,a=u.y+t;if(d(r,a)||r<K||r+u.width>q||a-_*.75<J||a+_*.75>Y||z.some((e,t)=>t!==i&&r<e.x+x+O&&r+u.width>e.x-O&&a-_*.75<e.y+e.height&&a+_*.75>e.y))continue;let o=Math.max(0,e.y-a,a-e.y-e.height);if(!z.some((t,n)=>n!==i&&t.x===e.x&&Math.max(0,t.y-a,a-t.y-t.height)<=o)){u.left=r,u.y=a,u.after=n;break e}}let{value:p,after:m,y:h}=u,g=m?e.x+x+O:e.x-O,v=` x="${s(g)}" y="${s(h+_*.35)}" text-anchor="${m?`start`:`end`}"`,y=t(c)+(p?` <tspan class="pele-sankey-value" fill="var(--_m)">${t(p)}</tspan>`:``);se+=`<g class="pele-label" data-id="${r(o)}">`+(T?`<text${v} fill="none" stroke="var(--_bg)" stroke-width="3" stroke-linejoin="round">${t(c)}${p?` `+t(p):``}</text>`:``)+`<text${v}>${y}</text></g>`});let le=E===`gradient`||E===`source`||E===`target`?``:ie(E),ue=u.idPrefix??``,de=E===`gradient`&&/^[\w-]+$/.test(ue),Z=new Map,fe=``;for(let e of ae){let i=E===`target`?e.target:e.source,o=Math.max(e.thickness,1)/2,c=z[e.source].x+x,l=z[e.target].x,u=`fill="${n(i)}"${le||H(i)}`;if(de){let t=`x1="${s(c)}" x2="${s(l)}"><stop offset="0" stop-color="${U(e.source)}"/><stop offset="1" stop-color="${U(e.target)}"/>`,n=`${ue}-sankey-${j(t)}`;Z.set(n,`<linearGradient id="${n}" gradientUnits="userSpaceOnUse" ${t}</linearGradient>`),u=`fill="url(#${n}) ${U(e.source)}"`}let d=s((c+l)/2),f=r(a.nodes[e.source].id),p=r(a.nodes[e.target].id);fe+=`<path class="pele-sankey-link" data-id="${f}->${p}" d="M${s(c)},${s(e.sourceY-o)}C${d},${s(e.sourceY-o)} ${d},${s(e.targetY-o)} ${s(l)},${s(e.targetY-o)}L${s(l)},${s(e.targetY+o)}C${d},${s(e.targetY+o)} ${d},${s(e.sourceY+o)} ${s(c)},${s(e.sourceY+o)}Z" ${u}><title>${f} → ${p}: ${t(C)}${re(e.value)}${t(w)}</title></path>`}let Q=o(a.title,!1,v,m,l(u),1),pe=Q.height>0?Q.height+12:0,me=Math.max(q-K,Q.width),he=y-K+(me-(q-K))/2,ge=y+pe-J,$=Math.ceil(me+2*y),_e=Math.ceil(Y-J+pe+2*y);return{svg:e(`sankey`,$,_e,m,u,a,i(Q,$/2,y+Q.height/2,` class="pele-title" font-weight="var(--_tw)"`)+`<g transform="translate(${s(he)},${s(ge)})">`+(Z.size>0?`<defs>${[...Z.values()].join(``)}</defs>`:``)+`<g class="pele-sankey-links" fill-opacity="0.4">${fe}</g><g class="pele-sankey-nodes">${ce}</g><g class="pele-labels" font-size="${_}">${se}</g></g>`),width:$,height:_e,links:[]}}var I={type:`sankey`,parse(e,t,n){let r=new _;return n&&(r.title=n),T(w(e),r,e),r},render:P};export{I as sankey};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{_ as e,f as t,i as n,o as r,u as i,x as a}from"./E3FWOBN4-D5m5o2g0.js";import{n as o,r as s}from"./DKTLEL5E-DciMwFJ1.js";import{a as c,c as l,d as u,f as d,g as f,h as p,i as m,l as h,m as g,n as _,o as v,p as y,r as b,s as x,t as S,u as C}from"./C5HTQT3I-7U13x70S.js";import{PeleError as w,u as ee}from"./lazy-DaMZI1F7.js";function T(e,t){let n=new Map;for(let{label:t,value:r}of e.sections){if(r<0)throw new w(`"${t}" has invalid value: ${r}. Negative values are not allowed in pie charts. All slice values must be >= 0.`,`semantic`,{type:`pie`});n.has(t)||n.set(t,r)}return{type:`pie`,title:e.title||t,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,``):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
|
|
2
|
+
`):void 0,showData:e.showData,sections:n}}function E(e,t){let n=t;for(let t=e.charCodeAt(n);t>=48&&t<=57;t=e.charCodeAt(n))n++;return n}function D(){let e=0,t=0,n=-1;return(r,i)=>{let a=r.charCodeAt(i)===45?i+1:i;if((a<e||a>=t)&&(e=a,t=E(r,a),n=-1,t>a&&r.charCodeAt(t)===46)){let e=E(r,t+1),i=e-t-1;i>0&&r.charCodeAt(e)!==46?n=e:i>1&&(n=e-1)}return t===a?-1:n>=0?n:r.charCodeAt(a)===48?r.charCodeAt(a+1)===46?-1:a+1:r.charCodeAt(t)===46?t-1>a?t-1:-1:t}}var O=[m(`showData`),m(`pie`),{name:`:`,pattern:`:`},{name:`NUMBER_PIE`,pattern:/(?:-?[0-9]+\.[0-9]+(?!\.))|(?:-?(0|[1-9][0-9]*)(?!\.))/y,scanner:D,first:`-0123456789`},c,S,y,g,h,C,b,v,x];function k(e){let t=new p(_(e,O,`pie`),O,`pie`),n={$type:`Pie`,showData:!1,sections:[]},r=()=>{if(t.kind!==-1)for(t.kind!==8&&t.fail(`a line break or the end of input`);t.kind===8;)t.i++};for(;t.kind===8;)t.i++;for(t.expect(1),n.showData=t.accept(0);t.kind!==-1;)switch(t.kind){case 8:t.i++;break;case 4:n.accDescr=l(t.take()),r();break;case 5:n.accTitle=f(t.take()),r();break;case 6:n.title=u(t.take()),r();break;case 7:{let e=d(t.take());t.expect(2);let i=Number(t.expect(3));n.sections.push({$type:`PieSection`,label:e,value:i}),r();break}default:t.fail(`a section, a title, or a line break`)}return n}var A=120,j=12,M=26,N=32,P=28;function F(e,t){return e.pie?.[t]}function I(e,t){return`${a(Math.sin(e)*t)},${a(-Math.cos(e)*t)}`}function te(e,t,n,r){if(t-e>=Math.PI*2-1e-9){let e=(e,t)=>`M0,${a(-e)}A${a(e)},${a(e)} 0 1 ${t} 0,${a(e)}A${a(e)},${a(e)} 0 1 ${t} 0,${a(-e)}Z`;return e(n,1)+(r>0?e(r,0):``)}let i=+(t-e>Math.PI);return r<=0?`M0,0L${I(e,n)}A${a(n)},${a(n)} 0 ${i} 1 ${I(t,n)}Z`:`M${I(e,n)}A${a(n)},${a(n)} 0 ${i} 1 ${I(t,n)}L${I(t,r)}A${a(r)},${a(r)} 0 ${i} 0 ${I(e,r)}Z`}function L(e,t,n){return o(n,A*2,140,(r,i)=>R(e,t,n,r/2,i))}function R(o,c,l,u,d){let f=l.fontSize??16,p=Math.round(f*.875),m=l.measurer??ee(l.fontFamily,l.fontFamilyMono),h=l.padding??8,g=F(c,`textPosition`),_=typeof g==`number`&&g>=0&&g<=1?g:.75,v=F(c,`donutHole`),y=typeof v==`number`&&v>0&&v<=.9?v*u:0,b=String(F(c,`legendPosition`)??`right`),x=d&&(b===`left`||b===`right`)?`bottom`:b,S=[...o.sections],C=0;for(let[,e]of S)C+=e;let w=S.map(([e,t])=>i(o.showData?`${e} [${t}]`:e,!1,m,p,4e3)),T=0;for(let e of w)T=Math.max(T,e.width);T+=w.length>0?j+8:0;let E=w.length*M,D=i(o.title,!1,m,f,s(l),1),O=D.height>0?D.height+16:0,k=S.map(([,e])=>{let t=C>0?e/C:0;return t*100>=1&&(t*100).toFixed(0)!==`0`?t:0}),A=k.map(e=>e===0||e>=.5?!1:2*u*_*Math.sin(e*Math.PI)<m.width((e*100).toFixed(0)+`%`,p,0)+6),I=A.includes(!0)?P:0,L=x===`left`||x===`right`||x===`center`?x:``,R=x===`top`||x===`bottom`,z=(u+I)*2,B=z,V=z;L===`left`||L===`right`?(B+=T>0?N+T:0,V=Math.max(V,E)):R&&(B=Math.max(B,T),V+=E>0?20+E:0),B=Math.max(B,D.width);let H=h+(L===`left`?T+N+z/2:L===`right`?z/2:B/2),U=h+O,W=U+(x===`top`?E+20+z/2:R?z/2:V/2),G=``,K=``,q=``,J=0,Y=u+P/2,ne=[],re=(e,t,n)=>ne.every(r=>Math.abs(e-r.x)>=(n+r.width)/2+2||Math.abs(t-r.y)>=p+2);S.forEach(([e],r)=>{let i=k[r];if(i===0)return;let o=J+i*Math.PI*2;G+=`<path class="pele-slice" data-id="${n(e)}" d="${te(J,o,u,y)}" fill="${t(r)}"/>`;let s=(J+o)/2,c=(i*100).toFixed(0)+`%`;if(A[r]){let e=m.width(c,p,0),t=s;for(let n=0;n<360&&!re(Math.sin(t)*Y,-Math.cos(t)*Y,e);n++)t+=2/Y;let n=Math.sin(t)*Y,r=-Math.cos(t)*Y;ne.push({x:n,y:r,width:e}),q+=`<text x="${a(n)}" y="${a(r+p*.35)}">${c}</text>`}else{let e=u*_;K+=`<text x="${a(Math.sin(s)*e)}" y="${a(-Math.cos(s)*e+p*.35)}">${c}</text>`}J=o}),G===``&&(G=`<circle class="pele-slice" r="${u}" fill="none" stroke="var(--_b)"/>`);let X=``,Z,Q;L===`right`?(Z=H+z/2+N,Q=U+(V-E)/2):L===`left`?(Z=h,Q=U+(V-E)/2):L===`center`?(Z=H-T/2,Q=W-E/2):(Z=h+(B-T)/2,Q=x===`top`?U:U+z+20),w.forEach((e,i)=>{let o=Q+i*M+M/2;X+=`<g class="pele-legend-item" data-id="${n(S[i][0])}"><rect x="${a(Z)}" y="${a(o-j/2)}" width="${j}" height="${j}" rx="2" fill="${t(i)}"/>`+r(e,Z+j+8+e.width/2,o,``)+`</g>`});let $=Math.ceil(B+2*h),ie=Math.ceil(V+O+2*h),ae=r(D,$/2,h+D.height/2,` class="pele-title" font-weight="var(--_tw)"`)+`<g class="pele-slices" transform="translate(${a(H)},${a(W)})" stroke="var(--_bg)" stroke-width="1" stroke-linejoin="round">${G}</g>`+(K?`<g class="pele-slice-labels" transform="translate(${a(H)},${a(W)})" font-size="${p}" text-anchor="middle" fill="var(--_bg)">${K}</g>`:``)+(q?`<g class="pele-slice-labels" transform="translate(${a(H)},${a(W)})" font-size="${p}" text-anchor="middle">${q}</g>`:``)+(X?`<g class="pele-legend" font-size="${p}">${X}</g>`:``);return{svg:e(`pie`,$,ie,f,l,o,ae),width:$,height:ie,links:[]}}var z={type:`pie`,parse:(e,t,n)=>T(k(e),n),render:L};export{z as pie};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{_ as e,a as t,b as n,c as r,d as i,i as a,m as o,o as s,p as c,r as l,s as u,t as d,u as f,v as p,x as m,y as h}from"./E3FWOBN4-D5m5o2g0.js";import{a as g,t as _}from"./DKTLEL5E-DciMwFJ1.js";import{i as v,l as y}from"./CUVCMPQX-JTGMOfG2.js";import{t as b}from"./E65FQMJL-Bg5F0Zo8.js";import{a as x,r as S}from"./SPBWZ4VS-EqfCsJ5V.js";import{t as C}from"./G3MDBVQH-BZmnMkFw.js";import{n as w,r as ee}from"./DHKBVIA3-CVnlqiEq.js";import{i as te,n as ne,r as T,t as re}from"./3JIRLDUO-C1CwW1Ha.js";import{d as ie,g as E,h as D,s as O,u as ae,y as k}from"./lazy-DaMZI1F7.js";function A(e){return e===`markdown`||e===`string`||e===`text`?e:`markdown`}var oe=class{type=`er`;direction=`TB`;entities=new Map;relationships=[];classes=new Map;subgraphs=[];title;accTitle;accDescr;subgraphLookup=new Map;claimed=new Set;addEntity(e,t=``){let n=this.entities.get(e);return n===void 0?(n={id:`entity-${e}-${this.entities.size}`,label:e,alias:t,attributes:[],cssClasses:`default`,cssStyles:[]},this.entities.set(e,n)):!n.alias&&t&&(n.alias=t),n}addAttributes(e,t){let n=this.addEntity(e);for(let e=t.length-1;e>=0;e--){let r=t[e];r.keys??=[],r.comment??=``,n.attributes.push(r)}}addRelationship(e,t,n,r){let i=this.subgraphLookup.has(e)?e:this.addEntity(e).id,a=this.subgraphLookup.has(n)?n:this.addEntity(n).id;this.relationships.push({entityA:i,roleA:t,entityB:a,relSpec:r})}setDirection(e){this.direction=e}addCssStyles(e,t){if(t)for(let n of e){let e=this.entities.get(n);if(e)for(let n of t)e.cssStyles.push(n);let r=this.subgraphLookup.get(n);if(r)for(let e of t)r.cssStyles.push(e)}}addClass(e,t){for(let n of e){let e=this.classes.get(n);if(e===void 0&&(e={id:n,styles:[],textStyles:[]},this.classes.set(n,e)),t)for(let n of t)n.includes(`color`)&&e.textStyles.push(n.replace(`fill`,`bgFill`)),e.styles.push(n)}}setClass(e,t){for(let n of e){let e=this.entities.get(n);if(e)for(let n of t)e.cssClasses+=` `+n;let r=this.subgraphLookup.get(n);if(r)for(let e of t)r.classes.push(e)}}addSubGraph(e,t,n){let r=e.text.trim(),i=new Set,a=[],o;for(let e of t.flat()){if(typeof e!=`string`){e?.stmt===`dir`&&(o=e.value);continue}let t=e.trim();t===``||i.has(t)||(i.add(t),this.claimed.has(e)||a.push(e))}for(let e of a)this.claimed.add(e);let s={id:r,nodes:a,title:(n.text||``).trim(),classes:[],cssStyles:[],dir:o,labelType:A(n.type)};return this.subgraphs.push(s),this.subgraphLookup.set(r,s),r}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,``)}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
2
|
+
`)}},j=`$end.INVALID.ER_DIAGRAM.EOF.NEWLINE.COLON.STYLE_SEPARATOR.BLOCK_START.BLOCK_STOP.SQS.SQE.acc_title.acc_title_value.acc_descr.acc_descr_value.acc_descr_multiline_value.END.SUBGRAPH.direction_tb.direction_bt.direction_rl.direction_lr.CLASSDEF.UNICODE_TEXT.STYLE_TEXT.COMMA.CLASS.STYLE.SEMI.NUM.BRKT.ENTITY_NAME.DECIMAL_NUM.ENTITY_ONE.ATTRIBUTE_WORD.ATTRIBUTE_KEY.COMMENT.ZERO_OR_ONE.ZERO_OR_MORE.ONE_OR_MORE.ONLY_ONE.MD_PARENT.NON_IDENTIFYING.IDENTIFYING.WORD.CHAR`.split(`.`),M=1,N=2,P=4,F=8,I=new Uint8Array(128);for(let e=0;e<128;e++){let t=e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95,n=t&&(e<48||e>57);t&&(I[e]|=M|N|F),n&&(I[e]|=P)}for(let e of`-*`)I[e.charCodeAt(0)]|=M|N|F;I[46]|=M|F,I[42]|=P;for(let e of`[](),`)I[e.charCodeAt(0)]|=F;var L=/accTitle\s*:\s*/iy,R=/accDescr\s*:\s*/iy,z=/accDescr\s*\{\s*/iy,se=[/.*direction\s+TB[^\n]*/iy,/.*direction\s+BT[^\n]*/iy,/.*direction\s+RL[^\n]*/iy,/.*direction\s+LR[^\n]*/iy],B=/direction/gi,V=/[\n\r\u2028\u2029]/g;function H(e,t){return e<128?(I[e]&t)!==0:e>=192||e===181}function U(e){let t=e.length,n=[],r=[],i=[],a=0,o=0,s=-2,c=0,l=-1,u=-2,d=-1,f=-1,p=-1,m=(t,a,s)=>{n.push(t),r.push(e.slice(a,s)),i.push(a),o=s},h=(t,n)=>(t.lastIndex=n,t.test(e)?t.lastIndex:-1),g=t=>{for(let n=0;n<t.length;n++){let r=t.charCodeAt(n),i=e.charCodeAt(o+n);if(i!==r&&(r<97||r>122||(i|32)!==r))return!1}return!0},_=t=>g(t)&&!E(e.charCodeAt(o+t.length)),v=t=>{let n=e.charCodeAt(t);return n>=65&&n<=90?n+32:n},y=n=>(V.lastIndex=n,V.test(e)?V.lastIndex-1:t),b=t=>{for(;k(e.charCodeAt(t));)t++;return t},x=()=>{if(s===-1||s<o&&(B.lastIndex=o,s=B.test(e)?B.lastIndex-9:-1,s===-1)||o<c||(l<o&&(l=y(o)),s>=l))return!1;for(let e=0;e<4;e++){let t=h(se[e],o);if(t>=0)return m(18+e,o,t),!0}return c=l,!1},S=()=>{let t=e.indexOf(`"`,o+1);if(t===-1){m(45,o,o+1);return}let n=t>o+1;for(let r=o+1;n&&r<t;r++){let t=e.charCodeAt(r);(t===37||t===92||t===13||t===10||t===11||t===8)&&(n=!1)}m(n?31:44,o,t+1)},C=t=>{let n=e.charCodeAt(o+1);if(n===43&&(t===49||t===48)){m(t===49?39:38,o,o+2);return}let r=b(o+1);if(e.charCodeAt(r)===46&&k(e.charCodeAt(r+1)))m(32,o,b(r+2));else{if(t===49){if(D(n)){let t=o+2;for(;D(e.charCodeAt(t));)t++;let n=e.charCodeAt(t);if(E(n)||n===34||n===39){m(40,o,o+1);return}}else if(n===45||n===46){let t=e.charCodeAt(o+2);if(t===45||t===46){m(40,o,o+1);return}}if(!E(n)){m(33,o,o+1);return}}m(29,o,r)}},w=t=>{let n=e.charCodeAt(o+1);switch(t){case 101:if(_(`erdiagram`))m(2,o,o+9);else if(_(`end`)){let t=o+3;for(;D(e.charCodeAt(t));)t++;m(16,o,t)}else return!1;return!0;case 115:if(_(`style`))a=6,m(27,o,o+5);else if(_(`subgraph`))m(17,o,o+8);else return!1;return!0;case 99:if(_(`classdef`))a=6,m(22,o,o+8);else if(_(`class`))m(26,o,o+5);else return!1;return!0;case 111:if(_(`one or zero`))m(37,o,o+11);else if(_(`one or more`)||_(`one or many`))m(39,o,o+11);else if(_(`one`))m(40,o,o+3);else if(_(`only one`))m(40,o,o+8);else if(n===124)m(37,o,o+2);else if(n===123)m(38,o,o+2);else if(_(`optionally to`))m(42,o,o+13);else return!1;return!0;case 122:if(_(`zero or one`))m(37,o,o+11);else if(_(`zero or more`)||_(`zero or many`))m(38,o,o+12);else return!1;return!0;case 109:if(g(`many(0)`))m(38,o,o+7);else if(g(`many(1)`))m(39,o,o+7);else if(_(`many`))m(38,o,o+4);else return!1;return!0;case 116:return _(`to`)?(m(43,o,o+2),!0):!1;case 117:return n!==46&&n!==45&&n!==124?!1:(m(41,o,o+1),!0);case 124:if(v(o+1)===111&&!E(e.charCodeAt(o+2)))m(37,o,o+2);else if(n===124)m(40,o,o+2);else if(n===123)m(39,o,o+2);else return!1;return!0;case 125:if(v(o+1)===111&&!E(e.charCodeAt(o+2)))m(38,o,o+2);else if(n===124)m(39,o,o+2);else return!1;return!0;case 46:return n!==46&&n!==45?!1:(m(42,o,o+2),!0);case 45:if(n===45)m(43,o,o+2);else if(n===46)m(42,o,o+2);else return!1;return!0}return!1},ee=t=>{let n;if((t===97||t===65)&&g(`acc`)){if((n=h(L,o))>=0){a=3,m(11,o,n);return}if((n=h(R,o))>=0){a=4,m(13,o,n);return}if((n=h(z,o))>=0){a=5,o=n;return}}if(!x()){switch(t){case 32:case 9:case 13:n=o+1;for(let t=e.charCodeAt(n);t===32||t===9||t===13;t=e.charCodeAt(n))n++;o=n;return;case 10:for(n=o+1;e.charCodeAt(n)===10;)n++;m(4,o,n);return;case 34:S();return;case 123:a=1,m(7,o,o+1);return;case 35:m(30,o,o+1);return;case 44:m(25,o,o+1);return;case 58:e.charCodeAt(o+1)===58&&e.charCodeAt(o+2)===58?m(6,o,o+3):m(5,o,o+1);return;case 91:m(9,o,o+1);return;case 93:m(10,o,o+1);return}if(k(t)){C(t);return}if(!w(t>=65&&t<=90?t+32:t)){if(t>=128||(I[t]&M)!==0){n=o+1;for(let t=e.charCodeAt(n);t>=128||(I[t]&M)!==0;t=e.charCodeAt(n))n++;m(23,o,n);return}m(45,o,o+1)}}},te=()=>{if(u===-1||u<o&&(u=e.indexOf(`~`,o),u===-1))return!1;if(p<o){let n=o;for(;n<t&&!D(e.charCodeAt(n));)n++;p=n}if(u>=p||(d<o&&(d=y(o),f=e.lastIndexOf(`~`,d-1)),f<=u))return!1;let n=f+1;for(;n<t&&!D(e.charCodeAt(n));)n++;return m(34,o,n),!0},ne=n=>{if(D(n)){for(o++;D(e.charCodeAt(o));)o++;return}let r=n|32;if((r===112||r===102||r===117)&&(e.charCodeAt(o+1)|32)==107&&!E(e.charCodeAt(o+2)))m(35,o,o+2);else if(!te()){if(H(n,P)){let n=o+1;for(;n<t&&H(e.charCodeAt(n),F);)n++;m(34,o,n);return}if(n===96){a=2,o++;return}if(n===34){let t=e.indexOf(`"`,o+1);if(t!==-1){m(36,o,t+1);return}}else if(n===125){a=0,m(8,o,o+1);return}m(45,o,o+1)}};for(;o<t;){let s=e.charCodeAt(o),c;switch(a){case 0:ee(s);break;case 1:ne(s);break;case 2:s===96?(a=1,o++):(c=e.indexOf("`",o),m(34,o,c===-1?t:c));break;case 3:case 4:c=e.indexOf(`
|
|
3
|
+
`,o),m(a===3?12:14,o,c===-1?t:c),a=0;break;case 5:s===125?(a=0,o++):(c=e.indexOf(`}`,o),m(15,o,c===-1?t:c));break;case 6:if(s===10){for(c=o+1;e.charCodeAt(c)===10;)c++;a=0,m(4,o,c)}else if(D(s))for(o++;D(e.charCodeAt(o));)o++;else if(s===58)m(5,o,o+1);else if(s===44)m(25,o,o+1);else if(s===35)m(30,o,o+1);else if(s===59)m(28,o,o+1);else if(s>=128||(I[s]&N)!==0){c=o+1;for(let t=e.charCodeAt(c);t>=128||(I[t]&N)!==0;t=e.charCodeAt(c))c++;m(24,o,c)}else return n.push(1),r.push(``),i.push(o),{types:n,texts:r,starts:i}}}let T=a===0?3:a===3?12:a===4?14:a===5?15:-1;return T!==-1&&(n.push(T),r.push(``),i.push(t)),n.push(0),r.push(``),i.push(t),{types:n,texts:r,starts:i}}var W=new Map([[37,`ZERO_OR_ONE`],[38,`ZERO_OR_MORE`],[39,`ONE_OR_MORE`],[40,`ONLY_ONE`],[41,`MD_PARENT`]]),ce=[`TB`,`BT`,`RL`,`LR`],G=`'UNICODE_TEXT', 'NUM', 'ENTITY_NAME', 'DECIMAL_NUM', 'ENTITY_ONE'`,le=`'ZERO_OR_ONE', 'ZERO_OR_MORE', 'ONE_OR_MORE', 'ONLY_ONE', 'MD_PARENT'`,K=`'EOF', 'NEWLINE', 'title', 'acc_title', 'acc_descr', 'acc_descr_multiline_value', 'SUBGRAPH', 'direction_tb', 'direction_bt', 'direction_rl', 'direction_lr', 'CLASSDEF', 'CLASS', 'STYLE', `+G;function q(e,t){let{types:n,texts:r,starts:i}=U(e),a=0,o=t=>{let o=n[a];throw o===1?O(`er`,e,i[a],``,!0):O(`er`,e,i[a],`Expecting ${t}, got '${o===45?r[a]:j[o]}'`)},s=e=>(n[a]!==e&&o(`'${j[e]}'`),r[a++]),c=()=>{let e=n[a];e!==4&&e!==28&&e!==3&&o(`'EOF', 'NEWLINE', 'SEMI'`),a++},l=e=>e===23||e===31||e===29||e===32||e===33,u=()=>{let e=n[a];l(e)||o(G);let t=r[a++];return e===31?t.slice(1,-1):t},d=()=>{let e=[];for(;;){let t=n[a];if(t!==23&&t!==24&&o(`'UNICODE_TEXT', 'STYLE_TEXT'`),e.push(r[a++]),n[a]!==25)return e;a++}},f=e=>e===24||e===29||e===5||e===30,p=()=>{let e=[];for(;;){f(n[a])||o(`'STYLE_TEXT', 'COLON', 'NUM', 'BRKT'`);let t=r[a++];for(;f(n[a]);)t+=r[a++];if(e.push(t),n[a]!==25)return e;a++}},m=()=>{let e=W.get(n[a++]),t=n[a];t!==43&&t!==42&&o(`'NON_IDENTIFYING', 'IDENTIFYING'`);let r=t===43?`IDENTIFYING`:`NON_IDENTIFYING`;a++;let i=W.get(n[a]);return i===void 0?o(le):(a++,{cardA:i,relType:r,cardB:e})},h=()=>{let e=n[a];e!==44&&e!==31&&e!==23&&o(`'UNICODE_TEXT', 'ENTITY_NAME', 'WORD'`);let t=r[a++];return e===23?t:t.slice(1,-1)},g=e=>n[a]===45&&r[a]===e,_=()=>{let e=[];do{let t=s(34);g(`?`)&&(t+=r[a++]),n[a]!==34&&o(t.endsWith(`?`)?`'ATTRIBUTE_WORD'`:`'ATTRIBUTE_WORD', '?'`);let i={type:t,name:r[a++]};if(n[a]===35){let e=[r[a++]];for(;g(`,`);)a++,e.push(s(35));i.keys=e}n[a]===36&&(i.comment=r[a++].slice(1,-1)),e.push(i)}while(n[a]!==8);return e.reverse()},v=()=>{if(n[a]!==7)return;if(a++,n[a]===8){a++;return}let e=_();return a++,e},y=()=>{let e=u(),r=n[a];if(r===9){a++;let r=u();s(10);let i;n[a]===6&&(a++,i=d());let o=v();return t.addEntity(e,r),o&&t.addAttributes(e,o),i&&t.setClass([e],i),[e]}let i;if(r===6&&(a++,i=d(),r=n[a]),W.has(r)){let r=m(),o=u(),c;n[a]===6&&(a++,c=d()),s(5);let l=h();return t.addEntity(e),t.addEntity(o),t.addRelationship(e,l,o,r),i&&t.setClass([e],i),c&&t.setClass([o],c),[e,o]}let o=v();return t.addEntity(e),o&&t.addAttributes(e,o),i&&t.setClass([e],i),[e]};s(2);let b=[{id:``,title:``,list:[]}],x=b[0],S=!1;for(;;){let e=n[a];switch(e){case 4:a++;break;case 3:a++,S&&o(`'END', ${K}`);return;case 16:{S||o(K),a++;let e=t.addSubGraph({text:x.id},x.list,{text:x.title});b.pop(),x=b[b.length-1],S=b.length>1,S&&x.list.push(e);break}case 17:{a++;let e=u(),t=e;if(n[a]===9){for(a++,t=u();l(n[a]);)t+=` `+u();s(10)}c(),x={id:e,title:t,list:[]},b.push(x),S=!0;break}case 11:{a++;let e=s(12).trim();t.setAccTitle(e),S&&x.list.push(e);break}case 13:{a++;let e=s(14).trim();t.setAccDescription(e),S&&x.list.push(e);break}case 15:{let e=r[a++].trim();t.setAccDescription(e),S&&x.list.push(e);break}case 18:case 19:case 20:case 21:{a++;let n=ce[e-18];S?x.list.push({stmt:`dir`,value:n}):t.setDirection(n);break}case 22:{let e=r[a++],n=d(),i=p();c(),t.addClass(n,i),S&&x.list.push(e);break}case 26:{let e=r[a++],n=d();t.setClass(n,d()),S&&x.list.push(e);break}case 27:{let e=r[a++],n=d(),i=p();c(),t.addCssStyles(n,i),S&&x.list.push(e);break}default:{l(e)||o(S?`'END', ${K}`:K);let t=y();if(S)for(let e of t)x.list.push(e)}}}}var ue=[];function de(e){let t=[],n=[],r=e.subgraphs,i=t=>{let n=[];for(let r of t){let t=e.classes.get(r);if(t!==void 0){for(let e of t.styles)n.push(e.trim());for(let e of t.textStyles)n.push(e.trim())}}return n},a=new Map,o=new Set;for(let e=r.length-1;e>=0;e--){let t=r[e];o.add(t.id);for(let e of t.nodes)a.set(e,t.id)}for(let e=r.length-1;e>=0;e--){let n=r[e];t.push({id:n.id,label:n.title,alias:``,attributes:ue,isGroup:!0,parentId:a.get(n.id),cssStyles:n.cssStyles,cssCompiledStyles:i(n.classes),cssClasses:n.classes.join(` `),dir:n.dir,labelType:n.labelType})}let s=new Map;for(let[n,r]of e.entities)o.has(n)?s.set(r.id,n):t.push({id:r.id,label:r.label,alias:r.alias,attributes:r.attributes,isGroup:!1,parentId:a.get(n),cssStyles:r.cssStyles,cssCompiledStyles:i(r.cssClasses.split(` `)),cssClasses:r.cssClasses,dir:void 0,labelType:`markdown`});return e.relationships.forEach((e,t)=>{n.push({id:`id_${e.entityA}_${e.entityB}_${t}`,start:s.get(e.entityA)??e.entityA,end:s.get(e.entityB)??e.entityB,label:e.roleA,arrowTypeStart:e.relSpec.cardB.toLowerCase(),arrowTypeEnd:e.relSpec.cardA.toLowerCase(),pattern:e.relSpec.relType===`IDENTIFYING`?`solid`:`dashed`})}),{nodes:t,edges:n}}var J=18,fe=5,pe=6,me=10,he=3.5;function Y(e,t,n,r,i){let a=(e,a)=>m(t-r*e-i*a)+`,`+m(n-i*e+r*a),o=e=>`M${a(e,-fe)}L${a(e,fe)}`,s=`M${a(0,-pe)}L${a(me,0)}L${a(0,pe)}`,c=e=>`<circle class="pele-marker" cx="${m(t-r*e)}" cy="${m(n-i*e)}" r="${he}" fill="var(--_bg)"/>`,l=e=>`<path class="pele-marker" d="${e}"/>`;switch(e){case`only_one`:return l(o(6)+o(10));case`zero_or_one`:return l(o(6))+c(13.5);case`one_or_more`:return l(s+o(me+3.5));case`zero_or_more`:return l(s)+c(me+he+.5);case`md_parent`:return`<path class="pele-marker" d="M${a(0,0)}L${a(6,4)}L${a(12,0)}L${a(6,-4)}Z" fill="var(--_bg)"/>`}return``}var ge=48,_e=20,ve=64,X=20,Z=28,ye=38,be=96,xe=18,Se=12,Ce=9,we=12,Te=16,Ee=9,De=260,Oe=1e6,ke=[],Ae=18,je=14,Me=` fill="var(--_s)" stroke="var(--_b)"`;function Ne(e,t,n){let r=e.er?.[t];return typeof r==`number`&&r>0?Math.min(r,2e3):n}function Q(e,n,i,l,u){let f=e.lines;if(f.length===0)return``;let g=f.length===1&&f[0].length===1?f[0][0]:void 0;if(g&&g.icon===void 0&&g.math===void 0&&g.style===0)return`<text${l} x="${m(n)}" y="${m(i)}">${t(g.text)}</text>`;let _=r(e),v=e.size*.35,y=i-v-e.lineHeight/2,b=``,x=``;for(let r=0;r<f.length;r++){let d=f[r],g=y+c(e,r);if(p(d)){x+=s(h(e,r),n+e.widths[r]/2,g,l,u);continue}i=g+v;let S=!1;for(let e of d)e.icon!==void 0&&(S=!0);let C=n,w=!1;for(let n of d){if(n.icon!==void 0){let t=e.size*1.1;x+=`<svg class="pele-icon" data-icon="${a(n.icon)}" x="${m(C)}" y="${m(i-e.size*.35-t/2)}" width="${m(t)}" height="${m(t)}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${u?.(n.icon)??``}</svg>`}else if(n.text!==``){let e=S||!w?` x="${m(C)}" y="${m(i)}"`:``;b+=`<tspan${e}${o(n.style&~_)}>${t(n.text)}</tspan>`,w=!0}C+=n.width}}return`<text${d(l,_)} xml:space="preserve">${b}</text>${x}`}function $(e){let t=C(e);return t===e?e:t.replace(/</g,`<`).replace(/>/g,`>`)}function Pe(e,t,n){return g(e.direction)?_(n,r=>Fe(e,t,n,r)):Fe(e,t,n,!1)}function Fe(r,o,c,d){let p=de(r),h=c.fontSize??16,g=Math.round(h*.875),_=c.measurer??ae(c.fontFamily,c.fontFamilyMono),C=c.padding??8,E=c.icons,D=new Map,O=[],k=[];p.nodes.forEach((e,t)=>D.set(e.id,t));let A=[],oe=[],j=[],M=new Map,N=[];for(let e of p.edges){let t=D.get(e.start),n=D.get(e.end);if(t===void 0||n===void 0)continue;let r=f(e.label,!0,_,g,200),i;if(t===n){i={label:r,band:0,at:0};let e=M.get(t);e?e.push(i):M.set(t,[i])}N.push(i),j.push(e),oe.push(r),A.push({src:t,dst:n,minlen:1,labelW:r.width>0?r.width+12:0,labelH:r.height>0?r.height+4:0,route:[],labelX:0,labelY:0})}let P=e=>{let t=e;for(let e=0;e<p.nodes.length;e++){let e=p.nodes[t].parentId,n=e===void 0?void 0:D.get(e);if(n===void 0)break;let r=p.nodes[n].dir;if(r)return r===`LR`||r===`RL`;t=n}return r.direction===`LR`||r.direction===`RL`};for(let e=0;e<p.nodes.length;e++){let t=p.nodes[e],n=u(t.cssStyles.length>0?t.cssCompiledStyles.concat(t.cssStyles):t.cssCompiledStyles),r=+!!n.bold|(n.italic?2:0),i=n.fontSize??h,a=n.fontSize??g,o=n.fontSize??Math.round(h*.75),s=t.isGroup?f(t.label,!0,_,i,4e3,r):f(t.alias||t.label,!0,_,i,240,r),c=M.get(e)??ke,l=c.length>0&&!t.isGroup&&P(e),d={node:t,style:n,label:s,w:0,h:0,headH:0,rows:[],cols:[],rowSize:a,keySize:o,below:l},m=0,v=0;for(let e of c)e.band=Math.max(ye,l?e.label.width+12:e.label.height+6),v+=e.band,m=Math.max(m,l?e.label.height:e.label.width);let y=Math.max(be,l?v+8:0),b;if(t.isGroup)b=re(0,0),b.isGroup=!0,b.dir=t.dir?T(t.dir):void 0,b.padX=X,b.padTop=d.label.height>0?d.label.height+16:X,b.padBottom=X,b.minW=Math.max(d.label.width+2*X-12,be);else{let e=Math.max(s.height,Math.round(i*1.5));if(t.attributes.length===0)d.w=Math.max(s.width+2*xe,y),d.h=Math.max(e+2*Se,l?0:v+8);else{let n=Math.round(a*1.5),i=[0,0,0,0];for(let e of t.attributes){let t=[f($(e.type),!0,_,a,Oe,r),f($(e.name),!0,_,a,Oe,r),f(e.keys.join(`, `),!1,_,o,Oe,r),f($(e.comment),!0,_,a,De,r)],s=n;for(let e=0;e<4;e++)t[e].width>i[e]&&(i[e]=t[e].width),t[e].height>s&&(s=t[e].height);d.rows.push({cells:t,h:s+Ee}),d.h+=s+Ee}let c=0,l=0;for(let e of i)e!==0&&(l+=e+(c>0?Te:0),c++);d.w=Math.max(l+2*we,s.width+2*xe,y);let u=c>0?(d.w-l-2*we)/c:0,p=we;for(let e of i)d.cols.push(p),e>0&&(p+=e+u+Te);d.headH=e+2*Ce,d.h+=d.headH}let n=c.length>0?2*(J+Z*.75+10+m):0;b=l?re(d.w,d.h+n):re(d.w+n,d.h)}b.seq=O.length,O.push(d),k.push(b)}p.nodes.forEach((e,t)=>{k[t].parent=e.parentId===void 0?-1:D.get(e.parentId)??-1});let F=te(k,A,d?`TB`:T(r.direction),{nodeSep:Ne(o,`nodeSpacing`,ge),edgeSep:_e,rankSep:Ne(o,`rankSpacing`,ve),portSep:24});Le(A,k,O);let I=F.width;for(let[e,t]of M){let n=k[e];if(!n.isGroup)continue;let r=0;for(let e of t)r=Math.max(r,e.label.width);I=Math.max(I,n.x+n.w/2+J+Z*.75+10+r)}let L=b(r.title,_,h,4e3),R=L.height>0?L.height+12:0,z=Math.max(I,L.width),se=C+(z-I)/2,B=C+R;ne(k,A,se,B);let V=Math.ceil(z+2*C),H=Math.ceil(F.height+R+2*C),U=[],W=new Map,ce=!1;for(let e of k)e.isGroup&&(ce=!0);if(ce)for(let e of A)ee(W,e.route);let G=``,le=``;for(let e=0;e<O.length;e++){let r=O[e],o=k[e],u=r.node,d=n(u.cssClasses.replace(/^default\s?/,``));if(o.isGroup){r.w=o.w,r.h=o.h;let e=o.x-o.w/2,t=o.y-o.h/2,n=w(o,r.label.width,W,X);G+=`<g class="pele-cluster${d}" data-id="${a(u.id)}"><rect x="${m(e)}" y="${m(t)}" width="${m(o.w)}" height="${m(o.h)}" fill="var(--_a)" fill-opacity="0.5" stroke="var(--_b)"${i(r.style.shape)}/>`+s(r.label,n,t+8+r.label.height/2,` class="pele-cluster-label" fill="var(--_m)"${r.style.text}`,E)+`</g>`;continue}let f=r.w,p=r.h,h=-f/2,g=-p/2,_=r.style.text,v=`x="${m(h)}" y="${m(g)}" width="${m(f)}" height="${m(p)}"`,y=s(r.label,0,r.rows.length>0?g+r.headH/2:0,` class="pele-label"${_}`,E),b=ie(u.alias||u.label);if(/ internal-link(?: |$)/.test(d+` `)&&y!==``&&c.links!==!1){let e=x(b,c),n=t(b);y=`<a class="internal-link"${e?` href="${n}"${S(c)}`:``} data-href="${n}">${y}</a>`,U.push({id:u.label,href:b,internal:!0})}let C;if(r.rows.length===0)C=`<rect ${v}${i(Me+r.style.shape)}/>`+y;else{let e=Math.round(r.rowSize*1.5),n=r.style.stroke?t(r.style.stroke):`var(--_b)`,a=``,o=``,s=g+r.headH;for(let t=0;t<r.rows.length;t++){let n=r.rows[t];if(t%2==0){let e=`x="${m(h)}" width="${m(f)}"`;t===r.rows.length-1?a+=`<rect ${e} y="${m(s)}" height="${m(n.h)}"${l}/><rect ${e} y="${m(s)}" height="${m(n.h/2)}"/>`:a+=`<rect ${e} y="${m(s)}" height="${m(n.h)}"/>`}let i=s+Ee/2+e/2+r.rowSize*.35,[c,u,d,p]=n.cells;o+=Q(c,h+r.cols[0],i,` class="pele-er-type" fill="var(--_m)"${_}`,E)+Q(u,h+r.cols[1],i,` class="pele-er-name"${_}`,E)+Q(d,h+r.cols[2],i,` class="pele-er-keys" font-size="${r.keySize}" fill="var(--_m)"${_}`,E)+Q(p,h+r.cols[3],i,` class="pele-er-comment" fill="var(--_m)"${_}`,E),s+=n.h}let c=m(g+r.headH);C=`<rect ${v}${i(Me+r.style.shape)}/><g class="pele-er-stripes" fill="var(--_bg)"${r.style.shape.includes(`fill:`)?` opacity="0.6"`:``}>${a}</g><path class="pele-er-divider" d="M${m(h)},${c}H${m(h+f)}" stroke="${n}"/><rect ${v} fill="none" stroke="var(--_b)"${i(r.style.line)}/>`+y+`<g class="pele-er-attributes" font-size="${r.rowSize}">${o}</g>`}le+=`<g class="pele-node pele-entity${d}" data-id="${a(u.label)}" transform="translate(${m(o.x)},${m(o.y)})">${C}</g>`}for(let[e,t]of M){let n=O[e],r=0;for(let e of t)r+=e.band;let i=Math.min(1,Math.max((n.below?n.w:n.h)-8,0)/r),a=-r*i/2;for(let e of t)e.band*=i,e.at=a+e.band/2,a+=e.band}let K=``,q=``;for(let e=0;e<A.length;e++){let t=A[e],n=j[e],r=oe[e],i,o,s,c=N[e];if(c){let e=k[t.src],a=O[t.src],l=Math.max(Math.min(c.band/2-6,13),1),u=J+Z*.75+6;if(a.below){let d=e.x+c.at,f=e.y+a.h/2,p=m(f+J),h=m(f+J+Z);i=`M${m(d-l)},${m(f)}V${p}C${m(d-l)},${h} ${m(d+l)},${h} ${m(d+l)},${p}V${m(f)}`,o=Y(n.arrowTypeStart,d-l,f,0,-1),s=Y(n.arrowTypeEnd,d+l,f,0,-1),t.labelX=d,t.labelY=f+u+r.height/2}else{let d=e.x+a.w/2,f=e.y+c.at,p=m(d+J),h=m(d+J+Z);i=`M${m(d)},${m(f-l)}H${p}C${h},${m(f-l)} ${h},${m(f+l)} ${p},${m(f+l)}H${m(d)}`,o=Y(n.arrowTypeStart,d,f-l,-1,0),s=Y(n.arrowTypeEnd,d,f+l,-1,0),t.labelX=d+u+r.width/2,t.labelY=f}}else{let e=Ie(t.route);if(e.length<6)continue;Re(e,0,O[t.src],k[t.src]),Re(e,e.length-3,O[t.dst],k[t.dst]);let r=Math.abs(e[e.length-3]-e[0]),a=Math.abs(e[e.length-2]-e[1]),c=e.length===6&&(r<.01||a<.01||Math.hypot(r,a)<=3*J)?0:J,l=y(e,void 0,c,c);i=c>0?`M${m(l.sx)},${m(l.sy)}L${l.d.slice(1)}L${m(l.ex)},${m(l.ey)}`:l.d,o=Y(n.arrowTypeStart,l.sx,l.sy,l.sdx,l.sdy),s=Y(n.arrowTypeEnd,l.ex,l.ey,l.edx,l.edy)}let l=n.pattern===`dashed`;if(K+=`<g class="pele-edge pele-er-${l?`non-identifying`:`identifying`}" data-id="${a(n.id)}"><path d="${i}"${l?` stroke-dasharray="4 3"`:``}/>`+o+s+`</g>`,r.width>0){let e=t.labelX,i=t.labelY;q+=v(n.id,r,e,i,``,E)}}return{svg:e(`er`,V,H,h,c,r,s(L,V/2,C+L.height/2,` class="pele-title" font-weight="var(--_tw)"`)+(G?`<g class="pele-clusters">${G}</g>`:``)+(K?`<g class="pele-edges" fill="none" stroke="var(--_l)" stroke-linecap="round">${K}</g>`:``)+(q?`<g class="pele-edge-labels" font-size="${g}">${q}</g>`:``)+`<g class="pele-nodes">${le}</g>`),width:V,height:H,links:U}}function Ie(e){let t=e.slice(0,3);for(let n=3;n<e.length;n+=3){let r=t.length-3,i=i=>Math.abs(t[r+i]-e[n+i])<.01&&Math.abs(e[n+i]-e[n+3+i])<.01;n+3<e.length&&(i(0)||i(1))||t.push(e[n],e[n+1],e[n+2])}return t}function Le(e,t,n){let r=new Map,i=(e,n,i,a)=>{let o=t[e],s=n[i]-o.x,c=n[i+1]-o.y,l;if(Math.abs(Math.abs(c)-o.h/2)<.5)l=c<0?0:2;else if(Math.abs(Math.abs(s)-o.w/2)<.5)l=s<0?3:1;else return;let u=e*4+l,d={route:n,at:i,toward:n[a+(l&1?1:0)]},f=r.get(u);f?f.push(d):r.set(u,[d])};for(let t of e){let e=t.route.length-3;t.src===t.dst||e<3||(i(t.src,t.route,0,3),i(t.dst,t.route,e,e-3))}for(let[e,i]of r){if(i.length<2)continue;let r=e>>2,a=(e&1)==1,o=t[r].isGroup?t[r]:n[r],s=a?o.h:o.w,c=Math.max(Math.min(Ae,(s-2*je)/(i.length-1)),0),l=a?t[r].y:t[r].x;i.sort((e,t)=>e.toward-t.toward);for(let e=0;e<i.length;e++)i[e].route[i[e].at+ +!!a]=l+(e-(i.length-1)/2)*c}}function Re(e,t,n,r){if(r.isGroup)return;let i=e[t]-r.x,a=e[t+1]-r.y;r.w!==n.w&&Math.abs(Math.abs(i)-r.w/2)<.5&&(e[t]-=Math.sign(i)*(r.w-n.w)/2),r.h!==n.h&&Math.abs(Math.abs(a)-r.h/2)<.5&&(e[t+1]-=Math.sign(a)*(r.h-n.h)/2)}var ze={type:`er`,math:!0,parse(e,t,n){let r=new oe;return n&&(r.title=n),q(e,r),r},render:Pe};export{ze as er};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{_ as e,f as t,i as n,o as r,u as i,x as a}from"./E3FWOBN4-D5m5o2g0.js";import{n as o,r as s}from"./DKTLEL5E-DciMwFJ1.js";import{a as c,c as l,d as u,f as d,g as f,h as p,i as m,l as h,m as g,n as _,o as v,p as y,r as b,s as x,t as S,u as C}from"./C5HTQT3I-7U13x70S.js";import{PeleError as w,u as T}from"./lazy-DaMZI1F7.js";var E=32;function D(e){return new w(e,`semantic`,{type:`radar`})}function O(e,t){let n=e.axes.map(e=>({name:e.name,label:e.label??e.name})),r=e.curves.map(e=>{let t;if(e.entries[0].axis===void 0)t=e.entries.map(e=>e.value);else{if(n.length===0)throw D(`Axes must be populated before curves for reference entries`);let r=new Map;for(let t of e.entries)t.axis!==void 0&&!r.has(t.axis.$refText)&&r.set(t.axis.$refText,t.value);t=n.map(e=>{let t=r.get(e.name);if(t===void 0)throw D(`Missing entry for axis `+e.label);return t})}return{name:e.name,label:e.label??e.name,entries:t}}),i={showLegend:!0,ticks:5,max:null,min:0,graticule:`circle`};for(let t of e.options)t.name===`showLegend`?i.showLegend=t.value:t.name===`graticule`?i.graticule=t.value:i[t.name]=t.value;return i.ticks>E&&(i.ticks=E),{type:`radar`,title:e.title||t,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,``):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
|
|
2
|
+
`):void 0,axes:n,curves:r,options:i}}var k=0,A=0;function j(e,t){let n=t;for(let t=e.charCodeAt(n);t>=48&&t<=57;t=e.charCodeAt(n))n++;return n}function M(e,t){(t<k||t>=A)&&(k=t,A=j(e,t));let n=A;if(n===t)return-1;let r=e.charCodeAt(n)===46;if(r){let t=j(e,n+1),r=t-n-1;if(r>0&&e.charCodeAt(t)!==46)return t;if(r>1)return t-1}return e.charCodeAt(t)===48?t+1:r?n-1>t?n-1:-1:n}var N=c.pattern,P=/[\t ]*accDescr\s*{/y,F=-2;function I(e,t){return P.lastIndex=t,P.test(e)&&(F===-2&&(F=e.lastIndexOf(`}`)),P.lastIndex>F)?-1:(N.lastIndex=t,N.test(e)?N.lastIndex:-1)}var L={name:`ID`,pattern:/[\w]([-\w]*\w)?/y},R=e=>({name:e,pattern:e,longer:[L]}),z=e=>({name:e,pattern:e}),B=[z(`radar-beta:`),{...m(`radar-beta`),longer:[L]},R(`showLegend`),R(`graticule`),R(`curve`),R(`ticks`),R(`axis`),R(`max`),R(`min`),z(`:`),z(`,`),z(`[`),z(`]`),z(`{`),z(`}`),{name:`GRATICULE`,pattern:/circle|polygon/y},{name:`BOOLEAN`,pattern:/true|false/y},{...c,match:I},S,y,{name:`NUMBER`,pattern:/(?:[0-9]+\.[0-9]+(?!\.))|(?:0|[1-9][0-9]*(?!\.))/y,match:M},g,L,h,C,b,v,x];function V(e){return k=A=0,F=-2,_(e,B,`radar`)}function H(e){let t=new p(V(e),B,`radar`),n={$type:`Radar`,axes:[],curves:[],options:[]},r=()=>{for(;t.kind===23;)t.i++},i=()=>{t.kind!==-1&&(t.kind!==23&&t.fail(`a line break or the end of input`),r())},a=()=>{if(!t.accept(11))return;let e=d(t.expect(21));return t.expect(12),e},o=e=>{if(!e)return{$type:`Entry`,value:Number(t.expect(20))};let n={$refText:t.expect(22)};return t.accept(9),{$type:`Entry`,axis:n,value:Number(t.expect(20))}},s=()=>{let e=t.expect(22),n=a(),i={$type:`Curve`,name:e,entries:[]};n!==void 0&&(i.label=n),t.expect(13),r(),t.kind!==20&&t.kind!==22&&t.fail(`a number or an axis name`);let s=t.kind===22;for(i.entries.push(o(s));t.accept(10);)r(),i.entries.push(o(s));return r(),t.expect(14),i},c=()=>{let e={$type:`Axis`,name:t.expect(22)},n=a();return n!==void 0&&(e.label=n),e},m=()=>{let e=t.kind,n=t.take(),r;return r=e===2?t.expect(16)===`true`:e===3?t.expect(15):Number(t.expect(20)),{$type:`Option`,name:n,value:r}},h=()=>t.kind===2||t.kind===5||t.kind===7||t.kind===8||t.kind===3;for(r(),t.accept(0)||(t.expect(1),t.accept(9)),r();t.kind!==-1;)switch(t.kind){case 23:t.i++;break;case 17:n.accDescr=l(t.take()),i();break;case 18:n.accTitle=f(t.take()),i();break;case 19:n.title=u(t.take()),i();break;case 6:t.i++;do n.axes.push(c());while(t.accept(10));break;case 4:t.i++;do n.curves.push(s());while(t.accept(10));break;default:for(h()||t.fail(`an axis, a curve, an option, a title, or a line break`),n.options.push(m());t.accept(10);)h()||t.fail(`an option`),n.options.push(m())}return n}var U=12,W=26,G=24;function K(e,t,n,r,i){let a=e.radar?.[t];return typeof a==`number`&&a>=r?Math.min(a,i):n}function ee(e,t,n,r){let i=Math.min(Math.max(e,t),n),a=r*(i-t);return Number.isFinite(a)?a/(n-t):r*((i-t)/(n-t))}function te(e,t){let n=e.length,r=`M${a(e[0].x)},${a(e[0].y)}`;for(let i=0;i<n;i++){let o=e[(i-1+n)%n],s=e[i],c=e[(i+1)%n],l=e[(i+2)%n];r+=` C${a(s.x+(c.x-o.x)*t)},${a(s.y+(c.y-o.y)*t)} ${a(c.x-(l.x-s.x)*t)},${a(c.y-(l.y-s.y)*t)} ${a(c.x)},${a(c.y)}`}return r+` Z`}function q(e){let t=``;for(let n of e)t+=(t?` `:``)+a(n.x)+`,`+a(n.y);return t}function J(e,t,n){let r=K(t,`width`,320,1,4e3);return o(n,r,160,(i,a)=>Y(e,t,n,i,K(t,`height`,320,1,4e3)*i/r,a))}function Y(o,c,l,u,d,f){let p=l.fontSize??16,m=Math.round(p*.875),h=l.measurer??T(l.fontFamily,l.fontFamilyMono),g=l.padding??8,_=K(c,`axisScaleFactor`,1,0,10),v=K(c,`axisLabelFactor`,1.05,0,10),y=K(c,`curveTension`,.17,0,1),b=Math.min(u,d)/2,{axes:x,curves:S}=o,{ticks:C,graticule:w,min:E}=o.options,D=x.length,O=x.map((e,t)=>{let n=2*Math.PI*t/D-Math.PI/2;return{x:Math.cos(n),y:Math.sin(n)}}),k=o.options.max;if(k===null){k=-1/0;for(let e of S)for(let t of e.entries)t>k&&(k=t)}let A=-u/2-K(c,`marginLeft`,16,0,2e3),j=u/2+K(c,`marginRight`,16,0,2e3),M=-d/2-K(c,`marginTop`,16,0,2e3),N=d/2+K(c,`marginBottom`,16,0,2e3),P=``;for(let e=0;e<C;e++){let t=Math.min(b,b*(e+1)/C);P+=w===`circle`?`<circle r="${a(t)}"/>`:`<polygon points="${q(O.map(e=>({x:e.x*t,y:e.y*t})))}"/>`}let F=``,I=``;O.forEach((e,t)=>{let o=b*_;F+=`M0,0L${a(e.x*o)},${a(e.y*o)}`;let s=i(x[t].label,!1,h,m,4e3),c=b*v+6,l=e.x*c+(e.x>.01?s.width/2:e.x<-.01?-s.width/2:0),u=e.y*c+(e.y>.01?s.height/2:e.y<-.01?-s.height/2:0);I+=`<g class="pele-axis-label" data-id="${n(x[t].name)}">${r(s,l,u,``)}</g>`,A=Math.min(A,l-s.width/2),j=Math.max(j,l+s.width/2),M=Math.min(M,u-s.height/2),N=Math.max(N,u+s.height/2)});let L=``;S.forEach((e,r)=>{if(e.entries.length!==D)return;let i=e.entries.map((e,t)=>{let n=ee(e,E,k,b),r=Number.isFinite(n)?n:0;return{x:O[t].x*r,y:O[t].y*r}}),a=t(r),o=` class="pele-curve" data-id="${n(e.name)}" fill="${a}" stroke="${a}"`;L+=w===`circle`?`<path${o} d="${te(i,y)}"/>`:`<polygon${o} points="${q(i)}"/>`});let R=o.options.showLegend?S.map(e=>i(e.label,!1,h,m,4e3)):[],z=0;for(let e of R)z=Math.max(z,e.width);let B=R.length*W,V=f?-(U+8+z)/2:j+G,H=f?N+G/2:-B/2;R.length>0&&f?(A=Math.min(A,V),j=Math.max(j,-V),N=H+B):R.length>0&&(j=V+U+8+z,M=Math.min(M,-B/2),N=Math.max(N,B/2));let J=``;R.forEach((e,i)=>{let o=H+i*W+W/2,s=t(i);J+=`<g class="pele-legend-item" data-id="${n(S[i].name)}"><rect x="${a(V)}" y="${a(o-U/2)}" width="${U}" height="${U}" rx="2" fill="${s}" fill-opacity="0.4" stroke="${s}"/>`+r(e,V+U+8+e.width/2,o,``)+`</g>`});let Y=i(o.title,!1,h,p,s(l),1),X=Y.height>0?Y.height+8:0,Z=Math.max(j-A,Y.width),Q=Math.ceil(Z+2*g),$=Math.ceil(N-M+X+2*g),ne=`translate(${a(g+(Z-(j-A))/2-A)},${a(g+X-M)})`,re=r(Y,Q/2,g+Y.height/2,` class="pele-title" font-weight="var(--_tw)"`)+`<g transform="${ne}">`+(P?`<g class="pele-graticule" fill="none" stroke="var(--_a)">${P}</g>`:``)+(F?`<path class="pele-axes" d="${F}" fill="none" stroke="var(--_b)"/>`:``)+(L?`<g class="pele-curves" fill-opacity="0.2" stroke-width="1.5" stroke-linejoin="round">${L}</g>`:``)+(I?`<g class="pele-axis-labels" font-size="${m}">${I}</g>`:``)+(J?`<g class="pele-legend" font-size="${m}">${J}</g>`:``)+`</g>`;return{svg:e(`radar`,Q,$,p,l,o,re),width:Q,height:$,links:[]}}var X={type:`radar`,parse:(e,t,n)=>O(H(e),n),render:J};export{X as radar};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{h as e}from"./lazy-DaMZI1F7.js";function t(e,t){let n=e.indexOf(`
|
|
2
|
+
`,t);return n===-1?e.length:n}function n(e,t,n){for(let r=0;r<n.length;r++)if((e.charCodeAt(t+r)|32)!==n.charCodeAt(r))return!1;return!0}function r(n,r){let i=n.length,a=r;for(;a<i;){let r=n.charCodeAt(a);if(r===37&&n.charCodeAt(a+1)!==123)a=t(n,a);else{if(r===10)return a;if(e(r))do a++;while(a<i&&e(n.charCodeAt(a)));else if(r===35)a=t(n,a);else return a}}return a}function i(t,n){let r=n;for(;e(t.charCodeAt(r));)r++;return r}function a(e,r,a,o){let s=n(e,r,`accdescr`);if(!s&&!n(e,r,`acctitle`))return r;let c=e.length,l=i(e,r+8),u=e.charCodeAt(l),d=(t,n,r)=>{a.types.push(t),a.texts.push(e.slice(n,r)),a.starts.push(n)};if(u===58){l=i(e,l+1);let n=t(e,l);return d(s?o+2:o,r,l),d(s?o+3:o+1,l,n),n}if(!s||u!==123)return r;for(l=i(e,l+1);e.charCodeAt(l)!==125;){let t=e.indexOf(`}`,l);if(t===-1&&(t=c),d(o+4,l,t),l===c)return c;l=t}return l+1}export{a as i,r as n,t as r,n as t};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import{_ as e,a as t,b as n,g as r,h as i,i as a,o,p as s,r as c,t as l,u,x as d,y as f}from"./E3FWOBN4-D5m5o2g0.js";import{r as p}from"./DKTLEL5E-DciMwFJ1.js";import{n as m,r as h,t as g}from"./UO52YEYL-DN1qbGwF.js";import{t as ee}from"./E65FQMJL-Bg5F0Zo8.js";import{i as te,r as ne,s as re}from"./SPBWZ4VS-EqfCsJ5V.js";import{PeleError as _,f as v,n as y,u as ie}from"./lazy-DaMZI1F7.js";var b=class{type=`kanban`;title;sections=[];getType=g;last;sectionLevel=0;misplaced;addNode(e,t,n,r,i){let a={id:t,level:e,label:n};if(i!==void 0){let e=i.includes(`
|
|
2
|
+
`)?i+`
|
|
3
|
+
`:`{
|
|
4
|
+
`+i+`
|
|
5
|
+
}`,t;try{t=y(e)}catch(e){throw new _(`Metadata of "${a.id}" is not valid YAML. ${e.message}`,`syntax`,{type:`kanban`})}if(typeof t==`object`&&t&&!Array.isArray(t)){let e=t.shape?String(t.shape):``;if(e!==e.toLowerCase()||e.includes(`_`))throw new _(`No such shape: ${e}. Shape names should be lowercase.`,`semantic`,{type:`kanban`});t.label&&(a.label=String(t.label)),t.icon&&(a.icon=String(t.icon)),t.assigned&&(a.assigned=String(t.assigned)),t.ticket&&(a.ticket=String(t.ticket)),t.priority&&(a.priority=String(t.priority))}}if(this.misplaced)throw new _(`Items without section detected, found section ("${this.misplaced.label}")`,`semantic`,{type:`kanban`});let o=this.sections;if(o.length===0&&(this.sectionLevel=e),this.last=a,e===this.sectionLevel){let e=a;e.items=[],o.push(e)}else o[o.length-1].items.push(a),e<this.sectionLevel&&(this.misplaced=a)}decorateNode(e){let t=this.last;!e||!t||(e.icon&&(t.icon=e.icon),e.class&&(t.cssClasses=e.class))}};function x(e,t){h(e,t,!0)}var S=12,C=8,w=10,T=8,ae=4,E=6,oe=new Map([[`very high`,`stroke="${r}"`],[`high`,`stroke="${r}" opacity="0.5"`],[`low`,`stroke="var(--_m)" opacity="0.5"`],[`very low`,`stroke="var(--_m)"`]]);function D(e,t,n,r,a,o=0){let s=u(e,t,n,r,a,o);if(s.width<=a)return s;let c=[],l=[],d=0,f=[],p=0,m=()=>{c.push(f),l.push(p),d=Math.max(d,p),f=[],p=0};for(let e=0;e<s.lines.length;e++)if(s.widths[e]<=a)f=s.lines[e],p=s.widths[e],m();else{for(let t of s.lines[e]){if(t.icon!==void 0||t.math){p>0&&p+t.width>a&&m(),f.push(t),p+=t.width;continue}let e=``,i=p;for(let o of t.text){let s=n.width(o,r,t.style);p>0&&p+s>a&&(e&&f.push({text:e,style:t.style,width:p-i}),m(),e=``,i=0),e+=o,p+=s}e&&f.push({text:e,style:t.style,width:p-i})}m()}let h={...s,lines:c,widths:l,width:d,height:c.length*s.lineHeight};return s.heights?i(h):h}function O(e,n,r,i,a,c=!1){let u=``;for(let p=0;p<e.lines.length;p++){let m=e.lines[p],h=r+s(e,p);if(m.length===1&&m[0].icon===void 0&&m[0].math===void 0&&!(m[0].style&56))u+=`<text${l(i,m[0].style)} x="${d(n)}" y="${d(h+e.size*.35)}"${c?` text-anchor="end"`:``}>${t(m[0].text)}</text>`;else{let t=e.widths[p];u+=o(f(e,p),n+(c?-t:t)/2,h,i,a)}}return u}var k=e=>!!e&&v(e)!==``;function A(r,i,s){let l=s.fontSize??16,f=Math.round(l*.875),h=Math.round(l*1.5),g=Math.round(f*1.5),_=s.measurer??ie(s.fontFamily,s.fontFamilyMono),v=s.padding??8,y=s.icons,b=i.kanban??{},x=b.sectionWidth,A=f*1.25,j=0,M=(e,t,n)=>{if(e&&e.includes(`$$`))for(let r of u(e,!0,_,t,1/0).lines)for(let e of r)e.math&&(j=Math.max(j,e.math.width+n))};for(let e of r.sections){let t=_.width(String(e.items.length),f,0);M(e.label,l,2*C+8+t+12+(k(e.icon)?A+E:0));for(let t of e.items){let e=2*(C+w);M(t.label,f,e+(k(t.icon)?A+E:0)),M(t.ticket,f,e),M(t.assigned,f,e)}}let N=Math.max(typeof x==`number`&&x>0?Math.min(Math.max(x,80),2e3):200,Math.ceil(j)),P=s.maxWidth!==void 0&&s.maxWidth>0?s.maxWidth-2*v:1/0,F=r.sections.length,I=F*(N+S)-S<=P,L=I?Math.max(F,1):Math.max(1,Math.floor((P+S)/(N+S))),R=I?N:Math.max(Math.min(N,P),Math.min(Math.floor((P+S)/L)-S,N*2),Math.ceil(j)),z=typeof b.ticketBaseUrl==`string`?b.ticketBaseUrl:``,B=R-2*C,V=B-2*w,H=[],U=r.sections,W=[],G=[],K=[],q=h,J=[];for(let e of U){let t=_.width(String(e.items.length),f,0),n=t+12+(k(e.icon)?A+E:0),r=D(e.label,!0,_,l,B-8-n,1);q=Math.max(q,r.height),G.push(t),W.push(r);let i=[],a=0;for(let t of e.items){let e=D(t.label,!0,_,f,V-(k(t.icon)?A+E:0)),n=D(t.ticket,!1,_,f,V),r=D(t.assigned,!1,_,f,V),o=n.width+r.width+8>V?n.height+r.height:Math.max(n.height,r.height),s=2*w+Math.max(e.height,g)+(o?ae+o:0);i.push({item:t,label:e,ticket:n,assigned:r,meta:o,height:s}),a+=s+T}K.push(i),J.push(a)}q+=2*C;let Y=[],X=[];for(let e=0,t=0;e<U.length;e+=L){let n=T;for(let t=e;t<Math.min(e+L,U.length);t++)n=Math.max(n,J[t]);X.push(t),Y.push(q+n),t+=q+n+S}let se=Y.length>0?X[X.length-1]+Y[Y.length-1]:0,Z=ee(r.title,_,l,p(s)),Q=Z.height>0?Z.height+16:0,ce=Math.max(Math.min(U.length,L)*(R+S)-S,0),le=Math.max(ce,Z.width),ue=v+(le-ce)/2,de=R-C-4,fe=``;for(let e=0;e<U.length;e++){let r=U[e],i=Math.floor(e/L),o=`<rect width="${R}" height="${d(Y[i])}" fill="var(--_s)"${c}/>`+O(W[e],C+4,C,` class="pele-cluster-label" font-weight="var(--_hw)"`,y)+`<text class="pele-count" x="${de}" y="${d(C+h/2+f*.35)}" text-anchor="end" font-size="${f}" fill="var(--_m)">${r.items.length}</text>`;k(r.icon)&&(o+=m(r.icon,de-G[e]-E-A,C+(h-A)/2,A,y));let l=q;for(let r of K[e]){let e=r.item,i=(e.priority??``).trim().toLowerCase(),u=oe.get(i),p=`<rect width="${B}" height="${d(r.height)}" fill="var(--_bg)" stroke="var(--_b)"${c}/>`;u!==void 0&&(p+=`<path class="pele-priority" d="M2.5,5V${d(r.height-5)}" fill="none" ${u} stroke-width="3" stroke-linecap="round"/>`),p+=O(r.label,w,w,` class="pele-label"`,y),k(e.icon)&&(p+=m(e.icon,B-w-A,w+(g-A)/2,A,y));let h=r.height-w;if(e.ticket){let n=h-r.meta,i=z?re(te(z.replace(`#TICKET#`,()=>e.ticket)),s):void 0;i===void 0?p+=O(r.ticket,w,n,` class="pele-ticket" fill="var(--_m)"`,y):(p+=`<a href="${t(i)}" target="_blank"${ne(s)}>`+O(r.ticket,w,n,` class="pele-ticket" fill="var(--_c)"`,y)+`</a>`,H.push({id:e.id,href:i,internal:!1}))}e.assigned&&(p+=O(r.assigned,B-w,h-r.assigned.height,` class="pele-assigned" fill="var(--_m)"`,y,!0)),o+=`<g class="pele-node pele-card${u===void 0?``:` pele-priority-`+i.replace(` `,`-`)}${n(e.cssClasses??``)}" data-id="${a(e.id)}" transform="translate(${C},${d(l)})" font-size="${f}">${p}</g>`,l+=r.height+T}fe+=`<g class="pele-cluster pele-column${n(r.cssClasses??``)}" data-id="${a(r.id)}" transform="translate(${d(ue+e%L*(R+S))},${d(v+Q+X[i])})">${o}</g>`}let $=Math.ceil(le+2*v),pe=Math.ceil(se+Q+2*v),me=o(Z,$/2,v+Z.height/2,` class="pele-title" font-weight="var(--_tw)"`)+fe;return{svg:e(`kanban`,$,pe,l,s,{},me),width:$,height:pe,links:H}}var j={type:`kanban`,math:!0,parse(e,t,n){let r=new b;return r.title=n,x(e,r),r},render:A};export{j as kanban};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{_ as e,a as t,b as n,i as r,o as i,r as a,u as o,x as s}from"./E3FWOBN4-D5m5o2g0.js";import{o as c,r as l}from"./DKTLEL5E-DciMwFJ1.js";import{c as u,d,g as f,h as p,i as m,n as h,p as g,t as _}from"./C5HTQT3I-7U13x70S.js";import{n as v,t as y}from"./DUZNPW7S-D3pifVNb.js";import{t as b}from"./D4V2MWCI-CytzCr6g.js";import{PeleError as x,d as S,o as C,u as ee,v as w}from"./lazy-DaMZI1F7.js";var T=/[─━│┃└┗├┣]/,E=/[└┗├┣]/,D=/[─━]/,O=/^[\s│┃]+$/,k=/^[\s─━│┃└┗├┣]+$/,A=/^\s*(title[\t ]|accTitle[\t ]*:|accDescr[\t ]*[:{])/,j=/^\s*%%/,M=` `;function N(e){return e.some(e=>T.test(e))}function P(e){for(let t of e){let e=E.exec(t);if(e?.index&&e.index>0)return e.index}return 4}function F(e,t){return e.replace(/\bline\s+(\d+)\b/gi,(e,n)=>{let r=t.get(parseInt(n,10));return r?`line ${r}`:e})}function I(e,t){let n=0;for(let r=1;r<t;r++)n=e.indexOf(`
|
|
2
|
+
`,n)+1;return n}function L(e,t,n){let{line:r}=C(e,I(e,t+1));throw new x(`Line ${r}: ${n}`,`syntax`,{type:`treeView`,line:r})}function R(e,t){let n=0;for(let r=0;n<e.length&&r<t;n++)r+=e[n]===` `?4:1;return n}function z(e){let t=new Map,n=new Map;if(!T.test(e))return{text:e,lineMap:t,columns:n};let r=e.split(`
|
|
3
|
+
`),i=-1;for(let e=0;e<r.length;e++)if(r[e].trim()===`treeView-beta`){i=e;break}if(i===-1)return{text:e,lineMap:t,columns:n};let a=e=>e.trim()===``||j.test(e)||A.test(e),o=[];for(let e=i+1;e<r.length;e++){let t=r[e];a(t)||O.test(t)||o.push(t.replace(/\t/g,` `))}if(!N(o))return{text:e,lineMap:t,columns:n};let s=P(o),c=[],l=(e,r,i)=>{c.push(e),t.set(c.length,r+1),i&&n.set(c.length,i)};for(let e=0;e<=i;e++)l(r[e],e);for(let t=i+1;t<r.length;t++){let n=r[t];if(a(n)){l(n,t);continue}if(O.test(n))continue;let i=n.replace(/\t/g,` `),o=E.exec(i);if(o){let r=Math.round(o.index/s)+1,a=o.index+1;for(;a<i.length&&D.test(i[a]);)a++;for(;a<i.length&&i[a]===` `;)a++;let c=i.slice(a).trimEnd();c||L(e,t,`Empty node — expected a filename or directory name after the box-drawing prefix`);let u=M.repeat(r);l(u+c,t,e=>R(n,a+Math.max(e-u.length,0)))}else{if(k.test(i))continue;T.test(i)?l(n,t):/^\s+/.test(i)?L(e,t,`Unexpected indentation without box-drawing characters. In box-drawing format, use ├── or └── prefixes for indented nodes.`):l(n,t)}}return{text:c.join(`
|
|
4
|
+
`),lineMap:t,columns:n}}function B(e,t){if(e.startsWith(`##`,t)||e.startsWith(`icon(`,t))return!0;if(!e.startsWith(`:::`,t))return!1;let n=t+3;for(;w(e.charCodeAt(n));)n++;let r=e.charCodeAt(n);return r>=65&&r<=90||r>=97&&r<=122||r===95}function V(e,t){let n=e.charCodeAt(t);if(w(n)||n===10||n===13||n===34||n===39||e.startsWith(`:::`,t)||e.startsWith(`icon(`,t)||e.startsWith(`##`,t))return-1;let r=e.length,i=t+1;for(;i<r;){let t=e.charCodeAt(i);if(t===10||t===13)break;if(w(t)){let t=i+1;for(;w(e.charCodeAt(t));)t++;if(B(e,t))break;i=t}else i++}return i}var H={name:`BARE_NAME`,pattern:/(?!:::|icon\(|##)[^ \t\n\r"'](?:(?![ \t]+:::[ \t]*[A-Za-z_]|[ \t]+icon\(|[ \t]+##)[^\n\r])*/y,match:V},U=[{...m(`treeView-beta`),longer:[H]},b(),_,g,{name:`CLASS_ANNOTATION`,pattern:/[ \t]+:::[ \t]*[A-Za-z_][\w-]*/y},{name:`ICON_ANNOTATION`,pattern:/[ \t]+icon\([\w-]*(?::[\w-]+)?\)/y},{name:`DESC_ANNOTATION`,pattern:/[ \t]+##[^\n\r]*/y},{name:`INDENTATION`,pattern:/[ \t]{1,}/y},{name:`QUOTED_NAME`,pattern:/"[^"]*"|'[^']*'/y},{name:`WS`,pattern:/[ \t]+/y,hidden:!0},{name:`ML_COMMENT`,pattern:/\%\%[^\n]*/y,hidden:!0},{name:`NL`,pattern:/\r?\n/y,hidden:!0},H];function W(e){let t=e.length;for(;t>0&&w(e.charCodeAt(t-1));)t--;return t===e.length?e:e.slice(0,t)}function G(e,t){switch(e){case`INDENTATION`:return t?.length||0;case`QUOTED_NAME`:return t.substring(1,t.length-1);case`BARE_NAME`:return W(t);case`CLASS_ANNOTATION`:return t.trim().substring(3).trim();case`ICON_ANNOTATION`:{let e=t.trim();return e.substring(5,e.length-1)}case`DESC_ANNOTATION`:return t.trim().substring(2).trim();default:return}}function K(e){let t=new p(h(e,U,`treeView`),U,`treeView`),n={$type:`TreeView`,nodes:[]};for(t.expect(0);;)if(t.kind===1)n.accDescr=u(t.take());else if(t.kind===2)n.accTitle=f(t.take());else if(t.kind===3)n.title=d(t.take());else break;for(;t.kind!==-1;){let e={$type:`TreeNode`,name:``};if(t.kind===7&&(e.indent=t.take().length),t.kind===8){let n=t.take();e.name=n.substring(1,n.length-1)}else t.kind===12?e.name=W(t.take()):t.fail(`a name`);for(;;)if(t.kind===4)e.classAnnotation=G(`CLASS_ANNOTATION`,t.take());else if(t.kind===5)e.iconAnnotation=G(`ICON_ANNOTATION`,t.take());else if(t.kind===6)e.descAnnotation=G(`DESC_ANNOTATION`,t.take());else break;n.nodes.push(e)}return n}var q=class{count=1;root={id:0,level:-1,name:`/`,nodeType:`directory`,children:[]};stack=[this.root];addNode(e,t,n,r,i,a){let o=this.stack;for(;e<=o[o.length-1].level;)o.pop();let s={id:this.count++,level:e,name:t,nodeType:n,icon:i,cssClass:r,description:a,children:[]};o[o.length-1].children.push(s),o.push(s)}};function J(e,t){for(let n of e.nodes){let e=typeof n.indent==`number`?n.indent:0,r=n.name,i=r.endsWith(`/`);i&&(r=r.slice(0,-1));let a=n.iconAnnotation;t.addNode(e,r,i?`directory`:`file`,n.classAnnotation||void 0,a===void 0?void 0:a||`none`,n.descAnnotation||void 0)}}function te(e){let{text:t,lineMap:n,columns:r}=z(e);try{return K(t)}catch(i){if(!(i instanceof x)||t===e)throw i;let a=n.get(i.line);if(a===void 0)throw i;let o=i.column>0?r.get(i.line)?.(i.column-1)??i.column-1:0,s=C(e,I(e,a)+o),c=i.message.includes(`
|
|
5
|
+
`)?i.message.indexOf(`
|
|
6
|
+
`):i.message.length,l=i.message.slice(c),u=F(i.message.slice(0,c),new Map([[i.line,s.line]]))+(i.snippet?l.replace(i.snippet,()=>s.snippet):l);throw new x(u,i.code,{type:i.type,line:s.line,column:i.column>0?s.column:0,snippet:i.snippet?s.snippet:``})}}function ne(e,t){let n=new q;return J(e,n),{type:`treeView`,title:e.title||t,accTitle:e.accTitle?e.accTitle.replace(/^\s+/g,``):void 0,accDescr:e.accDescr?e.accDescr.replace(/\n\s+/g,`
|
|
7
|
+
`):void 0,root:n.root,count:n.count}}var Y=`mermaid-treeview`,X=new Map([[`folder`,`M3 6.5A1.5 1.5 0 0 1 4.5 5h4.6l2.4 2.5h8A1.5 1.5 0 0 1 21 9v9a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 3 18z`],[`file`,`M6.5 3h7L19 8.5v11a1.5 1.5 0 0 1-1.5 1.5h-11A1.5 1.5 0 0 1 5 19.5v-15A1.5 1.5 0 0 1 6.5 3zM13.5 3v5.5H19`]]);function Z(e,t){if(e===void 0||!Object.prototype.hasOwnProperty.call(e,t))return;let n=e[t];return typeof n==`string`?n:void 0}function re(e,t){let n=Z(t?.filenameIcons,e);if(n)return n;let r=e.lastIndexOf(`.`);if(r>0){let n=e.substring(r).toLowerCase();return Z(t?.extensionIcons,n)??Z(t?.extensionIcons,n.slice(1))}}function ie(e,t){return e.includes(`:`)?e:X.has(e)||!t?`${Y}:${e}`:`${t}:${e}`}function ae(e,t){if(e.icon!==`none`){if(e.icon)return ie(e.icon,t.defaultIconPack);if(t.showIcons){if(e.nodeType===`file`){let n=re(e.name,t);if(n===`none`)return;if(n)return ie(n,t.defaultIconPack)}return`${Y}:${e.nodeType===`directory`?`folder`:`file`}`}}}function oe(e){let t=e=>typeof e==`object`&&e&&!Array.isArray(e)?e:void 0,n=t(e.treeView)??{};return{showIcons:!!n.showIcons,defaultIconPack:typeof n.defaultIconPack==`string`?n.defaultIconPack:``,filenameIcons:t(n.filenameIcons),extensionIcons:t(n.extensionIcons)}}var se=6,ce=16,le=7,ue=4,Q=4;function $(e,t,n,r,i){let a=e.treeView?.[t];return typeof a==`number`&&a>=r&&a<=i?a:n}function de(e){return{paddingX:$(e,`paddingX`,5,0,100),paddingY:$(e,`paddingY`,2,0,100),rowIndent:$(e,`rowIndent`,15,0,400),lineThickness:$(e,`lineThickness`,1,.25,12)}}function fe(e,t,n){return c(n,r=>pe(e,t,n,r))}function pe(c,u,d,f){let p=d.fontSize??16,m=d.measurer??ee(d.fontFamily,d.fontFamilyMono),h=d.padding??8,g=oe(u),{paddingX:_,paddingY:b,rowIndent:x,lineThickness:C}=de(u),w=0,T=c.root.children.map(e=>[e,0]);for(let e=0;f&&e<T.length;e++){let[t,n]=T[e];w=Math.max(w,n);for(let e of t.children)T.push([e,n+1])}let E=f?Math.min(x+_,Math.max(2,((d.maxWidth??320)-120)/Math.max(1,w))):x+_,D=Math.round(p*1.5)+2*b,O=p,k=o(c.title,!1,m,p,f?l(d):4e3,1),A=k.height>0?k.height+12:0,j=e=>e.some(e=>ae(e,g)!==void 0),M=[],N=new Map,P=[],F=(e,t)=>{let n=j(e);for(let r=e.length-1;r>=0;r--)P.push([e[r],t,n])};F(c.root.children,0);let I=0,L=!1,R=0;for(;P.length>0;){let[e,t,n]=P.pop(),r=t*E,i=S(e.name),a=r+(n?O+se:0),o=Math.max(40,(d.maxWidth??320)-2*h-2*Q-a),s=f?y(i,m,p,o,+(e.nodeType===`directory`)):void 0,c=f&&e.description?y(S(e.description),m,p,o,2):void 0,l=s?s.width:m.width(i,p,+(e.nodeType===`directory`));a+l>I&&(I=a+l);let u=e.cssClass!==void 0&&e.cssClass.split(/\s+/).includes(`highlight`);u&&(L=!0);let _=f?Math.max(D,(s?.height??0)+(c?.height??0)+2*b):D,v={node:e,x:r,cy:R+(f?b+Math.max(O,s?.height??0)/2:_/2),icon:ae(e,g),text:i,labelX:a,highlighted:u,label:s,description:c,top:R,height:_};R+=_,M.push(v),N.set(e,v),F(e.children,t+1)}let z=I+ce,B=I;for(let e of M){let t=e.node.description;if(!t)continue;let n=e.description?e.description.width:m.width(S(t),p,2);B=Math.max(B,(f?e.labelX:z)+n)}B=Math.max(B,k.width);let V=h+(L?Q:0),H=h+A,U=Math.ceil(B+2*V),W=Math.ceil(H+R+h),G=``;for(let e of M){let t=e.node.children;if(t.length===0)continue;let n=V+e.x+le,r=Math.max(n,V+e.x+E-_),i=H+N.get(t[t.length-1]).cy,a=Math.min(ue,r-n),o=`M${s(n)},${s(H+e.top+e.height-2)}V${s(i-a)}`;a>0&&(o+=`Q${s(n)},${s(i)} ${s(n+a)},${s(i)}H${s(r)}`);for(let e=0;e<t.length-1&&r>n;e++)o+=`M${s(n)},${s(H+N.get(t[e]).cy)}H${s(r)}`;G+=`<path d="${o}"/>`}let K=p*.35,q=``;for(let e of M){let i=e.node,o=H+e.cy,c=i.nodeType===`directory`,l=``;if(e.highlighted){let t=V+e.x-Q;l+=`<rect class="pele-tree-highlight" x="${s(t)}" y="${s(H+e.top+1)}" width="${s(U-V+Q-t)}" height="${s(e.height-2)}" fill="var(--_c)" fill-opacity="0.14"${a}/>`}if(e.icon!==void 0){let t=e.icon.startsWith(Y+`:`)?e.icon.slice(Y.length+1):``,n=X.get(t)??X.get(c?`folder`:`file`),i=d.icons?.(e.icon)??`<path d="${n}" stroke="var(--_m)" stroke-width="1.5"/>`;l+=`<svg class="pele-icon" data-icon="${r(e.icon)}" x="${s(V+e.x)}" y="${s(o-O/2)}" width="${s(O)}" height="${s(O)}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${i}</svg>`}e.label?l+=v(e.label,V+e.labelX,H+e.top+b,` class="pele-label"${c?` font-weight="var(--_hw)"`:``}`):e.text!==``&&(l+=`<text class="pele-label" x="${s(V+e.labelX)}" y="${s(o+K)}"${c?` font-weight="var(--_hw)"`:``} xml:space="preserve">${t(e.text)}</text>`),e.description?l+=v(e.description,V+e.labelX,H+e.top+b+(e.label?.height??0),` class="pele-tree-description" font-style="italic" fill="var(--_m)"`):i.description&&(l+=`<text class="pele-tree-description" x="${s(V+z)}" y="${s(o+K)}" font-style="italic" fill="var(--_m)" xml:space="preserve">${t(S(i.description))}</text>`),q+=`<g class="pele-node pele-tree-${c?`dir`:`file`}${n(i.cssClass??``)}" data-id="${r(i.name)}">${l}</g>`}let J=i(k,U/2,h+k.height/2,` class="pele-title" font-weight="var(--_tw)"`)+(G?`<g class="pele-tree-guides" fill="none" stroke="var(--_b)" stroke-width="${s(C)}">${G}</g>`:``)+q;return{svg:e(`treeView`,U,W,p,d,c,J),width:U,height:W,links:[]}}var me={type:`treeView`,parse:(e,t,n)=>ne(te(e),n),render:fe};export{me as treeView};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import{_ as e,a as t,b as n,d as r,i,o as a,s as o,u as s,x as c}from"./E3FWOBN4-D5m5o2g0.js";import{a as l,o as u,r as d,t as f}from"./DKTLEL5E-DciMwFJ1.js";import{a as p,d as m,i as h,l as g,s as _,u as v}from"./CUVCMPQX-JTGMOfG2.js";import{t as y}from"./E65FQMJL-Bg5F0Zo8.js";import{a as b,i as x,n as S,r as C,s as w,t as T}from"./A255FCTW-woaH7Mj_.js";import{a as E,i as D,n as O,r as k,t as ee}from"./SPBWZ4VS-EqfCsJ5V.js";import{t as A}from"./7WLXJQOR-D6QVYUu9.js";import{i as te,n as ne,r as re,t as ie}from"./DHKBVIA3-CVnlqiEq.js";import{i as ae,n as oe,r as se,t as ce}from"./3JIRLDUO-C1CwW1Ha.js";import{n as le,t as ue}from"./FTXIJQGB-CggtIYAM.js";import{PeleError as j,c as M,d as de,g as N,h as P,i as F,n as I,s as fe,u as pe}from"./lazy-DaMZI1F7.js";function L(e){return e===`markdown`||e===`string`||e===`text`?e:`markdown`}function me(e){return e.startsWith(`"`)&&e.endsWith(`"`)?e.substring(1,e.length-1):e}function R(e,t){let n=0;for(let r=0;r<t.length;r++)t[r]===e&&n++;return n}function z(e){let t=e.trim(),n=`arrow_open`;switch(t[0]){case`<`:n=`arrow_point`,t=t.slice(1);break;case`x`:n=`arrow_cross`,t=t.slice(1);break;case`o`:n=`arrow_circle`,t=t.slice(1)}let r=`normal`;return t.includes(`=`)&&(r=`thick`),t.includes(`.`)&&(r=`dotted`),{type:n,stroke:r}}function B(e){let t=e.trim(),n=t.slice(0,-1),r=`arrow_open`;switch(t.slice(-1)){case`x`:r=`arrow_cross`,t.startsWith(`x`)&&(r=`double_`+r,n=n.slice(1));break;case`>`:r=`arrow_point`,t.startsWith(`<`)&&(r=`double_`+r,n=n.slice(1));break;case`o`:r=`arrow_circle`,t.startsWith(`o`)&&(r=`double_`+r,n=n.slice(1))}let i=`normal`,a=n.length-1;n.startsWith(`=`)&&(i=`thick`),n.startsWith(`~`)&&(i=`invisible`);let o=R(`.`,n);return o&&(i=`dotted`,a=o),{type:r,stroke:i,length:a}}var V=class{type=`flowchart`;direction;nodes=new Map;edges=[];subgraphs=[];classes=new Map;tooltips=new Map;defaultEdgeStyle;defaultInterpolate;title;accTitle;accDescr;subgraphLookup=new Map;members=new Set;edgeById=new Map;pairCount=new Map;subCount=0;options;constructor(e={}){this.options=e}addVertex(e,t,n,r,i,a,o,s){if(!e||e.trim().length===0)return;let c;if(s!==void 0){let t=s.includes(`
|
|
2
|
+
`)?s+`
|
|
3
|
+
`:`{
|
|
4
|
+
`+s+`
|
|
5
|
+
}`,n;try{n=I(t)}catch(t){throw new j(`Metadata of "${e}" is not valid YAML. ${t.message}`,`syntax`,{type:`flowchart`})}c=typeof n==`object`&&n&&!Array.isArray(n)?n:void 0}let l=this.subgraphLookup.get(e);if(l&&c){l.metadata={...l.metadata,...c};return}let u=this.edgeById.get(e);if(u){c?.animate!==void 0&&(u.animate=c.animate),c?.animation!==void 0&&(u.animation=c.animation),c?.curve!==void 0&&(u.interpolate=c.curve);return}let d=this.nodes.get(e);if(d===void 0&&(t===void 0&&n===void 0&&r!=null&&this.options.warn?.(`Style applied to unknown node "${e}". This may indicate a typo. The node will be created automatically.`),d={id:e,labelType:`text`,styles:[],classes:[]},this.nodes.set(e,d)),t===void 0?d.text===void 0&&(d.text=e):(d.labelType=t.type,d.text=me(t.text.trim())),n!==void 0&&(d.type=n),r!=null)for(let e of r)d.styles.push(e);if(i!=null)for(let e of i)d.classes.push(e);if(a!==void 0&&(d.dir=a),d.props===void 0?d.props=o??{}:o!==void 0&&Object.assign(d.props,o),c===void 0)return;if(c.shape){let e=String(c.shape);if(e!==e.toLowerCase()||e.includes(`_`))throw new j(`No such shape: ${e}. Shape names should be lowercase.`,`semantic`,{type:`flowchart`});if(!ue(e))throw new j(`No such shape: ${e}.`,`semantic`,{type:`flowchart`});d.type=e}let f=typeof c.label==`string`?c.label:void 0;c.label&&(d.text=String(c.label),d.labelType=L(c.labelType)),c.icon&&(d.icon=String(c.icon),!f?.trim()&&d.text===e&&(d.text=``)),c.form&&(d.form=String(c.form)),c.pos&&(d.pos=String(c.pos)),c.img&&(d.img=String(c.img),!f?.trim()&&d.text===e&&(d.text=``)),c.constraint&&(d.constraint=String(c.constraint)),c.w&&(d.assetWidth=Number(c.w)),c.h&&(d.assetHeight=Number(c.h))}addSingleLink(e,t,n,r){let i={start:e,end:t,type:void 0,text:``,labelType:`text`,classes:[],isUserDefinedId:!1,interpolate:this.defaultInterpolate},a=n?.text;a!==void 0&&(i.text=me(a.text.trim()),i.labelType=L(a.type)),n!==void 0&&(i.type=n.type,i.stroke=n.stroke,i.length=n.length>10?10:n.length);let o=e+`\0`+t,s=this.pairCount.get(o)??0;r&&!this.edgeById.has(r)?(i.id=r,i.isUserDefinedId=!0):i.id=`L_${e}_${t}_${s===0?0:s+1}`;let c=this.options.maxEdges;if(c!==void 0&&this.edges.length>=c)throw new j(`Edge limit exceeded. The limit is ${c}.`,`limit`,{type:`flowchart`});this.edges.push(i),this.pairCount.set(o,s+1),this.edgeById.has(i.id)||this.edgeById.set(i.id,i)}addLink(e,t,n){let r=typeof n?.id==`string`?n.id.replace(`@`,``):void 0,i=e[e.length-1],a=t[0];for(let o of e)for(let e of t)this.addSingleLink(o,e,n,o===i&&e===a?r:void 0)}updateLinkInterpolate(e,t){for(let n of e)n==="default"?this.defaultInterpolate=t:this.edgeAt(n).interpolate=t}updateLink(e,t){for(let n of e){if(n==="default"){this.defaultEdgeStyle=t;continue}let e=this.edgeAt(n);e.style=t,t.length>0&&!t.some(e=>e?.startsWith(`fill`))&&t.push(`fill:none`)}}edgeAt(e){let t=this.edges[Number(e)];if(t===void 0)throw new j(`The index ${e} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`,`semantic`,{type:`flowchart`});return t}addClass(e,t){let n=t.join().replace(/\\,/g,`§§§`).replace(/,/g,`;`).replace(/§§§/g,`,`).split(`;`);for(let t of e.split(`,`)){let e=this.classes.get(t);e===void 0&&(e={id:t,styles:[],textStyles:[]},this.classes.set(t,e));for(let t of n)t.includes(`color`)&&e.textStyles.push(t.replace(`fill`,`bgFill`)),e.styles.push(t)}}setDirection(e){let t=e.trim();t.includes(`<`)&&(t=`RL`),t.includes(`^`)&&(t=`BT`),t.includes(`>`)&&(t=`LR`),t.includes(`v`)&&(t=`TB`),t===`TD`&&(t=`TB`),this.direction=t}setClass(e,t){for(let n of e.split(`,`))this.nodes.get(n)?.classes.push(t),this.edgeById.get(n)?.classes.push(t),this.subgraphLookup.get(n)?.classes.push(t)}setTooltip(e,t){if(t!==void 0)for(let n of e.split(`,`))this.tooltips.set(n,t)}setLink(e,t,n){let r=t.trim();for(let t of e.split(`,`)){let e=this.nodes.get(t);e!==void 0&&(e.link=r?D(r):void 0,e.linkTarget=n)}this.setClass(e,`clickable`)}setClickEvent(e,t,n){this.setClass(e,`clickable`)}setAccTitle(e){this.accTitle=e.replace(/^\s+/g,``)}setAccDescription(e){this.accDescr=e.replace(/\n\s+/g,`
|
|
6
|
+
`)}addSubGraph(e,t,n){let r=e?.text.trim(),i=n?.text??``;e!==void 0&&e===n&&/\s/.test(i)&&(r=void 0);let a=new Set,o=[],s;for(let e of t)if(typeof e==`string`)e.trim()!==``&&!a.has(e)&&(a.add(e),o.push(e));else if(Array.isArray(e))for(let t of e)t.trim()!==``&&!a.has(t)&&(a.add(t),o.push(t));else s=e.value;s??=this.options.inheritDir?this.direction??this.options.direction:void 0,r??=`subGraph`+this.subCount,i||=``,this.subCount++;let c={id:r,nodes:o,title:i.trim(),classes:[],dir:s,labelType:L(n?.type)},l=this.members;c.nodes=o.filter(e=>!l.has(e)&&e!==r);for(let e of c.nodes)l.add(e);let u=this.subgraphLookup.get(r);if(u)for(let e of c.nodes)u.nodes.push(e);else this.subgraphs.push(c);return this.subgraphLookup.set(r,u??c),r}exists(e,t){for(let n of e)if(n.nodes.includes(t))return!0;return!1}makeUniq(e,t){let n=new Set;for(let e of t)for(let t of e.nodes)n.add(t);return{nodes:e.nodes.filter(e=>!n.has(e))}}destructLink(e,t){let n=B(e);if(!t)return n;let r=z(t);if(r.stroke!==n.stroke)return{type:`INVALID`,stroke:`INVALID`};if(r.type===`arrow_open`)r.type=n.type;else{if(r.type!==n.type)return{type:`INVALID`,stroke:`INVALID`};r.type=`double_`+r.type}return r.type===`double_arrow`&&(r.type=`double_arrow_point`),r.length=n.length,r}subgraph(e){return this.subgraphLookup.get(e)}},H=`$end.INVALID.acc_title.acc_title_value.acc_descr.acc_descr_value.acc_descr_multiline_value.SHAPE_DATA.CALLBACKNAME.CALLBACKARGS.MD_STR.STR.STYLE.DEFAULT.LINKSTYLE.INTERPOLATE.CLASSDEF.CLASS.HREF.CLICK.GRAPH.subgraph.end.LINK_TARGET.NODIR.DIR.direction_tb.direction_bt.direction_rl.direction_lr.direction_td.LINK_ID.NUM.BRKT.STYLE_SEPARATOR.COLON.AMP.SEMI.COMMA.MULT.LINK.START_LINK.EDGE_TEXT.-).TEXT.(-.STADIUMEND.STADIUMSTART.SUBROUTINEEND.SUBROUTINESTART.VERTEX_WITH_PROPS_START.TAGEND.CYLINDEREND.CYLINDERSTART.DOUBLECIRCLEEND.DOUBLECIRCLESTART.TRAPEND.INVTRAPEND.TRAPSTART.INVTRAPSTART.TAGSTART.UP.SEP.DOWN.NODE_STRING.MINUS.UNICODE_TEXT.PIPE.PE.PS.SQE.SQS.DIAMOND_STOP.DIAMOND_START.NEWLINE.SPACE.EOF`.split(`.`),U=new Uint8Array(128);for(let e of`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!"#$%&'*+.\`?\\_/`)U[e.charCodeAt(0)]=1;var he=/accTitle\s*:\s*/y,W=/accDescr\s*:\s*/y,ge=/accDescr\s*\{\s*/y,G=/call\s+/y,_e=/click\s+/y,ve=/(?:\r?\n)*\s*\n/y,K=/\s*(?:LR|RL|TB|BT|TD|BR)\b/y,ye=/\s*[<>^]/y,be=/\s*v\b/y,xe=[/.*direction\s+TB[^\n]*/y,/.*direction\s+BT[^\n]*/y,/.*direction\s+RL[^\n]*/y,/.*direction\s+LR[^\n]*/y,/.*direction\s+TD[^\n]*/y],Se=/[\n\r\u2028\u2029]/g,q=/\s*[xo<]?--+[-xo>]\s*/y,Ce=/\s*[xo<]?--\s*/y,J=/\s*[xo<]?==+[=xo>]\s*/y,we=/\s*[xo<]?==\s*/y,Y=/\s*[xo<]?-?\.+-[xo>]?\s*/y,X=/\s*[xo<]?-\.\s*/y,Z=/\s*~~~+\s*/y,Te=/(?:\r?\n)+/y,Q=/[^\S\n\r]+/y,Ee=/\(\s*\)/y,De=/\n\s*/g;function Oe(e){let t=e.length,n=[],r=[],i=[],a=[],o=0,s=0,c=!0,l=e.indexOf(`direction`),u=e.indexOf(`@`),d=-1,f=0,p=0,m=-1,h=-1,g=-1,_=(t,a,o)=>{n.push(t),r.push(e.slice(a,o)),i.push(a),s=o},v=e=>{a.push(o),o=e},y=()=>{a.length>0&&(o=a.pop())},b=(t,n)=>(t.lastIndex=n,t.test(e)?t.lastIndex:-1),x=t=>e.startsWith(t,s)&&!N(e.charCodeAt(s+t.length)),S=n=>{let r=n;if(n>=h&&n<=g)r=g;else if(P(e.charCodeAt(n))){for(;r<t&&P(e.charCodeAt(r));)r++;h=n,g=r}let i=e.charCodeAt(r);return i===120||i===111||i===60?e.charCodeAt(r+1):i},C=n=>{let r=n;if(n>=h&&n<=g)r=g;else if(P(e.charCodeAt(n))){for(;r<t&&P(e.charCodeAt(r));)r++;h=n,g=r}return e.charCodeAt(r)===126},w=()=>{e.charCodeAt(s+1)===96?(v(2),s+=2):(v(1),s++)},T=()=>{if(!C(s))return!1;let e=b(Z,s);return e<0?!1:(_(40,s,e),!0)},E=t=>{let n=e.charCodeAt(s+1);return t===40?(n===45?(v(8),_(45,s,s+2)):n===91?(v(7),_(47,s,s+2)):n===40&&e.charCodeAt(s+2)===40?(v(7),_(55,s,s+3)):(v(7),_(69,s,s+1)),!0):t===91?(n===91?(v(7),_(49,s,s+2)):n===40?(v(7),_(53,s,s+2)):n===47?(v(9),_(58,s,s+2)):n===92?(v(9),_(59,s,s+2)):(v(7),_(71,s,s+1)),!0):t===124?(v(7),_(67,s,s+1),!0):t===123&&(v(7),_(73,s,s+1),!0)},D=e=>{c&&(c=!1,v(6)),_(20,s,s+e)},O=()=>{let n=s;for(;n<t;){let r=e.charCodeAt(n);if(r<128&&U[r]===1)n++;else if(r===45&&n+1<t){let t=e.charCodeAt(n+1);if(t===62||t===45||t===46)break;n++}else break}return n!==s&&(_(64,s,n),!0)},k=e=>{let t=S(s),n;if(t===45){if((n=b(q,s))>=0)return _(40,s,n),!0;if((n=b(Ce,s))>=0)return v(10),_(41,s,n),!0;if((n=b(Y,s))>=0)return _(40,s,n),!0;if((n=b(X,s))>=0)return v(12),_(41,s,n),!0}else if(t===61){if((n=b(J,s))>=0)return _(40,s,n),!0;if((n=b(we,s))>=0)return v(11),_(41,s,n),!0}else if(t===46&&(n=b(Y,s))>=0)return _(40,s,n),!0;return e!==45&&e!==61&&e!==46&&T()},ee=a=>{let o;switch(a){case 97:if(e.startsWith(`acc`,s)){if((o=b(he,s))>=0)return v(3),_(2,s,o),!0;if((o=b(W,s))>=0)return v(4),_(4,s,o),!0;if((o=b(ge,s))>=0)return v(5),s=o,!0}break;case 64:if(e.charCodeAt(s+1)===123)return v(16),n.push(7),r.push(``),i.push(s),s+=2,!0;break;case 99:if((o=b(G,s))>=0)return v(14),s=o,!0;if(x(`classDef`))return _(16,s,s+8),!0;if(x(`class`))return _(17,s,s+5),!0;if((o=b(_e,s))>=0)return v(13),s=o,!0;break;case 34:return w(),!0;case 115:if(x(`style`))return _(12,s,s+5),!0;if(x(`swimlane-beta`))return D(13),!0;if(x(`subgraph`))return _(21,s,s+8),!0;break;case 100:if(x(`default`))return _(13,s,s+7),!0;break;case 108:if(x(`linkStyle`))return _(14,s,s+9),!0;break;case 105:if(x(`interpolate`))return _(15,s,s+11),!0;break;case 104:if(e.startsWith(`href`,s)&&P(e.charCodeAt(s+4)))return _(18,s,s+5),!0;break;case 102:if(x(`flowchart-elk`))return D(13),!0;if(x(`flowchart`))return D(9),!0;break;case 103:if(x(`graph`))return D(5),!0;break;case 101:if(x(`end`)){for(o=s+3;o<t&&P(e.charCodeAt(o));)o++;return _(22,s,o),!0}break;case 95:if(x(`_self`))return _(23,s,s+5),!0;if(x(`_blank`))return _(23,s,s+6),!0;if(x(`_parent`))return _(23,s,s+7),!0;if(x(`_top`))return _(23,s,s+4),!0}if(l!==-1&&s>=f&&(l<s&&(l=e.indexOf(`direction`,s)),l!==-1&&(d<s&&(Se.lastIndex=s,d=Se.test(e)?Se.lastIndex-1:t),l<d))){for(let e=0;e<5;e++)if((o=b(xe[e],s))>=0)return _(26+e,s,o),!0;f=d}if(u!==-1&&a!==34&&!P(a)){if(s>=p){u<s&&(u=e.indexOf(`@`,s));let n=s;for(;n<t;){let t=e.charCodeAt(n);if(t===34||P(t))break;n++}if(p=n,m=-1,u!==-1&&u<n)for(let r=Math.min(n,t-1)-1;r>=u;r--){if(e.charCodeAt(r)!==64)continue;let t=e.charCodeAt(r+1);if(t!==123&&t!==34){m=r;break}}}if(m>s)return _(31,s,m+1),!0}if(a>=48&&a<=57){let n=s+1;for(;n<t;){let t=e.charCodeAt(n);if(t<48||t>57)break;n++}return _(32,s,n),!0}switch(a){case 35:return _(33,s,s+1),!0;case 58:return e.charCodeAt(s+1)===58&&e.charCodeAt(s+2)===58?_(34,s,s+3):_(35,s,s+1),!0;case 38:return _(36,s,s+1),!0;case 59:return _(37,s,s+1),!0;case 44:return _(38,s,s+1),!0;case 42:return _(39,s,s+1),!0;case 120:case 111:return k(a)||O();case 60:return k(a)||_(60,s,s+1),!0;case 45:return k(a)||O()||_(65,s,s+1),!0;case 61:return k(a);case 46:return k(a)||O();case 126:return T();case 40:return E(a);case 91:return e.charCodeAt(s+1)===124?(_(50,s,s+2),!0):E(a);case 124:case 123:return E(a);case 62:return v(7),_(51,s,s+1),!0;case 94:return _(61,s,s+1),!0;case 92:return e.charCodeAt(s+1)===124?(_(62,s,s+2),!0):O();case 118:return N(e.charCodeAt(s+1))?O():(_(63,s,s+1),!0)}return P(a)?k(a)?!0:(o=b(Te,s))>=0?(_(74,s,o),!0):(o=b(Q,s))>=0&&(_(75,s,o),!0):a<128?O():A(a)?(_(66,s,s+1),!0):!1},te=(n,r,i,a)=>{if(n===34)return w(),!0;let o=S(s);if(o===i||o===a){let e=b(r,s);if(e>=0)return y(),_(40,s,e),!0}if(n===i&&(i!==45||e.charCodeAt(s+1)===45))return!1;let c=s+1;for(;c<t;){let t=e.charCodeAt(c);if(t===34)break;if(t===i){if(i!==45||e.charCodeAt(c+1)===45)break}else if(t===120||t===111||t===60||t===a||P(t)){let e=S(c);if((e===i||e===a)&&b(r,c)>=0)break}c++}return _(42,s,c),!0};e:for(;;){if(s>=t){let e=-1;switch(o){case 0:e=76;break;case 3:e=3;break;case 4:e=5;break;case 5:e=6;break;case 13:e=19;break;case 14:e=8;break;case 15:e=9}e!==-1&&_(e,t,t);break}let a=e.charCodeAt(s),c=!0;switch(o){case 0:c=ee(a);break;case 1:if(a===34)e.charCodeAt(s+1)===96?(v(2),s+=2):(y(),s++);else{let n=e.indexOf(`"`,s);_(11,s,n===-1?t:n)}break;case 2:if(a===96)e.charCodeAt(s+1)===34?(y(),s+=2):c=!1;else if(a===34)w();else{let n=s+1;for(;n<t;){let t=e.charCodeAt(n);if(t===96||t===34)break;n++}_(10,s,n)}break;case 3:case 4:{let n=e.indexOf(`
|
|
7
|
+
`,s);n===-1&&(n=t);let r=o===3?3:5;y(),_(r,s,n);break}case 5:if(a===125)y(),s++;else{let n=e.indexOf(`}`,s);n===-1&&(n=t),_(6,s,n)}break;case 6:{let e;a===34?w():(e=b(ve,s))>=0?(y(),_(24,s,e)):(e=b(K,s))>=0||(e=b(ye,s))>=0||(e=b(be,s))>=0?(y(),_(25,s,e)):c=T()||E(a);break}case 7:{let n=e.charCodeAt(s+1);switch(a){case 34:w();break;case 40:case 91:case 123:E(a);break;case 93:y(),n===41?_(46,s,s+2):n===93?_(48,s,s+2):_(70,s,s+1);break;case 41:y(),n===93?_(52,s,s+2):n===41&&e.charCodeAt(s+2)===41?_(54,s,s+3):_(68,s,s+1);break;case 124:y(),_(67,s,s+1);break;case 125:y(),_(72,s,s+1);break;default:{if((a===126||P(a))&&T())break;let n=s+1;for(;n<t;){let t=e.charCodeAt(n);if(t===91||t===93||t===40||t===41||t===123||t===125||t===124||t===34)break;n++}_(44,s,n)}}break}case 8:{let n=e.charCodeAt(s+1);if(a===34)w();else{if((a===126||P(a))&&T())break;if((a===45||a===47||a===41)&&n===41)y(),_(43,s,s+2);else if(a===40||a===91||a===123)E(a);else if(a===41||a===93||a===125)c=!1;else{let n=s+1;for(;n<t;){let t=e.charCodeAt(n);if(t===34||t===40||t===41||t===91||t===93||t===123||t===125||(t===45||t===47)&&e.charCodeAt(n+1)===41||(t===126||P(t))&&C(n)&&b(Z,n)>=0)break;n++}_(44,s,n)}}break}case 9:{let n=e.charCodeAt(s+1);if(a===34){w();break}if((a===126||P(a))&&T())break;switch(a){case 40:n===45||n===91||n===40&&e.charCodeAt(s+2)===40?E(a):n===93?(y(),_(56,s,s+2)):E(a);break;case 91:case 123:E(a);break;case 92:n===93?(y(),_(56,s,s+2)):_(44,s,s+1);break;case 47:n===93?(y(),_(57,s,s+2)):_(44,s,s+1);break;case 93:case 41:n===93?(y(),_(56,s,s+2)):c=!1;break;case 125:c=!1;break;default:{if((a===63||a===61)&&n===93){y(),_(56,s,s+2);break}let r=s+1;for(;r<t;){let t=e.charCodeAt(r);if(t===92||t===91||t===93||t===40||t===41||t===123||t===125||t===47)break;r++}_(44,s,r)}}break}case 10:c=te(a,q,45,-1);break;case 11:c=te(a,J,61,-1);break;case 12:c=te(a,Y,46,45);break;case 13:if(a===34)w();else if(P(a))y(),s++;else{let n=s+1;for(;n<t&&!P(e.charCodeAt(n));)n++;_(19,s,n)}break;case 14:if(a===40){let e=b(Ee,s);y(),e>=0?s=e:(v(15),s++)}else{let n=e.indexOf(`(`,s);n===-1&&(n=t),_(8,s,n)}break;case 15:if(a===41)y(),s++;else{let n=e.indexOf(`)`,s);n===-1&&(n=t),_(9,s,n)}break;case 16:if(a===34)v(17),_(7,s,s+1);else if(a===125)y(),s++;else if(a===94)c=!1;else{let n=s+1;for(;n<t;){let t=e.charCodeAt(n);if(t===125||t===94||t===34)break;n++}_(7,s,n)}break;case 17:if(a===34)y(),_(7,s,s+1);else{let a=e.indexOf(`"`,s);a===-1&&(a=t),n.push(7),r.push(e.slice(s,a).replace(De,`<br/>`)),i.push(s),s=a}}if(!c)return n.push(1),r.push(``),i.push(s),{types:n,texts:r,starts:i};continue e}return n.push(0),r.push(``),i.push(t),{types:n,texts:r,starts:i}}var ke=new Uint8Array(77);for(let e of[32,64,63,65,13,38,35,36,33,39,66])ke[e]=1;var Ae=new Uint8Array(77);for(let e of[32,66,64,25,63,65,38,35,36,33,39])Ae[e]=1;var je=new Uint8Array(77);for(let e of[32,64,75,65,36,66,35,39,33,12,14,16,17,19,20,25,21,22,63,61,41])je[e]=1;var Me=new Uint8Array(77);for(let e of[32,64,35,75,33,12])Me[e]=1;var Ne=`'UNICODE_TEXT', 'TEXT', 'TAGSTART'`,$=[],Pe=/}\s*\n/g;function Fe(e,t){let n=e.includes(`}`)?e.replace(Pe,`}
|
|
8
|
+
`):e,{types:r,texts:i,starts:a}=Oe(n),o=0,s,c=t=>{let i=r[o],s=n===e?a[o]:F([M(e,Pe,2)],a[o]);throw i===1?fe(`flowchart`,e,s,``,!0):fe(`flowchart`,e,s,`Expecting ${t}, got '${H[i]}'`)},l=(e,t=``)=>(r[o]!==e&&c(`'${H[e]}'${t?`, `+t:``}`),i[o++]),u=()=>{let e=r[o];e!==74&&e!==37&&e!==76&&c(`'SEMI', 'NEWLINE', 'EOF'`),o++},d=()=>{ke[r[o]]===0&&c(`'NODE_STRING'`);let e=i[o++];for(;ke[r[o]]===1;)e+=i[o++];return e},f=()=>{Ae[r[o]]===0&&c(`'NODE_STRING'`);let e=i[o++];for(;Ae[r[o]]===1;)e+=i[o++];return e},p=()=>{let e=r[o],t;if(e===11)t=`string`;else if(e===10)t=`markdown`;else if(e===44||e===60||e===51||e===66)t=`text`;else return c(`${Ne}, 'TAGEND', 'STR', 'MD_STR'`);let n=i[o++];for(;;){let e=r[o];if(e!==44&&e!==60&&e!==51&&e!==66)break;n+=i[o++]}return{text:n,type:t}},m=e=>{l(e,Ne)},h=()=>{let e=r[o],t;if(e===11)t=`string`;else if(e===10)t=`markdown`;else if(e===42||e===66)t=`text`;else return c(`'EDGE_TEXT', 'STR', 'MD_STR'`);let n=i[o++];for(;r[o]===42||r[o]===66;)n+=i[o++];return{text:n,type:t}},g=()=>{let e=r[o],t;if(e===11)t=`text`;else if(e===10)t=`markdown`;else if(je[e]===1)t=`text`;else return c(`'NODE_STRING', 'STR', 'MD_STR'`);let n=i[o++];for(;je[r[o]]===1;)n+=i[o++];return{text:n,type:t}},_=()=>{let e=i[o++];for(;r[o]===7;)e+=i[o++];return e},v=()=>{let e=d(),n;switch(r[o]){case 71:o++,n=p(),m(70),t.addVertex(e,n,`square`);break;case 55:o++,n=p(),m(54),t.addVertex(e,n,`doublecircle`);break;case 69:o++,r[o]===69?(o++,n=p(),m(68),l(68),t.addVertex(e,n,`circle`)):(n=p(),m(68),t.addVertex(e,n,`round`));break;case 45:o++,n=p(),m(43),t.addVertex(e,n,`ellipse`);break;case 47:o++,n=p(),m(46),t.addVertex(e,n,`stadium`);break;case 49:o++,n=p(),m(48),t.addVertex(e,n,`subroutine`);break;case 50:{o++;let r=l(64);l(35);let i=l(64);l(67),n=p(),m(70),t.addVertex(e,n,`rect`,void 0,void 0,void 0,{[r]:i});break}case 53:o++,n=p(),m(52),t.addVertex(e,n,`cylinder`);break;case 73:o++,r[o]===73?(o++,n=p(),m(72),l(72),t.addVertex(e,n,`hexagon`)):(n=p(),m(72),t.addVertex(e,n,`diamond`));break;case 51:o++,n=p(),m(70),t.addVertex(e,n,`odd`);break;case 58:o++,n=p(),r[o]===57?(o++,t.addVertex(e,n,`lean_right`)):(m(56),t.addVertex(e,n,`trapezoid`));break;case 59:o++,n=p(),r[o]===56?(o++,t.addVertex(e,n,`lean_left`)):(m(57),t.addVertex(e,n,`inv_trapezoid`));break;default:t.addVertex(e)}return e},y=()=>{let e=v();return r[o]===34&&(o++,t.setClass(e,d())),e},b=()=>{let e=[y()];for(s=void 0;;){let n=r[o]===7?_():void 0;if(r[o]!==75)return s=n,e;do o++;while(r[o]===75);if(r[o]!==36)return n!==void 0&&c(`'AMP'`),e;o++,r[o]!==75&&c(`'SPACE'`);do o++;while(r[o]===75);let i=y();n!==void 0&&t.addVertex(e[e.length-1],void 0,void 0,void 0,void 0,void 0,void 0,n),e.push(i)}},x=()=>{let e;if(r[o]===31&&(e=i[o++]),r[o]===40){let n=t.destructLink(i[o++]);return e!==void 0&&(n.id=e),r[o]===67&&(o++,n.text=p(),m(67),r[o]===75&&o++),n}if(r[o]===41){let n=i[o++],r=h(),a=l(40,`'EDGE_TEXT'`),s=t.destructLink(a,n);return s.text=r,e!==void 0&&(s.id=e),s}return c(`'LINK', 'START_LINK'`)},S=e=>{let n=b();s!==void 0&&t.addVertex(n[n.length-1],void 0,void 0,void 0,void 0,void 0,void 0,s);let i=n;for(;;){let a=r[o];if(a!==40&&a!==41&&a!==31)return i;let c=x(),l=b();s!==void 0&&t.addVertex(l[l.length-1],void 0,void 0,void 0,void 0,void 0,void 0,s),t.addLink(n,l,c),e&&(i=l.concat(i)),n=l}},C=()=>{Me[r[o]]===0&&c(`'NODE_STRING', 'NUM', 'COLON', 'BRKT'`);let e=i[o++];for(;Me[r[o]]===1;)e+=i[o++];return e},w=()=>{let e=[C()];for(;r[o]===38;)o++,e.push(C());return e},T=()=>{o++,l(75);let e;if(r[o]===13)e=[i[o++]];else for(e=[l(32,`'DEFAULT'`)];r[o]===38;)o++,e.push(l(32));if(l(75),r[o]!==15){t.updateLink(e,w());return}o++,l(75);let n=f();if(r[o]===75){o++;let r=w();t.updateLinkInterpolate(e,n),t.updateLink(e,r)}else t.updateLinkInterpolate(e,n)},E=(e,n)=>{if(r[o]!==75){t.setLink(e,n);return}if(o++,r[o]===23){t.setLink(e,n,i[o++]);return}let a=l(11,`'LINK_TARGET'`);r[o]===75?(o++,t.setLink(e,n,l(23))):t.setLink(e,n),t.setTooltip(e,a)},D=()=>{let e=i[o++];switch(r[o]){case 8:{let n=i[o++],a=r[o]===9,s=a?i[o++]:void 0,c;r[o]===75&&(o++,c=l(11)),a?t.setClickEvent(e,n,s):t.setClickEvent(e,n),c!==void 0&&t.setTooltip(e,c);return}case 18:o++,E(e,l(11));return;case 11:E(e,i[o++]);return;default:{let n=f();if(r[o]===75){o++;let r=l(11);t.setClickEvent(e,n),t.setTooltip(e,r)}else t.setClickEvent(e,n)}}},O=()=>{o++;let e=r[o];if(e===74||e===37||e===76)return o++,{id:void 0,title:void 0,list:[],collect:!1};l(75,`'SEMI', 'NEWLINE', 'EOF'`);let t=g(),n=t;return r[o]===71&&(o++,n=p(),m(70)),e=r[o],e!==74&&e!==37&&e!==76&&c(`'SEMI', 'NEWLINE', 'EOF', 'SQS'`),o++,{id:t,title:n,list:[],collect:!1}},k=e=>{let n=r[o];switch(n){case 12:{o++,l(75);let e=d();return l(75),t.addVertex(e,void 0,void 0,w()),u(),$}case 14:return T(),u(),$;case 16:{o++,l(75);let e=d();return l(75),t.addClass(e,w()),u(),$}case 17:{o++,l(75);let e=d();return l(75),t.setClass(e,d()),u(),$}case 19:return D(),u(),$;case 26:case 27:case 28:case 29:case 30:return o++,{stmt:`dir`,value:Ie[n-26]};case 2:{o++;let e=l(3).trim();return t.setAccTitle(e),e}case 4:{o++;let e=l(5).trim();return t.setAccDescription(e),e}case 6:{let e=i[o++].trim();return t.setAccDescription(e),e}default:{ke[n]===0&&c(Le);let t=S(e);return u(),t}}},ee=()=>{let e=[],n=[],a=!1;for(;;){let s=r[o];if(s===0)break;if(s===22){let r=e.pop();if(r===void 0)break;o++;let i=t.addSubGraph(r.id,n,r.title);n=r.list,a=r.collect,a&&n.push(i)}else if(s===37||s===74||s===75||s===76)a&&n.push(i[o]),o++;else if(s===21){let t=O();t.list=n,t.collect=a,e.push(t),n=[],a=!0}else{let e=k(a);a&&(!Array.isArray(e)||e.length>0)&&n.push(e)}}e.length>0&&c(`'end'`)};for(;r[o]===75||r[o]===74;)o++;if(l(20,`'SPACE', 'NEWLINE'`),r[o]===24)o++,t.setDirection(`TB`);else{let e=l(25,`'NODIR'`),n=r[o];if(n===75){do o++;while(r[o]===75);n=r[o],n!==74&&c(`'NEWLINE', 'SPACE'`)}else n!==37&&n!==74&&c(`'SEMI', 'NEWLINE', 'SPACE'`);o++,t.setDirection(e)}ee(),r[o]!==0&&c(Le)}var Ie=[`TB`,`BT`,`RL`,`LR`,`TD`],Le=`'SEMI', 'NEWLINE', 'SPACE', 'EOF', 'subgraph', 'acc_title', 'acc_descr', 'acc_descr_multiline_value', 'STYLE', 'LINKSTYLE', 'CLASSDEF', 'CLASS', 'CLICK', 'NODE_STRING'`;function Re(e){if(e.img)return`imageSquare`;if(e.icon)return e.form===`circle`?`iconCircle`:e.form===`square`?`iconSquare`:e.form===`rounded`?`iconRounded`:`icon`;switch(e.type){case`square`:case void 0:return`squareRect`;case`round`:return`roundedRect`;default:return e.type}}function ze(e){switch(e){case`arrow_point`:case`arrow_circle`:case`arrow_cross`:return[`none`,e];case`double_arrow_point`:case`double_arrow_circle`:case`double_arrow_cross`:{let t=e.replace(`double_`,``);return[t,t]}}return[`none`,`arrow_point`]}function Be(e,t){let n=[],r=[],i=e.subgraphs,a=t=>{let n=[];for(let r of t){let t=e.classes.get(r);if(t!==void 0){for(let e of t.styles)n.push(e.trim());for(let e of t.textStyles)n.push(e.trim())}}return n},o=new Map;for(let t of i)for(let n of t.nodes)e.subgraph(n)&&o.set(n,t.id);let s=new Map,c=new Map;for(let e of i){let t=o.get(e.id);if(t===void 0)continue;let n=c.get(t);n?n.push(e.id):c.set(t,[e.id])}let l=0;for(let e of i){if(o.has(e.id))continue;let t=[e.id];for(;t.length>0;){let e=t.pop();if(s.has(e))continue;s.set(e,l++);let n=c.get(e);if(n)for(let e=n.length-1;e>=0;e--)t.push(n[e])}}let u=t=>e.subgraph(t)?.metadata?.view===`collapsed`,d=!1;for(let e of i)e.metadata?.view===`collapsed`&&(d=!0);let f=new Map,p=e=>{let t=[],n=new Set,r=e;for(;r!==void 0&&!f.has(r)&&!n.has(r);)n.add(r),t.push(r),r=o.get(r);let i=r===void 0?void 0:f.get(r);for(let e=t.length-1;e>=0;e--)i===void 0&&u(t[e])&&(i=t[e]),f.set(t[e],i);return i},m=new Set,h=new Map;for(let e of d?i:[]){let t=p(e.id);if(t!==void 0){e.id!==t&&(m.add(e.id),h.set(e.id,t));for(let n of e.nodes)n!==t&&(m.add(n),h.set(n,t))}}let g=new Map,_=new Set;for(let e=i.length-1;e>=0;e--){let t=i[e];if(!m.has(t.id)){t.nodes.length>0&&_.add(t.id);for(let e of t.nodes)g.set(e,t.id)}}let v=new Map;for(let e=i.length-1;e>=0;e--){let t=i[e];if(m.has(t.id))continue;let r=t.metadata?.view===`collapsed`,o={id:t.id,label:t.title,labelType:t.labelType,parentId:g.get(t.id),cssStyles:[],cssCompiledStyles:a(t.classes),cssClasses:t.classes.join(` `),shape:r?`collapsedGroup`:`rect`,dir:t.dir,isGroup:!r,colorIndex:s.get(t.id)};r||(o.metadata=t.metadata),n.push(o),v.set(t.id,o)}for(let t of e.nodes.values()){if(m.has(t.id))continue;let r=v.get(t.id);if(r){r.cssStyles=t.styles,r.cssCompiledStyles=a(t.classes),r.cssClasses=t.classes.join(` `);continue}let i=_.has(t.id),o={id:t.id,label:t.text,labelType:t.labelType,parentId:g.get(t.id),cssStyles:t.styles,cssCompiledStyles:a([`default`,`node`,...t.classes]),cssClasses:`default `+t.classes.join(` `),dir:t.dir,link:t.link,linkTarget:t.linkTarget,tooltip:e.tooltips.get(t.id),icon:t.icon,pos:t.pos,img:t.img,assetWidth:t.assetWidth,assetHeight:t.assetHeight,constraint:t.constraint,isGroup:i,shape:i?`rect`:Re(t)};n.push(o)}return e.edges.forEach((n,i)=>{let o=h.get(n.start)??n.start,s=h.get(n.end)??n.end;if(o===s&&(h.has(n.start)||h.has(n.end)))return;let[c,l]=ze(n.type),u=[...e.defaultEdgeStyle??[]];n.style&&u.push(...n.style);let d=n.stroke===`invisible`||n.type===`arrow_open`;r.push({id:n.id||`L_${o}_${s}_${i}`,isUserDefinedId:n.isUserDefinedId,start:o,end:s,type:n.type??`normal`,label:n.text,labelType:n.labelType,thickness:n.stroke,pattern:n.stroke,minlen:n.length,classes:n.stroke===`invisible`?``:`edge-thickness-normal edge-pattern-solid flowchart-link`,arrowTypeStart:d?`none`:c,arrowTypeEnd:d?`none`:l,cssCompiledStyles:a(n.classes),style:u,animate:n.animate,animation:n.animation,curve:n.interpolate||e.defaultInterpolate||t})}),{nodes:n,edges:r}}var Ve=40,He=16,Ue=48,We=20,Ge=26,Ke=` fill="var(--_s)" stroke="var(--_b)"`,qe=` stroke="var(--_b)"`;function Je(e,t,n){let r=e[t];return typeof r==`number`&&r>0?Math.min(r,2e3):n}function Ye(e,t){return e!==void 0&&e>0&&e<=4e3?e:t}function Xe(e,t,n,r){let i=i=>u(n,a=>Ze(e,t,n,r,i,a));return l(e.direction)?f(n,i):i(!1)}function Ze(l,u,f,A,ue,j){let M=j?12:We,N=A?u[A.type]:void 0,P=typeof N==`object`&&N&&!Array.isArray(N)?N:u.flowchart??{},F=Be(l,typeof P.curve==`string`?P.curve:void 0);A?.prepare(F);let I=f.fontSize??16,fe=Math.round(I*.875),L=f.measurer??pe(f.fontFamily,f.fontFamilyMono),me=Math.min(Je(P,`wrappingWidth`,200),A&&j?100:1/0),R=f.padding??8,z=f.icons,B=new Map,V=[],H=[];F.nodes.forEach((e,t)=>B.set(e.id,t));for(let e of F.nodes){let t=o(e.cssStyles.length>0?e.cssCompiledStyles.concat(e.cssStyles):e.cssCompiledStyles),n=+!!t.bold|(t.italic?2:0),r=e.labelType===`markdown`,i=t.fontSize??I,a,c;if(e.isGroup){let o=s(e.label,r,L,i,A&&j?Math.max(80,d(f)/2):4e3,n);a={node:e,style:t,label:o,shape:`group`,w:0,h:0,dy:0,loops:0},c=ce(0,0),c.isGroup=!0,c.dir=e.dir?se(e.dir):void 0,c.padX=M,c.padTop=o.height>0?o.height+16:We,c.padBottom=M,c.minW=o.width+2*M-12}else{let o=le(e.shape),l=e.img||e.icon||w(o)?e.label:void 0,u=s(l,r,L,i,me,n),d,f,p=0;if(e.img||e.icon){let t=e.img?80:48,n=Ye(e.assetWidth,t),r=Ye(e.assetHeight,t);d=Math.max(n,u.width+8),f=r+(u.height>0?u.height+6:0),p=e.pos===`t`?-r/2:r/2,u.height===0&&(p=0)}else{let e=x(o,u.width,u.height);d=e.w,f=e.h,p=e.dy}a={node:e,style:t,label:u,shape:o,w:d,h:f,dy:p,loops:0},c=ce(d,f)}c.seq=V.length,V.push(a),H.push(c)}F.nodes.forEach((e,t)=>{H[t].parent=e.parentId===void 0?-1:B.get(e.parentId)??-1});let U=ue?`TB`:se(l.direction),he=e=>{let t;for(let n=H[e].parent,r=0;n>=0&&t===void 0&&r<1e4;n=H[n].parent,r++)t=H[n].dir;return t??=U,t===`LR`||t===`RL`};V.forEach((e,t)=>{e.node.isGroup?H[t].span=1/0:!e.node.img&&!e.node.icon&&(H[t].span=C(e.shape,e.w,e.h,he(t)))});let W=[],ge=[],G=[];for(let e of F.edges){let t=B.get(e.start),n=B.get(e.end);if(t===void 0||n===void 0)continue;let r=s(e.label,e.labelType===`markdown`,L,fe,me);t===n&&(V[t].loops++,he(t)?H[t].h+=2*(Ge+(r.height>0?r.height+8:0)):H[t].w+=2*(Ge+(r.width>0?r.width+12:0))),G.push(e),ge.push(r),W.push({src:t,dst:n,minlen:e.minlen??1,labelW:r.width>0?r.width+12:0,labelH:r.height>0?r.height+4:0,route:[],labelX:0,labelY:0})}let _e={nodeSep:Je(P,`nodeSpacing`,Ve)*(j?.5:1),edgeSep:He,rankSep:Je(P,`rankSpacing`,Ue)*(j?.75:1),portSep:20,tracks:typeof P.curve==`string`&&/^step/.test(P.curve),straight:P.curve===`linear`,headRoom:p(`arrow_point`)},ve=A?A.layout(H,W,U,_e,j):ae(H,W,U,_e),K=y(l.title,L,I,j?d(f):4e3),ye=K.height>0?K.height+12:0,be=Math.max(ve.width,K.width),xe=R+(be-ve.width)/2,Se=R+ye;oe(H,W,xe,Se);let q=Math.ceil(be+2*R),Ce=Math.ceil(ve.height+ye+2*R),J=[],we=new Map,Y=!1;for(let e of H)e.isGroup&&(Y=!0);if(Y)for(let e of W)re(we,e.route);let X=``,Z=``,Te=``;for(let e=0;e<V.length;e++){let o=V[e],s=H[e],l=o.node,u=s.x,d=s.y,p=n(l.cssClasses.replace(/^default\s?/,``)),m=i(l.id);if(s.isGroup&&A?.drawGroup&&s.parent<0){X+=A.drawGroup(s,o.label,o.style,p,m,U,z);continue}if(s.isGroup){let t=ne(s,o.label.width,we,M),n=d-s.h/2+8+o.label.height/2,i=` class="pele-cluster-label" fill="var(--_m)"${o.style.text}`,l=te(s,o.label.width,t,we);l&&(Z+=ie(o.label,t,n,i,m,H,e,z)),X+=`<g class="pele-cluster${p}" data-id="${m}"><rect x="${c(u-s.w/2)}" y="${c(d-s.h/2)}" width="${c(s.w)}" height="${c(s.h)}" fill="var(--_a)" fill-opacity="0.5" stroke="var(--_b)"${r(o.style.shape)}/>`+(l?``:a(o.label,t,n,i,z))+`</g>`;continue}let h=o.w,g=o.h,_;if(l.img){let e=Ye(l.assetWidth,80),n=Ye(l.assetHeight,80),r=o.label.height>0?l.pos===`t`?g/2-n:-g/2:-n/2,i=O(D(l.img),f);_=i===void 0?``:`<image href="${t(i)}" x="${c(-e/2)}" y="${c(r)}" width="${c(e)}" height="${c(n)}" preserveAspectRatio="${l.constraint===`on`?`xMidYMid meet`:`none`}"/>`}else if(l.icon){let e=Ye(l.assetHeight,48),t=o.label.height>0?l.pos===`t`?g/2-e:-g/2:-e/2,n=l.shape===`icon`?``:l.shape===`iconCircle`?`<circle cy="${c(t+e/2)}" r="${c(e/2)}"${Ke}${o.style.shape}/>`:`<rect x="${c(-e/2)}" y="${c(t)}" width="${c(e)}" height="${c(e)}" rx="${l.shape===`iconRounded`?8:0}"${Ke}${o.style.shape}/>`,r=e*.6;_=n+`<svg class="pele-icon" data-icon="${i(l.icon)}" x="${c(-r/2)}" y="${c(t+(e-r)/2)}" width="${c(r)}" height="${c(r)}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${z?.(l.icon)??``}</svg>`}else _=b(o.shape,h,g,Ke+o.style.shape,qe+o.style.line);let v=a(o.label,0,o.dy,` class="pele-label"${o.style.text}`,z);if(/ internal-link(?: |$)/.test(p+` `)&&l.label&&f.links!==!1){let e=de(l.label),n=E(e,f),r=t(e);v=`<a class="internal-link"${n?` href="${r}"${k(f)}`:``} data-href="${r}">${v}</a>`,J.push({id:l.id,href:e,internal:!0})}let y=_+v;l.tooltip&&(y=`<title>${i(l.tooltip)}</title>`+y),l.link&&(y=ee(y,l.link,l.id,J,f,l.linkTarget?` target="${t(l.linkTarget)}"`:``)),Te+=`<g class="pele-node pele-shape-${o.shape}${p}" data-id="${m}" transform="translate(${c(u)},${c(d)})">${y}</g>`}let Q=m();for(let e=0;e<W.length;e++){let t=W[e];t.src===t.dst||G[e].thickness===`invisible`||t.route.length<6||(Q.add(t.src,S(t.route,0,H[t.src]),G[e].arrowTypeStart),Q.add(t.dst,S(t.route,t.route.length-3,H[t.dst]),G[e].arrowTypeEnd))}let Ee=``,De=``,Oe=new Map;for(let e=0;e<W.length;e++){let r=W[e],a=G[e],s=ge[e],c=a.style.length>0||a.cssCompiledStyles.length>0?o(a.cssCompiledStyles.concat(a.style)):void 0;if(a.thickness!==`invisible`){let e=a.arrowTypeStart,o=a.arrowTypeEnd,s;if(r.src===r.dst){let e=V[r.src],t=Oe.get(r.src)??0;Oe.set(r.src,t+1),s=v(H[r.src],e.w,e.h,t,he(r.src),Ge,p(o),r)}else{let t=r.route.slice(),n=Q.of(r.src,S(t,0,H[r.src])),i=Q.of(r.dst,S(t,t.length-3,H[r.dst]));T(t,0,V[r.src],H[r.src]),T(t,t.length-3,V[r.dst],H[r.dst]),s=g(t,a.curve,p(e),p(o),n,i)}let l=c?.stroke&&a.thickness!==`invisible`?t(c.stroke):`var(--_l)`,u=``;a.thickness===`thick`?u+=` stroke-width="2.5"`:a.thickness===`dotted`&&(u+=` stroke-dasharray="3 4"`);let d=n(a.classes.replace(/edge-thickness-normal|edge-pattern-solid|flowchart-link/g,``));Ee+=`<g class="pele-edge${d}" data-id="${i(a.id)}"${c?.line??``}><path d="${s.d}"${u}/>`+_(e,s.sx,s.sy,s.sdx,s.sdy,l)+_(o,s.ex,s.ey,s.edx,s.edy,l)+`</g>`}if(s.width>0){let e=r.labelX,t=r.labelY;De+=h(a.id,s,e,t,c?.text??``,z)}}return{svg:e(A?.type??`flowchart`,q,Ce,I,f,l,a(K,q/2,R+K.height/2,` class="pele-title" font-weight="var(--_tw)"`)+(X?`<g class="pele-clusters">${X}</g>`:``)+(Ee?`<g class="pele-edges" fill="none" stroke="var(--_l)" stroke-linecap="round">${Ee}</g>`:``)+(Z?`<g class="pele-cluster-titles">${Z}</g>`:``)+(De?`<g class="pele-edge-labels" font-size="${fe}">${De}</g>`:``)+`<g class="pele-nodes">${Te}</g>`),width:q,height:Ce,links:J}}var Qe={type:`flowchart`,math:!0,parse(e,t,n,r,i){let a=new V({inheritDir:(t.flowchart??{}).inheritDir===!0,maxEdges:i.maxEdges});return n&&(a.title=n),Fe(e,a),a},render:Xe};export{Xe as n,Qe as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAASIABAAAAAACQQAAAQuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVF4AdBEICoRkhAALIAABNgIkAzoEIAWFAAeBFAwHG2oHKJ6DceNW4lJEFHn9tEOE37LNsvkjHr7f739rn3u+OSrSxLQytE91Dw2PYtNVq3Qaw/vJ7fUBMdOj/u2ImB98cT5WUx9F13ZKt06mU7tG1sAYcM26yCRX4f/0904bmwq8hwkUUMTRX61pa9C3xlpAGYw1vOu8C2SBZZFlld7DAW82RJWmwYMI1AJCKBNCIASqdZGFmtPSNQRhMpR0EKjWTwm6z6sJ+4jqhxjovTinVdRpZaQjaQzAYjI8NgAKDJCokgunCn9oUQE8VZd/F//+v6P4F1U9gLr58yNI/dJX9BAshEoJbTDogz7ocKoUsPvES8UK/aQIUQgpGgECBVLkOEV6iASTYgNAPKdNXayhDPL7IJuAZnEYSZ0eOLc9i5Rv5/+lEi3sW/kfnCf/+fTe0sxS7CKLx5erRJkKOixEqQaoqrvx5HN4iz4VhX0gS6DjFIWUzn/fIXJRVFY1NFRVNVeFt+SYmrK6vCU6eJsnKnJj5HTESMTQZOTI3Y/tzr3rUcOsiRy/ciP50s3Mycgxmhz9GMXhjzVH30ut796NHP0UUa31/Zoa6vCH6iPvdIM0IRANaT60FablmZlZd+UKNFy9NrvnFGxb5NC2CRxR0/rIyF/WNn+35sv9r+tHVhkseuWGKkCPPh96+GXt8Lc/Sh24ujfjf+tNw1lZWreiPuHb/PSpyjdv2rf/++ZE5TSKjFdZxYsBvr1sEHl5STuHZqYR7jGYGvGBBdjcaB5bODY1GAxMjsd0wDMIzXAXODRd74DxNMtO4YuYHclgLQRzp9KlUmxptCwv9bYgvWGD2xBW7r9413fdJu+mxzvzAUYeeONQvZP4kgfqZle4jhH/MWh+UbxgtJdrLdXLymNL53PRU0D3Q6FcXTfGqGcul6vrqhgLGAVSv+IVIfZOHpu+mlLqSlnj903j8mazXDsba/wbxhS/4Oubh1c5/uXDgt4j5KtnGEy5BIJHo0ur+jD+r2qCkuP1aRVM8EpUoRYSJyqNRA38uwDvHBNo0AejO2Z+ZYLLal1QiFyFh1EDQOgSCSCpjwwKU8yDbIjroEwne0G5Qca49cYp4AlqtQNZfWTQoFb1tRpFYAmRD+HXTkV4uQhG2bg4OKmyoypAsUGtWgQXyFxYrkpODeUxvGqIZA61erXo0sFG1UBGuPgpuon8RNUG2DhovAjZCBuZwtXrU3mQGki9+pm0eVZAXoWxLWTQoYHBPrJR4WunNxIFbCHfkTyPK+sqxjxDmGArZvf79JGJ3GwEqjwc7a7NIrl/7bJ7Nzu4+n1Ow6shEPnUrtVo7cnd5Wi5qCUbBIQbNKCP95FMCSZylEV5VCiiMqqiOmrKZ/I/C0gI1fyuulVcM2E1r4MhtcV/fbCD+HwEvVzH1dGNAzFE0FTbKzyQz3gootrNbN2a4PuG0j0JOgE=)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(data:font/woff2;base64,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)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(data:font/woff2;base64,d09GMgABAAAAAASIABAAAAAACQAAAAQtAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoBmA/U1RBVDYAdBEICoRkg3gLIAABNgIkAzoEIAWFIgeBFAwHG1wHKI7DuPEacDIiFJ/g+f47+1/7dIcdXTlD8DKqmcw4eIC+AOCPf6+qiWq3h6+aSCLNJDnkqX9Xl+rv/6dSBcwSBCzEoVqxNbp5SqPMYdKBQhBq1dK9ggSsgYUoGnHOqttMECvWjIJfPA8cjQAuAEAQLAiClASc7M6OkfbO/nHs6ACmCYBxZXKP4s9uXIHECh4AdEhX0yIHC6jzgAb65sshStMMChwEfWVjZe8Anset/6H93x8jOyL5fuS67z4Dlam+BPyH/pV2FLCZAOnU0XPzCQGiJ7AkXgSFhqDEB4AAoAAN2ExDgM10joCNfDQUbvxaXM8LovT79D9MEyYU9+q/myT9p/m8uWi2mLJBPbzcih2wYIPzBDFNvABt315OXwy8BaRnbo5hXsOS5taknX4FguiaZnd4vQ7HxnBnm3SPYXHrQbclvOgyDhsHnZPO8f3G5I2fbr34Y7+hzRozVzyw5bKHdu03plXgvE9FO/Uz4/xPUKd8/PHk+R+JODnlg1lDTv3Qed77zDNqRszaqHUQT248kUPGzBXXXHGFnHrVVdft2m8c4PhpjB+/QEqMU54xruc6m3w8++XNXx4sya9rMvNq88m6X1zeOMlRuQ+/nvNw4+ZrCt58yDdSVOQdfoi/jc/ePfZY+1taYaH21FH2Y4fGG+RVNJkIN4SSiWj3ZKGG1oojoYr2SNWFVbHvY1XX1PR+H6y+oKrqgmryqj1UXnmk5cKWysPM3R4Uh5svYo6saAtU3V297+d91U/X/frzLvUdqiqfruKvhx5+OeOYxbHI7SenQum+PTw/fvRLGQ/jiufOn3/S+vlsfGn9h4Zb96fekZ7xRups68FhVCYCWHHvZVIPxjanr3NABSALqkR7FMBOulF9ScHvV3np+6pK/eEzRx877K3/z65pvwN89eGtV3Ly5ft/25ngaiSYDVYUAAKvIKimMdLO6YBQEY+aZpbXZ5WinTBQXwAA4LMAXuNUBPCSTmMfjd6jpNLNjbToDuBpaR9AoTBbUeERO2o0erNeR6KFne5HK/nOQA+VBtFnt1LtBj6pJQIutnLwipz/Ix9OYNSqZQEreiQELIkKmRIRNWdewpiIZVGtVi0J6xWR0ComIGpFnN+AVStWzUtIWBNXq0iRuJCYqDUJcYXiopYUWhUzp8iQTv20dtO84Agw6YrhuOijfqUKlSpRAruvTq9WdeQw2vs5SUsCYhdt7icIt1nNkseKPZzgV6q4FfYbH4ZIBcThYTEgLIgIkYRbJLl7/rks+ObZDxydE8W9LymoUMiqZUVbtVv0GNkcispQM0IpEG7sBdK9IYr6aKKLRaxiQxO7OMQphrUlGIscFbElV6LF5S0dQN5RbRoUdRbWWOYCy8sB83RxS7FqG/UEQslE5Nsd5v93uF3T0bLiypD/uJhn3q9fCAA=)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/jetbrains-mono-cyrillic-600-normal-EVf6-Yzo.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/jetbrains-mono-greek-600-normal-H7WoG9Et.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(data:font/woff2;base64,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)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/jetbrains-mono-latin-ext-600-normal-BfB_LPfz.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/jetbrains-mono-latin-600-normal-C8RAYTDA.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html,body,#app{height:100%}body{font-family:var(--font-sans);font-size:var(--fs-body);color:var(--fg);background-color:var(--bg);background-image:var(--paper-grain);background-size:var(--paper-grain-size);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;line-height:1.6}img,picture,video,svg{max-width:100%;display:block}button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:none}button:disabled{cursor:default}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}a{color:var(--link);text-decoration:none}a:hover{color:var(--link-hover)}ul,ol{list-style:none}:root{--font-serif:"Iowan Old Style", "Charter", "Sitka Text", "Source Serif Pro", "Source Serif 4", "Georgia", "Times New Roman", ui-serif, serif;--font-sans:"Söhne", "Inter Tight", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Monaco, Consolas, "Liberation Mono", monospace;--fs-body:17px;--fs-small:13px;--line-width:70ch;--line-width-wide:100ch;--radius:8px;--radius-sm:4px;--transition:.2s ease;--transition-pane:.22s cubic-bezier(.2, .8, .2, 1);--grain-noise-ink:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.055'/%3E%3C/svg%3E");--grain-noise-paper:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' fill='%23ffffff' filter='url(%23n)' opacity='.045'/%3E%3C/svg%3E");--tree-width:264px;--outline-width:280px;--rail-width:36px;--header-height:52px}:root[data-theme=light],:root:not([data-theme]){--bg:#fffcf0;--bg-elev:#fff;--bg-sidebar:#f2f0e5;--bg-sidebar-2:#e6e4d9;--fg:#1c1b1a;--fg-strong:#100f0f;--fg-muted:#6f6e69;--fg-subtle:#b7b5ac;--border:#e6e4d9;--border-strong:#dad8ce;--link:#205ea6;--link-hover:#174a86;--accent:#bc5215;--accent-strong:#9c430f;--accent-soft:#ffe7ce;--accent-tint:#fbf4e9;--code-bg:#f2f0e5;--quote-bar:#bc5215;--quote-bg:#fbf4e9;--quote-fg:#575653;--shadow:0 1px 2px #3c28140d, 0 1px 0 #3c281408;--shadow-md:0 6px 24px -10px #3c28141f, 0 2px 6px -2px #3c28140f;--selection-bg:#ffe7ce;--selection-fg:#27180e;--paper-grain:radial-gradient(circle at 1px 1px, #5756530e 1px, transparent 0);--paper-grain-size:22px 22px}:root[data-theme=dark]{--bg:#1c1b1a;--bg-elev:#282726;--bg-sidebar:#100f0f;--bg-sidebar-2:#1c1b1a;--fg:#cecdc3;--fg-strong:#fffcf0;--fg-muted:#878580;--fg-subtle:#575653;--border:#282726;--border-strong:#403e3c;--link:#4385be;--link-hover:#6ba3d4;--accent:#da702c;--accent-strong:#e89a63;--accent-soft:#27180e;--accent-tint:#1e1a16;--code-bg:#100f0f;--quote-bar:#da702c;--quote-bg:#1e1a16;--quote-fg:#b7b5ac;--shadow:0 1px 2px #0006;--shadow-md:0 8px 28px -10px #0000008c, 0 2px 8px -2px #0000004d;--selection-bg:#bc5215;--selection-fg:#fffcf0;--paper-grain:radial-gradient(circle at 1px 1px, #cecdc30d 1px, transparent 0);--paper-grain-size:22px 22px}:root[data-palette=paper][data-theme=light]{--bg:#f7f1e3;--bg-elev:#fdf9ed;--bg-sidebar:#efe7d2;--bg-sidebar-2:#e7debe;--fg:#2b2015;--fg-strong:#17110a;--fg-muted:#7a6a52;--fg-subtle:#a89575;--border:#e2d7bd;--border-strong:#d4c6a5;--accent:#8b5a2b;--accent-strong:#6f4720;--accent-soft:#f1e2c5;--accent-tint:#f6ecd6;--link:#8b5a2b;--link-hover:#6f4720;--code-bg:#efe7d2;--quote-bar:#8b5a2b;--quote-bg:#f6ecd6;--quote-fg:#6a5940;--selection-bg:#f1e2c5;--selection-fg:#2b2015;--paper-grain:radial-gradient(circle at 1px 1px, #7a6a520f 1px, transparent 0)}:root[data-palette=paper][data-theme=dark]{--bg:#1a140d;--bg-elev:#221a10;--bg-sidebar:#150f09;--bg-sidebar-2:#1f1811;--fg:#e8ddc8;--fg-strong:#f7efdc;--fg-muted:#a08d6f;--fg-subtle:#6f604a;--border:#2c2317;--border-strong:#3b301f;--accent:#e0a663;--accent-strong:#f0bb7d;--link:#e0a663;--link-hover:#f0bb7d;--code-bg:#221a10;--accent-soft:#3a2a14;--accent-tint:#241c12;--quote-bar:#e0a663;--quote-bg:#241c12;--quote-fg:#c0ad8c;--selection-bg:#8b5a2b;--selection-fg:#f7efdc;--paper-grain:radial-gradient(circle at 1px 1px, #e8ddc80a 1px, transparent 0)}:root[data-palette=solarized][data-theme=light]{--bg:#fdf6e3;--bg-elev:#fff;--bg-sidebar:#eee8d5;--bg-sidebar-2:#e3dfc8;--fg:#586e75;--fg-strong:#002b36;--fg-muted:#93a1a1;--fg-subtle:#a8b3b0;--border:#e3dfc8;--border-strong:#d3cdb4;--accent:#b58900;--accent-strong:#806300;--accent-soft:#f4ecc9;--accent-tint:#fbf6df;--link:#268bd2;--link-hover:#1e6da3;--quote-bar:#b58900;--quote-bg:#fbf6df;--quote-fg:#657b83;--code-bg:#eee8d5;--selection-bg:#f4ecc9;--selection-fg:#002b36;--paper-grain:radial-gradient(circle at 1px 1px, #586e750e 1px, transparent 0)}:root[data-palette=solarized][data-theme=dark]{--bg:#002b36;--bg-elev:#073642;--bg-sidebar:#001b22;--bg-sidebar-2:#073642;--fg:#93a1a1;--fg-strong:#fdf6e3;--fg-muted:#586e75;--fg-subtle:#46595f;--border:#073642;--border-strong:#135362;--accent:#b58900;--accent-strong:#e0aa00;--accent-soft:#073642;--accent-tint:#08313e;--link:#268bd2;--link-hover:#4ba0db;--quote-bar:#b58900;--quote-bg:#08313e;--quote-fg:#839496;--code-bg:#073642;--selection-bg:#135362;--selection-fg:#fdf6e3;--paper-grain:radial-gradient(circle at 1px 1px, #93a1a10b 1px, transparent 0)}:root[data-palette=everforest][data-theme=light]{--bg:#fdf6e3;--bg-elev:#fffbef;--bg-sidebar:#efebd4;--bg-sidebar-2:#e6e2cc;--fg:#5c6a72;--fg-strong:#3a454a;--fg-muted:#829181;--fg-subtle:#a6b0a0;--border:#e0dcc7;--border-strong:#bdc3af;--accent:#8da101;--accent-strong:#6d7d00;--accent-soft:#eaedc8;--accent-tint:#f4f4e2;--link:#3a94c5;--link-hover:#2b7aa6;--code-bg:#efebd4;--quote-bar:#8da101;--quote-bg:#f2f2e0;--quote-fg:#829181;--selection-bg:#eaedc8;--selection-fg:#3a454a;--paper-grain:var(--grain-noise-ink);--paper-grain-size:140px 140px}:root[data-palette=everforest][data-theme=dark]{--bg:#2d353b;--bg-elev:#343f44;--bg-sidebar:#232a2e;--bg-sidebar-2:#2d353b;--fg:#d3c6aa;--fg-strong:#eee4cc;--fg-muted:#9da9a0;--fg-subtle:#7a8478;--border:#3d484d;--border-strong:#475258;--accent:#a7c080;--accent-strong:#c2d69f;--accent-soft:#425047;--accent-tint:#333d3e;--link:#7fbbb3;--link-hover:#9fd0c9;--code-bg:#232a2e;--quote-bar:#a7c080;--quote-bg:#333d3e;--quote-fg:#9da9a0;--selection-bg:#475258;--selection-fg:#d3c6aa;--paper-grain:var(--grain-noise-paper);--paper-grain-size:140px 140px}:root[data-palette=rose-pine][data-theme=light]{--bg:#faf4ed;--bg-elev:#fffaf3;--bg-sidebar:#f2e9e1;--bg-sidebar-2:#eadfd4;--fg:#464261;--fg-strong:#332f4a;--fg-muted:#797593;--fg-subtle:#9893a5;--border:#eadfd4;--border-strong:#dfd3c8;--accent:#907aa9;--accent-strong:#75608c;--accent-soft:#ece2f1;--accent-tint:#f7f2f8;--link:#286983;--link-hover:#1c5065;--code-bg:#f2e9e1;--quote-bar:#907aa9;--quote-bg:#f7f2f8;--quote-fg:#797593;--selection-bg:#dfdad9;--selection-fg:#464261;--paper-grain:radial-gradient(120% 60% at 50% -12%, #907aa91a, transparent 62%), radial-gradient(circle at 1px 1px, #7975930d 1px, transparent 0);--paper-grain-size:auto, 22px 22px}:root[data-palette=rose-pine][data-theme=dark]{--bg:#191724;--bg-elev:#1f1d2e;--bg-sidebar:#14121d;--bg-sidebar-2:#1f1d2e;--fg:#e0def4;--fg-strong:#fff;--fg-muted:#908caa;--fg-subtle:#6e6a86;--border:#26233a;--border-strong:#403d52;--accent:#c4a7e7;--accent-strong:#d9c4f2;--accent-soft:#2b2540;--accent-tint:#211e30;--link:#9ccfd8;--link-hover:#bde1e8;--code-bg:#1f1d2e;--quote-bar:#c4a7e7;--quote-bg:#211e30;--quote-fg:#908caa;--selection-bg:#403d52;--selection-fg:#e0def4;--paper-grain:radial-gradient(120% 60% at 50% -12%, #c4a7e71a, transparent 62%), radial-gradient(circle at 1px 1px, #e0def40a 1px, transparent 0);--paper-grain-size:auto, 22px 22px}:root[data-palette=kanagawa][data-theme=light]{--bg:#f2ecbc;--bg-elev:#f7f2cf;--bg-sidebar:#e7dba0;--bg-sidebar-2:#e4d794;--fg:#545464;--fg-strong:#43436c;--fg-muted:#716e61;--fg-subtle:#8a8980;--border:#dcd5ac;--border-strong:#d5cea3;--accent:#cc6d00;--accent-strong:#a85a00;--accent-soft:#f9d791;--accent-tint:#f5eec4;--link:#4d699b;--link-hover:#3a5280;--code-bg:#e7dba0;--quote-bar:#cc6d00;--quote-bg:#f0e8b4;--quote-fg:#716e61;--selection-bg:#c9cbd1;--selection-fg:#43436c;--paper-grain:var(--grain-noise-ink);--paper-grain-size:140px 140px}:root[data-palette=kanagawa][data-theme=dark]{--bg:#1f1f28;--bg-elev:#2a2a37;--bg-sidebar:#16161d;--bg-sidebar-2:#1a1a22;--fg:#dcd7ba;--fg-strong:#f0ebd2;--fg-muted:#c8c093;--fg-subtle:#727169;--border:#2a2a37;--border-strong:#363646;--accent:#e6c384;--accent-strong:#f2d6a3;--accent-soft:#49443c;--accent-tint:#252530;--link:#7e9cd8;--link-hover:#9cb3e4;--code-bg:#16161d;--quote-bar:#e6c384;--quote-bg:#223249;--quote-fg:#c8c093;--selection-bg:#2d4f67;--selection-fg:#dcd7ba;--paper-grain:var(--grain-noise-paper);--paper-grain-size:140px 140px}:root[data-palette=catppuccin][data-theme=light]{--bg:#eff1f5;--bg-elev:#fff;--bg-sidebar:#e6e9ef;--bg-sidebar-2:#dce0e8;--fg:#4c4f69;--fg-strong:#3a3d52;--fg-muted:#6c6f85;--fg-subtle:#9ca0b0;--border:#ccd0da;--border-strong:#bcc0cc;--accent:#8839ef;--accent-strong:#7128cc;--accent-soft:#e7d9fb;--accent-tint:#f3ecfd;--link:#1e66f5;--link-hover:#1450c8;--code-bg:#e6e9ef;--quote-bar:#8839ef;--quote-bg:#f3ecfd;--quote-fg:#6c6f85;--selection-bg:#ccd0da;--selection-fg:#4c4f69;--paper-grain:radial-gradient(120% 60% at 50% -12%, #8839ef12, transparent 62%), radial-gradient(circle at 1px 1px, #4c4f690b 1px, transparent 0);--paper-grain-size:auto, 22px 22px}:root[data-palette=catppuccin][data-theme=dark]{--bg:#1e1e2e;--bg-elev:#313244;--bg-sidebar:#181825;--bg-sidebar-2:#11111b;--fg:#cdd6f4;--fg-strong:#fff;--fg-muted:#a6adc8;--fg-subtle:#7f849c;--border:#313244;--border-strong:#45475a;--accent:#cba6f7;--accent-strong:#ddc4fa;--accent-soft:#2f2743;--accent-tint:#252033;--link:#89b4fa;--link-hover:#a8c9fb;--code-bg:#181825;--quote-bar:#cba6f7;--quote-bg:#252033;--quote-fg:#a6adc8;--selection-bg:#45475a;--selection-fg:#cdd6f4;--paper-grain:radial-gradient(120% 60% at 50% -12%, #cba6f71a, transparent 62%), radial-gradient(circle at 1px 1px, #cdd6f40a 1px, transparent 0);--paper-grain-size:auto, 22px 22px}:root[data-palette=high-contrast][data-theme=light]{--bg:#fff;--bg-elev:#fff;--bg-sidebar:#fff;--bg-sidebar-2:#f2f2f2;--fg:#000;--fg-strong:#000;--fg-muted:#1a1a1a;--fg-subtle:#3a3a3a;--border:#000;--border-strong:#000;--accent:#00e;--accent-strong:#009;--accent-soft:#d6d6ff;--accent-tint:#ececff;--link:#00e;--link-hover:#009;--quote-bar:#000;--quote-bg:#fff;--quote-fg:#000;--code-bg:#f2f2f2;--selection-bg:#000;--selection-fg:#fff;--shadow:0 0 0 1px #000;--shadow-md:0 0 0 2px #000;--paper-grain:none}:root[data-palette=high-contrast][data-theme=dark]{--bg:#000;--bg-elev:#000;--bg-sidebar:#000;--bg-sidebar-2:#0a0a0a;--fg:#fff;--fg-strong:#fff;--fg-muted:#e6e6e6;--fg-subtle:#bdbdbd;--border:#fff;--border-strong:#fff;--accent:#ff0;--accent-strong:#ff6;--accent-soft:#3a3a00;--accent-tint:#1a1a00;--link:#4ec9ff;--link-hover:#9fdcff;--quote-bar:#ff0;--quote-bg:#000;--quote-fg:#fff;--code-bg:#0a0a0a;--selection-bg:#fff;--selection-fg:#000;--shadow:0 0 0 1px #fff;--shadow-md:0 0 0 2px #fff;--paper-grain:none}:root[data-wide="1"]{--line-width:var(--line-width-wide)}html,body{transition:background-color var(--transition), color var(--transition)}.app-shell,.pane-tree,.pane-header,.pane-outline,.tree-item,.outline-row,.icon-btn{transition:background-color var(--transition), color var(--transition), border-color var(--transition)}::selection{background:var(--selection-bg);color:var(--selection-fg)}:root[data-theme=light] .shiki span,:root:not([data-theme]) .shiki span{color:var(--shiki-light)!important}:root[data-theme=light] .shiki,:root:not([data-theme]) .shiki{background-color:var(--shiki-light-bg)!important}:root[data-theme=dark] .shiki span{color:var(--shiki-dark)!important}:root[data-theme=dark] .shiki{background-color:var(--shiki-dark-bg)!important}.tree-scroll,.pane-outline,.pane-main{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.pane-main::-webkit-scrollbar{width:10px;height:10px}.tree-scroll::-webkit-scrollbar{width:10px;height:10px}.pane-outline::-webkit-scrollbar{width:10px;height:10px}.tree-scroll::-webkit-scrollbar-corner{background:0 0}.pane-main::-webkit-scrollbar-thumb{background:var(--border-strong);border:2px solid var(--bg);border-radius:999px}.tree-scroll::-webkit-scrollbar-thumb{background:var(--border-strong);border:2px solid var(--bg);border-radius:999px}.pane-outline::-webkit-scrollbar-thumb{background:var(--border-strong);border:2px solid var(--bg);border-radius:999px}.tree-scroll::-webkit-scrollbar-thumb{border-color:var(--bg-sidebar)}.pane-outline::-webkit-scrollbar-thumb{border-color:var(--bg-sidebar)}.app-shell{grid-template-columns:var(--tree-width) minmax(0, 1fr) var(--outline-width);grid-template-rows:var(--header-height) minmax(0, 1fr);background:var(--bg);height:100%;transition:grid-template-columns var(--transition-pane);grid-template-areas:"tree header outline""tree main outline";display:grid;position:relative}.app-shell.tree-collapsed{grid-template-columns:var(--rail-width) minmax(0, 1fr) var(--outline-width)}.app-shell.outline-collapsed{grid-template-columns:var(--tree-width) minmax(0, 1fr) var(--rail-width)}.app-shell.tree-collapsed.outline-collapsed{grid-template-columns:var(--rail-width) minmax(0, 1fr) var(--rail-width)}.app-shell>.pane-tree{background:var(--bg-sidebar);border-right:1px solid var(--border);grid-area:tree;position:relative;overflow:hidden}.app-shell>.pane-header{background:var(--bg-elev);border-bottom:1px solid var(--border);z-index:5;grid-area:header;align-items:center;padding:0;display:flex;position:relative}.app-shell>.pane-main{background:var(--bg);background-image:var(--paper-grain);background-size:var(--paper-grain-size);background-attachment:local;grid-area:main;padding:56px clamp(32px,6vw,80px) 120px;overflow:auto}.app-shell>.pane-outline{background:var(--bg-sidebar);border-left:1px solid var(--border);transition:padding-right var(--transition);grid-area:outline;padding:18px 14px;position:relative;overflow:hidden auto}.app-shell.has-minimap:not(.outline-collapsed)>.pane-outline{padding-right:32px}.app-shell.tree-collapsed>.pane-tree,.app-shell.outline-collapsed>.pane-outline{padding:0;overflow:hidden}.pane-main .markdown-body{max-width:var(--line-width);margin:0 auto}.header-inner{grid-template-columns:auto 1fr auto;align-items:center;gap:14px;width:100%;height:100%;padding:0 14px;display:grid}.header-left{align-items:center;gap:10px;min-width:0;display:flex}.header-center{align-items:center;min-width:0;display:flex;overflow:hidden}.header-right{align-items:center;gap:6px;display:flex}.brand{font-family:var(--font-mono);letter-spacing:.04em;color:var(--fg-muted);border:1px solid var(--border);background:var(--bg-sidebar);-webkit-user-select:none;user-select:none;border-radius:999px;padding:2px 8px;font-size:12px}.icon-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--fg-muted);transition:color var(--transition), background-color var(--transition), transform var(--transition);justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{color:var(--accent);background:var(--accent-tint)}.icon-btn:active{transform:scale(.94)}.icon-btn.theme-btn:hover{color:var(--accent-strong)}.rail-btn{width:100%;height:100%;min-height:100%;color:var(--fg-muted);transition:color var(--transition), background-color var(--transition);background:0 0;flex-direction:column;justify-content:flex-start;align-items:center;gap:14px;padding:12px 0;display:flex;position:sticky;top:0}.rail-btn:hover{color:var(--accent);background:var(--accent-tint)}.rail-label{writing-mode:vertical-rl;font-family:var(--font-mono);letter-spacing:.14em;-webkit-user-select:none;user-select:none;font-size:10px;font-weight:500;transform:rotate(180deg)}.resizer{cursor:col-resize;z-index:4;width:6px;transition:background-color var(--transition);background:0 0;align-self:stretch;position:relative}.resizer-left{grid-area:1/1/-1/2;justify-self:end;margin-right:-3px}.resizer-right{grid-area:1/3/-1/4;justify-self:start;margin-left:-3px}.resizer:hover,.resizer:active{background:var(--accent-tint)}.resizer:before{content:"";width:1px;transition:background-color var(--transition);background:0 0;position:absolute;top:0;bottom:0;left:50%}.resizer:hover:before,.resizer:active:before{background:var(--accent)}@media (width<=1100px){.app-shell:not(.outline-collapsed){--outline-width:0px!important}.app-shell:not(.outline-collapsed)>.resizer-right{display:none}.app-shell:not(.outline-collapsed)>.pane-outline{top:var(--header-height);z-index:30;width:min(320px,88vw);position:absolute;bottom:0;right:0;box-shadow:0 8px 32px #00000073}}@media (width<=800px){.app-shell:not(.tree-collapsed){--tree-width:0px!important}.app-shell:not(.tree-collapsed)>.resizer-left{display:none}.app-shell:not(.tree-collapsed)>.pane-tree{top:var(--header-height);z-index:30;width:min(280px,88vw);position:absolute;bottom:0;left:0;box-shadow:0 8px 32px #00000073}.pane-main{padding:32px 20px 80px}}.markdown-body{font-family:var(--font-serif);font-size:var(--fs-body);color:var(--fg);font-feature-settings:"kern", "liga", "onum";line-height:1.72}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{font-family:var(--font-serif);letter-spacing:-.012em;color:var(--fg-strong);scroll-margin-top:16px}.markdown-content h1{color:var(--accent);margin:.2em 0 .5em;padding-bottom:.35em;font-size:clamp(2rem,3.4vw,2.6rem);font-style:italic;font-weight:700;line-height:1.12;position:relative}.markdown-content h1:after{content:"";background:var(--accent);border-radius:2px;width:64px;height:3px;margin-top:.4em;display:block}.markdown-content h2{border-bottom:1px solid var(--border);margin:1.9em 0 .55em;padding-bottom:.15em;font-size:1.65rem;font-weight:700;line-height:1.22}.markdown-content h3{margin:1.6em 0 .4em;font-size:1.28rem;font-weight:700;line-height:1.3}.markdown-content h4{font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.12em;color:var(--accent);margin:1.6em 0 .4em;font-size:.82rem;font-weight:700}.markdown-content h5,.markdown-content h6{color:var(--fg-muted);margin:1.4em 0 .3em;font-size:1rem;font-weight:700}.doc-stats{font-family:var(--font-sans);letter-spacing:.04em;color:var(--fg-muted);text-transform:uppercase;border-bottom:1px dashed var(--border);flex-wrap:wrap;align-items:center;gap:0 .6em;margin-bottom:1.6em;padding-bottom:.8em;font-size:12px;font-weight:500;display:flex}.doc-stats-sep{opacity:.5}.doc-stats-updated{cursor:help}.markdown-content>.is-dimmed{opacity:.25;transition:opacity var(--transition)}.markdown-content>.is-focused{opacity:1;transition:opacity var(--transition)}.markdown-content>.is-dimmed mark.search-hit.is-active{opacity:1}.math-block{text-align:center;margin:1.4em 0;padding:.4em 0;overflow:auto hidden}.math-inline{display:inline-block}.markdown-content p{-webkit-hyphens:auto;hyphens:auto;margin:.95em 0}.markdown-content p+p{margin-top:.6em}.markdown-content ul,.markdown-content ol{margin:1em 0;padding-left:1.65em}.markdown-content ul{list-style:outside}.markdown-content ol{list-style:decimal}.markdown-content li{margin:.35em 0}.markdown-content li::marker{color:var(--accent);font-weight:600}.markdown-content li>ul,.markdown-content li>ol{margin:.3em 0}.markdown-content>p:first-of-type:first-letter{font-weight:600}.markdown-content strong{color:var(--fg-strong);font-weight:700}.markdown-content em{font-style:italic}.markdown-content a{color:var(--link);text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);text-underline-offset:3px;transition:color var(--transition), text-decoration-color var(--transition);text-decoration-thickness:1px}.markdown-content a:hover{color:var(--link-hover);text-decoration-thickness:2px}.markdown-content a.is-external .external-icon{vertical-align:-.08em;color:var(--fg-subtle);opacity:.65;transition:color var(--transition), opacity var(--transition), transform var(--transition);flex-shrink:0;margin-left:.2em;display:inline-block}.markdown-content a.is-external:hover .external-icon{color:var(--accent);opacity:1;transform:translate(1px,-1px)}.markdown-content blockquote{border-left:4px solid var(--quote-bar);background:var(--quote-bg);border-radius:0 var(--radius) var(--radius) 0;color:var(--quote-fg);margin:1.3em 0;padding:.6em 1.1em .6em 1.3em;font-size:1.02em;font-style:italic;position:relative}.markdown-content blockquote p{margin:.4em 0}.markdown-content blockquote>:first-child{margin-top:0}.markdown-content blockquote>:last-child{margin-bottom:0}.markdown-content code{font-family:var(--font-mono);background:var(--code-bg);color:var(--accent-strong);border-radius:var(--radius-sm);border:1px solid var(--border);padding:1px 6px;font-size:.88em}.markdown-content pre{border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow);margin:1.3em 0;padding:16px 18px;font-size:.92em;line-height:1.55;position:relative;overflow:auto}.markdown-content pre code{color:inherit;background:0 0;border:0;padding:0;font-size:1em}.markdown-content table{border-collapse:separate;border-spacing:0;font-size:.94em;font-family:var(--font-sans);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);width:100%;margin:1.4em 0;overflow:hidden}.markdown-content th,.markdown-content td{text-align:left;border-bottom:1px solid var(--border);padding:10px 14px}.markdown-content tr:last-child td{border-bottom:0}.markdown-content th{background:var(--bg-sidebar);color:var(--fg-strong);text-transform:uppercase;letter-spacing:.06em;font-size:.85em;font-weight:600}.markdown-content tbody tr:hover{background:var(--accent-tint)}.markdown-content td code,.markdown-content th code{overflow-wrap:anywhere;word-break:break-word}.markdown-content hr{background:var(--border);border:0;width:100%;height:1px;margin:2.4em auto}.markdown-content img{border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-md);margin:1.3em auto}.markdown-content img.img-zoomable{cursor:zoom-in;transition:transform var(--transition), box-shadow var(--transition)}.markdown-content img.img-zoomable:hover{box-shadow:var(--shadow-lg,var(--shadow-md));transform:translateY(-1px)}.markdown-content ul.contains-task-list{padding-left:.25em;list-style:none}.markdown-content ul.contains-task-list ul.contains-task-list{padding-left:1.5em}.markdown-content li.task-list-item{margin-left:0;list-style:none}.markdown-content li.task-list-item::marker{content:""}.markdown-content input[type=checkbox]{appearance:none;border:1.5px solid var(--fg-subtle);cursor:default;width:14px;height:14px;transition:background var(--transition), border-color var(--transition);background:0 0;border-radius:4px;margin-right:.6em;position:relative;transform:translateY(2px)}.markdown-content input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}.markdown-content input[type=checkbox]:checked:after{content:"";border:solid var(--bg);border-width:0 2px 2px 0;width:5px;height:9px;position:absolute;top:0;left:3px;transform:rotate(45deg)}.markdown-content li.task-list-item:has(input:checked){color:var(--fg-muted)}.markdown-content li.task-list-item:has(input:checked)>*{-webkit-text-decoration-color:var(--fg-subtle);text-decoration-color:var(--fg-subtle)}.markdown-content .pre-wrap{margin:1.3em 0;position:relative}.markdown-content .pre-wrap>pre{margin:0}.markdown-content .pre-wrap .copy-btn{font-family:var(--font-sans);letter-spacing:.04em;text-transform:uppercase;color:var(--fg-muted);background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;opacity:0;transition:opacity var(--transition), color var(--transition), border-color var(--transition), background var(--transition), transform var(--transition);padding:4px 10px;font-size:11px;font-weight:600;position:absolute;top:8px;right:8px;transform:translateY(-2px)}.markdown-content .pre-wrap:hover .copy-btn,.markdown-content .pre-wrap .copy-btn:focus-visible{opacity:1;transform:translateY(0)}.markdown-content .pre-wrap .copy-btn:hover{color:var(--accent);border-color:var(--accent)}.markdown-content .pre-wrap .copy-btn.is-copied{opacity:1;color:var(--accent);border-color:var(--accent);background:var(--accent-tint)}.frontmatter-block{background:var(--bg-elev);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);font-size:var(--fs-small);font-family:var(--font-sans);margin-bottom:1.6em;padding:10px 14px}.frontmatter-block summary{cursor:pointer;color:var(--fg-muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;-webkit-user-select:none;user-select:none;font-size:11px}.frontmatter-block summary:hover{color:var(--accent)}.frontmatter-block[open] summary{color:var(--accent);margin-bottom:8px}.frontmatter-block pre{background:var(--code-bg);border-radius:var(--radius-sm);margin-top:8px;padding:10px 12px;font-size:12px}.mermaid-block{--pele-bg:var(--bg-elev);--pele-fg:var(--fg);--pele-muted:var(--fg-muted);--pele-line:var(--fg-muted);--pele-surface:var(--code-bg);--pele-surface-alt:var(--bg-sidebar);--pele-border:var(--border-strong);--pele-accent:var(--accent);--pele-font:var(--font-sans);--pele-font-mono:var(--font-mono);--pele-radius:var(--radius-sm);font-family:var(--font-sans);text-align:center;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);margin:1.4em 0;padding:14px}.mermaid-block svg{max-width:100%;height:auto;margin-inline:auto}.mermaid-block .mermaid-error{text-align:left}.markdown-content .section-toggle{border-radius:var(--radius-sm);cursor:pointer;width:1em;height:1em;color:var(--fg-subtle);opacity:0;vertical-align:baseline;font:inherit;transition:opacity var(--transition), color var(--transition);background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;margin-right:.35em;padding:0;line-height:1;display:inline-flex}.markdown-content .section-toggle:before{content:"▾";transition:transform var(--transition);font-size:.85em;display:inline-block}.markdown-content .section-toggle[aria-expanded=false]:before{transform:rotate(-90deg)}.markdown-content :is(h1,h2,h3,h4,h5,h6):hover>.section-toggle,.markdown-content .section-toggle:focus-visible,.markdown-content .section-heading-collapsed>.section-toggle{opacity:1}.markdown-content .section-toggle:hover{color:var(--accent)}.markdown-content .section-heading-collapsed{color:var(--fg-muted)}.markdown-content .heading-anchor{font-family:var(--font-mono);color:var(--fg-subtle);border-radius:var(--radius-sm);opacity:0;transition:opacity var(--transition), color var(--transition), background var(--transition);vertical-align:middle;margin-left:.4em;padding:0 .25em;font-size:.7em;font-style:normal;font-weight:600;text-decoration:none;display:inline-block;transform:translateY(-1px)}.markdown-content :is(h1,h2,h3,h4,h5,h6):hover .heading-anchor,.markdown-content .heading-anchor:focus-visible{opacity:1}.markdown-content .heading-anchor:hover{color:var(--accent);background:var(--accent-tint)}.markdown-content .heading-anchor.is-copied{opacity:1;color:var(--accent)}.pane-content{display:block}.pane-head{background:var(--bg-sidebar);z-index:2;justify-content:space-between;align-items:center;gap:6px;padding:10px 8px 8px 14px;display:flex;position:sticky;top:0}.pane-head-title{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em;color:var(--fg-muted);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;font-size:10.5px;font-weight:500;display:inline-flex}.pane-head-info{color:var(--fg-subtle);cursor:help;opacity:.7;transition:opacity var(--transition), color var(--transition);border-radius:999px;outline:0;justify-content:center;align-items:center;display:inline-flex}.pane-head-info:hover,.pane-head-info:focus-visible{opacity:1;color:var(--accent)}.pane-head-btn{border-radius:var(--radius-sm);width:24px;height:24px;color:var(--fg-subtle);cursor:pointer;transition:color var(--transition), background-color var(--transition);background:0 0;border:0;justify-content:center;align-items:center;display:inline-flex}.pane-head-btn:hover{color:var(--accent);background:var(--accent-tint)}.tree-pane{flex-direction:column;height:100%;display:flex}.tree-scroll{flex:1;min-height:0;overflow:auto}.tree{--tree-indent:14px;width:max-content;min-width:100%;font-size:var(--fs-small);font-family:var(--font-sans);padding:2px 8px 24px;list-style:none}.tree ul{list-style:none}.tree-li{position:relative}.tree-children{padding-left:var(--tree-indent);position:relative}.tree-children:before{content:"";background:var(--border);pointer-events:none;width:1px;position:absolute;top:2px;bottom:2px;left:13px}.tree-item{text-align:left;border-radius:var(--radius-sm);width:100%;color:var(--fg);transition:background-color var(--transition), color var(--transition), transform var(--transition);align-items:center;gap:7px;padding:5px 12px 5px 8px;line-height:1.35;display:flex;position:relative}.tree-item:hover{background:var(--accent-tint);color:var(--accent);transform:translate(2px)}.tree-dir{letter-spacing:.005em;color:var(--fg-strong);font-weight:600}.tree-dir .tree-icon{color:var(--accent);opacity:.85}.tree-dir:hover .tree-icon{opacity:1}.tree-root{letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);font-size:.74rem}.tree-root .tree-icon{color:var(--fg-muted)}.tree-root:hover{color:var(--accent)}.tree-empty{color:var(--fg-muted);text-align:center;padding:18px 14px;font-size:.85rem;line-height:1.5}.tree-empty code{color:var(--fg);font-size:.95em}.tree-file{color:var(--fg);font-weight:400}.tree-file .tree-icon{color:var(--fg-subtle)}.tree-file:hover .tree-icon{color:var(--accent)}.tree-file.is-disabled{color:var(--fg-subtle);cursor:default;opacity:.65}.tree-file.is-disabled:hover{color:var(--fg-subtle);background:0 0;transform:none}.tree-file.is-current{background:var(--accent-tint);color:var(--accent-strong);font-weight:600}.tree-file.is-current:before{content:"";background:var(--accent);border-radius:2px;width:3px;position:absolute;top:4px;bottom:4px;left:0}.tree-file.is-current .tree-icon{color:var(--accent)}.tree-file.is-current:hover{background:var(--accent-soft);transform:translate(2px)}.tree .name{white-space:nowrap;flex:1}.tree .chev{width:12px;height:12px;color:var(--fg-muted);transition:transform var(--transition), color var(--transition);flex:none;justify-content:center;align-items:center;display:inline-flex}.tree .chev.open{transform:rotate(90deg)}.tree-dir:hover .chev{color:var(--accent)}.tree .tree-icon{transition:color var(--transition);flex:none;justify-content:center;align-items:center;display:inline-flex}.outline{font-size:var(--fs-small);font-family:var(--font-sans)}.outline ul{list-style:none}.outline-head{border-bottom:1px solid var(--border);grid-template-columns:auto 1fr auto;align-items:center;gap:8px;margin-bottom:8px;padding:2px 6px 10px 4px;display:grid}.outline-title{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em;color:var(--fg-muted);-webkit-user-select:none;user-select:none;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:10.5px;font-weight:500;overflow:hidden}.outline-depth{align-items:center;gap:8px;min-width:0;display:inline-flex}.outline-depth-label{font-family:var(--font-mono);letter-spacing:.04em;color:var(--fg-muted);background:var(--bg-sidebar-2);-webkit-user-select:none;user-select:none;text-align:center;border-radius:999px;flex:none;min-width:38px;padding:2px 7px;font-size:10px;font-weight:600}.outline-depth-range{flex:none;width:84px;height:18px;position:relative}.outline-depth-track{background:var(--bg-sidebar-2);pointer-events:none;border-radius:999px;height:4px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.outline-depth-track-fill{background:var(--accent);opacity:.55;border-radius:999px;position:absolute;top:0;bottom:0}.outline-depth-slider{appearance:none;pointer-events:none;background:0 0;outline:none;width:100%;height:100%;margin:0;padding:0;position:absolute;inset:0}.outline-depth-slider::-webkit-slider-runnable-track{background:0 0;border:0;height:4px}.outline-depth-slider::-moz-range-track{background:0 0;border:0;height:4px}.outline-depth-slider::-webkit-slider-thumb{appearance:none;background:var(--accent);cursor:pointer;border:2px solid var(--bg-sidebar);width:14px;height:14px;box-shadow:0 0 0 1px var(--accent);pointer-events:auto;transition:transform var(--transition);border-radius:50%;margin-top:-5px}.outline-depth-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.outline-depth-slider::-moz-range-thumb{background:var(--accent);cursor:pointer;border:2px solid var(--bg-sidebar);width:14px;height:14px;box-shadow:0 0 0 1px var(--accent);pointer-events:auto;border-radius:50%}.outline-depth-slider:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 1px var(--accent), 0 0 0 4px var(--accent-tint)}.outline-depth-slider:focus-visible::-moz-range-thumb{box-shadow:0 0 0 1px var(--accent), 0 0 0 4px var(--accent-tint)}.outline-li{position:relative}.outline-children{padding-left:16px;position:relative}.outline-children:before{content:"";background:var(--border);pointer-events:none;width:1px;position:absolute;top:4px;bottom:4px;left:6px}.outline-row{border-radius:var(--radius-sm);transition:background-color var(--transition), color var(--transition), transform var(--transition);align-items:flex-start;gap:4px;padding:4px 8px 4px 6px;display:flex;position:relative}.outline-row:hover{background:var(--accent-tint);transform:translate(2px)}.outline-row.is-active{background:var(--accent-tint)}.outline-row.is-active:before{content:"";background:var(--accent);border-radius:2px;width:3px;position:absolute;top:4px;bottom:4px;left:0}.outline-row.is-active .outline-link{color:var(--accent-strong);font-weight:600}.outline-toggle{width:16px;height:22px;color:var(--fg-subtle);transition:transform var(--transition), color var(--transition);flex:none;justify-content:center;align-items:center;display:inline-flex}.outline-toggle.open{transform:rotate(90deg)}.outline-toggle.is-spacer{visibility:hidden}.outline-row:hover .outline-toggle{color:var(--accent)}.outline-link{text-align:left;text-overflow:ellipsis;white-space:nowrap;color:var(--fg);transition:color var(--transition);flex:1;padding:1px 2px;line-height:1.4;overflow:hidden}.outline-row:hover .outline-link{color:var(--accent)}.outline-li.depth-0>.outline-row .outline-link{color:var(--fg-strong);font-size:13px;font-weight:600}.outline-li.depth-1>.outline-row .outline-link{color:var(--fg);font-size:12.5px;font-weight:500}.outline-li.depth-2>.outline-row .outline-link{color:var(--fg);font-size:12.5px;font-weight:400}.outline-li.depth-3>.outline-row .outline-link,.outline-li.depth-4>.outline-row .outline-link,.outline-li.depth-5>.outline-row .outline-link{color:var(--fg-muted);font-size:12px;font-weight:400}.outline-empty{color:var(--fg-muted);font-size:var(--fs-small);padding:14px 12px;font-style:italic}.breadcrumbs{color:var(--fg-muted);white-space:nowrap;font-size:13px;font-family:var(--font-sans);align-items:center;gap:2px;min-width:0;display:flex;overflow:hidden}.bc-step{flex-shrink:1;align-items:center;min-width:0;display:inline-flex}.bc-sep{color:var(--fg-subtle);-webkit-user-select:none;user-select:none;margin:0 2px;font-weight:400}.bc-item{border-radius:var(--radius-sm);font-family:var(--font-sans);color:var(--fg-muted);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;max-width:240px;transition:background var(--transition), color var(--transition);background:0 0;border:0;padding:4px 8px;font-size:13px;font-weight:500;display:inline-block;overflow:hidden}.bc-item:hover{background:var(--accent-tint);color:var(--fg-strong)}.bc-item:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.bc-root{color:var(--fg-strong);max-width:320px;font-weight:600}.bc-item.is-current{color:var(--accent);background:var(--accent-tint)}.search-bar{z-index:20;background:var(--bg-elev);border:1px solid var(--border);max-width:560px;box-shadow:var(--shadow-md);font-family:var(--font-sans);border-radius:16px;flex-wrap:wrap;align-items:center;gap:6px;margin:0 auto 1em;padding:6px 8px;display:flex;position:sticky;top:4px}.search-scope{background:var(--bg-sidebar);border-radius:999px;gap:2px;padding:2px;display:inline-flex}.scope-pill{font:inherit;letter-spacing:.04em;text-transform:uppercase;color:var(--fg-muted);cursor:pointer;transition:background var(--transition), color var(--transition);background:0 0;border:0;border-radius:999px;padding:4px 10px;font-size:11px;font-weight:600}.scope-pill.is-active{background:var(--accent);color:var(--bg)}.scope-pill:hover:not(.is-active){color:var(--accent)}.search-options{gap:2px;display:inline-flex}.search-opt{font-family:var(--font-mono);border-radius:var(--radius-sm);min-width:26px;height:24px;color:var(--fg-subtle);cursor:pointer;transition:background var(--transition), color var(--transition), border-color var(--transition);background:0 0;border:1px solid #0000;padding:0 6px;font-size:11px;font-weight:600}.search-opt:hover{color:var(--accent)}.search-opt.is-on{background:var(--accent-tint);color:var(--accent-strong);border-color:var(--accent)}.search-input{min-width:0;color:var(--fg);font:inherit;background:0 0;border:0;outline:none;flex:1;padding:4px 0;font-size:14px}.search-input::placeholder{color:var(--fg-subtle)}.search-count{color:var(--fg-muted);font-variant-numeric:tabular-nums;white-space:nowrap;padding:0 4px;font-size:12px}.search-btn{width:28px;height:28px;color:var(--fg-muted);cursor:pointer;transition:background var(--transition), color var(--transition);background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;font-size:14px;display:inline-flex}.search-btn:hover:not(:disabled){background:var(--accent-tint);color:var(--accent)}.search-btn:disabled{opacity:.35;cursor:not-allowed}.search-close{font-size:18px;font-weight:300}mark.search-hit{background:color-mix(in srgb, var(--accent) 28%, transparent);color:inherit;box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 22%, transparent) inset;border-radius:2px;padding:0 1px}mark.search-hit.is-active{background:var(--accent);color:var(--bg);box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 50%, transparent)}.palette-overlay{-webkit-backdrop-filter:blur(4px);z-index:95;cursor:zoom-out;font-family:var(--font-sans);background:#08060380;justify-content:center;align-items:flex-start;padding-top:12vh;animation:.14s ease-out lightbox-fade;display:flex;position:fixed;inset:0}.palette{cursor:default;background:var(--bg-elev);color:var(--fg);border:1px solid var(--border);border-radius:calc(var(--radius) * 1.4);flex-direction:column;width:min(620px,92vw);max-height:64vh;display:flex;overflow:hidden;box-shadow:0 30px 70px #0006}.palette-input-wrap{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:14px 18px;display:flex}.palette-prefix{font-family:var(--font-mono);color:var(--fg-muted);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);letter-spacing:.04em;flex-shrink:0;padding:3px 7px;font-size:11px;font-weight:700}.palette-input{color:var(--fg);font:inherit;background:0 0;border:0;outline:none;flex:1;font-size:16px}.palette-input::placeholder{color:var(--fg-subtle)}.palette-list{flex:1;min-height:0;margin:0;padding:6px;list-style:none;overflow:auto}.palette-item{border-radius:var(--radius);cursor:pointer;transition:background var(--transition);justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;font-size:13.5px;line-height:1.3;display:flex}.palette-item.is-active{background:var(--accent-tint)}.palette-item.is-active .palette-item-name{color:var(--accent)}.palette-item-name{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--fg);flex:1;overflow:hidden}.palette-dir{color:var(--fg-subtle)}.palette-match{color:var(--accent);background:0 0;font-weight:700}.palette-tag{text-transform:uppercase;letter-spacing:.12em;color:var(--fg-muted);background:var(--bg);border:1px solid var(--border);border-radius:999px;flex-shrink:0;padding:2px 8px;font-size:10px;font-weight:700}.palette-empty{color:var(--fg-muted);text-align:center;padding:18px 14px;font-style:italic}.palette-foot{border-top:1px solid var(--border);color:var(--fg-muted);gap:18px;padding:10px 18px;font-size:11.5px;display:flex}.palette-foot kbd{font-family:var(--font-mono);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--fg-strong);border-bottom-width:2px;margin-right:4px;padding:1px 6px;font-size:10.5px;font-weight:600;display:inline-block}.shortcuts-overlay{-webkit-backdrop-filter:blur(4px);z-index:90;cursor:zoom-out;font-family:var(--font-sans);background:#0806038c;justify-content:center;align-items:center;padding:4vh 4vw;animation:.16s ease-out lightbox-fade;display:flex;position:fixed;inset:0}.shortcuts-panel{cursor:default;background:var(--bg-elev);color:var(--fg);border:1px solid var(--border);border-radius:calc(var(--radius) * 1.4);flex-direction:column;width:min(560px,92vw);max-height:86vh;display:flex;overflow:hidden;box-shadow:0 24px 60px #00000059}.shortcuts-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.shortcuts-eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--fg-muted);font-size:11px;font-weight:700}.shortcuts-close{width:30px;height:30px;color:var(--fg-muted);cursor:pointer;transition:background var(--transition), color var(--transition);background:0 0;border:0;border-radius:50%;font-size:22px;line-height:1}.shortcuts-close:hover{background:var(--accent-tint);color:var(--accent)}.shortcuts-body{grid-template-columns:1fr 1fr;gap:8px 28px;padding:8px 18px 18px;display:grid;overflow:auto}.shortcuts-group h3{letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:14px 0 8px;font-size:11px;font-weight:700}.shortcuts-group ul{margin:0;padding:0;list-style:none}.shortcuts-group li{justify-content:space-between;align-items:center;gap:12px;padding:5px 0;font-size:13px;display:flex}.shortcut-label{color:var(--fg)}.shortcut-keys{flex-shrink:0;align-items:center;gap:4px;display:inline-flex}.shortcut-plus{color:var(--fg-subtle);padding:0 1px;font-size:11px}.shortcuts-body kbd,.shortcuts-foot kbd{font-family:var(--font-mono);text-align:center;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);min-width:22px;color:var(--fg-strong);border-bottom-width:2px;padding:2px 7px;font-size:11px;font-weight:600;line-height:1.3;display:inline-block}.shortcuts-foot{border-top:1px solid var(--border);color:var(--fg-muted);padding:10px 18px;font-size:12px}@media (width<=520px){.shortcuts-body{grid-template-columns:1fr}}.lightbox-overlay{-webkit-backdrop-filter:blur(6px);z-index:100;cursor:zoom-out;background:#080603e0;justify-content:center;align-items:center;padding:4vh 4vw;animation:.18s ease-out lightbox-fade;display:flex;position:fixed;inset:0}@keyframes lightbox-fade{0%{opacity:0}to{opacity:1}}.lightbox-img{object-fit:contain;border-radius:var(--radius);cursor:default;max-width:92vw;max-height:92vh;box-shadow:0 24px 60px #00000080}.lightbox-close{color:#fff;cursor:pointer;width:38px;height:38px;transition:background var(--transition), transform var(--transition);background:#00000080;border:1px solid #ffffff26;border-radius:50%;justify-content:center;align-items:center;font-size:22px;line-height:1;display:inline-flex;position:absolute;top:16px;right:18px}.lightbox-close:hover{background:#000000b3;transform:scale(1.05)}.reading-progress{pointer-events:none;z-index:10;background:0 0;height:2px;position:absolute;bottom:-1px;left:0;right:0}.reading-progress__bar{background:linear-gradient(90deg, var(--accent), var(--accent-strong));height:100%;box-shadow:0 0 8px var(--accent-tint);transition:width 60ms linear}.skeleton{max-width:var(--line-width);margin:0 auto;padding-top:1em}.skeleton>*{background:linear-gradient(90deg, var(--bg-elev) 0%, var(--accent-tint) 50%, var(--bg-elev) 100%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.4s ease-in-out infinite skeleton-pulse}.skeleton__h1{width:70%;height:36px;margin:.4em 0 .6em}.skeleton__h2{width:50%;height:24px;margin:2em 0 .8em}.skeleton__meta{width:40%;height:12px;margin-bottom:1.6em}.skeleton__line{height:14px;margin:.55em 0}.skeleton__code{background:linear-gradient(90deg, var(--code-bg) 0%, var(--accent-tint) 50%, var(--code-bg) 100%);background-size:200% 100%;height:110px;margin:1.5em 0}@keyframes skeleton-pulse{0%{opacity:.9;background-position:200% 0}50%{opacity:.6}to{opacity:.9;background-position:-200% 0}}.status{color:var(--fg-muted);font-style:italic;font-family:var(--font-serif);padding:1.2em 0}.status-error{color:var(--accent-strong);font-style:normal}.view-menu{display:inline-flex;position:relative}.view-menu-popover{z-index:50;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);min-width:240px;box-shadow:var(--shadow-md);font-family:var(--font-sans);flex-direction:column;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0}.view-menu-section{flex-direction:column;gap:1px;display:flex}.view-menu-divider{background:var(--border);height:1px;margin:6px -6px}.view-menu-heading{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em;color:var(--fg-subtle);-webkit-user-select:none;user-select:none;padding:4px 10px 6px;font-size:10px;font-weight:600}.view-menu-row{border-radius:var(--radius-sm);color:var(--fg);font:inherit;font-size:var(--fs-small);text-align:left;cursor:pointer;transition:background-color var(--transition), color var(--transition);background:0 0;border:0;grid-template-columns:18px 1fr auto 16px;align-items:center;gap:10px;padding:6px 10px;display:grid}.view-menu-row:hover{background:var(--accent-tint)}.view-menu-row.is-on{color:var(--accent-strong)}.view-menu-row.is-on .view-menu-label{font-weight:600}.view-menu-icon{color:var(--fg-muted);justify-content:center;align-items:center;display:inline-flex}.view-menu-row.is-on .view-menu-icon{color:var(--accent)}.view-menu-label{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.view-menu-kbd{font-family:var(--font-mono);color:var(--fg-subtle);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);text-align:center;border-bottom-width:2px;min-width:16px;padding:0 5px;font-size:10.5px;font-weight:600;line-height:16px}.view-menu-check{color:var(--accent);justify-content:center;align-items:center;width:16px;height:16px;display:inline-flex}.view-menu-palette{grid-template-columns:18px 1fr 16px}.view-menu-palette .palette-swatch{width:14px;height:14px}.palette-swatch{border:1px solid var(--border-strong);border-radius:50%;flex-shrink:0;width:14px;height:14px}.palette-swatch-flexoki{background:linear-gradient(135deg,#fffcf0 50%,#bc5215 50%)}.palette-swatch-paper{background:linear-gradient(135deg,#f7f1e3 50%,#8b5a2b 50%)}.palette-swatch-solarized{background:linear-gradient(135deg,#fdf6e3 50%,#b58900 50%)}.palette-swatch-everforest{background:linear-gradient(135deg,#fdf6e3 50%,#8da101 50%)}.palette-swatch-rose-pine{background:linear-gradient(135deg,#faf4ed 50%,#907aa9 50%)}.palette-swatch-kanagawa{background:linear-gradient(135deg,#f2ecbc 50%,#cc6d00 50%)}.palette-swatch-catppuccin{background:linear-gradient(135deg,#eff1f5 50%,#8839ef 50%)}.palette-swatch-high-contrast{background:linear-gradient(135deg,#fff 50%,#000 50%)}.search-results{background:var(--bg-elev);border:1px solid var(--border);border-radius:10px;flex-basis:100%;max-height:60vh;margin-top:2px;font-size:13px;overflow-y:auto}.search-empty{color:var(--fg-muted);padding:14px 16px;font-style:italic}.search-file-group{border-bottom:1px solid var(--border)}.search-file-group:last-child{border-bottom:0}.search-file-head{background:var(--bg-sidebar);letter-spacing:.04em;text-transform:uppercase;color:var(--fg-muted);justify-content:space-between;padding:6px 12px;font-size:11px;font-weight:600;display:flex;position:sticky;top:0}.search-file-path{color:var(--fg-strong)}.search-file-count{color:var(--fg-muted)}.search-file-group ul{margin:0;padding:0;list-style:none}.search-hit-row{cursor:pointer;transition:background var(--transition), border-color var(--transition);border-left:2px solid #0000;grid-template-columns:auto 1fr;align-items:baseline;gap:10px;padding:5px 14px;display:grid}.search-hit-row:hover,.search-hit-row.is-active{background:var(--accent-tint);border-left-color:var(--accent)}.search-hit-line{font-family:var(--font-mono);color:var(--fg-subtle);white-space:nowrap;font-size:11px}.search-hit-snippet{font-family:var(--font-serif);color:var(--fg);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.minimap{right:4px;top:var(--header-height);z-index:8;pointer-events:auto;cursor:pointer;width:22px;transition:background-color var(--transition);position:fixed;bottom:0}.minimap:hover{background:var(--accent-tint)}.minimap-bar{background:var(--fg-subtle);height:2px;transition:background var(--transition), width var(--transition);pointer-events:none;border-radius:1px;position:absolute;left:4px}.minimap-bar.minimap-level-1{background:var(--fg-strong);width:16px}.minimap-bar.minimap-level-2{background:var(--fg-muted);width:12px}.minimap-bar.minimap-level-3{width:8px}.minimap-bar.minimap-level-4,.minimap-bar.minimap-level-5,.minimap-bar.minimap-level-6{background:var(--fg-subtle);opacity:.7;width:5px}.minimap-bar.is-active{height:3px;box-shadow:0 0 0 2px var(--accent-tint);background:var(--accent)!important}.minimap-viewport{background:color-mix(in srgb, var(--accent) 15%, transparent);border-top:1px solid color-mix(in srgb, var(--accent) 35%, transparent);border-bottom:1px solid color-mix(in srgb, var(--accent) 35%, transparent);pointer-events:none;position:absolute;left:0;right:0}.icon-btn.is-active{color:var(--accent);background:var(--accent-tint)}[data-tooltip]{position:relative}[data-tooltip]:after{content:attr(data-tooltip);background:var(--fg-strong);color:var(--bg);font-family:var(--font-sans);letter-spacing:0;white-space:nowrap;pointer-events:none;opacity:0;z-index:1000;box-shadow:var(--shadow);border-radius:4px;padding:3px 7px;font-size:11px;font-weight:500;transition:opacity .1s .38s,transform .1s .38s;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%)translateY(-2px)}[data-tooltip]:hover:after,[data-tooltip]:focus-visible:after{opacity:.92;transform:translate(-50%)translateY(0)}[data-tooltip][data-tooltip-side=top]:after{top:auto;bottom:calc(100% + 6px);transform:translate(-50%)translateY(2px)}[data-tooltip][data-tooltip-side=top]:hover:after,[data-tooltip][data-tooltip-side=top]:focus-visible:after{transform:translate(-50%)translateY(0)}[data-tooltip][data-tooltip-align=right]:after{left:auto;right:0;transform:translate(0)translateY(-2px)}[data-tooltip][data-tooltip-align=right]:hover:after,[data-tooltip][data-tooltip-align=right]:focus-visible:after{transform:translate(0)translateY(0)}[data-tooltip][data-tooltip-multiline]:after{white-space:pre-line;text-align:left;max-width:260px;font-weight:400;line-height:1.5}[data-tooltip][data-tooltip-align=left]:after{left:0;right:auto;transform:translate(0)translateY(-2px)}[data-tooltip][data-tooltip-align=left]:hover:after,[data-tooltip][data-tooltip-align=left]:focus-visible:after{transform:translate(0)translateY(0)}
|