koboyo 0.2.0 → 0.4.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/README.md +6 -1
- package/assets/editor/assets/DialogDescription-Ddhk2rmF.js +1 -0
- package/assets/editor/assets/DialogRoot-DUeVfNhS.js +1 -0
- package/assets/editor/assets/DialogTitle-D5au2NAn.js +1 -0
- package/assets/editor/assets/FloatingPortalLite-HnWQWrLk.js +1 -0
- package/assets/editor/assets/{IconAlertTriangle-CxPhYpe-.js → IconAlertTriangle-B33xznYN.js} +1 -1
- package/assets/editor/assets/{IconArrowLeft-DFk3Krim.js → IconArrowLeft-B4Zcy-Fc.js} +1 -1
- package/assets/editor/assets/IconChevronLeft-D7e7QC0h.js +1 -0
- package/assets/editor/assets/IconChevronRight-csfMBSUs.js +1 -0
- package/assets/editor/assets/{IconCode-hd05zxU4.js → IconCode-CHIz1nCU.js} +1 -1
- package/assets/editor/assets/IconCornerDownRight-DDiBMO4O.js +1 -0
- package/assets/editor/assets/{IconEraser-DlZQe3-r.js → IconEraser-CYfXj27R.js} +1 -1
- package/assets/editor/assets/{IconFocusCentered-C5PcDeR0.js → IconFocusCentered-Cn8rbfRI.js} +1 -1
- package/assets/editor/assets/IconHelp-CaEwHrsN.js +2 -0
- package/assets/editor/assets/IconLink-VS5p9Ytk.js +1 -0
- package/assets/editor/assets/IconLoader2-CzCTn-Sn.js +1 -0
- package/assets/editor/assets/IconMinus-BcaDLts8.js +1 -0
- package/assets/editor/assets/{IconMoodSmile-Bic_fw54.js → IconMoodSmile-CSZ5p_Hy.js} +1 -1
- package/assets/editor/assets/{IconPencil-C5Y-Y4dC.js → IconPencil-D_pQsAyv.js} +1 -1
- package/assets/editor/assets/{IconPhoto-CR36IK-b.js → IconPhoto-5zuCDtnR.js} +1 -1
- package/assets/editor/assets/{IconPlayerPlayFilled-D4OODBX7.js → IconPlayerPlayFilled-DVAWmYt7.js} +1 -1
- package/assets/editor/assets/{IconPlayerStopFilled-BUbX6ZO5.js → IconPlayerStopFilled-D4qdct2R.js} +1 -1
- package/assets/editor/assets/IconPlus-D4tAoi-A.js +1 -0
- package/assets/editor/assets/{IconPresentation-DCrY3PKL.js → IconPresentation-BMKzt7fv.js} +1 -1
- package/assets/editor/assets/{IconSearch-C1K0_Pq_.js → IconSearch-CCpMt02s.js} +1 -1
- package/assets/editor/assets/{IconSparkles-WDcg8BA9.js → IconSparkles-CnCp3BCQ.js} +1 -1
- package/assets/editor/assets/{IconTrash-DbN_RxB7.js → IconTrash-C8w6ThWx.js} +1 -1
- package/assets/editor/assets/{IconUsers-Bwnyj4mm.js → IconUsers-Dp85N225.js} +1 -1
- package/assets/editor/assets/IconX-KrRqxr2j.js +1 -0
- package/assets/editor/assets/MenuSubmenuTrigger-KacA9GM8.js +1 -0
- package/assets/editor/assets/PopoverPopup-B3Y0VRYc.js +1 -0
- package/assets/editor/assets/{asset-glyph-B3c--Mx2.js → asset-glyph-C1E6cGwM.js} +1 -1
- package/assets/editor/assets/billing-BSXr-z2r.js +1 -0
- package/assets/editor/assets/build-pips-BV-uwXlP.js +1 -0
- package/assets/editor/assets/build-visibility-DyML9SHt.js +1 -0
- package/assets/editor/assets/builders-DMHAOPEv.js +1 -0
- package/assets/editor/assets/{chart-Z4HQx-0h.js → chart-4iRduYdU.js} +4 -4
- package/assets/editor/assets/{chrome-layout-B8YmHznO.js → chrome-layout-BzPU9far.js} +1 -1
- package/assets/editor/assets/{code-panel-BfsykjSz.js → code-panel-koBUgEWp.js} +7 -7
- package/assets/editor/assets/command-palette-BR-_ChOL.js +1 -0
- package/assets/editor/assets/config-D8b1QyEk.js +1 -0
- package/assets/editor/assets/connector-labels-CrEgadsC.js +2 -0
- package/assets/editor/assets/copy-image-dialog-BzGP7Xw8.js +1 -0
- package/assets/editor/assets/{core-CBnmD9hT.js → core-CmsJyU_-.js} +1 -1
- package/assets/editor/assets/createReactComponent-C51FAx3B.js +1 -0
- package/assets/editor/assets/{diagram-fingerprint-CsqZK4xZ.js → diagram-fingerprint-WGQ5iVXx.js} +1 -1
- package/assets/editor/assets/dialog-DnXgEbpz.js +1 -0
- package/assets/editor/assets/{edit-BJ_kibk8.js → edit-C0sBxxsg.js} +1 -1
- package/assets/editor/assets/editor-BeufBV54.js +1 -0
- package/assets/editor/assets/{elk-api-DnfklSaw.js → elk-api-C4wlHVIw.js} +1 -1
- package/assets/editor/assets/{elk-worker-loader-CC-I9MmI.js → elk-worker-loader-CVBdN1je.js} +1 -1
- package/assets/editor/assets/{export-ChP0k5F5.js → export-Bce6ra0N.js} +1 -1
- package/assets/editor/assets/export-K2VWg76n.js +6 -0
- package/assets/editor/assets/export-dialog-x2n2a4KX.js +1 -0
- package/assets/editor/assets/flow-layer-ewaL7g2y.js +1 -0
- package/assets/editor/assets/flow-panel-BzXNGGke.js +1 -0
- package/assets/editor/assets/flow-stage-Ba_CAggI.js +1 -0
- package/assets/editor/assets/flow-start-CpAvU-9P.js +1 -0
- package/assets/editor/assets/{flows-GGbkNqs8.js → flows-Cj7AFMIA.js} +2 -2
- package/assets/editor/assets/frames-Cp1QD3LR.js +1 -0
- package/assets/editor/assets/icon-picker-Cg39IKNJ.js +1 -0
- package/assets/editor/assets/image-library-JQu_tb8P.js +1 -0
- package/assets/editor/assets/index-CBPPqsiR.js +24 -0
- package/assets/editor/assets/{index-CC2h28V_.css → index-DBrN0u0i.css} +1 -1
- package/assets/editor/assets/jsx-runtime-DKdBMi_L.js +1 -0
- package/assets/editor/assets/layout-offthread-mRHRulkS.js +18 -0
- package/assets/editor/assets/{layout.worker-BIE1_z0S.js → layout.worker-CekYkaxO.js} +2 -2
- package/assets/editor/assets/menu-B9BAk63v.js +1 -0
- package/assets/editor/assets/panel-controls-DWVXiNUZ.js +1 -0
- package/assets/editor/assets/{panel-shell-CG2aq4Ia.js → panel-shell-BnMOHgWM.js} +1 -1
- package/assets/editor/assets/{plan-jQm1jDpt.js → plan-CkgM52Yh.js} +1 -1
- package/assets/editor/assets/presentation-DJUO0t7I.js +1 -0
- package/assets/editor/assets/presenter-keys-Bs3LnmOa.js +1 -0
- package/assets/editor/assets/{jsx-runtime-2Zwg-L3c.js → react-lCSYwAWP.js} +1 -1
- package/assets/editor/assets/reflow-DaYiVkwp.js +1 -0
- package/assets/editor/assets/registry-rEGZW7Ab.js +1 -0
- package/assets/editor/assets/renderer-environment-D3n3hbug.js +1 -0
- package/assets/editor/assets/ride-overlay-Hx90v4ZK.js +1 -0
- package/assets/editor/assets/selection-overlay-primitives-BRp854AD.js +1 -0
- package/assets/editor/assets/shape-meta-COE2ATNh.js +1 -0
- package/assets/editor/assets/sign-in-dialog-tmQEB2bx.js +1 -0
- package/assets/editor/assets/slide-notes-dialog-BQBXpep6.js +1 -0
- package/assets/editor/assets/slides-D686obFO.js +15 -0
- package/assets/editor/assets/slides-panel-BEJCevJi.js +26 -0
- package/assets/editor/assets/text-breaks-DM4W6y5f.js +7 -0
- package/assets/editor/assets/{theme-palette-D1nbDFBC.js → theme-palette-Dl_G_VIJ.js} +1 -1
- package/assets/editor/assets/tidy-browser-dF3BON7J.js +1 -0
- package/assets/editor/assets/tidy-scope-BGG3ZXvZ.js +1 -0
- package/assets/editor/assets/toast-Czv_DJ-4.js +1 -0
- package/assets/editor/assets/tool-catalog-DXPhX2S1.js +1 -0
- package/assets/editor/assets/tool-drawer-CWOX_njp.js +1 -0
- package/assets/editor/assets/tooltip-CyBz17g8.js +1 -0
- package/assets/editor/assets/tree-KSgPjntC.js +1 -0
- package/assets/editor/assets/upgrade-dialog-DhSZnDpx.js +1 -0
- package/assets/editor/assets/use-drag-reorder-ye8-kpyR.js +1 -0
- package/assets/editor/assets/use-export-command-sC9UHj3_.js +2 -0
- package/assets/editor/assets/use-grid-keyboard-nav-DhQKecO1.js +0 -0
- package/assets/editor/assets/use-icon-node-BxqH7H27.js +1 -0
- package/assets/editor/assets/use-key-held-094C3Mn3.js +1 -0
- package/assets/editor/assets/use-recent-list-DuazDypH.js +1 -0
- package/assets/editor/assets/useAnchoredPopupScrollLock-i8D5Dm1d.js +1 -0
- package/assets/editor/assets/useBaseUiId-D2RfU0uY.js +1 -0
- package/assets/editor/assets/useButton-CLQYGhRJ.js +1 -0
- package/assets/editor/assets/useControlled-BE8zdmih.js +1 -0
- package/assets/editor/assets/usePositioner-AtbrPc7w.js +1 -0
- package/assets/editor/assets/useScrollLock-CQpr0n6U.js +1 -0
- package/assets/editor/assets/useValueChanged-SqLfIDi5.js +1 -0
- package/assets/editor/assets/web-controls-CLE9zr7i.js +1 -0
- package/assets/editor/assets/web-embed-dialog-XUNelFFM.js +1 -0
- package/assets/editor/assets/web-html-dialog-BcAyzH5D.js +1 -0
- package/assets/editor/assets/web-shape-C941TGTy.js +1 -0
- package/assets/editor/assets/widget-source-CHujvUeA.js +1 -0
- package/assets/editor/index.html +73 -69
- package/dist/koboyo.js +258 -214
- package/package.json +5 -5
- package/skills/koboyo/SKILL.md +22 -2
- package/skills/koboyo/references/architecture.md +1 -1
- package/skills/koboyo/references/bpmn.md +1 -1
- package/skills/koboyo/references/chart.md +1 -1
- package/skills/koboyo/references/cycle.md +1 -1
- package/skills/koboyo/references/erd.md +1 -1
- package/skills/koboyo/references/flowchart.md +1 -1
- package/skills/koboyo/references/funnel.md +1 -1
- package/skills/koboyo/references/gantt.md +1 -1
- package/skills/koboyo/references/gitgraph.md +1 -1
- package/skills/koboyo/references/journey.md +1 -1
- package/skills/koboyo/references/matrix.md +1 -1
- package/skills/koboyo/references/mindmap.md +1 -1
- package/skills/koboyo/references/orgchart.md +1 -1
- package/skills/koboyo/references/pyramid.md +1 -1
- package/skills/koboyo/references/sankey.md +1 -1
- package/skills/koboyo/references/sequence.md +1 -1
- package/skills/koboyo/references/statemachine.md +1 -1
- package/skills/koboyo/references/timeline.md +1 -1
- package/skills/koboyo/references/venn.md +1 -1
- package/skills/koboyo/references/wireframe.md +1 -1
- package/assets/editor/assets/DialogDescription-ZtZCUsfy.js +0 -1
- package/assets/editor/assets/DialogRoot-mHGRFW9m.js +0 -1
- package/assets/editor/assets/DialogTitle-CFhr-gP9.js +0 -1
- package/assets/editor/assets/FloatingPortalLite-Bf0q6fmL.js +0 -1
- package/assets/editor/assets/IconArrowBackUp-Brd2WpCh.js +0 -1
- package/assets/editor/assets/IconChevronLeft-BR0iwdRI.js +0 -1
- package/assets/editor/assets/IconChevronRight-DBDnxPYT.js +0 -1
- package/assets/editor/assets/IconHelp-DKNacRqS.js +0 -2
- package/assets/editor/assets/IconLoader2-BQaF1LKo.js +0 -1
- package/assets/editor/assets/IconMinus-y4ejub-s.js +0 -1
- package/assets/editor/assets/IconNote-CSELvWzx.js +0 -1
- package/assets/editor/assets/IconPlus-BbmieIBT.js +0 -1
- package/assets/editor/assets/IconX-AlbPkO_g.js +0 -1
- package/assets/editor/assets/MenuSubmenuTrigger-CpN67g09.js +0 -1
- package/assets/editor/assets/PopoverPopup-BqGWd_uB.js +0 -1
- package/assets/editor/assets/billing-C-BNGM3Z.js +0 -1
- package/assets/editor/assets/build-pips-CIaHaEPB.js +0 -1
- package/assets/editor/assets/build-visibility-E1mHeDCW.js +0 -1
- package/assets/editor/assets/builders-DbF28yId.js +0 -1
- package/assets/editor/assets/command-palette-BjFnQHnz.js +0 -1
- package/assets/editor/assets/config-a_lz-57R.js +0 -1
- package/assets/editor/assets/connector-labels-vVnYQJRz.js +0 -2
- package/assets/editor/assets/copy-image-dialog-CCY_6fM4.js +0 -1
- package/assets/editor/assets/createReactComponent-9UsI5fmM.js +0 -1
- package/assets/editor/assets/dialog-B32krrce.js +0 -1
- package/assets/editor/assets/editor-B0tARd79.js +0 -1
- package/assets/editor/assets/export-DEFKKRRi.js +0 -6
- package/assets/editor/assets/export-dialog-DPg1uzX5.js +0 -1
- package/assets/editor/assets/flow-layer-BC35drcK.js +0 -1
- package/assets/editor/assets/flow-panel-D_K9wgZi.js +0 -1
- package/assets/editor/assets/flow-stage-fiF5Nggn.js +0 -1
- package/assets/editor/assets/flow-start-ccYJ2KB9.js +0 -1
- package/assets/editor/assets/frames-CRP8oPP8.js +0 -1
- package/assets/editor/assets/icon-picker-NboB5Fvv.js +0 -1
- package/assets/editor/assets/image-library-Bb6bV6eK.js +0 -1
- package/assets/editor/assets/index-DfNbwHl_.js +0 -24
- package/assets/editor/assets/layout-offthread-BwetpTFH.js +0 -18
- package/assets/editor/assets/menu-BPrc8Ara.js +0 -1
- package/assets/editor/assets/panel-controls-DYZ7QFT5.js +0 -1
- package/assets/editor/assets/presentation-BavfNtxp.js +0 -1
- package/assets/editor/assets/presenter-keys-DVQcBdy1.js +0 -1
- package/assets/editor/assets/reflow-Cv75wPSh.js +0 -1
- package/assets/editor/assets/registry-DCgwH8wI.js +0 -1
- package/assets/editor/assets/renderer-environment-DmWXvuT4.js +0 -1
- package/assets/editor/assets/ride-overlay-DhygYdx1.js +0 -1
- package/assets/editor/assets/selection-overlay-primitives-hWJ1xjF7.js +0 -1
- package/assets/editor/assets/shape-meta-BpwsiB82.js +0 -1
- package/assets/editor/assets/sign-in-dialog-DRooo5xw.js +0 -1
- package/assets/editor/assets/slide-notes-dialog-DLdTmd7_.js +0 -1
- package/assets/editor/assets/slides-D9bnXqtf.js +0 -15
- package/assets/editor/assets/slides-panel-DV-zQJhV.js +0 -26
- package/assets/editor/assets/text-breaks-YU-ymaF9.js +0 -7
- package/assets/editor/assets/tidy-browser-BwodBnAH.js +0 -1
- package/assets/editor/assets/tidy-scope-BgBSUklT.js +0 -1
- package/assets/editor/assets/toast-Nu_fiCd9.js +0 -1
- package/assets/editor/assets/tool-catalog-ChSwaLIq.js +0 -1
- package/assets/editor/assets/tool-drawer-CG7-cnML.js +0 -1
- package/assets/editor/assets/tooltip-DgEojto1.js +0 -1
- package/assets/editor/assets/tree-rq4RTGgw.js +0 -1
- package/assets/editor/assets/upgrade-dialog-DpZeaLDB.js +0 -1
- package/assets/editor/assets/use-drag-reorder-C3h4ZMoZ.js +0 -1
- package/assets/editor/assets/use-export-command-CPc7qug1.js +0 -2
- package/assets/editor/assets/use-grid-keyboard-nav-B88Qw-cQ.js +0 -0
- package/assets/editor/assets/use-icon-node-DJZFjABX.js +0 -1
- package/assets/editor/assets/use-recent-list-BEG0iBIm.js +0 -1
- package/assets/editor/assets/useAnchoredPopupScrollLock-BGKchwpi.js +0 -1
- package/assets/editor/assets/useBaseUiId-C0Zm5sUV.js +0 -1
- package/assets/editor/assets/useButton-D3eS7fh5.js +0 -1
- package/assets/editor/assets/useControlled-C5xhvPXX.js +0 -1
- package/assets/editor/assets/usePositioner-DA3aR0-T.js +0 -1
- package/assets/editor/assets/useScrollLock-B7mQdXyv.js +0 -1
- package/assets/editor/assets/useValueChanged-p8z-93L4.js +0 -1
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import{B as e,F as t,I as n,O as r,R as i,b as a,s as o}from"./style-BENGW2ZV.js";import{$n as s,An as c,Cn as l,Dn as u,En as d,Ft as f,Gn as p,It as m,Kn as h,Lt as g,Qn as _,Rn as v,Rt as y,Un as b,Vn as x,Vr as S,Yr as C,Zt as w,an as T,ar as ee,cr as E,fr as D,gr as O,hr as te,jn as k,lr as A,mr as j,or as M,pr as N,qn as P,rn as ne,sn as F,sr as re,un as ie,ur as ae,wn as oe}from"./slides-D9bnXqtf.js";import{i as se}from"./registry-DCgwH8wI.js";import{a as ce,m as le,p as ue,t as de}from"./text-breaks-YU-ymaF9.js";import{i as fe,r as I}from"./icon-sources-CZI1h18s.js";import{P as pe,a as me,b as he,c as ge,g as L,i as _e,l as ve,n as ye,o as be,s as xe,y as Se}from"./chart-Z4HQx-0h.js";import{c as Ce,i as we,s as Te,u as Ee}from"./frames-CRP8oPP8.js";import{n as De,t as Oe}from"./connector-labels-vVnYQJRz.js";var ke=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,Ae=(()=>{let e=new Int8Array(128).fill(-1);for(let t=0;t<64;t+=1)e[ke.charCodeAt(t)]=t;return e})();function je(e){let t=e.replace(/[\s=]+$/g,``).replace(/\s+/g,``),n=``,r=0,i=0;for(let e=0;e<t.length;e+=1){let a=t.charCodeAt(e),o=a<128?Ae[a]:-1;if(o<0)throw Error(`invalid base64`);i=i<<6|o,r+=6,r>=8&&(r-=8,n+=String.fromCharCode(i>>r&255))}return n}var R=`#ffffff`;function z(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`)}function B(e){return String(e).replace(/&/g,`&`).replace(/"/g,`"`).replace(/</g,`<`)}function Me(e){let t=Object.entries(e).filter(e=>e[1]!==void 0&&e[1]!==null&&e[1]!==``),n=t.filter(([e,t])=>e!==`style`&&typeof t==`string`&&t.includes(`var(--`));if(n.length===0)return t.map(([e,t])=>`${e}="${B(t)}"`).join(` `);let r=t.find(([e])=>e===`style`)?.[1],i=[...n.map(([e,t])=>`${e}:${t}`),...r?[r]:[]];return[...t.filter(e=>!n.includes(e)&&e[0]!==`style`),[`style`,i.join(`;`)]].map(([e,t])=>`${e}="${B(t)}"`).join(` `)}function V(e,t,n){let r=Me(t);return n===void 0?`<${e}${r?` `+r:``}/>`:`<${e}${r?` `+r:``}>${n}</${e}>`}function H(e,t){if(e)return`rotate(${e} ${t.x+t.width/2} ${t.y+t.height/2})`}function U(e,t,n){if(!t&&!n)return;let r=`scale(${t?-1:1} ${n?-1:1})`;return`translate(${e.x} ${e.y}) ${r} translate(${-e.x} ${-e.y})`}function W(e,t){let n=H(e.rotation??0,t),r=U({x:t.x+t.width/2,y:t.y+t.height/2},e.flipX,e.flipY);return r?n?`${n} ${r}`:r:n}var Ne=`'JetBrains Mono', ui-monospace, monospace`,Pe=.9,Fe=`#fde68a`;function G(e,t){let n=e.fontSize??t;return e.code?n*Pe:n}function K(e,t,n,r,i){let a=t.code?Ne:n,o=G(t,r),s=t.bold?700:i??400;return e.measure(t.text,o,a,s,t.italic)}var q=.55,Ie=1.4,Le=1.4;function Re(e,t){return(e.depth??0)*Le*t}function ze(e){return e.kind===`bullet`?`• `:e.kind===`number`?`${e.text} `:null}function Be(e,t,n,r,i,a){if(!e)return 0;let o=ze(e);return o===null?Ie*t:a.measure(o,t,n,r)+i*o.length}function Ve(e,t,n,r,i,a){let o=r*.8,s=e+r*.25,c=t+(n-o)/2,l=V(`rect`,{x:s,y:c,width:o,height:o,rx:r*.15,fill:i?a:`none`,stroke:a,"stroke-width":1.5});if(!i)return l;let u=V(`path`,{d:`M ${s+o*.24} ${c+o*.54} L ${s+o*.44} ${c+o*.72} L ${s+o*.78} ${c+o*.3}`,fill:`none`,stroke:`#ffffff`,"stroke-width":Math.max(1.5,o*.12),"stroke-linecap":`round`,"stroke-linejoin":`round`});return V(`g`,{opacity:q},l+u)}function He(e,t,n,r,i,a){return ce(e,t,e=>a.measure(e,n,r,i))}function Ue(e){let t=[];for(let n of e)for(let e of n.text.split(/(\s+)/).filter(e=>e.length>0)){let r=e.trim().length===0,i=t[t.length-1];if(i&&i.space===r&&!r){i.piece.push({run:n,text:e});continue}t.push({space:r,piece:[{run:n,text:e}]})}return t}function J(e,t,n){let r=[],i=0;for(let a of e){let e=Array.from(a.text),o=Math.max(t-i,0),s=Math.min(n-i,e.length);o<s&&r.push({run:a.run,text:e.slice(o,s).join(``)}),i+=e.length}return r}function We(e,t,n,r,i,a){let o=[];for(let s of e){let e=Be(s.marker,r,n,i,0,a),c=Math.max(r,t-e-Re(s,r)),l=[],u=0,d=!0,f=null,p=()=>{for(;l.length>0;){let e=l[l.length-1];if(e.text=e.text.replace(/\s+$/,``),e.text.length>0)break;l.pop()}o.push({runs:l,marker:d?s.marker:void 0,checked:s.checked,depth:s.depth}),d=!1,l=[],u=0,f=null},m=(e,t,n)=>{f===e&&l.length>0?l[l.length-1].text+=t:(l.push({...e,text:t}),f=e),u+=n},h=e=>e.reduce((e,t)=>e+K(a,{...t.run,text:t.text},n,r,i),0),g=(e,t)=>{for(let t of e)m(t.run,t.text,K(a,{...t.run,text:t.text},n,r,i));return t},_=e=>u+e<=c;for(let e of Ue(s.runs)){if(e.space){_(h(e.piece))?g(e.piece,0):p();continue}let t=h(e.piece);if(_(t)){g(e.piece,t);continue}if(l.length>0&&p(),t<=c){g(e.piece,t);continue}let n=e.piece.map(e=>e.text).join(``),r=[0,...de(n),Array.from(n).length];for(let t=0;t<r.length-1;t+=1){let n=J(e.piece,r[t],r[t+1]),i=h(n);if(_(i)){g(n,i);continue}if(l.length>0&&p(),i<=c){g(n,i);continue}let a=r[t+1]-r[t],o=0;for(let e=1;e<=a;e+=1){let t=J(n,o,e);e-o>1&&h(t)>c&&(g(J(n,o,e-1),0),p(),o=e-1)}g(J(n,o,a),0)}}p()}return o}function Ge(e){return e.fontSize*(e.lineHeight??1.2)}function Ke(e){return(e.letterSpacing??0)*e.fontSize}function qe(e,t,n,r,i){let a=e;t.background&&(a=V(`rect`,{x:t.x-n/2-10,y:t.y-r/2,width:n+20,height:r,rx:2,fill:i.theme.paint(e=>e.bg,R)})+a);let o=t.rotateCenter;if(!o)return a;let s=[t.rotation?`rotate(${t.rotation} ${o.x} ${o.y})`:void 0,U(o,t.flipX,t.flipY)].filter(Boolean).join(` `);return s?V(`g`,{transform:s},a):a}function Je(e,t,n){if(e)return t.fixedInk?e:n.theme.paint(t=>b(l(e),t),e)}function Y(e,t){if(u(e.text)&&d())return Ye(e,t);let n=r(e.fontFamily),i=e.maxWidth,a=k(e.text).split(`
|
|
2
|
-
`);i!==void 0&&(a=a.flatMap(r=>He(r,i,e.fontSize,e.fontFamily,n,t.text)));let o=e.ascent??O(e.fontSize,e.lineHeight??1.2),s=Ge(e),c=Ke(e),l=a.length*s,f=e.vAlign===`center`?e.y-l/2+o:e.vAlign===`bottom`?e.y-l+o:e.y+o,p=a.map((t,n)=>V(`tspan`,{x:e.x,y:f+n*s},z(t)||` `)).join(``);return qe(V(`text`,{"font-family":e.fontFamily,"font-size":e.fontSize,"font-weight":n,fill:e.color,"text-anchor":e.align,"white-space":`pre`,"letter-spacing":c||void 0},p),e,e.background?Math.max(...a.map(r=>t.text.measure(r,e.fontSize,e.fontFamily,n)+c*r.length)):0,l,t)}function Ye(e,t){let n=r(e.fontFamily),i=c(e.text);e.maxWidth!==void 0&&(i=We(i,e.maxWidth,e.fontFamily,e.fontSize,n,t.text));let o=e.lineHeight??1.2,s=e.letterSpacing??0,l=i.map(t=>Math.max(e.fontSize,...t.runs.map(t=>G(t,e.fontSize)))),u=l.map(e=>e*o),d=u.reduce((e,t)=>e+t,0),f=e.vAlign===`center`?e.y-d/2:e.vAlign===`bottom`?e.y-d:e.y,p=[],m=[],h=0,g=f;i.forEach((r,i)=>{let c=e.ascent?e.ascent/e.fontSize*l[i]:O(l[i],o),d=u[i],f=g,_=f+c;g+=d;let v=Be(r.marker,e.fontSize,e.fontFamily,n,s*e.fontSize,t.text),y=r.runs.map(t=>G(t,e.fontSize)),b=r.runs.map((r,i)=>K(t.text,r,e.fontFamily,e.fontSize,n)+s*y[i]*r.text.length),x=b.reduce((e,t)=>e+t,0),S=Re(r,e.fontSize),C=S+v+x;h=Math.max(h,C);let w=e.align===`middle`?e.x-C/2:e.align===`end`?e.x-C:e.x;if(w+=S,r.marker){let t=ze(r.marker);t===null?p.push(Ve(w,f,d,e.fontSize,r.checked,e.color)):m.push(V(`tspan`,{x:w,y:_},z(t))),w+=v}r.runs.forEach((n,i)=>{let o=b[i],c=y[i];n.highlight&&p.push(V(`rect`,{x:w,y:_-c*re,width:o,height:c*(re+E),rx:3,fill:Fe,opacity:r.checked?q:void 0}));let l=[n.href||n.underline?`underline`:``,n.strike?`line-through`:``].filter(Boolean).join(` `);m.push(V(`tspan`,{x:w,y:_,"font-style":n.italic?`italic`:void 0,"font-weight":n.bold?700:void 0,"font-family":n.code?Ne:void 0,"font-size":c===e.fontSize?void 0:c,"letter-spacing":s?s*c:void 0,fill:n.href?a:Je(n.color,e,t),"fill-opacity":r.checked?q:void 0,"text-decoration":l||void 0},z(n.text)||` `)),w+=o})});let _=V(`text`,{"font-family":e.fontFamily,"font-size":e.fontSize,"font-weight":n,fill:e.color,"text-anchor":`start`,"white-space":`pre`},m.join(``));return qe(p.join(``)+_,e,h,d,t)}function Xe(e){return`light`in e&&`dark`in e}function Ze(){return{paint:(e,t)=>t,css:()=>``,rootClass:void 0}}function Qe(e){return{paint:t=>t(e),css:()=>``,rootClass:void 0}}var X=`koboyo-adaptive`;function $e(e){if(t(e.light.bg,1)<.5||t(e.dark.bg,0)>=.5)throw Error(`an adaptive export needs a light palette and a dark one, in that order`);let n=new Map;return{paint(t){let r=t(e.light),i=t(e.dark);return r===i?r:`var(${et(n,r,i)})`},css(){if(n.size===0)return``;let e=e=>[...n].map(([t,n])=>`${t}:${n[e]}`).join(`;`);return`.${X}{${e(0)}}@media (prefers-color-scheme: dark){.${X}{${e(1)}}}`},rootClass:X}}function et(e,t,n){let r=`--kb-${tt(`${t}|${n}`)}`,i=r;for(let a=1;;a+=1){let o=e.get(i);if(!o)return e.set(i,[t,n]),i;if(o[0]===t&&o[1]===n)return i;i=`${r}-${a}`}}function tt(e){let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(36)}function nt(e,t){let r=n(e);return rt(e)?t.theme.paint(e=>b(r,e),r):r}function rt(e){return e.fill===`transparent`||e.fill===`#ffffff`||i(e)!==null}function it(e,t){if(!e.label)return``;let n=T(e),r=j(e.kind,n.width,n.height,{x:e.flipX,y:e.flipY}),i={x:n.x+r.left,y:n.y+r.top,width:n.width-r.left-r.right,height:n.height-r.top-r.bottom},a=nt(e,t),o=e.textAlign??`center`,s=e.textVAlign??`middle`,c=e.textPadding??6,l=e.fontSize??20,u=e.titleIcon?.placement===`inside`?N(l)+D(l):0;return Y({text:e.label,fontSize:l,fontFamily:e.fontFamily,color:a,fixedInk:!rt(e),lineHeight:e.lineHeight??1.25,letterSpacing:e.letterSpacing,x:o===`left`?i.x+c+u:o===`right`?i.x+i.width-c:i.x+i.width/2+u/2,y:s===`top`?i.y+c:s===`bottom`?i.y+i.height-c:i.y+i.height/2,align:o===`left`?`start`:o===`right`?`end`:`middle`,vAlign:s===`top`?`top`:s===`bottom`?`bottom`:`center`,maxWidth:i.width-c*2-u,rotation:e.rotation,rotateCenter:{x:i.x+i.width/2,y:i.y+i.height/2}},t)}var at=15;function ot(e){return e.titleIcon?19:0}function st(e,t){let n=e.titleIcon;if(!n||!e.label)return``;let r=T(e),i=r.x,a=r.y-M-14*1.2+O(14,1.2)-14*.35-at/2;return $({source:n.source,name:n.name,srcMap:t.srcMap,icons:t.icons,x:i,y:a,size:at,stroke:t.theme.paint(t=>b(e.color,t),e.color)})}function ct(e,t){if(!e.label)return``;let n=T(e);return st(e,t)+Y({text:e.label,fontSize:14,fontFamily:e.fontFamily,color:t.theme.paint(t=>b(e.color,t),e.color),x:n.x+ot(e),y:n.y-M,align:`start`,vAlign:`bottom`},t)}function lt(e,t){let n=e.lanes??[];if(!Te(e.kind)||n.length===0)return``;let r=Ee(e.kind),i=T(e),a=Ce(n.length,r?i.width:i.height,e.laneSizes),o=t.theme.paint(t=>b(e.color,t),e.color),s=n.map((n,s)=>{if(!n)return``;let c=(a[s]+a[s+1])/2,l=r?i.x+c:i.x+30/2,u=r?i.y+30/2:i.y+c;return Y({text:n,fontSize:14,fontFamily:e.fontFamily,color:o,x:l,y:u,align:`middle`,vAlign:`center`,lineHeight:1,rotation:r?void 0:-90,rotateCenter:r?void 0:{x:l,y:u}},t)}).join(``);return V(`g`,{opacity:we},s)}function ut(e,t){if(!e.label)return null;let n=T(e),i=r(e.fontFamily),a=k(e.label).split(`
|
|
3
|
-
`),o=a.length*14*1.2,s=ot(e)+Math.max(...a.map(n=>t.measure(n,14,e.fontFamily,i))),c=n.y-M-o;return{x:n.x,y:c,width:s,height:n.y-c}}function dt(e,t,n,r,i){let a=r.color===`transparent`?v:r.color,s=i.theme.paint(e=>b(a,e),a);return Y({text:e,fontSize:n,fontFamily:r.fontFamily??o,color:s,lineHeight:ae,x:t.x,y:t.y,align:`middle`,vAlign:`center`,background:!0},i)}function ft(e,t,n){let r=e.label??``;return r?dt(r,t,e.fontSize??20,e,n):``}function pt(e,t){let n=``;for(let r of Oe(e))n+=dt(r.text,r.point,14,e,t);return n}function mt(e,t){if(!e.label)return``;let n=T(e),r=n.x+n.width/2,i=e.fontSize??36,a=ne(i),o=e.color===`transparent`?v:e.color;return Y({text:e.label,fontSize:i,fontFamily:e.fontFamily,color:t.theme.paint(e=>b(o,e),o),lineHeight:A,x:r,y:n.y+n.height+a,align:`middle`,vAlign:`top`,rotation:e.rotation,rotateCenter:{x:r,y:n.y+n.height/2}},t)}function ht(e,t){if(!e.text)return``;let n=T(e,t.measurement),i=e.textAlign??`left`,a=e.textVAlign??`top`,o=r(e.fontFamily),s=(e.letterSpacing??0)*e.fontSize,c=e.width??Math.max(...k(e.text).split(`
|
|
4
|
-
`).map(n=>t.text.measure(n,e.fontSize,e.fontFamily,o)+s*n.length));return Y({text:e.text,fontSize:e.fontSize,fontFamily:e.fontFamily,color:t.theme.paint(t=>b(e.color,t),e.color),lineHeight:e.lineHeight??1.15,letterSpacing:e.letterSpacing,x:i===`center`?e.x+c/2:i===`right`?e.x+c:e.x,y:e.height==null||a===`top`?e.y:a===`bottom`?e.y+n.height:e.y+n.height/2,align:i===`center`?`middle`:i===`right`?`end`:`start`,vAlign:e.height==null||a===`top`?`top`:a===`bottom`?`bottom`:`center`,maxWidth:e.width,ascent:O(e.fontSize,e.lineHeight??1.15),rotation:e.rotation,rotateCenter:{x:n.x+n.width/2,y:n.y+n.height/2},flipX:e.flipX,flipY:e.flipY},t)}function Z(e,t,n,r){let i={};for(let[a,o]of Object.entries(e))i[a]=typeof o==`string`?n.paint(e=>s(a,o,t,t=>b(t,e),t=>h(t,e),r?p(r,e):void 0),o):o;return i}function Q(e,t,n=`keep`,r){return e.filter(e=>e!==null).map(e=>V(e.tag,Z(e.attrs,n,t,r))).join(``)}function gt(e,t){let n=T(e),r=ge(e),a={x:0,y:0,width:n.width,height:n.height},o=`translate(${n.x} ${n.y})`,s=H(e.rotation??0,a),c=e.fill===`#ffffff`?`paper`:`keep`,l=i(e)??void 0;return V(`g`,{transform:s?`${o} ${s}`:o},Q([r.shadow],t.theme)+Q([r.fill],t.theme,c,l)+Q(r.strokes,t.theme,`keep`,l))}function _t(e){let t=T(e),n=ve(e),r={x:0,y:0,width:t.width,height:t.height},i=`translate(${t.x} ${t.y})`,a=H(F(e),r);return V(`g`,{transform:a?`${i} ${a}`:i},Q([n.shadow,n.card],Ze()))}function vt(t,n){if(!t.text)return``;let r=T(t),i=t.fill===`transparent`?n.theme.paint(e=>b(v,e),e(t.fill)):e(t.fill);return Y({text:t.text,fontSize:t.fontSize,fontFamily:t.fontFamily,color:i,fixedInk:t.fill!==`transparent`,lineHeight:t.lineHeight??1.25,letterSpacing:t.letterSpacing,x:r.x+r.width/2,y:r.y+r.height/2,align:`middle`,vAlign:`center`,maxWidth:r.width-28,rotation:t.rotation,rotateCenter:{x:r.x+r.width/2,y:r.y+r.height/2}},n)}function yt(e,t){let n=T(e),r=be(e);return V(`g`,{transform:H(F(e),n)},Q([r.outline],t.theme,`paper`)+Q(r.chrome,t.theme))}function bt(e,t){let n=_e(e);return Q(n.strokes,t.theme)+Q(n.heads,t.theme,`ink`)}function xt(e,t){let n=me(e),r=Z(n.attrs,`ink`,t.theme),i=e.highlighter?{style:`mix-blend-mode:${t.theme.paint(x,x())}`}:void 0;return V(n.tag,{...r,opacity:e.opacity,...i})}function St(e,t){return V(`path`,{...Z({d:xe(e.points,e.smooth),fill:e.fill,stroke:e.color},`ink`,t.theme),"stroke-width":e.strokeWidth})}function Ct(e,t){let n=T(e),{x:r,y:i,width:a,height:o}=g(n,e.crop),s=`imgclip-${e.id}`,c=t.srcMap.get(e.src)??e.src,l=V(`clipPath`,{id:s},V(`rect`,{x:n.x,y:n.y,width:n.width,height:n.height,rx:m(e.corner,n)})),u=V(`image`,{href:c,x:r,y:i,width:a,height:o,preserveAspectRatio:`none`,"clip-path":`url(#${s})`});return V(`g`,{transform:W(e,n)},l+u)}function wt(e,t){let n=t.cachedNode(e);return n?n.map(([e,t])=>V(e,t)).join(``):``}function Tt(e){let t=/^data:image\/svg\+xml(;base64)?,([\s\S]*)$/.exec(e.dataUrl);if(!t)return null;let n;try{n=t[1]?je(t[2]):decodeURIComponent(t[2])}catch{return null}let r=/<svg\b[^>]*>/i.exec(n),i=n.lastIndexOf(`</svg>`);if(!r||i<0)return null;let a=/viewBox="([^"]*)"/i.exec(r[0])?.[1];if(!a)return null;let o={x:e.x,y:e.y,width:e.size,height:e.height,viewBox:a,fill:`currentColor`,color:e.ink},s=a.trim().split(/[\s,]+/).map(Number),[,,c,l]=s,u=s.length===4&&c>0&&l>0?Math.min(e.size/c,e.height/l):1,d=(e.weight??0)/u,f=n.slice(r.index+r[0].length,i);if(d>0)o.overflow=`visible`,o.stroke=`currentColor`,o[`stroke-width`]=d,o[`stroke-linejoin`]=`round`,o[`stroke-linecap`]=`round`;else if(d<0&&e.weightId){let t=`mono-erode-${e.weightId}`;f=V(`filter`,{id:t},V(`feMorphology`,{operator:`erode`,radius:-d/4}))+V(`g`,{filter:`url(#${t})`},f)}return V(`svg`,o,f)}function $(e){let{source:t,name:n,srcMap:r,icons:i,x:a,y:o,size:s,height:c=e.size,stroke:l,strokeWidth:u=2,weight:d,weightId:f}=e;if(I(t)){let e=i.assetIconUrl(t,n),u=r.get(e);if(u&&fe(t)){let e=Tt({dataUrl:u,x:a,y:o,size:s,height:c,ink:l,weight:d,weightId:f});if(e)return e}return V(`image`,{href:u??e,x:a,y:o,width:s,height:c})}return V(`g`,{transform:`translate(${a} ${o}) scale(${s/24})`,fill:`none`,stroke:l,"stroke-width":u,"stroke-linecap":`round`,"stroke-linejoin":`round`},wt(n,i))}function Et(e,t,n){let r=T(t),i=te(t.kind,r.width,r.height,{x:t.flipX,y:t.flipY}),a=r.x+i.x-28/2,o=r.y+i.y-28/2,s=V(`rect`,{x:a,y:o,width:28,height:28,rx:6,fill:`#ffffff`,stroke:t.color,"stroke-width":1.5}),c=$({source:e.source,name:e.name,srcMap:n.srcMap,icons:n.icons,x:a+5,y:o+5,size:18,stroke:t.color});return V(`g`,{transform:H(t.rotation??0,r)},s+c)}function Dt(e,t,n){let i=T(t),a=t.fontSize??20,o=N(a),s=D(a),c=t.textPadding??6,l=t.textAlign??`center`,u=t.textVAlign??`middle`,d=r(t.fontFamily),f=k(t.label).split(`
|
|
5
|
-
`),p=j(t.kind,i.width,i.height,{x:t.flipX,y:t.flipY}),m=Math.max(a,i.width-p.left-p.right-c*2-o-s),h=f.map(e=>n.text.measure(e,a,t.fontFamily,d)),g=Math.min(m,Math.max(0,...h)),_=h.reduce((e,t)=>e+Math.max(1,Math.ceil(t/m)),0)*(a*(t.lineHeight??1.25)),v=u===`top`?i.y+c:u===`bottom`?i.y+i.height-c-_:i.y+i.height/2-_/2,y=o+s+g,b=l===`left`?i.x+c:l===`right`?i.x+i.width-c-y:i.x+i.width/2-y/2,x=v+O(a,t.lineHeight??1.25)-a*.3-o/2,S=nt(t,n),C=$({source:e.source,name:e.name,srcMap:n.srcMap,icons:n.icons,x:b,y:x,size:o,stroke:S});return V(`g`,{transform:H(t.rotation??0,i)},C)}function Ot(e,t){let n=T(e),r=n.width/24,i=$({source:e.source,name:e.name,srcMap:t.srcMap,icons:t.icons,x:n.x,y:n.y,size:n.width,height:n.height,stroke:t.theme.paint(t=>b(e.color,t),e.color),strokeWidth:r>0?f(e.strokeWidth,n.width)/r:e.strokeWidth,weight:y(e.strokeWidth,n.width),weightId:e.id});return V(`g`,{transform:W(e,n)},i)}function kt(e,t){let n=pe(e),r=V(`rect`,{x:n.frame.x,y:n.frame.y,width:n.frame.width,height:n.frame.height,fill:t.theme.paint(e=>P(`#ffffff`,e),`#ffffff`),stroke:L,"stroke-width":1});for(let e of n.cellFills)r+=V(`rect`,{x:e.rect.x,y:e.rect.y,width:e.rect.width,height:e.rect.height,fill:t.theme.paint(t=>P(e.fill,t),e.fill)});for(let e of n.dividers)r+=V(`line`,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,stroke:L,"stroke-width":1});for(let n=0;n<e.cells.length;n+=1)for(let i=0;i<e.cells[n].length;i+=1){let a=e.cells[n][i];if(!a)continue;let o=Se(e,n,i),s=he(e,n,i);r+=Y({text:a,fontSize:s.fontSize,fontFamily:s.fontFamily,color:t.theme.paint(e=>b(s.color,e),s.color),x:o.x+8,y:o.y+o.height/2,align:`start`,vAlign:`center`,maxWidth:Math.max(1,o.width-16),lineHeight:A},t)}return r}function At(e,t){let n=e=>e===void 0?void 0:t.paint(t=>_(e,t),_(e));return e.kind===`rect`?V(`rect`,{x:e.x,y:e.y,width:e.width,height:Math.max(0,e.height),rx:e.rx,fill:n(e.fill)}):e.kind===`line`?V(`line`,{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,stroke:n(e.stroke),"stroke-width":e.width}):e.kind===`polyline`?V(`polyline`,{points:e.points.map(e=>`${e.x},${e.y}`).join(` `),fill:`none`,stroke:n(e.stroke),"stroke-width":e.width,"stroke-linecap":`round`,"stroke-linejoin":`round`}):e.kind===`path`?V(`path`,{d:e.d,fill:n(e.fill)??`none`,"fill-opacity":e.fillOpacity,stroke:n(e.stroke)??`none`,"stroke-width":e.width}):e.kind===`circle`?V(`circle`,{cx:e.cx,cy:e.cy,r:e.r,fill:n(e.fill),stroke:n(e.stroke),"stroke-width":e.width}):V(`text`,{x:e.x,y:e.y,"font-family":e.family,"font-size":e.size,fill:n(e.color),"text-anchor":e.anchor,"dominant-baseline":e.baseline,transform:e.rotate?`rotate(${e.rotate} ${e.x} ${e.y})`:void 0},z(e.text))}function jt(e,t){let n=T(e),r=t.theme.paint(e=>P(R,e),R),i=V(`rect`,{x:n.x,y:n.y,width:n.width,height:n.height,rx:4,fill:r});for(let n of ye(e))n.testId!==`chart-empty`&&(i+=At(n,t.theme));return V(`g`,{transform:H(F(e),n)},i)}function Mt(e,t){let n=T(e),r=``;for(let n of se(e,t.text))r+=At(n,t.theme);return V(`g`,{transform:H(F(e),n)},r)}function Nt(e,t){let n=Pt(e,t);return!n||e.type===`draw`||!(e.opacity<1)?n:V(`g`,{opacity:e.opacity},n)}function Pt(e,t){switch(e.type){case`rectangle`:return gt(e,t)+it(e,t)+(e.titleIcon?e.titleIcon.placement===`inside`?Dt(e.titleIcon,e,t):Et(e.titleIcon,e,t):``);case`sticky`:return _t(e)+vt(e,t);case`figure`:return yt(e,t)+lt(e,t)+ct(e,t);case`arrow`:return bt(e,t)+ft(e,C(e),t)+pt(e,t);case`line`:return bt(e,t)+ft(e,S(e.points,e.labelAlong),t);case`draw`:return xt(e,t);case`polygon`:return St(e,t);case`image`:return Ct(e,t);case`icon`:return Ot(e,t)+mt(e,t);case`text`:return ht(e,t);case`table`:return kt(e,t);case`chart`:return jt(e,t);case`control`:return Mt(e,t);default:return ie(e)}}async function Ft(e,t,n){let r=new Set;for(let n of e)n.type===`image`&&!n.src.startsWith(`data:`)&&r.add(n.src),n.type===`icon`&&I(n.source)&&r.add(t.assetIconUrl(n.source,n.name)),(n.type===`rectangle`||n.type===`figure`)&&n.titleIcon&&I(n.titleIcon.source)&&r.add(t.assetIconUrl(n.titleIcon.source,n.titleIcon.name));let i=new Map;return await Promise.all([...r].map(async e=>{let t=await n.inline(e);if(t){i.set(e,t);return}le(`asset-inline`,Error(`asset was not inlined`),e)})),i}function It(e){let t=e.filter(e=>e.type===`figure`),n=e.filter(e=>e.type!==`figure`);return[...t,...n]}function Lt(e){return e?Xe(e)?$e(e):Qe(e):Ze()}async function Rt(e,t,n={}){await oe();let r=n.padding??16,i=n.bounds??w(e,n.measurement);if(!i)return V(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:1,height:1});let a=i.x,o=i.y,s=i.x+i.width,c=i.y+i.height;if(!n.bounds)for(let n of e){let e=[];if(n.type===`figure`){let r=ut(n,t.text);r&&e.push(r)}else(n.type===`arrow`||n.type===`line`)&&e.push(...De(n,t.text));for(let t of e)a=Math.min(a,t.x),o=Math.min(o,t.y),s=Math.max(s,t.x+t.width),c=Math.max(c,t.y+t.height)}let l={x:a,y:o,width:s-a,height:c-o};await t.text.prepare(n.fonts);let[,u,d]=await Promise.all([t.icons.ensureCatalog().catch(e=>{le(`icon-catalog`,e)}),n.embedFonts===!1?Promise.resolve(``):t.fonts.embed(ue(e),n.fonts),Ft(e,t.icons,t.assets)]),f=l.x-r,p=l.y-r,m=Math.max(1,Math.round(l.width+r*2)),h=Math.max(1,Math.round(l.height+r*2)),g=Lt(n.palette),_={text:t.text,icons:t.icons,srcMap:d,theme:g,measurement:n.measurement},v=It(e).map(e=>{let t=Nt(e,_),n=e.type===`rectangle`||e.type===`control`?ee(e.link):void 0;return n?V(`a`,{href:n,target:`_blank`,rel:`noopener`},t):t}).join(``),y=n.palette!==void 0&&Xe(n.palette),b=n.background??(y?g.paint(e=>e.bg,`#ffffff`):`#ffffff`),x=b===`transparent`?``:V(`rect`,{x:0,y:0,width:m,height:h,fill:b}),S=[u,g.css()].filter(Boolean).join(`
|
|
6
|
-
`),C=S?V(`defs`,{},V(`style`,{type:`text/css`},`\n${S}\n`)):``,T=V(`g`,{transform:`translate(${-f} ${-p})`},v),E=n.width?{width:n.width,height:Math.max(1,Math.round(h*n.width/m))}:{width:m,height:h},D=n.title?V(`title`,{},z(n.title)):``;return V(`svg`,{xmlns:`http://www.w3.org/2000/svg`,"xmlns:xlink":`http://www.w3.org/1999/xlink`,class:g.rootClass,role:n.title?`img`:void 0,"aria-label":n.title,width:E.width,height:E.height,viewBox:`0 0 ${m} ${h}`},D+C+x+T)}function zt(e){return`data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}`}export{Rt as n,zt as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-2Zwg-L3c.js";import{i as r}from"./config-a_lz-57R.js";import{a as i,i as a,o,s}from"./editor-B0tARd79.js";import{g as c,i as l,o as u}from"./slides-D9bnXqtf.js";import{c as d,i as f,n as p,o as m,r as h,s as g,t as ee}from"./export-options-CJwykdP5.js";import{t as _}from"./IconX-AlbPkO_g.js";import{t as te}from"./use-export-command-CPc7qug1.js";import{n as v}from"./surface-Dke4SWpE.js";import{i as y,n as b,r as x,t as S}from"./DialogRoot-mHGRFW9m.js";import{n as C,t as w}from"./DialogTitle-CFhr-gP9.js";import{t as T}from"./dialog-B32krrce.js";var E=e(t(),1),D=n(),O=`flex h-7 items-center rounded-lg px-2.5 text-[12px] outline-none transition-colors disabled:cursor-not-allowed disabled:text-[var(--chrome-fg-300)]`,k=`bg-[var(--chrome-active)] text-[var(--chrome-fg-900)]`,A=`text-[var(--chrome-fg-500)] hover:bg-[var(--chrome-hover)]`,ne=[{id:`png`,label:`PNG`},{id:`svg`,label:`SVG`},{id:`pdf`,label:`PDF`}];function j(e){let{request:t,onClose:n}=e,O=s(),k=i(),{canvasMeta:A}=r(),j=te(),P=o(e=>e.selectedIds.size),F=a(e=>[e.shapes],e=>u(l(e)).length),I=A?.name,[L,R]=(0,E.useState)(m),[z]=(0,E.useState)(()=>f(t,L,{hasSelection:P>0,hasSlides:F>0})),[B,V]=(0,E.useState)(z.format),[H,U]=(0,E.useState)(z.scope),[W,G]=(0,E.useState)(()=>h(I,z.format)),[K,q]=(0,E.useState)(!1),[J,Y]=(0,E.useState)(!1),X=(0,E.useRef)(!0);(0,E.useEffect)(()=>(X.current=!0,()=>{X.current=!1}),[]);let Z=B===`pdf`,Q=P>0?H:`board`;function $(e,t){R(n=>({...n,[e]:t}))}function re(e){V(e),K||G(h(I,e))}async function ie(e){if(e.preventDefault(),J)return;g(Z?L:{...L,format:B}),Y(!0);let t=h(W,B),{shapes:r,selectedIds:i}=O.getState(),a=Q===`board`?r:c(r,d(r,i),k.measurement),o=Z?await j(`downloadPdf`,r,{options:{pageSize:L.pageSize},filename:t}):await j(B===`png`?`downloadPng`:`downloadSvg`,a,{options:{scale:B===`png`?L.scale:void 0,transparent:L.transparent,theme:L.theme},filename:t});X.current&&(Y(!1),o&&n())}return(0,D.jsx)(S,{open:!0,onOpenChange:e=>{e||n()},children:(0,D.jsxs)(b,{children:[(0,D.jsx)(y,{className:v.dialogBackdrop}),(0,D.jsxs)(x,{"data-overlay":!0,"data-testid":`export-dialog`,className:`w-[min(420px,92vw)] p-5 ${v.dialogPopup}`,children:[(0,D.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,D.jsx)(w,{className:T.title,children:`Export`}),(0,D.jsx)(C,{"aria-label":`Close`,"data-testid":`export-close`,className:`-mr-1.5 -mt-1.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-lg text-[var(--chrome-fg-500)] outline-none transition-colors hover:bg-[var(--chrome-hover)]`,children:(0,D.jsx)(_,{size:16,stroke:2})})]}),(0,D.jsxs)(`form`,{className:`mt-4 flex flex-col gap-3`,onSubmit:e=>void ie(e),children:[(0,D.jsx)(M,{label:`Format`,children:(0,D.jsx)(N,{label:`Format`,testId:`export-format`,value:B,options:ne.map(e=>({...e,disabled:e.id===`pdf`&&F===0})),onChange:re})}),Z?(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(M,{label:`Page size`,children:(0,D.jsx)(N,{label:`Page size`,testId:`export-page`,value:L.pageSize,options:p,onChange:e=>$(`pageSize`,e)})}),(0,D.jsxs)(`p`,{"data-testid":`export-pdf-summary`,className:`text-[12px] leading-relaxed text-[var(--chrome-fg-400)]`,children:[F===1?`One slide`:`${F} slides`,`, one page each. Skipped slides are left out.`]})]}):(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(M,{label:`Export`,children:(0,D.jsx)(N,{label:`Export`,testId:`export-scope`,value:Q,options:[{id:`selection`,label:P>0?`Selection (${P})`:`Selection`,disabled:P===0},{id:`board`,label:`Whole board`}],onChange:U})}),B===`png`&&(0,D.jsx)(M,{label:`Scale`,children:(0,D.jsx)(N,{label:`Scale`,testId:`export-scale`,value:L.scale,options:ee.map(e=>({id:e,label:`${e}×`})),onChange:e=>$(`scale`,e)})}),(0,D.jsx)(M,{label:`Background`,children:(0,D.jsx)(N,{label:`Background`,testId:`export-background`,value:L.transparent?`transparent`:`solid`,options:[{id:`solid`,label:`Solid`},{id:`transparent`,label:`Transparent`}],onChange:e=>$(`transparent`,e===`transparent`)})}),(0,D.jsx)(M,{label:`Theme`,children:(0,D.jsx)(N,{label:`Theme`,testId:`export-theme`,value:L.theme,options:[{id:`light`,label:`Light`},{id:`dark`,label:`Dark`}],onChange:e=>$(`theme`,e)})})]}),(0,D.jsxs)(`label`,{className:`mt-1 flex flex-col gap-1.5`,children:[(0,D.jsx)(`span`,{className:T.label,children:`File name`}),(0,D.jsxs)(`div`,{className:`relative`,children:[(0,D.jsx)(`input`,{"data-testid":`export-filename`,className:`${T.field} pr-12`,value:W,maxLength:120,placeholder:h(null,B),onChange:e=>{G(e.target.value),q(!0)}}),(0,D.jsxs)(`span`,{className:`pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-[13px] text-[var(--chrome-fg-400)]`,children:[`.`,B]})]})]}),(0,D.jsxs)(`div`,{className:`mt-2 ${T.actions}`,children:[(0,D.jsx)(C,{className:T.cancelButton,children:`Cancel`}),(0,D.jsx)(`button`,{type:`submit`,"data-testid":`export-submit`,"data-busy":J?`true`:`false`,disabled:J,className:T.submitButton,children:J?`Exporting…`:`Export`})]})]})]})]})})}function M(e){let{label:t,children:n}=e;return(0,D.jsxs)(`div`,{className:`flex min-h-8 items-center justify-between gap-3`,children:[(0,D.jsx)(`span`,{className:T.label,children:t}),n]})}function N(e){let{label:t,testId:n,value:r,options:i,onChange:a}=e;return(0,D.jsx)(`div`,{className:`flex items-center gap-1`,role:`radiogroup`,"aria-label":t,children:i.map(e=>(0,D.jsx)(`button`,{type:`button`,role:`radio`,"aria-checked":r===e.id,"data-testid":`${n}-${String(e.id).replace(`:`,`-`)}`,disabled:e.disabled,onClick:()=>a(e.id),className:`${O} ${r===e.id?k:A}`,children:e.label},e.id))})}export{j as ExportDialog};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-2Zwg-L3c.js";import{a as r,o as i}from"./editor-B0tARd79.js";import{S as a,Yr as o,Zt as s,an as c,w as l,x as u}from"./slides-D9bnXqtf.js";import{r as d,t as f}from"./dom-PAoZruqo.js";import{t as p}from"./editable-target-BTLnvKNi.js";import{n as m,t as h}from"./IconArrowBackUp-Brd2WpCh.js";import{t as g}from"./createReactComponent-9UsI5fmM.js";import{a as _,b as v,c as y,d as b,h as x,m as S,n as C,o as w,p as T,r as E,v as D}from"./tree-rq4RTGgw.js";import{t as O}from"./IconChevronLeft-BR0iwdRI.js";import{t as k}from"./IconChevronRight-DBDnxPYT.js";import{t as A}from"./IconFocusCentered-C5PcDeR0.js";import{t as j}from"./IconPencil-C5Y-Y4dC.js";import{t as M}from"./IconPlus-BbmieIBT.js";import{t as N}from"./IconX-AlbPkO_g.js";import{t as P}from"./IconPlayerPlayFilled-D4OODBX7.js";import{n as F}from"./core-CBnmD9hT.js";import{r as ee}from"./flow-start-ccYJ2KB9.js";import{r as I,t as L}from"./chrome-layout-B8YmHznO.js";import{c as R,i as z,l as B,n as V,o as te,s as H,t as ne}from"./flows-GGbkNqs8.js";import{a as U,i as W,n as G,o as K,r as q,t as re}from"./flow-stage-fiF5Nggn.js";var ie=g(`outline`,`rotate`,`Rotate`,[[`path`,{d:`M19.95 11a8 8 0 1 0 -.5 4m.5 5v-5h-5`,key:`svg-0`}]]),ae=g(`filled`,`player-pause-filled`,`PlayerPauseFilled`,[[`path`,{d:`M9 4h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h2a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2z`,key:`svg-0`}],[`path`,{d:`M17 4h-2a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h2a2 2 0 0 0 2 -2v-12a2 2 0 0 0 -2 -2z`,key:`svg-1`}]]),J=e(t(),1),Y=n(),X=10,Z=28,oe=.5,se=4,ce=24;function le(e){let{frame:t,flow:n,targets:a,viewport:o}=e,s=r(),d=i(e=>e.hoveredId),f=i(e=>e.flowEdit)??{},p=I()===`docked`,m=n.steps.length;(0,J.useEffect)(()=>{let{store:e,viewportAnimation:n}=s,r=e.getState(),i=document.querySelector(`[data-canvas-root]`),a={width:(i?.clientWidth??window.innerWidth)-(p?L(`flow`):0),height:i?.clientHeight??window.innerHeight},o=c(t),d=l({x:o.x,y:o.y-Z},r.viewport),f=l({x:o.x+o.width,y:o.y+o.height},r.viewport),m=d.x>=0&&d.y>=0&&f.x<=a.width&&f.y<=a.height,h=f.x-d.x>=a.width*oe||f.y-d.y>=a.height*oe;m&&h||n.animate(r.viewport,u(o,a,64),r.setViewport)},[t.id,s,p]);let h=(0,J.useRef)(m);h.current=m,(0,J.useEffect)(()=>{let e=e=>{if(e.button!==0)return;let r=e.target instanceof Element?e.target:null;if(!r?.closest(`[data-canvas-root]`)||r.closest(`[data-overlay]`))return;let i=r.closest(`[data-shape-id]`)?.getAttribute(`data-shape-id`)??r.closest(`[data-icon-label]`)?.getAttribute(`data-icon-label`),a=s.store.getState(),o=a.shapes.find(e=>e.id===t.id);if(!i||o?.type!==`figure`)return;let c=F(a.shapes,o).find(e=>e.id===i);if(!c)return;e.preventDefault(),e.stopPropagation(),ue();let l=S({selected:a.flowEdit?.picking},h.current);if(l!==null){b(s,t.id,n.id,l,c);return}if(a.flowEdit?.picking!=null&&a.patchFlowEdit({picking:null}),e.shiftKey){y(s,t.id,n.id,c);return}w(s,t.id,n.id,c)};return window.addEventListener(`pointerdown`,e,!0),()=>window.removeEventListener(`pointerdown`,e,!0)},[s,t.id,n.id]);let[g,_]=(0,J.useState)(!1);(0,J.useEffect)(()=>{let e=e=>_(e.shiftKey);return window.addEventListener(`keydown`,e),window.addEventListener(`keyup`,e),()=>{window.removeEventListener(`keydown`,e),window.removeEventListener(`keyup`,e)}},[]);let v=new Map(a.map(e=>[e.id,e])),C=d?v.get(d):void 0,E=x(f,m),D=S(f,m),O=S({selected:f.picking},m),k=T(f,m),A=S({selected:f.hovered},m),j=V(t.flows??[],n.id),M=j?.flow.steps[j.index],N=n.steps[E-1]?.target;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(fe,{frame:t,viewport:o}),M&&R(M).flatMap(e=>{let t=v.get(e);return t?[(0,Y.jsx)(ye,{shape:t,viewport:o},e)]:[]}),A!==null&&R(n.steps[A]).flatMap(e=>{let t=v.get(e);return t?[(0,Y.jsx)(`div`,{"data-testid":`flow-step-ring`,className:`pointer-events-none absolute rounded-md border-2 border-[var(--flow-accent)]`,style:U(t,o)},e)]:[]}),C&&(O!==null||C.id!==N||g)&&(0,Y.jsx)(`div`,{"data-testid":`flow-add-hint`,className:`pointer-events-none absolute rounded-md border-2 border-dashed border-[var(--canvas-selection)]`,style:U(C,o),children:(0,Y.jsx)(`span`,{className:`absolute -top-6 left-0 whitespace-nowrap rounded-md bg-[var(--chrome-accent)] px-1.5 py-0.5 text-[11px] font-medium text-white shadow-sm`,children:de(O,g?k:null,E,m)})}),(0,Y.jsx)(he,{flow:n,byId:v,viewport:o,slot:E}),(0,Y.jsx)(ge,{flow:n,targets:a,fork:M,viewport:o}),(0,Y.jsx)(ve,{flow:n,byId:v,viewport:o,selected:D,onSelect:e=>s.store.getState().patchFlowEdit({selected:e}),onDrop:(e,r)=>b(s,t.id,n.id,e,r)}),(0,Y.jsx)(pe,{picking:O,slot:E,count:m})]})}function ue(){let e=document.activeElement;e instanceof HTMLElement&&p(e)&&e.blur()}function de(e,t,n,r){return e===null?t===null?n<r?`Add as step ${n+1}`:`Add as step ${r+1}`:`Add to step ${t+1}`:`Step ${e+1} lights this`}function fe(e){let{frame:t,viewport:n}=e,r=c(t),i=l({x:r.x-X,y:r.y-Z},n),a=l({x:r.x+r.width+X,y:r.y+r.height+X},n);return(0,Y.jsx)(`div`,{"data-testid":`flow-edit-focus`,className:`pointer-events-none absolute rounded-lg ring-2 ring-[color-mix(in_srgb,var(--flow-accent)_35%,transparent)]`,style:{left:i.x,top:i.y,width:Math.max(0,a.x-i.x),height:Math.max(0,a.y-i.y)}})}function pe(e){let{picking:t,slot:n,count:r}=e,i=null;return t===null?n<r&&(i=`The next box goes in as step ${n+1} · Esc adds at the end`):i=`Click the box step ${t+1} should light · Esc to cancel`,i?(0,Y.jsx)(`p`,{"data-testid":`flow-board-hint`,className:`pointer-events-none absolute bottom-6 left-1/2 z-30 -translate-x-1/2 whitespace-nowrap rounded-lg bg-[var(--chrome-fg-900)] px-3 py-2 text-[12.5px] text-[var(--chrome-page)] shadow-lg`,children:i}):null}function me(e,t,n){for(let r of n.values()){if(r.type!==`arrow`)continue;let n=r.startBinding?.shapeId,i=r.endBinding?.shapeId;if(n===e.target&&i===t.target||n===t.target&&i===e.target)return r}return null}function he(e){let{flow:t,byId:n,viewport:i,slot:a}=e,s=r(),c=t.steps.slice(1).flatMap((e,r)=>{let i=t.steps[r],a=me(i,e,n);return a?[{arrow:a,slot:r+1}]:[]}),u=new Map;for(let{arrow:e}of c)u.set(e.id,(u.get(e.id)??0)+1);let d=new Map;return(0,Y.jsx)(Y.Fragment,{children:c.map(({arrow:e,slot:t})=>{let n=d.get(e.id)??0;d.set(e.id,n+1);let r=(n-((u.get(e.id)??1)-1)/2)*ce,c=l(o(e),i),f=typeof e.label==`string`&&e.label.trim().length>0,p=t===a;return(0,Y.jsx)(`button`,{type:`button`,"data-overlay":!0,"data-testid":`flow-arrow-insert`,"aria-label":`Add a step between step ${t} and step ${t+1}`,title:`Add a step between ${t} and ${t+1}`,className:`absolute z-20 flex h-[18px] w-[18px] -translate-x-1/2 -translate-y-1/2 cursor-pointer items-center justify-center rounded-full ring-1 transition-[opacity,background-color] hover:opacity-100 ${p?`bg-[var(--flow-accent)] text-white opacity-100 ring-[var(--flow-accent)]`:`bg-[var(--chrome-popup)] text-[var(--flow-accent)] opacity-60 ring-[color-mix(in_srgb,var(--flow-accent)_45%,transparent)]`}`,style:{left:c.x+r,top:c.y+(f?16:0)},onPointerDown:e=>e.stopPropagation(),onClick:()=>s.store.getState().patchFlowEdit({slot:t,picking:null}),children:(0,Y.jsx)(M,{size:11,stroke:2.5})},`${e.id}-${t}`)})})}function ge(e){let{flow:t,targets:n,fork:i,viewport:a}=e,o=r(),s=[..._(n,t.steps,i).values()];return(0,Y.jsx)(Y.Fragment,{children:[...new Map(s.map(e=>[e.arrow.id,e])).values()].flatMap(e=>e.ends.map(t=>{let r=n.find(e=>e.id===t.shapeId),i=r?z(n,r):`its box`,s=l(t.point,a);return(0,Y.jsxs)(`button`,{type:`button`,"data-overlay":!0,"data-testid":`flow-loose-end`,"aria-label":`Attach the arrow to ${i}`,title:`This arrow isn't attached to ${i}, so the flow can't follow it`,className:`group/loose absolute z-20 flex h-4 w-4 -translate-x-1/2 -translate-y-1/2 cursor-pointer items-center justify-center`,style:{left:s.x,top:s.y},onPointerDown:e=>e.stopPropagation(),onClick:()=>E(o,e),children:[(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`absolute h-3 w-3 rounded-full bg-[var(--flow-warn)] opacity-60 motion-safe:animate-ping`,style:{animationIterationCount:4}}),(0,Y.jsx)(`span`,{"aria-hidden":!0,className:`relative h-3 w-3 rounded-full bg-[var(--flow-warn)] ring-2 ring-[var(--canvas-bg)]`}),(0,Y.jsxs)(`span`,{className:`absolute left-1/2 top-5 flex -translate-x-1/2 items-center whitespace-nowrap rounded-md bg-[var(--chrome-popup)] px-1.5 py-0.5 text-[11px] font-medium text-[var(--flow-warn-fg)] shadow-sm ring-1 ring-[color-mix(in_srgb,var(--flow-warn)_45%,transparent)] group-hover/loose:bg-[color-mix(in_srgb,var(--flow-warn)_12%,var(--chrome-popup))]`,children:[`Attach to `,i]})]},`${e.arrow.id}-${t.end}`)}))})}function _e(e,t,n){for(let r of document.elementsFromPoint(e,t)){let e=r.closest(`[data-shape-id]`)?.getAttribute(`data-shape-id`)??r.closest(`[data-icon-label]`)?.getAttribute(`data-icon-label`);if(e&&n.has(e))return e}return null}function ve(e){let{flow:t,byId:n,viewport:r,selected:i,onSelect:a,onDrop:o}=e,[s,c]=(0,J.useState)(null),l=K(t),u=W(t),d=new Set(n.keys()),f=(e,t)=>{if(e.button!==0)return;e.stopPropagation(),e.preventDefault(),ue();let n=e.currentTarget.closest(`[data-canvas-root]`)?.getBoundingClientRect(),r={left:n?.left??0,top:n?.top??0};e.currentTarget.setPointerCapture(e.pointerId),c({index:t,pointerId:e.pointerId,startX:e.clientX,startY:e.clientY,x:e.clientX-r.left,y:e.clientY-r.top,origin:r,dragging:!1,over:null})},p=e=>{if(!s||s.pointerId!==e.pointerId)return;let t=Math.hypot(e.clientX-s.startX,e.clientY-s.startY),n=s.dragging||t>se;c({...s,x:e.clientX-s.origin.left,y:e.clientY-s.origin.top,dragging:n,over:n?_e(e.clientX,e.clientY,d):null})},m=e=>{if(!s||s.pointerId!==e.pointerId)return;if(c(null),!s.dragging){a(s.index);return}let r=s.over?n.get(s.over):void 0;r&&r.id!==t.steps[s.index]?.target&&o(s.index,r)},h=s?.over?n.get(s.over):void 0;return(0,Y.jsxs)(Y.Fragment,{children:[h&&s&&h.id!==t.steps[s.index]?.target&&(0,Y.jsx)(`div`,{"data-testid":`flow-badge-drop`,className:`pointer-events-none absolute rounded-md border-2 border-[var(--flow-accent)] bg-[color-mix(in_srgb,var(--flow-accent)_6%,transparent)]`,style:U(h,r)}),[...l].map(([e,o])=>{let l=n.get(e);if(!l)return null;let d=q(l,r);return(0,Y.jsx)(`span`,{"data-overlay":!0,className:`absolute z-20 flex items-center gap-1 ${l.type===`arrow`?`-translate-x-1/2 -translate-y-[calc(100%+14px)]`:`-translate-x-full -translate-y-full`}`,style:{left:d.x-2,top:d.y-2},children:o.map(e=>{let n=e-1,r=s?.dragging&&s.index===n,o=i===n;return(0,Y.jsx)(`button`,{type:`button`,"data-testid":`flow-step-badge`,"data-selected":o||void 0,"aria-label":`Step ${e}: ${t.steps[n]?.title??``}`,"aria-pressed":o,title:`Click to select · drag onto another box to change it`,className:`flex h-[22px] min-w-[22px] cursor-grab touch-none items-center justify-center rounded-full px-1.5 text-[11.5px] font-semibold tabular-nums text-white transition-shadow active:cursor-grabbing ${u.has(e)?`bg-[var(--flow-fail)]`:`bg-[var(--flow-accent)]`} ${o?`ring-[3px] ring-[color-mix(in_srgb,var(--flow-accent)_35%,transparent)]`:`hover:ring-[3px] hover:ring-[color-mix(in_srgb,var(--flow-accent)_20%,transparent)]`} ${r?`opacity-35`:``}`,onPointerDown:e=>f(e,n),onPointerMove:p,onPointerUp:m,onPointerCancel:()=>c(null),onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a(n))},children:e},e)})},e)}),s?.dragging&&(0,Y.jsx)(`span`,{"aria-hidden":!0,"data-testid":`flow-badge-ghost`,className:`pointer-events-none absolute z-30 flex h-[26px] min-w-[26px] -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full bg-[var(--flow-accent)] px-1.5 text-[12.5px] font-semibold tabular-nums text-white shadow-[0_6px_14px_rgba(0,0,0,0.25)]`,style:{left:s.x,top:s.y},children:s.index+1})]})}function ye(e){let{shape:t,viewport:n}=e,r=U(t,n,4);return(0,Y.jsxs)(`span`,{"data-testid":`flow-fork-marker`,className:`pointer-events-none absolute flex -translate-x-1/2 items-center gap-1 whitespace-nowrap rounded-full bg-[var(--flow-accent)] py-1 pl-1.5 pr-2.5 text-[11.5px] font-medium text-white`,style:{left:r.left+r.width/2,top:r.top+r.height+6},children:[(0,Y.jsx)(v,{size:13,stroke:2}),`Path starts here`]})}var be=2600,xe=.55,Se=1.1;function Ce(e,t){let n=document.querySelector(`[data-canvas-root]`),r=n?.clientWidth??window.innerWidth,i=n?.clientHeight??window.innerHeight;return{width:Math.max(1,r-(e?L(t):0)),height:Math.max(1,i-Te)}}var we={call:`Call`,async:`Fire and forget`,reply:`Reply`},Te=150;function Ee(e){let{frame:t,flow:n,targets:o,step:l,viewport:d}=e,f=r(),{store:p,viewportAnimation:h}=f,g=i(e=>e.rightPanel),_=I()===`docked`,v=n.steps.length,y=Math.min(Math.max(l,0),Math.max(v-1,0)),b=n.steps[y],x=(0,J.useMemo)(()=>new Map(o.map(e=>[e.id,e])),[o]),S=(0,J.useMemo)(()=>b?R(b).flatMap(e=>x.get(e)??[]):[],[b,x]),w=(0,J.useMemo)(()=>{let e=y>0?n.steps[y-1]:void 0;return e?R(e).flatMap(e=>x.get(e)??[]):[]},[n.steps,y,x]),T=i(e=>e.flowPlay?.trail),E=i(e=>e.viewMode),O=T?.[T.length-1],k=O?t.flows?.find(e=>e.id===O.flowId)?.name:void 0,[A,j]=(0,J.useState)(!1),[M,N]=(0,J.useState)(()=>u(c(t),Ce(_,g),64).zoom<xe),P=e=>{let r=Math.min(Math.max(e,0),v-1);p.getState().setFlowPlay({frameId:t.id,flowId:n.id,step:r,trail:T})},F=()=>{!O||!T||(j(!1),p.getState().setFlowPlay({frameId:t.id,flowId:O.flowId,step:O.step,trail:T.slice(0,-1)}))},L=(0,J.useRef)(F);L.current=F;let z=()=>{p.getState().setFlowPlay(null)},B=t.flows??[],V={tabs:C(B).filter(e=>e.steps.length>0).map(e=>({id:e.id,name:e.name})),active:De(B,n.id,T),onTab:e=>{j(!1),p.getState().setFlowPlay({frameId:t.id,flowId:e,step:0})},onEdit:E?null:()=>D(f,t.id,n.id),onNew:E?null:()=>{p.getState().setFlowPlay(null),ee(f,t.id)}},H=(0,J.useRef)(P);H.current=P;let U=(0,J.useRef)(z);U.current=z;let W=(0,J.useRef)(y);W.current=y;let G=()=>Ce(_,g),K=(0,J.useRef)(G);if(K.current=G,(0,J.useEffect)(()=>{let e=p.getState();e.setSelectedIds(new Set),h.animate(e.viewport,u(c(t),K.current(),64),e.setViewport)},[t.id,p,h]),(0,J.useEffect)(()=>{let e=s(M?[...S,...w]:S);if(!e)return;let t=p.getState();if(M){let n=u(e,K.current(),120),r=Math.min(n.zoom,Se),i=K.current();h.animate(t.viewport,{zoom:r,x:i.width/2-(e.x+e.width/2)*r,y:i.height/2-(e.y+e.height/2)*r},t.setViewport);return}let n=a(e,t.viewport,K.current(),96);n&&h.animate(t.viewport,n,t.setViewport)},[S,w,M,p,h]),(0,J.useEffect)(()=>{let e=e=>{if((e.target instanceof Element?e.target:null)?.closest(`input, textarea, select, [contenteditable=true], [role=menu]`)||(e.key===` `||e.key===`Enter`)&&m(e.target))return;let t=W.current;if(e.key===`ArrowRight`||e.key===` `||e.key===`Enter`)e.preventDefault(),H.current(t+1);else if(e.key===`ArrowLeft`||e.key===`Backspace`){if(e.preventDefault(),t===0&&L.current){L.current();return}H.current(t-1)}else e.key===`Home`?(e.preventDefault(),H.current(0)):e.key===`Escape`&&(e.preventDefault(),e.stopPropagation(),U.current())};return window.addEventListener(`keydown`,e,!0),()=>window.removeEventListener(`keydown`,e,!0)},[]),(0,J.useEffect)(()=>{if(!A)return;if(y>=v-1||(b?.branches?.length??0)>0){j(!1);return}let e=window.setTimeout(()=>H.current(W.current+1),be);return()=>window.clearTimeout(e)},[A,y,v,b]),!b)return(0,Y.jsx)(Oe,{flow:n,index:0,kind:`call`,autoplay:!1,onAutoplay:()=>{},onGo:()=>{},onStop:z,branches:[],onBranch:()=>{},returnName:k??null,onBack:F,follow:M,onFollow:N,switcher:V});let q=ne(t.flows??[],n.id);return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(re,{frameId:t.id,flow:n,targets:o,index:y,viewport:d,lead:q}),(0,Y.jsx)(Oe,{flow:n,index:y,kind:te(o,[...q,...n.steps],q.length+y),autoplay:A,onAutoplay:j,onGo:P,onStop:z,branches:(b.branches??[]).flatMap(e=>{let r=t.flows?.find(t=>t.id===e&&t.id!==n.id);return r&&r.steps.length>0?[{id:r.id,name:r.name}]:[]}),onBranch:e=>{j(!1),p.getState().setFlowPlay({frameId:t.id,flowId:e,step:0,trail:[...T??[],{flowId:n.id,step:y}]})},returnName:k??null,onBack:F,follow:M,onFollow:N,switcher:V})]})}function De(e,t,n){let r=n?.[0]?.flowId;if(r)return r;let i=t,a=new Set;for(;!a.has(i);){a.add(i);let t=V(e,i);if(!t)return i;i=t.flow.id}return i}function Oe(e){let{flow:t,index:n,kind:r,autoplay:i,onAutoplay:a,onGo:o,onStop:s,branches:c,onBranch:l}=e,{returnName:u,onBack:d,follow:f,onFollow:p,switcher:m}=e,g=t.steps.length,_=t.steps[n],y=n>=g-1,b=`flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-lg text-[var(--chrome-fg-600)] transition-colors hover:bg-[var(--chrome-hover)] hover:text-[var(--chrome-fg-900)] disabled:pointer-events-none disabled:opacity-35`;return(0,Y.jsxs)(`div`,{"data-overlay":!0,"data-testid":`flow-player`,className:`absolute bottom-6 left-1/2 z-30 flex w-[min(600px,calc(100%-32px))] -translate-x-1/2 flex-col gap-2 rounded-2xl bg-[var(--chrome-popup)] p-3 shadow-[0_8px_32px_rgba(0,0,0,0.16)] ring-1 ring-[var(--chrome-ring)]`,onPointerDown:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:[(0,Y.jsx)(ke,{switcher:m}),(0,Y.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,Y.jsx)(`span`,{className:`mt-0.5 flex h-6 min-w-6 shrink-0 items-center justify-center rounded-full px-1.5 text-[12px] font-medium tabular-nums text-white ${_?.fails?`bg-[var(--flow-fail)]`:`bg-[var(--flow-accent)]`}`,children:g===0?`–`:n+1}),(0,Y.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,Y.jsx)(`p`,{"data-testid":`flow-step-title`,className:`text-[14px] font-medium leading-snug text-[var(--chrome-fg-900)]`,children:_?.title||(g===0?`This flow has no steps yet`:`Untitled step`)}),_?.text&&(0,Y.jsx)(`p`,{"data-testid":`flow-step-text`,className:`mt-0.5 text-[13px] leading-relaxed text-[var(--chrome-fg-600)]`,children:_.text}),_&&(r!==`call`||_.payload||_.fails)&&(0,Y.jsxs)(`p`,{className:`mt-1 flex flex-wrap items-center gap-1.5 text-[11px] text-[var(--chrome-fg-500)]`,children:[_.fails&&(0,Y.jsx)(`span`,{"data-testid":`flow-step-fails`,className:`rounded-full bg-[color-mix(in_srgb,var(--flow-fail)_14%,transparent)] px-2 py-0.5 font-medium text-[var(--flow-fail)]`,children:`Fails here`}),r!==`call`&&(0,Y.jsx)(`span`,{"data-testid":`flow-step-kind`,className:`rounded-full bg-[var(--chrome-rest)] px-2 py-0.5`,children:we[r]}),_.payload&&(0,Y.jsxs)(`span`,{className:`rounded-full bg-[var(--chrome-rest)] px-2 py-0.5`,children:[`Carries `,_.payload]})]}),c.length>0&&(0,Y.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-1.5`,"data-testid":`flow-branches`,children:[(0,Y.jsx)(`span`,{className:`text-[12px] text-[var(--chrome-fg-500)]`,children:`Or follow:`}),c.map(e=>(0,Y.jsxs)(`button`,{type:`button`,"data-testid":`flow-branch`,className:`flex cursor-pointer items-center gap-1 rounded-full px-2.5 py-1 text-[12px] font-medium text-[var(--chrome-fg-900)] bg-[var(--chrome-rest)] transition-colors hover:bg-[var(--chrome-hover)]`,onClick:()=>l(e.id),children:[(0,Y.jsx)(v,{size:12,stroke:2}),e.name]},e.id))]})]}),(0,Y.jsx)(`button`,{type:`button`,"aria-label":`Stop playing`,className:b,onClick:s,children:(0,Y.jsx)(N,{size:16,stroke:1.75})})]}),(0,Y.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Y.jsxs)(`span`,{className:`flex min-w-0 flex-1 items-center gap-1 truncate text-[12px] text-[var(--chrome-fg-500)]`,children:[u&&(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsxs)(`button`,{type:`button`,"data-testid":`flow-back`,title:`Back to where this path was taken (←)`,className:`flex cursor-pointer items-center gap-0.5 rounded px-1 font-medium text-[var(--chrome-fg-900)] hover:bg-[var(--chrome-hover)]`,onClick:d,children:[(0,Y.jsx)(h,{size:13,stroke:2}),u]}),(0,Y.jsx)(`span`,{"aria-hidden":!0,children:`/`})]}),(u||!m.tabs.some(e=>e.id===t.id)||!Q(m))&&(0,Y.jsx)(`span`,{className:`truncate`,children:t.name})]}),(0,Y.jsx)(`div`,{className:`flex items-center gap-1`,"data-testid":`flow-dots`,children:t.steps.map((e,t)=>(0,Y.jsx)(`button`,{type:`button`,"aria-label":e.branches?.length?`Step ${t+1}, where another path starts`:`Step ${t+1}`,"data-fork":e.branches?.length?!0:void 0,onClick:()=>o(t),className:`relative h-1.5 cursor-pointer rounded-full transition-all ${t===n?`w-4 bg-[var(--flow-accent)]`:`w-1.5 bg-[var(--chrome-fg-300)] hover:bg-[var(--chrome-fg-500)]`}`,children:e.branches?.length?(0,Y.jsx)(v,{size:9,stroke:2.5,"aria-hidden":!0,className:`absolute left-1/2 top-2 -translate-x-1/2 text-[var(--chrome-fg-400)]`}):null},`${e.target}-${t}`))}),(0,Y.jsx)(`span`,{"data-testid":`flow-position`,className:`w-10 text-right text-[12px] tabular-nums text-[var(--chrome-fg-500)]`,children:g===0?`0 / 0`:`${n+1} / ${g}`}),(0,Y.jsxs)(`div`,{className:`flex items-center`,children:[(0,Y.jsx)(`button`,{type:`button`,"aria-label":`Previous step`,"data-testid":`flow-prev`,className:b,disabled:n===0&&!u,onClick:()=>n===0?d():o(n-1),children:(0,Y.jsx)(O,{size:16,stroke:2})}),(0,Y.jsx)(`button`,{type:`button`,"aria-label":f?`Show the whole diagram`:`Follow each step`,title:f?`Show the whole diagram`:`Follow each step`,"aria-pressed":f,"data-testid":`flow-follow`,className:`${b} ${f?`bg-[var(--chrome-active)] text-[var(--chrome-fg-900)]`:``}`,onClick:()=>p(!f),children:(0,Y.jsx)(A,{size:16,stroke:1.75})}),(0,Y.jsx)(`button`,{type:`button`,"aria-label":i?`Pause`:`Play automatically`,"data-testid":`flow-autoplay`,className:b,disabled:g<2,onClick:()=>{!i&&y&&o(0),a(!i)},children:i?(0,Y.jsx)(ae,{size:14}):(0,Y.jsx)(P,{size:14})}),y&&g>1?(0,Y.jsx)(`button`,{type:`button`,"aria-label":`Play again`,"data-testid":`flow-replay`,className:b,onClick:()=>o(0),children:(0,Y.jsx)(ie,{size:15,stroke:1.75})}):(0,Y.jsx)(`button`,{type:`button`,"aria-label":`Next step`,"data-testid":`flow-next`,className:b,disabled:y,onClick:()=>o(n+1),children:(0,Y.jsx)(k,{size:16,stroke:2})})]})]})]})}function Q(e){return e.tabs.length>1||e.onEdit!==null}function ke(e){let{tabs:t,active:n,onTab:r,onEdit:i,onNew:a}=e.switcher;if(!Q(e.switcher))return null;let o=`shrink-0 cursor-pointer rounded-md px-2 py-1 text-[12.5px] transition-colors hover:bg-[var(--chrome-hover)]`;return(0,Y.jsxs)(`div`,{className:`-mx-1 -mt-1 flex items-center gap-1 border-b border-[var(--chrome-divider)] pb-1.5`,children:[(0,Y.jsxs)(`div`,{role:`group`,"aria-label":`Flows`,"data-testid":`flow-tabs`,className:`flex min-w-0 flex-1 items-center gap-0.5 overflow-x-auto`,children:[t.map(e=>(0,Y.jsx)(`button`,{type:`button`,"aria-pressed":e.id===n,"data-testid":`flow-tab`,className:`${o} ${e.id===n?`bg-[var(--chrome-active)] font-medium text-[var(--chrome-fg-900)]`:`text-[var(--chrome-fg-500)]`}`,onClick:()=>r(e.id),children:e.name},e.id)),a&&(0,Y.jsx)(`button`,{type:`button`,"aria-label":`New flow`,title:`New flow`,"data-testid":`flow-tab-new`,className:`${o} flex items-center text-[var(--chrome-fg-400)]`,onClick:a,children:(0,Y.jsx)(M,{size:14,stroke:2})})]}),i&&(0,Y.jsxs)(`button`,{type:`button`,"data-testid":`flow-player-edit`,className:`flex shrink-0 cursor-pointer items-center gap-1 rounded-md px-2 py-1 text-[12.5px] font-medium text-[var(--chrome-fg-700)] transition-colors hover:bg-[var(--chrome-hover)]`,onClick:i,children:[(0,Y.jsx)(j,{size:13,stroke:1.75}),`Edit`]})]})}var $=10,Ae=28,je=.28;function Me(e){let{viewport:t}=e,{store:n}=r(),a=i(e=>e.shapes),o=i(e=>e.flowEdit),s=i(e=>e.flowPlay),c=i(e=>e.flowPreview),l=s??o??c,u=(0,J.useMemo)(()=>{let e=l?a.find(e=>e.id===l.frameId):void 0;return e?.type===`figure`?e:null},[a,l]),d=(0,J.useMemo)(()=>u?F(a,u):[],[a,u]),f=u?.flows?.find(e=>e.id===l?.flowId),p=(0,J.useMemo)(()=>f?H(f,d):null,[f,d]);return(0,J.useEffect)(()=>{if(!l||u&&f)return;let e=n.getState();e.setFlowPlay(null),e.setFlowEdit(null),e.setFlowPreview(null)},[l,u,f,n]),!l||!u||!p?null:s?(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(Ne,{frame:u,viewport:t}),(0,Y.jsx)(Ee,{frame:u,flow:p,targets:d,step:s.step,viewport:t})]}):o?(0,Y.jsx)(le,{frame:u,flow:p,targets:d,viewport:t}):(0,Y.jsx)(Pe,{flow:p,targets:d,viewport:t})}function Ne(e){let{frame:t,viewport:n}=e,r=c(t),i=l({x:r.x-$,y:r.y-Ae},n),a=l({x:r.x+r.width+$,y:r.y+r.height+$},n);return(0,Y.jsx)(`div`,{"data-testid":`flow-spotlight`,className:`pointer-events-none absolute rounded-lg`,style:{left:i.x,top:i.y,width:Math.max(0,a.x-i.x),height:Math.max(0,a.y-i.y),boxShadow:`0 0 0 9999px var(--canvas-scrim)`}})}function Pe(e){let{flow:t,targets:n,viewport:r}=e,i=(0,J.useMemo)(()=>new Map(n.map(e=>[e.id,e])),[n]);return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`style`,{"data-testid":`flow-preview`,children:(0,J.useMemo)(()=>{let e=new Set(t.steps.flatMap(R));t.steps.forEach((r,i)=>{let a=t.steps[i-1];if(a)for(let t of R(r))for(let r of R(a)){let i=B(n,r,t);if(i?.kind===`arrows`){i.hops.forEach(t=>e.add(t.arrow.id)),i.through.forEach(t=>e.add(t));break}}});let r=n.filter(t=>!e.has(t.id)&&t.type!==`figure`).flatMap(e=>[d(e.id),f(`data-icon-label`,e.id)]);return[`[data-canvas-root] :is([data-shape-id],[data-icon-label]){transition:opacity 180ms ease}`,r.length>0?`${r.join(`,`)}{opacity:${je}!important}`:``].join(``)},[t.steps,n])}),(0,Y.jsx)(G,{numbers:K(t),byId:i,viewport:r,current:null,failing:W(t)})]})}export{Me as FlowLayer};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-2Zwg-L3c.js";import{t as r}from"./tooltip-DgEojto1.js";import{D as i,E as a,T as o,g as s,h as c,i as l,l as u,m as d,o as f,p,r as m,t as h}from"./menu-BPrc8Ara.js";import{i as g}from"./config-a_lz-57R.js";import{a as _,o as v}from"./editor-B0tARd79.js";import{k as y}from"./slides-D9bnXqtf.js";import{t as b}from"./editable-target-BTLnvKNi.js";import{t as x}from"./createReactComponent-9UsI5fmM.js";import{t as S}from"./IconAlertTriangle-CxPhYpe-.js";import{n as C,r as w,t as T}from"./IconTrash-DbN_RxB7.js";import{_ as E,a as D,b as O,f as k,g as ee,h as A,i as j,l as M,m as N,p as te,r as ne,s as re,t as P,u as ie,v as F,y as ae}from"./tree-rq4RTGgw.js";import{n as oe}from"./useValueChanged-p8z-93L4.js";import{t as se}from"./IconChevronLeft-BR0iwdRI.js";import{t as I}from"./IconChevronRight-DBDnxPYT.js";import{i as ce,n as le,r as L,t as ue}from"./use-drag-reorder-C3h4ZMoZ.js";import{n as R,t as z}from"./IconNote-CSELvWzx.js";import{t as B}from"./IconPencil-C5Y-Y4dC.js";import{t as V}from"./IconPlus-BbmieIBT.js";import{n as H,r as U,t as W}from"./MenuSubmenuTrigger-CpN67g09.js";import{t as G}from"./IconSparkles-WDcg8BA9.js";import{t as K}from"./IconX-AlbPkO_g.js";import{t as q}from"./IconPlayerPlayFilled-D4OODBX7.js";import{n as de,r as fe,t as pe}from"./core-CBnmD9hT.js";import{n as J,r as Y}from"./flow-start-ccYJ2KB9.js";import{n as me}from"./surface-Dke4SWpE.js";import{a as he}from"./chrome-C2RCq3SI.js";import"./chrome-layout-B8YmHznO.js";import{t as ge}from"./panel-shell-CG2aq4Ia.js";import{i as _e,n as ve,s as ye}from"./flows-GGbkNqs8.js";var be=x(`outline`,`arrows-exchange`,`ArrowsExchange`,[[`path`,{d:`M7 10h14l-4 -4`,key:`svg-0`}],[`path`,{d:`M17 14h-14l4 4`,key:`svg-1`}]]),xe=x(`outline`,`package`,`Package`,[[`path`,{d:`M12 3l8 4.5l0 9l-8 4.5l-8 -4.5l0 -9l8 -4.5`,key:`svg-0`}],[`path`,{d:`M12 12l8 -4.5`,key:`svg-1`}],[`path`,{d:`M12 12l0 9`,key:`svg-2`}],[`path`,{d:`M12 12l-8 -4.5`,key:`svg-3`}],[`path`,{d:`M16 5.25l-8 4.5`,key:`svg-4`}]]),X=e(t(),1),Se=`w-full min-w-0 rounded-md bg-transparent px-1.5 py-1 text-[12px] text-[var(--chrome-fg-800)] outline-none ring-1 ring-transparent transition-shadow placeholder:text-[var(--chrome-fg-300)] hover:ring-[var(--chrome-ring)] focus:bg-[var(--chrome-rest)] focus:ring-[var(--chrome-fg-300)]`,Ce=`flex cursor-pointer items-center gap-1.5 rounded-md px-1.5 py-1 text-[12px] text-[var(--chrome-fg-500)] transition-colors hover:bg-[var(--chrome-hover)] hover:text-[var(--chrome-fg-900)] disabled:pointer-events-none disabled:text-[var(--chrome-fg-300)]`,we=`flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-md text-[var(--chrome-fg-400)] transition-colors hover:bg-[var(--chrome-hover)] hover:text-[var(--chrome-fg-800)] disabled:pointer-events-none disabled:opacity-40`,Te=`flex h-9 w-full cursor-pointer items-center justify-center gap-2 rounded-lg bg-[var(--chrome-accent)] text-[13px] text-white transition-colors hover:bg-[var(--chrome-accent-hover)] disabled:pointer-events-none disabled:bg-[var(--chrome-hover)] disabled:text-[var(--chrome-fg-400)]`,Ee=`flex cursor-pointer items-center justify-center gap-1.5 rounded-lg px-3 text-[13px] text-[var(--chrome-fg-700)] ring-1 ring-[var(--chrome-ring)] transition-colors hover:bg-[var(--chrome-rest)] hover:text-[var(--chrome-fg-900)] disabled:pointer-events-none disabled:opacity-50`,Z=n(),De=[{kind:`call`,label:`Call`,hint:`Waits for an answer`,pickable:!0},{kind:`async`,label:`Fire and forget`,hint:`Doesn't wait for an answer`,pickable:!0},{kind:`reply`,label:`Reply`,hint:`Answers an earlier step`,pickable:!1}],Oe=e=>De.find(t=>t.kind===e)?.label;function ke(e){let{step:t,index:n,count:r,current:a,selected:o,picking:s,names:c,otherFlows:l,loose:u}=e,{actions:d,grip:p,rowRef:m,rowStyle:h}=e,{onPlay:g,onChange:_,onMove:v,onRemove:y,onNewPath:b}=d,[x,C]=(0,X.useState)(!1),[w,T]=(0,X.useState)(!1),E=t.kind??`call`,D=t.also??[],k=t.branches??[],ee=new Map(l.map(e=>[e.id,e.name])),A=x||!!t.text,j=w||!!t.payload,M=D.length>0||E!==`call`||j||t.fails||k.length>0;return(0,Z.jsxs)(`li`,{ref:m,"data-testid":`flow-step-${n}`,"data-current":a||void 0,"data-selected":o||void 0,"aria-current":o?`step`:void 0,className:`group relative flex gap-2.5 rounded-lg py-2.5 pl-5 pr-2 transition-colors ${s?`bg-[color-mix(in_srgb,var(--flow-accent)_10%,transparent)] ring-1 ring-[color-mix(in_srgb,var(--flow-accent)_45%,transparent)]`:o?`bg-[color-mix(in_srgb,var(--flow-accent)_8%,transparent)] ring-1 ring-[color-mix(in_srgb,var(--flow-accent)_30%,transparent)]`:a?`bg-[var(--chrome-active)]`:`hover:bg-[var(--chrome-rest)]`}`,style:h,onPointerDown:e=>{e.target.closest(`[data-step-insert]`)||d.onSelect()},onFocusCapture:e=>{e.target.closest(`[data-step-insert]`)||d.onSelect()},onPointerEnter:()=>d.onHover(!0),onPointerLeave:()=>d.onHover(!1),children:[(0,Z.jsx)(`button`,{type:`button`,"aria-label":`Add a step before step ${n+1}`,title:`Add a step here`,"data-testid":`flow-step-insert-${n}`,"data-step-insert":!0,className:`absolute -top-2.5 left-1/2 z-10 flex h-5 w-5 -translate-x-1/2 cursor-pointer items-center justify-center rounded-full bg-[var(--chrome-popup)] text-[var(--flow-accent)] opacity-0 ring-1 ring-[color-mix(in_srgb,var(--flow-accent)_40%,transparent)] transition-opacity hover:bg-[color-mix(in_srgb,var(--flow-accent)_10%,var(--chrome-popup))] focus-visible:opacity-100 group-hover:opacity-100`,onPointerDown:e=>e.stopPropagation(),onClick:d.onInsertBefore,children:(0,Z.jsx)(V,{size:11,stroke:2.5})}),(0,Z.jsx)(`span`,{"aria-hidden":!0,"data-testid":`flow-step-grip-${n}`,title:`Drag to reorder`,className:`absolute bottom-0 left-0 top-0 flex w-5 cursor-grab touch-none items-center justify-center text-[var(--chrome-fg-300)] opacity-0 transition-opacity active:cursor-grabbing group-hover:opacity-100`,...p,children:(0,Z.jsx)(ce,{size:13,stroke:1.75})}),(0,Z.jsx)(`button`,{type:`button`,"aria-label":`Play from step ${n+1}`,title:`Play from this step`,onClick:g,className:`mt-px flex h-6 min-w-6 shrink-0 cursor-pointer items-center justify-center rounded-full px-1.5 text-[12px] font-semibold tabular-nums text-white transition-shadow hover:ring-4 hover:ring-[color-mix(in_srgb,var(--flow-accent)_20%,transparent)] ${t.fails?`bg-[var(--flow-fail)]`:`bg-[var(--flow-accent)]`}`,children:n+1}),(0,Z.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-0.5 pr-6`,children:[(0,Z.jsx)(`input`,{"aria-label":`Step title`,"data-testid":`flow-step-title-${n}`,className:`${Se} -mx-1.5 h-6 px-1.5 text-[13px] font-semibold text-[var(--chrome-fg-900)]`,defaultValue:t.title,onBlur:e=>{e.target.value!==t.title&&_({title:e.target.value})},onKeyDown:ze},`t-${t.title}`),A&&(0,Z.jsx)(`textarea`,{autoFocus:x&&!t.text,"aria-label":`What happens at this step`,"data-testid":`flow-step-text-${n}`,rows:1,className:`w-full min-w-0 rounded-md bg-transparent px-1.5 py-1 text-[12px] text-[var(--chrome-fg-800)] outline-none ring-1 ring-transparent transition-shadow placeholder:text-[var(--chrome-fg-300)] hover:ring-[var(--chrome-ring)] focus:bg-[var(--chrome-rest)] focus:ring-[var(--chrome-fg-300)] -mx-1.5 resize-none px-1.5 text-[12px] leading-relaxed text-[var(--chrome-fg-600)] [field-sizing:content]`,placeholder:`What happens here`,defaultValue:t.text??``,onBlur:e=>{let n=e.target.value.trim();n!==(t.text??``)&&_({text:n}),n||C(!1)},onKeyDown:ze},`d-${t.text??``}`),u&&(0,Z.jsx)(je,{index:n,names:u.names,justAdded:o,onAttach:u.onAttach}),M&&(0,Z.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-1`,"data-testid":`flow-step-chips-${n}`,children:[E!==`call`&&(0,Z.jsx)(Fe,{kind:E,onPick:e=>_({kind:e}),trigger:(0,Z.jsxs)(f,{"data-testid":`flow-step-kind-${n}`,className:`${Q} cursor-pointer hover:bg-[var(--chrome-hover)]`,children:[Oe(E),(0,Z.jsx)(i,{size:11,stroke:2,className:`text-[var(--chrome-fg-400)]`})]})}),j&&(0,Z.jsx)(Pe,{index:n,payload:t.payload,editing:w,onEdit:()=>T(!0),onDone:e=>{T(!1),e!==(t.payload??``)&&_({payload:e||void 0})}}),t.fails&&(0,Z.jsx)(Ne,{testId:`flow-step-fails-${n}`,tone:`fail`,icon:(0,Z.jsx)(S,{size:11,stroke:2}),label:`Fails here`,onRemove:()=>_({fails:void 0})}),D.map(e=>(0,Z.jsx)(Ne,{icon:(0,Z.jsx)(V,{size:11,stroke:2}),label:c.get(e)??`Shape`,title:`Part of this step`,onRemove:()=>_({also:D.filter(t=>t!==e)})},e)),k.map(e=>(0,Z.jsx)(Ne,{testId:`flow-step-path-${n}`,icon:(0,Z.jsx)(O,{size:11,stroke:2}),label:ee.get(e)??`Missing flow`,title:`Another path from here`,onRemove:()=>_({branches:k.filter(t=>t!==e)})},e))]})]}),(0,Z.jsx)(Re,{index:n,count:r,step:t,hasNote:A,hasPayload:j,paths:l.filter(e=>!k.includes(e.id)),onNote:()=>C(!0),onPayload:()=>T(!0),onChange:_,onMove:v,onRemove:y,onNewPath:b,onInsertBefore:d.onInsertBefore,onInsertAfter:d.onInsertAfter,onChangeBox:d.onChangeBox})]})}var Ae=[{transform:`translateX(0)`},{transform:`translateX(-4px)`},{transform:`translateX(4px)`},{transform:`translateX(-3px)`},{transform:`translateX(2px)`},{transform:`translateX(0)`}];function je(e){let{index:t,names:n,justAdded:r,onAttach:i}=e,a=(0,X.useRef)(null),o=(0,X.useRef)(r);return(0,X.useEffect)(()=>{let e=a.current;!o.current||!e||window.matchMedia(`(prefers-reduced-motion: reduce)`).matches||e.animate(Ae,{duration:360,easing:`ease-out`})},[]),(0,Z.jsxs)(`div`,{ref:a,role:`status`,"data-testid":`flow-step-loose-${t}`,title:`The arrow isn't attached to ${n}, so the hand-off can't follow it`,className:`mt-1 flex items-start gap-1.5 rounded-md bg-[color-mix(in_srgb,var(--flow-warn)_12%,transparent)] py-1 pl-1.5 pr-1 text-[11.5px] text-[var(--flow-warn-fg)] ring-1 ring-[color-mix(in_srgb,var(--flow-warn)_30%,transparent)]`,children:[(0,Z.jsx)(S,{size:12,stroke:2,className:`mt-[3px] shrink-0`}),(0,Z.jsxs)(`span`,{className:`min-w-0 flex-1 py-px leading-snug`,children:[`Arrow isn't attached to `,n]}),(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`flow-step-attach-${t}`,className:`flex h-5 shrink-0 cursor-pointer items-center gap-1 rounded px-1.5 font-medium hover:bg-[color-mix(in_srgb,var(--flow-warn)_18%,transparent)]`,onClick:i,children:[(0,Z.jsx)(R,{size:11,stroke:2}),`Attach`]})]})}var Q=`flex h-6 items-center gap-1 rounded-md bg-[var(--chrome-rest)] px-1.5 text-[11.5px] text-[var(--chrome-fg-700)] ring-1 ring-[var(--chrome-ring)]`,$=`flex cursor-default select-none items-center gap-2 rounded-lg px-2 py-1.5 text-[13px] text-[var(--chrome-fg-700)] outline-none data-[highlighted]:bg-[var(--chrome-hover)]`,Me=`min-w-[200px] p-1 outline-none ${me.popup}`;function Ne(e){let{label:t,icon:n,onRemove:r,testId:i,title:a,tone:o}=e;return(0,Z.jsxs)(`span`,{"data-testid":i,title:a,className:`${Q} pr-0.5 ${o===`fail`?`bg-[color-mix(in_srgb,var(--flow-fail)_10%,transparent)] text-[var(--flow-fail)] ring-[color-mix(in_srgb,var(--flow-fail)_25%,transparent)]`:``}`,children:[(0,Z.jsx)(`span`,{className:`opacity-70`,children:n}),(0,Z.jsx)(`span`,{className:`max-w-[140px] truncate`,children:t}),(0,Z.jsx)(`button`,{type:`button`,"aria-label":`Remove ${t}`,className:`flex h-4 w-4 cursor-pointer items-center justify-center rounded opacity-60 hover:bg-[var(--chrome-hover)] hover:opacity-100`,onClick:r,children:(0,Z.jsx)(K,{size:10,stroke:2})})]})}function Pe(e){let{index:t,payload:n,editing:r,onEdit:i,onDone:a}=e;return r?(0,Z.jsxs)(`span`,{className:`${Q} pr-1`,children:[(0,Z.jsx)(xe,{size:11,stroke:2,className:`opacity-70`}),(0,Z.jsx)(`input`,{autoFocus:!0,"data-testid":`flow-step-payload-${t}`,"aria-label":`What this step carries`,placeholder:`e.g. order #1042`,className:`w-28 bg-transparent text-[11.5px] outline-none placeholder:text-[var(--chrome-fg-400)]`,defaultValue:n??``,onBlur:e=>a(e.target.value.trim()),onKeyDown:e=>{e.stopPropagation(),(e.key===`Enter`||e.key===`Escape`)&&e.currentTarget.blur()}})]}):(0,Z.jsxs)(`span`,{className:`${Q} pr-0.5`,"data-testid":`flow-step-payload-chip-${t}`,children:[(0,Z.jsx)(xe,{size:11,stroke:2,className:`opacity-70`}),(0,Z.jsx)(`button`,{type:`button`,title:`What this step carries`,className:`max-w-[140px] cursor-text truncate`,onClick:i,children:n}),(0,Z.jsx)(`button`,{type:`button`,"aria-label":`Remove what it carries`,className:`flex h-4 w-4 cursor-pointer items-center justify-center rounded opacity-60 hover:bg-[var(--chrome-hover)] hover:opacity-100`,onClick:()=>a(``),children:(0,Z.jsx)(K,{size:10,stroke:2})})]})}function Fe(e){let{kind:t,onPick:n,trigger:r}=e;return(0,Z.jsxs)(u,{children:[r,(0,Z.jsx)(d,{children:(0,Z.jsx)(p,{side:`bottom`,align:`start`,sideOffset:4,className:`z-50 outline-none`,children:(0,Z.jsx)(m,{"data-overlay":!0,className:`min-w-[220px] p-1`,children:(0,Z.jsx)(Ie,{kind:t,onPick:n})})})})]})}function Ie(e){let{kind:t,onPick:n}=e;return(0,Z.jsx)(Z.Fragment,{children:De.filter(e=>e.pickable).map(e=>(0,Z.jsxs)(s,{"data-testid":`flow-kind-${e.kind}`,className:$,onClick:()=>n(e.kind===`call`?void 0:e.kind),children:[(0,Z.jsx)(`span`,{className:`flex w-4 justify-center text-[var(--chrome-fg-900)]`,children:t===e.kind&&(0,Z.jsx)(oe,{size:14,stroke:2})}),(0,Z.jsxs)(`span`,{className:`flex flex-col`,children:[(0,Z.jsx)(`span`,{className:`text-[var(--chrome-fg-900)]`,children:e.label}),(0,Z.jsx)(`span`,{className:`text-[11px] text-[var(--chrome-fg-400)]`,children:e.hint})]})]},e.kind))})}function Le(e){let{label:t,icon:n,testId:r,children:i}=e;return(0,Z.jsxs)(H,{children:[(0,Z.jsxs)(W,{className:`${$} justify-between`,"data-testid":r,children:[(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[(0,Z.jsx)(`span`,{className:`text-[var(--chrome-fg-400)]`,children:n}),t]}),(0,Z.jsx)(I,{size:14,stroke:1.75,className:`text-[var(--chrome-fg-400)]`})]}),(0,Z.jsx)(d,{children:(0,Z.jsx)(p,{className:`z-50 outline-none`,children:(0,Z.jsx)(c,{"data-overlay":!0,className:Me,children:i})})})]})}function Re(e){let{index:t,count:n,step:r,hasNote:i,hasPayload:o,paths:c}=e,{onNote:g,onPayload:_,onChange:v,onMove:y,onRemove:b,onNewPath:x}=e,{onInsertBefore:E,onInsertAfter:D,onChangeBox:k}=e,ee=r.branches??[];return(0,Z.jsxs)(u,{children:[(0,Z.jsx)(f,{"aria-label":`Step options`,"data-testid":`flow-step-menu-${t}`,className:`${we} absolute right-1.5 top-2 opacity-0 transition-opacity focus-visible:opacity-100 group-hover:opacity-100 data-[popup-open]:opacity-100`,children:(0,Z.jsx)(a,{size:14,stroke:1.75})}),(0,Z.jsx)(d,{children:(0,Z.jsx)(p,{side:`bottom`,align:`end`,sideOffset:4,className:`z-50 outline-none`,children:(0,Z.jsxs)(m,{"data-overlay":!0,className:`min-w-[210px] p-1`,children:[(0,Z.jsx)(h,{testId:`flow-step-change-box`,icon:(0,Z.jsx)(be,{size:15,stroke:1.75}),onClick:k,children:`Change box…`}),(0,Z.jsx)(h,{testId:`flow-step-insert-above`,icon:(0,Z.jsx)(le,{size:15,stroke:1.75}),onClick:E,children:`Add a step above`}),(0,Z.jsx)(h,{testId:`flow-step-insert-below`,icon:(0,Z.jsx)(L,{size:15,stroke:1.75}),onClick:D,children:`Add a step below`}),(0,Z.jsx)(l,{}),!i&&(0,Z.jsx)(h,{testId:`flow-step-add-note`,icon:(0,Z.jsx)(z,{size:15,stroke:1.75}),onClick:g,children:`Add a note`}),(0,Z.jsx)(Le,{label:`How it travels`,icon:(0,Z.jsx)(U,{size:15,stroke:1.75}),testId:`flow-step-travels`,children:(0,Z.jsx)(Ie,{kind:r.kind??`call`,onPick:e=>v({kind:e})})}),!o&&(0,Z.jsx)(h,{testId:`flow-step-add-payload`,icon:(0,Z.jsx)(xe,{size:15,stroke:1.75}),onClick:_,children:`Add what it carries`}),(0,Z.jsx)(h,{testId:`flow-step-toggle-fails`,icon:(0,Z.jsx)(S,{size:15,stroke:1.75}),onClick:()=>v({fails:!r.fails||void 0}),children:r.fails?`Doesn't fail here`:`Fails here`}),(0,Z.jsxs)(Le,{label:`Another path from here`,icon:(0,Z.jsx)(O,{size:15,stroke:1.75}),testId:`flow-step-paths`,children:[c.map(e=>(0,Z.jsx)(s,{className:$,onClick:()=>v({branches:[...ee,e.id]}),children:e.name},e.id)),c.length>0&&(0,Z.jsx)(l,{}),(0,Z.jsxs)(s,{className:$,"data-testid":`flow-step-new-path`,onClick:x,children:[(0,Z.jsx)(V,{size:14,stroke:1.75,className:`text-[var(--chrome-fg-400)]`}),`New path`]})]}),(0,Z.jsx)(l,{}),(0,Z.jsx)(h,{testId:`flow-step-up`,icon:(0,Z.jsx)(C,{size:15,stroke:1.75}),disabled:t===0,onClick:()=>y(-1),children:`Move up`}),(0,Z.jsx)(h,{testId:`flow-step-down`,icon:(0,Z.jsx)(w,{size:15,stroke:1.75}),disabled:t===n-1,onClick:()=>y(1),children:`Move down`}),(0,Z.jsx)(h,{testId:`flow-step-remove`,icon:(0,Z.jsx)(T,{size:15,stroke:1.75}),onClick:b,children:`Remove step`})]})})})]})}function ze(e){e.stopPropagation(),(e.key===`Enter`&&!e.shiftKey||e.key===`Escape`)&&e.currentTarget.blur()}function Be(){let e=_(),{store:t}=e,n=v(e=>e.shapes),i=v(e=>e.viewMode),a=(0,X.useMemo)(()=>fe(n),[n]),o=(0,X.useMemo)(()=>y(n).filter(e=>pe(n,[e])?.id===e.id),[n]),s=()=>t.getState().setFlowsOpen(!1),c=(e,n)=>t.getState().setFlowPreview(n?{frameId:e,flowId:n}:null);return(0,X.useEffect)(()=>()=>t.getState().setFlowPreview(null),[t]),(0,Z.jsxs)(ge,{width:300,testId:`flow-list`,ariaLabel:`Flows`,onDismiss:s,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-1 py-2 pl-4 pr-2`,children:[(0,Z.jsx)(`span`,{className:`flex-1 text-[14px] font-medium text-[var(--chrome-fg-900)]`,children:`Flows`}),!i&&o.length>0&&(0,Z.jsx)(Ue,{frames:o,onPick:t=>Y(e,t.id)}),(0,Z.jsx)(r,{label:`Close`,side:`bottom`,children:(0,Z.jsx)(`button`,{type:`button`,"aria-label":`Close flows`,"data-testid":`flow-list-close`,onClick:s,className:he,children:(0,Z.jsx)(K,{size:16,stroke:1.75})})})]}),(0,Z.jsx)(`div`,{className:`mx-3 h-px bg-[var(--chrome-divider)]`}),(0,Z.jsx)(`div`,{className:`flex flex-1 flex-col gap-4 overflow-y-auto p-3`,children:a.length===0?(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-2 px-3 py-8 text-center`,children:[(0,Z.jsx)(`p`,{className:`text-balance text-[13px] font-medium text-[var(--chrome-fg-900)]`,children:`No flows yet`}),(0,Z.jsx)(`p`,{className:`text-balance text-[12px] leading-relaxed text-[var(--chrome-fg-500)]`,children:o.length>0?`A flow walks people through a diagram, one step at a time.`:`Put a diagram in a frame, then add a flow to it.`})]}):a.map(n=>(0,Z.jsxs)(`section`,{className:`flex flex-col gap-0.5`,onPointerLeave:()=>c(n.id,null),children:[(0,Z.jsx)(`h3`,{className:`truncate px-2 pb-1 text-[11px] font-medium text-[var(--chrome-fg-400)]`,children:n.label||`Untitled frame`}),P(n.flows??[]).map(({flow:r,depth:a,origin:o})=>(0,Z.jsx)(Ve,{flow:r,depth:a,forkStep:o?o.index+1:null,viewMode:i,onPreview:e=>c(n.id,e?r.id:null),onPlay:()=>J(e,n.id,r.id),onOpen:()=>t.getState().setFlowEdit({frameId:n.id,flowId:r.id})},r.id))]},n.id))})]})}function Ve(e){let{flow:t,depth:n,forkStep:i,viewMode:a,onPreview:o,onPlay:s,onOpen:c}=e,l=t.steps.length,u=t.steps.some(e=>e.fails),d=`${l} ${l===1?`step`:`steps`}`;return(0,Z.jsxs)(`div`,{"data-testid":`flow-list-row`,className:`group flex items-center gap-2 rounded-lg py-1.5 pr-1.5 transition-colors hover:bg-[var(--chrome-rest)]`,style:{paddingLeft:8+n*18},onPointerEnter:()=>o(!0),children:[(0,Z.jsx)(`span`,{className:`shrink-0 text-[var(--chrome-fg-400)]`,children:n>0?(0,Z.jsx)(O,{size:14,stroke:1.75}):(0,Z.jsx)(U,{size:14,stroke:1.75})}),(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`flow-list-open`,title:a?`Play ${t.name}`:`Edit ${t.name}`,className:`flex min-w-0 flex-1 cursor-pointer flex-col text-left`,onFocus:()=>o(!0),onBlur:()=>o(!1),onClick:a?s:c,children:[(0,Z.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,Z.jsx)(`span`,{className:`truncate text-[13px] font-medium text-[var(--chrome-fg-900)]`,children:t.name}),u&&(0,Z.jsx)(`span`,{title:`Shows something failing`,className:`h-1.5 w-1.5 shrink-0 rounded-full bg-[var(--flow-fail)]`})]}),(0,Z.jsx)(`span`,{className:`text-[11px] text-[var(--chrome-fg-400)]`,children:i===null?d:`From step ${i} · ${d}`})]}),l>0&&(0,Z.jsx)(r,{label:`Play`,side:`left`,children:(0,Z.jsx)(`button`,{type:`button`,"aria-label":`Play ${t.name}`,"data-testid":`flow-list-play`,className:`flex h-7 w-7 shrink-0 cursor-pointer items-center justify-center rounded-full bg-[var(--flow-accent)] text-white opacity-90 transition-opacity hover:opacity-100`,onClick:s,children:(0,Z.jsx)(q,{size:11})})})]})}var He=`flex h-7 cursor-pointer items-center gap-1 rounded-md px-2 text-[12.5px] font-medium text-[var(--flow-accent)] transition-colors hover:bg-[var(--chrome-hover)]`;function Ue(e){let{frames:t,onPick:n}=e,r=t.length===1?t[0]:void 0;return r?(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`flow-list-new`,title:`New flow on ${r.label||`the frame`}`,className:He,onClick:()=>n(r),children:[(0,Z.jsx)(V,{size:14,stroke:2}),`New`]}):(0,Z.jsxs)(u,{children:[(0,Z.jsxs)(f,{"data-testid":`flow-list-new`,className:He,children:[(0,Z.jsx)(V,{size:14,stroke:2}),`New`]}),(0,Z.jsx)(d,{children:(0,Z.jsx)(p,{side:`bottom`,align:`end`,sideOffset:6,className:`z-50 outline-none`,children:(0,Z.jsxs)(m,{"data-overlay":!0,className:`min-w-[240px] p-1`,children:[(0,Z.jsx)(`span`,{className:`block px-2 pb-1 pt-1.5 text-[11px] font-medium text-[var(--chrome-fg-400)]`,children:`On which diagram?`}),t.map(e=>(0,Z.jsx)(s,{"data-testid":`flow-list-new-frame`,className:`flex cursor-default select-none items-center gap-2 rounded-lg px-2 py-1.5 text-[13px] text-[var(--chrome-fg-700)] outline-none data-[highlighted]:bg-[var(--chrome-hover)]`,onClick:()=>n(e),children:e.label||`Untitled frame`},e.id))]})})})]})}function We(e){let{frameId:t,readOnly:n}=e,r=_();return(0,Z.jsx)(d,{children:(0,Z.jsx)(p,{side:`bottom`,align:`end`,sideOffset:6,className:`z-50 outline-none`,children:(0,Z.jsx)(m,{"data-overlay":!0,"data-testid":`figure-flow-list`,className:`w-[300px] p-1`,finalFocus:()=>r.store.getState().flowEdit===null,children:(0,Z.jsx)(Ge,{frameId:t,readOnly:n})})})})}function Ge(e){let{frameId:t,readOnly:n}=e,r=_(),i=v(e=>{let n=e.shapes.find(e=>e.id===t);return n?.type===`figure`?n:null}),a=v(e=>e.lastFlow[t]),o=e=>r.store.getState().setFlowPreview(e?{frameId:t,flowId:e}:null);return(0,X.useEffect)(()=>()=>r.store.getState().setFlowPreview(null),[r]),i?(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{className:`px-2 pb-1 pt-1.5 text-[11px] font-medium text-[var(--chrome-fg-400)]`,children:[`Flows on `,i.label||`this diagram`]}),(0,Z.jsx)(`div`,{onPointerLeave:()=>o(null),children:P(i.flows??[]).map(({flow:e,depth:t,origin:r})=>(0,Z.jsx)(qe,{frame:i,flow:e,depth:t,forkStep:r?r.index+1:null,last:e.id===a,readOnly:n,onPreview:o},e.id))}),!n&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(l,{}),(0,Z.jsx)(h,{testId:`figure-flow-new`,icon:(0,Z.jsx)(V,{size:15,stroke:1.75}),onClick:()=>Y(r,t),children:`New flow`})]})]}):null}var Ke=`flex h-7 w-7 shrink-0 cursor-default items-center justify-center rounded-lg text-[var(--chrome-fg-400)] outline-none data-[highlighted]:bg-[var(--chrome-hover)] data-[highlighted]:text-[var(--chrome-fg-800)]`;function qe(e){let{frame:t,flow:n,depth:r,forkStep:i,last:c,readOnly:l,onPreview:u}=e,f=_(),g=n.steps.length,v=n.steps.some(e=>e.fails);return(0,Z.jsxs)(`div`,{"data-testid":`figure-flow-row`,className:`flex items-center gap-0.5`,style:{paddingLeft:r*16},onPointerEnter:()=>u(n.id),children:[(0,Z.jsxs)(s,{"data-testid":`figure-flow-row-play`,disabled:g===0,className:`${me.menuItem} min-w-0 flex-1`,onFocus:()=>u(n.id),onClick:()=>J(f,t.id,n.id),children:[(0,Z.jsx)(`span`,{className:c?`text-[var(--flow-accent)]`:`text-[var(--chrome-fg-400)]`,children:r>0?(0,Z.jsx)(O,{size:15,stroke:1.75}):c?(0,Z.jsx)(q,{size:13}):(0,Z.jsx)(o,{size:15,stroke:1.75})}),(0,Z.jsxs)(`span`,{className:`flex min-w-0 flex-1 flex-col`,children:[(0,Z.jsx)(`span`,{className:`truncate text-[var(--chrome-fg-900)]`,children:n.name}),i!==null&&(0,Z.jsxs)(`span`,{className:`text-[11px] text-[var(--chrome-fg-400)]`,children:[`From step `,i]})]}),v&&(0,Z.jsx)(`span`,{title:`Shows something failing`,className:`h-1.5 w-1.5 shrink-0 rounded-full bg-[var(--flow-fail)]`}),(0,Z.jsxs)(`span`,{className:`shrink-0 text-[11px] tabular-nums text-[var(--chrome-fg-400)]`,children:[g,` `,g===1?`step`:`steps`]})]}),!l&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(s,{"aria-label":`Edit ${n.name}`,"data-testid":`figure-flow-row-edit`,className:Ke,onFocus:()=>u(n.id),onClick:()=>F(f,t.id,n.id),children:(0,Z.jsx)(B,{size:14,stroke:1.75})}),(0,Z.jsxs)(H,{children:[(0,Z.jsx)(W,{"aria-label":`More for ${n.name}`,"data-testid":`figure-flow-row-more`,className:Ke,children:(0,Z.jsx)(a,{size:14,stroke:1.75})}),(0,Z.jsx)(d,{children:(0,Z.jsx)(p,{className:`z-50 outline-none`,sideOffset:4,children:(0,Z.jsxs)(m,{"data-overlay":!0,className:`min-w-[160px] p-1`,children:[(0,Z.jsx)(h,{testId:`figure-flow-rename`,icon:(0,Z.jsx)(B,{size:15,stroke:1.75}),onClick:()=>f.store.getState().setFlowEdit({frameId:t.id,flowId:n.id,rename:!0}),children:`Rename`}),(0,Z.jsx)(h,{testId:`figure-flow-delete`,icon:(0,Z.jsx)(T,{size:15,stroke:1.75}),onClick:()=>E(f,t.id,n.id),children:`Delete`})]})})})]})]})]})}var Je=/^Flow \d+$/;function Ye(){let e=v(e=>e.flowEdit);return v(e=>e.rightPanel===`flow`)?e?(0,Z.jsx)(Xe,{frameId:e.frameId,flowId:e.flowId},e.flowId):(0,Z.jsx)(Be,{}):null}function Xe(e){let{frameId:t,flowId:n}=e,{ai:i}=g(),a=_(),{store:o}=a,s=v(e=>e.shapes),c=v(e=>e.flowPlay),l=v(e=>e.flowEdit)??{},u=c!==null,d=c?.flowId===n?c.step:null,f=(0,X.useMemo)(()=>{let e=s.find(e=>e.id===t);return e?.type===`figure`?e:null},[s,t]),p=(0,X.useMemo)(()=>f?de(s,f):[],[s,f]),m=f?.flows?.find(e=>e.id===n),h=m?ye(m,p):null,y=h?.steps.length??0,[x,S]=(0,X.useState)(!1),[C,w]=(0,X.useState)(!1),T=o.getState().patchFlowEdit;(0,X.useEffect)(()=>{l.rename&&(w(!0),o.getState().patchFlowEdit({rename:!1}))},[l.rename,o]);let P=ue({count:y,gap:1,onReorder:(e,r)=>M(a,t,n,e,r),onPress:e=>T({selected:e})}),F=()=>{h&&h.steps.length===0&&E(a,t,n),o.getState().setFlowEdit(null)},oe=()=>{h&&h.steps.length===0&&E(a,t,n),o.getState().setFlowsOpen(!0)},I=()=>{if(h&&h.steps.length>0&&Je.test(h.name)){S(!0);return}F()},ce=(0,X.useRef)(I);ce.current=I;let le=(0,X.useRef)(y);if(le.current=y,(0,X.useEffect)(()=>{let e=e=>{let r=o.getState();if(r.flowPlay||b(e.target)||(e.target instanceof Element?e.target:null)?.closest(`[role=menu], [role=dialog]`))return;let i=r.flowEdit??{},s=le.current,c=N(i,s);if(e.key===`Escape`){if(e.preventDefault(),e.stopPropagation(),i.picking!==null&&i.picking!==void 0){r.patchFlowEdit({picking:null});return}if(k(i,s)){r.patchFlowEdit({slot:null});return}ce.current();return}if(c!==null){if(e.key===`Delete`||e.key===`Backspace`){e.preventDefault(),e.stopPropagation(),ie(a,t,n,c);return}if(e.altKey&&(e.key===`ArrowUp`||e.key===`ArrowDown`)){e.preventDefault(),e.stopPropagation();let r=c+(e.key===`ArrowUp`?-1:1);r>=0&&r<s&&M(a,t,n,c,r)}}};return window.addEventListener(`keydown`,e,!0),()=>window.removeEventListener(`keydown`,e,!0)},[o,a,t,n]),!f||!h)return null;let L=f.flows??[],R=new Map(p.map(e=>[e.id,_e(p,e)])),z=ve(L,n),B=z?.flow.steps[z.index],V=B?.title??``,H=D(p,h.steps,B),U=A(l,y),W=N(l,y),G=N({selected:l.picking},y),fe=te(l,y),pe=L.filter(e=>e.id!==n).map(e=>({id:e.id,name:e.name}));function me(e){let t=H.get(e);return t?{names:j(t,R),onAttach:()=>ne(a,t)}:null}function be(e){let r=e.trim();r&&r!==h?.name&&ae(a,t,n,e=>({...e,name:r}))}return(0,Z.jsxs)(ge,{width:300,testId:`flow-panel`,ariaLabel:`Flow`,onDismiss:F,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-0.5 py-2 pl-1.5 pr-2`,children:[(0,Z.jsx)(r,{label:`All flows`,side:`bottom`,children:(0,Z.jsx)(`button`,{type:`button`,"aria-label":`All flows`,"data-testid":`flow-panel-back`,onClick:oe,className:he,children:(0,Z.jsx)(se,{size:16,stroke:1.75})})}),(0,Z.jsx)(`div`,{className:`min-w-0 flex-1`,children:C?(0,Z.jsx)(`input`,{autoFocus:!0,"aria-label":`Flow name`,"data-testid":`flow-name`,className:`${Se} text-[14px] font-medium`,defaultValue:h.name,onFocus:e=>e.target.select(),onBlur:e=>{be(e.target.value),w(!1)},onKeyDown:ze}):(0,Z.jsx)(tt,{current:h,flows:L,onPick:e=>o.getState().setFlowEdit({frameId:t,flowId:e}),onRename:()=>w(!0),onNew:()=>Y(a,t),onDelete:()=>E(a,t,n)})}),(0,Z.jsx)(r,{label:`Close`,side:`bottom`,children:(0,Z.jsx)(`button`,{type:`button`,"aria-label":`Close the flow panel`,"data-testid":`flow-panel-done`,onClick:F,className:he,children:(0,Z.jsx)(K,{size:16,stroke:1.75})})})]}),(0,Z.jsxs)(`div`,{className:`flex flex-col gap-1.5 px-4 pb-2.5`,children:[(0,Z.jsxs)(`span`,{className:`truncate text-[11px] text-[var(--chrome-fg-400)]`,children:[f.label||`Untitled frame`,` · `,y,` `,y===1?`step`:`steps`,y>1&&` · drag to reorder`]}),z&&(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`flow-origin`,title:`Open ${z.flow.name}`,className:`-ml-1 flex min-w-0 cursor-pointer items-center gap-1 self-start rounded-md bg-[color-mix(in_srgb,var(--flow-accent)_10%,transparent)] px-1.5 py-1 text-[11.5px] text-[var(--flow-accent)] transition-colors hover:bg-[color-mix(in_srgb,var(--flow-accent)_16%,transparent)]`,onClick:()=>o.getState().setFlowEdit({frameId:t,flowId:z.flow.id}),children:[(0,Z.jsx)(O,{size:12,stroke:2,className:`shrink-0`}),(0,Z.jsxs)(`span`,{className:`truncate`,children:[`From `,z.flow.name,`, step `,z.index+1]})]})]}),(0,Z.jsx)(`div`,{className:`mx-3 h-px bg-[var(--chrome-divider)]`}),(0,Z.jsx)(`div`,{ref:P.listRef,className:`flex flex-1 flex-col gap-1 overflow-y-auto p-3`,children:y===0?(0,Z.jsx)($e,{fork:z?{title:V,step:z.index+1}:null,onAi:i?()=>{E(a,t,n),o.getState().askAi(`Write a flow for the frame "${f.label||`Untitled`}" (${f.id}) showing `)}:null}):(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`ol`,{className:`flex flex-col gap-px pt-1`,"data-testid":`flow-steps`,children:h.steps.map((e,r)=>(0,Z.jsx)(Ze,{before:U===r&&U<y,hidden:P.dragging,number:r+1,onCancel:()=>T({slot:null}),children:(0,Z.jsx)(ke,{step:e,index:r,count:y,current:d===r,selected:W===r,picking:G===r,names:R,otherFlows:pe,loose:me(r),rowRef:P.setItemRef(r),rowStyle:P.rowStyle(r),grip:P.rowHandlers(r),actions:{onPlay:()=>J(a,t,n,r),onChange:e=>re(a,t,n,r,e),onMove:e=>M(a,t,n,r,r+e),onRemove:()=>ie(a,t,n,r),onNewPath:()=>ee(a,t,n,r),onSelect:()=>{o.getState().flowEdit?.selected!==r&&T({selected:r})},onHover:e=>T({hovered:e?r:null}),onInsertBefore:()=>T({slot:r,picking:null}),onInsertAfter:()=>T({slot:r+1<y?r+1:null,picking:null}),onChangeBox:()=>T({picking:r,selected:r})}})},`${e.target}-${r}`))}),(0,Z.jsx)(Qe,{picking:G,inserting:U<y,next:y+1,joined:fe,onCancelPick:()=>T({picking:null}),onToEnd:()=>T({slot:null})})]})}),(0,Z.jsx)(`div`,{className:`border-t border-[var(--chrome-ring)] p-3`,children:x?(0,Z.jsx)(et,{suggestion:nt(h),onSave:e=>{be(e),F()},onSkip:F}):(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Z.jsxs)(`button`,{type:`button`,className:`${Ee} h-9 flex-1`,"data-testid":`flow-play`,disabled:y===0||u,onClick:()=>J(a,t,n),children:[(0,Z.jsx)(q,{size:12}),`Preview`]}),(0,Z.jsx)(`button`,{type:`button`,className:`${Te} flex-1`,"data-testid":`flow-done`,onClick:I,children:`Done`})]})})]})}function Ze(e){let{before:t,hidden:n,number:i,onCancel:a,children:o}=e;return(0,Z.jsxs)(Z.Fragment,{children:[t&&(0,Z.jsxs)(`li`,{"data-testid":`flow-slot`,className:`my-1 flex items-center gap-2.5 rounded-lg border border-dashed border-[color-mix(in_srgb,var(--flow-accent)_55%,transparent)] bg-[color-mix(in_srgb,var(--flow-accent)_6%,transparent)] py-2 pl-5 pr-1.5 text-[12px] text-[var(--flow-accent)] ${n?`invisible`:``}`,children:[(0,Z.jsx)(`span`,{className:`flex h-6 min-w-6 shrink-0 items-center justify-center rounded-full border border-dashed border-[var(--flow-accent)]`,children:(0,Z.jsx)(V,{size:12,stroke:2.5})}),(0,Z.jsxs)(`span`,{className:`flex-1`,children:[`Click the box for a new step `,i]}),(0,Z.jsx)(r,{label:`Add at the end instead`,side:`left`,children:(0,Z.jsx)(`button`,{type:`button`,"aria-label":`Add at the end instead`,"data-testid":`flow-slot-cancel`,className:`flex h-6 w-6 cursor-pointer items-center justify-center rounded-md hover:bg-[color-mix(in_srgb,var(--flow-accent)_12%,transparent)]`,onClick:a,children:(0,Z.jsx)(K,{size:13,stroke:2})})})]}),o]})}function Qe(e){let{picking:t,inserting:n,next:r,joined:i,onCancelPick:a,onToEnd:o}=e,s=`flex h-6 min-w-6 shrink-0 items-center justify-center rounded-full bg-[color-mix(in_srgb,var(--flow-accent)_12%,transparent)] px-1.5 text-[12px] font-semibold tabular-nums text-[var(--flow-accent)]`;return t===null?n?(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`flow-hint`,className:`mt-1 flex cursor-pointer items-center gap-2.5 rounded-lg border border-dashed border-[var(--chrome-divider)] px-2 py-2.5 text-left text-[12px] text-[var(--chrome-fg-500)] transition-colors hover:bg-[var(--chrome-rest)]`,onClick:o,children:[(0,Z.jsx)(`span`,{className:s,children:(0,Z.jsx)(V,{size:12,stroke:2.5})}),`Add at the end instead`]}):(0,Z.jsxs)(`div`,{"data-testid":`flow-hint`,className:`mt-1 flex items-center gap-2.5 rounded-lg border border-dashed border-[var(--chrome-divider)] px-2 py-2.5 text-[12px] text-[var(--chrome-fg-500)]`,children:[(0,Z.jsx)(`span`,{className:s,children:r}),(0,Z.jsxs)(`span`,{children:[`Click the next box or arrow`,i!==null&&(0,Z.jsxs)(`span`,{className:`block text-[11px] text-[var(--chrome-fg-400)]`,children:[`Shift-click to add it to step `,i+1]})]})]}):(0,Z.jsxs)(`div`,{"data-testid":`flow-hint`,className:`mt-1 flex items-center gap-2.5 rounded-lg border border-dashed border-[var(--flow-accent)] px-2 py-2.5 text-[12px] text-[var(--chrome-fg-700)]`,children:[(0,Z.jsx)(`span`,{className:s,children:t+1}),(0,Z.jsxs)(`span`,{className:`flex-1`,children:[`Click the box step `,t+1,` should light`,(0,Z.jsx)(`span`,{className:`block text-[11px] text-[var(--chrome-fg-400)]`,children:`Its title and notes stay`})]}),(0,Z.jsx)(`button`,{type:`button`,className:Ce,onClick:a,children:`Cancel`})]})}function $e(e){let{onAi:t,fork:n}=e;return n?(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-3 px-3 py-8 text-center`,"data-testid":`flow-empty`,children:[(0,Z.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-[var(--chrome-rest)] px-5 py-4`,"aria-hidden":!0,children:[(0,Z.jsxs)(`span`,{className:`flex h-7 items-center gap-1 rounded-full bg-[var(--chrome-popup)] px-2.5 text-[12px] font-medium text-[var(--chrome-fg-700)] ring-1 ring-[var(--chrome-ring)]`,children:[(0,Z.jsx)(O,{size:13,stroke:2,className:`text-[var(--flow-accent)]`}),n.title||`Step ${n.step}`]}),(0,Z.jsx)(`span`,{className:`h-0.5 w-5 rounded-full bg-[color-mix(in_srgb,var(--flow-accent)_35%,transparent)]`}),(0,Z.jsx)(`span`,{className:`flex h-7 w-7 items-center justify-center rounded-full bg-[var(--flow-accent)] text-[12px] font-semibold text-white`,children:`1`})]}),(0,Z.jsxs)(`p`,{className:`text-balance text-[13px] font-medium text-[var(--chrome-fg-900)]`,children:[`What happens after `,n.title||`step ${n.step}`,`?`]}),(0,Z.jsxs)(`p`,{className:`text-balance text-[12px] leading-relaxed text-[var(--chrome-fg-500)]`,children:[`Click where it goes next. Viewers can pick this path at step `,n.step,`.`]})]}):(0,Z.jsxs)(`div`,{className:`flex flex-col items-center gap-3 px-3 py-8 text-center`,"data-testid":`flow-empty`,children:[(0,Z.jsx)(`div`,{className:`flex items-center gap-2 rounded-xl bg-[var(--chrome-rest)] px-5 py-4`,"aria-hidden":!0,children:[1,2,3].map(e=>(0,Z.jsxs)(`span`,{className:`flex items-center gap-2`,children:[e>1&&(0,Z.jsx)(`span`,{className:`h-0.5 w-5 rounded-full bg-[color-mix(in_srgb,var(--flow-accent)_35%,transparent)]`}),(0,Z.jsx)(`span`,{className:`flex h-7 w-7 items-center justify-center rounded-full text-[12px] font-semibold ${e===1?`bg-[var(--flow-accent)] text-white`:`bg-[var(--chrome-popup)] text-[var(--flow-accent)] ring-1 ring-[color-mix(in_srgb,var(--flow-accent)_30%,transparent)]`}`,children:e})]},e))}),(0,Z.jsx)(`p`,{className:`text-balance text-[13px] font-medium text-[var(--chrome-fg-900)]`,children:`Click the boxes in order`}),(0,Z.jsx)(`p`,{className:`text-balance text-[12px] leading-relaxed text-[var(--chrome-fg-500)]`,children:`Start with whoever kicks things off.`}),t&&(0,Z.jsxs)(`button`,{type:`button`,"data-testid":`flow-ai`,className:`flex cursor-pointer items-center gap-1.5 rounded-md px-1.5 py-1 text-[12px] text-[var(--chrome-fg-500)] transition-colors hover:bg-[var(--chrome-hover)] hover:text-[var(--chrome-fg-900)] disabled:pointer-events-none disabled:text-[var(--chrome-fg-300)]`,onClick:t,children:[(0,Z.jsx)(G,{size:13,stroke:1.75}),`Or write the steps with AI`]})]})}function et(e){let{suggestion:t,onSave:n,onSkip:r}=e,[i,a]=(0,X.useState)(t);return(0,Z.jsxs)(`form`,{className:`flex flex-col gap-2`,"data-testid":`flow-name-prompt`,onSubmit:e=>{e.preventDefault(),n(i)},children:[(0,Z.jsxs)(`label`,{className:`flex flex-col gap-1`,children:[(0,Z.jsx)(`span`,{className:`text-[12px] font-medium text-[var(--chrome-fg-800)]`,children:`Name this flow`}),(0,Z.jsx)(`input`,{autoFocus:!0,"data-testid":`flow-name-input`,className:`${Se} h-8 ring-[var(--chrome-ring)]`,value:i,onFocus:e=>e.target.select(),onChange:e=>a(e.target.value),onKeyDown:e=>{e.stopPropagation(),e.key===`Escape`&&r()}})]}),(0,Z.jsxs)(`div`,{className:`flex gap-2`,children:[(0,Z.jsx)(`button`,{type:`button`,className:`${Ee} h-9 flex-1`,"data-testid":`flow-name-skip`,onClick:r,children:`Skip`}),(0,Z.jsx)(`button`,{type:`submit`,className:`${Te} flex-1`,"data-testid":`flow-name-save`,disabled:!i.trim(),children:`Save`})]})]})}function tt(e){let{current:t,flows:n,onPick:r,onRename:a,onNew:o,onDelete:c}=e,g=(0,X.useRef)(!1);return(0,Z.jsxs)(u,{onOpenChange:e=>{e&&(g.current=!1)},children:[(0,Z.jsxs)(f,{"data-testid":`flow-switcher`,className:`flex max-w-full cursor-pointer items-center gap-1 rounded-md px-1.5 py-1 text-left transition-colors hover:bg-[var(--chrome-hover)] data-[popup-open]:bg-[var(--chrome-hover)]`,children:[(0,Z.jsx)(`span`,{className:`truncate text-[14px] font-medium text-[var(--chrome-fg-900)]`,children:t.name}),(0,Z.jsx)(i,{size:14,stroke:1.75,className:`shrink-0 text-[var(--chrome-fg-400)]`})]}),(0,Z.jsx)(d,{children:(0,Z.jsx)(p,{side:`bottom`,align:`start`,sideOffset:4,className:`z-50 outline-none`,children:(0,Z.jsxs)(m,{"data-overlay":!0,className:`min-w-[240px] p-1`,finalFocus:()=>!g.current,children:[P(n).map(({flow:e,depth:n})=>(0,Z.jsxs)(s,{"data-testid":`flow-switcher-item`,className:`flex cursor-default select-none items-center gap-2 rounded-lg py-1.5 pr-2 text-[13px] text-[var(--chrome-fg-700)] outline-none data-[highlighted]:bg-[var(--chrome-hover)]`,style:{paddingLeft:8+n*16},onClick:()=>r(e.id),children:[(0,Z.jsx)(`span`,{className:`text-[var(--chrome-fg-400)]`,children:n>0?(0,Z.jsx)(O,{size:14,stroke:1.75}):(0,Z.jsx)(U,{size:14,stroke:1.75})}),(0,Z.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-[var(--chrome-fg-900)]`,children:e.name}),(0,Z.jsx)(`span`,{className:`text-[11px] tabular-nums text-[var(--chrome-fg-400)]`,children:e.steps.length}),(0,Z.jsx)(`span`,{className:`flex w-4 justify-center text-[var(--chrome-fg-900)]`,children:e.id===t.id&&(0,Z.jsx)(oe,{size:14,stroke:2})})]},e.id)),(0,Z.jsx)(l,{}),(0,Z.jsx)(h,{testId:`flow-name-edit`,icon:(0,Z.jsx)(B,{size:15,stroke:1.75}),onClick:()=>{g.current=!0,a()},children:`Rename`}),(0,Z.jsx)(h,{testId:`flow-new`,icon:(0,Z.jsx)(V,{size:15,stroke:1.75}),onClick:o,children:`New flow on this frame`}),(0,Z.jsx)(h,{testId:`flow-delete`,icon:(0,Z.jsx)(T,{size:15,stroke:1.75}),onClick:c,children:`Delete this flow`})]})})})]})}function nt(e){let t=e.steps[0]?.title.trim(),n=e.steps[e.steps.length-1]?.title.trim();return t?n&&n!==t?`${t} to ${n}`:t:e.name}export{We as FlowMenuPopup,Ye as FlowPanel};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-2Zwg-L3c.js";import{Xr as r,Yr as i,an as a,w as o}from"./slides-D9bnXqtf.js";import{r as s,t as c}from"./dom-PAoZruqo.js";import{g as l}from"./selection-overlay-primitives-hWJ1xjF7.js";import{c as u,l as d,o as f}from"./flows-GGbkNqs8.js";var p=e(t(),1),m=n(),h=6;function g(e,t){if(e.type===`arrow`)return o(i(e),t);let n=a(e);return o({x:n.x,y:n.y},t)}function _(e,t,n=h,r){let i=l(e,r),a=o({x:i.x,y:i.y},t);return{left:a.x-n,top:a.y-n,width:i.width*t.zoom+n*2,height:i.height*t.zoom+n*2}}function v(e){return new Set(e.steps.flatMap((e,t)=>e.fails?[t+1]:[]))}function y(e){let t=new Map;return e.steps.forEach((e,n)=>{for(let r of u(e))t.set(r,[...t.get(r)??[],n+1])}),t}function b(e){let{numbers:t,byId:n,viewport:r,current:i,failing:a}=e;return(0,m.jsx)(m.Fragment,{children:[...t].map(([e,t])=>{let o=n.get(e);if(!o)return null;let s=g(o,r);return(0,m.jsx)(`span`,{"data-testid":`flow-step-badge`,"data-current":i!==null&&t.includes(i)||void 0,className:`pointer-events-none absolute z-10 flex items-center gap-1 transition-opacity ${o.type===`arrow`?`-translate-x-1/2 -translate-y-[calc(100%+14px)]`:`-translate-x-full -translate-y-full`}`,style:{left:s.x-2,top:s.y-2},children:t.map(e=>{let t=i===null||e===i;return(0,m.jsx)(`span`,{className:`flex h-[22px] min-w-[22px] items-center justify-center rounded-full px-1.5 text-[11.5px] font-semibold tabular-nums transition-colors ${a.has(e)&&t?`bg-[var(--flow-fail)] text-white`:t?`bg-[var(--flow-accent)] text-white`:`bg-[color-mix(in_srgb,var(--flow-accent)_14%,var(--chrome-popup))] text-[var(--flow-accent)]`} ${e===i?`scale-110`:``}`,children:e},e)})},e)})})}var x=`http://www.w3.org/2000/svg`,S=48;function C(e,t){if(e.kind===`ghost`){let n=t.get(e.from),r=t.get(e.to);if(!n||!r)return null;let i=a(n),o=a(r);return w([D(i,E(o)),D(o,E(i))].map(e=>[e]),!0)}let n=e.hops.flatMap(e=>{let t=A(r(e.arrow));return t.length<2?[]:[e.reversed?t.reverse():t]});return n.length>0?w(n,!1):null}function w(e,t){let n=[],r=[],i=0;return(t?[e.flat()]:e).forEach((e,t)=>{if(t>0){let t=T(n[n.length-1],e[0]);r.push({from:i,to:i+t,inside:!0}),i+=t}let a=i;e.forEach((t,r)=>{r>0&&(i+=T(e[r-1],t)),n.push(t)}),r.push({from:a,to:i,inside:!1})}),{d:n.map((e,t)=>`${t===0?`M`:`L`} ${e.x} ${e.y}`).join(` `),length:i,legs:r}}function T(e,t){return Math.hypot(t.x-e.x,t.y-e.y)}function E(e){return{x:e.x+e.width/2,y:e.y+e.height/2}}function D(e,t){let n=E(e),r=t.x-n.x,i=t.y-n.y;if(r===0&&i===0)return n;let a=Math.min(r===0?1/0:e.width/2/Math.abs(r),i===0?1/0:e.height/2/Math.abs(i));return{x:n.x+r*a,y:n.y+i*a}}var O=null;function k(){if(O)return O;let e=document.createElementNS(x,`svg`);e.setAttribute(`aria-hidden`,`true`),e.style.cssText=`position:absolute;width:0;height:0;overflow:hidden;visibility:hidden`;let t=document.createElementNS(x,`path`);return e.append(t),document.body.append(e),O=t,t}function A(e){let t=k();t.setAttribute(`d`,e);let n=t.getTotalLength();return!Number.isFinite(n)||n===0?[]:Array.from({length:49},(e,r)=>{let i=t.getPointAtLength(n*r/S);return{x:i.x,y:i.y}})}var j=.16,M=.45,N=3,P=1.5,F=100,I=[];function L(e){let{frameId:t,flow:n,targets:r,index:i,viewport:a,lead:o=I}=e,l=(0,p.useMemo)(()=>new Map(r.map(e=>[e.id,e])),[r]),h=n.steps[i],g=(0,p.useMemo)(()=>f(r,[...o,...n.steps],o.length+i),[r,o,n.steps,i]),_=h?.fails?`var(--flow-fail)`:`var(--flow-accent)`,x=(0,p.useMemo)(()=>h?u(h).flatMap(e=>l.get(e)??[]):[],[h,l]),S=(0,p.useMemo)(()=>{let e=[...o,...n.steps.slice(0,i)],t=e.slice(Math.max(0,e.length-N)).reverse().flatMap((e,t)=>u(e).map(e=>({id:e,back:t})));return x.flatMap(e=>{let n;if(e.type===`arrow`)n={kind:`arrows`,hops:[{arrow:e,reversed:!1}],through:[],cost:0};else{let i=1/0;for(let a of t){let t=d(r,a.id,e.id,{reply:g===`reply`});if(!t)continue;let o=(t.kind===`ghost`?F:t.cost)+a.back*P;o<i&&(i=o,n=t)}}let a=n?C(n,l):null;return n&&a?[{key:`${i}-${e.id}`,route:n,track:a}]:[]})},[x,o,n.steps,i,r,g,l]),w=(0,p.useMemo)(()=>{let e=new Set([t,...x.map(e=>e.id)]),a=x.filter(e=>e.type===`arrow`).map(e=>e.id);for(let t of S)t.route.kind===`arrows`&&(t.route.hops.forEach(t=>{e.add(t.arrow.id),a.push(t.arrow.id)}),t.route.through.forEach(t=>e.add(t)));let l=new Set([...o,...n.steps.slice(0,i)].flatMap(u)),d=[],f=[];for(let t of r){if(e.has(t.id))continue;let n=t.type===`figure`;(l.has(t.id)||n?f:d).push(s(t.id),c(`data-icon-label`,t.id))}let p=(e,t)=>e.length>0?`${e.join(`,`)}{opacity:${t}!important}`:``;return[`[data-canvas-root] :is([data-shape-id],[data-icon-label]){transition:opacity 260ms ease}`,`[data-testid="hover-indicator"]{display:none}`,p(d,j),p(f,M),Y(a,_,g)].join(``)},[t,x,o,S,n.steps,i,r,_,g]);return h?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(`style`,{"data-testid":`flow-dim`,children:w}),S.length>0&&(0,m.jsx)(z,{handOffs:S,kind:g,color:_,fails:h.fails,payload:h.payload,viewport:a},`${n.id}-${i}`),(0,m.jsx)(b,{numbers:y(n),byId:l,viewport:a,current:i+1,failing:v(n)})]}):null}function R(e){let t=document.querySelector(`[data-canvas-root]`);if(!t)return[];let n=t.getBoundingClientRect();return e.flatMap(e=>e.route.kind===`arrows`?e.route.hops.flatMap(r=>{let i=t.querySelector(`[data-testid="arrow-label"]${s(r.arrow.id)}`);if(!i)return[];let a=i.getBoundingClientRect();return[{key:`${e.key}-${r.arrow.id}`,x:a.left-n.left,y:a.top-n.top,width:a.width,height:a.height}]}):[])}function z(e){let{handOffs:t,kind:n,color:r,fails:i,payload:a,viewport:o}=e,s=1/o.zoom,c=W(t,o.zoom),l=R(t),u=`flow-hand-off-mask-${t[0]?.key??``}`;return(0,m.jsxs)(`svg`,{"data-testid":`flow-hand-off`,"data-kind":n,"data-fails":i||void 0,className:`pointer-events-none absolute inset-0 h-full w-full overflow-visible`,children:[l.length>0&&(0,m.jsxs)(`mask`,{id:u,maskUnits:`userSpaceOnUse`,x:`-100000`,y:`-100000`,width:`200000`,height:`200000`,children:[(0,m.jsx)(`rect`,{x:`-100000`,y:`-100000`,width:`200000`,height:`200000`,fill:`white`}),l.map(e=>(0,m.jsx)(`rect`,{x:e.x,y:e.y,width:e.width,height:e.height,rx:4,fill:`black`},e.key))]}),(0,m.jsx)(`g`,{mask:l.length>0?`url(#${u})`:void 0,children:(0,m.jsx)(`g`,{transform:`translate(${o.x} ${o.y}) scale(${o.zoom})`,children:t.map(e=>{let t=e.route.kind===`ghost`,i=t||n===`async`;return(0,m.jsxs)(`g`,{"data-testid":t?`flow-ghost`:`flow-route`,children:[t&&(0,m.jsx)(`path`,{d:e.track.d,fill:`none`,stroke:r,strokeWidth:(n===`reply`?2.5:3.5)*s,strokeLinecap:`round`,strokeDasharray:i?`${6*s} ${6*s}`:`1`,strokeDashoffset:i?void 0:1,pathLength:i?void 0:1,opacity:n===`reply`?.6:.85,children:!i&&(0,m.jsx)(`animate`,{attributeName:`stroke-dashoffset`,from:`1`,to:`0`,dur:`0.7s`,fill:`freeze`})}),(0,m.jsxs)(`g`,{opacity:0,children:[(0,m.jsx)(`animateMotion`,{dur:`${c.seconds}s`,repeatCount:`indefinite`,path:e.track.d,calcMode:`linear`,keyPoints:`0;1;1`,keyTimes:`0;${c.travel(e.track)};1`}),(0,m.jsx)(`animate`,{attributeName:`opacity`,dur:`${c.seconds}s`,repeatCount:`indefinite`,calcMode:`linear`,...G(e.track,c.travel(e.track))}),(0,m.jsx)(`circle`,{r:11*s,fill:`var(--canvas-bg, white)`,opacity:.9}),(0,m.jsx)(`circle`,{r:7*s,fill:n===`async`?`var(--canvas-bg, white)`:r,stroke:r,strokeWidth:3*s}),a&&(0,m.jsx)(J,{text:a,scale:s,color:r})]})]},e.key)})})})]})}var B=380,V=.7,H=.9,U=.12;function W(e,t){let n=Math.max(...e.map(e=>e.track.length)),r=Math.max(H,n*t/B),i=r+V;return{seconds:Number(i.toFixed(3)),travel:e=>Number((r*(e.length/n||1)/i).toFixed(4))}}function G(e,t){let n=n=>n/(e.length||1)*t,r=U*t*Math.min(1,300/(e.length||1)),i=[[0,0],[r,1]];for(let t of e.legs){if(!t.inside)continue;let e=n(t.from),a=n(t.to);i.push([Math.max(e-r/2,0),1],[e,0],[a,0],[a+r/2,1])}i.push([Math.max(t-r,0),1],[t,0],[1,0]);let a=[],o=[],s=0;for(let[e,t]of i){let n=Math.min(1,Math.max(s,e));a.push(Number(n.toFixed(4))),o.push(t),s=n}return{keyTimes:a.join(`;`),values:o.join(`;`)}}var K=11,q=6;function J(e){let{text:t,scale:n,color:r}=e,i=(t.length*K*.6+q*2)*n,a=17*n,o=14*n;return(0,m.jsxs)(`g`,{"data-testid":`flow-payload`,transform:`translate(${-i/2} ${o})`,children:[(0,m.jsx)(`rect`,{width:i,height:a,rx:a/2,fill:r}),(0,m.jsx)(`text`,{x:i/2,y:a/2,textAnchor:`middle`,dominantBaseline:`central`,fill:`white`,fontSize:K*n,fontWeight:500,fontFamily:`ui-sans-serif, system-ui, sans-serif`,children:t})]})}function Y(e,t,n){if(e.length===0)return``;let r=t=>e.map(e=>`${s(e)} [data-testid="${t}"]`).join(`,`),i=`${r(`arrow-stroke`)},${r(`arrow-head`)}`,a=e.flatMap(e=>[`arrow-stroke`,`arrow-head`].map(t=>`${s(e)} [data-testid="${t}"]:not([fill="none"])`)).join(`,`),o=n===`async`?`${r(`arrow-stroke`)}{stroke-dasharray:8 7!important}`:``;return[`${i}{stroke:${t}!important;transition:stroke 200ms ease,fill 200ms ease}`,`${a}{fill:${t}!important}`,o].join(``)}export{_ as a,v as i,b as n,y as o,g as r,L as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./core-CBnmD9hT.js";function t(e,t){let n=e.store.getState().shapes.find(e=>e.id===t);return n?.type===`figure`?n:null}function n(e,t,n){e.store.getState().updateShape(t.id,{flows:n.length>0?n:void 0})}function r(r,i){let a=t(r,i);if(!a)return null;let o=a.flows??[],s=e(o);return n(r,a,[...o,s]),r.store.getState().setFlowEdit({frameId:i,flowId:s.id}),s}function i(e,t,n,r=0){e.store.getState().setFlowPlay({frameId:t,flowId:n,step:r})}export{n as i,i as n,r,t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{W as e}from"./style-BENGW2ZV.js";import{Ar as t,Mr as n,jr as r}from"./slides-D9bnXqtf.js";var i={simple:`Frame`,phone:`Phone`,tablet:`Tablet`,browser:`Browser`,window:`Desktop window`,lanes:`Swimlanes`,vlanes:`Vertical swimlanes`,boundary:`Boundary`};function a(e){return e===`lanes`||e===`vlanes`}function o(e){return e===`vlanes`}var s={simple:{width:960,height:540},phone:{width:270,height:560},tablet:{width:400,height:540},browser:{width:560,height:400},window:{width:520,height:360},lanes:{width:760,height:420},vlanes:{width:720,height:460},boundary:{width:360,height:260}},c=[`Lane 1`,`Lane 2`,`Lane 3`],l=.7;function u(e){return e&&e.length>0?e.length:c.length}function d(e,t){if(!t||t.length!==e||e===0)return Array.from({length:e},()=>1/e);let n=t.map(e=>Math.max(0,e)),r=n.reduce((e,t)=>e+t,0)||1;return n.map(e=>e/r)}function f(e,t,n){let r=d(e,n),i=[0],a=0;for(let e of r)a+=e*t,i.push(a);return i}var p=.06;function m(t,n,r){let i=[...t],a=i[n]+i[n+1],o=e(i[n]+r,p,a-p);return i[n]=o,i[n+1]=a-o,i}function h(t,n){let r=Math.min(n.width,n.height);return t===`phone`?Math.min(e(r*.13,10,44),n.width/2,n.height/2):t===`tablet`?Math.min(e(r*.07,8,26),n.width/2,n.height/2):t===`browser`||t===`window`?Math.min(8,n.width/2,n.height/2):10}function g(e,n){let r=e.y+n/2;return[0,1,2].map(n=>t(e.x+15+n*13,r,3.5))}var _=18,v=12,y=14,b=20,x=5,S=18;function C(i,a,o,s){let c=h(i,a),l=n(a.x,a.y,a.width,a.height,c),d=[];if(i===`phone`){let t=a.x+a.width/2;if(a.height>120&&a.width>80){let n=e(a.width*.16,24,56),i=a.y+_;d.push(r(t-n/2,i,t+n/2,i));let o=e(a.width*.3,40,110),s=a.y+a.height-v;d.push(r(t-o/2,s,t+o/2,s))}return{border:l,details:d}}if(i===`tablet`){let e=a.x+a.width/2;if(a.height>140&&a.width>100){d.push(t(e,a.y+y,2.5));let n=a.y+a.height-b;d.push(t(e,n,x))}return{border:l,details:d}}if(i===`browser`||i===`window`){let e=i===`browser`?36:32;if(a.height>e*2.2&&a.width>70&&(d.push(r(a.x,a.y+e,a.x+a.width,a.y+e)),d.push(...g(a,e)),i===`browser`&&a.width>200)){let t={x:a.x+56,y:a.y+(e-S)/2,width:a.width-56-16,height:S};d.push(n(t.x,t.y,t.width,t.height,S/2))}return{border:l,details:d}}if(i===`lanes`||i===`vlanes`){let e=u(o);if(i===`vlanes`){let t=f(e,a.width,s);for(let n=1;n<e;n+=1){let e=a.x+t[n];d.push(r(e,a.y,e,a.y+a.height))}return a.height>30*2.5&&d.push(r(a.x,a.y+30,a.x+a.width,a.y+30)),{border:l,details:d}}let t=f(e,a.height,s);for(let n=1;n<e;n+=1){let e=a.y+t[n];d.push(r(a.x,e,a.x+a.width,e))}return a.width>30*2.5&&d.push(r(a.x+30,a.y,a.x+30,a.y+a.height)),{border:l,details:d}}return{border:l,details:d}}export{C as a,f as c,m as d,l as i,d as l,s as n,h as o,i as r,a as s,c as t,o as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-2Zwg-L3c.js";import{o as r}from"./editor-B0tARd79.js";import{t as i}from"./preload-helper-Czpn1I53.js";import{r as a,t as o}from"./icon-sources-CZI1h18s.js";import{t as s}from"./icons-DzW1j-r3.js";import{a as c,i as l,r as u,t as d,u as f}from"./PopoverPopup-BqGWd_uB.js";import{s as ee}from"./chrome-C2RCq3SI.js";import{n as p,t as te}from"./icon-catalog-CbUlEKtK.js";import{a as ne,c as m,d as h,f as g,i as re,l as _,n as ie,o as v,r as y,s as b,t as x,u as ae}from"./use-grid-keyboard-nav-B88Qw-cQ.js";var S=e(t(),1),C=new Set(`zodiac-aquarius.zodiac-aries.zodiac-cancer.zodiac-capricorn.zodiac-gemini.zodiac-leo.zodiac-libra.zodiac-ophiuchus.zodiac-pisces.zodiac-sagittarius.zodiac-scorpio.zodiac-taurus.zodiac-virgo.clock-1.clock-2.clock-3.clock-4.clock-5.clock-6.clock-7.clock-8.clock-9.clock-10.clock-11.clock-12.dice-1.dice-2.dice-3.dice-4.dice-5.dice-6.tally-1.tally-2.tally-3.tally-4.bean-off.beef-off.beer-off.candy-off.cannabis.cannabis-off.cigarette.cigarette-off.dna-off.egg-off.fish-off.hop.hop-off.milk-off.nut-off.wheat-off.wine-off.panda.rat.squirrel.worm.shrimp.amphora.anvil.axe.bow-arrow.castle.sword.pocket-knife.drama.venetian-mask.ferris-wheel.roller-coaster.tent-tree.drum.guitar.piano.metronome.turntable.boom-box.cassette-tape.videotape.towel-rack.soap-dispenser-droplet.shower-head.toilet.washing-machine.microwave.refrigerator.blinds.rocking-chair.shelving-unit.lamp-ceiling.lamp-desk.lamp-floor.lamp-wall-down.lamp-wall-up.birdhouse.mirror-rectangular.mirror-round.parasol.fence.drill.shovel.pickaxe.dam.utility-pole.tractor.cable-car.caravan.helicopter.kayak.volleyball.fishing-hook.fishing-rod.club.spade.hat-glasses.keyboard-music.astroid.spool.stone`.split(`.`)),oe=p.filter(e=>!C.has(e)),w={smile:[`mood`,`satisfied`],"smile-plus":[`mood`,`satisfied`],laugh:[`mood`,`satisfied`],meh:[`mood`],frown:[`mood`,`dissatisfied`],angry:[`mood`],annoyed:[`mood`]},T=n();function E(e,t){return e.label.toLowerCase().includes(t)||e.keywords&&e.keywords.some(e=>e.includes(t))?!0:h(e.label).startsWith(t)}var D=92;function O(e){let{onPick:t,onClose:n,library:c}=e,[l,u]=(0,S.useState)(`all`),[d,p]=(0,S.useState)(null),[h,C]=(0,S.useState)(``),O=(0,S.useRef)(null),k=(0,S.useRef)(null),[A,se]=(0,S.useState)(0),[j,ce]=(0,S.useState)({width:360,height:420}),[M,le]=(0,S.useState)({}),[N,P]=(0,S.useState)({}),{recent:F,remember:I}=ie(),[L,R]=(0,S.useState)(null),z=r(e=>e.setImageLibraryOpen),B=r(e=>e.coarsePointer);(0,S.useEffect)(()=>{s().ensureCatalog();let e=!0;return i(()=>import(`./icon-tags-Bw7m3Jke.js`).then(t=>{e&&le(t.default)}),[]).catch(()=>void 0),()=>{e=!1}},[]);let V=(0,S.useRef)(!0);(0,S.useEffect)(()=>(V.current=!0,()=>{V.current=!1}),[]);function H(e){s().loadAssetIndex(e).then(t=>{V.current&&P(n=>({...n,[e]:t}))}).catch(()=>void 0)}(0,S.useEffect)(()=>{for(let e of b)H(e);if(v.length===0)return;let e=()=>{for(let e of v)H(e)};if(typeof window.requestIdleCallback==`function`){let t=window.requestIdleCallback(e);return()=>window.cancelIdleCallback(t)}let t=window.setTimeout(e,400);return()=>window.clearTimeout(t)},[]),(0,S.useEffect)(()=>{let e=d?[d]:g(l);for(let t of v)e.includes(t)&&(h.trim()||l!==`all`)&&H(t)},[l,d,h]),(0,S.useEffect)(()=>{let e=k.current;if(!e)return;let t=()=>ce({width:e.clientWidth,height:e.clientHeight});t();let n=new ResizeObserver(t);return n.observe(e),()=>n.disconnect()},[]);let U=(0,S.useMemo)(()=>{let e={};for(let[t,n]of Object.entries(te))(e[n]??=[]).push(t);return oe.map(t=>{let n=[...M[t]??[],...w[t]??[],...e[t]??[]];return{source:`lucide`,id:t,label:t,keywords:n.length>0?n:void 0}})},[M]),W=(0,S.useMemo)(()=>{let e={lucide:U};for(let t of o)e[t]=(N[t]??[]).map(([e,n,r])=>({source:t,id:n,label:e,keywords:Array.isArray(r)?r:typeof r==`string`?r.split(` `):void 0}));return e},[U,N]),G=ne((0,S.useMemo)(()=>{let e=h.trim().toLowerCase(),t=d?[d]:g(l),n=t.length>1,r=[];!e&&l===`all`&&F.length>0&&r.push({label:`Recent`,entries:F});for(let i of t){let t=n?_[i]:null;if(!e){let e=a(i)&&N[i]===void 0,n=W[i]??[];e?r.push({label:t,entries:[],tail:!0}):n.length>0&&r.push({label:t,entries:n});continue}let o=(W[i]??[]).filter(t=>E(t,e));o.length>0&&r.push({label:t,entries:o})}return r},[h,l,d,W,N,F]),j.width);function K(e){I(e),t(e.id,e.source)}let{focus:q,setFocus:ue,onKeyDown:de}=x({layout:G,scrollRef:k,onEnter:K});function fe(e){C(e),Y()}function pe(e){u(e),p(null),Y(),B||O.current?.focus()}function J(e){p(e),Y(),B||O.current?.focus()}function Y(){ue(0),R(null),k.current&&(k.current.scrollTop=0)}let me=A-D,he=A+j.height+D,ge=Math.max(1,Math.floor(j.width/46)),X=[];for(let e of G.rows)if(!(e.top+e.height<me)){if(e.top>he)break;if(e.type===`header`){X.push((0,T.jsxs)(`div`,{className:`absolute inset-x-0 flex items-baseline gap-1.5 px-1.5 pt-3`,style:{top:e.top},children:[(0,T.jsx)(`span`,{className:`text-[11px] uppercase tracking-wide text-gray-500`,children:e.label}),(0,T.jsx)(`span`,{className:`text-[10px] text-gray-400`,children:e.count})]},`header-${e.top}`));continue}if(e.type===`skeleton`){X.push((0,T.jsx)(`div`,{className:`absolute inset-x-0 flex`,style:{top:e.top},children:Array.from({length:ge},(e,t)=>(0,T.jsx)(`span`,{className:`flex h-[46px] w-[46px] items-center justify-center`,children:(0,T.jsx)(`span`,{className:`h-8 w-8 animate-pulse rounded-lg bg-black/5`})},t))},`skeleton-${e.top}`));continue}e.entries.forEach((t,n)=>{let r=e.startIndex+n,i=n*46,o=r===q;a(t.source)?X.push((0,T.jsx)(y,{source:t.source,slug:t.id,label:t.label,left:i,top:e.top,focused:o,onPick:()=>K(t),onHover:e=>R(e?t:null)},r)):X.push((0,T.jsx)(re,{name:t.id,left:i,top:e.top,focused:o,onPick:()=>K(t),onHover:e=>R(e?t:null)},r))})}let Z=m.find(e=>e.id===l)?.label??`All`,Q=ae(l),_e=l===`all`?`all`:d?_[d]:Z,$=L?.source??G.flat[q]?.source;return(0,T.jsxs)(`div`,{"data-overlay":!0,className:`flex w-[min(380px,calc(100vw-1rem))] flex-col overflow-hidden rounded-xl ${ee}`,style:{height:`min(70vh, 560px)`},onKeyDown:de,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-1 overflow-x-auto border-b border-black/5 px-2 py-2`,style:{scrollbarWidth:`none`},children:[m.map(e=>(0,T.jsx)(`button`,{type:`button`,onClick:()=>pe(e.id),className:`shrink-0 rounded-full px-2.5 py-1 text-xs transition-colors ${l===e.id?`bg-gray-200 text-gray-900`:`text-gray-500 hover:bg-gray-100 hover:text-gray-700`}`,children:e.label},e.id)),c&&(0,T.jsx)(`button`,{type:`button`,onClick:()=>{z(!0),n?.()},"aria-label":`Image library`,title:`Image library`,"data-testid":`image-library-open`,className:`ml-auto flex h-[26px] w-[26px] shrink-0 items-center justify-center rounded-full transition-colors hover:bg-gray-100`,children:(0,T.jsx)(`img`,{src:s().assetIconUrl(`drawnicons`,`solid-smiley-face`),alt:``,draggable:!1,className:`h-[19px] w-[19px]`})})]}),Q&&(0,T.jsxs)(`div`,{className:`flex items-center gap-1 border-b border-black/5 px-3 py-1.5`,children:[(0,T.jsx)(`button`,{type:`button`,onClick:()=>J(null),className:`rounded-full px-2 py-0.5 text-[11px] transition-colors ${d===null?`bg-gray-200 text-gray-900`:`text-gray-500 hover:bg-gray-100 hover:text-gray-700`}`,children:`All`}),Q.sources.map(e=>(0,T.jsx)(`button`,{type:`button`,onClick:()=>J(e),className:`rounded-full px-2 py-0.5 text-[11px] transition-colors ${d===e?`bg-gray-200 text-gray-900`:`text-gray-500 hover:bg-gray-100 hover:text-gray-700`}`,children:_[e]},e))]}),(0,T.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-black/5 p-3`,children:[(0,T.jsx)(`input`,{ref:O,autoFocus:!B,value:h,"data-testid":`icon-picker-search`,onChange:e=>fe(e.target.value),placeholder:`Search ${_e} icons`,className:`h-9 flex-1 rounded-lg bg-black/5 px-3 text-sm text-gray-800 outline-none placeholder:text-gray-400 focus:bg-black/[0.07]`}),n&&(0,T.jsx)(`button`,{type:`button`,onClick:n,"aria-label":`Close`,className:`flex h-9 w-9 items-center justify-center rounded-lg text-gray-500 transition-colors hover:bg-black/5`,children:(0,T.jsx)(f,{})})]}),(0,T.jsx)(`div`,{ref:k,onScroll:e=>se(e.currentTarget.scrollTop),className:`scrollbar-slim relative flex-1 overflow-y-auto p-2`,children:G.flat.length===0&&h.trim()?(0,T.jsx)(`div`,{className:`px-2 py-8 text-center text-sm text-gray-400`,children:`No icons match “${h}”.`}):(0,T.jsx)(`div`,{className:`relative`,style:{height:G.totalHeight},children:X})}),(0,T.jsxs)(`div`,{className:`flex items-center justify-between gap-2 border-t border-black/5 px-3 py-2 text-[11px] text-gray-400`,children:[(0,T.jsx)(`span`,{className:`truncate text-gray-600`,children:L?.label??G.flat[q]?.label??Z}),(0,T.jsxs)(`span`,{className:`shrink-0`,children:[G.flat.length,` · `,$?_[$]:Z]})]})]})}function k(e){let{onPick:t,onClose:n}=e;return(0,T.jsx)(c,{open:!0,modal:!1,onOpenChange:e=>{e||n()},children:(0,T.jsx)(l,{children:(0,T.jsx)(u,{anchor:()=>document.querySelector(`[data-canvas-toolbar]`),side:`right`,align:`start`,sideOffset:8,children:(0,T.jsx)(d,{finalFocus:!1,children:(0,T.jsx)(O,{onPick:t,onClose:n,library:!0})})})})})}export{k as IconPicker,O as IconPickerContent};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t,t as n}from"./jsx-runtime-2Zwg-L3c.js";import{i as r}from"./config-a_lz-57R.js";import{o as ee}from"./editor-B0tARd79.js";import{i as te,r as ne,t as i}from"./icons-DzW1j-r3.js";import{t as re}from"./IconLoader2-BQaF1LKo.js";import{t as ie}from"./IconSearch-C1K0_Pq_.js";import{s as ae}from"./asset-glyph-B3c--Mx2.js";import{n as oe}from"./surface-Dke4SWpE.js";import{i as a,n as o,r as se,t as ce}from"./DialogRoot-mHGRFW9m.js";import{a as le,n as ue,r as de,t as fe}from"./use-grid-keyboard-nav-B88Qw-cQ.js";var s=e(t(),1),c=n(),l=64,u=16,d=2*l;function f(e,t){return e.label.toLowerCase().includes(t)||(e.keywords??[]).some(e=>e.includes(t))}var p={face:`M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20Zm-3.4 6.4a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Zm6.8 0a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Zm-8 5.3c.9 2.3 2.6 3.6 4.6 3.6s3.7-1.3 4.6-3.6c-1.5.9-3 1.3-4.6 1.3s-3.1-.4-4.6-1.3Z`,mark:`M20.6 4.6 22 6.7l-11.6 12L2 11.6l1.7-1.9 6.4 5.3L20.6 4.6Z`,object:`M12 1.8l9 5v10.4l-9 5-9-5V6.8l9-5Zm0 2.5L6 7.6l6 3.3 6-3.3-6-3.3ZM4.8 9.3v6.6l6.1 3.4v-6.6L4.8 9.3Zm14.4 0-6.1 3.4v6.6l6.1-3.4V9.3Z`,people:`M8.2 3.6a3.2 3.2 0 1 1 0 6.4 3.2 3.2 0 0 1 0-6.4Zm8.3 1.6a2.6 2.6 0 1 1 0 5.2 2.6 2.6 0 0 1 0-5.2ZM8.2 11.3c3 0 5.3 1.9 5.3 4.7V20H2.9v-4c0-2.8 2.3-4.7 5.3-4.7Zm8.3 1c2.4 0 4.3 1.6 4.3 4V19h-5.9v-3c0-1.2-.4-2.3-1-3.2a7 7 0 0 1 2.6-.5Z`,scene:`M4.5 3.5h15A2.5 2.5 0 0 1 22 6v12a2.5 2.5 0 0 1-2.5 2.5h-15A2.5 2.5 0 0 1 2 18V6a2.5 2.5 0 0 1 2.5-2.5Zm12 3.2a1.9 1.9 0 1 0 0 3.8 1.9 1.9 0 0 0 0-3.8ZM5 17.6h14.2l-4.9-6.6-3.4 4.6-2.2-2.7L5 17.6Z`,solid:`M12 2a10 10 0 1 1 0 20 10 10 0 0 1 0-20Zm0 2.4a7.6 7.6 0 1 0 0 15.2 7.6 7.6 0 0 0 0-15.2Zm0 0v15.2a7.6 7.6 0 0 0 0-15.2Z`},pe=`M4 4h7v7H4V4Zm9 0h7v7h-7V4ZM4 13h7v7H4v-7Zm9 0h7v7h-7v-7Z`;function m(e){return e.path?(0,c.jsx)(`svg`,{className:`h-4 w-4 shrink-0`,viewBox:`0 0 24 24`,fill:`currentColor`,"aria-hidden":`true`,children:(0,c.jsx)(`path`,{fillRule:`evenodd`,d:e.path})}):null}function me(e){let t=new Map;for(let n of e){let e=t.get(n.group)??[];e.push(n),t.set(n.group,e)}return[...t.entries()].map(([e,t])=>({name:e,total:t.reduce((e,t)=>e+t.count,0),subs:t.sort((e,t)=>e.subgroup.localeCompare(t.subgroup))})).sort((e,t)=>e.name.localeCompare(t.name))}var h=`flex w-full cursor-pointer items-center gap-2 rounded-lg px-2 py-[5px] text-left text-[12.5px] outline-none transition-colors`;function he(){return(0,c.jsx)(`div`,{"aria-hidden":!0,children:[64,40,44,52,48,44,40].map((e,t)=>(0,c.jsxs)(`div`,{className:`flex items-center gap-2 px-2 py-[5px]`,children:[(0,c.jsx)(`span`,{className:`h-4 w-4 shrink-0 animate-pulse rounded bg-black/5`}),(0,c.jsx)(`span`,{className:`h-3 animate-pulse rounded bg-black/5`,style:{width:e}}),(0,c.jsx)(`span`,{className:`ml-auto h-3 w-7 shrink-0 animate-pulse rounded bg-black/5`})]},t))})}function g(e){return{source:`drawnicons`,id:e[0],label:e[1],keywords:e[2]?e[2].split(` `):void 0,style:e[7]}}function _(e,t){e(e=>{let{[t]:n,...r}=e;return r})}function v(e){let{open:t,onOpenChange:n,onPick:v}=e,{searchIcons:y}=r(),{remember:ge}=ue(),_e=ee(e=>e.coarsePointer),[b,x]=(0,s.useState)(``),[S,ve]=(0,s.useState)([]),[ye,be]=(0,s.useState)(null),[C,w]=(0,s.useState)(()=>i().cachedLibraryGroups(`drawnicons`)??`loading`),[T,xe]=(0,s.useState)(null),[Se,Ce]=(0,s.useState)(null),[E,D]=(0,s.useState)({}),[O,k]=(0,s.useState)({query:``,failed:!1,entries:[]}),A=(0,s.useRef)([]),j=(0,s.useRef)(null),M=(0,s.useRef)(null),[N,we]=(0,s.useState)(0),[P,Te]=(0,s.useState)({width:480,height:360}),[Ee,F]=(0,s.useState)(null);(0,s.useEffect)(()=>{if(!t)return;let e=!0;return i().loadAssetIndex(`drawnicons`).then(t=>{if(e){let e=t.map(([e,t,n])=>({source:`drawnicons`,id:t,label:e,keywords:Array.isArray(n)?n:void 0}));A.current=e,ve(e)}}).catch(()=>void 0),te(`drawnicons`).then(t=>{e&&t&&be(t)}).catch(()=>void 0),i().loadLibraryGroups(`drawnicons`).then(t=>{e&&w(t.length>0?t:`unavailable`)}).catch(()=>{e&&w(`unavailable`)}),()=>{e=!1}},[t]),(0,s.useEffect)(()=>{let e=b.trim().toLowerCase();if(!y||e.length<2){k({query:``,failed:!1,entries:[]});return}let t=!0,n=window.setTimeout(()=>{y(e).then(n=>{t&&k({query:e,failed:!1,entries:n.map(e=>({source:`drawnicons`,id:e.slug,label:e.name}))})}).catch(()=>{t&&k({query:e,failed:!0,entries:A.current.filter(t=>f(t,e))})})},150);return()=>{t=!1,window.clearTimeout(n)}},[b,y]);let I=(0,s.useRef)(null),De=(0,s.useCallback)(e=>{if(M.current=e,I.current?.disconnect(),I.current=null,e){let t=()=>Te({width:e.clientWidth-u,height:e.clientHeight});t();let n=new ResizeObserver(t);n.observe(e),I.current=n}},[]);function L(){Ae(0),F(null),M.current&&(M.current.scrollTop=0)}function Oe(e){ne(`drawnicons`,e.group,e.subgroup).then(t=>{t&&D(n=>({...n,[e.id]:{count:t.count,entries:t.entries.map(g)}}))}).catch(()=>{D(t=>({...t,[e.id]:`error`}))})}function R(e){xe(e),x(``),L(),e&&(E[e.id]===void 0||E[e.id]===`error`)&&(E[e.id]===`error`&&_(D,e.id),Oe(e))}let z=b.trim().toLowerCase(),B=!z&&T?E[T.id]:void 0,V=(0,s.useMemo)(()=>z?y&&z.length>=2?O.query===z?O.entries:null:S.filter(e=>f(e,z)):T?B===void 0?null:B===`error`?[]:B.entries:S,[z,S,O,y,T,B]),H=(0,s.useRef)([]);V&&(H.current=V);let U=V??H.current,W=V===null,ke=B===`error`,G=le((0,s.useMemo)(()=>[{label:null,entries:U}],[U]),P.width,l);function K(e){ge(e),n(!1),v(e.id,e.source)}let{focus:q,setFocus:Ae,onKeyDown:je}=fe({layout:G,scrollRef:M,onEnter:K});function Me(e){x(e),L()}let Ne=N-d,Pe=N+P.height+d,Fe=Math.max(1,Math.floor(P.width/l)),J=P.width/Fe,Y=[];for(let e of G.rows)if(!(e.top+e.height<Ne)){if(e.top>Pe)break;e.type===`icons`&&e.entries.forEach((t,n)=>{let r=e.startIndex+n;Y.push((0,c.jsx)(de,{source:`drawnicons`,slug:t.id,label:t.label,left:n*J+(J-l)/2,top:e.top,focused:r===q,onPick:()=>K(t),onHover:e=>{F(e?t:null),e&&ae(`drawnicons`,t.id)},size:l},t.id))})}let X=ye?.count,Ie=(0,s.useMemo)(()=>Array.isArray(C)?me(C):[],[C]),Le=C!==`unavailable`,Z=C===`loading`,Q=!!z&&O.query===z&&O.failed,$=W?`Searching…`:z?Q?`Couldn't reach the image search — check your connection and try again.`:`No images match “${b}”.`:ke?`Couldn't load these — pick it again to retry.`:`Loading images…`;function Re(){return z?Q?G.flat.length>0?`${G.flat.length.toLocaleString()} offline results`:`search unavailable`:`${G.flat.length.toLocaleString()} results`:T?`${(B!==`error`&&B?.count||T.count).toLocaleString()} images in ${T.subgroup}`:X?`${X.toLocaleString()} images`:`${G.flat.length.toLocaleString()} featured`}return(0,c.jsx)(ce,{open:t,onOpenChange:n,children:(0,c.jsxs)(o,{children:[(0,c.jsx)(a,{className:`fixed inset-0 bg-gray-900/15`}),(0,c.jsxs)(se,{initialFocus:_e?void 0:j,"data-overlay":!0,"data-testid":`image-library`,className:`fixed left-1/2 top-[16%] flex w-[min(720px,92vw)] -translate-x-1/2 flex-col overflow-hidden rounded-xl outline-none ${oe.popup}`,style:{height:`min(64vh, 560px)`},onKeyDown:e=>{e.target?.closest?.(`[data-library-sidebar]`)||je(e),e.stopPropagation()},children:[(0,c.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2 border-b border-[var(--chrome-ring)] px-3.5`,children:[W?(0,c.jsx)(re,{size:15,stroke:1.75,className:`shrink-0 animate-spin text-[var(--chrome-fg-400)]`}):(0,c.jsx)(ie,{size:15,stroke:1.75,className:`shrink-0 text-[var(--chrome-fg-400)]`}),(0,c.jsx)(`input`,{ref:j,"data-testid":`image-library-search`,value:b,onChange:e=>Me(e.target.value),placeholder:X?`Search ${X.toLocaleString()} images…`:`Search images…`,className:`w-full bg-transparent py-2.5 text-[13.5px] text-[var(--chrome-fg-900)] outline-none placeholder:text-[var(--chrome-fg-400)]`})]}),(0,c.jsxs)(`div`,{className:`flex min-h-0 flex-1`,children:[Le&&(0,c.jsx)(`nav`,{"data-library-sidebar":!0,"data-testid":`image-library-sidebar`,"aria-label":`Image categories`,"aria-busy":Z||void 0,className:`scrollbar-slim w-[176px] shrink-0 overflow-y-auto border-r border-[var(--chrome-ring)] p-1.5`,children:Z?(0,c.jsx)(he,{}):(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`button`,{type:`button`,onClick:()=>R(null),"aria-current":T?void 0:`true`,className:`${h} ${T?`text-[var(--chrome-fg-700)] hover:bg-[var(--chrome-hover)]`:`bg-[var(--chrome-hover)] font-medium text-[var(--chrome-fg-900)]`}`,children:[(0,c.jsx)(m,{path:pe}),(0,c.jsx)(`span`,{className:`truncate`,children:`All images`}),X!=null&&(0,c.jsx)(`span`,{className:`ml-auto shrink-0 text-[11px] font-normal text-[var(--chrome-fg-400)]`,children:X.toLocaleString()})]}),Ie.map(e=>{if(e.subs.length===1){let t=e.subs[0],n=T?.id===t.id;return(0,c.jsxs)(`button`,{type:`button`,onClick:()=>R(t),"aria-current":n?`true`:void 0,className:`${h} capitalize ${n?`bg-[var(--chrome-hover)] font-medium text-[var(--chrome-fg-900)]`:`text-[var(--chrome-fg-700)] hover:bg-[var(--chrome-hover)]`}`,children:[(0,c.jsx)(m,{path:p[e.name]}),(0,c.jsx)(`span`,{className:`truncate`,children:e.name}),(0,c.jsx)(`span`,{className:`ml-auto shrink-0 text-[11px] font-normal text-[var(--chrome-fg-400)]`,children:e.total.toLocaleString()})]},e.name)}let t=Se===e.name;return(0,c.jsxs)(`div`,{children:[(0,c.jsxs)(`button`,{type:`button`,onClick:()=>Ce(t?null:e.name),"aria-expanded":t,className:`${h} capitalize text-[var(--chrome-fg-700)] hover:bg-[var(--chrome-hover)]`,children:[(0,c.jsx)(m,{path:p[e.name]}),(0,c.jsx)(`span`,{className:`truncate`,children:e.name}),(0,c.jsx)(`span`,{className:`ml-auto shrink-0 text-[11px] text-[var(--chrome-fg-400)]`,children:e.total.toLocaleString()})]}),t&&e.subs.map(e=>{let t=T?.id===e.id;return(0,c.jsxs)(`button`,{type:`button`,onClick:()=>R(e),"aria-current":t?`true`:void 0,className:`${h} pl-8 ${t?`bg-[var(--chrome-hover)] font-medium text-[var(--chrome-fg-900)]`:`text-[var(--chrome-fg-500)] hover:bg-[var(--chrome-hover)] hover:text-[var(--chrome-fg-700)]`}`,children:[(0,c.jsx)(`span`,{className:`truncate`,children:e.subgroup}),(0,c.jsx)(`span`,{className:`ml-auto shrink-0 text-[11px] font-normal text-[var(--chrome-fg-400)]`,children:e.count.toLocaleString()})]},e.id)})]},e.name)})]})}),(0,c.jsx)(`div`,{ref:De,onScroll:e=>we(e.currentTarget.scrollTop),className:`scrollbar-slim relative min-w-0 flex-1 overflow-y-auto overflow-x-hidden p-2`,children:G.flat.length===0?(0,c.jsx)(`div`,{className:`px-2 py-8 text-center text-sm text-gray-400`,children:$}):(0,c.jsx)(`div`,{className:`relative`,style:{height:G.totalHeight},children:Y})})]}),(0,c.jsxs)(`div`,{className:`flex shrink-0 items-center justify-between gap-2 border-t border-black/5 px-3 py-2 text-[11px] text-gray-400`,children:[(0,c.jsx)(`span`,{className:`truncate text-gray-600`,children:Ee?.label??G.flat[q]?.label??(!z&&T?`${T.group} / ${T.subgroup}`:`Image library`)}),(0,c.jsx)(`span`,{className:`shrink-0`,children:Re()})]})]})]})})}export{v as ImageLibraryDialog};
|