koboyo 0.2.0 → 0.3.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/IconCornerDownRight-BerbioFY.js +1 -0
- package/assets/editor/assets/IconLink-ze4g4Lrj.js +1 -0
- package/assets/editor/assets/build-pips-q_Fq10ov.js +1 -0
- package/assets/editor/assets/flow-layer-B7mlx0G4.js +1 -0
- package/assets/editor/assets/flow-panel-DoK6VIJ4.js +1 -0
- package/assets/editor/assets/flow-start-BKN48uke.js +1 -0
- package/assets/editor/assets/{index-CC2h28V_.css → index-e23lIFZB.css} +1 -1
- package/assets/editor/assets/{index-DfNbwHl_.js → index-mhi0Z6gG.js} +7 -7
- package/assets/editor/assets/slides-panel-hozTMSMk.js +26 -0
- package/assets/editor/assets/tool-catalog-CHq6TJ2q.js +1 -0
- package/assets/editor/assets/{tool-drawer-CG7-cnML.js → tool-drawer-DEEqsKSN.js} +1 -1
- package/assets/editor/assets/tree-BbSzMkPL.js +1 -0
- package/assets/editor/assets/use-drag-reorder-CTTvTwza.js +1 -0
- package/assets/editor/assets/use-key-held-38H1v73f.js +1 -0
- package/assets/editor/index.html +7 -7
- package/dist/koboyo.js +203 -201
- package/package.json +5 -5
- package/skills/koboyo/SKILL.md +1 -1
- 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/IconArrowBackUp-Brd2WpCh.js +0 -1
- package/assets/editor/assets/IconNote-CSELvWzx.js +0 -1
- package/assets/editor/assets/build-pips-CIaHaEPB.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-start-ccYJ2KB9.js +0 -1
- package/assets/editor/assets/slides-panel-DV-zQJhV.js +0 -26
- package/assets/editor/assets/tool-catalog-ChSwaLIq.js +0 -1
- package/assets/editor/assets/tree-rq4RTGgw.js +0 -1
- package/assets/editor/assets/use-drag-reorder-C3h4ZMoZ.js +0 -1
|
@@ -0,0 +1,26 @@
|
|
|
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,a as s,g as c,h as l,l as u,m as d,n as f,o as p,p as m,r as h}from"./menu-BPrc8Ara.js";import{i as g}from"./config-a_lz-57R.js";import{a as ee,o as _}from"./editor-B0tARd79.js";import{_ as v,g as y,t as b}from"./reflow-Cv75wPSh.js";import{W as x}from"./style-BENGW2ZV.js";import{A as S,C as te,Kn as C,Sn as ne,an as w,c as re,d as ie,f as T,fn as E,i as D,l as O,n as ae,o as oe,p as se,r as ce,s as le,t as ue,u as k,vn as de,x as fe}from"./slides-D9bnXqtf.js";import{n as pe}from"./renderer-environment-DmWXvuT4.js";import{A as me,C as he,D as ge,E as _e,O as ve,S as ye,T as be,_ as xe,b as Se,k as Ce,m as we,v as A,x as Te,y as Ee}from"./panel-controls-DYZ7QFT5.js";import{t as j}from"./createReactComponent-9UsI5fmM.js";import{n as M,r as De,t as Oe}from"./IconTrash-DbN_RxB7.js";import{t as ke}from"./IconArrowLeft-DFk3Krim.js";import{n as N,t as Ae}from"./IconPlayerStopFilled-BUbX6ZO5.js";import{t as je}from"./IconChevronLeft-BR0iwdRI.js";import{t as Me}from"./IconChevronRight-DBDnxPYT.js";import{t as Ne}from"./IconCode-hd05zxU4.js";import{a as Pe,c as Fe,i as P,n as Ie,o as Le,r as Re,s as ze,t as Be}from"./build-visibility-E1mHeDCW.js";import{t as Ve}from"./IconPencil-C5Y-Y4dC.js";import{t as He}from"./IconPlus-BbmieIBT.js";import{n as Ue,r as We,t as Ge}from"./use-drag-reorder-CTTvTwza.js";import{t as Ke}from"./IconSparkles-WDcg8BA9.js";import{t as qe}from"./IconX-AlbPkO_g.js";import{t as Je}from"./IconPlayerPlayFilled-D4OODBX7.js";import{a as Ye,i as Xe,l as Ze,r as Qe,t as $e}from"./PopoverPopup-BqGWd_uB.js";import{t as et}from"./use-export-command-CPc7qug1.js";import{n as tt}from"./surface-Dke4SWpE.js";import{_ as nt,a as rt,c as it,d as at,f as ot,h as st,i as ct,l as lt,m as ut,n as dt,o as ft,p as pt,r as mt,t as ht,u as gt,v as _t,y as vt}from"./plan-jQm1jDpt.js";import{a as yt,c as bt,d as xt,f as St,i as Ct,l as wt,n as Tt,o as Et,r as Dt,s as Ot,t as kt,u as At}from"./edit-BJ_kibk8.js";import{a as jt,c as Mt}from"./chrome-C2RCq3SI.js";import{i as Nt,n as Pt,r as Ft,t as It}from"./DialogRoot-mHGRFW9m.js";import{n as Lt,t as Rt}from"./DialogTitle-CFhr-gP9.js";import{n as zt,t as Bt}from"./shape-meta-BpwsiB82.js";import{r as Vt}from"./chrome-layout-B8YmHznO.js";import{t as Ht}from"./panel-shell-CG2aq4Ia.js";import{A as F,C as I,D as L,E as R,O as z,S as B,T as Ut,_ as Wt,a as V,b as Gt,c as Kt,d as qt,f as H,g as Jt,h as Yt,i as Xt,k as U,l as W,m as G,n as Zt,o as K,p as Qt,r as q,s as J,t as $t,u as en,v as tn,w as Y,x as nn,y as rn}from"./builders-DbF28yId.js";import{n as an,t as on}from"./export-DEFKKRRi.js";var sn=j(`outline`,`grip-vertical`,`GripVertical`,[[`path`,{d:`M8 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0`,key:`svg-0`}],[`path`,{d:`M8 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0`,key:`svg-1`}],[`path`,{d:`M8 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0`,key:`svg-2`}],[`path`,{d:`M14 5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0`,key:`svg-3`}],[`path`,{d:`M14 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0`,key:`svg-4`}],[`path`,{d:`M14 19a1 1 0 1 0 2 0a1 1 0 1 0 -2 0`,key:`svg-5`}]]),cn=j(`outline`,`player-skip-back`,`PlayerSkipBack`,[[`path`,{d:`M20 5v14l-12 -7l12 -7`,key:`svg-0`}],[`path`,{d:`M4 5l0 14`,key:`svg-1`}]]),ln=j(`filled`,`pointer-filled`,`PointerFilled`,[[`path`,{d:`M3.039 4.277l3.904 13.563c.185 .837 .92 1.516 1.831 1.642l.17 .016a2.2 2.2 0 0 0 1.982 -1.006l.045 -.078l1.4 -2.072l4.05 4.05a2.067 2.067 0 0 0 2.924 0l1.047 -1.047c.388 -.388 .606 -.913 .606 -1.461l-.008 -.182a2.067 2.067 0 0 0 -.598 -1.28l-4.047 -4.048l2.103 -1.412c.726 -.385 1.18 -1.278 1.053 -2.189a2.2 2.2 0 0 0 -1.701 -1.845l-13.524 -3.89a1 1 0 0 0 -1.236 1.24z`,key:`svg-0`}]]),X=e(t(),1);function un(e,t){if(!t)return Bt(e[0]);let n=e.find(e=>zt(e).trim().length>0);return n?Bt(n):`Group of ${e.length}`}var Z={enter:`Entry`,emphasis:`Emphasis`,exit:`Exit`},Q=n();function dn(e){let{units:t,idleCount:n,variant:r=`filled`,hasBuild:i,onHover:a,onAdd:o,onSweep:s}=e,c=r===`primary`,l=()=>{c&&(d(!1),a(null))},[u,d]=(0,X.useState)(!1);return(0,Q.jsxs)(Ye,{open:u,onOpenChange:e=>{d(e),e||a(null)},children:[(0,Q.jsx)(xe,{"data-testid":`animate-add-open`,className:c?`mt-1 flex h-8 w-full cursor-pointer items-center justify-center gap-1.5 rounded-lg bg-[var(--chrome-accent)] text-[12px] text-white transition-colors hover:bg-[var(--chrome-accent-hover)]`:`flex h-8 w-full cursor-pointer items-center justify-center gap-1.5 rounded-lg bg-[var(--chrome-rest)] text-[12px] text-[var(--chrome-fg-900)] transition-colors hover:bg-[var(--chrome-hover)]`,children:c?`Choose what animates`:(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(He,{size:13,stroke:1.75}),`Add animation`,n>0&&(0,Q.jsxs)(`span`,{"data-testid":`animate-add-count`,className:`text-[var(--chrome-fg-400)]`,children:[`· `,n,` not animated`]})]})}),(0,Q.jsx)(Xe,{children:(0,Q.jsx)(Qe,{side:`left`,align:`end`,sideOffset:8,collisionPadding:8,children:(0,Q.jsxs)($e,{"data-overlay":!0,"data-testid":`animate-add-list`,onPointerDown:e=>e.stopPropagation(),className:`flex max-h-[60vh] w-72 flex-col overflow-y-auto p-1.5 ${tt.popup}`,children:[n>0&&(0,Q.jsxs)(`button`,{type:`button`,"data-testid":`animate-one-by-one`,onClick:()=>{s(),d(!1),a(null)},className:`mb-1 flex h-7 shrink-0 cursor-pointer items-center justify-between gap-2 rounded-lg px-2 text-[11px] font-medium text-[var(--chrome-fg-900)] transition-colors hover:bg-[var(--chrome-hover)]`,children:[(0,Q.jsx)(`span`,{children:i?`Add the remaining ${n}`:`Animate all ${n}, one by one`}),(0,Q.jsx)(be,{size:12,stroke:2})]}),t.map(e=>{let t=e.shapes[0],n=new Set(ht(t).map(e=>e.kind));return(0,Q.jsxs)(`div`,{"data-testid":`animate-add-row`,onPointerEnter:()=>a(t.id),onPointerLeave:()=>a(null),className:`flex h-8 shrink-0 items-center gap-2 rounded-lg px-2 text-[12px] text-[var(--chrome-fg-700)] hover:bg-[var(--chrome-hover)]`,children:[e.groupId&&(0,Q.jsx)(ye,{size:12,stroke:1.75,className:`shrink-0 text-[var(--chrome-fg-400)]`}),(0,Q.jsx)(`span`,{className:`flex-1 truncate`,children:un(e.shapes,e.groupId)}),gt(t).map(t=>{let r=t!==`emphasis`&&n.has(t);return(0,Q.jsx)(`button`,{type:`button`,"data-testid":`animate-add-${t}`,disabled:r,title:r?`Already has ${Z[t].toLowerCase()}`:`Add ${Z[t].toLowerCase()}`,onClick:()=>{o(e,t),l()},className:`h-5 shrink-0 cursor-pointer rounded px-1.5 text-[10px] font-medium transition-colors ${r?`cursor-default bg-[var(--chrome-active)] text-[var(--chrome-fg-400)]`:`text-[var(--chrome-fg-600)] ring-1 ring-[var(--chrome-ring)] hover:bg-[var(--chrome-hover)] hover:text-[var(--chrome-fg-900)]`}`,children:Z[t]},t)})]},_t(e))})]})})})]})}var fn={click:``,with:`Plays with the step above`,after:`Plays on its own, as soon as the step above finishes`};function pn(e){let{unit:t,click:n,playing:r,start:a,canJoin:o,pointed:s,unseen:c,selected:l,viewMode:u,handlers:d,onSplit:f,onMerge:p,onSetEffect:m,onSetDelay:h,onSetDirection:g,onSetKind:ee,onSetStart:_,onPreviewEffect:v,onRemove:y}=e,b=t.items[0],x=b.shape,S=b.animation,te=ht(x).filter((e,t)=>t!==b.index).map(e=>e.kind),C=f??p;return(0,Q.jsxs)(`div`,{className:`group flex h-8 touch-none items-center gap-1.5 rounded-lg pl-1 pr-1 text-[12px] transition-colors ${r?`bg-[var(--chrome-accent)] text-white`:l?`bg-[var(--chrome-active)]`:s?`bg-[var(--chrome-hover)]`:`hover:bg-[var(--chrome-hover)]`}`,...d,children:[(0,Q.jsx)(sn,{size:13,stroke:1.75,className:`shrink-0 cursor-grab text-[var(--chrome-fg-300)]`}),(0,Q.jsx)(`span`,{className:`flex w-4 shrink-0 items-center justify-center text-[11px] tabular-nums ${r?`text-white/70`:`text-[var(--chrome-fg-500)]`}`,title:a===`click`?void 0:fn[a],children:a===`click`?n:``}),C&&!u?(0,Q.jsx)(`button`,{type:`button`,"data-testid":f?`animate-group-split`:`animate-group-merge`,title:f?`Animate this group's shapes one by one`:`Play these back as one group`,onPointerDown:e=>e.stopPropagation(),onClick:C,className:`flex h-5 w-4 shrink-0 cursor-pointer items-center justify-center rounded ${r?`text-white/70`:`text-[var(--chrome-fg-400)]`} hover:text-[var(--chrome-fg-900)]`,children:f?(0,Q.jsx)(Me,{size:12,stroke:2}):(0,Q.jsx)(i,{size:12,stroke:2})}):C&&(0,Q.jsx)(`span`,{className:`w-4 shrink-0`}),(0,Q.jsx)(`span`,{className:`flex-1 truncate ${r?``:`text-[var(--chrome-fg-900)]`}`,children:un(t.items.map(e=>e.shape),t.groupId)}),c&&(0,Q.jsx)(`span`,{"data-testid":`animate-row-unseen`,title:`This plays while the shape is off screen, so it will not be seen`,className:`shrink-0 ${r?`text-white/70`:`text-[var(--chrome-fg-400)]`}`,children:(0,Q.jsx)(Ce,{size:12,stroke:1.75})}),S.kind!==`enter`&&(0,Q.jsx)(`span`,{"data-testid":`animate-kind-${S.kind}`,className:`shrink-0 rounded px-1 text-[10px] uppercase tracking-wide ring-1 ${r?`text-white/70 ring-white/30`:`text-[var(--chrome-fg-500)] ring-[var(--chrome-ring)]`}`,children:S.kind}),(0,Q.jsx)(mn,{shape:x,kind:S.kind,kindsTaken:te,effect:S.effect,duration:S.duration,delay:S.delay,direction:S.direction,start:a,canJoin:o,disabled:u,onSetEffect:m,onSetDelay:h,onSetDirection:g,onSetKind:ee,onSetStart:_,onPreviewEffect:v}),!u&&(0,Q.jsx)(`button`,{"data-testid":`animate-remove`,title:`Remove from the build`,onPointerDown:e=>e.stopPropagation(),className:`flex h-5 w-5 shrink-0 cursor-pointer items-center justify-center rounded text-[var(--chrome-fg-400)] opacity-0 hover:bg-[var(--chrome-hover)] group-hover:opacity-100`,onClick:y,children:(0,Q.jsx)(qe,{size:12,stroke:2})})]})}function mn(e){let{shape:t,kind:n,kindsTaken:r,effect:i,duration:a,delay:o,direction:s,start:c,canJoin:l,disabled:u,onSetEffect:d,onSetDelay:f,onSetDirection:p,onSetKind:m,onSetStart:h,onPreviewEffect:g}=e,[ee,_]=(0,X.useState)(!1),b=v.filter(e=>de(t,e)&&E(e,n)),x=gt(t),S=Pe(i);return(0,Q.jsxs)(Ye,{open:ee,onOpenChange:_,children:[(0,Q.jsxs)(xe,{"data-testid":`animate-effect-chip`,disabled:u,onPointerDown:e=>e.stopPropagation(),className:`flex h-6 shrink-0 cursor-pointer items-center gap-0.5 rounded-md bg-[var(--chrome-rest)] pl-1.5 pr-1 text-[11px] text-[var(--chrome-fg-600)] ring-1 ring-[var(--chrome-ring)] transition-colors hover:bg-[var(--chrome-hover)] data-[popup-open]:bg-[var(--chrome-active)] disabled:cursor-default`,children:[S.label,(0,Q.jsx)(Ze,{})]}),(0,Q.jsx)(Xe,{children:(0,Q.jsx)(Qe,{side:`left`,align:`center`,sideOffset:8,collisionPadding:8,children:(0,Q.jsxs)($e,{"data-overlay":!0,onPointerDown:e=>e.stopPropagation(),className:`w-64 p-2.5 ${tt.popup}`,children:[x.length>1&&(0,Q.jsx)(`div`,{className:`mb-2 flex items-center gap-1 border-b border-[var(--chrome-ring)] pb-2`,children:x.map(e=>{let t=e!==n&&e!==`emphasis`&&r.includes(e);return(0,Q.jsx)(`button`,{type:`button`,"data-testid":`animate-kind-set-${e}`,"aria-pressed":e===n,disabled:t,title:t?`This shape already has an ${Z[e]} row`:void 0,onClick:()=>m(e),className:`flex h-7 flex-1 cursor-pointer items-center justify-center rounded-lg text-[11px] font-medium transition-colors disabled:cursor-default disabled:opacity-40 ${Mt(e===n)}`,children:Z[e]},e)})}),(0,Q.jsxs)(`div`,{className:`space-y-1`,children:[(0,Q.jsx)(`div`,{className:`px-1 text-[11px] text-[var(--chrome-fg-500)]`,children:`Effect`}),(0,Q.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:b.map(e=>(0,Q.jsxs)(`div`,{className:`flex h-7 items-center gap-1 rounded-lg pr-0.5 text-[11px] transition-colors ${Mt(e===i)}`,children:[(0,Q.jsxs)(`button`,{type:`button`,"data-testid":`animate-effect-${e}`,"aria-pressed":e===i,onClick:()=>d(e,a),className:`flex h-full flex-1 cursor-pointer items-center justify-between gap-1 rounded-l-lg pl-2 font-medium`,children:[Re[e].label,(0,Q.jsxs)(`span`,{className:`text-[10px] tabular-nums text-[var(--chrome-fg-400)]`,children:[Math.round(P(e,e===i?a:void 0,t)),`ms`]})]}),(0,Q.jsx)(`button`,{type:`button`,"data-testid":`animate-effect-play-${e}`,"aria-label":`Preview ${Re[e].label} on the slide`,title:`Play this on the shape`,onClick:()=>g(e,e===i?a:void 0),className:`flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-md text-[var(--chrome-fg-500)] transition-colors hover:bg-[var(--chrome-hover)] hover:text-[var(--chrome-fg-900)]`,children:(0,Q.jsx)(Je,{size:10})})]},e))})]}),ze(S)&&(0,Q.jsxs)(`div`,{className:`mt-1 space-y-1 border-t border-[var(--chrome-ring)] pt-2`,children:[(0,Q.jsx)(`div`,{className:`px-1 text-[11px] text-[var(--chrome-fg-500)]`,children:`Direction`}),(0,Q.jsx)(`div`,{className:`flex items-center gap-1`,children:y.map(e=>{let t=(s??S.defaultDirection)===e;return(0,Q.jsx)(`button`,{type:`button`,"data-testid":`animate-direction-${e}`,"aria-pressed":t,"aria-label":gn[e],title:gn[e],onClick:()=>p(e),className:`flex h-7 flex-1 cursor-pointer items-center justify-center rounded-lg text-[11px] font-medium transition-colors ${Mt(t)}`,children:(0,Q.jsx)(_n,{direction:e})},e)})})]}),(0,Q.jsxs)(`div`,{className:`mt-1 space-y-1 border-t border-[var(--chrome-ring)] pt-2`,children:[(0,Q.jsx)(`div`,{className:`px-1 text-[11px] text-[var(--chrome-fg-500)]`,children:`Start`}),(0,Q.jsx)(`div`,{className:`flex flex-col gap-0.5`,children:vn.map(e=>(0,Q.jsx)(`button`,{type:`button`,"data-testid":`animate-start-${e.mode}`,"aria-pressed":c===e.mode,disabled:e.mode===`with`&&!l,onClick:()=>h(e.mode),className:`flex h-7 items-center rounded-lg px-2 text-[11px] font-medium transition-colors disabled:cursor-default disabled:opacity-40 ${Mt(c===e.mode)}`,children:e.label},e.mode))})]}),(0,Q.jsxs)(`div`,{className:`mt-1 flex gap-2 border-t border-[var(--chrome-ring)] pt-2`,children:[(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[(0,Q.jsx)(`div`,{className:`px-1 text-[11px] text-[var(--chrome-fg-500)]`,children:`Duration`}),(0,Q.jsx)(we,{label:`duration in milliseconds`,testId:`animate-duration`,value:Math.round(P(i,a,t)),min:80,max:4e3,step:40,fullWidth:!0,onChange:e=>d(i,e)})]}),c!==`click`&&(0,Q.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-1`,children:[(0,Q.jsx)(`div`,{className:`px-1 text-[11px] text-[var(--chrome-fg-500)]`,children:`Delay`}),(0,Q.jsx)(we,{label:`delay in milliseconds`,testId:`animate-delay`,value:Math.round(Math.max(0,o??0)),min:0,max:1e4,step:100,fullWidth:!0,onChange:f})]})]})]})})})]})}var hn={up:M,down:De,left:ke,right:N},gn={up:`Upward`,down:`Downward`,left:`Leftward`,right:`Rightward`};function _n(e){let{direction:t}=e,n=hn[t];return(0,Q.jsx)(n,{size:13,stroke:2})}var vn=[{mode:`click`,label:`On click`},{mode:`with`,label:`With previous`},{mode:`after`,label:`After previous`}],yn=`flex h-6 w-6 shrink-0 cursor-pointer items-center justify-center rounded-md text-[var(--chrome-fg-600)] transition-colors hover:bg-[var(--chrome-hover)] disabled:cursor-default disabled:text-[var(--chrome-fg-300)] disabled:hover:bg-transparent`,bn=4,xn=380,Sn=200;function Cn(e){let{figure:t,index:n,total:r,onBack:i,onGoToSlide:a,onFocusSlide:o,viewMode:s}=e,{store:c,history:l}=ee(),u=_(e=>e.shapes),d=_(e=>e.selectedIds),f=_(e=>e.hoveredId),p=Ie(),m=(0,X.useMemo)(()=>ot(u,t),[u,t]),h=(0,X.useMemo)(()=>nt(u,t),[u,t]),g=(0,X.useMemo)(()=>dt(m,h),[m,h]),v=(0,X.useMemo)(()=>ut(u,t,h),[u,t,h]),y=(0,X.useMemo)(()=>ct(u,t,h),[u,t,h]),b=(0,X.useMemo)(()=>vt(m),[m]),x=(0,X.useMemo)(()=>y.filter(e=>e.shapes.some(e=>d.has(e.id))),[y,d]),te=(0,X.useMemo)(()=>{let e=new Map;g.forEach((t,n)=>{let r=t.groupId?void 0:t.items[0].shape.groupId;r&&!e.has(r)&&e.set(r,n)});let t=new Map;for(let[n,r]of e)g.filter(e=>e.items[0].shape.groupId===n).length>1&&t.set(r,n);return t},[g]),C=(0,X.useMemo)(()=>{let e=0;return g.map((t,n)=>(n>0&&!t.withPrevious&&(e+=1),e))},[g]),ne=(0,X.useMemo)(()=>mt(m),[m]);function re(e,t){T(Tt(m,[e],t===`enter`?st(e.shapes[0]):void 0,t))}function ie(){T(k?Tt(m,v):kt(u,t))}function T(e){e.length!==0&&(l.beginTransaction(),c.getState().replaceMany(e),l.endTransaction())}(0,X.useEffect)(()=>{o(t)},[t.id]);let[E,D]=(0,X.useState)(null);(0,X.useLayoutEffect)(()=>{if(E===null||E<0)return;let e=m[E];e&&p.play(e,w(t))},[E,m,t,p]),(0,X.useEffect)(()=>{if(E===null)return;let e=E>=0?m[E]:null,t=m[E+1]?.afterPrevious?0:xn,n=(e?Le(e):0)+t,r=setTimeout(()=>{D(e=>e===null||e+1>=m.length?null:e+1)},n);return()=>clearTimeout(r)},[E,m]);let[O,ae]=(0,X.useState)(null);function oe(e,t,n){D(null),p.cancel(),ae({items:e.map(e=>({shape:e.shape,index:e.index,start:0,row:e.row,animation:{...e.animation,step:0,effect:rt(e.shape,t,e.animation.kind),duration:n,delay:void 0}})),armed:e[0]?.animation.kind===`exit`})}(0,X.useEffect)(()=>{if(!O||O.armed)return;let e=setTimeout(()=>ae(e=>e&&!e.armed?{...e,armed:!0}:e),Sn);return()=>clearTimeout(e)},[O]),(0,X.useLayoutEffect)(()=>{if(!O?.armed)return;let e=O.items.some(e=>e.animation.kind===`exit`);p.play({index:0,items:O.items,afterPrevious:!1},w(t)).then(()=>{e&&window.setTimeout(()=>p.cancel(),Sn)})},[O,t,p]),(0,X.useEffect)(()=>{D(null),ae(null)},[m]);function se(){if(ae(null),E!==null){p.cancel(),D(null);return}m.length!==0&&(o(t),p.cancel(),D(-1))}let ce=(0,X.useMemo)(()=>{let e=new Set;if(!f)return e;e.add(f);let t=S(u,f);return t?.groupId&&h.has(t.groupId)&&e.add(t.groupId),e},[f,u,h]);function le(e){return{onPointerEnter:()=>c.getState().setHoveredId(e),onPointerLeave:()=>c.getState().setHoveredId(null)}}(0,X.useEffect)(()=>()=>c.getState().setHoveredId(null),[c]);let ue=Ge({count:g.length,gap:bn,disabled:s,onReorder:(e,t)=>T(Et(g,e,t)),onPress:e=>{let t=g[e];t&&c.getState().setSelectedIds(new Set(t.items.map(e=>e.shape.id)))}}),k=g.length>0;return(0,Q.jsxs)(Q.Fragment,{children:[E!==null&&(0,Q.jsx)(Be,{pending:it(m,E)}),O&&!O.armed&&(0,Q.jsx)(Be,{pending:new Set(O.items.map(e=>e.shape.id))}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-1.5 bg-[var(--chrome-rest)] px-3 pb-3 pt-2.5`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,Q.jsx)(be,{size:15,stroke:1.75,className:`shrink-0 text-[var(--chrome-fg-500)]`}),(0,Q.jsx)(`span`,{className:`flex-1 truncate text-[13px] font-medium text-[var(--chrome-fg-900)]`,children:`Animate`}),(0,Q.jsx)(`button`,{type:`button`,"data-testid":`animate-done`,title:`Back to the deck (Esc)`,onClick:i,className:`flex h-7 shrink-0 cursor-pointer items-center rounded-lg bg-[var(--chrome-accent)] px-3 text-[12px] text-white transition-colors hover:bg-[var(--chrome-accent-hover)]`,children:`Done`})]}),(0,Q.jsxs)(`div`,{className:`flex h-7 items-center justify-between rounded-lg bg-[var(--chrome-popup)] px-0.5 ring-1 ring-[var(--chrome-ring)]`,children:[(0,Q.jsx)(`button`,{className:yn,"data-testid":`animate-prev-slide`,"aria-label":`Previous slide`,disabled:n===0,onClick:()=>a(n-1),children:(0,Q.jsx)(je,{size:14,stroke:1.75})}),(0,Q.jsxs)(`span`,{className:`truncate text-[12px] tabular-nums text-[var(--chrome-fg-700)]`,children:[`Slide `,n+1,` of `,r]}),(0,Q.jsx)(`button`,{className:yn,"data-testid":`animate-next-slide`,"aria-label":`Next slide`,disabled:n>=r-1,onClick:()=>a(n+1),children:(0,Q.jsx)(Me,{size:14,stroke:1.75})})]})]}),!s&&x.length>0&&(0,Q.jsxs)(`div`,{"data-testid":`animate-selection`,className:`mx-3 mb-2 flex h-8 shrink-0 items-center gap-2 rounded-[10px] bg-[var(--chrome-rest)] px-2.5`,children:[(0,Q.jsx)(ln,{size:12,className:`shrink-0 text-[var(--chrome-fg-400)]`}),(0,Q.jsx)(`span`,{className:`flex-1 truncate text-[11.5px] text-[var(--chrome-fg-900)]`,children:x.length===1?un(x[0].shapes,x[0].groupId):`${x.length} shapes`}),Tn(x).map(e=>(0,Q.jsx)(`button`,{type:`button`,"data-testid":`animate-selection-${e}`,title:`Add ${Z[e].toLowerCase()}`,onClick:()=>{for(let t of x)re(t,e)},className:`h-5 shrink-0 cursor-pointer rounded px-1.5 text-[10px] font-medium text-[var(--chrome-fg-600)] ring-1 ring-[var(--chrome-ring)] transition-colors hover:bg-[var(--chrome-hover)] hover:text-[var(--chrome-fg-900)]`,children:Z[e]},e))]}),(0,Q.jsxs)(`div`,{ref:ue.listRef,"data-testid":`animate-list`,className:`flex flex-1 flex-col overflow-y-auto px-3 pb-3 pt-2`,children:[!k&&(0,Q.jsx)(`div`,{className:`px-1 pt-4`,children:y.length===0?(0,Q.jsx)(`div`,{className:`text-balance px-1 py-6 text-center text-[11px] leading-relaxed text-[var(--chrome-fg-400)]`,children:`Nothing on this slide to animate yet.`}):(0,Q.jsxs)(`div`,{"data-testid":`animate-empty`,"data-count":y.length,className:`flex flex-col items-center gap-2.5 rounded-xl p-4 text-center`,children:[(0,Q.jsx)(`span`,{className:`flex h-9 w-9 items-center justify-center rounded-full bg-[var(--chrome-hover)] text-[var(--chrome-fg-600)]`,children:(0,Q.jsx)(be,{size:17,stroke:1.75})}),(0,Q.jsx)(`span`,{className:`text-[12.5px] font-medium text-[var(--chrome-fg-900)]`,children:`Reveal this slide in steps`}),(0,Q.jsx)(`span`,{className:`text-balance text-[11px] leading-relaxed text-[var(--chrome-fg-500)]`,children:wn(y.length)}),!s&&(0,Q.jsx)(dn,{variant:`primary`,units:y,idleCount:v.length,hasBuild:k,onHover:e=>c.getState().setHoveredId(e),onAdd:re,onSweep:ie})]})}),k&&(0,Q.jsx)(`div`,{className:`flex flex-col gap-1`,children:g.map((e,t)=>{let n=pt(e);return(0,Q.jsx)(`div`,{ref:ue.setItemRef(t),"data-testid":`animate-row-${t}`,"data-start":n,className:`shrink-0 ${t>0&&n===`click`?`border-t border-[var(--chrome-ring)] pt-1`:t>0&&n===`after`?`border-t border-dashed border-[var(--chrome-ring)] pt-1`:``}`,style:ue.rowStyle(t),children:(0,Q.jsx)(pn,{unit:e,click:ne[C[t]],playing:E!==null&&C[t]===E,start:n,canJoin:t>0,pointed:ce.has(ft(e)),unseen:b.has(lt(e.items[0])),selected:e.items.every(e=>d.has(e.shape.id)),viewMode:s,handlers:{...ue.rowHandlers(t),...le(e.items[0].shape.id)},onSplit:e.groupId?()=>T(St(g,e.groupId)):null,onMerge:te.has(t)?()=>T(yt(g,te.get(t))):null,onSetEffect:(t,n)=>T(wt(e.items,t,n)),onSetDelay:t=>T(Ot(e.items,t)),onSetKind:t=>T(At(e.items,t)),onSetDirection:t=>T(bt(e.items,t)),onPreviewEffect:(t,n)=>oe(e.items,t,n),onSetStart:t=>T(xt(g,ft(e),t)),onRemove:()=>T(Dt(g,ft(e)))})},ft(e))})}),!s&&k&&(0,Q.jsx)(`div`,{className:`pt-3`,children:(0,Q.jsx)(dn,{units:y,idleCount:v.length,hasBuild:k,onHover:e=>c.getState().setHoveredId(e),onSweep:ie,onAdd:re})})]}),(0,Q.jsxs)(`div`,{className:`flex flex-col gap-2 border-t border-[var(--chrome-ring)] p-3`,children:[(0,Q.jsx)(`button`,{"data-testid":`animate-play`,disabled:!k,className:`flex h-9 w-full 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:bg-[var(--chrome-hover)] disabled:text-[var(--chrome-fg-400)]`,onClick:se,children:E===null?(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Je,{size:13}),`Play`]}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(Ae,{size:13}),`Stop`]})}),!s&&k&&(0,Q.jsx)(`button`,{"data-testid":`animate-clear`,className:`mx-auto flex h-6 cursor-pointer items-center rounded px-2 text-[11px] text-[var(--chrome-fg-500)] transition-colors hover:text-[var(--chrome-fg-900)]`,onClick:()=>T(Ct(m)),children:`Clear animations`})]})]})}function wn(e){return e===1?`One thing shows with the slide. Give it a click of its own.`:`${e} things show at once right now. Give each one its own click.`}function Tn(e){let t=e.flatMap(e=>e.shapes);return gt(t[0]).filter(e=>e===`emphasis`||t.some(t=>!ht(t).some(t=>t.kind===e)))}var En=`flex h-9 items-center justify-center bg-[var(--chrome-accent)] text-[13px] text-white transition-colors hover:bg-[var(--chrome-accent-hover)] disabled:bg-[var(--chrome-hover)] disabled:text-[var(--chrome-fg-400)] data-[popup-open]:bg-[var(--chrome-accent-hover)]`;function Dn(e){let{disabled:t,onPresent:n}=e;return(0,Q.jsxs)(`div`,{className:`flex gap-px`,children:[(0,Q.jsxs)(`button`,{type:`button`,"data-testid":`slides-present`,disabled:t,onClick:()=>n(`current`),className:`${En} flex-1 gap-2 rounded-l-lg`,children:[(0,Q.jsx)(Je,{size:14}),`Start presentation`]}),(0,Q.jsxs)(u,{children:[(0,Q.jsx)(p,{disabled:t,render:(0,Q.jsx)(`button`,{type:`button`,"aria-label":`Presentation start options`,"data-testid":`slides-present-options`,className:`${En} w-9 rounded-r-lg`,children:(0,Q.jsx)(i,{size:14,stroke:2})})}),(0,Q.jsx)(d,{children:(0,Q.jsx)(m,{side:`top`,align:`end`,sideOffset:6,className:`z-50 outline-none`,children:(0,Q.jsxs)(h,{"data-overlay":!0,className:`min-w-[185px] p-1`,children:[(0,Q.jsxs)(f,{"data-testid":`slides-present-beginning`,onClick:()=>n(`beginning`),children:[(0,Q.jsx)(cn,{size:15,stroke:1.75,className:`text-[var(--chrome-fg-400)]`}),`From beginning`]}),(0,Q.jsxs)(f,{"data-testid":`slides-present-current`,onClick:()=>n(`current`),children:[(0,Q.jsx)(o,{size:15,stroke:1.75,className:`text-[var(--chrome-fg-400)]`}),`From current slide`]})]})})})]})]})}var On=`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)]`,kn=`min-w-[185px] p-1 outline-none ${tt.popup}`;function An(e){let{index:t,prefix:n,actions:r,skipped:i,Item:a,Separator:s}=e;function c(e,r,i,o,s=!1){return(0,Q.jsxs)(a,{className:s?`${On} text-red-600 data-[highlighted]:bg-red-50`:On,"data-testid":`${n}-${e}-${t}`,onClick:o,children:[(0,Q.jsx)(`span`,{className:s?`text-red-400`:`text-[var(--chrome-fg-400)]`,children:r}),(0,Q.jsx)(`span`,{children:i})]})}let l=(0,Q.jsx)(s,{className:`mx-1 my-1 h-px bg-[var(--chrome-divider)]`});return(0,Q.jsxs)(Q.Fragment,{children:[c(`present`,(0,Q.jsx)(o,{size:15,stroke:1.75}),`Present from here`,r.onPresent),l,r.onExportPng?c(`export-png`,(0,Q.jsx)(he,{size:15,stroke:1.75}),`Export slide as PNG`,r.onExportPng):null,r.onExportSvg?c(`export-svg`,(0,Q.jsx)(ge,{size:15,stroke:1.75}),`Export slide as SVG`,r.onExportSvg):null,r.onEmbed?c(`embed`,(0,Q.jsx)(Ne,{size:15,stroke:1.75}),`Embed slide…`,r.onEmbed):null,l,c(`duplicate`,(0,Q.jsx)(me,{size:15,stroke:1.75}),`Duplicate slide`,r.onDuplicate),c(`rename`,(0,Q.jsx)(Ve,{size:15,stroke:1.75}),`Rename slide`,r.onRename),c(`notes`,(0,Q.jsx)(Fe,{size:15,stroke:1.75}),`Speaker notes`,r.onEditNotes),i?c(`skip`,(0,Q.jsx)(ve,{size:15,stroke:1.75}),`Unskip slide`,r.onToggleSkip):c(`skip`,(0,Q.jsx)(Ce,{size:15,stroke:1.75}),`Skip slide`,r.onToggleSkip),c(`add-above`,(0,Q.jsx)(Ue,{size:15,stroke:1.75}),`Add slide above`,r.onAddAbove),c(`add-below`,(0,Q.jsx)(We,{size:15,stroke:1.75}),`Add slide below`,r.onAddBelow),l,c(`delete`,(0,Q.jsx)(Oe,{size:15,stroke:1.75}),`Remove slide`,r.onDelete,!0)]})}function jn(e){let{index:t,actions:n,skipped:r,disabled:i}=e;return i?null:(0,Q.jsxs)(u,{children:[(0,Q.jsx)(p,{render:(0,Q.jsx)(`button`,{type:`button`,"aria-label":`Slide options`,"data-testid":`slide-menu-${t}`,className:`absolute right-1.5 top-1.5 flex h-6 w-6 items-center justify-center rounded-md bg-[var(--chrome-surface)] text-[var(--chrome-fg-600)] opacity-0 ring-1 ring-[var(--chrome-ring)] transition-opacity hover:bg-[var(--chrome-hover)] focus-visible:opacity-100 group-hover:opacity-100 data-[popup-open]:opacity-100`,onPointerDown:e=>e.stopPropagation(),children:(0,Q.jsx)(a,{size:13,stroke:1.75})})}),(0,Q.jsx)(d,{children:(0,Q.jsx)(m,{side:`left`,align:`start`,sideOffset:6,className:`z-50 outline-none`,children:(0,Q.jsx)(l,{"data-overlay":!0,className:kn,children:(0,Q.jsx)(An,{index:t,prefix:`slide-menu`,actions:n,skipped:r,Item:c,Separator:s})})})})]})}function Mn(e){let{index:t,actions:n,skipped:r,children:i,disabled:a}=e,o=_(e=>e.coarsePointer);return a||o?(0,Q.jsx)(Q.Fragment,{children:i}):(0,Q.jsxs)(Ee,{children:[(0,Q.jsx)(A,{render:(0,Q.jsx)(`div`,{style:{display:`contents`}}),children:i}),(0,Q.jsx)(d,{children:(0,Q.jsx)(m,{className:`z-50 outline-none`,children:(0,Q.jsx)(l,{"data-overlay":!0,"data-testid":`slide-ctx-${t}`,className:kn,children:(0,Q.jsx)(An,{index:t,prefix:`slide-ctx`,actions:n,skipped:r,Item:c,Separator:s})})})})]})}function Nn(e){let t=L(e),n=18*t.unit,r=[{x:433,fill:W.red},{x:471,fill:W.yellow},{x:509,fill:W.blue}].map(({x:e,fill:r})=>{let i=t.point(e,158);return R({x:i.x,y:i.y,width:n,height:n},r,{kind:`ellipse`,fillStyle:`bold`})}),i=(e,n,r,i)=>R(t.rect(e,n,r,r),i,{kind:`star`,fillStyle:`bold`});return[...r,i(812,100,24,W.yellow),i(128,416,16,W.pink),F(t.rect(120,204,720,90),`Presentation title`,t.font(56)),F(t.rect(180,306,600,40),`A short subtitle that sets the scene`,t.font(24),{color:q}),z([t.point(432,436),t.point(528,436)],{color:H,strokeWidth:4}),F(t.rect(280,452,400,30),`Your name · Occasion · Date`,t.font(16),{color:q})]}function Pn(e){let t=L(e);return[R(t.rect(110,145,230,230),W.yellow,{kind:`ellipse`,label:`01`,fontSize:t.font(80)}),F(t.rect(420,190,460,64),`Section title`,t.font(48),{align:`left`}),z([t.point(422,268),t.point(640,268)],{color:J,strokeWidth:4}),F(t.rect(420,292,460,36),`A one-line summary of this chapter`,t.font(20),{align:`left`,color:q})]}function Fn(e){let t=L(e);return[F(t.rect(330,148,300,26),`THE BIG IDEA`,t.font(15),{letterSpacing:.3,color:q}),F(t.rect(120,192,720,156),`Say the one thing that matters.`,t.font(64)),z([t.point(390,374),t.point(570,374)],{color:H,strokeWidth:5})]}function In(e){let t=L(e),n=(e,n,r,i)=>R(t.rect(e,n,r,r),i,{kind:`star`,fillStyle:`bold`});return[Yt(t),n(150,106,26,W.yellow),n(806,92,18,W.blue),n(730,414,20,W.yellow),n(208,408,14,W.pink),z([t.point(434,198),t.point(526,198)],{color:H,strokeWidth:4}),Jt(t.rect(120,216,720,90),`A title that glows in the dark`,t.font(52)),Jt(t.rect(240,322,480,40),`A quieter cover for serious rooms`,t.font(20),{color:Xt})]}function Ln(e){let t=L(e);return[R(t.rect(0,0,424,qt.height),W.gray,{dash:`none`,label:`Drop an image
|
|
2
|
+
or paste a screenshot`,fontSize:t.font(18),labelColor:q}),F(t.rect(486,168,300,26),`A DECK ABOUT`,t.font(14),{align:`left`,letterSpacing:.3,color:q}),F(t.rect(486,202,408,140),`The thing you came to hear`,t.font(44),{align:`left`,valign:`top`,lineHeight:1.25}),z([t.point(488,360),t.point(600,360)],{color:H,strokeWidth:4}),F(t.rect(486,384,408,30),`Your name · Occasion · Date`,t.font(16),{align:`left`,color:q})]}function Rn(e){let t=L(e),n=W.green,r=(e,n)=>R(t.rect(e,26,15,15),n,{kind:`ellipse`,fillStyle:`bold`,dash:`none`});return[Yt(t),r(30,W.red),r(56,W.yellow),r(82,W.green),nn(t.point(80,130),`~/talks $ present --topic`,t.font(20),n,{fontFamily:K}),nn(t.point(80,176),`"Your big idea"`,t.font(50),Kt,{fontFamily:K}),R(t.rect(80,268,20,42),Kt,{dash:`none`}),nn(t.point(80,356),`loading slides… ████████░░ 80%`,t.font(17),n,{fontFamily:K,opacity:.8}),nn(t.point(80,458),`# your name · today`,t.font(15),Kt,{fontFamily:K,opacity:.5})]}function zn(e){let t=L(e);return[...I(t,`Slide title`),F(t.rect(72,156,816,312),ne([`The first key point`,`A second point, with a little more detail to back it up`,`The third point that drives it home`]),t.font(24),{align:`left`,valign:`top`,lineHeight:2,color:V})]}function Bn(e){let t=L(e),n=[{fill:W.blue,text:`Where we are today`},{fill:W.green,text:`What we learned`},{fill:W.yellow,text:`The plan from here`},{fill:W.pink,text:`Questions and next steps`}].flatMap(({fill:e,text:n},r)=>{let i=160+r*78;return B([R(t.rect(72,i,48,48),e,{kind:`ellipse`,label:String(r+1),fontSize:t.font(20)}),F(t.rect(140,i,720,48),n,t.font(24),{align:`left`})])});return[...I(t,`Agenda`),...n]}function Vn(e){let t=L(e);return[...I(t,`Slide title`),z([t.point(480,160),t.point(480,468)],{strokeWidth:1.5,dash:`dashed`,opacity:.35}),F(t.rect(72,156,380,40),`First column`,t.font(24),{align:`left`}),z([t.point(74,204),t.point(150,204)],{color:`#1971c2`,strokeWidth:3}),F(t.rect(72,216,380,244),`Use this side for the first idea, option or before-state.`,t.font(20),{align:`left`,valign:`top`,color:V}),F(t.rect(508,156,380,40),`Second column`,t.font(24),{align:`left`}),z([t.point(510,204),t.point(586,204)],{color:`#2f9e44`,strokeWidth:3}),F(t.rect(508,216,380,244),`And this side for the second idea, option or after-state.`,t.font(20),{align:`left`,valign:`top`,color:V})]}function Hn(e){let t=L(e);return[F(t.rect(72,48,816,50),`Which way do we go?`,t.font(36)),...B([R(t.rect(72,132,384,344),W.green,{fillStyle:`outline`}),R(t.rect(404,152,32,32),W.green,{kind:`checkbox`,fillStyle:`bold`}),F(t.rect(96,156,336,40),`Option A`,t.font(28)),F(t.rect(108,212,312,240),ne([`Cheaper to build`,`Ships this quarter`,`Less flexible later`]),t.font(20),{align:`left`,valign:`top`,lineHeight:2,color:V})]),...B([R(t.rect(504,132,384,344),W.gray,{fillStyle:`outline`}),F(t.rect(528,156,336,40),`Option B`,t.font(28)),F(t.rect(540,212,312,240),ne([`More upfront work`,`Ships next quarter`,`Grows with us`]),t.font(20),{align:`left`,valign:`top`,lineHeight:2,color:V})]),R(t.rect(450,274,60,60),W.yellow,{kind:`ellipse`,fillStyle:`bold`,label:`vs`,fontSize:t.font(22)})]}function Un(e){let t=L(e);return[...I(t,`Before and after`),...B([R(t.rect(72,140,384,330),W.gray),F(t.rect(96,162,344,36),`Before`,t.font(26),{align:`left`}),F(t.rect(96,214,344,230),`✗ Manual deploys at midnight
|
|
3
|
+
✗ Surprise regressions
|
|
4
|
+
✗ Knowledge in one head`,t.font(19),{align:`left`,valign:`top`,lineHeight:2,color:V})]),...B([R(t.rect(504,140,384,330),W.green),F(t.rect(528,162,344,36),`After`,t.font(26),{align:`left`}),F(t.rect(528,214,344,230),`✓ Ship on every merge
|
|
5
|
+
✓ Tests catch it first
|
|
6
|
+
✓ Docs that stay current`,t.font(19),{align:`left`,valign:`top`,lineHeight:2,color:V})]),Gt(t.point(462,305),t.point(498,305),5)]}function Wn(e){let t=L(e),n=[{x:72,fill:W.blue,value:`42%`,caption:`more signups`},{x:360,fill:W.teal,value:`3×`,caption:`faster builds`},{x:648,fill:W.purple,value:`12k`,caption:`happy users`}].flatMap(({x:e,fill:n,value:r,caption:i})=>B([R(t.rect(e,150,240,260),n,{fillStyle:`outline`,label:r,fontSize:t.font(56)}),F(t.rect(e+20,330,200,56),i,t.font(18),{color:q})]));return[...I(t,`The quarter in numbers`),...n]}function Gn(e){let t=L(e),n=[{color:J,text:`The first thing to remember`},{color:`#1971c2`,text:`The second, said plainly`},{color:`#2f9e44`,text:`The third, end on an action`}].flatMap(({color:e,text:n},r)=>{let i=156+r*104,a=B([nn(t.point(84,i+14),String(r+1),t.font(44),e),F(t.rect(160,i,720,84),n,t.font(26),{align:`left`})]);return r>0&&a.push(z([t.point(84,i-10),t.point(876,i-10)],{strokeWidth:1.5,opacity:.15})),a});return[...I(t,`Three takeaways`),...n]}function Kn(e){let t=L(e);return[...I(t,`Do and don't`),...B([R(t.rect(72,150,400,310),W.green,{fillStyle:`outline`}),R(t.rect(96,170,36,36),W.green,{kind:`checkbox`,fillStyle:`bold`}),F(t.rect(148,170,300,36),`Do`,t.font(28),{align:`left`}),F(t.rect(96,222,352,220),`Keep slides to one idea
|
|
7
|
+
Use big readable text
|
|
8
|
+
Practice out loud`,t.font(20),{align:`left`,valign:`top`,lineHeight:2,color:V})]),...B([R(t.rect(488,150,400,310),W.red,{fillStyle:`outline`}),R(t.rect(512,170,36,36),W.red,{kind:`crossbox`,fillStyle:`bold`}),F(t.rect(564,170,300,36),`Don't`,t.font(28),{align:`left`}),F(t.rect(512,222,352,220),`Cram every detail in
|
|
9
|
+
Read off the slide
|
|
10
|
+
Run past the time box`,t.font(20),{align:`left`,valign:`top`,lineHeight:2,color:V})])]}function qn(e){let t=L(e),n=[{icon:`zap`,fill:W.yellow,name:`Fast`,desc:`Blank canvas to first stroke in a second`},{icon:`users`,fill:W.blue,name:`Together`,desc:`Share a link, draw with the whole room`},{icon:`share-2`,fill:W.green,name:`Portable`,desc:`PNG, SVG and PDF out of the box`},{icon:`undo-2`,fill:W.pink,name:`Forgiving`,desc:`Undo everything, nothing is precious`}].flatMap(({icon:e,fill:n,name:r,desc:i},a)=>{let o=162+a*78,s=52*t.unit,c=t.point(72,o),l=26*t.unit;return B([R({x:c.x,y:c.y,width:s,height:s},n,{kind:`ellipse`,dash:`none`}),Y({x:c.x+(s-l)/2,y:c.y+(s-l)/2},l,e,{color:Zt}),F(t.rect(148,o+2,210,48),r,t.font(22),{align:`left`}),F(t.rect(366,o+2,522,48),i,t.font(17),{align:`left`,color:V})])});return[...I(t,`What you get`),...n]}function Jn(e){let t=L(e),n=[{icon:`gauge`,title:`Instant`,body:`Boards open in under a second, however big`},{icon:`users`,title:`Multiplayer`,body:`Cursors, comments and a shared laser pointer`},{icon:`sparkles`,title:`AI drafts`,body:`Describe a diagram, get shapes you can edit`},{icon:`shapes`,title:`Every shape`,body:`Flowcharts, mockups, tables, charts, slides`},{icon:`lock`,title:`Private`,body:`Nothing leaves your workspace unless you share`},{icon:`file-down`,title:`Portable`,body:`PNG, SVG, PDF and a plain file you own`}].flatMap(({icon:e,title:n,body:r},i)=>{let a=72+i%3*280,o=168+Math.floor(i/3)*152,s=34*t.unit,c=t.point(a,o);return B([Y({x:c.x,y:c.y},s,e,{color:J}),F(t.rect(a+46,o-4,200,40),n,t.font(21),{align:`left`}),F(t.rect(a,o+48,252,76),r,t.font(15),{align:`left`,valign:`top`,lineHeight:1.6,color:V})])});return[...I(t,`Why teams switch`),...n]}function Yn(e){let t=L(e),n=(e,n,r,i)=>R(t.rect(e-126,n-126,252,252),r,{kind:`ellipse`,opacity:.6,color:i,strokeWidth:2}),r=[{cx:300,cy:262,fill:W.blue,ink:$t.blue,name:`What users beg for`},{cx:432,cy:262,fill:W.yellow,ink:$t.yellow,name:`What we're best at`},{cx:366,cy:376,fill:W.teal,ink:$t.teal,name:`What pays the bills`}],i=r.flatMap(({fill:e,name:n},r)=>B([R(t.rect(660,214+r*66,20,20),e,{kind:`ellipse`,fillStyle:`bold`}),F(t.rect(694,208+r*66,200,32),n,t.font(17),{align:`left`})]));return[...I(t,`Where the three meet`),...r.map(({cx:e,cy:t,fill:r,ink:i})=>n(e,t,r,i)),F(t.rect(288,292,156,40),`Do this`,t.font(20)),...i]}function Xn(e){let t=L(e),n=B([R(t.rect(72,140,392,300),W.blue,{fillStyle:`outline`}),F(t.rect(96,164,344,96),`38%`,t.font(72),{align:`left`}),F(t.rect(96,250,344,34),`faster to a first board`,t.font(18),{align:`left`,color:V}),Wt(t.rect(96,292,344,130),`area`,[[``,`Minutes`],[`Jan`,`9.4`],[`Feb`,`7.1`],[`Mar`,`6.2`],[`Apr`,`4.8`],[`May`,`3.6`]],t.font(11),{showLegend:!1})]),r=B([R(t.rect(480,140,196,142),W.green,{fillStyle:`outline`}),F(t.rect(496,164,164,62),`4.8`,t.font(48),{align:`left`}),F(t.rect(496,228,164,32),`average rating`,t.font(15),{align:`left`,color:V})]),i=B([R(t.rect(692,140,196,142),W.orange,{fillStyle:`outline`}),Y(t.point(710,162),30*t.unit,`trophy`,{color:J}),F(t.rect(708,204,164,32),`12 of 14 shipped`,t.font(17),{align:`left`}),F(t.rect(708,234,164,28),`two slipped to Q3`,t.font(14),{align:`left`,color:q})]),a=B([R(t.rect(480,298,408,142),W.gray,{fillStyle:`outline`}),F(t.rect(504,316,360,76),`“It replaced three tools and a weekly meeting.”`,t.font(20),{align:`left`,valign:`top`,lineHeight:1.5}),F(t.rect(504,396,360,28),`Kim, platform lead at Globex`,t.font(14),{align:`left`,color:q})]);return[...I(t,`The quarter at a glance`),...n,...r,...i,...a]}function Zn(e){let t=L(e),n=[{fill:W.green,tag:`Added`,text:`Dark mode, at last`},{fill:W.blue,tag:`Improved`,text:`Boards open twice as fast`},{fill:W.red,tag:`Fixed`,text:`That one bug, gone for good`}].flatMap(({fill:e,tag:n,text:r},i)=>{let a=168+i*88;return B([R(t.rect(72,a+4,140,48),e,{fillStyle:`outline`,label:n,fontSize:t.font(18)}),F(t.rect(236,a,652,56),r,t.font(22),{align:`left`})])});return[F(t.rect(72,48,460,56),`What's new`,t.font(36),{align:`left`}),z([t.point(74,118),t.point(250,118)],{color:H,strokeWidth:4}),F(t.rect(560,58,328,36),`v2.4.0 · this week`,t.font(15),{align:`right`,fontFamily:K,color:q}),...n,F(t.rect(72,442,816,40),`…plus twelve smaller fixes nobody will notice but us.`,t.font(24),{fontFamily:en,color:q})]}function Qn(e){let t=L(e),n=[W.blue,W.green,W.yellow,W.pink,W.teal,W.purple].flatMap((e,n)=>{let r=240+n%3*240,i=n<3?152:312;return B([R(t.rect(r-42,i,84,84),e,{kind:`ellipse`,label:String.fromCharCode(65+n),fontSize:t.font(28)}),F(t.rect(r-110,i+92,220,24),`Name Surname`,t.font(18)),F(t.rect(r-110,i+118,220,20),`What they do`,t.font(14),{color:q})])});return[...I(t,`Meet the team`),...n]}function $n(e){let t=L(e),n=[{x:72,fill:W.blue,quote:`“It changed how our team plans every single week.”`,who:`Sam, Acme`},{x:368,fill:W.orange,quote:`“The first tool everyone actually kept using.”`,who:`Ada, Initech`},{x:664,fill:W.pink,quote:`“We shipped the rework two weeks early.”`,who:`Kim, Globex`}].flatMap(({x:e,fill:n,quote:r,who:i})=>B([R(t.rect(e,150,256,268),n,{fillStyle:`outline`}),F(t.rect(e+20,172,216,150),r,t.font(18),{align:`left`,valign:`top`,lineHeight:1.5}),G(t.rect(e+18,330,104,22),`rating`,{value:5,fill:H}),F(t.rect(e+20,362,216,32),i,t.font(14),{align:`left`,color:q})]));return[...I(t,`What people say`),...n]}function er(e){let t=L(e),n=e.width/qt.width,r=e.height/qt.height,i=[[``,`Basic`,`Pro`,`Team`],[`Price`,`$0`,`$12`,`$29`],[`Projects`,`1`,`10`,`Unlimited`],[`Export`,`PNG`,`PNG, SVG, PDF`,`PNG, SVG, PDF`],[`Support`,`—`,`Email`,`Priority`]],a=i.map((e,t)=>e.map((e,n)=>t===0?{background:n===2?W.blue:`#e9ecef`}:n===2?{background:`#e7f5ff`}:{}));return[...I(t,`Compare the options`),tn(t.point(72,156),i,[252,188,188,188].map(e=>e*n),i.map(()=>54*r),t.font(16),{cellStyles:a})]}function tr(e){let t=L(e),n=[{x:176,fill:W.blue,when:`Q1`,what:`Discovery, 20 interviews`},{x:384,fill:W.green,when:`Q2`,what:`First beta, 10 teams`},{x:592,fill:W.yellow,when:`Q3`,what:`Public launch`},{x:792,fill:W.pink,when:`Q4`,what:`Scale up, self-serve`}].flatMap(({x:e,fill:n,when:r,what:i},a)=>{let o=a%2==0,s=26*t.unit,c=t.point(e,306),l=o?-1:1;return B([z([t.point(e,306+l*16),t.point(e,306+l*54)],{strokeWidth:1.5,opacity:.3}),R({x:c.x-s/2,y:c.y-s/2,width:s,height:s},n,{kind:`ellipse`,fillStyle:`bold`}),F(t.rect(e-92,o?184:364,184,34),r,t.font(22),{valign:o?`bottom`:`top`}),F(t.rect(e-92,o?218:398,184,56),i,t.font(15),{valign:o?`bottom`:`top`,lineHeight:1.5,color:V})])});return[...I(t,`Roadmap`),z([t.point(88,306),t.point(890,306)],{strokeWidth:3,endArrow:!0}),...n,R(t.rect(96,332,96,34),J,{kind:`oval`,fillStyle:`bold`,label:`today`,fontSize:t.font(14)}),z([t.point(144,284),t.point(144,332)],{color:J,strokeWidth:2})]}function nr(e){let t=L(e),n=[{x:72,title:`Now`},{x:350,title:`Next`},{x:628,title:`Later`}].flatMap(({x:e,title:n})=>B([R(t.rect(e,140,260,330),`transparent`,{dash:`dashed`,opacity:.6}),F(t.rect(e,152,260,30),n,t.font(22))])),r=116*t.unit,i=[{x:100,y:206,rot:-2,fill:W.yellow,text:`Ship the fix`},{x:168,y:332,rot:3,fill:W.blue,text:`Call the pilot users`},{x:396,y:224,rot:-4,fill:W.green,text:`Write the launch post`},{x:690,y:240,rot:5,fill:W.pink,text:`Explore pricing`}].map(({x:e,y:n,rot:i,fill:a,text:o})=>U(t.point(e,n),r,o,t.font(15),i,a));return[...I(t,`Now, next, later`),...n,...i]}function rr(e){let t=L(e),n=[{label:`Infrastructure`,fill:W.green,pct:.8},{label:`Mobile app`,fill:W.blue,pct:.6},{label:`Documentation`,fill:W.yellow,pct:.45},{label:`Onboarding`,fill:W.pink,pct:.2}].flatMap(({label:e,fill:n,pct:r},i)=>{let a=168+i*76;return B([F(t.rect(72,a,240,32),e,t.font(20),{align:`left`}),R(t.rect(330,a,470,32),W.gray,{dash:`none`}),R(t.rect(330,a,470*r,32),n,{fillStyle:`bold`,dash:`none`}),F(t.rect(814,a,76,32),`${Math.round(r*100)}%`,t.font(16),{align:`left`,fontFamily:K,color:V})])});return[...I(t,`Where things stand`),...n]}function ir(e){let t=L(e),n=[{x:72,y:140,fill:W.green,title:`Strengths`,hint:`What we do well`},{x:504,y:140,fill:W.red,title:`Weaknesses`,hint:`Where we struggle`},{x:72,y:314,fill:W.blue,title:`Opportunities`,hint:`What we could ride`},{x:504,y:314,fill:W.yellow,title:`Threats`,hint:`What could hurt us`}].flatMap(({x:e,y:n,fill:r,title:i,hint:a})=>B([R(t.rect(e,n,384,158),r),F(t.rect(e+20,n+12,344,28),i,t.font(20),{align:`left`}),F(t.rect(e+20,n+48,344,96),a,t.font(15),{align:`left`,valign:`top`,color:V})]));return[...I(t,`SWOT`),...n]}function ar(e){let t=L(e),n=[{fill:W.blue,label:`Collect`,note:`Anyone can file a request`},{fill:W.teal,label:`Sort`,note:`Weekly triage, no backlog`},{fill:W.green,label:`Decide`,note:`One owner says yes or no`},{fill:W.yellow,label:`Ship`,note:`Behind a flag, then wide`}].flatMap(({fill:e,label:n,note:r},i)=>{let a=72+i*188;return B([R(t.rect(a,218,234,104),e,{kind:`chevron`,label:n,fontSize:t.font(21)}),F(t.rect(a+44,340,174,76),r,t.font(15),{valign:`top`,lineHeight:1.5,color:q})])});return[...I(t,`How it works`),...n]}var $=.56;function or(e){let t=L(e),n=[{fill:W.blue,value:`12,400`,name:`Visited the site`,note:`any page, any source`},{fill:W.teal,value:`1,860`,name:`Started a trial`,note:`15% of visitors`},{fill:W.green,value:`410`,name:`Became customers`,note:`22% of trials`}],r=520,i=[],a=[];return n.forEach(({fill:e,value:n,name:o,note:s},c)=>{let l=148+c*96,u=l+96/2,d=r*$;i.push(...B([R(t.rect(340-r/2,l,r,96),e,{kind:`trapezoid`,rotation:180}),F(t.rect(340-d/2,u-24,d,48),n,t.font(30-c*4))]),...B([F(t.rect(646,u-30,250,30),o,t.font(20),{align:`left`}),F(t.rect(646,u+2,250,26),s,t.font(15),{align:`left`,color:q})])),c>0&&a.push(F(t.rect(40,u-30,134,30),c===1?`−10,540`:`−1,450`,t.font(17),{align:`right`,color:q}),Gt(t.point(340-r/2+18,u-6),t.point(150,u+12),1.8,{color:q})),r*=$}),[...I(t,`Where people drop off`),...i,...a,z([t.point(622,156),t.point(622,428)],{strokeWidth:1.5,dash:`dashed`,opacity:.3}),R(t.rect(258,460,164,38),W.gray,{kind:`oval`,fillStyle:`outline`,label:`3.3% end to end`,fontSize:t.font(16)})]}function sr(e){let t=L(e),n=[{fill:W.purple,label:`Why`,note:`Teams lose their mornings to status meetings`},{fill:W.blue,label:`How`,note:`One board replaces the four tools they juggle`},{fill:W.teal,label:`What`,note:`Ship the shared inbox and the weekly digest`}],r=180,i=[];n.forEach(({fill:e,label:n,note:a},o)=>{let s=176+o*96,c=s+96/2;i.push(...B([R(t.rect(330-r/2,s,r,96),e,{kind:`trapezoid`}),F(t.rect(330-r*$*.5,c-22,r*$,44),n,t.font(24))]),...B([R(t.rect(660,c-26,12,12),e,{kind:`ellipse`,fillStyle:`bold`}),F(t.rect(684,c-34,212,68),a,t.font(16),{align:`left`,valign:`top`,lineHeight:1.5,color:V})])),r/=$});let a=180*$;return[...I(t,`How the work ladders up`),R(t.rect(330-a/2,118,a,58),W.yellow,{kind:`triangle`}),...i]}function cr(e){let t=L(e),n={x:340,y:318},r=[{label:`Talk to users`,fill:W.blue},{label:`Pick one bet`,fill:W.teal},{label:`Ship it small`,fill:W.green},{label:`Measure it`,fill:W.yellow}],i=r.map(({label:e,fill:i},a)=>{let o=-Math.PI/2+a*2*Math.PI/r.length;return R(t.rect(n.x+Math.cos(o)*152-156/2,n.y+Math.sin(o)*152-58/2,156,58),i,{label:e,fontSize:t.font(18)})}),a=i.map((e,n)=>{let r=i[(n+1)%i.length];return Ut({x:e.x+e.width/2,y:e.y+e.height/2},{x:r.x+r.width/2,y:r.y+r.height/2},e,r,{bow:-34*t.unit,strokeWidth:2.4})}),o=46*t.unit;return[...I(t,`How we work`),...a,...i,Y({x:t.point(n.x,n.y).x-o/2,y:t.point(n.x,n.y).y-o/2},o,`refresh-cw`,{color:q}),F(t.rect(646,240,250,34),`Every two weeks`,t.font(21),{align:`left`}),F(t.rect(646,282,250,140),`One loop per sprint. Nothing ships that hasn't been through all four.`,t.font(16),{align:`left`,valign:`top`,lineHeight:1.5,color:V})]}function lr(e){let t=L(e),n=rn(t.rect(72,148,816,300),`lanes`,{lanes:[`Customer`,`Support`,`Engineering`]}),r=e=>148+e*100+50,i=(e,n,i,a)=>R(t.rect(e,r(n)-27,148,54),a,{label:i,fontSize:t.font(16)}),a=i(126,0,`Reports a bug`,W.blue),o=i(324,1,`Triages it`,W.teal),s=i(522,2,`Ships a fix`,W.green),c=i(720,0,`Confirms`,W.blue),l=(e,t)=>Ut({x:e.x+e.width,y:e.y+e.height/2},{x:t.x,y:t.y+t.height/2},e,t,{bendStyle:`elbow`,strokeWidth:2.4});return[...I(t,`Who picks it up`),n,a,o,s,c,l(a,o),l(o,s),l(s,c)]}function ur(e){let t=L(e),n=e=>250+e*106,r=Array.from({length:6},(e,r)=>[z([t.point(n(r),150),t.point(n(r),440)],{strokeWidth:1.5,opacity:.12}),F(t.rect(n(r),118,106,26),`W${r+1}`,t.font(14),{color:q})]).flat(),i=[{name:`Research`,from:0,span:2,fill:W.purple},{name:`Design`,from:1,span:2,fill:W.blue},{name:`Build`,from:2,span:3,fill:W.teal},{name:`Beta`,from:4,span:1.5,fill:W.green},{name:`Launch prep`,from:5,span:.7,fill:W.yellow}].flatMap(({name:e,from:r,span:i,fill:a},o)=>{let s=170+o*52;return B([F(t.rect(72,s,164,36),e,t.font(17),{align:`left`}),R(t.rect(n(r)+6,s+4,106*i-12,28),a,{kind:`oval`,fillStyle:`bold`,dash:`none`})])});return[...I(t,`Six weeks to launch`),...r,...i,z([t.point(n(2),138),t.point(n(2),448)],{color:J,strokeWidth:2,dash:`dashed`}),F(t.rect(n(2)-60,452,120,26),`today`,t.font(14),{color:J}),R(t.rect(852,378,36,36),W.red,{kind:`diamond`,fillStyle:`bold`}),F(t.rect(714,418,168,26),`Launch`,t.font(15),{align:`right`,color:V})]}function dr(e){let t=L(e),n=[{y:244,text:`KR1 — Signup to first board under 2 minutes`,progress:.7,pct:`70%`},{y:320,text:`KR2 — Week-one activation up 20%`,progress:.45,pct:`45%`},{y:396,text:`KR3 — 50 teams on the new flow`,progress:.2,pct:`20%`}].flatMap(({y:e,text:n,progress:r,pct:i})=>B([F(t.rect(72,e,540,44),n,t.font(19),{align:`left`}),R(t.rect(640,e+9,160,24),W.gray,{dash:`none`}),R(t.rect(640,e+9,160*r,24),W.green,{fillStyle:`bold`,dash:`none`}),F(t.rect(812,e+2,76,38),i,t.font(18),{align:`left`,color:V})]));return[...I(t,`This quarter's OKRs`),R(t.rect(72,144,816,62),W.blue,{label:`Objective — Make onboarding effortless`,fontSize:t.font(22)}),...n]}function fr(e){let t=L(e);return[...I(t,`The problem we solve`),...B([R(t.rect(72,150,384,320),W.red,{fillStyle:`outline`}),F(t.rect(96,174,336,40),`The problem`,t.font(26),{align:`left`}),F(t.rect(96,228,336,220),`Status lives in six tools
|
|
11
|
+
Standups eat the morning
|
|
12
|
+
Nobody trusts the roadmap`,t.font(19),{align:`left`,valign:`top`,lineHeight:2,color:V})]),...B([R(t.rect(504,150,384,320),W.green,{fillStyle:`outline`}),F(t.rect(528,174,336,40),`Our solution`,t.font(26),{align:`left`}),F(t.rect(528,228,336,220),`One board for plans and talk
|
|
13
|
+
Status that writes itself
|
|
14
|
+
A roadmap anyone can read`,t.font(19),{align:`left`,valign:`top`,lineHeight:2,color:V})]),Gt(t.point(462,310),t.point(498,310),5)]}function pr(e){let t=L(e),n=[{d:340,fill:W.blue},{d:230,fill:W.teal},{d:120,fill:W.green}].map(({d:e,fill:n})=>R(t.rect(330-e/2,480-e,e,e),n,{kind:`ellipse`})),r=[{y:190,fill:W.blue,value:`TAM — $4.2B`,caption:`everyone with the problem`},{y:268,fill:W.teal,value:`SAM — $600M`,caption:`who we can reach`},{y:346,fill:W.green,value:`SOM — $40M`,caption:`a realistic first bite`}].flatMap(({y:e,fill:n,value:r,caption:i})=>B([R(t.rect(560,e+4,22,22),n,{kind:`ellipse`,fillStyle:`bold`}),F(t.rect(596,e,292,30),r,t.font(22),{align:`left`}),F(t.rect(596,e+34,292,26),i,t.font(15),{align:`left`,color:q})]));return[...I(t,`How big is this?`),...n,...r]}function mr(e){let t=L(e),n=[{x:72,name:`Free`,price:`$0`,features:`3 boards
|
|
15
|
+
Core shapes
|
|
16
|
+
PNG export`,highlight:!1},{x:356,name:`Pro`,price:`$12`,features:`Unlimited boards
|
|
17
|
+
AI assistant
|
|
18
|
+
Every export`,highlight:!0},{x:640,name:`Team`,price:`$49`,features:`Shared spaces
|
|
19
|
+
Admin controls
|
|
20
|
+
Priority help`,highlight:!1}].flatMap(({x:e,name:n,price:r,features:i,highlight:a})=>{let o=[R(t.rect(e,156,248,314),a?W.blue:W.gray,{fillStyle:`outline`}),F(t.rect(e+24,180,200,34),n,t.font(22),{align:`left`}),F(t.rect(e+24,218,200,60),r,t.font(44),{align:`left`}),F(t.rect(e+26,240,200,60),`per person / month`,t.font(13),{align:`right`,valign:`bottom`,color:q}),F(t.rect(e+24,306,200,150),i,t.font(17),{align:`left`,valign:`top`,lineHeight:2,color:V})];return a&&o.push(Qt(t.rect(e+50,138,148,30),W.yellow,`MOST POPULAR`,t.font(12),{labelColor:Zt})),B(o)});return[...I(t,`Pick a plan`),...n]}function hr(e){let t=L(e);return[...I(t,`Where the line is going`),Wt(t.rect(72,150,536,300),`area`,[[``,`MRR`],[`Jan`,`41`],[`Feb`,`58`],[`Mar`,`76`],[`Apr`,`97`],[`May`,`128`],[`Jun`,`164`]],t.font(12),{showLegend:!1,numberFormat:`currency`,showValues:!0}),...[{value:`4.1×`,caption:`revenue in six months`},{value:`112%`,caption:`net revenue retention`},{value:`$0`,caption:`spent on paid acquisition`}].flatMap(({value:e,caption:n},r)=>{let i=168+r*100;return B([F(t.rect(648,i,240,56),e,t.font(40),{align:`left`}),F(t.rect(648,i+54,240,30),n,t.font(15),{align:`left`,color:q})])})]}function gr(e){let t=L(e);return[...I(t,`How we sit in the market`),Wt(t.rect(96,146,768,330),`quadrant`,[[``,`x`,`y`],[`Us`,`0.78`,`0.82`],[`Legacy suite`,`0.24`,`0.74`],[`Sticky-note app`,`0.8`,`0.26`],[`Docs and slides`,`0.34`,`0.22`]],t.font(13),{quadrantLabels:[`Where we play`,`Heavy and slow`,`Good enough`,`Fast but shallow`],xTitle:`Hard to start → Open and draw`,yTitle:`One meeting → The whole workflow`})]}function _r(e){let t=L(e),n=[{icon:`circle-check`,text:`Ship the collaboration layer`},{icon:`circle-check`,text:`Hire two engineers and a designer`},{icon:`circle-check`,text:`Reach $500k ARR before the next round`}].flatMap(({icon:e,text:n},r)=>{let i=300+r*52,a=22*t.unit,o=t.point(72,i+4);return B([Y({x:o.x,y:o.y},a,e,{color:`#2f9e44`}),F(t.rect(108,i,380,34),n,t.font(17),{align:`left`,color:V})])});return[...I(t,`The ask`),F(t.rect(72,158,420,96),`$2.5M`,t.font(76),{align:`left`}),F(t.rect(72,250,420,34),`seed round · 18 months of runway`,t.font(19),{align:`left`,color:q}),...n,Wt(t.rect(536,152,352,300),`donut`,[[``,`Share`],[`Engineering`,`55`],[`Go to market`,`30`],[`Everything else`,`15`]],t.font(12),{showValues:!0,numberFormat:`percent`})]}function vr(e){let t=L(e),n=[{x:136,y:146,fill:W.green,title:`Quick wins`,align:`left`},{x:491,y:146,fill:W.blue,title:`Big bets`,align:`right`},{x:136,y:299,fill:W.gray,title:`Fill-ins`,align:`left`},{x:491,y:299,fill:W.red,title:`Money pits`,align:`right`}].flatMap(({x:e,y:n,fill:r,title:i,align:a})=>[R({...t.rect(e,n,710/2,306/2)},r,{dash:`none`,opacity:.35}),F(t.rect(e+(a===`left`?16:-16),n+10,710/2-32,26),i,t.font(15),{align:a,color:V})]),r=96*t.unit,i=[{x:190,y:176,rot:-3,fill:W.green,text:`Ship this week`},{x:604,y:190,rot:4,fill:W.blue,text:`The big rewrite`},{x:236,y:322,rot:2,fill:W.yellow,text:`Nice to have`},{x:640,y:336,rot:-5,fill:W.red,text:`Kill it`}].map(({x:e,y:n,rot:i,fill:a,text:o})=>U(t.point(e,n),r,o,t.font(14),i,a));return[...I(t,`Where to spend the effort`),...n,z([t.point(120,299),t.point(868,299)],{strokeWidth:2,endArrow:!0,opacity:.5}),z([t.point(491,468),t.point(491,124)],{strokeWidth:2,endArrow:!0,opacity:.5}),...i,F(t.rect(692,466,160,26),`more effort`,t.font(14),{align:`right`,color:q}),F(t.rect(503,112,160,26),`more impact`,t.font(14),{align:`left`,color:q})]}function yr(e){let t=L(e),n=[{x:72,fill:W.green,icon:`circle-check`,title:`In scope`,body:`Shared inbox
|
|
21
|
+
Weekly digest
|
|
22
|
+
Slack alerts`},{x:350,fill:W.red,icon:`circle-slash`,title:`Not this time`,body:`Mobile app
|
|
23
|
+
Custom roles
|
|
24
|
+
SSO`},{x:628,fill:W.orange,icon:`triangle-alert`,title:`Watch out for`,body:`Search rewrite lands late
|
|
25
|
+
One backend engineer`}].flatMap(({x:e,fill:n,icon:r,title:i,body:a})=>B([R(t.rect(e,232,260,186),n,{fillStyle:`outline`}),R(t.rect(e+18,250,224,32),`transparent`,{dash:`none`,label:i,fontSize:t.font(19),align:`left`,titleIcon:{source:`lucide`,name:r,placement:`inside`}}),F(t.rect(e+18,292,224,112),a,t.font(15),{align:`left`,valign:`top`,lineHeight:1.9,color:V})])),r=[`Owner · Ada`,`Ships · 14 August`,`Check-in · Fridays, 10:00`].map((e,n)=>Qt(t.rect(72+n*250,448,232,38),W.gray,e,t.font(15),{fillStyle:`pastel`}));return[...I(t,`Project kickoff`),R(t.rect(72,140,816,68),W.blue,{label:`Cut the time a team spends chasing status to zero`,fontSize:t.font(23),titleIcon:{source:`lucide`,name:`target`,placement:`inside`}}),...n,...r]}function br(e){let t=L(e),n=e=>186+e*140,r=[{label:`Hears of us`,doing:`A teammate shares a board`,mood:`smile`,fill:W.green},{label:`Signs up`,doing:`Three fields, no card`,mood:`smile`,fill:W.green},{label:`First board`,doing:`Stares at a blank canvas`,mood:`meh`,fill:W.yellow},{label:`Invites the team`,doing:`Nobody joins for a week`,mood:`frown`,fill:W.red},{label:`Renews`,doing:`Finance asks what it's for`,mood:`meh`,fill:W.yellow}].flatMap(({label:e,doing:r,mood:i,fill:a},o)=>{let s=n(o),c=38*t.unit,l=t.point(s+132/2,318);return[Qt(t.rect(s,148,132,36),W.blue,e,t.font(14),{fillStyle:`outline`}),F(t.rect(s,206,132,76),r,t.font(14),{valign:`top`,lineHeight:1.5,color:V}),Y({x:l.x-c/2,y:l.y-c/2},c,i,{color:a===W.green?`#2f9e44`:a===W.red?`#e03131`:`#f08c00`})]}),i=[`Doing`,`Feeling`,`Fix it here`].map((e,n)=>F(t.rect(56,[212,306,384][n],110,30),e,t.font(15),{align:`right`,color:q})),a=104*t.unit;return[...I(t,`The trip they take`),z([t.point(176,292),t.point(888,292)],{strokeWidth:1.5,opacity:.15}),z([t.point(176,366),t.point(888,366)],{strokeWidth:1.5,opacity:.15}),...r,...i,U(t.point(n(2)+14,384),a,`Start from a template`,t.font(13),-3),U(t.point(n(3)+14,384),a,`Invite from the empty board`,t.font(13),4)]}function xr(e){let t=L(e);return[...I(t,`What the data says`),Wt(t.rect(72,150,530,310),`bar`,[[``,`This year`,`Last year`],[`Q1`,`12`,`8`],[`Q2`,`18`,`11`],[`Q3`,`24`,`16`],[`Q4`,`31`,`19`]],t.font(12),{showLegend:!0,showValues:!0}),F(t.rect(648,170,240,30),`The takeaway`,t.font(22),{align:`left`}),F(t.rect(648,212,240,200),`Say in one sentence what the chart proves, then stop.`,t.font(16),{align:`left`,valign:`top`,lineHeight:1.5,color:V})]}function Sr(e){let t=L(e),n=R(t.rect(96,220,180,90),W.blue,{label:`Client`,fontSize:t.font(20),titleIcon:{source:`lucide`,name:`monitor`,placement:`inside`}}),r=R(t.rect(390,220,180,90),W.teal,{label:`API`,fontSize:t.font(20),titleIcon:{source:`lucide`,name:`server`,placement:`inside`}}),i=R(t.rect(684,205,180,120),W.purple,{kind:`cylinder`,label:`Database`,fontSize:t.font(20)});return[...I(t,`How it fits together`),n,r,i,Ut(t.point(278,265),t.point(388,265),n,r,{label:`REST`,fontSize:t.font(14),strokeWidth:2.4}),Ut(t.point(572,265),t.point(682,265),r,i,{label:`SQL`,fontSize:t.font(14),strokeWidth:2.4}),F(t.rect(72,420,816,30),`Swap the boxes for your pieces. The arrows stay attached.`,t.font(16),{color:q})]}function Cr(e){let t=L(e);return[R(t.rect(-65,277,330,56),W.yellow,{fillStyle:`bold`,label:`THE ONE NUMBER`,fontSize:t.font(17),letterSpacing:.15,rotation:-90}),F(t.rect(180,150,600,200),`99.9%`,t.font(120)),F(t.rect(180,366,600,40),`what it measures, and why it matters`,t.font(20),{color:q}),z([t.point(420,352),t.point(540,352)],{color:J,strokeWidth:4})]}function wr(e){let t=L(e);return[R(t.rect(72,84,400,372),W.gray,{dash:`none`,label:`Drop an image
|
|
26
|
+
or sketch here`,fontSize:t.font(18),labelColor:q}),F(t.rect(528,132,360,80),`Show, then tell`,t.font(36),{align:`left`}),z([t.point(530,224),t.point(660,224)],{color:H,strokeWidth:4}),F(t.rect(528,248,360,180),`Pair one strong visual with a few words. Say what it shows and why it matters. Nothing more.`,t.font(20),{align:`left`,valign:`top`,lineHeight:1.5,color:V})]}function Tr(e){let t=L(e),n=58*t.unit,r=46*t.unit,i=t.point(136,412);return[Y(t.point(136,148),n,`quote`,{color:J,strokeWidth:2.4}),F(t.rect(132,232,700,156),`Add one line worth remembering, and give it the whole slide.`,t.font(38),{align:`left`,valign:`top`,lineHeight:1.4}),R({x:i.x,y:i.y,width:r,height:r},W.yellow,{kind:`ellipse`,label:`A`,fontSize:t.font(18)}),F(t.rect(196,410,400,28),`Ada Lovelace`,t.font(19),{align:`left`}),F(t.rect(196,436,400,26),`Head of platform, Initech`,t.font(15),{align:`left`,color:q})]}function Er(e){let t=L(e);return[rn(t.rect(112,64,224,424),`phone`),G(t.rect(128,92,192,22),`statusbar`,{label:`9:41`,fontSize:t.font(11)}),G(t.rect(128,122,192,30),`heading`,{label:`Boards`,fontSize:t.font(18)}),G(t.rect(128,160,192,34),`search`,{label:`Search boards…`,fontSize:t.font(12)}),G(t.rect(128,206,192,116),`list`,{label:`Sprint board | Roadmap wall | Retro — Tuesday`,fontSize:t.font(12)}),G(t.rect(128,336,192,42),`button`,{label:`New board`,fill:W.blue,fontSize:t.font(13)}),G(t.rect(128,424,192,44),`tabbar`,{label:`Home | Search | You`,fontSize:t.font(11)}),F(t.rect(420,150,470,80),`In your pocket`,t.font(36),{align:`left`}),z([t.point(422,240),t.point(552,240)],{color:H,strokeWidth:4}),F(t.rect(420,264,460,160),`One tap from idea to board. Works offline, syncs the moment you're back.`,t.font(20),{align:`left`,valign:`top`,lineHeight:1.5,color:V})]}function Dr(e){let t=L(e);return[...I(t,`Where the work lives`),rn(t.rect(72,148,520,312),`browser`),G(t.rect(84,196,96,252),`sidebar`,{label:`Boards | Team | Settings`,fontSize:t.font(11),fill:W.gray}),G(t.rect(192,194,200,30),`heading`,{label:`Roadmap wall`,fontSize:t.font(16)}),G(t.rect(428,196,152,28),`segmented`,{label:`Day | Week | Month`,fontSize:t.font(10),fill:W.blue}),...[{x:192,label:`Now`},{x:326,label:`Next`},{x:460,label:`Later`}].map(({x:e,label:n})=>G(t.rect(e,238,120,86),`card`,{label:n,fontSize:t.font(12)})),G(t.rect(192,340,388,100),`list`,{label:`Ship the fix | Call the pilot users | Write the launch post`,fontSize:t.font(12)}),F(t.rect(628,190,260,76),`One wall for the whole team`,t.font(25),{align:`left`,valign:`top`,lineHeight:1.3}),F(t.rect(628,288,260,160),`Everything the team is doing, on one wall anyone can open.`,t.font(17),{align:`left`,valign:`top`,lineHeight:1.5,color:V})]}function Or(e){let t=L(e),n=[{x:148,y:214,note:`The one action a new board needs`},{x:300,y:320,note:`Status, without asking anyone`},{x:452,y:396,note:`Everything else hides until it's wanted`}],r=36*t.unit;return[...I(t,`What to look at`),R(t.rect(72,150,520,300),`transparent`,{dash:`dashed`,label:`Drop a screenshot here`,fontSize:t.font(17),labelColor:q,opacity:.6}),...n.flatMap(({x:e,y:n,note:i},a)=>{let o=t.point(e,n),s=178+a*92;return[G({x:o.x,y:o.y,width:r,height:r},`stepbadge`,{label:String(a+1),fontSize:t.font(15),fill:W.yellow}),...B([G(t.rect(628,s,34,34),`stepbadge`,{label:String(a+1),fontSize:t.font(15),fill:W.yellow}),F(t.rect(674,s-4,214,84),i,t.font(16),{align:`left`,valign:`top`,lineHeight:1.5,color:V})])]})]}function kr(e){let t=L(e),n=(e,n,r)=>R(e,`transparent`,{dash:`dashed`,label:n,fontSize:t.font(r),labelColor:q,opacity:.6});return[...I(t,`The look we're after`),n(t.rect(72,148,462,312),`Drop the hero shot`,18),n(t.rect(552,148,336,148),`Reference`,15),n(t.rect(552,312,158,148),`Detail`,14),n(t.rect(730,312,158,148),`Colour`,14)]}function Ar(e){let t=L(e),n=124*t.unit,r=[{x:128,y:96,rot:-4,fill:W.blue,text:`What if…?`},{x:660,y:84,rot:3,fill:W.green,text:`Steal this idea`},{x:116,y:326,rot:5,fill:W.pink,text:`Open question`},{x:692,y:318,rot:-6,fill:W.teal,text:`Remember this`},{x:408,y:392,rot:2,fill:W.yellow,text:`Wild card`}].map(({x:e,y:r,rot:i,fill:a,text:o})=>U(t.point(e,r),n,o,t.font(15),i,a));return[R(t.rect(350,200,260,120),W.yellow,{kind:`ellipse`,fillStyle:`bold`,label:`The topic`,fontSize:t.font(26)}),...r]}function jr(e){let t=L(e),n=(e,n,r,i)=>R(t.rect(e,n,r,r),i,{kind:`star`,fillStyle:`bold`});return[n(186,122,44,W.yellow),n(744,104,32,W.pink),n(252,396,26,W.blue),F(t.rect(160,186,640,100),`Demo time`,t.font(72)),F(t.rect(280,300,400,48),`(everything will be fine)`,t.font(30),{fontFamily:en,color:V}),U(t.point(656,360),132*t.unit,`Plan B: screenshots`,t.font(16),5)]}function Mr(e){let t=L(e),n=26*t.unit,r=t.point(772,102);return[R({x:r.x,y:r.y,width:n,height:n},W.pink,{kind:`heart`,fillStyle:`bold`}),F(t.rect(160,190,640,100),`Thank you!`,t.font(64)),...[`hello@example.com`,`koboyo.com`,`@yourhandle`].map((e,n)=>Qt(t.rect(196+n*200,306,184,40),W.gray,e,t.font(15),{fillStyle:`pastel`})),U(t.point(688,366),180*.85*t.unit,`Questions?`,t.font(20),-6)]}function Nr(e){let t=L(e),n=84*t.unit,r=t.point(480,132);return[Y({x:r.x-n/2,y:r.y},n,`coffee`,{color:J}),F(t.rect(160,248,640,90),`Back in 10 minutes`,t.font(56)),F(t.rect(280,344,400,44),`stretch, refill, ignore Slack`,t.font(28),{fontFamily:en,color:V}),G(t.rect(330,424,300,18),`progress`,{value:.35,fill:W.blue})]}var Pr=[{id:`blank`,name:`Blank`,category:`title`,build:()=>[]},{id:`cover`,name:`Title slide`,category:`title`,build:Nn},{id:`image-cover`,name:`Image title`,category:`title`,build:Ln},{id:`dark-cover`,name:`Midnight title`,category:`title`,build:In},{id:`terminal`,name:`Terminal`,category:`title`,build:Rn},{id:`section`,name:`Section divider`,category:`title`,build:Pn},{id:`big-statement`,name:`Big statement`,category:`title`,build:Fn},{id:`bullets`,name:`Title and bullets`,category:`content`,build:zn},{id:`agenda`,name:`Agenda`,category:`content`,build:Bn},{id:`two-columns`,name:`Two columns`,category:`content`,build:Vn},{id:`comparison`,name:`Comparison`,category:`content`,build:Hn},{id:`before-after`,name:`Before and after`,category:`content`,build:Un},{id:`metrics`,name:`Key numbers`,category:`content`,build:Wn},{id:`takeaways`,name:`Three takeaways`,category:`content`,build:Gn},{id:`checklist`,name:`Do and don't`,category:`content`,build:Kn},{id:`feature-list`,name:`Feature rundown`,category:`content`,build:qn},{id:`icon-grid`,name:`Icon grid`,category:`content`,build:Jn},{id:`bento`,name:`At a glance`,category:`content`,build:Xn},{id:`venn`,name:`Overlap`,category:`content`,build:Yn},{id:`changelog`,name:`What's new`,category:`content`,build:Zn},{id:`feature-table`,name:`Feature matrix`,category:`content`,build:er},{id:`timeline`,name:`Timeline`,category:`plan`,build:tr},{id:`kanban`,name:`Now, next, later`,category:`plan`,build:nr},{id:`progress`,name:`Status report`,category:`plan`,build:rr},{id:`okrs`,name:`OKRs`,category:`plan`,build:dr},{id:`swot`,name:`SWOT`,category:`plan`,build:ir},{id:`process`,name:`Process`,category:`plan`,build:ar},{id:`funnel`,name:`Funnel`,category:`plan`,build:or},{id:`pyramid`,name:`Pyramid`,category:`plan`,build:sr},{id:`cycle`,name:`Loop`,category:`plan`,build:cr},{id:`swimlanes`,name:`Swimlanes`,category:`plan`,build:lr},{id:`gantt`,name:`Week-by-week plan`,category:`plan`,build:ur},{id:`problem-solution`,name:`Problem, solution`,category:`pitch`,build:fr},{id:`market-size`,name:`Market size`,category:`pitch`,build:pr},{id:`traction`,name:`Traction`,category:`pitch`,build:hr},{id:`competition`,name:`Competitive map`,category:`pitch`,build:gr},{id:`ask`,name:`The ask`,category:`pitch`,build:_r},{id:`pricing`,name:`Pricing tiers`,category:`pitch`,build:mr},{id:`team`,name:`Meet the team`,category:`pitch`,build:Qn},{id:`testimonials`,name:`What people say`,category:`pitch`,build:$n},{id:`matrix`,name:`Effort vs impact`,category:`workshop`,build:vr},{id:`kickoff`,name:`Project kickoff`,category:`workshop`,build:yr},{id:`journey`,name:`Journey map`,category:`workshop`,build:br},{id:`chart`,name:`Chart`,category:`visual`,build:xr},{id:`diagram`,name:`Diagram starter`,category:`visual`,build:Sr},{id:`big-metric`,name:`One number`,category:`visual`,build:Cr},{id:`image-text`,name:`Image and text`,category:`visual`,build:wr},{id:`image-grid`,name:`Moodboard`,category:`visual`,build:kr},{id:`annotated`,name:`Annotated screenshot`,category:`visual`,build:Or},{id:`phone`,name:`Phone mockup`,category:`visual`,build:Er},{id:`browser`,name:`Browser mockup`,category:`visual`,build:Dr},{id:`quote`,name:`Quote`,category:`visual`,build:Tr},{id:`brainstorm`,name:`Brainstorm`,category:`fun`,build:Ar},{id:`demo`,name:`Demo time`,category:`fun`,build:jr},{id:`intermission`,name:`Break`,category:`fun`,build:Nr},{id:`closing`,name:`Thank you`,category:`fun`,build:Mr}];async function Fr(e,t,n,r){let i=r.theme.palette();return on(await an(e,r,{bounds:t,padding:0,background:n(i),palette:i}))}var Ir=new Map;function Lr(e,t,n,r){let i=pe(),[a,o]=(0,X.useState)(()=>Ir.get(e)??null),s=(0,X.useRef)(t);s.current=t;let c=(0,X.useRef)(n);c.current=n;let l=(0,X.useRef)(r);return l.current=r,(0,X.useEffect)(()=>{let t=Ir.get(e);if(t){o(t);return}let n=!0,r={x:0,y:0,...c.current};return Fr(b(s.current()),r,e=>l.current?e.paperBg:e.bg,i).then(t=>{Ir.set(e,t),n&&o(t)}),()=>{n=!1}},[e,i]),a}function Rr(e){let{template:t,testId:n,cacheKey:r,aspect:i,canvas:a,onPaper:o,onPick:s}=e,c=Lr(r,()=>t.build({x:0,y:0,...a}),a,o);return(0,Q.jsxs)(`button`,{type:`button`,"data-testid":n,onClick:s,className:`group overflow-hidden rounded-lg text-left ring-1 ring-[var(--chrome-ring)] transition-shadow hover:ring-2 hover:ring-[var(--chrome-fg-500)]`,children:[(0,Q.jsx)(`div`,{className:`${i} w-full`,style:{background:o?`var(--paper-bg)`:`var(--canvas-bg)`},children:c&&(0,Q.jsx)(`img`,{src:c,alt:``,draggable:!1,className:`h-full w-full object-fill`})}),(0,Q.jsxs)(`div`,{className:`border-t border-[var(--chrome-ring)] px-2.5 py-1.5`,children:[(0,Q.jsx)(`div`,{className:`text-[12px] text-[var(--chrome-fg-800)]`,children:t.name}),t.blurb?(0,Q.jsx)(`div`,{className:`text-[11px] text-[var(--chrome-fg-500)]`,children:t.blurb}):null]})]})}function zr(e){let{open:t,onOpenChange:n,title:r,prefix:i,width:a,cardAspect:o,canvas:s,filters:c,templates:l,previewOnPaper:u,pinned:d,onPick:f}=e,p=(0,X.useRef)(null),[m,h]=(0,X.useState)(`all`),g=Te(),ee=l.filter(e=>m===`all`||e.category===m||d?.(e));return(0,Q.jsx)(It,{open:t,onOpenChange:n,children:(0,Q.jsxs)(Pt,{children:[(0,Q.jsx)(Nt,{className:`fixed inset-0 bg-gray-900/15`}),(0,Q.jsxs)(Ft,{ref:p,initialFocus:p,"data-overlay":!0,"data-testid":`${i}-dialog`,className:`scrollbar-slim fixed left-1/2 top-1/2 max-h-[82vh] ${a} -translate-x-1/2 -translate-y-1/2 overflow-y-auto overflow-x-hidden rounded-2xl bg-[var(--chrome-popup)] shadow-[0_24px_70px_rgba(0,0,0,0.22)] outline-none ring-1 ring-[var(--chrome-ring)]`,children:[(0,Q.jsxs)(`div`,{className:`sticky top-0 z-10 border-b border-[var(--chrome-ring)] bg-[var(--chrome-surface)] backdrop-blur`,children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between px-5 pb-2.5 pt-3.5`,children:[(0,Q.jsx)(Rt,{className:`text-[15px] text-[var(--chrome-fg-900)]`,children:r}),(0,Q.jsx)(Lt,{"aria-label":`Close`,className:`-mr-1.5 flex h-7 w-7 items-center justify-center rounded-full text-[var(--chrome-fg-400)] outline-none transition-colors hover:bg-[var(--chrome-divider)] hover:text-[var(--chrome-fg-600)]`,children:(0,Q.jsx)(qe,{size:16,stroke:1.75})})]}),(0,Q.jsx)(`div`,{className:`scrollbar-slim flex gap-1.5 overflow-x-auto px-5 pb-3`,children:c.map(({id:e,label:t})=>(0,Q.jsx)(`button`,{type:`button`,"data-testid":`${i}-filter-${e}`,onClick:()=>h(e),className:`shrink-0 whitespace-nowrap rounded-full px-3 py-1 text-[12px] transition-colors ${m===e?`bg-[var(--chrome-accent)] text-white`:`text-[var(--chrome-fg-600)] ring-1 ring-[var(--chrome-ring)] hover:bg-[var(--chrome-hover)]`}`,children:t},e))})]}),(0,Q.jsx)(`div`,{className:`grid grid-cols-2 gap-3 p-5 sm:grid-cols-3`,children:ee.map(e=>(0,Q.jsx)(Rr,{template:e,testId:`${i}-${e.id}`,cacheKey:`${i}:${e.id}:${g}`,aspect:o,canvas:s,onPaper:u??!1,onPick:()=>{n(!1),f(e)}},e.id))})]})]})})}var Br=[{id:`all`,label:`All`},{id:`title`,label:`Title`},{id:`content`,label:`Content`},{id:`plan`,label:`Plan`},{id:`pitch`,label:`Pitch`},{id:`workshop`,label:`Workshop`},{id:`visual`,label:`Visual`},{id:`fun`,label:`Fun`}];function Vr(e){let{open:t,onOpenChange:n,onPick:r}=e;return(0,Q.jsx)(zr,{open:t,onOpenChange:n,title:`Pick a slide template`,prefix:`slide-template`,width:`w-[min(680px,92vw)]`,cardAspect:`aspect-video`,canvas:qt,filters:Br,templates:Pr,previewOnPaper:!0,pinned:e=>e.id===`blank`,onPick:e=>r(e)})}var Hr=90,Ur=210;function Wr(e){let t=e.width/Math.max(1,e.height);return Math.round(x(248/t,Hr,Ur))}var Gr=new Map;function Kr(e,t,n,r){return e.box.x===t.x&&e.box.y===t.y&&e.box.width===t.width&&e.box.height===t.height&&e.fill===t.fill&&e.theme===r&&e.contents.length===n.length&&e.contents.every((e,t)=>e===n[t])}function qr(e){for(let t of Gr.keys())e.has(t)||Gr.delete(t)}function Jr(e){let{figure:t,shapes:n}=e,r=pe(),i=(0,X.useMemo)(()=>O(n,t),[n,t]),a=Te(),[o,s]=(0,X.useState)(()=>Gr.get(t.id)?.url??null);return(0,X.useEffect)(()=>{let e=Gr.get(t.id);if(e&&Kr(e,t,i,a)){s(e.url);return}let n=!0,o=setTimeout(()=>{Fr(i,w(t),e=>t.fill&&t.fill!==`transparent`?C(t.fill,e):e.bg,r).then(e=>{n&&(Gr.set(t.id,{box:{x:t.x,y:t.y,width:t.width,height:t.height},fill:t.fill,theme:a,contents:i,url:e}),s(e))})},e?300:0);return()=>{n=!1,clearTimeout(o)}},[t,i,a,r]),(0,Q.jsx)(`div`,{className:`w-full overflow-hidden rounded-[7px] bg-[var(--canvas-bg)]`,style:{height:Wr(t)},children:o&&(0,Q.jsx)(`img`,{src:o,alt:``,draggable:!1,className:`h-full w-full object-fill`})})}var Yr=`flex items-center gap-1 rounded-md bg-[var(--chrome-surface)] px-1.5 py-0.5 text-[10px] tabular-nums text-[var(--chrome-fg-600)] ring-1 ring-[var(--chrome-ring)] backdrop-blur-sm`,Xr=72,Zr=12;function Qr(e){let{containerRef:t}=e;return _(e=>e.rightPanel===`slides`)?(0,Q.jsx)($r,{containerRef:t}):null}function $r(e){let{containerRef:t}=e,{ai:n,embed:i}=g(),a=Se(`slide`),o=ee(),{store:s,viewportAnimation:c,history:l}=o,u=et(),{beginTransaction:d,endTransaction:f}=l,p=_(e=>e.shapes),m=_(e=>e.viewport),h=_(e=>e.slidePickerOpen),v=_(e=>e.animateSlideId),y=_(e=>e.selectedIds),b=_(e=>e.viewMode),{addMany:x,sendToBack:S,replaceMany:C,removeShapes:ne,updateShape:E,setSelectedIds:de,setSlidesOpen:pe,setSlidePickerOpen:me,setNotesEditorId:he,setAnimateSlideId:ge,setAiOpen:ve,setPresentingIndex:ye,setViewport:xe,setExportDialog:we}=s.getState(),A=(0,X.useMemo)(()=>D(p),[p]),Te=(0,X.useMemo)(()=>at(p),[p]),Ee=(0,X.useMemo)(()=>oe(A).length,[A]),[j,M]=(0,X.useState)(null);(0,X.useEffect)(()=>{qr(new Set(A.map(e=>e.id)))},[A]);let De=Vt()===`docked`,Oe=(0,X.useCallback)(()=>{let e=t.current,n=e?.clientWidth??window.innerWidth,r=e?.clientHeight??window.innerHeight;return{width:Math.max(1,n-(De?272:0)),height:r}},[t,De]),ke=(0,X.useMemo)(()=>ue(A,m,Oe()),[A,m,Oe]);function N(e){c.animate(s.getState().viewport,fe(w(e),Oe(),Xr),xe)}(0,X.useEffect)(()=>{if(!v||y.size===0)return;let e=s.getState().shapes,t=ie(e,D(e),y);!t||t.id===v||ge(t.id)},[y,v,s,ge]);function Ae(e,t){let{width:n,height:r}=Oe(),i=te({x:n/2,y:r/2},m),a={...ae(A,i,p),slideOrder:e,slideLayout:t&&t.id!==`blank`?t.id:void 0},o=t?t.build(w(a)):[];d(),C(le(A,e)),x([a,...o]),S(new Set([a.id])),f(),de(new Set([a.id])),N(a)}function je(e){let t=s.getState().shapes,{clones:n,renumbered:r}=ce(t,A,e);d(),C(r),x(n),S(new Set([n[0].id])),f(),de(new Set([n[0].id])),N(n[0])}function Me(e){let t=s.getState().shapes;ne(se(t,A[e])),de(new Set)}function Ne(e,t){let n=s.getState().shapes,r=A[e],i=O(n,r),a={bounds:w(r),padding:0,background:r.fill,measurement:o.measurement},c=k(r,e);u(t===`png`?`downloadPng`:`downloadSvg`,i,{options:a,filename:c})}function Pe(e){Ee!==0&&ye(e??Math.max(0,ke))}function Fe(){if(!j)return;let e=j.value.trim();e!==j.initial&&E(j.id,{label:e}),M(null)}let P=Ge({count:A.length,gap:Zr,disabled:b,onPress:e=>N(A[e]),onReorder:(e,t)=>C(re(A,e,t)),canDrag:()=>!j}),Ie=v?A.findIndex(e=>e.id===v):-1,Le=Ie>=0?A[Ie]:void 0;return(0,Q.jsxs)(Ht,{width:272,testId:`slides-panel`,ariaLabel:`Slides`,onDismiss:()=>pe(!1),children:[Le?(0,Q.jsx)(Cn,{figure:Le,index:Ie,total:A.length,viewMode:b,onBack:()=>ge(null),onGoToSlide:e=>{let t=A[e];t&&(ge(t.id),N(t))},onFocusSlide:N}):(0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsxs)(`div`,{className:`flex items-center justify-between py-2 pl-4 pr-2`,children:[(0,Q.jsxs)(`span`,{className:`text-[14px] text-[var(--chrome-fg-900)]`,"data-testid":`slides-count`,children:[`Slides (`,A.length,`)`]}),(0,Q.jsxs)(`div`,{className:`flex items-center`,children:[n&&!b&&(0,Q.jsx)(r,{label:`Generate with AI`,side:`bottom`,children:(0,Q.jsx)(`button`,{type:`button`,"aria-label":`Generate slides with AI`,"data-testid":`slides-ai-open`,onClick:()=>ve(!0),className:`flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg text-[var(--chrome-fg-600)] transition-[background-color,scale] hover:bg-[var(--chrome-hover)] active:scale-[0.96] coarse:h-11 coarse:w-11`,children:(0,Q.jsx)(Ke,{size:16,stroke:1.75})})}),!b&&(0,Q.jsx)(r,{label:`Add slide`,side:`bottom`,children:(0,Q.jsx)(`button`,{type:`button`,"aria-label":`Add slide`,"data-testid":`slides-add`,onClick:()=>me(!0),className:`flex h-8 w-8 cursor-pointer items-center justify-center rounded-lg text-[var(--chrome-fg-600)] transition-[background-color,scale] hover:bg-[var(--chrome-hover)] active:scale-[0.96] coarse:h-11 coarse:w-11`,children:(0,Q.jsx)(He,{size:16,stroke:1.75})})}),i?null:(0,Q.jsx)(r,{label:`Export as PDF`,side:`bottom`,children:(0,Q.jsx)(`button`,{type:`button`,"aria-label":`Export slides as PDF`,"data-testid":`slides-export-pdf`,disabled:Ee===0,onClick:()=>we({format:`pdf`}),className:`${jt} disabled:pointer-events-none disabled:text-[var(--chrome-fg-300)]`,children:(0,Q.jsx)(_e,{size:16,stroke:1.75})})}),(0,Q.jsx)(r,{label:`Hide slides`,side:`bottom`,children:(0,Q.jsx)(`button`,{type:`button`,"aria-label":`Hide slides`,"data-testid":`slides-close`,onClick:()=>pe(!1),className:jt,children:(0,Q.jsx)(qe,{size:16,stroke:1.75})})})]})]}),(0,Q.jsx)(`div`,{className:`mx-3 h-px bg-[var(--chrome-divider)]`}),(0,Q.jsxs)(`div`,{ref:P.listRef,"data-testid":`slides-list`,className:`flex flex-1 flex-col gap-3 overflow-y-auto p-3`,children:[A.length===0&&(0,Q.jsxs)(`div`,{className:`flex flex-col items-center gap-3 py-6 text-center`,children:[(0,Q.jsx)(`p`,{className:`text-[12px] leading-relaxed text-[var(--chrome-fg-400)]`,children:`No slides yet. Create a new slide or generate one with AI to get started.`}),!b&&(0,Q.jsxs)(`button`,{type:`button`,"data-testid":`slides-add-empty`,onClick:()=>me(!0),className:`flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-[12px] text-[var(--chrome-fg-600)] ring-1 ring-[var(--chrome-ring)] transition-colors hover:bg-[var(--chrome-rest)] hover:text-[var(--chrome-fg-900)]`,children:[(0,Q.jsx)(He,{size:14,stroke:1.75}),`Add slide`]})]}),A.map((e,t)=>{let n=T(e,t),r=t===ke,o={onPresent:()=>Pe(t),onExportPng:i?null:()=>Ne(t,`png`),onExportSvg:i?null:()=>Ne(t,`svg`),onEmbed:a?()=>a(e.id):null,onDuplicate:()=>je(t),onRename:()=>M({id:e.id,initial:n,value:n}),onEditNotes:()=>he(e.id),onToggleSkip:()=>E(e.id,{slideSkipped:!e.slideSkipped||void 0}),onAddAbove:()=>Ae(t),onAddBelow:()=>Ae(t+1),onDelete:()=>Me(t)};return(0,Q.jsxs)(`div`,{ref:P.setItemRef(t),"data-testid":`slide-item-${t}`,className:`group relative shrink-0`,style:P.rowStyle(t),children:[(0,Q.jsx)(Mn,{index:t,actions:o,skipped:!!e.slideSkipped,disabled:b,children:(0,Q.jsxs)(`div`,{className:`relative cursor-pointer touch-none overflow-hidden rounded-lg ring-1 transition-shadow ${r?`ring-2 ring-[var(--chrome-fg-500)]`:`ring-[var(--chrome-ring)] hover:ring-black/25`}`,...P.rowHandlers(t),children:[(0,Q.jsx)(`div`,{className:e.slideSkipped?`opacity-40`:void 0,children:(0,Q.jsx)(Jr,{figure:e,shapes:p})}),(0,Q.jsxs)(`div`,{className:`absolute left-1.5 top-1.5 flex items-center gap-1`,children:[e.slideSkipped&&(0,Q.jsxs)(`div`,{"data-testid":`slide-skipped-${t}`,title:`Skipped — not shown when presenting`,className:Yr,children:[(0,Q.jsx)(Ce,{size:11,stroke:1.75}),`Skipped`]}),Te.has(e.id)&&(0,Q.jsxs)(`div`,{"data-testid":`slide-animated-${t}`,title:`Animated: plays in ${Te.get(e.id)} clicks`,className:Yr,children:[(0,Q.jsx)(be,{size:11,stroke:1.75}),Te.get(e.id)]})]}),j?.id===e.id?(0,Q.jsx)(`input`,{autoFocus:!0,onFocus:e=>e.target.select(),value:j.value,onChange:e=>M({...j,value:e.target.value}),onBlur:Fe,onKeyDown:e=>{e.stopPropagation(),e.key===`Enter`&&Fe(),e.key===`Escape`&&M(null)},onPointerDown:e=>e.stopPropagation(),className:`absolute inset-x-0 bottom-0 border-t border-[var(--chrome-ring)] bg-[var(--chrome-popup)] px-2.5 py-1.5 text-[12px] text-[var(--chrome-fg-800)] outline-none`}):(0,Q.jsxs)(`div`,{className:`absolute inset-x-0 bottom-0 flex items-center gap-1.5 border-t border-[var(--chrome-ring)] bg-[var(--chrome-surface)] px-2.5 py-1.5 text-[12px] text-[var(--chrome-fg-800)] backdrop-blur-sm`,title:n,onPointerDown:e=>e.stopPropagation(),onClick:()=>N(e),onDoubleClick:t=>{t.stopPropagation(),b||M({id:e.id,initial:n,value:n})},children:[(0,Q.jsx)(`span`,{className:`shrink-0 text-[var(--chrome-fg-400)]`,children:t+1}),(0,Q.jsx)(`span`,{className:`truncate`,children:n})]})]})}),(0,Q.jsx)(jn,{index:t,actions:o,skipped:!!e.slideSkipped,disabled:b})]},e.id)})]}),(0,Q.jsx)(`div`,{className:`border-t border-[var(--chrome-ring)] p-3`,children:(0,Q.jsx)(Dn,{disabled:Ee===0,onPresent:e=>Pe(e===`beginning`?0:void 0)})})]}),(0,Q.jsx)(Vr,{open:h,onOpenChange:me,onPick:e=>{Ae(A.length,e),De||pe(!1)}})]})}export{Qr as SlidesPanel};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./jsx-runtime-2Zwg-L3c.js";import{Sr as t}from"./slides-D9bnXqtf.js";import{r as n}from"./frames-CRP8oPP8.js";import{t as r}from"./createReactComponent-9UsI5fmM.js";import{t as i}from"./IconAlertTriangle-CxPhYpe-.js";import{t as a}from"./IconEraser-DlZQe3-r.js";import{t as ee}from"./IconLink-ze4g4Lrj.js";import{t as o}from"./IconMinus-y4ejub-s.js";import{t as te}from"./IconMoodSmile-Bic_fw54.js";import{t as ne}from"./IconPencil-C5Y-Y4dC.js";import{t as s}from"./IconPhoto-CR36IK-b.js";import{t as c}from"./IconSearch-C1K0_Pq_.js";import{t as l}from"./IconSparkles-WDcg8BA9.js";import{C as u,b as d,c as f,f as p,g as m,h as re,p as ie,s as ae,v as oe,x as se,y as ce}from"./PopoverPopup-BqGWd_uB.js";import{t as le}from"./keys-DrjiT9FL.js";var h=r(`outline`,`adjustments-horizontal`,`AdjustmentsHorizontal`,[[`path`,{d:`M12 6a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-0`}],[`path`,{d:`M4 6l8 0`,key:`svg-1`}],[`path`,{d:`M16 6l4 0`,key:`svg-2`}],[`path`,{d:`M6 12a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-3`}],[`path`,{d:`M4 12l2 0`,key:`svg-4`}],[`path`,{d:`M10 12l10 0`,key:`svg-5`}],[`path`,{d:`M15 18a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-6`}],[`path`,{d:`M4 18l11 0`,key:`svg-7`}],[`path`,{d:`M19 18l1 0`,key:`svg-8`}]]),ue=r(`outline`,`align-justified`,`AlignJustified`,[[`path`,{d:`M4 6l16 0`,key:`svg-0`}],[`path`,{d:`M4 12l16 0`,key:`svg-1`}],[`path`,{d:`M4 18l12 0`,key:`svg-2`}]]),de=r(`outline`,`antenna-bars-5`,`AntennaBars5`,[[`path`,{d:`M6 18l0 -3`,key:`svg-0`}],[`path`,{d:`M10 18l0 -6`,key:`svg-1`}],[`path`,{d:`M14 18l0 -9`,key:`svg-2`}],[`path`,{d:`M18 18l0 -12`,key:`svg-3`}]]),fe=r(`outline`,`app-window`,`AppWindow`,[[`path`,{d:`M3 7a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-10`,key:`svg-0`}],[`path`,{d:`M6 8h.01`,key:`svg-1`}],[`path`,{d:`M9 8h.01`,key:`svg-2`}]]),pe=r(`outline`,`box-margin`,`BoxMargin`,[[`path`,{d:`M8 8h8v8h-8l0 -8`,key:`svg-0`}],[`path`,{d:`M4 4v.01`,key:`svg-1`}],[`path`,{d:`M8 4v.01`,key:`svg-2`}],[`path`,{d:`M12 4v.01`,key:`svg-3`}],[`path`,{d:`M16 4v.01`,key:`svg-4`}],[`path`,{d:`M20 4v.01`,key:`svg-5`}],[`path`,{d:`M4 20v.01`,key:`svg-6`}],[`path`,{d:`M8 20v.01`,key:`svg-7`}],[`path`,{d:`M12 20v.01`,key:`svg-8`}],[`path`,{d:`M16 20v.01`,key:`svg-9`}],[`path`,{d:`M20 20v.01`,key:`svg-10`}],[`path`,{d:`M20 16v.01`,key:`svg-11`}],[`path`,{d:`M20 12v.01`,key:`svg-12`}],[`path`,{d:`M20 8v.01`,key:`svg-13`}],[`path`,{d:`M4 16v.01`,key:`svg-14`}],[`path`,{d:`M4 12v.01`,key:`svg-15`}],[`path`,{d:`M4 8v.01`,key:`svg-16`}]]),g=r(`outline`,`brackets-contain`,`BracketsContain`,[[`path`,{d:`M7 4h-4v16h4`,key:`svg-0`}],[`path`,{d:`M17 4h4v16h-4`,key:`svg-1`}],[`path`,{d:`M8 16h.01`,key:`svg-2`}],[`path`,{d:`M12 16h.01`,key:`svg-3`}],[`path`,{d:`M16 16h.01`,key:`svg-4`}]]),me=r(`outline`,`browser`,`Browser`,[[`path`,{d:`M4 8h16`,key:`svg-0`}],[`path`,{d:`M4 6a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2l0 -12`,key:`svg-1`}],[`path`,{d:`M8 4v4`,key:`svg-2`}]]),he=r(`outline`,`calendar`,`Calendar`,[[`path`,{d:`M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12`,key:`svg-0`}],[`path`,{d:`M16 3v4`,key:`svg-1`}],[`path`,{d:`M8 3v4`,key:`svg-2`}],[`path`,{d:`M4 11h16`,key:`svg-3`}],[`path`,{d:`M11 15h1`,key:`svg-4`}],[`path`,{d:`M12 15v3`,key:`svg-5`}]]),ge=r(`outline`,`cards`,`Cards`,[[`path`,{d:`M3.604 7.197l7.138 -3.109a.96 .96 0 0 1 1.27 .527l4.924 11.902a1 1 0 0 1 -.514 1.304l-7.137 3.109a.96 .96 0 0 1 -1.271 -.527l-4.924 -11.903a1 1 0 0 1 .514 -1.304l0 .001`,key:`svg-0`}],[`path`,{d:`M15 4h1a1 1 0 0 1 1 1v3.5`,key:`svg-1`}],[`path`,{d:`M20 6c.264 .112 .52 .217 .768 .315a1 1 0 0 1 .53 1.311l-2.298 5.374`,key:`svg-2`}]]),_=r(`outline`,`chart-area-line`,`ChartAreaLine`,[[`path`,{d:`M4 19l4 -6l4 2l4 -5l4 4l0 5l-16 0`,key:`svg-0`}],[`path`,{d:`M4 12l3 -4l4 2l5 -6l4 4`,key:`svg-1`}]]),v=r(`outline`,`chart-bar`,`ChartBar`,[[`path`,{d:`M3 13a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v6a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -6`,key:`svg-0`}],[`path`,{d:`M15 9a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v10a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -10`,key:`svg-1`}],[`path`,{d:`M9 5a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v14a1 1 0 0 1 -1 1h-4a1 1 0 0 1 -1 -1l0 -14`,key:`svg-2`}],[`path`,{d:`M4 20h14`,key:`svg-3`}]]),y=r(`outline`,`chart-dots`,`ChartDots`,[[`path`,{d:`M3 3v18h18`,key:`svg-0`}],[`path`,{d:`M7 9a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-1`}],[`path`,{d:`M17 7a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-2`}],[`path`,{d:`M12 15a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-3`}],[`path`,{d:`M10.16 10.62l2.34 2.88`,key:`svg-4`}],[`path`,{d:`M15.088 13.328l2.837 -4.586`,key:`svg-5`}]]),b=r(`outline`,`chart-grid-dots`,`ChartGridDots`,[[`path`,{d:`M16 6a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-0`}],[`path`,{d:`M4 12a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-1`}],[`path`,{d:`M4 18a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-2`}],[`path`,{d:`M16 18a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-3`}],[`path`,{d:`M8 18h8`,key:`svg-4`}],[`path`,{d:`M18 20v1`,key:`svg-5`}],[`path`,{d:`M18 3v1`,key:`svg-6`}],[`path`,{d:`M6 20v1`,key:`svg-7`}],[`path`,{d:`M6 10v-7`,key:`svg-8`}],[`path`,{d:`M12 3v18`,key:`svg-9`}],[`path`,{d:`M18 8v8`,key:`svg-10`}],[`path`,{d:`M8 12h13`,key:`svg-11`}],[`path`,{d:`M21 6h-1`,key:`svg-12`}],[`path`,{d:`M16 6h-13`,key:`svg-13`}],[`path`,{d:`M3 12h1`,key:`svg-14`}],[`path`,{d:`M20 18h1`,key:`svg-15`}],[`path`,{d:`M3 18h1`,key:`svg-16`}],[`path`,{d:`M6 14v2`,key:`svg-17`}]]),x=r(`outline`,`chart-line`,`ChartLine`,[[`path`,{d:`M4 19l16 0`,key:`svg-0`}],[`path`,{d:`M4 15l4 -6l4 2l4 -5l4 4`,key:`svg-1`}]]),S=r(`outline`,`chart-pie`,`ChartPie`,[[`path`,{d:`M10 3.2a9 9 0 1 0 10.8 10.8a1 1 0 0 0 -1 -1h-6.8a2 2 0 0 1 -2 -2v-7a.9 .9 0 0 0 -1 -.8`,key:`svg-0`}],[`path`,{d:`M15 3.5a9 9 0 0 1 5.5 5.5h-4.5a1 1 0 0 1 -1 -1v-4.5`,key:`svg-1`}]]),C=r(`outline`,`checkbox`,`Checkbox`,[[`path`,{d:`M9 11l3 3l8 -8`,key:`svg-0`}],[`path`,{d:`M20 12v6a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h9`,key:`svg-1`}]]),w=r(`outline`,`chevrons-right`,`ChevronsRight`,[[`path`,{d:`M7 7l5 5l-5 5`,key:`svg-0`}],[`path`,{d:`M13 7l5 5l-5 5`,key:`svg-1`}]]),T=r(`outline`,`circle-dashed`,`CircleDashed`,[[`path`,{d:`M8.56 3.69a9 9 0 0 0 -2.92 1.95`,key:`svg-0`}],[`path`,{d:`M3.69 8.56a9 9 0 0 0 -.69 3.44`,key:`svg-1`}],[`path`,{d:`M3.69 15.44a9 9 0 0 0 1.95 2.92`,key:`svg-2`}],[`path`,{d:`M8.56 20.31a9 9 0 0 0 3.44 .69`,key:`svg-3`}],[`path`,{d:`M15.44 20.31a9 9 0 0 0 2.92 -1.95`,key:`svg-4`}],[`path`,{d:`M20.31 15.44a9 9 0 0 0 .69 -3.44`,key:`svg-5`}],[`path`,{d:`M20.31 8.56a9 9 0 0 0 -1.95 -2.92`,key:`svg-6`}],[`path`,{d:`M15.44 3.69a9 9 0 0 0 -3.44 -.69`,key:`svg-7`}]]),E=r(`outline`,`circle-dot`,`CircleDot`,[[`path`,{d:`M11 12a1 1 0 1 0 2 0a1 1 0 1 0 -2 0`,key:`svg-0`}],[`path`,{d:`M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0`,key:`svg-1`}]]),D=r(`outline`,`circle-number-1`,`CircleNumber1`,[[`path`,{d:`M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0`,key:`svg-0`}],[`path`,{d:`M10 10l2 -2v8`,key:`svg-1`}]]),O=r(`outline`,`circle-plus`,`CirclePlus`,[[`path`,{d:`M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0`,key:`svg-0`}],[`path`,{d:`M9 12h6`,key:`svg-1`}],[`path`,{d:`M12 9v6`,key:`svg-2`}]]),k=r(`outline`,`circle`,`Circle`,[[`path`,{d:`M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0`,key:`svg-0`}]]),A=r(`outline`,`device-mobile`,`DeviceMobile`,[[`path`,{d:`M6 5a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2v-14`,key:`svg-0`}],[`path`,{d:`M11 4h2`,key:`svg-1`}],[`path`,{d:`M12 17v.01`,key:`svg-2`}]]),j=r(`outline`,`device-tablet`,`DeviceTablet`,[[`path`,{d:`M5 4a1 1 0 0 1 1 -1h12a1 1 0 0 1 1 1v16a1 1 0 0 1 -1 1h-12a1 1 0 0 1 -1 -1v-16`,key:`svg-0`}],[`path`,{d:`M11 17a1 1 0 1 0 2 0a1 1 0 0 0 -2 0`,key:`svg-1`}]]),M=r(`outline`,`forms`,`Forms`,[[`path`,{d:`M12 3a3 3 0 0 0 -3 3v12a3 3 0 0 0 3 3`,key:`svg-0`}],[`path`,{d:`M6 3a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3`,key:`svg-1`}],[`path`,{d:`M13 7h7a1 1 0 0 1 1 1v8a1 1 0 0 1 -1 1h-7`,key:`svg-2`}],[`path`,{d:`M5 7h-1a1 1 0 0 0 -1 1v8a1 1 0 0 0 1 1h1`,key:`svg-3`}],[`path`,{d:`M17 12h.01`,key:`svg-4`}],[`path`,{d:`M13 12h.01`,key:`svg-5`}]]),N=r(`outline`,`hand-stop`,`HandStop`,[[`path`,{d:`M8 13v-7.5a1.5 1.5 0 0 1 3 0v6.5`,key:`svg-0`}],[`path`,{d:`M11 5.5v-2a1.5 1.5 0 1 1 3 0v8.5`,key:`svg-1`}],[`path`,{d:`M14 5.5a1.5 1.5 0 0 1 3 0v6.5`,key:`svg-2`}],[`path`,{d:`M17 7.5a1.5 1.5 0 0 1 3 0v8.5a6 6 0 0 1 -6 6h-2h.208a6 6 0 0 1 -5.012 -2.7a69.74 69.74 0 0 1 -.196 -.3c-.312 -.479 -1.407 -2.388 -3.286 -5.728a1.5 1.5 0 0 1 .536 -2.022a1.867 1.867 0 0 1 2.28 .28l1.47 1.47`,key:`svg-3`}]]),P=r(`outline`,`heading`,`Heading`,[[`path`,{d:`M7 12h10`,key:`svg-0`}],[`path`,{d:`M7 5v14`,key:`svg-1`}],[`path`,{d:`M17 5v14`,key:`svg-2`}],[`path`,{d:`M15 19h4`,key:`svg-3`}],[`path`,{d:`M15 5h4`,key:`svg-4`}],[`path`,{d:`M5 19h4`,key:`svg-5`}],[`path`,{d:`M5 5h4`,key:`svg-6`}]]),F=r(`outline`,`highlight`,`Highlight`,[[`path`,{d:`M3 19h4l10.5 -10.5a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4`,key:`svg-0`}],[`path`,{d:`M12.5 5.5l4 4`,key:`svg-1`}],[`path`,{d:`M4.5 13.5l4 4`,key:`svg-2`}],[`path`,{d:`M21 15v4h-8l4 -4l4 0`,key:`svg-3`}]]),I=r(`outline`,`lasso`,`Lasso`,[[`path`,{d:`M4.028 13.252c-.657 -.972 -1.028 -2.078 -1.028 -3.252c0 -3.866 4.03 -7 9 -7s9 3.134 9 7s-4.03 7 -9 7c-1.913 0 -3.686 -.464 -5.144 -1.255`,key:`svg-0`}],[`path`,{d:`M3 15a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-1`}],[`path`,{d:`M5 17c0 1.42 .316 2.805 1 4`,key:`svg-2`}]]),L=r(`outline`,`layout-bottombar`,`LayoutBottombar`,[[`path`,{d:`M4 6a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2l0 -12`,key:`svg-0`}],[`path`,{d:`M4 15l16 0`,key:`svg-1`}]]),R=r(`outline`,`layout-columns`,`LayoutColumns`,[[`path`,{d:`M4 6a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2l0 -12`,key:`svg-0`}],[`path`,{d:`M12 4l0 16`,key:`svg-1`}]]),_e=r(`outline`,`layout-kanban`,`LayoutKanban`,[[`path`,{d:`M4 4l6 0`,key:`svg-0`}],[`path`,{d:`M14 4l6 0`,key:`svg-1`}],[`path`,{d:`M4 10a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2l0 -8`,key:`svg-2`}],[`path`,{d:`M14 10a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v2a2 2 0 0 1 -2 2h-2a2 2 0 0 1 -2 -2l0 -2`,key:`svg-3`}]]),ve=r(`outline`,`layout-navbar`,`LayoutNavbar`,[[`path`,{d:`M4 6a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2l0 -12`,key:`svg-0`}],[`path`,{d:`M4 9l16 0`,key:`svg-1`}]]),ye=r(`outline`,`layout-rows`,`LayoutRows`,[[`path`,{d:`M4 6a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2l0 -12`,key:`svg-0`}],[`path`,{d:`M4 12l16 0`,key:`svg-1`}]]),be=r(`outline`,`layout-sidebar`,`LayoutSidebar`,[[`path`,{d:`M4 6a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2l0 -12`,key:`svg-0`}],[`path`,{d:`M9 4l0 16`,key:`svg-1`}]]),z=r(`outline`,`list`,`List`,[[`path`,{d:`M9 6l11 0`,key:`svg-0`}],[`path`,{d:`M9 12l11 0`,key:`svg-1`}],[`path`,{d:`M9 18l11 0`,key:`svg-2`}],[`path`,{d:`M5 6l0 .01`,key:`svg-3`}],[`path`,{d:`M5 12l0 .01`,key:`svg-4`}],[`path`,{d:`M5 18l0 .01`,key:`svg-5`}]]),B=r(`outline`,`menu-2`,`Menu2`,[[`path`,{d:`M4 6l16 0`,key:`svg-0`}],[`path`,{d:`M4 12l16 0`,key:`svg-1`}],[`path`,{d:`M4 18l16 0`,key:`svg-2`}]]),V=r(`outline`,`message`,`Message`,[[`path`,{d:`M8 9h8`,key:`svg-0`}],[`path`,{d:`M8 13h6`,key:`svg-1`}],[`path`,{d:`M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12`,key:`svg-2`}]]),xe=r(`outline`,`north-star`,`NorthStar`,[[`path`,{d:`M3 12h18`,key:`svg-0`}],[`path`,{d:`M12 21v-18`,key:`svg-1`}],[`path`,{d:`M7.5 7.5l9 9`,key:`svg-2`}],[`path`,{d:`M7.5 16.5l9 -9`,key:`svg-3`}]]),Se=r(`outline`,`note`,`Note`,[[`path`,{d:`M13 20l7 -7`,key:`svg-0`}],[`path`,{d:`M13 20v-6a1 1 0 0 1 1 -1h6v-7a2 2 0 0 0 -2 -2h-12a2 2 0 0 0 -2 2v12a2 2 0 0 0 2 2h7`,key:`svg-1`}]]),Ce=r(`outline`,`numbers`,`Numbers`,[[`path`,{d:`M8 10v-7l-2 2`,key:`svg-0`}],[`path`,{d:`M6 16a2 2 0 1 1 4 0c0 .591 -.601 1.46 -1 2l-3 3h4`,key:`svg-1`}],[`path`,{d:`M15 14a2 2 0 1 0 2 -2a2 2 0 1 0 -2 -2`,key:`svg-2`}],[`path`,{d:`M6.5 10h3`,key:`svg-3`}]]),we=r(`outline`,`pointer`,`Pointer`,[[`path`,{d:`M7.904 17.563a1.2 1.2 0 0 0 2.228 .308l2.09 -3.093l4.907 4.907a1.067 1.067 0 0 0 1.509 0l1.047 -1.047a1.067 1.067 0 0 0 0 -1.509l-4.907 -4.907l3.113 -2.09a1.2 1.2 0 0 0 -.309 -2.228l-13.582 -3.904l3.904 13.563`,key:`svg-0`}]]),Te=r(`outline`,`polygon`,`Polygon`,[[`path`,{d:`M10 5a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-0`}],[`path`,{d:`M17 8a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-1`}],[`path`,{d:`M3 11a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-2`}],[`path`,{d:`M13 19a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-3`}],[`path`,{d:`M6.5 9.5l3.5 -3`,key:`svg-4`}],[`path`,{d:`M14 5.5l3 1.5`,key:`svg-5`}],[`path`,{d:`M18.5 10l-2.5 7`,key:`svg-6`}],[`path`,{d:`M13.5 17.5l-7 -5`,key:`svg-7`}]]),Ee=r(`outline`,`select`,`Select`,[[`path`,{d:`M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14`,key:`svg-0`}],[`path`,{d:`M9 11l3 3l3 -3`,key:`svg-1`}]]),De=r(`outline`,`separator-horizontal`,`SeparatorHorizontal`,[[`path`,{d:`M4 12l16 0`,key:`svg-0`}],[`path`,{d:`M8 8l4 -4l4 4`,key:`svg-1`}],[`path`,{d:`M16 16l-4 4l-4 -4`,key:`svg-2`}]]),H=r(`outline`,`square`,`Square`,[[`path`,{d:`M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14`,key:`svg-0`}]]),Oe=r(`outline`,`star`,`Star`,[[`path`,{d:`M12 17.75l-6.172 3.245l1.179 -6.873l-5 -4.867l6.9 -1l3.086 -6.253l3.086 6.253l6.9 1l-5 4.867l1.179 6.873l-6.158 -3.245`,key:`svg-0`}]]),U=r(`outline`,`table`,`Table`,[[`path`,{d:`M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2v-14`,key:`svg-0`}],[`path`,{d:`M3 10h18`,key:`svg-1`}],[`path`,{d:`M10 3v18`,key:`svg-2`}]]),ke=r(`outline`,`tag`,`Tag`,[[`path`,{d:`M6.5 7.5a1 1 0 1 0 2 0a1 1 0 1 0 -2 0`,key:`svg-0`}],[`path`,{d:`M3 6v5.172a2 2 0 0 0 .586 1.414l7.71 7.71a2.41 2.41 0 0 0 3.408 0l5.592 -5.592a2.41 2.41 0 0 0 0 -3.408l-7.71 -7.71a2 2 0 0 0 -1.414 -.586h-5.172a3 3 0 0 0 -3 3`,key:`svg-1`}]]),Ae=r(`outline`,`toggle-right`,`ToggleRight`,[[`path`,{d:`M14 12a2 2 0 1 0 4 0a2 2 0 1 0 -4 0`,key:`svg-0`}],[`path`,{d:`M2 12a6 6 0 0 1 6 -6h8a6 6 0 0 1 6 6a6 6 0 0 1 -6 6h-8a6 6 0 0 1 -6 -6`,key:`svg-1`}]]),je=r(`outline`,`typography`,`Typography`,[[`path`,{d:`M4 20l3 0`,key:`svg-0`}],[`path`,{d:`M14 20l7 0`,key:`svg-1`}],[`path`,{d:`M6.9 15l6.9 0`,key:`svg-2`}],[`path`,{d:`M10.2 6.3l5.8 13.7`,key:`svg-3`}],[`path`,{d:`M5 20l6 -16l2 0l7 16`,key:`svg-4`}]]),Me=r(`outline`,`user-circle`,`UserCircle`,[[`path`,{d:`M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0`,key:`svg-0`}],[`path`,{d:`M9 10a3 3 0 1 0 6 0a3 3 0 1 0 -6 0`,key:`svg-1`}],[`path`,{d:`M6.168 18.849a4 4 0 0 1 3.832 -2.849h4a4 4 0 0 1 3.834 2.855`,key:`svg-2`}]]),Ne=r(`outline`,`vector-spline`,`VectorSpline`,[[`path`,{d:`M17 4a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1l0 -2`,key:`svg-0`}],[`path`,{d:`M3 18a1 1 0 0 1 1 -1h2a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1l0 -2`,key:`svg-1`}],[`path`,{d:`M17 5c-6.627 0 -12 5.373 -12 12`,key:`svg-2`}]]),Pe=r(`outline`,`window-maximize`,`WindowMaximize`,[[`path`,{d:`M3 17a1 1 0 0 1 1 -1h3a1 1 0 0 1 1 1v3a1 1 0 0 1 -1 1h-3a1 1 0 0 1 -1 -1l0 -3`,key:`svg-0`}],[`path`,{d:`M4 12v-6a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-6`,key:`svg-1`}],[`path`,{d:`M12 8h4v4`,key:`svg-2`}],[`path`,{d:`M16 8l-5 5`,key:`svg-3`}]]),W={select:{label:`Select`,chord:`v`,icon:we,tool:`select`,viewSafe:!0},lasso:{label:`Lasso select`,chord:`q`,icon:I,tool:`lasso`},hand:{label:`Hand`,help:`Hand (pan)`,chord:`h`,icon:N,tool:`hand`,viewSafe:!0},rectangle:{label:`Rectangle`,chord:`r`,icon:H,tool:`rectangle`},ellipse:{label:`Ellipse`,chord:`o`,icon:k},arrow:{label:`Arrow`,chord:`a`,icon:f,tool:`arrow`},line:{label:`Line`,chord:`l`,icon:o,tool:`line`},polyline:{label:`Multi-point line`,chord:`Shift+KeyC`,icon:Ne,tool:`polyline`},polygon:{label:`Polygon`,chord:`y`,icon:Te,tool:`polygon`},draw:{label:`Draw`,chord:`p`,icon:ne,tool:`draw`},highlight:{label:`Highlighter`,chord:`Shift+KeyP`,icon:F,tool:`highlight`},laser:{label:`Laser pointer`,chord:`k`,icon:xe,tool:`laser`,viewSafe:!0},text:{label:`Text`,chord:`t`,icon:je,tool:`text`},sticky:{label:`Sticky note`,chord:`n`,icon:Se,tool:`sticky`},figure:{label:`Frame`,chord:`f`,tool:`figure`},image:{label:`Image`,chord:`i`,icon:s,tool:`image`},icon:{label:`Icons`,chord:`s`,icon:te,tool:`icon`},imageLibrary:{label:`Image library`,chord:`Shift+KeyS`},chart:{label:`Chart`,chord:`g`,tool:`chart`},stepbadge:{label:`Step badge`,chord:`b`,icon:D},eraser:{label:`Eraser`,chord:`e`,icon:a,tool:`eraser`},comment:{label:`Comment`,chord:`c`,icon:V,viewSafe:!0}};function G(e){return le(W[e].chord)}var Fe=Object.fromEntries(Object.values(W).flatMap(e=>e.tool?[[e.chord,e.tool]]:[])),K=[{kind:`simple`,icon:ie},{kind:`phone`,icon:A},{kind:`tablet`,icon:j},{kind:`browser`,icon:me},{kind:`window`,icon:fe},{kind:`lanes`,icon:ye},{kind:`vlanes`,icon:R},{kind:`boundary`,icon:pe}],q=[{value:`table`,label:`Table`,icon:U},{value:`bar`,label:`Bar chart`,icon:v},{value:`line`,label:`Line chart`,icon:x},{value:`area`,label:`Area chart`,icon:_},{value:`scatter`,label:`Scatter chart`,icon:y},{value:`pie`,label:`Pie chart`,icon:S},{value:`donut`,label:`Donut chart`,icon:T},{value:`radar`,label:`Radar chart`,icon:d},{value:`quadrant`,label:`Quadrant chart`,icon:b}],J=[{kind:`button`,label:`Button`,icon:H},{kind:`input`,label:`Input`,icon:M},{kind:`search`,label:`Search field`,icon:c},{kind:`checkbox`,label:`Checkbox`,icon:C},{kind:`radio`,label:`Radio`,icon:E},{kind:`toggle`,label:`Toggle`,icon:Ae},{kind:`dropdown`,label:`Dropdown`,icon:Ee},{kind:`slider`,label:`Slider`,icon:h},{kind:`navbar`,label:`Navbar`,icon:ve},{kind:`tabs`,label:`Tabs`,icon:_e},{kind:`image`,label:`Image placeholder`,icon:s},{kind:`avatar`,label:`Avatar`,icon:Me},{kind:`heading`,label:`Heading`,icon:P},{kind:`paragraph`,label:`Paragraph`,icon:ue},{kind:`divider`,label:`Divider`,icon:De},{kind:`link`,label:`Link`,icon:ee},{kind:`textarea`,label:`Text area`,icon:u},{kind:`stepper`,label:`Number stepper`,icon:Ce},{kind:`badge`,label:`Badge`,icon:ke},{kind:`progress`,label:`Progress bar`,icon:ce},{kind:`breadcrumbs`,label:`Breadcrumbs`,icon:w},{kind:`pagination`,label:`Pagination`,icon:oe},{kind:`rating`,label:`Rating`,icon:Oe},{kind:`card`,label:`Card`,icon:ge},{kind:`list`,label:`List`,icon:z},{kind:`alert`,label:`Alert`,icon:i},{kind:`modal`,label:`Modal dialog`,icon:Pe},{kind:`menu`,label:`Menu`,icon:B},{kind:`tooltip`,label:`Tooltip`,icon:V},{kind:`accordion`,label:`Accordion`,icon:ae},{kind:`datepicker`,label:`Date picker`,icon:he},{kind:`sidebar`,label:`Sidebar`,icon:be},{kind:`scrollbar`,label:`Scrollbar`,icon:se},{kind:`segmented`,label:`Segmented control`,icon:R},{kind:`tabbar`,label:`Bottom tab bar`,icon:L},{kind:`statusbar`,label:`Status bar`,icon:de},{kind:`fab`,label:`Floating button`,icon:O}],Y={rectangle:`Rectangle`,ellipse:`Ellipse`,diamond:`Diamond`,triangle:`Triangle`,oval:`Oval`,parallelogram:`Parallelogram`,trapezoid:`Trapezoid`,cylinder:`Cylinder`,note:`Note`,hexagon:`Hexagon`,star:`Star`,checkbox:`Checkbox`,crossbox:`Crossed box`,heart:`Heart`,cloud:`Cloud`,"arrow-up":`Arrow up`,"arrow-down":`Arrow down`,"arrow-left":`Arrow left`,"arrow-right":`Arrow right`,plus:`Plus`,"speech-bubble":`Speech bubble`,bolt:`Lightning bolt`,queue:`Queue`,callout:`Callout`,document:`Document`,"predefined-process":`Predefined process`,"manual-input":`Manual input`,pentagon:`Pentagon`,chevron:`Chevron`,octagon:`Octagon`,cube:`Cube`,actor:`Actor`,"double-circle":`Double circle`,card:`Card`,delay:`Delay`,"fork-join":`Fork / join`,"multi-document":`Multi-document`,"multi-process":`Multi-process`,package:`Package`,component:`Component`,brace:`Brace`},X=t.filter(e=>e!==`rectangle`&&e!==`ellipse`&&e!==`actor`),Ie=e();function Le(e){return t=>(0,Ie.jsx)(re,{kind:e,size:t.size})}function Z(e,t,n,r){let i=W[e];return{id:e,label:i.label,group:t,shortcut:G(e),keywords:n,icon:i.icon??H,action:r??{kind:`tool`,tool:i.tool??`select`}}}var Re=[Z(`select`,`Basic`),Z(`hand`,`Basic`,`pan`),Z(`lasso`,`Basic`,`freehand select`),Z(`eraser`,`Basic`),Z(`laser`,`Basic`,`present`),Z(`comment`,`Basic`,`review note feedback pin annotate`,{kind:`tool`,tool:`comment`})],Q=[{id:`ask-ai`,label:`Ask AI`,group:`AI`,keywords:`assistant chat sparkles help`,icon:l,action:{kind:`ai`}},{id:`ai-diagram`,label:`Generate diagram with AI`,group:`AI`,keywords:`assistant architecture flowchart create`,icon:l,action:{kind:`ai`,prompt:`Draw a diagram of `,send:!1}},{id:`ai-deck`,label:`Generate slides with AI`,group:`AI`,keywords:`assistant deck presentation create`,icon:l,action:{kind:`ai`,prompt:`Create a short deck about `,send:!1}},{id:`ai-image`,label:`Generate image with AI`,group:`AI`,keywords:`assistant picture photo create`,icon:l,action:{kind:`ai`,prompt:`Generate an image of `,send:!1}}],ze=[Z(`rectangle`,`Shapes`,`box square`,{kind:`shape`,shape:`rectangle`}),Z(`ellipse`,`Shapes`,`circle oval`,{kind:`shape`,shape:`ellipse`}),...X.map(e=>({id:`shape-${e}`,label:Y[e],group:`Shapes`,keywords:`shape`,icon:Le(e),action:{kind:`shape`,shape:e}})),Z(`stepbadge`,`Shapes`,`number step`,{kind:`control`,control:`stepbadge`}),{id:`entity`,label:`Class / entity`,group:`Shapes`,keywords:`erd uml class table attributes fields`,icon:p,action:{kind:`control`,control:`entity`}},{id:`lifeline`,label:`Lifeline`,group:`Shapes`,keywords:`sequence uml participant`,icon:m,action:{kind:`control`,control:`lifeline`}},{id:`fragment`,label:`Fragment`,group:`Shapes`,keywords:`sequence uml combined opt alt loop par frame container`,icon:g,action:{kind:`control`,control:`fragment`}}],Be=[Z(`arrow`,`Connectors`,`connector`),Z(`line`,`Connectors`,`connector`),Z(`polyline`,`Connectors`,`connector elbow path`),Z(`polygon`,`Connectors`,`shape filled closed outline area band`)],Ve=[Z(`text`,`Text & media`),Z(`sticky`,`Text & media`,`note`),Z(`draw`,`Text & media`,`pen pencil freehand`),Z(`highlight`,`Text & media`,`marker highlight pen freehand`),Z(`image`,`Text & media`,`photo picture`),Z(`icon`,`Text & media`,`emoji sticker symbol`)],He=q.map(e=>({id:`data-${e.value}`,label:e.label,group:`Charts & data`,keywords:e.value===`table`?`grid data`:`chart graph data`,icon:e.icon,action:e.value===`table`?{kind:`table`}:{kind:`chart`,chart:e.value}})),Ue=K.map(e=>({id:`frame-${e.kind}`,label:n[e.kind],group:`Frames`,shortcut:e.kind===`simple`?G(`figure`):void 0,keywords:`frame container device mockup`,icon:e.icon,action:{kind:`frame`,frame:e.kind}})),We=J.map(e=>({id:`control-${e.kind}`,label:e.label,group:`UI controls`,keywords:`wireframe mockup ui widget`,icon:e.icon,action:{kind:`control`,control:e.kind}})),$=[...Re,...Q,...ze,...Be,...Ve,...He,...Ue,...We],Ge=new Map($.map(e=>[e.id,e]));function Ke(e,t){let n=$.filter(e=>e.group===`AI`?t.ai:e.id!==`comment`||t.comments),r=new Set(n.map(e=>e.id)),i=e.map(e=>Ge.get(e)).filter(e=>e!==void 0&&r.has(e.id)),a=new Set(i.map(e=>e.id));return{recent:i,rest:n.filter(e=>!a.has(e.id))}}function qe(e,t){if(e.kind===`ai`){t.askAi(e.prompt??``,e.send??!1);return}if(e.kind===`tool`){t.selectTool(e.tool);return}if(e.kind===`shape`){t.selectTool(`rectangle`),t.setShapeKind(e.shape);return}if(e.kind===`chart`){t.selectTool(`chart`),t.setChartKind(e.chart);return}if(e.kind===`table`){t.selectTool(`table`);return}if(e.kind===`frame`){t.selectTool(`figure`),t.setFrameKind(e.frame);return}t.insertControl(e.control)}export{_ as C,v as S,h as T,T as _,X as a,b,Fe as c,U as d,H as f,k as g,z as h,q as i,W as l,B as m,Ke as n,K as o,V as p,J as r,Y as s,qe as t,G as u,S as v,g as w,y as x,x as y};
|
|
@@ -1 +1 @@
|
|
|
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,r as i}from"./config-a_lz-57R.js";import{o as a}from"./editor-B0tARd79.js";import{n as o}from"./tool-catalog-
|
|
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,r as i}from"./config-a_lz-57R.js";import{o as a}from"./editor-B0tARd79.js";import{n as o}from"./tool-catalog-CHq6TJ2q.js";import{a as s,i as c,r as l,t as u}from"./PopoverPopup-BqGWd_uB.js";import{n as d}from"./storage-CvDRYh5V.js";import{s as f}from"./chrome-C2RCq3SI.js";import{CommandList as p}from"./command-palette-BjFnQHnz.js";import{t as m}from"./use-recent-list-BEG0iBIm.js";var h=e(t(),1),g=n(),_=`[data-canvas-toolbar]`,v=8;function y(e){let{onPick:t,onClose:n}=e,{ai:y}=r(),b=i()!==null,x=a(e=>e.deviceMode===`phone`),[S,C]=(0,h.useState)();(0,h.useLayoutEffect)(()=>{if(x){C(void 0);return}let e=()=>{let e=document.querySelector(_);e&&C(e.getBoundingClientRect().height)};return e(),window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[x]);let{recent:w,remember:T}=m(d.recentTools,v,{sanitize:e=>e.filter(e=>typeof e==`string`)}),E=(0,h.useRef)(T);E.current=T;let D=(0,h.useMemo)(()=>{let e=(e,r)=>({id:e.id,label:e.label,group:r,hint:e.shortcut,keywords:e.keywords,icon:e.icon,run:()=>{t(e.action),E.current(e.id),n()}}),r=o(w,{ai:y,comments:b});return[...r.recent.map(t=>e(t,`Recent`)),...r.rest.map(t=>e(t,t.group))]},[w,t,n,y,b]);return(0,g.jsx)(s,{open:!0,modal:!1,onOpenChange:e=>{e||n()},children:(0,g.jsx)(c,{children:(0,g.jsx)(l,{anchor:()=>document.querySelector(_),side:x?`top`:`right`,align:`start`,sideOffset:8,collisionPadding:8,children:(0,g.jsx)(u,{finalFocus:!1,initialFocus:!x&&void 0,children:(0,g.jsx)(`div`,{"data-overlay":!0,"data-testid":`tool-drawer`,className:`flex w-64 flex-col overflow-hidden rounded-xl ${x?`max-h-[55dvh]`:`max-h-[calc(100dvh-72px)]`} ${f}`,style:{maxHeight:S},children:(0,g.jsx)(p,{commands:D,onRun:e=>e.run(),placeholder:`Search all tools`,inputTestId:`tool-drawer-input`,itemTestId:e=>`tool-${e}`,emptyLabel:`No matching tools`,dense:!0,listClassName:`min-h-0 p-1`})})})})})})}export{y as ToolDrawer};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as e}from"./reflow-Cv75wPSh.js";import{an as t}from"./slides-D9bnXqtf.js";import{t as n}from"./createReactComponent-9UsI5fmM.js";import{i as r,t as i}from"./flow-start-BKN48uke.js";import{i as a,n as o}from"./core-CBnmD9hT.js";import{c as s,i as c,n as l,s as u}from"./flows-GGbkNqs8.js";var d=n(`outline`,`arrow-fork`,`ArrowFork`,[[`path`,{d:`M16 3h5v5`,key:`svg-0`}],[`path`,{d:`M8 3h-5v5`,key:`svg-1`}],[`path`,{d:`M21 3l-7.536 7.536a5 5 0 0 0 -1.464 3.534v6.93`,key:`svg-2`}],[`path`,{d:`M3 3l7.536 7.536a5 5 0 0 1 1.464 3.534v.93`,key:`svg-3`}]]),f=24;function p(e,t,n){let r=new Set([...t,...n]),i=e.filter(e=>r.has(e.id)&&e.type!==`arrow`),a=e=>i.find(t=>m(t,e))?.id??null,o=(e,r)=>t.includes(e)&&n.includes(r)||n.includes(e)&&t.includes(r),s=null;for(let t of e){if(t.type!==`arrow`)continue;let e={x:t.x,y:t.y},n={x:t.x2,y:t.y2},r=t.startBinding?.shapeId??a(e),i=t.endBinding?.shapeId??a(n);if(!r||!i||r===i||!o(r,i))continue;if(t.startBinding&&t.endBinding)return null;let c=[];t.startBinding||c.push({end:`start`,shapeId:r,point:e}),t.endBinding||c.push({end:`end`,shapeId:i,point:n}),s??={arrow:t,ends:c}}return s}function m(e,n){let r=t(e);return n.x>=r.x-f&&n.x<=r.x+r.width+f&&n.y>=r.y-f&&n.y<=r.y+r.height+f}function h(e,t,n){let r=b(t,e.length);return e[r-1]?.target===n.target?e:[...e.slice(0,r),n,...e.slice(r)]}function g(e,t,n){let r=Math.min(Math.max(n,0),e.length-1);if(t===r||!e[t])return e;let i=[...e],[a]=i.splice(t,1);return i.splice(r,0,a),i}function _(e,t){return e[t]?e.filter((e,n)=>n!==t):e}function v(e,t,n,r){let i=e[t];if(!i||i.target===n)return e;let a={...i,target:n};r!==void 0&&(a.title=r);let o=(i.also??[]).filter(e=>e!==n);return o.length>0?a.also=o:delete a.also,e.map((e,n)=>n===t?a:e)}function y(e,t,n){let r=e[t];if(!r||r.target===n)return e;let i=r.also??[],a={...r,also:i.includes(n)?i.filter(e=>e!==n):[...i,n]};return a.also?.length===0&&delete a.also,e.map((e,n)=>n===t?a:e)}function b(e,t){return Math.min(Math.max(e,0),t)}function x(e,t,n,a){let o=i(e,t);o&&r(e,o,(o.flows??[]).flatMap(e=>{if(e.id!==n)return[e];let t=a(e);return t?[t]:[]}))}function S(e,t,n,o){let s=i(e,t);if(!s)return;let c=s.flows??[],l=a(c);e.history.withTransaction(()=>{r(e,s,[...c.map(e=>e.id===n?{...e,steps:e.steps.map((e,t)=>t===o?{...e,branches:[...e.branches??[],l.id]}:e)}:e),l])}),e.store.getState().setFlowEdit({frameId:t,flowId:l.id})}function C(e,t,n){let{flowEdit:r,flowPlay:a,flowPreview:o,setFlowEdit:s,setFlowPlay:c,setFlowPreview:l}=e.store.getState();if(x(e,t,n,()=>null),a?.flowId===n&&c(null),o?.flowId===n&&l(null),r?.flowId!==n)return;let u=i(e,t)?.flows?.[0];s(u?{frameId:t,flowId:u.id}:null)}function w(e,t,n){let r=e.store.getState();r.setFlowPlay(null),r.setFlowEdit({frameId:t,flowId:n})}function T(e,t){let n=e.slot;return n==null||n>=t?t:Math.max(n,0)}function E(e,t){return T(e,t)<t}function D(e,t){let n=e.selected;return n==null||n<0||n>=t?null:n}function O(e,t){let n=D(e,t);if(n!==null)return n;let r=T(e,t)-1;return r>=0?r:null}function k(e,t,n){return{selected:t,slot:E(e,n)?t+1:null,picking:null}}function A(e,t){let n=e=>e==null?null:e>t?e-1:e;return{selected:e.selected===t?null:n(e.selected),slot:n(e.slot),hovered:null,picking:null}}function j(e,t,n){let r=e=>e==null?e:e===t?n:t<e&&e<=n?e-1:n<=e&&e<t?e+1:e,i={};return e.selected!==null&&e.selected!==void 0&&(i.selected=r(e.selected)),e.picking!==null&&e.picking!==void 0&&(i.picking=r(e.picking)),i}function M(e,t,n){let r=i(e,t),a=r?.flows?.find(e=>e.id===n);if(!r||!a)return null;let s=e.store.getState().shapes;return u(a,o(s,r)).steps}function N(e,t,n,r){let i=M(e,t,n);if(!i)return!1;let a=r(i);return a===i?!1:(x(e,t,n,e=>({...e,steps:a})),!0)}function P(e,t,n){let r=e.store.getState().flowEdit;return r&&r.frameId===t&&r.flowId===n?r:null}function F(e,t,n,r){P(e,t,n)&&e.store.getState().patchFlowEdit(r)}function I(e,t,n){M(e,t,n)?.length===0&&C(e,t,n),e.store.getState().setFlowEdit(null)}function L(e,t,n,r){let i=M(e,t,n);if(!i)return;let a=P(e,t,n)??{},o=T(a,i.length),s=e.store.getState().shapes,l={target:r.id,title:c(s,r)};N(e,t,n,e=>h(e,o,l))&&F(e,t,n,k(a,o,i.length))}function R(e,t,n,r){let i=M(e,t,n);if(!i)return;let a=O(P(e,t,n)??{},i.length);a!==null&&(N(e,t,n,e=>y(e,a,r.id)),F(e,t,n,{selected:a}))}function z(e,t,n,r,i){let a=M(e,t,n),o=a?.[r];if(!a||!o){F(e,t,n,{picking:null});return}let s=e.store.getState().shapes,l=s.find(e=>e.id===o.target),u=l&&o.title===c(s,l)?c(s,i):void 0;N(e,t,n,e=>v(e,r,i.id,u)),F(e,t,n,{picking:null,selected:r})}function B(e,t,n,r){let i=P(e,t,n);N(e,t,n,e=>_(e,r))&&i&&F(e,t,n,A(i,r))}function V(e,t,n,r,i){let a=P(e,t,n);N(e,t,n,e=>g(e,r,i))&&a&&F(e,t,n,j(a,r,i))}function H(e,t,n,r,i){N(e,t,n,e=>e.map((e,t)=>t===r?U({...e,...i}):e))}function U(e){let t={...e};return t.text||delete t.text,(!t.kind||t.kind===`call`)&&delete t.kind,t.payload||delete t.payload,t.also?.length||delete t.also,t.branches?.length||delete t.branches,t.fails||delete t.fails,t}function W(e,t,n){let r=new Map;return t.forEach((i,a)=>{let o=a===0?n:t[a-1];if(!o)return;let c=p(e,s(o),s(i));c&&r.set(a,c)}),r}function G(e,t){return e.ends.map(e=>t.get(e.shapeId)??`the box`).join(` and `)}function K(t,n){let r=t.store.getState(),i=r.shapes.find(e=>e.id===n.arrow.id);if(i?.type!==`arrow`)return;let a={};for(let t of n.ends){let n=r.shapes.find(e=>e.id===t.shapeId);n&&(t.end===`start`?a.startBinding=e(n,{x:i.x,y:i.y}):a.endBinding=e(n,{x:i.x2,y:i.y2}))}Object.keys(a).length>0&&r.updateShape(i.id,a)}function q(e){let t=new Map,n=new Map,r=[];for(let i of e){let a=l(e,i.id);a?(t.set(a.flow.id,[...t.get(a.flow.id)??[],i]),n.set(i.id,{flowId:a.flow.id,index:a.index})):r.push(i)}let i=[],a=new Set,o=(e,r)=>{if(!a.has(e.id)){a.add(e.id),i.push({flow:e,depth:r,origin:r>0?n.get(e.id)??null:null});for(let n of t.get(e.id)??[])o(n,r+1)}};return r.forEach(e=>o(e,0)),e.forEach(e=>o(e,0)),i}function J(e){return q(e).filter(e=>e.depth===0).map(e=>e.flow)}export{S as _,W as a,x as b,R as c,z as d,I as f,T as g,D as h,G as i,V as l,O as m,J as n,L as o,E as p,K as r,H as s,q as t,B as u,C as v,d as x,w as y};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t}from"./jsx-runtime-2Zwg-L3c.js";import{t as n}from"./createReactComponent-9UsI5fmM.js";var r=n(`outline`,`row-insert-bottom`,`RowInsertBottom`,[[`path`,{d:`M20 6v4a1 1 0 0 1 -1 1h-14a1 1 0 0 1 -1 -1v-4a1 1 0 0 1 1 -1h14a1 1 0 0 1 1 1`,key:`svg-0`}],[`path`,{d:`M12 15l0 4`,key:`svg-1`}],[`path`,{d:`M14 17l-4 0`,key:`svg-2`}]]),i=n(`outline`,`row-insert-top`,`RowInsertTop`,[[`path`,{d:`M4 18v-4a1 1 0 0 1 1 -1h14a1 1 0 0 1 1 1v4a1 1 0 0 1 -1 1h-14a1 1 0 0 1 -1 -1`,key:`svg-0`}],[`path`,{d:`M12 9v-4`,key:`svg-1`}],[`path`,{d:`M10 7l4 0`,key:`svg-2`}]]),a=e(t(),1),o=5,s=48,c=16;function l(e,t,n){let r=e[0]-e[t],i=e[e.length-1]-e[t];return Math.max(r,Math.min(i,n))}function u(e,t,n){let r=e[t]+n;if(r<=e[0])return 0;for(let t=0;t<e.length;t+=1)if(r<e[t])return t;return e.length}function d(e,t){return e.gap===null?0:t<e.index&&e.gap<=t?e.lift:t>e.index&&e.gap>t?-e.lift:0}function f(e){let{count:t,gap:n,disabled:r,onReorder:i,onPress:f,canDrag:p}=e,[m,h]=(0,a.useState)(null),g=(0,a.useRef)(null),_=(0,a.useRef)([]),v=(0,a.useRef)(0);(0,a.useEffect)(()=>{if(!m?.dragging)return;let e=0,t=()=>{e=requestAnimationFrame(t);let n=g.current;if(!n)return;let r=n.getBoundingClientRect(),i=v.current,a=0;if(i<r.top+s?a=-Math.min(c,Math.ceil((r.top+s-i)/4)):i>r.bottom-s&&(a=Math.min(c,Math.ceil((i-(r.bottom-s))/4))),a===0)return;let o=n.scrollTop;n.scrollTop=o+a,n.scrollTop!==o&&h(e=>{if(!e?.dragging)return e;let t=v.current-e.startY+(n.scrollTop-e.startScroll),r=l(e.homes,e.index,t);return{...e,dy:r,gap:u(e.homes,e.index,r)}})};return e=requestAnimationFrame(t),()=>cancelAnimationFrame(e)},[m?.dragging]);let y=(0,a.useCallback)(e=>t=>{_.current[e]=t},[]);function b(e,r){if(e.button!==0||p?.(r)===!1)return;let i=g.current;if(!i)return;e.stopPropagation(),e.currentTarget.setPointerCapture(e.pointerId),v.current=e.clientY;let a=i.getBoundingClientRect().top-i.scrollTop,o=_.current.slice(0,t).map(e=>{if(!e)return 1/0;let t=e.getBoundingClientRect();return t.top-a+t.height/2}),s=_.current[r]?.getBoundingClientRect().height??0;h({index:r,startY:e.clientY,startScroll:i.scrollTop,dy:0,dragging:!1,gap:null,homes:o,lift:s+n})}function x(e){if(!m)return;v.current=e.clientY;let t=g.current?.scrollTop??m.startScroll,n=e.clientY-m.startY+(t-m.startScroll),i=!r&&(m.dragging||Math.abs(n)>o),a=l(m.homes,m.index,n);h({...m,dy:a,dragging:i,gap:i?u(m.homes,m.index,a):null})}function S(e){if(!m)return;let{index:t,dragging:n,gap:r}=m;if(h(null),!n){f?.(t);return}if(r===null)return;let a=r>t?r-1:r;a!==t&&(e.stopPropagation(),i(t,a))}function C(e){return{onPointerDown:t=>b(t,e),onPointerMove:x,onPointerUp:S,onPointerCancel:()=>h(null)}}function w(e){if(m?.dragging&&m.index===e)return{transform:`translateY(${m.dy}px)`,zIndex:10,opacity:.7};if(m?.dragging)return{transform:`translateY(${d(m,e)}px)`,transition:`transform 150ms ease`}}return{listRef:g,setItemRef:y,rowHandlers:C,rowStyle:w,dragging:!!m?.dragging,cancel:()=>h(null)}}export{i as n,r,f as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{i as e}from"./rolldown-runtime-aKtaBQYM.js";import{n as t}from"./jsx-runtime-2Zwg-L3c.js";import{_ as n}from"./selection-overlay-primitives-hWJ1xjF7.js";import{t as r}from"./editable-target-BTLnvKNi.js";var i=e(t(),1),a=`button, a[href], summary, [role="button"], [role="link"], [role="menuitem"], [role="menuitemcheckbox"], [role="menuitemradio"], [role="tab"], [role="option"], [role="checkbox"], [role="switch"], [role="radio"]`;function o(e){return e instanceof Element&&e.closest(a)!==null}function s(e,t={}){let{preventDefault:a=!1}=t,[s,c]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{function t(t){t.code===e&&(r(t.target)||o(t.target)||(a&&t.preventDefault(),c(!0)))}function i(t){t.code!==e&&t.key!==`Meta`||c(!1)}window.addEventListener(`keydown`,t),window.addEventListener(`keyup`,i);let s=n(()=>c(!1));return()=>{window.removeEventListener(`keydown`,t),window.removeEventListener(`keyup`,i),s()}},[e,a]),s}export{s as n,o as t};
|
package/assets/editor/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
6
|
<meta name="color-scheme" content="light" />
|
|
7
7
|
<title>Koboyo</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-mhi0Z6gG.js"></script>
|
|
9
9
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-aKtaBQYM.js">
|
|
10
10
|
<link rel="modulepreload" crossorigin href="/assets/jsx-runtime-2Zwg-L3c.js">
|
|
11
11
|
<link rel="modulepreload" crossorigin href="/assets/useScrollLock-B7mQdXyv.js">
|
|
@@ -54,16 +54,18 @@
|
|
|
54
54
|
<link rel="modulepreload" crossorigin href="/assets/shape-meta-BpwsiB82.js">
|
|
55
55
|
<link rel="modulepreload" crossorigin href="/assets/diagram-fingerprint-CsqZK4xZ.js">
|
|
56
56
|
<link rel="modulepreload" crossorigin href="/assets/editable-target-BTLnvKNi.js">
|
|
57
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
57
|
+
<link rel="modulepreload" crossorigin href="/assets/use-key-held-38H1v73f.js">
|
|
58
58
|
<link rel="modulepreload" crossorigin href="/assets/IconAlertTriangle-CxPhYpe-.js">
|
|
59
59
|
<link rel="modulepreload" crossorigin href="/assets/IconEraser-DlZQe3-r.js">
|
|
60
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
60
|
+
<link rel="modulepreload" crossorigin href="/assets/IconLink-ze4g4Lrj.js">
|
|
61
61
|
<link rel="modulepreload" crossorigin href="/assets/IconMoodSmile-Bic_fw54.js">
|
|
62
62
|
<link rel="modulepreload" crossorigin href="/assets/IconPencil-C5Y-Y4dC.js">
|
|
63
63
|
<link rel="modulepreload" crossorigin href="/assets/IconPhoto-CR36IK-b.js">
|
|
64
64
|
<link rel="modulepreload" crossorigin href="/assets/IconSearch-C1K0_Pq_.js">
|
|
65
65
|
<link rel="modulepreload" crossorigin href="/assets/IconSparkles-WDcg8BA9.js">
|
|
66
|
-
<link rel="modulepreload" crossorigin href="/assets/tool-catalog-
|
|
66
|
+
<link rel="modulepreload" crossorigin href="/assets/tool-catalog-CHq6TJ2q.js">
|
|
67
|
+
<link rel="modulepreload" crossorigin href="/assets/core-CBnmD9hT.js">
|
|
68
|
+
<link rel="modulepreload" crossorigin href="/assets/flow-start-BKN48uke.js">
|
|
67
69
|
<link rel="modulepreload" crossorigin href="/assets/IconTrash-DbN_RxB7.js">
|
|
68
70
|
<link rel="modulepreload" crossorigin href="/assets/IconArrowLeft-DFk3Krim.js">
|
|
69
71
|
<link rel="modulepreload" crossorigin href="/assets/IconPresentation-DCrY3PKL.js">
|
|
@@ -76,9 +78,7 @@
|
|
|
76
78
|
<link rel="modulepreload" crossorigin href="/assets/MenuSubmenuTrigger-CpN67g09.js">
|
|
77
79
|
<link rel="modulepreload" crossorigin href="/assets/IconX-AlbPkO_g.js">
|
|
78
80
|
<link rel="modulepreload" crossorigin href="/assets/IconPlayerPlayFilled-D4OODBX7.js">
|
|
79
|
-
<link rel="modulepreload" crossorigin href="/assets/core-CBnmD9hT.js">
|
|
80
81
|
<link rel="modulepreload" crossorigin href="/assets/use-export-command-CPc7qug1.js">
|
|
81
|
-
<link rel="modulepreload" crossorigin href="/assets/flow-start-ccYJ2KB9.js">
|
|
82
82
|
<link rel="modulepreload" crossorigin href="/assets/asset-glyph-B3c--Mx2.js">
|
|
83
83
|
<link rel="modulepreload" crossorigin href="/assets/plan-jQm1jDpt.js">
|
|
84
84
|
<link rel="modulepreload" crossorigin href="/assets/DialogRoot-mHGRFW9m.js">
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
<link rel="modulepreload" crossorigin href="/assets/use-icon-node-DJZFjABX.js">
|
|
89
89
|
<link rel="modulepreload" crossorigin href="/assets/chrome-layout-B8YmHznO.js">
|
|
90
90
|
<link rel="modulepreload" crossorigin href="/assets/panel-shell-CG2aq4Ia.js">
|
|
91
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
91
|
+
<link rel="stylesheet" crossorigin href="/assets/index-e23lIFZB.css">
|
|
92
92
|
</head>
|
|
93
93
|
<body>
|
|
94
94
|
<div id="root"></div>
|