@getv.design/embed 0.1.0 → 0.1.2

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/dist/edit.js CHANGED
@@ -1,41 +1,41 @@
1
- /*! @getv.design/embed v0.1.0. Free to use under the vDesign Embed Licence. © 2026 Sagar Saini. https://getv.design/docs/licence/ */
2
- function kt(e){return{expr:e}}function ce(e){return typeof e=="object"&&e!==null&&typeof e.expr=="string"}var Bt=["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],St=["left","center","right","justify"],_t=["top","middle","bottom"],Ct=["cover","contain","fill"],Ht=["nonzero","evenodd"],Vt=["butt","round","square"],Ut=["miter","round","bevel"],uf=["canvas","frame","group"];function ro(e){return uf.includes(e)}function ue(e){return ro(e.type)}function ke(e){return e.type==="group"}function le(e){return ue(e)?e.children:[]}var cf={canvas:["w","h"],ellipse:["x","y","w","h","rotation","strokeWidth","opacity"],frame:["x","y","w","h"],group:[],image:["x","y","w","h","rotation","radius","opacity"],rect:["x","y","w","h","rotation","strokeWidth","radius","opacity"],text:["x","y","w","h","rotation","size","weight","lineHeight","letterSpacing","opacity"],vector:["x","y","w","h","rotation","strokeWidth","opacity"]};function tt(e){return cf[e.type]}function se(e,t,r){if(t(e,r)!==!1&&ue(e))for(let n of e.children)se(n,t,e)}function z(e,t){let r;return se(e,n=>{if(r)return!1;n.id===t&&(r=n)}),r}function rt(e,t){let r;return se(e,(n,o)=>{n.id===t&&o&&(r=o)}),r}function no(e){return pf(e,"hidden")}function oo(e){return pf(e,"locked")}function pf(e,t){let r=new Set,n=(o,a)=>{let i=a||o[t]===!0;i&&r.add(o.id);for(let d of le(o))n(d,i)};return n(e,!1),r}function Zr(e,t,r){let n,o=(a,i)=>{let d=i??(a[r]===!0?a.id:void 0);return a.id===t?(n=d,!0):le(a).some(l=>o(l,d))};return o(e,void 0),n}var zt=["design"],Et="design";var Qr=[1,2,3,4],nt="doc";function ur(e){return{type:"canvas",...e}}function Ka(e){return{type:"ellipse",...e}}function Ga(e){return{type:"frame",...e}}function Wa(e){return{type:"group",...e}}function Xa(e){return{type:"image",...e}}function Ya(e){return{type:"rect",...e}}function Ja(e){return{type:"text",...e}}function ao(e){return{type:"vector",...e}}function en(e={}){return{version:4,kind:e.kind??Et,...e.title===void 0?{}:{title:e.title},tokens:e.tokens??{},fonts:e.fonts??{},assets:e.assets??{},...e.motion===void 0||Object.keys(e.motion).length===0?{}:{motion:e.motion},root:e.root??ur({id:nt,children:[]})}}function so(e){let t=new Set;return se(e,r=>{t.add(r.id)}),t}function qt(e,t){let r=so(e),n=0;for(let o of r){if(!o.startsWith(`${t}.`))continue;let a=Number(o.slice(t.length+1));Number.isInteger(a)&&a>n&&(n=a)}return`${t}.${n+1}`}function Je(e){let t=e.trim();if(t.startsWith("#")){let n=t.slice(1);return n===""?void 0:{kind:"frame",id:n}}let r;try{r=new URL(t)}catch{return}if(!(r.protocol!=="https:"&&r.protocol!=="mailto:"))return{kind:"url",url:t}}var pr=["cut","fade","push","slide"],tn=["cut","fade","rise","drop","pop"];var jt=1e4;function lt(e){let t=e.trim();return t==="back"?{kind:"back"}:t==="next"?{kind:"next"}:Je(t)}function dt(e){return e===void 0||e.enter===void 0&&e.duration===void 0&&e.lines.length===0}function mr(e){return e.enter!==void 0||e.exit!==void 0||e.go!==void 0}var ym=["id","enter","exit","duration","delay","step","together","go"];function io(e,t){return e===t?!0:e===void 0||t===void 0||e.enter!==t.enter||e.duration!==t.duration||e.lines.length!==t.lines.length?!1:e.lines.every((r,n)=>{let o=t.lines[n];return ym.every(a=>r[a]===o[a])})}function hr(e){let t=e.motion;if(!t)return[];let r=e.root.children.map(o=>o.id).filter(o=>o in t),n=Object.keys(t).filter(o=>!r.includes(o)).sort();return[...r,...n]}function lo(e){return new Set(e.root.children.filter(t=>t.type==="frame").map(t=>t.id))}function cr(e){let t=new Map;for(let r of e.root.children)r.type==="frame"&&se(r,n=>{t.set(n.id,r.id)});return t}function Za(e){let t=new Set;return se(e,r=>{t.add(r.id)}),t}function xr(e,t){let r=e.motion;if(!r)return[];let n=[],o=lo(e),a=cr(e),i=Za(e.root),d=(l,c)=>{let m=t?.(l,c);return m===void 0?"":`Line ${m}: `};for(let l of hr(e)){let c=r[l];if(c){if(!o.has(l)){n.push({severity:"warning",code:"motion-not-a-page",message:`${d(l)}motion ${l}: ${l} is not a page (a top-level frame), so none of it plays`,nodeId:l});continue}for(let m of c.lines){let x=d(l,m.id);i.has(m.id)?a.get(m.id)!==l&&n.push({severity:"warning",code:"motion-wrong-page",message:`${x}motion ${l}: ${m.id} is not on ${l}, so Play skips it`,nodeId:m.id}):n.push({severity:"warning",code:"unknown-reference",message:`${x}motion ${l}: no node ${m.id}`,nodeId:m.id});let y=m.go===void 0?void 0:lt(m.go);y?.kind==="frame"&&!vm(e,y.id)&&n.push({severity:"warning",code:"unknown-reference",message:`${x}motion ${l}: go=#${y.id} names no frame`,nodeId:m.id})}}}return n}function vm(e,t){let r=!1;return se(e.root,n=>{if(r)return!1;n.id===t&&(r=n.type==="frame")}),r}function mf(e,t){let r=t.motion;if(!r||!e.motion)return r;let n=cr(e),o=cr(t),a=Za(e.root),i=Za(t.root),d=x=>a.has(x)&&!i.has(x),l=!1,c={},m=[];for(let[x,y]of Object.entries(r)){if(d(x)){l=!0;continue}let w=[];for(let _ of y.lines){let C=_,F=_.go===void 0?void 0:lt(_.go);if(F?.kind==="frame"&&d(F.id)){let N=bm(_);C=mr(N)?N:void 0,l=!0}if(C&&d(_.id))C=void 0,l=!0;else if(C&&n.get(_.id)===x&&o.get(_.id)!==x){let N=o.get(_.id);N!==void 0&&m.push([N,C]),C=void 0,l=!0}C&&w.push(C)}let P={...y,lines:w};dt(P)||(c[x]=P)}for(let[x,y]of m){let w=c[x]??{lines:[]};c[x]={...w,lines:[...w.lines,y]}}return l?Object.keys(c).length===0?void 0:c:r}function bm(e){let t={...e};return delete t.go,t}function Qa(e,t){let r={...e};return t===void 0||Object.keys(t).length===0?delete r.motion:r.motion=t,r}function es(e,t){let r=mf(e,t);if(r===t.motion)return[];let n=new Set([...Object.keys(t.motion??{}),...Object.keys(r??{})]),o=[];for(let a of n){let i=r?.[a];io(t.motion?.[a],i)||o.push({op:"setMotion",page:a,value:i})}return o}var wm={canvas:["type","id","name","w","h","background","children"],frame:["type","id","name","x","y","w","h","background","clip","skip","blend","shadow","hidden","locked","children"],ellipse:["type","id","name","x","y","w","h","rotation","fill","stroke","strokeWidth","opacity","blend","shadow","hidden","locked"],group:["type","id","name","hidden","locked","children"],image:["type","id","name","x","y","w","h","rotation","src","fit","radius","opacity","blend","shadow","hidden","locked"],rect:["type","id","name","x","y","w","h","rotation","fill","stroke","strokeWidth","radius","opacity","blend","shadow","hidden","locked"],text:["type","id","name","x","y","w","h","rotation","content","font","size","weight","lineHeight","letterSpacing","align","valign","italic","fill","opacity","blend","shadow","hidden","locked"],vector:["type","id","name","x","y","w","h","rotation","view","d","fill","stroke","strokeWidth","opacity","rule","cap","join","blend","shadow","hidden","locked"]},km=["text","font","size","weight","italic","underline","strike","fill","letterSpacing","link"],Sm=["family","fallback","faces"],_m=["src","weight","style"],Se=" ";function ts(e){let t=["{",`${Se}"version": ${Z(e.version)},`,`${Se}"kind": ${JSON.stringify(e.kind)},`,...e.title===void 0?[]:[`${Se}"title": ${JSON.stringify(e.title)},`],`${Se}"tokens": ${Em(e.tokens,Se)},`];return Object.keys(e.fonts).length>0&&t.push(`${Se}"fonts": ${Am(e.fonts,Se)},`),e.motion!==void 0&&t.push(`${Se}"motion": ${Cm(e,Se)},`),t.push(`${Se}"root": ${hf(e.root,Se)}`,"}"),`${t.join(`
1
+ /*! @getv.design/embed v0.1.2. Free to use under the vDesign Embed Licence. © 2026 Sagar Saini. https://getv.design/docs/licence/ */
2
+ function St(e){return{expr:e}}function pe(e){return typeof e=="object"&&e!==null&&typeof e.expr=="string"}var Ut=["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],_t=["left","center","right","justify"],Ct=["top","middle","bottom"],Et=["cover","contain","fill"],Vt=["nonzero","evenodd"],zt=["butt","round","square"],qt=["miter","round","bevel"],pf=["canvas","frame","group"];function so(e){return pf.includes(e)}function ce(e){return so(e.type)}function Se(e){return e.type==="group"}function de(e){return ce(e)?e.children:[]}var hf={canvas:["w","h"],ellipse:["x","y","w","h","rotation","strokeWidth","opacity"],frame:["x","y","w","h"],group:[],image:["x","y","w","h","rotation","radius","opacity"],rect:["x","y","w","h","rotation","strokeWidth","radius","opacity"],text:["x","y","w","h","rotation","size","weight","lineHeight","letterSpacing","opacity"],vector:["x","y","w","h","rotation","strokeWidth","opacity"]};function rt(e){return hf[e.type]}function oe(e,t,r){if(t(e,r)!==!1&&ce(e))for(let n of e.children)oe(n,t,e)}function V(e,t){let r;return oe(e,n=>{if(r)return!1;n.id===t&&(r=n)}),r}function nt(e,t){let r;return oe(e,(n,o)=>{n.id===t&&o&&(r=o)}),r}function io(e){return mf(e,"hidden")}function lo(e){return mf(e,"locked")}function mf(e,t){let r=new Set,n=(o,a)=>{let i=a||o[t]===!0;i&&r.add(o.id);for(let l of de(o))n(l,i)};return n(e,!1),r}function en(e,t,r){let n,o=(a,i)=>{let l=i??(a[r]===!0?a.id:void 0);return a.id===t?(n=l,!0):de(a).some(d=>o(d,l))};return o(e,void 0),n}var jt=["design"],At="design";var tn=[1,2,3,4],ot="doc";function pr(e){return{type:"canvas",...e}}function Wa(e){return{type:"ellipse",...e}}function Xa(e){return{type:"frame",...e}}function Ya(e){return{type:"group",...e}}function Ja(e){return{type:"image",...e}}function Za(e){return{type:"rect",...e}}function Qa(e){return{type:"text",...e}}function fo(e){return{type:"vector",...e}}function rn(e={}){return{version:4,kind:e.kind??At,...e.title===void 0?{}:{title:e.title},tokens:e.tokens??{},fonts:e.fonts??{},assets:e.assets??{},...e.motion===void 0||Object.keys(e.motion).length===0?{}:{motion:e.motion},root:e.root??pr({id:ot,children:[]})}}function uo(e){let t=new Set;return oe(e,r=>{t.add(r.id)}),t}function Kt(e,t){let r=uo(e),n=0;for(let o of r){if(!o.startsWith(`${t}.`))continue;let a=Number(o.slice(t.length+1));Number.isInteger(a)&&a>n&&(n=a)}return`${t}.${n+1}`}function Je(e){let t=e.trim();if(t.startsWith("#")){let n=t.slice(1);return n===""?void 0:{kind:"frame",id:n}}let r;try{r=new URL(t)}catch{return}if(!(r.protocol!=="https:"&&r.protocol!=="mailto:"))return{kind:"url",url:t}}var mr=["cut","fade","push","slide"],nn=["cut","fade","rise","drop","pop"];var Gt=1e4;function dt(e){let t=e.trim();return t==="back"?{kind:"back"}:t==="next"?{kind:"next"}:Je(t)}function ft(e){return e===void 0||e.enter===void 0&&e.duration===void 0&&e.lines.length===0}function xr(e){return e.enter!==void 0||e.exit!==void 0||e.go!==void 0}var wh=["id","enter","exit","duration","delay","step","together","go"];function co(e,t){return e===t?!0:e===void 0||t===void 0||e.enter!==t.enter||e.duration!==t.duration||e.lines.length!==t.lines.length?!1:e.lines.every((r,n)=>{let o=t.lines[n];return wh.every(a=>r[a]===o[a])})}function gr(e){let t=e.motion;if(!t)return[];let r=e.root.children.map(o=>o.id).filter(o=>o in t),n=Object.keys(t).filter(o=>!r.includes(o)).sort();return[...r,...n]}function po(e){return new Set(e.root.children.filter(t=>t.type==="frame").map(t=>t.id))}function hr(e){let t=new Map;for(let r of e.root.children)r.type==="frame"&&oe(r,n=>{t.set(n.id,r.id)});return t}function es(e){let t=new Set;return oe(e,r=>{t.add(r.id)}),t}function yr(e,t){let r=e.motion;if(!r)return[];let n=[],o=po(e),a=hr(e),i=es(e.root),l=(d,c)=>{let h=t?.(d,c);return h===void 0?"":`Line ${h}: `};for(let d of gr(e)){let c=r[d];if(c){if(!o.has(d)){n.push({severity:"warning",code:"motion-not-a-page",message:`${l(d)}motion ${d}: ${d} is not a page (a top-level frame), so none of it plays`,nodeId:d});continue}for(let h of c.lines){let x=l(d,h.id);i.has(h.id)?a.get(h.id)!==d&&n.push({severity:"warning",code:"motion-wrong-page",message:`${x}motion ${d}: ${h.id} is not on ${d}, so Play skips it`,nodeId:h.id}):n.push({severity:"warning",code:"unknown-reference",message:`${x}motion ${d}: no node ${h.id}`,nodeId:h.id});let y=h.go===void 0?void 0:dt(h.go);y?.kind==="frame"&&!kh(e,y.id)&&n.push({severity:"warning",code:"unknown-reference",message:`${x}motion ${d}: go=#${y.id} names no frame`,nodeId:h.id})}}}return n}function kh(e,t){let r=!1;return oe(e.root,n=>{if(r)return!1;n.id===t&&(r=n.type==="frame")}),r}function xf(e,t){let r=t.motion;if(!r||!e.motion)return r;let n=hr(e),o=hr(t),a=es(e.root),i=es(t.root),l=x=>a.has(x)&&!i.has(x),d=!1,c={},h=[];for(let[x,y]of Object.entries(r)){if(l(x)){d=!0;continue}let b=[];for(let k of y.lines){let _=k,B=k.go===void 0?void 0:dt(k.go);if(B?.kind==="frame"&&l(B.id)){let R=Sh(k);_=xr(R)?R:void 0,d=!0}if(_&&l(k.id))_=void 0,d=!0;else if(_&&n.get(k.id)===x&&o.get(k.id)!==x){let R=o.get(k.id);R!==void 0&&h.push([R,_]),_=void 0,d=!0}_&&b.push(_)}let P={...y,lines:b};ft(P)||(c[x]=P)}for(let[x,y]of h){let b=c[x]??{lines:[]};c[x]={...b,lines:[...b.lines,y]}}return d?Object.keys(c).length===0?void 0:c:r}function Sh(e){let t={...e};return delete t.go,t}function ts(e,t){let r={...e};return t===void 0||Object.keys(t).length===0?delete r.motion:r.motion=t,r}function rs(e,t){let r=xf(e,t);if(r===t.motion)return[];let n=new Set([...Object.keys(t.motion??{}),...Object.keys(r??{})]),o=[];for(let a of n){let i=r?.[a];co(t.motion?.[a],i)||o.push({op:"setMotion",page:a,value:i})}return o}var _h={canvas:["type","id","name","w","h","background","children"],frame:["type","id","name","x","y","w","h","background","clip","skip","blend","shadow","hidden","locked","children"],ellipse:["type","id","name","x","y","w","h","rotation","fill","stroke","strokeWidth","opacity","blend","shadow","hidden","locked"],group:["type","id","name","hidden","locked","children"],image:["type","id","name","x","y","w","h","rotation","src","fit","radius","opacity","blend","shadow","hidden","locked"],rect:["type","id","name","x","y","w","h","rotation","fill","stroke","strokeWidth","radius","opacity","blend","shadow","hidden","locked"],text:["type","id","name","x","y","w","h","rotation","content","font","size","weight","lineHeight","letterSpacing","align","valign","italic","fill","opacity","blend","shadow","hidden","locked"],vector:["type","id","name","x","y","w","h","rotation","view","d","fill","stroke","strokeWidth","opacity","rule","cap","join","blend","shadow","hidden","locked"]},Ch=["text","font","size","weight","italic","underline","strike","fill","letterSpacing","link"],Eh=["family","fallback","faces"],Ah=["src","weight","style"],_e=" ";function ns(e){let t=["{",`${_e}"version": ${ee(e.version)},`,`${_e}"kind": ${JSON.stringify(e.kind)},`,...e.title===void 0?[]:[`${_e}"title": ${JSON.stringify(e.title)},`],`${_e}"tokens": ${$h(e.tokens,_e)},`];return Object.keys(e.fonts).length>0&&t.push(`${_e}"fonts": ${Th(e.fonts,_e)},`),e.motion!==void 0&&t.push(`${_e}"motion": ${Mh(e,_e)},`),t.push(`${_e}"root": ${gf(e.root,_e)}`,"}"),`${t.join(`
3
3
  `)}
4
- `}function Cm(e,t){let r=t+Se,n=hr(e).map(o=>`${r}${JSON.stringify(o)}: ${JSON.stringify(e.motion?.[o])}`).join(`,
4
+ `}function Mh(e,t){let r=t+_e,n=gr(e).map(o=>`${r}${JSON.stringify(o)}: ${JSON.stringify(e.motion?.[o])}`).join(`,
5
5
  `);return n===""?"{}":`{
6
6
  ${n}
7
- ${t}}`}function Em(e,t){let r=Object.keys(e).sort();if(r.length===0)return"{}";let n=t+Se;return`{
8
- ${r.map(a=>`${n}${JSON.stringify(a)}: ${fo(e[a])}`).join(`,
7
+ ${t}}`}function $h(e,t){let r=Object.keys(e).sort();if(r.length===0)return"{}";let n=t+_e;return`{
8
+ ${r.map(a=>`${n}${JSON.stringify(a)}: ${ho(e[a])}`).join(`,
9
9
  `)}
10
- ${t}}`}function Am(e,t){let r=Object.keys(e).sort();if(r.length===0)return"{}";let n=t+Se;return`{
11
- ${r.map(a=>`${n}${JSON.stringify(a)}: ${Mm(e[a],n)}`).join(`,
10
+ ${t}}`}function Th(e,t){let r=Object.keys(e).sort();if(r.length===0)return"{}";let n=t+_e;return`{
11
+ ${r.map(a=>`${n}${JSON.stringify(a)}: ${Lh(e[a],n)}`).join(`,
12
12
  `)}
13
- ${t}}`}function Mm(e,t){if(!e)return"{}";let r=t+Se,n=e,o=[];for(let a of Sm){let i=n[a];if(i!==void 0){if(a==="faces"){o.push(`${r}"faces": ${$m(i,r)}`);continue}o.push(`${r}${JSON.stringify(a)}: ${fo(i)}`)}}return`{
13
+ ${t}}`}function Lh(e,t){if(!e)return"{}";let r=t+_e,n=e,o=[];for(let a of Eh){let i=n[a];if(i!==void 0){if(a==="faces"){o.push(`${r}"faces": ${Oh(i,r)}`);continue}o.push(`${r}${JSON.stringify(a)}: ${ho(i)}`)}}return`{
14
14
  ${o.join(`,
15
15
  `)}
16
- ${t}}`}function $m(e,t){if(e.length===0)return"[]";let r=t+Se;return`[
17
- ${e.map(o=>r+xf(o,_m)).join(`,
16
+ ${t}}`}function Oh(e,t){if(e.length===0)return"[]";let r=t+_e;return`[
17
+ ${e.map(o=>r+yf(o,Ah)).join(`,
18
18
  `)}
19
- ${t}]`}function hf(e,t){let r=t+Se,n=e,o=[];for(let a of wm[e.type]){let i=n[a];if(i!==void 0){if(a==="children"){o.push(`${r}"children": ${Tm(i,r)}`);continue}if(a==="content"){o.push(`${r}"content": ${Lm(i,r)}`);continue}o.push(`${r}${JSON.stringify(a)}: ${fo(i)}`)}}return`{
19
+ ${t}]`}function gf(e,t){let r=t+_e,n=e,o=[];for(let a of _h[e.type]){let i=n[a];if(i!==void 0){if(a==="children"){o.push(`${r}"children": ${Ph(i,r)}`);continue}if(a==="content"){o.push(`${r}"content": ${Dh(i,r)}`);continue}o.push(`${r}${JSON.stringify(a)}: ${ho(i)}`)}}return`{
20
20
  ${o.join(`,
21
21
  `)}
22
- ${t}}`}function Lm(e,t){if(typeof e=="string")return JSON.stringify(e);if(e.length===0)return"[]";let r=t+Se;return`[
23
- ${e.map(o=>typeof o=="string"?r+JSON.stringify(o):r+xf(o,km)).join(`,
22
+ ${t}}`}function Dh(e,t){if(typeof e=="string")return JSON.stringify(e);if(e.length===0)return"[]";let r=t+_e;return`[
23
+ ${e.map(o=>typeof o=="string"?r+JSON.stringify(o):r+yf(o,Ch)).join(`,
24
24
  `)}
25
- ${t}]`}function xf(e,t){let r=[];for(let n of t){let o=e[n];o!==void 0&&r.push(`${JSON.stringify(n)}: ${fo(o)}`)}return`{ ${r.join(", ")} }`}function Tm(e,t){if(e.length===0)return"[]";let r=t+Se;return`[
26
- ${e.map(o=>r+hf(o,r)).join(`,
25
+ ${t}]`}function yf(e,t){let r=[];for(let n of t){let o=e[n];o!==void 0&&r.push(`${JSON.stringify(n)}: ${ho(o)}`)}return`{ ${r.join(", ")} }`}function Ph(e,t){if(e.length===0)return"[]";let r=t+_e;return`[
26
+ ${e.map(o=>r+gf(o,r)).join(`,
27
27
  `)}
28
- ${t}]`}function fo(e){return ce(e)?JSON.stringify(`=${e.expr}`):typeof e=="number"?Z(e):JSON.stringify(e)}function Z(e){if(!Number.isFinite(e))return"0";let t=Math.round(e*1e4)/1e4,r=Object.is(t,-0)?0:t;return Math.abs(r)>=1e21?r.toFixed(0):String(r)}var Om={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0};function on(e){let t=[],r,n=0,o=0,a=0,i=0,d,l,c=Dm(e),m=()=>(r||(r={anchors:[{x:n,y:o}],closed:!1},t.push(r)),r.anchors[r.anchors.length-1]),x=(_,C)=>{m(),r?.anchors.push({x:_,y:C}),n=_,o=C},y=(_,C,F,N)=>{m().out=_,r?.anchors.push({x:F,y:N,in:C}),n=F,o=N},w="",P=!0;for(;c.more();){let _=c.command();if(_!==void 0)w=_,P=!0;else if(w===""||w.toUpperCase()==="Z")return{contours:uo(t),error:`Expected a command at ${c.at()}`};let C=w.toUpperCase(),F=w!==C,N=Om[C];if(N===void 0)return{contours:uo(t),error:`Unknown command ${w}`};if(C==="Z"){r&&(r.closed=!0),r=void 0,n=a,o=i,d=void 0,l=void 0,w="";continue}let J=C==="A"?c.arc():c.numbers(N);if(J===void 0)return{contours:uo(t),error:`${w} expects ${N} numbers at ${c.at()}`};let A=F?n:0,D=F?o:0,k=V=>J[V];switch(C){case"M":P&&(r={anchors:[{x:A+k(0),y:D+k(1)}],closed:!1},t.push(r),n=a=A+k(0),o=i=D+k(1),w=F?"l":"L"),d=l=void 0;break;case"L":x(A+k(0),D+k(1)),d=l=void 0;break;case"H":x(A+k(0),o),d=l=void 0;break;case"V":x(n,D+k(0)),d=l=void 0;break;case"C":{let V={x:A+k(2),y:D+k(3)};y({x:A+k(0),y:D+k(1)},V,A+k(4),D+k(5)),d=V,l=void 0;break}case"S":{let V=d?{x:2*n-d.x,y:2*o-d.y}:{x:n,y:o},W={x:A+k(0),y:D+k(1)};y(V,W,A+k(2),D+k(3)),d=W,l=void 0;break}case"Q":case"T":{let V=C==="Q"?{x:A+k(0),y:D+k(1)}:l?{x:2*n-l.x,y:2*o-l.y}:{x:n,y:o},W=C==="Q"?A+k(2):A+k(0),pe=C==="Q"?D+k(3):D+k(1),re={x:n+2/3*(V.x-n),y:o+2/3*(V.y-o)},we={x:W+2/3*(V.x-W),y:pe+2/3*(V.y-pe)};y(re,we,W,pe),l=V,d=void 0;break}case"A":{let V=A+k(5),W=D+k(6);for(let[pe,re,we]of Pm(n,o,k(0),k(1),k(2),k(3)!==0,k(4)!==0,V,W))y(pe,re,we.x,we.y);(n!==V||o!==W)&&x(V,W),d=l=void 0;break}}P=!1}return{contours:uo(t)}}function uo(e){return e.map(t=>{let r=[...t.anchors];if(t.closed&&r.length>1){let n=r[0],o=r[r.length-1];Kt(n,o)&&(r.pop(),r[0]={...n,...o.in?{in:o.in}:{}})}return{anchors:r.map(rn),closed:t.closed}})}function ot(e,t,r){return rn({x:e.x,y:e.y,...t?{in:t}:{},...r?{out:r}:{}})}function rn(e){let t={x:e.x,y:e.y};return e.in&&!Kt(e.in,e)&&(t.in=e.in),e.out&&!Kt(e.out,e)&&(t.out=e.out),t}function Kt(e,t,r=1e-6){return Math.abs(e.x-t.x)<r&&Math.abs(e.y-t.y)<r}function Dm(e){let t=0,r=()=>{for(;t<e.length&&/[\s,]/.test(e[t]);)t+=1},n=()=>{r();let a=/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/.exec(e.slice(t));if(a)return t+=a[0].length,Number(a[0])},o=()=>{r();let a=e[t];if(!(a!=="0"&&a!=="1"))return t+=1,Number(a)};return{more(){return r(),t<e.length},command(){r();let a=e[t];if(/[a-zA-Z]/.test(a))return t+=1,a},numbers(a){let i=[];for(let d=0;d<a;d+=1){let l=n();if(l===void 0)return;i.push(l)}return i},arc(){let a=this.numbers(3),i=o(),d=o(),l=this.numbers(2);if(!(!a||i===void 0||d===void 0||!l))return[...a,i,d,...l]},at(){return t}}}function Pm(e,t,r,n,o,a,i,d,l){let c=Math.abs(r),m=Math.abs(n);if(c===0||m===0||e===d&&t===l)return[];let x=o*Math.PI/180,y=Math.cos(x),w=Math.sin(x),P=(e-d)/2,_=(t-l)/2,C=y*P+w*_,F=-w*P+y*_,N=C*C/(c*c)+F*F/(m*m);N>1&&(c*=Math.sqrt(N),m*=Math.sqrt(N));let J=c*c*m*m-c*c*F*F-m*m*C*C,A=c*c*F*F+m*m*C*C,D=(a===i?-1:1)*Math.sqrt(Math.max(0,J/A)),k=D*c*F/m,V=-D*m*C/c,W=y*k-w*V+(e+d)/2,pe=w*k+y*V+(t+l)/2,re=(T,H,K,b)=>{let U=T*K+H*b,B=Math.hypot(T,H)*Math.hypot(K,b),R=Math.acos(Math.min(1,Math.max(-1,U/B)));return T*b-H*K<0?-R:R},we=re(1,0,(C-k)/c,(F-V)/m),xe=re((C-k)/c,(F-V)/m,(-C-k)/c,(-F-V)/m);!i&&xe>0&&(xe-=2*Math.PI),i&&xe<0&&(xe+=2*Math.PI);let L=Math.max(1,Math.ceil(Math.abs(xe)/(Math.PI/2)-1e-9)),me=xe/L,ne=4/3*Math.tan(me/4),S=T=>({x:W+c*Math.cos(T)*y-m*Math.sin(T)*w,y:pe+c*Math.cos(T)*w+m*Math.sin(T)*y}),$=T=>({x:-c*Math.sin(T)*y-m*Math.cos(T)*w,y:-c*Math.sin(T)*w+m*Math.cos(T)*y}),M=[];for(let T=0;T<L;T+=1){let H=we+T*me,K=H+me,b=S(H),U=T===L-1?{x:d,y:l}:S(K),B=$(H),R=$(K);M.push([{x:b.x+ne*B.x,y:b.y+ne*B.y},{x:U.x-ne*R.x,y:U.y-ne*R.y},U])}return M}function ft(e){let t=[],r=n=>`${Z(n.x)} ${Z(n.y)}`;for(let n of e){let{anchors:o}=n,a=o[0];if(!a)continue;t.push(`M${r(a)}`);let i=an(n);for(let d=0;d<i;d+=1){let l=o[d],c=o[(d+1)%o.length],m=n.closed&&d===o.length-1;!l.out&&!c.in?m||t.push(`L${r(c)}`):t.push(`C${r(l.out??l)} ${r(c.in??c)} ${r(c)}`)}n.closed&&t.push("Z")}return t.join(" ")}function an(e){let t=e.anchors.length;return t<2?0:e.closed?t:t-1}function sn(e,t){let r=e.anchors[t],n=e.anchors[(t+1)%e.anchors.length];return[{x:r.x,y:r.y},r.out??{x:r.x,y:r.y},n.in??{x:n.x,y:n.y},{x:n.x,y:n.y}]}function gf(e,t){let r=e.anchors[t],n=e.anchors[(t+1)%e.anchors.length];return!r.out&&!n.in}function nn(e,t){let[r,n,o,a]=e,i=1-t,d=i*i*i,l=3*i*i*t,c=3*i*t*t,m=t*t*t;return{x:d*r.x+l*n.x+c*o.x+m*a.x,y:d*r.y+l*n.y+c*o.y+m*a.y}}function ut(e,t){return e.map(r=>({closed:r.closed,anchors:r.anchors.map(n=>{let o=t(n);return{x:o.x,y:o.y,...n.in?{in:t(n.in)}:{},...n.out?{out:t(n.out)}:{}}})}))}function Gt(e){let t=1/0,r=1/0,n=-1/0,o=-1/0,a=i=>{t=Math.min(t,i.x),r=Math.min(r,i.y),n=Math.max(n,i.x),o=Math.max(o,i.y)};for(let i of e){for(let l of i.anchors)a(l);let d=an(i);for(let l=0;l<d;l+=1){let c=sn(i,l);for(let m of Nm(c))a(nn(c,m))}}if(t!==1/0)return{x:t,y:r,w:n-t,h:o-r}}function Nm(e){let[t,r,n,o]=e,a=[];for(let i of["x","y"]){let d=-t[i]+3*r[i]-3*n[i]+o[i],l=2*(t[i]-2*r[i]+n[i]),c=r[i]-t[i];if(Math.abs(d)<1e-12){Math.abs(l)>1e-12&&a.push(-c/l);continue}let m=l*l-4*d*c;if(m<0)continue;let x=Math.sqrt(m);a.push((-l+x)/(2*d),(-l-x)/(2*d))}return a.filter(i=>i>0&&i<1)}function po(e){if(e===void 0)return;let t=e.trim().split(/[\s,]+/).map(Number);if(t.length!==4||t.some(i=>!Number.isFinite(i)))return;let[r,n,o,a]=t;return{x:r,y:n,w:o,h:a}}function Wt(e){return[e.x,e.y,e.w,e.h].map(Z).join(" ")}function ln(e,t,r){return po(e)??{x:0,y:0,w:t,h:r}}function dn(e,t){let r=e.w===0?1:t.w/e.w,n=e.h===0?1:t.h/e.h;return o=>({x:t.x+(o.x-e.x)*r,y:t.y+(o.y-e.y)*n})}function rs(e,t){let r=e.w===0||t.w===0?1:e.w/t.w,n=e.h===0||t.h===0?1:e.h/t.h;return o=>({x:e.x+(o.x-t.x)*r,y:e.y+(o.y-t.y)*n})}function yf(e,t=.5){let[r,n,o,a]=e;if(Kt(r,n)&&Kt(o,a))return[r,a];let d=Math.hypot(n.x-r.x,n.y-r.y)+Math.hypot(o.x-n.x,o.y-n.y)+Math.hypot(a.x-o.x,a.y-o.y),l=Math.min(256,Math.max(4,Math.ceil(Math.sqrt(d/t)))),c=[];for(let m=0;m<=l;m+=1)c.push(nn(e,m/l));return c}function ns(e,t,r){let n=0,o=0;for(let a of e){let i=Rm(a);if(i.length!==0){if(r.reach>0){let d=a.closed?i.length:i.length-1;for(let l=0;l<d;l+=1){let c=i[l],m=i[(l+1)%i.length];if(Im(t,c,m)<=r.reach)return!0}if(i.length===1&&Math.hypot(t.x-i[0].x,t.y-i[0].y)<=r.reach)return!0}if(r.fill)for(let d=0;d<i.length;d+=1){let l=i[d],c=i[(d+1)%i.length];l.y<=t.y!=c.y<=t.y&&l.x+(t.y-l.y)/(c.y-l.y)*(c.x-l.x)>t.x&&(o+=1,n+=c.y>l.y?1:-1)}}}return r.fill?r.rule==="evenodd"?o%2===1:n!==0:!1}function Rm(e){let t=e.anchors[0];if(!t)return[];let r=[{x:t.x,y:t.y}],n=an(e);for(let o=0;o<n;o+=1)r.push(...yf(sn(e,o)).slice(1));return e.closed&&r.length>1&&r.pop(),r}function Im(e,t,r){let n=r.x-t.x,o=r.y-t.y,a=n*n+o*o,i=a===0?0:Math.max(0,Math.min(1,((e.x-t.x)*n+(e.y-t.y)*o)/a));return Math.hypot(e.x-(t.x+i*n),e.y-(t.y+i*o))}function os(e,t){let r;return e.forEach((n,o)=>{let a=an(n);for(let i=0;i<a;i+=1){let d=sn(n,i),l=_=>{let C=nn(d,_);return Math.hypot(C.x-t.x,C.y-t.y)},c=32,m=0;for(let _=1;_<=c;_+=1)l(_/c)<l(m)&&(m=_/c);let x=Math.max(0,m-1/c),y=Math.min(1,m+1/c);for(let _=0;_<24;_+=1){let C=x+(y-x)/3,F=y-(y-x)/3;l(C)<l(F)?y=F:x=C}let w=(x+y)/2,P=l(w);(!r||P<r.distance)&&(r={contour:o,segment:i,t:w,point:nn(d,w),distance:P})}}),r}function as(e,t,r,n){return e.map((o,a)=>{if(a!==t)return o;let i=[...o.anchors],d=i.length,l=i[r],c=(r+1)%d,m=i[c];if(gf(o,r)){let k={x:l.x+(m.x-l.x)*n,y:l.y+(m.y-l.y)*n};return i.splice(r+1,0,k),{...o,anchors:i}}let[x,y,w,P]=sn(o,r),_=(k,V)=>({x:k.x+(V.x-k.x)*n,y:k.y+(V.y-k.y)*n}),C=_(x,y),F=_(y,w),N=_(w,P),J=_(C,F),A=_(F,N),D=_(J,A);return i[r]=rn({...l,out:C}),i[c]=rn({...m,in:N}),i.splice(r+1,0,rn({x:D.x,y:D.y,in:J,out:A})),{...o,anchors:i}})}var co=.5522847498;function ss(e,t,r=0){let n=Math.max(0,Math.min(r,e/2,t/2));if(n===0)return[{closed:!0,anchors:[{x:0,y:0},{x:e,y:0},{x:e,y:t},{x:0,y:t}]}];let o=co*n,a=[{x:n,y:0,in:{x:n-o,y:0}},{x:e-n,y:0,out:{x:e-n+o,y:0}},{x:e,y:n,in:{x:e,y:n-o}},{x:e,y:t-n,out:{x:e,y:t-n+o}},{x:e-n,y:t,in:{x:e-n+o,y:t}},{x:n,y:t,out:{x:n-o,y:t}},{x:0,y:t-n,in:{x:0,y:t-n+o}},{x:0,y:n,out:{x:0,y:n-o}}];return[{closed:!0,anchors:Fm(a)}]}function is(e,t){let r=e/2,n=t/2,o=co*r,a=co*n;return[{closed:!0,anchors:[{x:r,y:0,in:{x:r-o,y:0},out:{x:r+o,y:0}},{x:e,y:n,in:{x:e,y:n-a},out:{x:e,y:n+a}},{x:r,y:t,in:{x:r+o,y:t},out:{x:r-o,y:t}},{x:0,y:n,in:{x:0,y:n+a},out:{x:0,y:n-a}}]}]}function Fm(e){let t=[];for(let o of e){let a=t[t.length-1];if(a&&Kt(a,o)&&!a.out&&!o.in){t[t.length-1]=ot(a,a.in,o.out);continue}t.push(o)}let r=t[0],n=t[t.length-1];return t.length>1&&r&&n&&Kt(r,n)&&!n.out&&!r.in&&(t[0]=ot(r,n.in,r.out),t.pop()),t}var at=class extends Error{op;constructor(t,r){super(t),this.op=r,this.name="OpError"}};function ve(e,t){let r=e,n=[];for(let o of t){let a=wf(r,o);r=a.document,n.push(a.inverse)}return n.reverse(),{document:r,inverse:n}}function wf(e,t){switch(t.op){case"set":{let r=z(e.root,t.id);if(!r)throw new at(`No node ${t.id}`,t);let n=r[t.prop];return{document:mo(e,ds(e.root,t.id,o=>Bm(o,t.prop,t.value),t)),inverse:{op:"set",id:t.id,prop:t.prop,value:n}}}case"insert":{if(z(e.root,t.node.id))throw new at(`Duplicate id ${t.node.id}`,t);let r=ho(e.root,t.parent,n=>{let o=bf(t.index,0,n.length);return[...n.slice(0,o),t.node,...n.slice(o)]},t);return{document:mo(e,r),inverse:{op:"remove",id:t.node.id}}}case"remove":{let r=vf(e,t.id,t),n=ho(e.root,r.parent.id,o=>o.filter(a=>a.id!==t.id),t);return{document:mo(e,n),inverse:{op:"insert",parent:r.parent.id,index:r.index,node:r.node}}}case"move":{let r=vf(e,t.id,t),n=ho(e.root,r.parent.id,a=>a.filter(i=>i.id!==t.id),t),o=ho(n,t.parent,a=>{let i=bf(t.index,0,a.length);return[...a.slice(0,i),r.node,...a.slice(i)]},t);return{document:mo(e,o),inverse:{op:"move",id:t.id,parent:r.parent.id,index:r.index}}}case"setTitle":{let{title:r,...n}=e;return{document:t.value===void 0?n:{...n,title:t.value},inverse:{op:"setTitle",value:r}}}case"setToken":{let r=Object.prototype.hasOwnProperty.call(e.tokens,t.name)?e.tokens[t.name]:void 0,n={...e.tokens};return t.value===void 0?delete n[t.name]:n[t.name]=t.value,{document:{...e,tokens:n},inverse:{op:"setToken",name:t.name,value:r}}}case"setAsset":{let r=Object.prototype.hasOwnProperty.call(e.assets,t.name)?e.assets[t.name]:void 0,n={...e.assets};return t.value===void 0?delete n[t.name]:n[t.name]=t.value,{document:{...e,assets:n},inverse:{op:"setAsset",name:t.name,value:r}}}case"setFont":{let r=Object.prototype.hasOwnProperty.call(e.fonts,t.name)?e.fonts[t.name]:void 0,n={...e.fonts};return t.family===void 0?delete n[t.name]:n[t.name]=t.family,{document:{...e,fonts:n},inverse:{op:"setFont",name:t.name,family:r}}}case"setMotion":{let r=e.motion&&Object.prototype.hasOwnProperty.call(e.motion,t.page)?e.motion[t.page]:void 0,n={...e.motion};return dt(t.value)?delete n[t.page]:n[t.page]=t.value,{document:Qa(e,n),inverse:{op:"setMotion",page:t.page,value:r}}}}}function xo(e,t){if(!e.motion||!t.some(n=>n.op==="remove"||n.op==="move"))return t;let r=es(e,ve(e,t).document);return r.length===0?t:[...t,...r]}function mo(e,t){if(t.type!=="canvas")throw new Error("The document root must stay a canvas");return{...e,root:t}}function Bm(e,t,r){let n={...e};return r===void 0?delete n[t]:n[t]=r,n}function ds(e,t,r,n){if(e.id===t)return r(e);if(!ue(e))return e;let o=!1,a=e.children.map(i=>{let d=ds(i,t,r,n);return d!==i&&(o=!0),d});return o?{...e,children:a}:e}function ho(e,t,r,n){let o=z(e,t);if(!o)throw new at(`No node ${t}`,n);if(!ue(o))throw new at(`${t} cannot hold children`,n);return ds(e,t,a=>({...a,children:r(a.children)}),n)}function vf(e,t,r){if(t===e.root.id)throw new at("The document root cannot be removed or moved",r);let n,o=a=>{ue(a)&&a.children.forEach((i,d)=>{i.id===t&&(n={node:i,parent:a,index:d}),o(i)})};if(o(e.root),!n)throw new at(`No node ${t}`,r);return n}function bf(e,t,r){return Math.min(Math.max(e,t),r)}function fs(e,t){let r=[];e.title!==t.title&&r.push({op:"setTitle",value:t.title});for(let a of gr(e.tokens,t.tokens)){let i=t.tokens[a];e.tokens[a]!==i&&r.push({op:"setToken",name:a,value:i})}for(let a of gr(e.fonts,t.fonts)){let i=t.fonts[a];Vm(e.fonts[a],i)||r.push({op:"setFont",name:a,family:i})}for(let a of gr(e.assets,t.assets)){let i=t.assets[a];e.assets[a]?.hash!==i?.hash&&r.push({op:"setAsset",name:a,value:i})}if(!Hm(e.root.children,t.root.children)){for(let a of e.root.children)r.push({op:"remove",id:a.id});t.root.children.forEach((a,i)=>{r.push({op:"insert",parent:e.root.id,index:i,node:a})})}for(let a of gr(e.motion??{},t.motion??{})){let i=t.motion?.[a];io(e.motion?.[a],i)||r.push({op:"setMotion",page:a,value:i})}let n=e.root,o=t.root;for(let a of gr(n,o))a==="type"||a==="id"||a==="children"||kf(n[a],o[a])||r.push({op:"set",id:e.root.id,prop:a,value:o[a]});return r}function gr(e,t){return[...new Set([...Object.keys(e),...Object.keys(t)])]}function kf(e,t){return e===t?!0:ce(e)&&ce(t)&&e.expr===t.expr}function Hm(e,t){return e.length===t.length&&e.every((r,n)=>ls(r,t[n]))}function ls(e,t){if(kf(e,t))return!0;if(typeof e!="object"||typeof t!="object"||e===null||t===null)return!1;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((a,i)=>ls(a,t[i]));let r=e,n=t;return gr(r,n).every(a=>ls(r[a],n[a]))}function Vm(e,t){if(e===t)return!0;if(!e||!t||e.family!==t.family||e.fallback!==t.fallback)return!1;let r=e.faces??[],n=t.faces??[];return r.length===n.length&&r.every((o,a)=>{let i=n[a];return o.src===i.src&&o.weight===i.weight&&o.style===i.style})}var fn={canvas:[["name","string"],["w","numberValue"],["h","numberValue"],["background","stringValue"]],frame:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["background","stringValue"],["clip","boolean"],["skip","boolean"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],group:[["name","string"],["hidden","boolean"],["locked","boolean"]],ellipse:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["fill","stringValue"],["stroke","stringValue"],["strokeWidth","numberValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],vector:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["view","string"],["d","string"],["fill","stringValue"],["stroke","stringValue"],["strokeWidth","numberValue"],["opacity","numberValue"],["rule","fillRule"],["cap","lineCap"],["join","lineJoin"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],rect:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["fill","stringValue"],["stroke","stringValue"],["strokeWidth","numberValue"],["radius","numberValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],image:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["src","stringValue"],["fit","imageFit"],["radius","numberValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],text:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["font","stringValue"],["size","numberValue"],["weight","numberValue"],["lineHeight","numberValue"],["letterSpacing","numberValue"],["align","align"],["valign","valign"],["italic","boolean"],["fill","stringValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]]},un=[["font","string"],["size","number"],["weight","number"],["italic","boolean"],["underline","boolean"],["strike","boolean"],["fill","string"],["letterSpacing","number"],["link","string"]],us=[["weight","number"],["style","fontStyle"]],go=[["enter","pageEffect"],["duration","number"]],cn=[["enter","nodeEffect"],["exit","nodeEffect"],["duration","number"],["delay","number"],["step","boolean"],["together","boolean"],["go","string"]],Cf=Object.keys(fn);function yo(e){return Cf.includes(e)}function cs(e,t){return fn[e].find(([r])=>r===t)?.[1]}var Xt=" ";function We(e){if(ce(e))return/^[$@]/.test(e.expr)&&!/\s/.test(e.expr)?e.expr:`(${e.expr})`;if(typeof e=="number")return Z(e);let t=String(e);return Um(t)?JSON.stringify(t):t}function Um(e){return e===""||/[\s"=()]/.test(e)||/^[$@]/.test(e)}function Fe(e,t){if(t==="boolean")return e===""||e==="true"?{value:!0}:e==="false"?{value:!1}:{error:`Expected true or false, got ${e}`};if(e.startsWith('"')){let n=vr(e);return n===void 0?{error:`Malformed quoted string ${e}`}:Sf(n,t,e)}if(Km(e)){if(!zm(t))return{error:qm(e,t)};let n=Af(e).trim();return n===""?{error:"Empty expression"}:{value:kt(n)}}return t==="numberValue"&&Ef.test(e)?{value:kt(e)}:Sf(e,t,e)}var Ef=/^-?\d+(?:\.\d+)?%$/;function zm(e){return e==="numberValue"||e==="stringValue"}function qm(e,t){return t==="number"?`Expected a plain number, not an expression, got ${e}`:t==="string"&&/^\$\w+$/.test(e)?`Expected a literal, got ${e} \u2014 name a token without the $: ${e.slice(1)}`:`Expected a literal, not an expression, got ${e} \u2014 quote it if you meant the text`}function jm(e,t){let r=/^(-?\d+(?:\.\d+)?)([A-Za-z]+)$/.exec(e);return r?r[2]==="s"&&t==="number"?` \u2014 durations are milliseconds: ${Number(r[1])*1e3}`:/^(?:px|pt|deg|ms)$/.test(r[2])?` \u2014 drop the unit: ${r[1]}`:" \u2014 units are not supported: use a number, a percentage like (100%), or an expression":t==="number"?Ef.test(e)?" \u2014 a percentage is not allowed here":"":/^-[$@(]/.test(e)?` \u2014 wrap an expression in parentheses: (${e})`:/^-?[A-Za-z_]\w*(?:\.\w+)+$/.test(e)?` \u2014 wrap an expression in parentheses: (${e})`:""}function Sf(e,t,r){switch(t){case"numberValue":case"number":{let n=Number(e);return Number.isFinite(n)&&e.trim()!==""?{value:n}:{error:`Expected a number, got ${r}${jm(e,t)}`}}case"align":return St.includes(e)?{value:e}:{error:`Expected one of ${St.join(", ")}, got ${r}`};case"valign":return _t.includes(e)?{value:e}:{error:`Expected one of ${_t.join(", ")}, got ${r}`};case"fontStyle":return e==="normal"||e==="italic"?{value:e}:{error:`Expected normal or italic, got ${r}`};case"imageFit":return Ct.includes(e)?{value:e}:{error:`Expected one of ${Ct.join(", ")}, got ${r}`};case"fillRule":return yr(Ht,e,r);case"lineCap":return yr(Vt,e,r);case"lineJoin":return yr(Ut,e,r);case"blendMode":return yr(Bt,e,r);case"pageEffect":return yr(pr,e,r);case"nodeEffect":return yr(tn,e,r);default:return{value:e}}}function yr(e,t,r){return e.includes(t)?{value:t}:{error:`Expected one of ${e.join(", ")}, got ${r}`}}function Km(e){return/^[$@(]/.test(e)}function vr(e){try{let t=JSON.parse(e);return typeof t=="string"?t:void 0}catch{return}}function Af(e){if(!e.startsWith("("))return e;let t=0;for(let r=0;r<e.length;r+=1){let n=e[r];if(n==="(")t+=1;else if(n===")"&&(t-=1,t===0))return r===e.length-1?e.slice(1,-1):e}return e}function Mf(e){let t=[],r="",n=0,o=!1;for(let a=0;a<e.length;a+=1){let i=e[a];if(o){r+=i,i==="\\"?(r+=e[a+1]??"",a+=1):i==='"'&&(o=!1);continue}if(i==='"'){o=!0,r+=i;continue}if(i==="("?n+=1:i===")"&&(n=Math.max(0,n-1)),n===0&&/\s/.test(i)){r!==""&&t.push(r),r="";continue}r+=i}return r!==""&&t.push(r),t}function ps(e,t,r){let n=r===void 0?void 0:Be(r);if(n?.value===void 0||!_f(e[t]??""))return;let o=t;for(;o<e.length&&_f(e[o]??"");)o+=1;let a=[Af(n.value),...e.slice(t,o)].join(" ");return{end:o,message:`${n.key}: an expression with spaces needs parentheses \u2014 write ${n.key}=(${a})`}}function _f(e){return!e.includes("=")&&/^(?:[-+*/]|-?\d+(?:\.\d+)?%?|[$@][\w.]*|[A-Za-z_]\w*(?:\.\w+)+|\(.*|.*\))$/.test(e)}function Be(e){let t=e.indexOf("=");return t===-1?{key:e,value:void 0}:{key:e.slice(0,t),value:e.slice(t+1)}}var Gm=new Set(["exit","delay","step","together","go"]);function ms(e,t){let r=e.words[1];if(r===void 0||r.includes("=")){t(e.number,"invalid-motion","Expected motion <page>, e.g. motion intro enter=fade");return}let n={};for(let o of e.words.slice(2)){let{key:a,value:i}=Be(o),d=go.find(([c])=>c===a)?.[1];if(d===void 0){let c=Gm.has(a)?` \u2014 ${a} goes on a node's line, under the header`:"";t(e.number,"invalid-motion",`motion ${r} has no "${a}"${c}`,r);continue}let l=Fe(i??"",d);"error"in l?t(e.number,"invalid-motion",`${a}: ${l.error}`,r):a==="duration"&&!Lf(l.value)?t(e.number,"invalid-motion",Tf(a,i),r):n[a]=l.value}return{page:r,number:e.number,head:n,lines:[],where:new Map,taken:new Map}}function hs(e,t,r){let n=t.words[0];if(t.indent!==1){r(t.number,"invalid-motion","A motion line sits one level under its page");return}if(n.includes("=")){r(t.number,"invalid-motion",`Expected a node id first, got ${n}`);return}if(n===e.page){r(t.number,"invalid-motion",`${n} is the page: its transition goes on the header (motion ${n} enter=fade)`,n);return}let o={id:n},a=!0;for(let d of t.words.slice(1)){let{key:l,value:c}=Be(d),m=cn.find(([y])=>y===l)?.[1];if(m===void 0){r(t.number,"invalid-motion",`A motion line has no "${l}"`,n),a=!1;continue}let x=Fe(c??"",m);"error"in x?(r(t.number,"invalid-motion",`${l}: ${x.error}`,n),a=!1):(l==="duration"||l==="delay")&&!Lf(x.value)?(r(t.number,"invalid-motion",Tf(l,c),n),a=!1):l==="go"&&lt(x.value)===void 0?(r(t.number,"invalid-motion",`go: expected #<page>, back, next, or an https: or mailto: link, got ${c??""}`,n),a=!1):x.value!==!1&&(o[l]=x.value)}if(o.enter!==void 0&&o.exit!==void 0&&(r(t.number,"invalid-motion",`${n} either enters or exits on one line \u2014 write a second line for the other`,n),a=!1),o.step===!0&&o.together===!0&&(r(t.number,"invalid-motion",`${n} waits for a step or starts together with the line above, not both`,n),a=!1),!a)return;let i=Wm(o);if(!mr(i)){r(t.number,"invalid-motion",`${n} says nothing: give it enter=, exit= or go=`,n);return}for(let d of["enter","exit","go"]){if(i[d]===void 0)continue;let l=e.taken.get(`${n} ${d}`);if(l!==void 0){let c=d==="go"?"has a go=":d==="enter"?"enters":"exits";r(t.number,"invalid-motion",`${n} already ${c} on line ${l}`,n);return}}for(let d of["enter","exit","go"])i[d]!==void 0&&e.taken.set(`${n} ${d}`,t.number);e.where.has(n)||e.where.set(n,t.number),e.lines.push(i)}function xs(e){let t={...e.head.enter===void 0?{}:{enter:e.head.enter},...e.head.duration===void 0?{}:{duration:e.head.duration},lines:e.lines};return dt(t)?void 0:t}function $f(e,t){let r=t.motion;if(r)for(let n of hr(t)){let o=r[n];if(o===void 0||dt(o))continue;e.at(-1)!==""&&e.push("");let a=["motion",n];for(let[i]of go){let d=o[i];d!==void 0&&a.push(`${i}=${We(d)}`)}e.push(a.join(" "));for(let i of o.lines){let d=[i.id];for(let[l,c]of cn){let m=i[l];if(m!==void 0){if(c==="boolean"){m===!0&&d.push(l);continue}d.push(`${l}=${We(m)}`)}}e.push(Xt+d.join(" "))}}}function Wm(e){let t={id:e.id};for(let[r]of cn)e[r]!==void 0&&(t[r]=e[r]);return t}function Lf(e){return typeof e=="number"&&e>=0&&e<=jt}function Tf(e,t){return`${e}: expected 0 to ${jt} milliseconds, got ${t??""}`}var Xm=24;function ys(e,t={}){let r=[`version ${Z(e.version)}`,`kind ${e.kind}`];e.title!==void 0&&r.push(`title ${JSON.stringify(e.title)}`);for(let[n,o]of Object.entries(e.tokens))r.push(`$${n} = ${We(o)}`);r.push("");for(let[n,o]of Object.entries(e.fonts))Zm(r,n,o,t),r.push("");if(Object.keys(e.assets).length>0){for(let[n,o]of Object.entries(e.assets))r.push(Jm(n,o));r.push("")}return Ym(e.root)?e.root.children.forEach((n,o)=>{o>0&&r.push(""),gs(r,n,0)}):gs(r,e.root,0),$f(r,e),r.join(`
29
- `)}function Ym(e){return e.id===nt&&e.w===void 0&&e.h===void 0&&e.background===void 0&&e.name===void 0}function Jm(e,t){let r=[`asset ${e} = ${t.type}`,`hash=${t.hash}`,`bytes=${Z(t.bytes)}`];for(let n of["credit","source","license"]){let o=t[n];o!==void 0&&r.push(`${n}=${We(o)}`)}return r.join(" ")}function Zm(e,t,r,n){e.push(`font ${t} = ${We(r.family)}`),r.fallback!==void 0&&e.push(`${Xt}fallback ${We(r.fallback)}`);for(let o of r.faces??[]){let a=n.abbreviateFaces?Qm(o.src):o.src,i=[`face ${We(a)}`];for(let[d]of us){let l=o[d];l!==void 0&&i.push(`${d}=${We(l)}`)}e.push(Xt+i.join(" "))}}function Qm(e){return e.startsWith("data:")?`${e.slice(0,Xm)}\u2026 ${Z(Math.round(e.length/1024))} kB`:e}function gs(e,t,r){let n=Xt.repeat(r),o=t,a=[t.type,t.id];for(let[i,d]of fn[t.type]){let l=o[i];if(l!==void 0){if(d==="boolean"){l===!0&&a.push(i);continue}a.push(`${i}=${We(l)}`)}}if(e.push(n+a.join(" ")),t.type==="text"&&eh(e,t.content,r+1),ue(t))for(let i of le(t))gs(e,i,r+1)}function eh(e,t,r){let n=Xt.repeat(r),o=typeof t=="string"?[t]:t;for(let a of o){if(typeof a=="string"){e.push(n+JSON.stringify(a));continue}e.push(n+[JSON.stringify(a.text),...th(a)].join(" "))}}function th(e){let t=[];for(let[r,n]of un){let o=e[r];if(o!==void 0){if(n==="boolean"){o===!0&&t.push(r);continue}t.push(`${r}=${We(o)}`)}}return t}var Yt="--- payload base64 ---",Of="sha256-";function Df(e){let t=rh(e);return t===-1?{head:e,payload:""}:{head:e.slice(0,t),payload:e.slice(t+Yt.length)}}function vs(e){let{head:t,payload:r}=Df(e);return{head:t,blocks:Pf(r)}}function bs(e,t){let r=new Map;for(let n of nh(e)){let o=t.get(n);o!==void 0&&r.set(n,o)}return r.size===0?e:`${e.trimEnd()}
28
+ ${t}]`}function ho(e){return pe(e)?JSON.stringify(`=${e.expr}`):typeof e=="number"?ee(e):JSON.stringify(e)}function ee(e){if(!Number.isFinite(e))return"0";let t=Math.round(e*1e4)/1e4,r=Object.is(t,-0)?0:t;return Math.abs(r)>=1e21?r.toFixed(0):String(r)}var Nh={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0};function sn(e){let t=[],r,n=0,o=0,a=0,i=0,l,d,c=Rh(e),h=()=>(r||(r={anchors:[{x:n,y:o}],closed:!1},t.push(r)),r.anchors[r.anchors.length-1]),x=(k,_)=>{h(),r?.anchors.push({x:k,y:_}),n=k,o=_},y=(k,_,B,R)=>{h().out=k,r?.anchors.push({x:B,y:R,in:_}),n=B,o=R},b="",P=!0;for(;c.more();){let k=c.command();if(k!==void 0)b=k,P=!0;else if(b===""||b.toUpperCase()==="Z")return{contours:mo(t),error:`Expected a command at ${c.at()}`};let _=b.toUpperCase(),B=b!==_,R=Nh[_];if(R===void 0)return{contours:mo(t),error:`Unknown command ${b}`};if(_==="Z"){r&&(r.closed=!0),r=void 0,n=a,o=i,l=void 0,d=void 0,b="";continue}let J=_==="A"?c.arc():c.numbers(R);if(J===void 0)return{contours:mo(t),error:`${b} expects ${R} numbers at ${c.at()}`};let E=B?n:0,D=B?o:0,N=A=>J[A];switch(_){case"M":P&&(r={anchors:[{x:E+N(0),y:D+N(1)}],closed:!1},t.push(r),n=a=E+N(0),o=i=D+N(1),b=B?"l":"L"),l=d=void 0;break;case"L":x(E+N(0),D+N(1)),l=d=void 0;break;case"H":x(E+N(0),o),l=d=void 0;break;case"V":x(n,D+N(0)),l=d=void 0;break;case"C":{let A={x:E+N(2),y:D+N(3)};y({x:E+N(0),y:D+N(1)},A,E+N(4),D+N(5)),l=A,d=void 0;break}case"S":{let A=l?{x:2*n-l.x,y:2*o-l.y}:{x:n,y:o},G={x:E+N(0),y:D+N(1)};y(A,G,E+N(2),D+N(3)),l=G,d=void 0;break}case"Q":case"T":{let A=_==="Q"?{x:E+N(0),y:D+N(1)}:d?{x:2*n-d.x,y:2*o-d.y}:{x:n,y:o},G=_==="Q"?E+N(2):E+N(0),se=_==="Q"?D+N(3):D+N(1),me={x:n+2/3*(A.x-n),y:o+2/3*(A.y-o)},he={x:G+2/3*(A.x-G),y:se+2/3*(A.y-se)};y(me,he,G,se),d=A,l=void 0;break}case"A":{let A=E+N(5),G=D+N(6);for(let[se,me,he]of Ih(n,o,N(0),N(1),N(2),N(3)!==0,N(4)!==0,A,G))y(se,me,he.x,he.y);(n!==A||o!==G)&&x(A,G),l=d=void 0;break}}P=!1}return{contours:mo(t)}}function mo(e){return e.map(t=>{let r=[...t.anchors];if(t.closed&&r.length>1){let n=r[0],o=r[r.length-1];Wt(n,o)&&(r.pop(),r[0]={...n,...o.in?{in:o.in}:{}})}return{anchors:r.map(on),closed:t.closed}})}function at(e,t,r){return on({x:e.x,y:e.y,...t?{in:t}:{},...r?{out:r}:{}})}function on(e){let t={x:e.x,y:e.y};return e.in&&!Wt(e.in,e)&&(t.in=e.in),e.out&&!Wt(e.out,e)&&(t.out=e.out),t}function Wt(e,t,r=1e-6){return Math.abs(e.x-t.x)<r&&Math.abs(e.y-t.y)<r}function Rh(e){let t=0,r=()=>{for(;t<e.length&&/[\s,]/.test(e[t]);)t+=1},n=()=>{r();let a=/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/.exec(e.slice(t));if(a)return t+=a[0].length,Number(a[0])},o=()=>{r();let a=e[t];if(!(a!=="0"&&a!=="1"))return t+=1,Number(a)};return{more(){return r(),t<e.length},command(){r();let a=e[t];if(/[a-zA-Z]/.test(a))return t+=1,a},numbers(a){let i=[];for(let l=0;l<a;l+=1){let d=n();if(d===void 0)return;i.push(d)}return i},arc(){let a=this.numbers(3),i=o(),l=o(),d=this.numbers(2);if(!(!a||i===void 0||l===void 0||!d))return[...a,i,l,...d]},at(){return t}}}function Ih(e,t,r,n,o,a,i,l,d){let c=Math.abs(r),h=Math.abs(n);if(c===0||h===0||e===l&&t===d)return[];let x=o*Math.PI/180,y=Math.cos(x),b=Math.sin(x),P=(e-l)/2,k=(t-d)/2,_=y*P+b*k,B=-b*P+y*k,R=_*_/(c*c)+B*B/(h*h);R>1&&(c*=Math.sqrt(R),h*=Math.sqrt(R));let J=c*c*h*h-c*c*B*B-h*h*_*_,E=c*c*B*B+h*h*_*_,D=(a===i?-1:1)*Math.sqrt(Math.max(0,J/E)),N=D*c*B/h,A=-D*h*_/c,G=y*N-b*A+(e+l)/2,se=b*N+y*A+(t+d)/2,me=(L,H,q,S)=>{let U=L*q+H*S,W=Math.hypot(L,H)*Math.hypot(q,S),I=Math.acos(Math.min(1,Math.max(-1,U/W)));return L*S-H*q<0?-I:I},he=me(1,0,(_-N)/c,(B-A)/h),ke=me((_-N)/c,(B-A)/h,(-_-N)/c,(-B-A)/h);!i&&ke>0&&(ke-=2*Math.PI),i&&ke<0&&(ke+=2*Math.PI);let we=Math.max(1,Math.ceil(Math.abs(ke)/(Math.PI/2)-1e-9)),T=ke/we,Q=4/3*Math.tan(T/4),w=L=>({x:G+c*Math.cos(L)*y-h*Math.sin(L)*b,y:se+c*Math.cos(L)*b+h*Math.sin(L)*y}),$=L=>({x:-c*Math.sin(L)*y-h*Math.cos(L)*b,y:-c*Math.sin(L)*b+h*Math.cos(L)*y}),M=[];for(let L=0;L<we;L+=1){let H=he+L*T,q=H+T,S=w(H),U=L===we-1?{x:l,y:d}:w(q),W=$(H),I=$(q);M.push([{x:S.x+Q*W.x,y:S.y+Q*W.y},{x:U.x-Q*I.x,y:U.y-Q*I.y},U])}return M}function ut(e){let t=[],r=n=>`${ee(n.x)} ${ee(n.y)}`;for(let n of e){let{anchors:o}=n,a=o[0];if(!a)continue;t.push(`M${r(a)}`);let i=ln(n);for(let l=0;l<i;l+=1){let d=o[l],c=o[(l+1)%o.length],h=n.closed&&l===o.length-1;!d.out&&!c.in?h||t.push(`L${r(c)}`):t.push(`C${r(d.out??d)} ${r(c.in??c)} ${r(c)}`)}n.closed&&t.push("Z")}return t.join(" ")}function ln(e){let t=e.anchors.length;return t<2?0:e.closed?t:t-1}function dn(e,t){let r=e.anchors[t],n=e.anchors[(t+1)%e.anchors.length];return[{x:r.x,y:r.y},r.out??{x:r.x,y:r.y},n.in??{x:n.x,y:n.y},{x:n.x,y:n.y}]}function vf(e,t){let r=e.anchors[t],n=e.anchors[(t+1)%e.anchors.length];return!r.out&&!n.in}function an(e,t){let[r,n,o,a]=e,i=1-t,l=i*i*i,d=3*i*i*t,c=3*i*t*t,h=t*t*t;return{x:l*r.x+d*n.x+c*o.x+h*a.x,y:l*r.y+d*n.y+c*o.y+h*a.y}}function ct(e,t){return e.map(r=>({closed:r.closed,anchors:r.anchors.map(n=>{let o=t(n);return{x:o.x,y:o.y,...n.in?{in:t(n.in)}:{},...n.out?{out:t(n.out)}:{}}})}))}function Xt(e){let t=1/0,r=1/0,n=-1/0,o=-1/0,a=i=>{t=Math.min(t,i.x),r=Math.min(r,i.y),n=Math.max(n,i.x),o=Math.max(o,i.y)};for(let i of e){for(let d of i.anchors)a(d);let l=ln(i);for(let d=0;d<l;d+=1){let c=dn(i,d);for(let h of Fh(c))a(an(c,h))}}if(t!==1/0)return{x:t,y:r,w:n-t,h:o-r}}function Fh(e){let[t,r,n,o]=e,a=[];for(let i of["x","y"]){let l=-t[i]+3*r[i]-3*n[i]+o[i],d=2*(t[i]-2*r[i]+n[i]),c=r[i]-t[i];if(Math.abs(l)<1e-12){Math.abs(d)>1e-12&&a.push(-c/d);continue}let h=d*d-4*l*c;if(h<0)continue;let x=Math.sqrt(h);a.push((-d+x)/(2*l),(-d-x)/(2*l))}return a.filter(i=>i>0&&i<1)}function go(e){if(e===void 0)return;let t=e.trim().split(/[\s,]+/).map(Number);if(t.length!==4||t.some(i=>!Number.isFinite(i)))return;let[r,n,o,a]=t;return{x:r,y:n,w:o,h:a}}function Yt(e){return[e.x,e.y,e.w,e.h].map(ee).join(" ")}function fn(e,t,r){return go(e)??{x:0,y:0,w:t,h:r}}function un(e,t){let r=e.w===0?1:t.w/e.w,n=e.h===0?1:t.h/e.h;return o=>({x:t.x+(o.x-e.x)*r,y:t.y+(o.y-e.y)*n})}function os(e,t){let r=e.w===0||t.w===0?1:e.w/t.w,n=e.h===0||t.h===0?1:e.h/t.h;return o=>({x:e.x+(o.x-t.x)*r,y:e.y+(o.y-t.y)*n})}function bf(e,t=.5){let[r,n,o,a]=e;if(Wt(r,n)&&Wt(o,a))return[r,a];let l=Math.hypot(n.x-r.x,n.y-r.y)+Math.hypot(o.x-n.x,o.y-n.y)+Math.hypot(a.x-o.x,a.y-o.y),d=Math.min(256,Math.max(4,Math.ceil(Math.sqrt(l/t)))),c=[];for(let h=0;h<=d;h+=1)c.push(an(e,h/d));return c}function as(e,t,r){let n=0,o=0;for(let a of e){let i=Bh(a);if(i.length!==0){if(r.reach>0){let l=a.closed?i.length:i.length-1;for(let d=0;d<l;d+=1){let c=i[d],h=i[(d+1)%i.length];if(Hh(t,c,h)<=r.reach)return!0}if(i.length===1&&Math.hypot(t.x-i[0].x,t.y-i[0].y)<=r.reach)return!0}if(r.fill)for(let l=0;l<i.length;l+=1){let d=i[l],c=i[(l+1)%i.length];d.y<=t.y!=c.y<=t.y&&d.x+(t.y-d.y)/(c.y-d.y)*(c.x-d.x)>t.x&&(o+=1,n+=c.y>d.y?1:-1)}}}return r.fill?r.rule==="evenodd"?o%2===1:n!==0:!1}function Bh(e){let t=e.anchors[0];if(!t)return[];let r=[{x:t.x,y:t.y}],n=ln(e);for(let o=0;o<n;o+=1)r.push(...bf(dn(e,o)).slice(1));return e.closed&&r.length>1&&r.pop(),r}function Hh(e,t,r){let n=r.x-t.x,o=r.y-t.y,a=n*n+o*o,i=a===0?0:Math.max(0,Math.min(1,((e.x-t.x)*n+(e.y-t.y)*o)/a));return Math.hypot(e.x-(t.x+i*n),e.y-(t.y+i*o))}function ss(e,t){let r;return e.forEach((n,o)=>{let a=ln(n);for(let i=0;i<a;i+=1){let l=dn(n,i),d=k=>{let _=an(l,k);return Math.hypot(_.x-t.x,_.y-t.y)},c=32,h=0;for(let k=1;k<=c;k+=1)d(k/c)<d(h)&&(h=k/c);let x=Math.max(0,h-1/c),y=Math.min(1,h+1/c);for(let k=0;k<24;k+=1){let _=x+(y-x)/3,B=y-(y-x)/3;d(_)<d(B)?y=B:x=_}let b=(x+y)/2,P=d(b);(!r||P<r.distance)&&(r={contour:o,segment:i,t:b,point:an(l,b),distance:P})}}),r}function is(e,t,r,n){return e.map((o,a)=>{if(a!==t)return o;let i=[...o.anchors],l=i.length,d=i[r],c=(r+1)%l,h=i[c];if(vf(o,r)){let N={x:d.x+(h.x-d.x)*n,y:d.y+(h.y-d.y)*n};return i.splice(r+1,0,N),{...o,anchors:i}}let[x,y,b,P]=dn(o,r),k=(N,A)=>({x:N.x+(A.x-N.x)*n,y:N.y+(A.y-N.y)*n}),_=k(x,y),B=k(y,b),R=k(b,P),J=k(_,B),E=k(B,R),D=k(J,E);return i[r]=on({...d,out:_}),i[c]=on({...h,in:R}),i.splice(r+1,0,on({x:D.x,y:D.y,in:J,out:E})),{...o,anchors:i}})}var xo=.5522847498;function ls(e,t,r=0){let n=Math.max(0,Math.min(r,e/2,t/2));if(n===0)return[{closed:!0,anchors:[{x:0,y:0},{x:e,y:0},{x:e,y:t},{x:0,y:t}]}];let o=xo*n,a=[{x:n,y:0,in:{x:n-o,y:0}},{x:e-n,y:0,out:{x:e-n+o,y:0}},{x:e,y:n,in:{x:e,y:n-o}},{x:e,y:t-n,out:{x:e,y:t-n+o}},{x:e-n,y:t,in:{x:e-n+o,y:t}},{x:n,y:t,out:{x:n-o,y:t}},{x:0,y:t-n,in:{x:0,y:t-n+o}},{x:0,y:n,out:{x:0,y:n-o}}];return[{closed:!0,anchors:Uh(a)}]}function ds(e,t){let r=e/2,n=t/2,o=xo*r,a=xo*n;return[{closed:!0,anchors:[{x:r,y:0,in:{x:r-o,y:0},out:{x:r+o,y:0}},{x:e,y:n,in:{x:e,y:n-a},out:{x:e,y:n+a}},{x:r,y:t,in:{x:r+o,y:t},out:{x:r-o,y:t}},{x:0,y:n,in:{x:0,y:n+a},out:{x:0,y:n-a}}]}]}function Uh(e){let t=[];for(let o of e){let a=t[t.length-1];if(a&&Wt(a,o)&&!a.out&&!o.in){t[t.length-1]=at(a,a.in,o.out);continue}t.push(o)}let r=t[0],n=t[t.length-1];return t.length>1&&r&&n&&Wt(r,n)&&!n.out&&!r.in&&(t[0]=at(r,n.in,r.out),t.pop()),t}var st=class extends Error{op;constructor(t,r){super(t),this.op=r,this.name="OpError"}};function ve(e,t){let r=e,n=[];for(let o of t){let a=Sf(r,o);r=a.document,n.push(a.inverse)}return n.reverse(),{document:r,inverse:n}}function Sf(e,t){switch(t.op){case"set":{let r=V(e.root,t.id);if(!r)throw new st(`No node ${t.id}`,t);let n=r[t.prop];return{document:yo(e,us(e.root,t.id,o=>Vh(o,t.prop,t.value),t)),inverse:{op:"set",id:t.id,prop:t.prop,value:n}}}case"insert":{if(V(e.root,t.node.id))throw new st(`Duplicate id ${t.node.id}`,t);let r=vo(e.root,t.parent,n=>{let o=kf(t.index,0,n.length);return[...n.slice(0,o),t.node,...n.slice(o)]},t);return{document:yo(e,r),inverse:{op:"remove",id:t.node.id}}}case"remove":{let r=wf(e,t.id,t),n=vo(e.root,r.parent.id,o=>o.filter(a=>a.id!==t.id),t);return{document:yo(e,n),inverse:{op:"insert",parent:r.parent.id,index:r.index,node:r.node}}}case"move":{let r=wf(e,t.id,t),n=vo(e.root,r.parent.id,a=>a.filter(i=>i.id!==t.id),t),o=vo(n,t.parent,a=>{let i=kf(t.index,0,a.length);return[...a.slice(0,i),r.node,...a.slice(i)]},t);return{document:yo(e,o),inverse:{op:"move",id:t.id,parent:r.parent.id,index:r.index}}}case"setTitle":{let{title:r,...n}=e;return{document:t.value===void 0?n:{...n,title:t.value},inverse:{op:"setTitle",value:r}}}case"setToken":{let r=Object.prototype.hasOwnProperty.call(e.tokens,t.name)?e.tokens[t.name]:void 0,n={...e.tokens};return t.value===void 0?delete n[t.name]:n[t.name]=t.value,{document:{...e,tokens:n},inverse:{op:"setToken",name:t.name,value:r}}}case"setAsset":{let r=Object.prototype.hasOwnProperty.call(e.assets,t.name)?e.assets[t.name]:void 0,n={...e.assets};return t.value===void 0?delete n[t.name]:n[t.name]=t.value,{document:{...e,assets:n},inverse:{op:"setAsset",name:t.name,value:r}}}case"setFont":{let r=Object.prototype.hasOwnProperty.call(e.fonts,t.name)?e.fonts[t.name]:void 0,n={...e.fonts};return t.family===void 0?delete n[t.name]:n[t.name]=t.family,{document:{...e,fonts:n},inverse:{op:"setFont",name:t.name,family:r}}}case"setMotion":{let r=e.motion&&Object.prototype.hasOwnProperty.call(e.motion,t.page)?e.motion[t.page]:void 0,n={...e.motion};return ft(t.value)?delete n[t.page]:n[t.page]=t.value,{document:ts(e,n),inverse:{op:"setMotion",page:t.page,value:r}}}}}function bo(e,t){if(!e.motion||!t.some(n=>n.op==="remove"||n.op==="move"))return t;let r=rs(e,ve(e,t).document);return r.length===0?t:[...t,...r]}function yo(e,t){if(t.type!=="canvas")throw new Error("The document root must stay a canvas");return{...e,root:t}}function Vh(e,t,r){let n={...e};return r===void 0?delete n[t]:n[t]=r,n}function us(e,t,r,n){if(e.id===t)return r(e);if(!ce(e))return e;let o=!1,a=e.children.map(i=>{let l=us(i,t,r,n);return l!==i&&(o=!0),l});return o?{...e,children:a}:e}function vo(e,t,r,n){let o=V(e,t);if(!o)throw new st(`No node ${t}`,n);if(!ce(o))throw new st(`${t} cannot hold children`,n);return us(e,t,a=>({...a,children:r(a.children)}),n)}function wf(e,t,r){if(t===e.root.id)throw new st("The document root cannot be removed or moved",r);let n,o=a=>{ce(a)&&a.children.forEach((i,l)=>{i.id===t&&(n={node:i,parent:a,index:l}),o(i)})};if(o(e.root),!n)throw new st(`No node ${t}`,r);return n}function kf(e,t,r){return Math.min(Math.max(e,t),r)}function cs(e,t){let r=[];e.title!==t.title&&r.push({op:"setTitle",value:t.title});for(let a of vr(e.tokens,t.tokens)){let i=t.tokens[a];e.tokens[a]!==i&&r.push({op:"setToken",name:a,value:i})}for(let a of vr(e.fonts,t.fonts)){let i=t.fonts[a];qh(e.fonts[a],i)||r.push({op:"setFont",name:a,family:i})}for(let a of vr(e.assets,t.assets)){let i=t.assets[a];e.assets[a]?.hash!==i?.hash&&r.push({op:"setAsset",name:a,value:i})}if(!zh(e.root.children,t.root.children)){for(let a of e.root.children)r.push({op:"remove",id:a.id});t.root.children.forEach((a,i)=>{r.push({op:"insert",parent:e.root.id,index:i,node:a})})}for(let a of vr(e.motion??{},t.motion??{})){let i=t.motion?.[a];co(e.motion?.[a],i)||r.push({op:"setMotion",page:a,value:i})}let n=e.root,o=t.root;for(let a of vr(n,o))a==="type"||a==="id"||a==="children"||_f(n[a],o[a])||r.push({op:"set",id:e.root.id,prop:a,value:o[a]});return r}function vr(e,t){return[...new Set([...Object.keys(e),...Object.keys(t)])]}function _f(e,t){return e===t?!0:pe(e)&&pe(t)&&e.expr===t.expr}function zh(e,t){return e.length===t.length&&e.every((r,n)=>fs(r,t[n]))}function fs(e,t){if(_f(e,t))return!0;if(typeof e!="object"||typeof t!="object"||e===null||t===null)return!1;if(Array.isArray(e)||Array.isArray(t))return Array.isArray(e)&&Array.isArray(t)&&e.length===t.length&&e.every((a,i)=>fs(a,t[i]));let r=e,n=t;return vr(r,n).every(a=>fs(r[a],n[a]))}function qh(e,t){if(e===t)return!0;if(!e||!t||e.family!==t.family||e.fallback!==t.fallback)return!1;let r=e.faces??[],n=t.faces??[];return r.length===n.length&&r.every((o,a)=>{let i=n[a];return o.src===i.src&&o.weight===i.weight&&o.style===i.style})}var cn={canvas:[["name","string"],["w","numberValue"],["h","numberValue"],["background","stringValue"]],frame:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["background","stringValue"],["clip","boolean"],["skip","boolean"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],group:[["name","string"],["hidden","boolean"],["locked","boolean"]],ellipse:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["fill","stringValue"],["stroke","stringValue"],["strokeWidth","numberValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],vector:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["view","string"],["d","string"],["fill","stringValue"],["stroke","stringValue"],["strokeWidth","numberValue"],["opacity","numberValue"],["rule","fillRule"],["cap","lineCap"],["join","lineJoin"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],rect:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["fill","stringValue"],["stroke","stringValue"],["strokeWidth","numberValue"],["radius","numberValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],image:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["src","stringValue"],["fit","imageFit"],["radius","numberValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],text:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["font","stringValue"],["size","numberValue"],["weight","numberValue"],["lineHeight","numberValue"],["letterSpacing","numberValue"],["align","align"],["valign","valign"],["italic","boolean"],["fill","stringValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]]},pn=[["font","string"],["size","number"],["weight","number"],["italic","boolean"],["underline","boolean"],["strike","boolean"],["fill","string"],["letterSpacing","number"],["link","string"]],ps=[["weight","number"],["style","fontStyle"]],wo=[["enter","pageEffect"],["duration","number"]],hn=[["enter","nodeEffect"],["exit","nodeEffect"],["duration","number"],["delay","number"],["step","boolean"],["together","boolean"],["go","string"]],Af=Object.keys(cn);function ko(e){return Af.includes(e)}function hs(e,t){return cn[e].find(([r])=>r===t)?.[1]}var Jt=" ";function Ge(e){if(pe(e))return/^[$@]/.test(e.expr)&&!/\s/.test(e.expr)?e.expr:`(${e.expr})`;if(typeof e=="number")return ee(e);let t=String(e);return jh(t)?JSON.stringify(t):t}function jh(e){return e===""||/[\s"=()]/.test(e)||/^[$@]/.test(e)}function Be(e,t){if(t==="boolean")return e===""||e==="true"?{value:!0}:e==="false"?{value:!1}:{error:`Expected true or false, got ${e}`};if(e.startsWith('"')){let n=wr(e);return n===void 0?{error:`Malformed quoted string ${e}`}:Cf(n,t,e)}if(Xh(e)){if(!Kh(t))return{error:Gh(e,t)};let n=$f(e).trim();return n===""?{error:"Empty expression"}:{value:St(n)}}return t==="numberValue"&&Mf.test(e)?{value:St(e)}:Cf(e,t,e)}var Mf=/^-?\d+(?:\.\d+)?%$/;function Kh(e){return e==="numberValue"||e==="stringValue"}function Gh(e,t){return t==="number"?`Expected a plain number, not an expression, got ${e}`:t==="string"&&/^\$\w+$/.test(e)?`Expected a literal, got ${e} \u2014 name a token without the $: ${e.slice(1)}`:`Expected a literal, not an expression, got ${e} \u2014 quote it if you meant the text`}function Wh(e,t){let r=/^(-?\d+(?:\.\d+)?)([A-Za-z]+)$/.exec(e);return r?r[2]==="s"&&t==="number"?` \u2014 durations are milliseconds: ${Number(r[1])*1e3}`:/^(?:px|pt|deg|ms)$/.test(r[2])?` \u2014 drop the unit: ${r[1]}`:" \u2014 units are not supported: use a number, a percentage like (100%), or an expression":t==="number"?Mf.test(e)?" \u2014 a percentage is not allowed here":"":/^-[$@(]/.test(e)?` \u2014 wrap an expression in parentheses: (${e})`:/^-?[A-Za-z_]\w*(?:\.\w+)+$/.test(e)?` \u2014 wrap an expression in parentheses: (${e})`:""}function Cf(e,t,r){switch(t){case"numberValue":case"number":{let n=Number(e);return Number.isFinite(n)&&e.trim()!==""?{value:n}:{error:`Expected a number, got ${r}${Wh(e,t)}`}}case"align":return _t.includes(e)?{value:e}:{error:`Expected one of ${_t.join(", ")}, got ${r}`};case"valign":return Ct.includes(e)?{value:e}:{error:`Expected one of ${Ct.join(", ")}, got ${r}`};case"fontStyle":return e==="normal"||e==="italic"?{value:e}:{error:`Expected normal or italic, got ${r}`};case"imageFit":return Et.includes(e)?{value:e}:{error:`Expected one of ${Et.join(", ")}, got ${r}`};case"fillRule":return br(Vt,e,r);case"lineCap":return br(zt,e,r);case"lineJoin":return br(qt,e,r);case"blendMode":return br(Ut,e,r);case"pageEffect":return br(mr,e,r);case"nodeEffect":return br(nn,e,r);default:return{value:e}}}function br(e,t,r){return e.includes(t)?{value:t}:{error:`Expected one of ${e.join(", ")}, got ${r}`}}function Xh(e){return/^[$@(]/.test(e)}function wr(e){try{let t=JSON.parse(e);return typeof t=="string"?t:void 0}catch{return}}function $f(e){if(!e.startsWith("("))return e;let t=0;for(let r=0;r<e.length;r+=1){let n=e[r];if(n==="(")t+=1;else if(n===")"&&(t-=1,t===0))return r===e.length-1?e.slice(1,-1):e}return e}function Tf(e){let t=[],r="",n=0,o=!1;for(let a=0;a<e.length;a+=1){let i=e[a];if(o){r+=i,i==="\\"?(r+=e[a+1]??"",a+=1):i==='"'&&(o=!1);continue}if(i==='"'){o=!0,r+=i;continue}if(i==="("?n+=1:i===")"&&(n=Math.max(0,n-1)),n===0&&/\s/.test(i)){r!==""&&t.push(r),r="";continue}r+=i}return r!==""&&t.push(r),t}function ms(e,t,r){let n=r===void 0?void 0:He(r);if(n?.value===void 0||!Ef(e[t]??""))return;let o=t;for(;o<e.length&&Ef(e[o]??"");)o+=1;let a=[$f(n.value),...e.slice(t,o)].join(" ");return{end:o,message:`${n.key}: an expression with spaces needs parentheses \u2014 write ${n.key}=(${a})`}}function Ef(e){return!e.includes("=")&&/^(?:[-+*/]|-?\d+(?:\.\d+)?%?|[$@][\w.]*|[A-Za-z_]\w*(?:\.\w+)+|\(.*|.*\))$/.test(e)}function He(e){let t=e.indexOf("=");return t===-1?{key:e,value:void 0}:{key:e.slice(0,t),value:e.slice(t+1)}}var Yh=new Set(["exit","delay","step","together","go"]);function xs(e,t){let r=e.words[1];if(r===void 0||r.includes("=")){t(e.number,"invalid-motion","Expected motion <page>, e.g. motion intro enter=fade");return}let n={};for(let o of e.words.slice(2)){let{key:a,value:i}=He(o),l=wo.find(([c])=>c===a)?.[1];if(l===void 0){let c=Yh.has(a)?` \u2014 ${a} goes on a node's line, under the header`:"";t(e.number,"invalid-motion",`motion ${r} has no "${a}"${c}`,r);continue}let d=Be(i??"",l);"error"in d?t(e.number,"invalid-motion",`${a}: ${d.error}`,r):a==="duration"&&!Of(d.value)?t(e.number,"invalid-motion",Df(a,i),r):n[a]=d.value}return{page:r,number:e.number,head:n,lines:[],where:new Map,taken:new Map}}function gs(e,t,r){let n=t.words[0];if(t.indent!==1){r(t.number,"invalid-motion","A motion line sits one level under its page");return}if(n.includes("=")){r(t.number,"invalid-motion",`Expected a node id first, got ${n}`);return}if(n===e.page){r(t.number,"invalid-motion",`${n} is the page: its transition goes on the header (motion ${n} enter=fade)`,n);return}let o={id:n},a=!0;for(let l of t.words.slice(1)){let{key:d,value:c}=He(l),h=hn.find(([y])=>y===d)?.[1];if(h===void 0){r(t.number,"invalid-motion",`A motion line has no "${d}"`,n),a=!1;continue}let x=Be(c??"",h);"error"in x?(r(t.number,"invalid-motion",`${d}: ${x.error}`,n),a=!1):(d==="duration"||d==="delay")&&!Of(x.value)?(r(t.number,"invalid-motion",Df(d,c),n),a=!1):d==="go"&&dt(x.value)===void 0?(r(t.number,"invalid-motion",`go: expected #<page>, back, next, or an https: or mailto: link, got ${c??""}`,n),a=!1):x.value!==!1&&(o[d]=x.value)}if(o.enter!==void 0&&o.exit!==void 0&&(r(t.number,"invalid-motion",`${n} either enters or exits on one line \u2014 write a second line for the other`,n),a=!1),o.step===!0&&o.together===!0&&(r(t.number,"invalid-motion",`${n} waits for a step or starts together with the line above, not both`,n),a=!1),!a)return;let i=Jh(o);if(!xr(i)){r(t.number,"invalid-motion",`${n} says nothing: give it enter=, exit= or go=`,n);return}for(let l of["enter","exit","go"]){if(i[l]===void 0)continue;let d=e.taken.get(`${n} ${l}`);if(d!==void 0){let c=l==="go"?"has a go=":l==="enter"?"enters":"exits";r(t.number,"invalid-motion",`${n} already ${c} on line ${d}`,n);return}}for(let l of["enter","exit","go"])i[l]!==void 0&&e.taken.set(`${n} ${l}`,t.number);e.where.has(n)||e.where.set(n,t.number),e.lines.push(i)}function ys(e){let t={...e.head.enter===void 0?{}:{enter:e.head.enter},...e.head.duration===void 0?{}:{duration:e.head.duration},lines:e.lines};return ft(t)?void 0:t}function Lf(e,t){let r=t.motion;if(r)for(let n of gr(t)){let o=r[n];if(o===void 0||ft(o))continue;e.at(-1)!==""&&e.push("");let a=["motion",n];for(let[i]of wo){let l=o[i];l!==void 0&&a.push(`${i}=${Ge(l)}`)}e.push(a.join(" "));for(let i of o.lines){let l=[i.id];for(let[d,c]of hn){let h=i[d];if(h!==void 0){if(c==="boolean"){h===!0&&l.push(d);continue}l.push(`${d}=${Ge(h)}`)}}e.push(Jt+l.join(" "))}}}function Jh(e){let t={id:e.id};for(let[r]of hn)e[r]!==void 0&&(t[r]=e[r]);return t}function Of(e){return typeof e=="number"&&e>=0&&e<=Gt}function Df(e,t){return`${e}: expected 0 to ${Gt} milliseconds, got ${t??""}`}var Zh=24;function bs(e,t={}){let r=[`version ${ee(e.version)}`,`kind ${e.kind}`];e.title!==void 0&&r.push(`title ${JSON.stringify(e.title)}`);for(let[n,o]of Object.entries(e.tokens))r.push(`$${n} = ${Ge(o)}`);r.push("");for(let[n,o]of Object.entries(e.fonts))tm(r,n,o,t),r.push("");if(Object.keys(e.assets).length>0){for(let[n,o]of Object.entries(e.assets))r.push(em(n,o));r.push("")}return Qh(e.root)?e.root.children.forEach((n,o)=>{o>0&&r.push(""),vs(r,n,0)}):vs(r,e.root,0),Lf(r,e),r.join(`
29
+ `)}function Qh(e){return e.id===ot&&e.w===void 0&&e.h===void 0&&e.background===void 0&&e.name===void 0}function em(e,t){let r=[`asset ${e} = ${t.type}`,`hash=${t.hash}`,`bytes=${ee(t.bytes)}`];for(let n of["credit","source","license"]){let o=t[n];o!==void 0&&r.push(`${n}=${Ge(o)}`)}return r.join(" ")}function tm(e,t,r,n){e.push(`font ${t} = ${Ge(r.family)}`),r.fallback!==void 0&&e.push(`${Jt}fallback ${Ge(r.fallback)}`);for(let o of r.faces??[]){let a=n.abbreviateFaces?rm(o.src):o.src,i=[`face ${Ge(a)}`];for(let[l]of ps){let d=o[l];d!==void 0&&i.push(`${l}=${Ge(d)}`)}e.push(Jt+i.join(" "))}}function rm(e){return e.startsWith("data:")?`${e.slice(0,Zh)}\u2026 ${ee(Math.round(e.length/1024))} kB`:e}function vs(e,t,r){let n=Jt.repeat(r),o=t,a=[t.type,t.id];for(let[i,l]of cn[t.type]){let d=o[i];if(d!==void 0){if(l==="boolean"){d===!0&&a.push(i);continue}a.push(`${i}=${Ge(d)}`)}}if(e.push(n+a.join(" ")),t.type==="text"&&nm(e,t.content,r+1),ce(t))for(let i of de(t))vs(e,i,r+1)}function nm(e,t,r){let n=Jt.repeat(r),o=typeof t=="string"?[t]:t;for(let a of o){if(typeof a=="string"){e.push(n+JSON.stringify(a));continue}e.push(n+[JSON.stringify(a.text),...om(a)].join(" "))}}function om(e){let t=[];for(let[r,n]of pn){let o=e[r];if(o!==void 0){if(n==="boolean"){o===!0&&t.push(r);continue}t.push(`${r}=${Ge(o)}`)}}return t}var Zt="--- payload base64 ---",Pf="sha256-";function Nf(e){let t=am(e);return t===-1?{head:e,payload:""}:{head:e.slice(0,t),payload:e.slice(t+Zt.length)}}function ws(e){let{head:t,payload:r}=Nf(e);return{head:t,blocks:Rf(r)}}function ks(e,t){let r=new Map;for(let n of sm(e)){let o=t.get(n);o!==void 0&&r.set(n,o)}return r.size===0?e:`${e.trimEnd()}
30
30
 
31
- ${Nf(r)}`}function Pf(e){let t=new Map;for(let r of e.split(`
32
- `)){let n=r.indexOf(" ");if(n===-1)continue;let o=r.slice(0,n);o.startsWith(Of)&&t.set(o,r.slice(n+1).trim())}return t}function Nf(e){let t=[...e.entries()].sort(([r],[n])=>r<n?-1:r>n?1:0).map(([r,n])=>`${r} ${n}`);return`${Yt}
31
+ ${If(r)}`}function Rf(e){let t=new Map;for(let r of e.split(`
32
+ `)){let n=r.indexOf(" ");if(n===-1)continue;let o=r.slice(0,n);o.startsWith(Pf)&&t.set(o,r.slice(n+1).trim())}return t}function If(e){let t=[...e.entries()].sort(([r],[n])=>r<n?-1:r>n?1:0).map(([r,n])=>`${r} ${n}`);return`${Zt}
33
33
  ${t.join(`
34
34
  `)}
35
- `}async function ws(e){let t=await crypto.subtle.digest("SHA-256",e),r=[...new Uint8Array(t)].map(n=>n.toString(16).padStart(2,"0"));return`${Of}${r.join("")}`}function ks(e,t){return`data:${e};base64,${t}`}function Ss(e){let t=e.toBase64;if(typeof t=="function")return t.call(e);let r="";for(let n=0;n<e.length;n+=32768)r+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(r)}function _s(e){let t=Uint8Array.fromBase64;if(typeof t=="function")return t(e);let r=atob(e),n=new Uint8Array(r.length);for(let o=0;o<r.length;o+=1)n[o]=r.charCodeAt(o);return n}function rh(e){if(e.startsWith(Yt))return 0;let t=e.indexOf(`
36
- ${Yt}`);return t===-1?-1:t+1}function nh(e){let t=new Set;for(let r of e.matchAll(/sha256-[0-9a-f]{64}/g))t.add(r[0]);return t}function Cs(e){return(t,r,n,o)=>{e.push({severity:"error",code:r,message:`Line ${t}: ${n}`,...o===void 0?{}:{nodeId:o}})}}function Es(e){let t=[],r=e.split(`
37
- `);for(let n=0;n<r.length;n+=1){let o=r[n],a=o.trim();if(a===Yt)break;if(a===""||a.startsWith("```"))continue;let i=o.length-o.trimStart().length;t.push({number:n+1,indent:Math.floor(i/2),text:a,words:Mf(a)})}return t}function As(e){let t=[],r=[],n=o=>{for(;t.length>0&&t[t.length-1].indent>=o;)ah(t.pop())};return{push(o){let a=o.words[0];if(a.startsWith('"')){let c=t[t.length-1];if(!c||c.type!=="text")return e(o.number,"invalid-content","A quoted line must sit inside a text node"),!0;let m=ih(o,e);return m!==void 0&&c.runs.push(m),!0}if(!yo(a))return!1;n(o.indent);let i=o.words[1];if(i===void 0||i.includes("="))return e(o.number,"missing-id",`A ${a} needs an id`),!0;let d=oh(a,i,o.words.slice(2),o,e),l=t[t.length-1];return l?l.children.push(d.record):r.push(d.record),t.push(d),!0},finish(){return n(0),r}}}function oh(e,t,r,n,o){let a={type:e,id:t},i=[];for(let d=0;d<r.length;d+=1){let{key:l,value:c}=Be(r[d]),m=cs(e,l);if(m===void 0){let y=ps(r,d,r[d-1]);y?(o(n.number,"invalid-value",y.message,t),d=y.end-1):o(n.number,"invalid-value",`${e} has no property "${l}"`,t);continue}let x=Fe(c??"",m);"error"in x?o(n.number,"invalid-value",`${l}: ${x.error}`,t):a[l]=x.value}return ro(e)&&(a.children=i),e==="text"&&(a.content=""),{indent:n.indent,type:e,record:a,children:i,runs:[]}}function ah(e){e.type==="text"&&(e.record.content=sh(e.runs))}function sh(e){if(e.length===0)return"";let t=e[0];return e.length===1&&typeof t=="string"?t:[...e]}function ih(e,t){let r=vr(e.words[0]);if(r===void 0){t(e.number,"invalid-run","Malformed quoted string");return}if(e.words.length===1)return r;let n={text:r};for(let o of e.words.slice(1)){let{key:a,value:i}=Be(o),d=un.find(([c])=>c===a);if(!d){t(e.number,"invalid-run",`A run has no mark "${a}"`);continue}let l=Fe(i??"",d[1]);"error"in l?t(e.number,"invalid-run",`${a}: ${l.error}`):n[a]=l.value}return n}function vo(e){let t=[],r=Cs(t),n=Et,o,a=!1,i={},d={},l={},c=As(r),m,x={},y=new Map,w,P=!1,_=()=>{if(!w)return;let A=w;w=void 0;let D=y.get(A.page);if(D!==void 0){r(A.number,"invalid-motion",`motion ${A.page} is written twice \u2014 put its lines in the block on line ${D}`,A.page);return}y.set(A.page,A.number);for(let[V,W]of A.where)y.set(`${A.page} ${V}`,W);let k=xs(A);k&&(x[A.page]=k)};for(let A of Es(e)){let D=A.words[0];if(w&&A.indent>0){hs(w,A,r);continue}if(!(P&&A.indent>0)){if(P=!1,_(),D==="motion"&&A.indent===0){m=void 0,w=ms(A,r),P=w===void 0;continue}if(D==="version"){a=!0,dh(A,t);continue}if(D==="kind"&&A.indent===0){n=fh(A,t);continue}if(D==="title"&&A.indent===0){o=Rf(A,r);continue}if(D.startsWith("$")){m=void 0,uh(A,i,r);continue}if(D==="asset"&&A.indent===0){m=void 0,ch(A,l,r);continue}if(D==="font"&&A.indent===0){m=mh(A,d,r);continue}if((D==="fallback"||D==="face")&&m){hh(D,A,m,r);continue}m=void 0,!c.push(A)&&r(A.number,"unknown-node-type",`Unknown statement "${D}"`)}}_();let C=lh(c.finish(),t),F=Object.keys(x).length===0?{}:{motion:x},N=(A,D)=>y.get(D===void 0?A:`${A} ${D}`);if(!C){a||t.push({severity:"error",code:"invalid-document",message:"No nodes found"});let A=ur({id:nt,children:[]}),D=en({kind:n,...o===void 0?{}:{title:o},tokens:i,fonts:d,assets:l,...F,root:A});return t.push(...xr(D,N)),{document:D,problems:t}}let J={version:4,kind:n,...o===void 0?{}:{title:o},tokens:i,fonts:d,assets:l,...F,root:C};return t.push(...xr(J,N)),{document:J,problems:t}}function lh(e,t){let r=e[0];if(r!==void 0){if(e.length===1&&r.type==="canvas")return r;for(let n of e){if(n.type!=="canvas")continue;let o=n.id;t.push({severity:"error",code:"invalid-document",message:"A canvas must be the only top-level node",...typeof o=="string"?{nodeId:o}:{}})}return{type:"canvas",id:nt,children:[...e]}}}function dh(e,t){Qr.includes(Number(e.words[1]))||t.push({severity:"warning",code:"version-mismatch",message:`Line ${e.number}: expected version ${4} or older, got ${e.words[1]??"nothing"}`})}function fh(e,t){let r=e.words[1];return r!==void 0&&zt.includes(r)?r:(t.push({severity:"error",code:"unknown-kind",message:`Line ${e.number}: unknown kind "${r??"nothing"}" \u2014 this build reads ${zt.join(", ")}`}),Et)}function Rf(e,t){let r=e.words.slice(1).join(" ").trim();if(r===""){t(e.number,"invalid-value",'title needs a name, e.g. title "Pitch deck"');return}let n=r.startsWith('"')?vr(r):r;if(n===void 0){t(e.number,"invalid-value",`Could not read the title ${r}`);return}return n.trim()===""?void 0:n}function uh(e,t,r){let{name:n,value:o}=Ms(e.words);if(n===void 0||o===void 0){r(e.number,"invalid-token","Expected $name = value");return}if(!o.startsWith('"')&&/\s/.test(o)){r(e.number,"invalid-token",`$${n}: expected one value, got "${o}". Quote it if the value has spaces; there are no comments.`);return}let a=Fe(o,"stringValue");if("error"in a){r(e.number,"invalid-token",`$${n}: ${a.error}`);return}if(typeof a.value!="string"){r(e.number,"invalid-token",`$${n} may not be an expression`);return}t[n]=If(a.value,o)}function If(e,t){let r=Number(e);return t.startsWith('"')||!Number.isFinite(r)||e.trim()===""?e:r}function Ms(e){let t=e[0],r=a=>a.startsWith("$")?a.slice(1):a;if(e[1]==="=")return{name:r(t),value:e.slice(2).join(" ")||void 0};let{key:n,value:o}=Be(t);return o!==void 0?{name:r(n),value:o}:{name:r(t)}}function ch(e,t,r){let n=e.words.slice(1),o=n[0],a=n[1]==="=",i=o===void 0?void 0:Be(o),d=i?.key,l=a?n[2]:i?.value,c=n.slice(a?3:1);if(d===void 0||d===""||l===void 0){r(e.number,"invalid-asset","Expected asset <name> = <type> hash=\u2026 bytes=\u2026");return}let m={};for(let w of c){let{key:P,value:_}=Be(w);if(_===void 0){r(e.number,"invalid-asset",`Asset "${d}" has a stray word "${w}"`);continue}m[P]=ph(_)}let x=m.hash,y=Number(m.bytes);if(x===void 0||!Number.isFinite(y)){r(e.number,"invalid-asset",`Asset "${d}" needs a hash and a bytes count`);return}t[d]={type:l,hash:x,bytes:y,...m.credit===void 0?{}:{credit:m.credit},...m.source===void 0?{}:{source:m.source},...m.license===void 0?{}:{license:m.license}}}function ph(e){return e.startsWith('"')?vr(e)??e:e}function mh(e,t,r){let{name:n,value:o}=Ms(e.words.slice(1));if(n===void 0||o===void 0){r(e.number,"invalid-font","Expected font <name> = <family>");return}let a=Fe(o,"string"),i={family:"error"in a?o:a.value};return t[n]=i,{family:i,faces:[]}}function hh(e,t,r,n){if(e==="fallback"){let d=Fe(t.words.slice(1).join(" "),"string");"error"in d?n(t.number,"invalid-font",`fallback: ${d.error}`):r.family.fallback=d.value;return}let o=t.words[1];if(o===void 0){n(t.number,"invalid-font-face","A face needs a src");return}let a=Fe(o,"string"),i={src:"error"in a?o:a.value};for(let d of t.words.slice(2)){let{key:l,value:c}=Be(d);if(l!=="weight"&&l!=="style"){n(t.number,"invalid-font-face",`A face has no property "${l}"`);continue}let m=Fe(c??"",l==="weight"?"number":"fontStyle");"error"in m?n(t.number,"invalid-font-face",`${l}: ${m.error}`):i[l]=m.value}r.faces.push(i),r.family.faces=r.faces}function Ts(e){let t=[],r=He(e);if(!r)return t.push({severity:"error",code:"invalid-document",message:"Expected an object"}),{document:en(),problems:t};Qr.includes(r.version)||t.push({severity:"warning",code:"version-mismatch",message:`Expected version ${4} or older, got ${JSON.stringify(r.version)}`});let n=Bf(r.root,t),o=xh(r.motion,t),a={version:4,kind:yh(r.kind,t),...typeof r.title=="string"&&r.title.trim()!==""?{title:r.title}:{},tokens:vh(r.tokens,t),fonts:wh(r.fonts,t),assets:bh(r.assets,t),...o===void 0?{}:{motion:o},root:n??ur({id:nt,children:[]})};return Dh(a.root,t),t.push(...xr(a)),{document:a,problems:t}}function xh(e,t){if(e===void 0)return;let r=He(e),n=a=>{t.push({severity:"error",code:"invalid-motion",message:a})};if(!r){n("`motion` must be an object");return}let o={};for(let[a,i]of Object.entries(r)){let d=He(i);if(!d||!Array.isArray(d.lines)){n(`motion ${a} must be an object with a lines array`);continue}let l=d.enter,c=d.duration;if(l!==void 0&&!pr.includes(l)){n(`motion ${a}: enter must be one of ${pr.join(", ")}`);continue}if(c!==void 0&&!$s(c)){n(`motion ${a}: duration must be 0 to ${jt} milliseconds`);continue}let m=d.lines.flatMap(y=>{let w=gh(y);return w===void 0&&n(`motion ${a}: a line that is not one: ${JSON.stringify(y)}`),w===void 0?[]:[w]}),x={...l===void 0?{}:{enter:l},...c===void 0?{}:{duration:c},lines:m};dt(x)||(o[a]=x)}return Object.keys(o).length===0?void 0:o}function gh(e){let t=He(e);if(!t||typeof t.id!="string")return;let{enter:r,exit:n,duration:o,delay:a,step:i,together:d,go:l}=t,c=x=>x===void 0||tn.includes(x);if(!c(r)||!c(n)||r!==void 0&&n!==void 0||o!==void 0&&!$s(o)||a!==void 0&&!$s(a)||i!==void 0&&i!==!0||d!==void 0&&d!==!0||i===!0&&d===!0||l!==void 0&&(typeof l!="string"||lt(l)===void 0))return;let m={id:t.id,...r===void 0?{}:{enter:r},...n===void 0?{}:{exit:n},...o===void 0?{}:{duration:o},...a===void 0?{}:{delay:a},...i===void 0?{}:{step:i},...d===void 0?{}:{together:d},...l===void 0?{}:{go:l}};return mr(m)?m:void 0}function $s(e){return typeof e=="number"&&e>=0&&e<=jt}function yh(e,t){return e==null?Et:typeof e=="string"&&zt.includes(e)?e:(t.push({severity:"error",code:"unknown-kind",message:`Unknown kind ${JSON.stringify(e)} \u2014 this build reads ${zt.join(", ")}`}),Et)}function vh(e,t){let r={};if(e===void 0)return r;let n=He(e);if(!n)return t.push({severity:"error",code:"invalid-tokens",message:"`tokens` must be an object"}),r;for(let[o,a]of Object.entries(n))typeof a=="number"||typeof a=="string"?r[o]=a:t.push({severity:"error",code:"invalid-token",message:`Token $${o} must be a number or string`});return r}function bh(e,t){let r={};if(e===void 0)return r;let n=He(e);if(!n)return t.push({severity:"error",code:"invalid-assets",message:"`assets` must be an object"}),r;for(let[o,a]of Object.entries(n)){let i=He(a);if(!i||typeof i.type!="string"||typeof i.hash!="string"||typeof i.bytes!="number"){t.push({severity:"error",code:"invalid-asset",message:`Asset "${o}" must have a "type", a "hash" and a "bytes" count`});continue}r[o]={type:i.type,hash:i.hash,bytes:i.bytes,...Xe(i.credit,"credit"),...Xe(i.source,"source"),...Xe(i.license,"license")}}return r}function wh(e,t){let r={};if(e===void 0)return r;let n=He(e);if(!n)return t.push({severity:"error",code:"invalid-fonts",message:"`fonts` must be an object"}),r;for(let[o,a]of Object.entries(n)){let i=He(a);if(!i||typeof i.family!="string"){t.push({severity:"error",code:"invalid-font",message:`Font "${o}" must be an object with a "family"`});continue}r[o]={family:i.family,...typeof i.fallback=="string"?{fallback:i.fallback}:{},...kh(i.faces,o,t)}}return r}function kh(e,t,r){if(e===void 0)return{};if(!Array.isArray(e))return r.push({severity:"error",code:"invalid-font",message:`Font "${t}" has a "faces" that is not an array`}),{};let n=[];for(let o of e){let a=He(o);if(!a||typeof a.src!="string"){r.push({severity:"error",code:"invalid-font-face",message:`A face of font "${t}" is missing its "src"`});continue}let i=a.style;n.push({src:a.src,...typeof a.weight=="number"?{weight:a.weight}:{},...i==="italic"||i==="normal"?{style:i}:{}})}return n.length>0?{faces:n}:{}}function Sh(e,t){let r=He(e);if(!r){t.push({severity:"error",code:"invalid-node",message:"Expected a node object"});return}switch(r.type){case"canvas":return Bf(e,t);case"ellipse":return Mh(r,t);case"frame":return _h(r,t);case"group":return Ch(r,t);case"image":return Eh(r,t);case"rect":return Ah(r,t);case"text":return Lh(r,t);case"vector":return $h(r,t);default:t.push({severity:"error",code:"unknown-node-type",message:`Unknown node type ${JSON.stringify(r.type)}`,...typeof r.id=="string"?{nodeId:r.id}:{}});return}}function Bf(e,t){let r=He(e);if(!r){t.push({severity:"error",code:"invalid-node",message:"`root` must be a canvas node"});return}let n=At(r,nt,t);return{type:"canvas",id:n,...Xe(r.name,"name"),...Ff(r,"w",1280,n,t),...Ff(r,"h",720,n,t),...Ye(r.background,n,"background",t),children:Os(r.children,n,t)}}function Ff(e,t,r,n,o){return e[t]===void 0?{}:{[t]:he(e[t],n,t,r,o)}}function _h(e,t){let r=At(e,"frame",t);return{type:"frame",id:r,...Xe(e.name,"name"),x:he(e.x,r,"x",0,t),y:he(e.y,r,"y",0,t),w:he(e.w,r,"w",0,t),h:he(e.h,r,"h",0,t),...Ye(e.background,r,"background",t),...Ls(e.clip,"clip"),...Ls(e.skip,"skip"),...kr(e,r,t),...Jt(e),children:Os(e.children,r,t)}}function Ch(e,t){let r=At(e,"group",t);return{type:"group",id:r,...Xe(e.name,"name"),...Jt(e),children:Os(e.children,r,t)}}function Os(e,t,r){let n=[];if(Array.isArray(e))for(let o of e){let a=Sh(o,r);a&&n.push(a)}else e!==void 0&&r.push({severity:"error",code:"invalid-children",message:"`children` must be an array",nodeId:t});return n}function Eh(e,t){let r=At(e,"image",t),n=e.fit,o=Ye(e.src,r,"src",t);return{type:"image",id:r,...Xe(e.name,"name"),x:he(e.x,r,"x",0,t),y:he(e.y,r,"y",0,t),w:he(e.w,r,"w",100,t),h:he(e.h,r,"h",100,t),..._e(e.rotation,r,"rotation",t),src:o.src??"",...Ct.includes(n)?{fit:n}:{},..._e(e.radius,r,"radius",t),..._e(e.opacity,r,"opacity",t),...kr(e,r,t),...Jt(e)}}function Ah(e,t){let r=At(e,"rect",t);return{type:"rect",id:r,...Xe(e.name,"name"),x:he(e.x,r,"x",0,t),y:he(e.y,r,"y",0,t),w:he(e.w,r,"w",100,t),h:he(e.h,r,"h",100,t),..._e(e.rotation,r,"rotation",t),...Ye(e.fill,r,"fill",t),...Ye(e.stroke,r,"stroke",t),..._e(e.strokeWidth,r,"strokeWidth",t),..._e(e.radius,r,"radius",t),..._e(e.opacity,r,"opacity",t),...kr(e,r,t),...Jt(e)}}function Mh(e,t){let r=At(e,"ellipse",t);return{type:"ellipse",id:r,...Xe(e.name,"name"),x:he(e.x,r,"x",0,t),y:he(e.y,r,"y",0,t),w:he(e.w,r,"w",100,t),h:he(e.h,r,"h",100,t),..._e(e.rotation,r,"rotation",t),...Ye(e.fill,r,"fill",t),...Ye(e.stroke,r,"stroke",t),..._e(e.strokeWidth,r,"strokeWidth",t),..._e(e.opacity,r,"opacity",t),...kr(e,r,t),...Jt(e)}}function $h(e,t){let r=At(e,"vector",t);return{type:"vector",id:r,...Xe(e.name,"name"),x:he(e.x,r,"x",0,t),y:he(e.y,r,"y",0,t),w:he(e.w,r,"w",100,t),h:he(e.h,r,"h",100,t),..._e(e.rotation,r,"rotation",t),...Xe(e.view,"view"),d:typeof e.d=="string"?e.d:"",...Ye(e.fill,r,"fill",t),...Ye(e.stroke,r,"stroke",t),..._e(e.strokeWidth,r,"strokeWidth",t),..._e(e.opacity,r,"opacity",t),...wr(e.rule,Ht,r,"rule",t),...wr(e.cap,Vt,r,"cap",t),...wr(e.join,Ut,r,"join",t),...kr(e,r,t),...Jt(e)}}function Lh(e,t){let r=At(e,"text",t);return{type:"text",id:r,...Xe(e.name,"name"),x:he(e.x,r,"x",0,t),y:he(e.y,r,"y",0,t),w:he(e.w,r,"w",200,t),h:he(e.h,r,"h",40,t),..._e(e.rotation,r,"rotation",t),content:Th(e.content,r,t),...Ye(e.font,r,"font",t),..._e(e.size,r,"size",t),..._e(e.weight,r,"weight",t),..._e(e.lineHeight,r,"lineHeight",t),..._e(e.letterSpacing,r,"letterSpacing",t),...wr(e.align,St,r,"align",t),...wr(e.valign,_t,r,"valign",t),...Ls(e.italic,"italic"),...Ye(e.fill,r,"fill",t),..._e(e.opacity,r,"opacity",t),...kr(e,r,t),...Jt(e)}}function Th(e,t,r){if(e===void 0)return"";if(typeof e=="string")return e;if(!Array.isArray(e))return r.push({severity:"error",code:"invalid-content",message:`Expected a string or an array of runs for content, got ${JSON.stringify(e)}`,nodeId:t,prop:"content"}),"";let n=[];for(let o of e){if(typeof o=="string"){n.push(o);continue}let a=He(o);if(!a||typeof a.text!="string"){r.push({severity:"error",code:"invalid-run",message:'A text run must be a string or an object with a "text"',nodeId:t,prop:"content"});continue}n.push({text:a.text,...ct(a,"font","string"),...ct(a,"size","number"),...ct(a,"weight","number"),...ct(a,"italic","boolean"),...ct(a,"underline","boolean"),...ct(a,"strike","boolean"),...ct(a,"fill","string"),...ct(a,"letterSpacing","number"),...ct(a,"link","string")})}return n}function ct(e,t,r){let n=e[t];return typeof n!==r?{}:r==="number"&&!Number.isFinite(n)?{}:{[t]:n}}function kr(e,t,r){return{...wr(e.blend,Bt,t,"blend",r),...Ye(e.shadow,t,"shadow",r)}}function Jt(e){return{...e.hidden===!0?{hidden:!0}:{},...e.locked===!0?{locked:!0}:{}}}function Ls(e,t){return typeof e=="boolean"?{[t]:e}:{}}function wr(e,t,r,n,o){return e===void 0?{}:typeof e=="string"&&t.includes(e)?{[n]:e}:(o.push({severity:"error",code:"invalid-value",message:`Expected one of ${t.join(", ")} for ${n}, got ${JSON.stringify(e)}`,nodeId:r,prop:n}),{})}function At(e,t,r){let n=e.id;return typeof n=="string"&&n.length>0?n:(r.push({severity:"error",code:"missing-id",message:`Node is missing an id; using "${t}"`}),t)}function he(e,t,r,n,o){let a=Oh(e);return a!==void 0?a:(o.push({severity:"error",code:"invalid-value",message:`Expected a number or expression for ${r}, got ${JSON.stringify(e)}`,nodeId:t,prop:r}),n)}function Oh(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e.startsWith("="))return kt(e.slice(1))}function _e(e,t,r,n){return e===void 0?{}:{[r]:he(e,t,r,0,n)}}function Ye(e,t,r,n){return e===void 0?{}:typeof e=="string"?{[r]:e.startsWith("=")?kt(e.slice(1)):e}:(n.push({severity:"error",code:"invalid-value",message:`Expected a string for ${r}, got ${JSON.stringify(e)}`,nodeId:t,prop:r}),{})}function Xe(e,t){return typeof e=="string"?{[t]:e}:{}}function Dh(e,t){let r=new Set,n=o=>{r.has(o.id)&&t.push({severity:"error",code:"duplicate-id",message:`Duplicate id ${o.id}. Addresses must be unique or patches land on the wrong node.`,nodeId:o.id}),r.add(o.id),ue(o)&&o.children.forEach(n)};n(e)}function He(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}function bo(e){return/^\s*(linear|radial|conic|repeating-[a-z]+)-gradient\s*\(/i.test(e)}function pn(e){let t=e.trim(),r=/^([a-z-]+)-gradient\s*\(([\s\S]*)\)$/i.exec(t);if(!r)return bo(t)?{error:'A gradient needs its closing ")"'}:{kind:"solid",colour:t};let n=r[1].toLowerCase(),o=Ph(r[2]).map(a=>a.trim());if(o.some(a=>a===""))return{error:"A gradient has an empty argument"};if(n==="linear"){let a=Rh(o[0]),i=Vf(a===void 0?o:o.slice(1));return"error"in i?i:{kind:"linear",angle:a??180,stops:i.stops}}if(n==="radial"){let a=Fh(o[0]);if(a&&"error"in a)return a;let i=Vf(a?o.slice(1):o);return"error"in i?i:{kind:"radial",shape:a?.shape??"ellipse",cx:a?.cx??.5,cy:a?.cy??.5,stops:i.stops}}return{error:`${n}-gradient is not supported; use linear-gradient or radial-gradient`}}function Ds(e){let t=e.map(n=>n.at);t[0]===void 0&&(t[0]=0),t[t.length-1]===void 0&&(t[t.length-1]=1);let r=0;for(let n=0;n<t.length;n+=1){let o=t[n];o!==void 0&&(r=Math.max(r,o),t[n]=r)}for(let n=1;n<t.length;n+=1){if(t[n]!==void 0)continue;let o=n-1,a=n;for(;t[a]===void 0;)a+=1;let i=t[o],d=t[a];for(let l=n;l<a;l+=1)t[l]=i+(d-i)*(l-o)/(a-o);n=a}return e.map((n,o)=>({colour:n.colour,at:t[o]}))}function Ph(e){let t=[],r=0,n=0;for(let o=0;o<e.length;o+=1){let a=e[o];a==="("?r+=1:a===")"?r=Math.max(0,r-1):a===","&&r===0&&(t.push(e.slice(n,o)),n=o+1)}return t.push(e.slice(n)),t}var Nh={top:[0,-1],bottom:[0,1],left:[-1,0],right:[1,0]};function Rh(e){let t=/^(-?\d*\.?\d+)(deg|turn|rad)$/i.exec(e);if(t){let a=Number(t[1]),i=t[2].toLowerCase();return i==="turn"?a*360:i==="rad"?a*180/Math.PI:a}let r=/^to\s+([a-z]+)(?:\s+([a-z]+))?$/i.exec(e);if(!r)return;let n=0,o=0;for(let a of[r[1],r[2]]){if(a===void 0)continue;let i=Nh[a.toLowerCase()];if(!i)return;n+=i[0],o+=i[1]}return(Math.atan2(n,-o)*180/Math.PI+360)%360}var Ih={left:0,top:0,center:.5,right:1,bottom:1};function Fh(e){let t=/^(circle|ellipse)?\s*(?:at\s+(\S+)(?:\s+(\S+))?)?$/i.exec(e);if(!t||t[1]===void 0&&t[2]===void 0)return;let r=t[1]?.toLowerCase();if(t[2]===void 0)return r?{shape:r}:void 0;let n=Hf(t[2]),o=t[3]===void 0?.5:Hf(t[3]);return n===void 0||o===void 0?{error:`A radial centre is two percentages or keywords, not "${e}"`}:{...r?{shape:r}:{},cx:n,cy:o}}function Hf(e){let t=Ih[e.toLowerCase()];if(t!==void 0)return t;let r=/^(-?\d*\.?\d+)%$/.exec(e);return r?Number(r[1])/100:void 0}function Vf(e){if(e.length<2)return{error:"A gradient needs at least two colours"};let t=[];for(let r of e){let n=/^([\s\S]*?\S)\s+(-?\d*\.?\d+)%$/.exec(r);if(n&&Bh(n[1]))t.push({colour:n[1],at:Number(n[2])/100});else{if(/\s/.test(r.replace(/\([^)]*\)/g,"")))return{error:`"${r}" is not a colour with an optional percentage`};t.push({colour:r})}}return{stops:t}}function Bh(e){let t=0;for(let r of e)if(r==="("&&(t+=1),r===")"&&(t-=1),t<0)return!1;return t===0}function wo(e){let t=pn(e);return"error"in t?[]:t.kind==="solid"?[t.colour]:t.stops.map(r=>r.colour)}function Sr(e){let t=e.trim();if(t===""||t==="none")return{shadows:[]};let r=[];for(let n of Hh(t)){let o=Vh(n.trim());if(o.includes("inset"))return{error:"Inner shadows (inset) are not supported yet"};let a=[],i=[];for(let x of o){let y=/^(-?\d*\.?\d+)(px)?$/.exec(x);y&&i.length===0?a.push(Number(y[1])):i.push(x)}if(a.length<2||a.length>4)return{error:`"${n.trim()}" needs x, y, then optional blur and spread`};if(i.length!==1)return{error:`"${n.trim()}" needs one colour after its numbers`};let[d=0,l=0,c=0,m=0]=a;if(c<0)return{error:"A shadow cannot have a negative blur"};r.push({x:d,y:l,blur:c,spread:m,colour:i[0]})}return{shadows:r}}function Hh(e){let t=[],r=0,n=0;for(let o=0;o<e.length;o+=1){let a=e[o];a==="("?r+=1:a===")"?r=Math.max(0,r-1):a===","&&r===0&&(t.push(e.slice(n,o)),n=o+1)}return t.push(e.slice(n)),t}function Vh(e){let t=[],r=0,n="";for(let o of e){if(o==="("&&(r+=1),o===")"&&(r=Math.max(0,r-1)),/\s/.test(o)&&r===0){n!==""&&t.push(n),n="";continue}n+=o}return n!==""&&t.push(n),t}var Ps=["rect","ellipse","vector","image","text"];function Ve(e){return{x:e.x+e.w/2,y:e.y+e.h/2}}function De(e,t,r){if(r===0)return e;let n=r*Math.PI/180,o=Math.cos(n),a=Math.sin(n),i=e.x-t.x,d=e.y-t.y;return{x:t.x+i*o-d*a,y:t.y+i*a+d*o}}function mn(e,t,r=Ve(e)){if(t%360===0)return e;let n=[{x:e.x,y:e.y},{x:e.x+e.w,y:e.y},{x:e.x+e.w,y:e.y+e.h},{x:e.x,y:e.y+e.h}].map(l=>De(l,r,t)),o=n.map(l=>l.x),a=n.map(l=>l.y),i=Math.min(...o),d=Math.min(...a);return{x:i,y:d,w:Math.max(...o)-i,h:Math.max(...a)-d}}function hn(e){let t=(e%360+360)%360,r=Math.round(t*100)/100;return r===360?0:r}var Ns=["x","y","w","h","left","right","top","bottom","cx","cy"];function xn(e){return Ns.includes(e)}var Rs=["parent","prev","next","self","root"];function Is(e){return Rs.includes(e)}var Me=class extends Error{position;constructor(t,r){super(t),this.position=r,this.name="ExprSyntaxError"}},zf=/[A-Za-z_]/,Fs=/[A-Za-z0-9_]/;function Bs(e){let t=[],r=0,n=()=>{if(!zf.test(e[r]??""))throw new Me(`Expected a name at position ${r}`,r);let i=r;for(;r<e.length&&Fs.test(e[r]??"");)r++;return e.slice(i,r)},o=()=>{if(!Fs.test(e[r]??""))throw new Me(`Expected a name at position ${r}`,r);let i=r;for(;r<e.length&&Fs.test(e[r]??"");)r++;return e.slice(i,r)},a=()=>{let i=[n()];for(;e[r]===".";)r++,i.push(o());return i};for(;r<e.length;){let i=e[r]??"";if(/\s/.test(i)){r++;continue}if(/[0-9]/.test(i)){let d=r;for(;r<e.length&&/[0-9]/.test(e[r]??"");)r++;if(e[r]==="."&&/[0-9]/.test(e[r+1]??""))for(r++;r<e.length&&/[0-9]/.test(e[r]??"");)r++;let l=e.slice(d,r),c=Number(l);if(!Number.isFinite(c))throw new Me(`Bad number "${l}"`,d);e[r]==="%"?(r++,t.push({type:"percent",value:c})):t.push({type:"number",value:c});continue}if(i==="$"){r++,t.push({type:"token",name:n()});continue}if(i==="@"){r++,t.push({type:"ref",path:a()});continue}if(zf.test(i)){t.push({type:"word",path:a()});continue}if("+-*/()".includes(i)){r++,t.push({type:"op",value:i});continue}throw new Me(`Unexpected character "${i}" at position ${r}`,r)}return t.push({type:"eof"}),t}var jh={"+":1,"-":1,"*":2,"/":2};function Ze(e){try{let t=Bs(e),r=new Hs(t),n=r.parseBinary(0);return r.expectEof(),{ok:!0,ast:n}}catch(t){if(t instanceof Me)return{ok:!1,message:t.message};throw t}}var Hs=class{tokens;index=0;constructor(t){this.tokens=t}peek(){return this.tokens[this.index]??{type:"eof"}}next(){let t=this.peek();return this.index++,t}expectEof(){if(this.peek().type!=="eof")throw new Me("Unexpected trailing input",this.index)}parseBinary(t){let r=this.parseUnary();for(;;){let n=this.peek();if(n.type!=="op"||!Kh(n.value))break;let o=jh[n.value];if(o<t)break;this.next();let a=this.parseBinary(o+1);r={kind:"binary",op:n.value,left:r,right:a}}return r}parseUnary(){let t=this.peek();return t.type==="op"&&(t.value==="-"||t.value==="+")?(this.next(),{kind:"unary",op:t.value,operand:this.parseUnary()}):this.parsePrimary()}parsePrimary(){let t=this.next();switch(t.type){case"number":return{kind:"number",value:t.value};case"percent":return{kind:"percent",value:t.value};case"token":return{kind:"token",name:t.name};case"ref":{if(t.path.length<2)throw new Me(`@${t.path.join(".")} needs an edge, for example @${t.path.join(".")}.right`,this.index);return{kind:"nodeRef",path:t.path}}case"word":{let[r,n,...o]=t.path;if(r===void 0||!Is(r))throw new Me(`Unknown name "${t.path.join(".")}". Use $token for a token or @id.edge for a node.`,this.index);if(n===void 0||!xn(n)||o.length>0)throw new Me(`${r} needs an edge, for example ${r}.w`,this.index);return{kind:"relRef",word:r,edge:n}}case"op":{if(t.value==="("){let r=this.parseBinary(0),n=this.next();if(n.type!=="op"||n.value!==")")throw new Me("Missing closing parenthesis",this.index);return r}throw new Me(`Unexpected "${t.value}"`,this.index)}case"eof":throw new Me("Unexpected end of expression",this.index)}}};function Kh(e){return e==="+"||e==="-"||e==="*"||e==="/"}var qf={"+":1,"-":1,"*":2,"/":2},jf=3,Gh=4;function Wh(e){return e.kind==="binary"?qf[e.op]??1:e.kind==="unary"?jf:Gh}function gn(e){return ko(e,0)}function ko(e,t){let r=Xh(e);return Wh(e)<t?`(${r})`:r}function Xh(e){switch(e.kind){case"number":return Z(e.value);case"percent":return`${Z(e.value)}%`;case"token":return`$${e.name}`;case"nodeRef":return`@${e.path.join(".")}`;case"relRef":return`${e.word}.${e.edge}`;case"unary":return`${e.op}${ko(e.operand,jf)}`;case"binary":{let t=qf[e.op]??1;return`${ko(e.left,t)} ${e.op} ${ko(e.right,t+1)}`}}}function Vs(e){return e.slice(0,-1).join(".")}function Mt(e,t){switch(e.kind){case"nodeRef":{let r=e.path[e.path.length-1],n=t(Vs(e.path));return r===void 0||n===void 0?e:{kind:"nodeRef",path:[...n.split("."),r]}}case"unary":return{...e,operand:Mt(e.operand,t)};case"binary":return{...e,left:Mt(e.left,t),right:Mt(e.right,t)};default:return e}}function Zt(e){let t=new Set,r=new Set,n=o=>{switch(o.kind){case"nodeRef":t.add(Vs(o.path));return;case"token":r.add(o.name);return;case"unary":n(o.operand);return;case"binary":n(o.left),n(o.right);return;default:return}};return n(e),{nodes:[...t],tokens:[...r]}}function Te(e,t){return`${e} ${t}`}function Us(e){switch(e){case"x":case"left":return["x"];case"y":case"top":return["y"];case"w":return["w"];case"h":return["h"];case"right":case"cx":return["x","w"];case"bottom":case"cy":return["y","h"]}}function So(e,t,r,n,o){switch(e){case"x":case"left":return t;case"y":case"top":return r;case"w":return n;case"h":return o;case"right":return t+n;case"bottom":return r+o;case"cx":return t+n/2;case"cy":return r+o/2}}function zs(e){switch(e){case"x":case"left":case"right":case"cx":return"x";case"y":case"top":case"bottom":case"cy":return"y";case"w":case"h":return}}function qs(e,t,r){let n=x=>{let y=[];for(let w=r.parentOf.get(x);w!==void 0;w=r.parentOf.get(w))y.push(w);return y},o=n(e),a=n(t),i=new Set(a),d=o.find(x=>i.has(x)),l=x=>d===void 0?x:x.slice(0,x.indexOf(d)),c=new Map([[e,1]]),m=(x,y)=>{let w=(c.get(x)??0)+y;w===0?c.delete(x):c.set(x,w)};for(let x of l(o))m(x,1);for(let x of l(a))m(x,-1);return c}function js(e){switch(e){case"right":case"bottom":return 1;case"cx":case"cy":return .5;default:return 0}}function _o(e){if(e==="x"||e==="w")return"w";if(e==="y"||e==="h")return"h"}function yn(e){let t=new Map,r=new Map,n=new Map,o=new Map,a=[];se(e.root,(m,x)=>{t.has(m.id)||t.set(m.id,m),a.push(m),x&&r.set(m.id,x.id),ue(m)&&m.children.forEach((y,w)=>{let P=m.children[w-1],_=m.children[w+1];P&&n.set(y.id,P.id),_&&o.set(y.id,_.id)})});let i=new Map;for(let m of a){let x=r.get(m.id);for(;x!==void 0;){let y=t.get(x);if(!y||!ke(y))break;x=r.get(x)}x!==void 0&&i.set(m.id,x)}let d=new Map,l=new Map,c=m=>{if(ue(m)){if(!ke(m)){let x=Kf(m);x.forEach((y,w)=>{let P=x[w-1],_=x[w+1];P&&d.set(y.id,P.id),_&&l.set(y.id,_.id)})}for(let x of m.children)c(x)}};return c(e.root),{rootId:e.root.id,byId:t,parentOf:r,prevOf:n,nextOf:o,layoutParentOf:i,layoutPrevOf:d,layoutNextOf:l,order:a}}function Kf(e){let t=[];for(let r of e.children)ue(r)&&ke(r)?t.push(...Kf(r)):t.push(r);return t}function Co(e,t,r){if(e.kind==="relRef"){let a=Yh(e.word,t,r);return a===void 0?{ok:!1,message:`${t} has no ${e.word}`}:{ok:!0,nodeId:a,edge:e.edge}}let n=e.path[e.path.length-1]??"",o=e.path.slice(0,-1).join(".");return xn(n)?r.byId.has(o)?{ok:!0,nodeId:o,edge:n}:{ok:!1,message:`No node @${o}`}:{ok:!1,message:`"${n}" is not an edge of @${o}`}}function Yh(e,t,r){switch(e){case"self":return t;case"root":return r.rootId;case"parent":return r.layoutParentOf.get(t);case"prev":return r.layoutPrevOf.get(t);case"next":return r.layoutNextOf.get(t)}}function $e(e){let t=[],r=yn(e),n=Gf(r),o=new Set;Wf(n,t),Xf(n,e,r,o,t);let a=Jh(n);Zh(n,a,t);let i=Qh(n,a,e,r,o,t);return{nodes:tx(e.root,i,n,t),problems:t}}function _r(e){let t=yn(e),r=Gf(t),n=[];Wf(r,n),Xf(r,e,t,new Set,n);let o=new Map;for(let a of r.values())for(let i of a.deps){let d=o.get(i),l={nodeId:a.nodeId,prop:a.prop};d?d.push(l):o.set(i,[l])}return o}function Gf(e){let t=new Map;for(let r of e.order){let n=r;for(let o of tt(r)){let a=n[o];a!==void 0&&t.set(Te(r.id,o),{nodeId:r.id,prop:o,value:a,deps:[]})}}return t}function Wf(e,t){for(let r of e.values()){if(!ce(r.value))continue;let n=Ze(r.value.expr);if(n.ok){r.ast=n.ast;continue}t.push({severity:"error",code:"expression-syntax",message:n.message,nodeId:r.nodeId,prop:r.prop})}}function Xf(e,t,r,n,o){for(let a of e.values()){if(!a.ast)continue;let i=new Set,d=l=>{switch(l.kind){case"number":return;case"token":{let c=t.tokens[l.name];typeof c!="number"&&o.push({severity:"error",code:c===void 0?"unknown-token":"token-not-a-number",message:c===void 0?`Unknown token $${l.name}`:`Token $${l.name} is not a number`,nodeId:a.nodeId,prop:a.prop});return}case"percent":{let c=_o(a.prop);if(!c)return;let m=r.layoutParentOf.get(a.nodeId),x=m===void 0?void 0:Te(m,c);if(x===void 0||!e.has(x)){o.push({severity:"error",code:"percent-without-parent",message:`${a.nodeId}.${a.prop} uses a percentage but has no parent to measure against`,nodeId:a.nodeId,prop:a.prop});return}i.add(x);return}case"nodeRef":case"relRef":{let c=Co(l,a.nodeId,r);if(!c.ok){n.add(l),o.push({severity:"error",code:"unknown-reference",message:c.message,nodeId:a.nodeId,prop:a.prop});return}let m=y=>{e.has(y)&&i.add(y)},x=zs(c.edge);if(!x){for(let y of Us(c.edge))m(Te(c.nodeId,y));return}for(let y of qs(c.nodeId,a.nodeId,r).keys())m(Te(y,x));js(c.edge)!==0&&m(Te(c.nodeId,x==="x"?"w":"h"));return}case"unary":d(l.operand);return;case"binary":d(l.left),d(l.right);return}};d(a.ast),a.deps=[...i]}}function Jh(e){let t=new Map,r=new Map;for(let[a,i]of e){t.set(a,i.deps.length);for(let d of i.deps){let l=r.get(d);l?l.push(a):r.set(d,[a])}}let n=[];for(let[a,i]of t)i===0&&n.push(a);let o=[];for(let a=0;a<n.length;a++){let i=n[a];o.push(i);for(let d of r.get(i)??[]){let l=(t.get(d)??0)-1;t.set(d,l),l===0&&n.push(d)}}return o}function Zh(e,t,r){if(t.length===e.size)return;let n=new Set(t);for(let[o,a]of e)n.has(o)||r.push({severity:"error",code:"cycle",message:`${a.nodeId}.${a.prop} is part of a dependency cycle`,nodeId:a.nodeId,prop:a.prop})}function Qh(e,t,r,n,o,a){let i=new Map,d=(l,c)=>i.get(Te(l,c))??0;for(let l of t){let c=e.get(l);if(c){if(!ce(c.value)){i.set(l,c.value);continue}if(!c.ast){i.set(l,0);continue}i.set(l,Yf(c.ast,c,r,n,o,a,d))}}return i}function Yf(e,t,r,n,o,a,i){let d=l=>Yf(l,t,r,n,o,a,i);switch(e.kind){case"number":return e.value;case"token":{let l=r.tokens[e.name];return typeof l=="number"?l:0}case"percent":{let l=_o(t.prop);if(!l)return e.value/100;let c=n.layoutParentOf.get(t.nodeId);return c===void 0?0:e.value/100*i(c,l)}case"nodeRef":case"relRef":{if(o.has(e))return 0;let l=Co(e,t.nodeId,n);if(!l.ok)return 0;let c=zs(l.edge);if(!c)return So(l.edge,i(l.nodeId,"x"),i(l.nodeId,"y"),i(l.nodeId,"w"),i(l.nodeId,"h"));let m=js(l.edge)*i(l.nodeId,c==="x"?"w":"h");for(let[x,y]of qs(l.nodeId,t.nodeId,n))m+=y*i(x,c);return m}case"unary":{let l=d(e.operand);return e.op==="-"?-l:l}case"binary":{let l=d(e.left),c=d(e.right);if(e.op==="/"&&c===0)return a.push({severity:"error",code:"divide-by-zero",message:`${t.nodeId}.${t.prop} divides by zero`,nodeId:t.nodeId,prop:t.prop}),0;let m=ex(e.op,l,c);return Number.isFinite(m)?m:(a.push({severity:"error",code:"not-a-number",message:`${t.nodeId}.${t.prop} did not produce a finite number`,nodeId:t.nodeId,prop:t.prop}),0)}}}function ex(e,t,r){switch(e){case"+":return t+r;case"-":return t-r;case"*":return t*r;case"/":return t/r}}function tx(e,t,r,n){let o=new Map,a=(d,l)=>t.get(Te(d,l))??0,i=(d,l,c)=>{let m=a(d.id,"x"),x=a(d.id,"y"),y=a(d.id,"w"),w=a(d.id,"h"),P={};for(let F of tt(d)){let N=Te(d.id,F);r.has(N)&&(P[F]=t.get(N)??0)}(y<0||w<0)&&n.push({severity:"warning",code:"negative-size",message:`${d.id} resolved to a negative size`,nodeId:d.id});let _=l+m,C=c+x;if(o.set(d.id,{id:d.id,type:d.type,x:m,y:x,w:y,h:w,left:m,top:x,right:m+y,bottom:x+w,cx:m+y/2,cy:x+w/2,absX:_,absY:C,values:P}),ue(d))for(let F of d.children)i(F,_,C)};return i(e,0,0),o}function Eo(e){if(!ce(e))return{kind:"literal",value:e};let t=Ze(e.expr);return t.ok?t.ast.kind==="number"?{kind:"literal",value:t.ast.value}:t.ast.kind==="token"?{kind:"token",name:t.ast.name}:{kind:"complex",source:e.expr,ast:t.ast}:{kind:"complex",source:e.expr,error:t.message}}var Zf="system-ui, -apple-system, Segoe UI, Roboto, sans-serif",Qf=16,eu=400,tu=1.2,Ao="#0F172A";function vn(){return{advance(e,t){return e.length*(t.size*.5+t.letterSpacing)},metrics(e){return{ascent:e.size*.8,descent:e.size*.2,lineGap:0}}}}function Ks(e,t){if(e===void 0)return Zf;let r=t[e];return r?r.fallback?`${Jf(r.family)}, ${r.fallback}`:Jf(r.family):e}function Jf(e){return/^[A-Za-z][A-Za-z0-9 -]*$/.test(e)?e:JSON.stringify(e)}function ru(e,t,r,n){let o={family:Ks(t.font,r),size:t.size,weight:t.weight,italic:t.italic,underline:!1,strike:!1,fill:n(t.fill),letterSpacing:t.letterSpacing},a=typeof e=="string"?[e]:e,i=[];for(let d of a){if(typeof d=="string"){d.length>0&&i.push({text:d,style:o});continue}let l=d;l.text.length!==0&&i.push({text:l.text,style:{family:l.font===void 0?o.family:Ks(l.font,r),size:l.size??o.size,weight:l.weight??o.weight,italic:l.italic??o.italic,underline:l.underline??!1,strike:l.strike??!1,fill:l.fill===void 0?o.fill:n(l.fill),letterSpacing:l.letterSpacing??o.letterSpacing,...l.link!==void 0&&Je(l.link)?{link:l.link}:{}}})}return i}function rx(e,t){let r=[];for(let n of e)for(let o of n.text.split(/(\n)/))if(o!==""){if(o===`
38
- `){let a=r[r.length-1];a&&!a.hardBreak?r[r.length-1]={...a,hardBreak:!0}:r.push({text:"",style:n.style,w:0,hardBreak:!0});continue}for(let a of o.match(/\S+\s*|\s+/g)??[])r.push({text:a,style:n.style,w:t.advance(a,n.style),hardBreak:!1})}return r}function nx(e,t,r){let n=[...e.text],o=[],a="";for(let i of n){let d=a+i;if(a!==""&&r.advance(d,e.style)>t){o.push({text:a,style:e.style,w:r.advance(a,e.style),hardBreak:!1}),a=i;continue}a=d}return a!==""&&o.push({text:a,style:e.style,w:r.advance(a,e.style),hardBreak:e.hardBreak}),o.length>0?o:[e]}function nu(e,t){let{width:r,measure:n}=t,o=rx(n.itemize?e.flatMap(c=>n.itemize?.(c)??[c]):e,n);if(o.length===0){let c=e[0]?.style,m=c?t.lineHeight*c.size:0;return{lines:c?[ox(c,t.lineHeight)]:[],width:0,height:m}}let a=[],i=[],d=0,l=()=>{a.push(i),i=[],d=0};for(let c of o){let m=i.length===0&&c.w>r&&r>0?nx(c,r,n):[c];for(let x of m){let y=x.text.trimEnd(),w=y===x.text?x.w:n.advance(y,x.style);i.length>0&&d+w>r&&l(),i.push(x),d+=x.w,x.hardBreak&&l()}}return i.length>0&&a.push(i),ax(a,t)}function ox(e,t){let r=t*e.size;return{y:0,h:r,baseline:r*.8,w:0,spans:[]}}function ax(e,t){let r=[],n=0,o=0;return e.forEach((a,i)=>{let d=a.map(V=>V.style.size),l=Math.max(...d,0),c=t.lineHeight*l,m=a.map(V=>t.measure.metrics(V.style)),x=Math.max(...m.map(V=>V.ascent),0),y=Math.max(...m.map(V=>V.descent),0),w=n+(c-(x+y))/2+x,P=sx(a,t.measure),_=P.reduce((V,W)=>V+W.w,0);o=Math.max(o,_);let C=i===e.length-1||(a[a.length-1]?.hardBreak??!1),F=t.align==="justify"&&!C&&P.length>1,N=Math.max(0,t.width-_),J=t.align==="center"?N/2:t.align==="right"?N:0,A=F?N/(P.length-1):0,D=[],k=J;P.forEach((V,W)=>{D.push({text:V.text,style:V.style,x:k,w:V.w}),k+=V.w+(W<P.length-1?A:0)}),r.push({y:n,h:c,baseline:w,w:_,spans:ix(D,F)}),n+=c}),{lines:r,width:o,height:n}}function sx(e,t){let r=[...e];for(;r.length>0;){let n=r[r.length-1],o=n.text.trimEnd();if(o===n.text)break;if(o===""){r.pop();continue}r[r.length-1]={...n,text:o,w:t.advance(o,n.style)};break}return r}function ix(e,t){if(t)return[...e];let r=[];for(let n of e){let o=r[r.length-1];if(o&&ou(o.style,n.style)&&Math.abs(o.x+o.w-n.x)<.01){r[r.length-1]={...o,text:o.text+n.text,w:o.w+n.w};continue}r.push(n)}return r}function ou(e,t){return e.family===t.family&&e.size===t.size&&e.weight===t.weight&&e.italic===t.italic&&e.underline===t.underline&&e.strike===t.strike&&e.fill===t.fill&&e.letterSpacing===t.letterSpacing&&e.link===t.link}function Gs(e,t,r,n,o,a){let i={size:t.size??Qf,weight:t.weight??eu,lineHeight:t.lineHeight??tu,letterSpacing:t.letterSpacing??0,italic:e.italic??!1,font:typeof e.font=="string"?e.font:void 0,fill:typeof e.fill=="string"?e.fill:Ao};return nu(ru(e.content,i,n,o),{width:r,align:e.align??"left",lineHeight:i.lineHeight,measure:a})}function Ws(e,t,r){let n=t-r;return e.valign==="middle"?n/2:e.valign==="bottom"?n:0}function Xs(e){switch(e.kind){case"text":{let t=Math.max(e.w,...e.lines.map(n=>n.w)),r=Math.max(e.y+e.h,...e.lines.map(n=>n.y+n.h));return{x:e.x,y:e.y,w:t,h:r-e.y}}case"vector":{let t=Gt(e.contours)??{x:e.x,y:e.y,w:e.w,h:e.h},r=e.stroke!==void 0?e.strokeWidth*2:0;return{x:t.x-r,y:t.y-r,w:t.w+r*2,h:t.h+r*2}}case"rect":case"ellipse":{let t=e.stroke!==void 0?e.strokeWidth/2:0;return{x:e.x-t,y:e.y-t,w:e.w+t*2,h:e.h+t*2}}case"frame":case"image":return{x:e.x,y:e.y,w:e.w,h:e.h}}}function Lo(e,t){let r=e.x,n=e.y,o=e.x+e.w,a=e.y+e.h;for(let i of t){let d=i.spread+i.blur;r=Math.min(r,e.x+i.x-d),n=Math.min(n,e.y+i.y-d),o=Math.max(o,e.x+e.w+i.x+d),a=Math.max(a,e.y+e.h+i.y+d)}return{x:r,y:n,w:o-r,h:a-n}}var iu="vd-paint-";var $o="#CBD5E1",lu="#FFFFFF";function To(e,t,r={}){let n=[...t.problems],o=[],a=[],i=r.measure??vn(),d=hx(e.tokens,n),l=d.paint,c=new Map;se(e.root,(_,C)=>{if("hidden"in _&&_.hidden===!0)return!1;let F=C?c.get(C.id):void 0,N=t.nodes.get(_.id);if(!N){c.set(_.id,F);return}if(_.type==="frame"){_.skip===!0&&C!==e.root&&n.push({severity:"warning",code:"skip-not-a-page",message:`${_.id}: skip only applies to a page, a frame at the top level`,nodeId:_.id,prop:"skip"});let A={x:N.absX,y:N.absY,w:Math.max(0,N.w),h:Math.max(0,N.h)};c.set(_.id,_.clip===!0?_.id:F),_.clip===!0&&a.push({id:_.id,...A,parent:F}),o.push({kind:"frame",id:_.id,...A,background:l(_.background,_.id,"background",A),clip:F,blend:_.blend??"normal",shadows:Cr(_.shadow,_.id,e.tokens,n),rotation:0});return}if(c.set(_.id,F),_.type==="text"){o.push(dx(_,N,e,i,n,F,l));return}if(_.type==="image"){o.push({kind:"image",id:_.id,x:N.absX,y:N.absY,w:Math.max(0,N.w),h:Math.max(0,N.h),href:yx(_,e,r.resolveAsset,n),fit:_.fit??"fill",radius:Math.max(0,N.values.radius??0),opacity:wn(N.values.opacity??1),clip:F,blend:_.blend??"normal",shadows:Cr(_.shadow,_.id,e.tokens,n),rotation:N.values.rotation??0});return}if(_.type==="ellipse"){let A=su(N);o.push({kind:"ellipse",id:_.id,...A,fill:l(_.fill,_.id,"fill",A)??$o,stroke:l(_.stroke,_.id,"stroke",A),strokeWidth:N.values.strokeWidth??0,opacity:wn(N.values.opacity??1),clip:F,blend:_.blend??"normal",shadows:Cr(_.shadow,_.id,e.tokens,n),rotation:N.values.rotation??0});return}if(_.type==="vector"){o.push(mx(_,N,n,F,l,Cr(_.shadow,_.id,e.tokens,n)));return}if(_.type!=="rect")return;let J=su(N);o.push({kind:"rect",id:_.id,...J,fill:l(_.fill,_.id,"fill",J)??$o,stroke:l(_.stroke,_.id,"stroke",J),strokeWidth:N.values.strokeWidth??0,radius:Math.max(0,N.values.radius??0),opacity:wn(N.values.opacity??1),clip:F,blend:_.blend??"normal",shadows:Cr(_.shadow,_.id,e.tokens,n),rotation:N.values.rotation??0})});let m=t.nodes.get(e.root.id),x=e.root.w!==void 0&&e.root.h!==void 0,y=x?{x:0,y:0,width:Math.max(0,m?.w??0),height:Math.max(0,m?.h??0)}:lx(o,a),w={x:y.x,y:y.y,w:y.width,h:y.height},P=l(e.root.background,e.root.id,"background",w);return{...y,background:x?P??lu:P,items:o,clips:a,gradients:d.gradients,problems:n}}function lx(e,t){let r=new Map;for(let d of t){let l=d.parent===void 0?void 0:r.get(d.parent);r.set(d.id,l?au(d,l):d)}let n=1/0,o=1/0,a=-1/0,i=-1/0;for(let d of e){let l=d.kind==="text"?Math.max(d.h,d.height):d.h,c=d.clip===void 0?void 0:r.get(d.clip),m=mn(Lo({x:d.x,y:d.y,w:d.w,h:l},d.shadows),d.rotation,Ve(d)),x=c?au(m,c):m;x.w<=0||x.h<=0||(n=Math.min(n,x.x),o=Math.min(o,x.y),a=Math.max(a,x.x+x.w),i=Math.max(i,x.y+x.h))}return Number.isFinite(n)?{x:n,y:o,width:a-n,height:i-o}:{x:0,y:0,width:0,height:0}}function au(e,t){let r=Math.max(e.x,t.x),n=Math.max(e.y,t.y);return{x:r,y:n,w:Math.min(e.x+e.w,t.x+t.w)-r,h:Math.min(e.y+e.h,t.y+t.h)-n}}function dx(e,t,r,n,o,a,i){let d=Math.max(0,t.w),l=Math.max(0,t.h),c={x:t.absX,y:t.absY,w:d,h:l},m=Gs(e,t.values,d,r.fonts,y=>i(y,e.id,"fill",c)??Ao,n);m.height>l+.5&&o.push({severity:"warning",code:"text-overflow",message:`${e.id} needs ${Math.ceil(m.height)}px but its height is ${Math.round(l)}px`,nodeId:e.id,prop:"h"}),fx(e,r,o);let x=t.absY+Ws(e,l,m.height);return{kind:"text",id:e.id,x:t.absX,y:t.absY,w:d,h:l,clip:a,blend:e.blend??"normal",shadows:Cr(e.shadow,e.id,r.tokens,o),rotation:t.values.rotation??0,opacity:wn(t.values.opacity??1),height:m.height,lines:m.lines.map(y=>({y:x+y.y,h:y.h,baseline:x+y.baseline,w:y.w,spans:y.spans.map(w=>({text:w.text,x:t.absX+w.x,y:x+y.baseline,w:w.w,style:w.style}))}))}}function fx(e,t,r){if(typeof e.content!="string")for(let n of e.content){if(typeof n=="string"||n.link===void 0)continue;let o=Je(n.link);if(!o){r.push({severity:"warning",code:"invalid-link",message:`${e.id}: links go to https:, mailto: or #<frame>, not ${JSON.stringify(n.link)}`,nodeId:e.id,prop:"content"});continue}o.kind==="frame"&&!ux(t,o.id)&&r.push({severity:"warning",code:"link-target-missing",message:`${e.id}: links to #${o.id}, which is not a frame`,nodeId:e.id,prop:"content"})}}function ux(e,t){let r=!1;return se(e.root,n=>{if(r)return!1;n.id===t&&n.type==="frame"&&(r=!0)}),r}var bn=new Map,cx=512;function px(e){let t=bn.get(e);if(t)return t;let r=on(e);return bn.size>=cx&&bn.delete(bn.keys().next().value),bn.set(e,r),r}function mx(e,t,r,n,o,a){let i=Math.max(0,t.w),d=Math.max(0,t.h),l={x:t.absX,y:t.absY,w:i,h:d},{contours:c,error:m}=px(e.d);m!==void 0&&r.push({severity:"error",code:"bad-path",message:`${e.id}: ${m}`,nodeId:e.id,prop:"d"}),e.view!==void 0&&po(e.view)===void 0&&r.push({severity:"warning",code:"bad-view",message:`${e.id}: view must be four numbers, like "0 0 24 24"`,nodeId:e.id,prop:"view"});let x=ut(c,dn(ln(e.view,i,d),l));return{kind:"vector",id:e.id,...l,d:ft(x),contours:x,fill:o(e.fill,e.id,"fill",l)??$o,stroke:o(e.stroke,e.id,"stroke",l),strokeWidth:t.values.strokeWidth??0,opacity:wn(t.values.opacity??1),rule:e.rule??"nonzero",cap:e.cap??"butt",join:e.join??"miter",clip:n,blend:e.blend??"normal",shadows:a,rotation:t.values.rotation??0}}function du(e,t,r,n,o){if(e===void 0)return;if(ce(e)){o.push({severity:"warning",code:"expression-not-supported",message:`Expressions are not supported for ${n} yet; grammar v0 is numeric only`,nodeId:r,prop:n});return}let a=t[e];if(a===void 0)return e;if(typeof a=="string")return a;o.push({severity:"error",code:"token-not-a-colour",message:`Token $${e} is a number, not a colour`,nodeId:r,prop:n})}function su(e){return{x:e.absX,y:e.absY,w:Math.max(0,e.w),h:Math.max(0,e.h)}}function hx(e,t){let r=[],n=new Map;return{paint:(a,i,d,l)=>{let c=du(a,e,i,d,t);if(c===void 0)return;let m=pn(c);if("error"in m){t.push({severity:"error",code:"invalid-paint",message:`${i}: ${m.error}`,nodeId:i,prop:d});return}if(m.kind==="solid")return c;let x=`${i}\0${d}\0${c}`,y=n.get(x);if(y!==void 0)return`url(#${y})`;let w=[...n.keys()].filter(C=>C.startsWith(`${i}\0${d}\0`)).length,P=`${iu}${i}-${d}${w===0?"":`-${w+1}`}`;n.set(x,P);let _=Ds(m.stops).map(C=>({offset:C.at,colour:fu(C.colour,e,i,d,t)}));return r.push(gx(m,P,l,xx(_))),`url(#${P})`},gradients:r}}function Cr(e,t,r,n){let o=du(e,r,t,"shadow",n);if(o===void 0)return[];let a=Sr(o);return"error"in a?(n.push({severity:"error",code:"invalid-shadow",message:`${t}: ${a.error}`,nodeId:t,prop:"shadow"}),[]):a.shadows.map(i=>({...i,colour:fu(i.colour,r,t,"shadow",n)}))}function xx(e){return e.map((t,r)=>{if(t.colour.trim().toLowerCase()!=="transparent")return t;let n=[e[r-1],e[r+1]].find(o=>o!==void 0&&o.colour.trim().toLowerCase()!=="transparent");return n===void 0?t:{offset:t.offset,colour:n.colour,opacity:0}})}function fu(e,t,r,n,o){let a=t[e];return a===void 0?e:typeof a=="string"&&!bo(a)?a:(o.push({severity:"error",code:"invalid-paint",message:`${r}: a gradient stop names $${e}, which is not a colour`,nodeId:r,prop:n}),"transparent")}function gx(e,t,r,n){if(e.kind==="linear"){let c=e.angle*Math.PI/180,m=Math.sin(c),x=-Math.cos(c),y=(Math.abs(r.w*m)+Math.abs(r.h*x))/2,w=r.x+r.w/2,P=r.y+r.h/2;return{id:t,kind:"linear",x1:Mo(w-m*y),y1:Mo(P-x*y),x2:Mo(w+m*y),y2:Mo(P+x*y),stops:n}}let o=r.x+r.w*e.cx,a=r.y+r.h*e.cy,i={x:Math.max(o-r.x,r.x+r.w-o),y:Math.max(a-r.y,r.y+r.h-a)};if(e.shape==="circle"||i.x===0||i.y===0){let c=Math.hypot(i.x,i.y);return{id:t,kind:"radial",cx:o,cy:a,rx:c,ry:c,stops:n}}let d=i.x/i.y,l=Math.hypot(i.x/d,i.y);return{id:t,kind:"radial",cx:o,cy:a,rx:l*d,ry:l,stops:n}}function Mo(e){return Math.round(e*1e6)/1e6}function wn(e){return Math.min(Math.max(e,0),1)}function yx(e,t,r,n){let o=ce(e.src)?void 0:e.src,a=o===void 0?void 0:t.assets[o];if(!a){n.push({severity:"warning",code:"missing-asset",message:`No picture for ${JSON.stringify(o??e.src)} yet: an image slot waiting for one`,nodeId:e.id,prop:"src"});return}let i=r?.(a,o);return i===void 0&&n.push({severity:"warning",code:"unresolved-asset",message:`The bytes for asset "${o}" are not available here`,nodeId:e.id,prop:"src"}),i}function Ys(e){let t=e.stops.map(n=>`<stop offset="${Z(n.offset)}" stop-color="${Oo(n.colour)}"${n.opacity===void 0?"":` stop-opacity="${Z(n.opacity)}"`}/>`).join(""),r=Oo(e.id);return e.kind==="linear"?`<linearGradient id="${r}" gradientUnits="userSpaceOnUse" x1="${Z(e.x1)}" y1="${Z(e.y1)}" x2="${Z(e.x2)}" y2="${Z(e.y2)}">${t}</linearGradient>`:`<radialGradient id="${r}" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="matrix(${Z(e.rx)} 0 0 ${Z(e.ry)} ${Z(e.cx)} ${Z(e.cy)})">${t}</radialGradient>`}var Do="vd-shadow-";function Js(e,t=!1){let r=Lo(Xs(e),e.shadows),n=2,o=[];e.shadows.forEach((i,d)=>{let l=`s${d}`,c="SourceAlpha";i.spread!==0&&(o.push(`<feMorphology in="${c}" operator="${i.spread>0?"dilate":"erode"}" radius="${Z(Math.abs(i.spread))}" result="${l}m"/>`),c=`${l}m`),i.blur>0&&(o.push(`<feGaussianBlur in="${c}" stdDeviation="${Z(i.blur/2)}" result="${l}b"/>`),c=`${l}b`),o.push(`<feOffset in="${c}" dx="${Z(i.x)}" dy="${Z(i.y)}" result="${l}o"/>`,`<feFlood flood-color="${Oo(i.colour)}" result="${l}c"/>`,`<feComposite in="${l}c" in2="${l}o" operator="in" result="${l}"/>`)});let a=e.shadows.map((i,d)=>`<feMergeNode in="s${e.shadows.length-1-d}"/>`).join("");return`<filter id="${Oo(Do+e.id)}" filterUnits="userSpaceOnUse" x="${Z(r.x-n)}" y="${Z(r.y-n)}" width="${Z(r.w+n*2)}" height="${Z(r.h+n*2)}" color-interpolation-filters="sRGB">`+o.join("")+`<feMerge>${a}${t?"":'<feMergeNode in="SourceGraphic"/>'}</feMerge></filter>`}function Zs(e){return`rotate(${Z(e.rotation)} ${Z(e.x+e.w/2)} ${Z(e.y+e.h/2)})`}function Qs(e){return e.rotation!==0&&e.clip!==void 0}function Oo(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}var wx=.8,kx=.2;function ei(e,t){let n=e.createElement("canvas").getContext("2d"),o=vn(),a=new Map,i=new Map,d=new Set;function l(m){return`${m.italic?"italic ":""}${m.weight} ${m.size}px ${m.family}`}function c(){a.clear(),i.clear()}return{advance(m,x){if(!n)return o.advance(m,x);let y=l(x),w=`${y}\0${x.letterSpacing}\0${m}`,P=a.get(w);if(P!==void 0)return P;n.font=y;let _=n.measureText(m).width+x.letterSpacing*[...m].length;return a.set(w,_),_},metrics(m){if(!n)return o.metrics(m);let x=l(m),y=i.get(x);if(y)return y;n.font=x;let w=n.measureText("Hxg"),P=w.fontBoundingBoxAscent??m.size*wx,_=w.fontBoundingBoxDescent??m.size*kx,C={ascent:P,descent:_,lineGap:0};return i.set(x,C),C},load(m,x){let y=e.fonts;if(!y||typeof FontFace!="function")return!1;let w=!1;for(let P of Object.values(m.fonts))for(let _ of Sx(P)){let C=`${P.family}\0${_.src}\0${_.weight??400}\0${_.style??"normal"}`;if(d.has(C))continue;d.add(C);let F=_.src.startsWith("data:")?void 0:x?.(_.src),N={weight:String(_.weight??400),style:_.style??"normal"},J=A=>{let D=new FontFace(P.family,typeof A=="string"?`url(${A})`:_x(A),N);y.add(D),D.load().then(()=>{c(),t?.()},()=>{y.delete(D)})};F===void 0?J(_.src):(w=!0,F.then(J,()=>{}))}return w},invalidate:c,destroy(){c(),d.clear()}}}function Sx(e){return e.faces??[]}function _x(e){return e instanceof Uint8Array?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):e}var Po={x:0,y:0,zoom:1},uu=.02,cu=64;function kn(e){return Number.isFinite(e)?Math.min(Math.max(e,uu),cu):1}function No(e,t){return{x:(t.x-e.x)/e.zoom,y:(t.y-e.y)/e.zoom}}function ti(e,t){return{x:t.x*e.zoom+e.x,y:t.y*e.zoom+e.y}}function Ro(e,t,r){let n=kn(e.zoom*r),o=No(e,t);return{zoom:n,x:t.x-o.x*n,y:t.y-o.y*n}}function Sn(e,t,r){return{...e,x:e.x+t,y:e.y+r}}function ri(e){return`translate(${e.x} ${e.y}) scale(${e.zoom})`}function Er(e,t,r){let n={width:Math.max(1,t.width-r*2),height:Math.max(1,t.height-r*2)};if(e.width<=0||e.height<=0)return Po;let o=kn(Math.min(n.width/e.width,n.height/e.height));return{zoom:o,x:(t.width-e.width*o)/2-(e.x??0)*o,y:(t.height-e.height*o)/2-(e.y??0)*o}}var te="http://www.w3.org/2000/svg",pu="vd-viewer-styles",mu=`
35
+ `}async function Ss(e){let t=await crypto.subtle.digest("SHA-256",e),r=[...new Uint8Array(t)].map(n=>n.toString(16).padStart(2,"0"));return`${Pf}${r.join("")}`}function _s(e,t){return`data:${e};base64,${t}`}function Cs(e){let t=e.toBase64;if(typeof t=="function")return t.call(e);let r="";for(let n=0;n<e.length;n+=32768)r+=String.fromCharCode(...e.subarray(n,n+32768));return btoa(r)}function Es(e){let t=Uint8Array.fromBase64;if(typeof t=="function")return t(e);let r=atob(e),n=new Uint8Array(r.length);for(let o=0;o<r.length;o+=1)n[o]=r.charCodeAt(o);return n}function am(e){if(e.startsWith(Zt))return 0;let t=e.indexOf(`
36
+ ${Zt}`);return t===-1?-1:t+1}function sm(e){let t=new Set;for(let r of e.matchAll(/sha256-[0-9a-f]{64}/g))t.add(r[0]);return t}function As(e){return(t,r,n,o)=>{e.push({severity:"error",code:r,message:`Line ${t}: ${n}`,...o===void 0?{}:{nodeId:o}})}}function Ms(e){let t=[],r=e.split(`
37
+ `);for(let n=0;n<r.length;n+=1){let o=r[n],a=o.trim();if(a===Zt)break;if(a===""||a.startsWith("```"))continue;let i=o.length-o.trimStart().length;t.push({number:n+1,indent:Math.floor(i/2),text:a,words:Tf(a)})}return t}function $s(e){let t=[],r=[],n=o=>{for(;t.length>0&&t[t.length-1].indent>=o;)lm(t.pop())};return{push(o){let a=o.words[0];if(a.startsWith('"')){let c=t[t.length-1];if(!c||c.type!=="text")return e(o.number,"invalid-content","A quoted line must sit inside a text node"),!0;let h=fm(o,e);return h!==void 0&&c.runs.push(h),!0}if(!ko(a))return!1;n(o.indent);let i=o.words[1];if(i===void 0||i.includes("="))return e(o.number,"missing-id",`A ${a} needs an id`),!0;let l=im(a,i,o.words.slice(2),o,e),d=t[t.length-1];return d?d.children.push(l.record):r.push(l.record),t.push(l),!0},finish(){return n(0),r}}}function im(e,t,r,n,o){let a={type:e,id:t},i=[];for(let l=0;l<r.length;l+=1){let{key:d,value:c}=He(r[l]),h=hs(e,d);if(h===void 0){let y=ms(r,l,r[l-1]);y?(o(n.number,"invalid-value",y.message,t),l=y.end-1):o(n.number,"invalid-value",`${e} has no property "${d}"`,t);continue}let x=Be(c??"",h);"error"in x?o(n.number,"invalid-value",`${d}: ${x.error}`,t):a[d]=x.value}return so(e)&&(a.children=i),e==="text"&&(a.content=""),{indent:n.indent,type:e,record:a,children:i,runs:[]}}function lm(e){e.type==="text"&&(e.record.content=dm(e.runs))}function dm(e){if(e.length===0)return"";let t=e[0];return e.length===1&&typeof t=="string"?t:[...e]}function fm(e,t){let r=wr(e.words[0]);if(r===void 0){t(e.number,"invalid-run","Malformed quoted string");return}if(e.words.length===1)return r;let n={text:r};for(let o of e.words.slice(1)){let{key:a,value:i}=He(o),l=pn.find(([c])=>c===a);if(!l){t(e.number,"invalid-run",`A run has no mark "${a}"`);continue}let d=Be(i??"",l[1]);"error"in d?t(e.number,"invalid-run",`${a}: ${d.error}`):n[a]=d.value}return n}function So(e){let t=[],r=As(t),n=At,o,a=!1,i={},l={},d={},c=$s(r),h,x={},y=new Map,b,P=!1,k=()=>{if(!b)return;let E=b;b=void 0;let D=y.get(E.page);if(D!==void 0){r(E.number,"invalid-motion",`motion ${E.page} is written twice \u2014 put its lines in the block on line ${D}`,E.page);return}y.set(E.page,E.number);for(let[A,G]of E.where)y.set(`${E.page} ${A}`,G);let N=ys(E);N&&(x[E.page]=N)};for(let E of Ms(e)){let D=E.words[0];if(b&&E.indent>0){gs(b,E,r);continue}if(!(P&&E.indent>0)){if(P=!1,k(),D==="motion"&&E.indent===0){h=void 0,b=xs(E,r),P=b===void 0;continue}if(D==="version"){a=!0,cm(E,t);continue}if(D==="kind"&&E.indent===0){n=pm(E,t);continue}if(D==="title"&&E.indent===0){o=Ff(E,r);continue}if(D.startsWith("$")){h=void 0,hm(E,i,r);continue}if(D==="asset"&&E.indent===0){h=void 0,mm(E,d,r);continue}if(D==="font"&&E.indent===0){h=gm(E,l,r);continue}if((D==="fallback"||D==="face")&&h){ym(D,E,h,r);continue}h=void 0,!c.push(E)&&r(E.number,"unknown-node-type",`Unknown statement "${D}"`)}}k();let _=um(c.finish(),t),B=Object.keys(x).length===0?{}:{motion:x},R=(E,D)=>y.get(D===void 0?E:`${E} ${D}`);if(!_){a||t.push({severity:"error",code:"invalid-document",message:"No nodes found"});let E=pr({id:ot,children:[]}),D=rn({kind:n,...o===void 0?{}:{title:o},tokens:i,fonts:l,assets:d,...B,root:E});return t.push(...yr(D,R)),{document:D,problems:t}}let J={version:4,kind:n,...o===void 0?{}:{title:o},tokens:i,fonts:l,assets:d,...B,root:_};return t.push(...yr(J,R)),{document:J,problems:t}}function um(e,t){let r=e[0];if(r!==void 0){if(e.length===1&&r.type==="canvas")return r;for(let n of e){if(n.type!=="canvas")continue;let o=n.id;t.push({severity:"error",code:"invalid-document",message:"A canvas must be the only top-level node",...typeof o=="string"?{nodeId:o}:{}})}return{type:"canvas",id:ot,children:[...e]}}}function cm(e,t){tn.includes(Number(e.words[1]))||t.push({severity:"warning",code:"version-mismatch",message:`Line ${e.number}: expected version ${4} or older, got ${e.words[1]??"nothing"}`})}function pm(e,t){let r=e.words[1];return r!==void 0&&jt.includes(r)?r:(t.push({severity:"error",code:"unknown-kind",message:`Line ${e.number}: unknown kind "${r??"nothing"}" \u2014 this build reads ${jt.join(", ")}`}),At)}function Ff(e,t){let r=e.words.slice(1).join(" ").trim();if(r===""){t(e.number,"invalid-value",'title needs a name, e.g. title "Pitch deck"');return}let n=r.startsWith('"')?wr(r):r;if(n===void 0){t(e.number,"invalid-value",`Could not read the title ${r}`);return}return n.trim()===""?void 0:n}function hm(e,t,r){let{name:n,value:o}=Ts(e.words);if(n===void 0||o===void 0){r(e.number,"invalid-token","Expected $name = value");return}if(!o.startsWith('"')&&/\s/.test(o)){r(e.number,"invalid-token",`$${n}: expected one value, got "${o}". Quote it if the value has spaces; there are no comments.`);return}let a=Be(o,"stringValue");if("error"in a){r(e.number,"invalid-token",`$${n}: ${a.error}`);return}if(typeof a.value!="string"){r(e.number,"invalid-token",`$${n} may not be an expression`);return}t[n]=Bf(a.value,o)}function Bf(e,t){let r=Number(e);return t.startsWith('"')||!Number.isFinite(r)||e.trim()===""?e:r}function Ts(e){let t=e[0],r=a=>a.startsWith("$")?a.slice(1):a;if(e[1]==="=")return{name:r(t),value:e.slice(2).join(" ")||void 0};let{key:n,value:o}=He(t);return o!==void 0?{name:r(n),value:o}:{name:r(t)}}function mm(e,t,r){let n=e.words.slice(1),o=n[0],a=n[1]==="=",i=o===void 0?void 0:He(o),l=i?.key,d=a?n[2]:i?.value,c=n.slice(a?3:1);if(l===void 0||l===""||d===void 0){r(e.number,"invalid-asset","Expected asset <name> = <type> hash=\u2026 bytes=\u2026");return}let h={};for(let b of c){let{key:P,value:k}=He(b);if(k===void 0){r(e.number,"invalid-asset",`Asset "${l}" has a stray word "${b}"`);continue}h[P]=xm(k)}let x=h.hash,y=Number(h.bytes);if(x===void 0||!Number.isFinite(y)){r(e.number,"invalid-asset",`Asset "${l}" needs a hash and a bytes count`);return}t[l]={type:d,hash:x,bytes:y,...h.credit===void 0?{}:{credit:h.credit},...h.source===void 0?{}:{source:h.source},...h.license===void 0?{}:{license:h.license}}}function xm(e){return e.startsWith('"')?wr(e)??e:e}function gm(e,t,r){let{name:n,value:o}=Ts(e.words.slice(1));if(n===void 0||o===void 0){r(e.number,"invalid-font","Expected font <name> = <family>");return}let a=Be(o,"string"),i={family:"error"in a?o:a.value};return t[n]=i,{family:i,faces:[]}}function ym(e,t,r,n){if(e==="fallback"){let l=Be(t.words.slice(1).join(" "),"string");"error"in l?n(t.number,"invalid-font",`fallback: ${l.error}`):r.family.fallback=l.value;return}let o=t.words[1];if(o===void 0){n(t.number,"invalid-font-face","A face needs a src");return}let a=Be(o,"string"),i={src:"error"in a?o:a.value};for(let l of t.words.slice(2)){let{key:d,value:c}=He(l);if(d!=="weight"&&d!=="style"){n(t.number,"invalid-font-face",`A face has no property "${d}"`);continue}let h=Be(c??"",d==="weight"?"number":"fontStyle");"error"in h?n(t.number,"invalid-font-face",`${d}: ${h.error}`):i[d]=h.value}r.faces.push(i),r.family.faces=r.faces}function Ds(e){let t=[],r=Ue(e);if(!r)return t.push({severity:"error",code:"invalid-document",message:"Expected an object"}),{document:rn(),problems:t};tn.includes(r.version)||t.push({severity:"warning",code:"version-mismatch",message:`Expected version ${4} or older, got ${JSON.stringify(r.version)}`});let n=Uf(r.root,t),o=vm(r.motion,t),a={version:4,kind:wm(r.kind,t),...typeof r.title=="string"&&r.title.trim()!==""?{title:r.title}:{},tokens:km(r.tokens,t),fonts:_m(r.fonts,t),assets:Sm(r.assets,t),...o===void 0?{}:{motion:o},root:n??pr({id:ot,children:[]})};return Rm(a.root,t),t.push(...yr(a)),{document:a,problems:t}}function vm(e,t){if(e===void 0)return;let r=Ue(e),n=a=>{t.push({severity:"error",code:"invalid-motion",message:a})};if(!r){n("`motion` must be an object");return}let o={};for(let[a,i]of Object.entries(r)){let l=Ue(i);if(!l||!Array.isArray(l.lines)){n(`motion ${a} must be an object with a lines array`);continue}let d=l.enter,c=l.duration;if(d!==void 0&&!mr.includes(d)){n(`motion ${a}: enter must be one of ${mr.join(", ")}`);continue}if(c!==void 0&&!Ls(c)){n(`motion ${a}: duration must be 0 to ${Gt} milliseconds`);continue}let h=l.lines.flatMap(y=>{let b=bm(y);return b===void 0&&n(`motion ${a}: a line that is not one: ${JSON.stringify(y)}`),b===void 0?[]:[b]}),x={...d===void 0?{}:{enter:d},...c===void 0?{}:{duration:c},lines:h};ft(x)||(o[a]=x)}return Object.keys(o).length===0?void 0:o}function bm(e){let t=Ue(e);if(!t||typeof t.id!="string")return;let{enter:r,exit:n,duration:o,delay:a,step:i,together:l,go:d}=t,c=x=>x===void 0||nn.includes(x);if(!c(r)||!c(n)||r!==void 0&&n!==void 0||o!==void 0&&!Ls(o)||a!==void 0&&!Ls(a)||i!==void 0&&i!==!0||l!==void 0&&l!==!0||i===!0&&l===!0||d!==void 0&&(typeof d!="string"||dt(d)===void 0))return;let h={id:t.id,...r===void 0?{}:{enter:r},...n===void 0?{}:{exit:n},...o===void 0?{}:{duration:o},...a===void 0?{}:{delay:a},...i===void 0?{}:{step:i},...l===void 0?{}:{together:l},...d===void 0?{}:{go:d}};return xr(h)?h:void 0}function Ls(e){return typeof e=="number"&&e>=0&&e<=Gt}function wm(e,t){return e==null?At:typeof e=="string"&&jt.includes(e)?e:(t.push({severity:"error",code:"unknown-kind",message:`Unknown kind ${JSON.stringify(e)} \u2014 this build reads ${jt.join(", ")}`}),At)}function km(e,t){let r={};if(e===void 0)return r;let n=Ue(e);if(!n)return t.push({severity:"error",code:"invalid-tokens",message:"`tokens` must be an object"}),r;for(let[o,a]of Object.entries(n))typeof a=="number"||typeof a=="string"?r[o]=a:t.push({severity:"error",code:"invalid-token",message:`Token $${o} must be a number or string`});return r}function Sm(e,t){let r={};if(e===void 0)return r;let n=Ue(e);if(!n)return t.push({severity:"error",code:"invalid-assets",message:"`assets` must be an object"}),r;for(let[o,a]of Object.entries(n)){let i=Ue(a);if(!i||typeof i.type!="string"||typeof i.hash!="string"||typeof i.bytes!="number"){t.push({severity:"error",code:"invalid-asset",message:`Asset "${o}" must have a "type", a "hash" and a "bytes" count`});continue}r[o]={type:i.type,hash:i.hash,bytes:i.bytes,...We(i.credit,"credit"),...We(i.source,"source"),...We(i.license,"license")}}return r}function _m(e,t){let r={};if(e===void 0)return r;let n=Ue(e);if(!n)return t.push({severity:"error",code:"invalid-fonts",message:"`fonts` must be an object"}),r;for(let[o,a]of Object.entries(n)){let i=Ue(a);if(!i||typeof i.family!="string"){t.push({severity:"error",code:"invalid-font",message:`Font "${o}" must be an object with a "family"`});continue}r[o]={family:i.family,...typeof i.fallback=="string"?{fallback:i.fallback}:{},...Cm(i.faces,o,t)}}return r}function Cm(e,t,r){if(e===void 0)return{};if(!Array.isArray(e))return r.push({severity:"error",code:"invalid-font",message:`Font "${t}" has a "faces" that is not an array`}),{};let n=[];for(let o of e){let a=Ue(o);if(!a||typeof a.src!="string"){r.push({severity:"error",code:"invalid-font-face",message:`A face of font "${t}" is missing its "src"`});continue}let i=a.style;n.push({src:a.src,...typeof a.weight=="number"?{weight:a.weight}:{},...i==="italic"||i==="normal"?{style:i}:{}})}return n.length>0?{faces:n}:{}}function Em(e,t){let r=Ue(e);if(!r){t.push({severity:"error",code:"invalid-node",message:"Expected a node object"});return}switch(r.type){case"canvas":return Uf(e,t);case"ellipse":return Lm(r,t);case"frame":return Am(r,t);case"group":return Mm(r,t);case"image":return $m(r,t);case"rect":return Tm(r,t);case"text":return Dm(r,t);case"vector":return Om(r,t);default:t.push({severity:"error",code:"unknown-node-type",message:`Unknown node type ${JSON.stringify(r.type)}`,...typeof r.id=="string"?{nodeId:r.id}:{}});return}}function Uf(e,t){let r=Ue(e);if(!r){t.push({severity:"error",code:"invalid-node",message:"`root` must be a canvas node"});return}let n=Mt(r,ot,t);return{type:"canvas",id:n,...We(r.name,"name"),...Hf(r,"w",1280,n,t),...Hf(r,"h",720,n,t),...Xe(r.background,n,"background",t),children:Ps(r.children,n,t)}}function Hf(e,t,r,n,o){return e[t]===void 0?{}:{[t]:xe(e[t],n,t,r,o)}}function Am(e,t){let r=Mt(e,"frame",t);return{type:"frame",id:r,...We(e.name,"name"),x:xe(e.x,r,"x",0,t),y:xe(e.y,r,"y",0,t),w:xe(e.w,r,"w",0,t),h:xe(e.h,r,"h",0,t),...Xe(e.background,r,"background",t),...Os(e.clip,"clip"),...Os(e.skip,"skip"),..._r(e,r,t),...Qt(e),children:Ps(e.children,r,t)}}function Mm(e,t){let r=Mt(e,"group",t);return{type:"group",id:r,...We(e.name,"name"),...Qt(e),children:Ps(e.children,r,t)}}function Ps(e,t,r){let n=[];if(Array.isArray(e))for(let o of e){let a=Em(o,r);a&&n.push(a)}else e!==void 0&&r.push({severity:"error",code:"invalid-children",message:"`children` must be an array",nodeId:t});return n}function $m(e,t){let r=Mt(e,"image",t),n=e.fit,o=Xe(e.src,r,"src",t);return{type:"image",id:r,...We(e.name,"name"),x:xe(e.x,r,"x",0,t),y:xe(e.y,r,"y",0,t),w:xe(e.w,r,"w",100,t),h:xe(e.h,r,"h",100,t),...Ce(e.rotation,r,"rotation",t),src:o.src??"",...Et.includes(n)?{fit:n}:{},...Ce(e.radius,r,"radius",t),...Ce(e.opacity,r,"opacity",t),..._r(e,r,t),...Qt(e)}}function Tm(e,t){let r=Mt(e,"rect",t);return{type:"rect",id:r,...We(e.name,"name"),x:xe(e.x,r,"x",0,t),y:xe(e.y,r,"y",0,t),w:xe(e.w,r,"w",100,t),h:xe(e.h,r,"h",100,t),...Ce(e.rotation,r,"rotation",t),...Xe(e.fill,r,"fill",t),...Xe(e.stroke,r,"stroke",t),...Ce(e.strokeWidth,r,"strokeWidth",t),...Ce(e.radius,r,"radius",t),...Ce(e.opacity,r,"opacity",t),..._r(e,r,t),...Qt(e)}}function Lm(e,t){let r=Mt(e,"ellipse",t);return{type:"ellipse",id:r,...We(e.name,"name"),x:xe(e.x,r,"x",0,t),y:xe(e.y,r,"y",0,t),w:xe(e.w,r,"w",100,t),h:xe(e.h,r,"h",100,t),...Ce(e.rotation,r,"rotation",t),...Xe(e.fill,r,"fill",t),...Xe(e.stroke,r,"stroke",t),...Ce(e.strokeWidth,r,"strokeWidth",t),...Ce(e.opacity,r,"opacity",t),..._r(e,r,t),...Qt(e)}}function Om(e,t){let r=Mt(e,"vector",t);return{type:"vector",id:r,...We(e.name,"name"),x:xe(e.x,r,"x",0,t),y:xe(e.y,r,"y",0,t),w:xe(e.w,r,"w",100,t),h:xe(e.h,r,"h",100,t),...Ce(e.rotation,r,"rotation",t),...We(e.view,"view"),d:typeof e.d=="string"?e.d:"",...Xe(e.fill,r,"fill",t),...Xe(e.stroke,r,"stroke",t),...Ce(e.strokeWidth,r,"strokeWidth",t),...Ce(e.opacity,r,"opacity",t),...Sr(e.rule,Vt,r,"rule",t),...Sr(e.cap,zt,r,"cap",t),...Sr(e.join,qt,r,"join",t),..._r(e,r,t),...Qt(e)}}function Dm(e,t){let r=Mt(e,"text",t);return{type:"text",id:r,...We(e.name,"name"),x:xe(e.x,r,"x",0,t),y:xe(e.y,r,"y",0,t),w:xe(e.w,r,"w",200,t),h:xe(e.h,r,"h",40,t),...Ce(e.rotation,r,"rotation",t),content:Pm(e.content,r,t),...Xe(e.font,r,"font",t),...Ce(e.size,r,"size",t),...Ce(e.weight,r,"weight",t),...Ce(e.lineHeight,r,"lineHeight",t),...Ce(e.letterSpacing,r,"letterSpacing",t),...Sr(e.align,_t,r,"align",t),...Sr(e.valign,Ct,r,"valign",t),...Os(e.italic,"italic"),...Xe(e.fill,r,"fill",t),...Ce(e.opacity,r,"opacity",t),..._r(e,r,t),...Qt(e)}}function Pm(e,t,r){if(e===void 0)return"";if(typeof e=="string")return e;if(!Array.isArray(e))return r.push({severity:"error",code:"invalid-content",message:`Expected a string or an array of runs for content, got ${JSON.stringify(e)}`,nodeId:t,prop:"content"}),"";let n=[];for(let o of e){if(typeof o=="string"){n.push(o);continue}let a=Ue(o);if(!a||typeof a.text!="string"){r.push({severity:"error",code:"invalid-run",message:'A text run must be a string or an object with a "text"',nodeId:t,prop:"content"});continue}n.push({text:a.text,...pt(a,"font","string"),...pt(a,"size","number"),...pt(a,"weight","number"),...pt(a,"italic","boolean"),...pt(a,"underline","boolean"),...pt(a,"strike","boolean"),...pt(a,"fill","string"),...pt(a,"letterSpacing","number"),...pt(a,"link","string")})}return n}function pt(e,t,r){let n=e[t];return typeof n!==r?{}:r==="number"&&!Number.isFinite(n)?{}:{[t]:n}}function _r(e,t,r){return{...Sr(e.blend,Ut,t,"blend",r),...Xe(e.shadow,t,"shadow",r)}}function Qt(e){return{...e.hidden===!0?{hidden:!0}:{},...e.locked===!0?{locked:!0}:{}}}function Os(e,t){return typeof e=="boolean"?{[t]:e}:{}}function Sr(e,t,r,n,o){return e===void 0?{}:typeof e=="string"&&t.includes(e)?{[n]:e}:(o.push({severity:"error",code:"invalid-value",message:`Expected one of ${t.join(", ")} for ${n}, got ${JSON.stringify(e)}`,nodeId:r,prop:n}),{})}function Mt(e,t,r){let n=e.id;return typeof n=="string"&&n.length>0?n:(r.push({severity:"error",code:"missing-id",message:`Node is missing an id; using "${t}"`}),t)}function xe(e,t,r,n,o){let a=Nm(e);return a!==void 0?a:(o.push({severity:"error",code:"invalid-value",message:`Expected a number or expression for ${r}, got ${JSON.stringify(e)}`,nodeId:t,prop:r}),n)}function Nm(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e.startsWith("="))return St(e.slice(1))}function Ce(e,t,r,n){return e===void 0?{}:{[r]:xe(e,t,r,0,n)}}function Xe(e,t,r,n){return e===void 0?{}:typeof e=="string"?{[r]:e.startsWith("=")?St(e.slice(1)):e}:(n.push({severity:"error",code:"invalid-value",message:`Expected a string for ${r}, got ${JSON.stringify(e)}`,nodeId:t,prop:r}),{})}function We(e,t){return typeof e=="string"?{[t]:e}:{}}function Rm(e,t){let r=new Set,n=o=>{r.has(o.id)&&t.push({severity:"error",code:"duplicate-id",message:`Duplicate id ${o.id}. Addresses must be unique or patches land on the wrong node.`,nodeId:o.id}),r.add(o.id),ce(o)&&o.children.forEach(n)};n(e)}function Ue(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}function _o(e){return/^\s*(linear|radial|conic|repeating-[a-z]+)-gradient\s*\(/i.test(e)}function mn(e){let t=e.trim(),r=/^([a-z-]+)-gradient\s*\(([\s\S]*)\)$/i.exec(t);if(!r)return _o(t)?{error:'A gradient needs its closing ")"'}:{kind:"solid",colour:t};let n=r[1].toLowerCase(),o=Im(r[2]).map(a=>a.trim());if(o.some(a=>a===""))return{error:"A gradient has an empty argument"};if(n==="linear"){let a=Bm(o[0]),i=zf(a===void 0?o:o.slice(1));return"error"in i?i:{kind:"linear",angle:a??180,stops:i.stops}}if(n==="radial"){let a=Um(o[0]);if(a&&"error"in a)return a;let i=zf(a?o.slice(1):o);return"error"in i?i:{kind:"radial",shape:a?.shape??"ellipse",cx:a?.cx??.5,cy:a?.cy??.5,stops:i.stops}}return{error:`${n}-gradient is not supported; use linear-gradient or radial-gradient`}}function Ns(e){let t=e.map(n=>n.at);t[0]===void 0&&(t[0]=0),t[t.length-1]===void 0&&(t[t.length-1]=1);let r=0;for(let n=0;n<t.length;n+=1){let o=t[n];o!==void 0&&(r=Math.max(r,o),t[n]=r)}for(let n=1;n<t.length;n+=1){if(t[n]!==void 0)continue;let o=n-1,a=n;for(;t[a]===void 0;)a+=1;let i=t[o],l=t[a];for(let d=n;d<a;d+=1)t[d]=i+(l-i)*(d-o)/(a-o);n=a}return e.map((n,o)=>({colour:n.colour,at:t[o]}))}function Im(e){let t=[],r=0,n=0;for(let o=0;o<e.length;o+=1){let a=e[o];a==="("?r+=1:a===")"?r=Math.max(0,r-1):a===","&&r===0&&(t.push(e.slice(n,o)),n=o+1)}return t.push(e.slice(n)),t}var Fm={top:[0,-1],bottom:[0,1],left:[-1,0],right:[1,0]};function Bm(e){let t=/^(-?\d*\.?\d+)(deg|turn|rad)$/i.exec(e);if(t){let a=Number(t[1]),i=t[2].toLowerCase();return i==="turn"?a*360:i==="rad"?a*180/Math.PI:a}let r=/^to\s+([a-z]+)(?:\s+([a-z]+))?$/i.exec(e);if(!r)return;let n=0,o=0;for(let a of[r[1],r[2]]){if(a===void 0)continue;let i=Fm[a.toLowerCase()];if(!i)return;n+=i[0],o+=i[1]}return(Math.atan2(n,-o)*180/Math.PI+360)%360}var Hm={left:0,top:0,center:.5,right:1,bottom:1};function Um(e){let t=/^(circle|ellipse)?\s*(?:at\s+(\S+)(?:\s+(\S+))?)?$/i.exec(e);if(!t||t[1]===void 0&&t[2]===void 0)return;let r=t[1]?.toLowerCase();if(t[2]===void 0)return r?{shape:r}:void 0;let n=Vf(t[2]),o=t[3]===void 0?.5:Vf(t[3]);return n===void 0||o===void 0?{error:`A radial centre is two percentages or keywords, not "${e}"`}:{...r?{shape:r}:{},cx:n,cy:o}}function Vf(e){let t=Hm[e.toLowerCase()];if(t!==void 0)return t;let r=/^(-?\d*\.?\d+)%$/.exec(e);return r?Number(r[1])/100:void 0}function zf(e){if(e.length<2)return{error:"A gradient needs at least two colours"};let t=[];for(let r of e){let n=/^([\s\S]*?\S)\s+(-?\d*\.?\d+)%$/.exec(r);if(n&&Vm(n[1]))t.push({colour:n[1],at:Number(n[2])/100});else{if(/\s/.test(r.replace(/\([^)]*\)/g,"")))return{error:`"${r}" is not a colour with an optional percentage`};t.push({colour:r})}}return{stops:t}}function Vm(e){let t=0;for(let r of e)if(r==="("&&(t+=1),r===")"&&(t-=1),t<0)return!1;return t===0}function Co(e){let t=mn(e);return"error"in t?[]:t.kind==="solid"?[t.colour]:t.stops.map(r=>r.colour)}function Cr(e){let t=e.trim();if(t===""||t==="none")return{shadows:[]};let r=[];for(let n of zm(t)){let o=qm(n.trim());if(o.includes("inset"))return{error:"Inner shadows (inset) are not supported yet"};let a=[],i=[];for(let x of o){let y=/^(-?\d*\.?\d+)(px)?$/.exec(x);y&&i.length===0?a.push(Number(y[1])):i.push(x)}if(a.length<2||a.length>4)return{error:`"${n.trim()}" needs x, y, then optional blur and spread`};if(i.length!==1)return{error:`"${n.trim()}" needs one colour after its numbers`};let[l=0,d=0,c=0,h=0]=a;if(c<0)return{error:"A shadow cannot have a negative blur"};r.push({x:l,y:d,blur:c,spread:h,colour:i[0]})}return{shadows:r}}function zm(e){let t=[],r=0,n=0;for(let o=0;o<e.length;o+=1){let a=e[o];a==="("?r+=1:a===")"?r=Math.max(0,r-1):a===","&&r===0&&(t.push(e.slice(n,o)),n=o+1)}return t.push(e.slice(n)),t}function qm(e){let t=[],r=0,n="";for(let o of e){if(o==="("&&(r+=1),o===")"&&(r=Math.max(0,r-1)),/\s/.test(o)&&r===0){n!==""&&t.push(n),n="";continue}n+=o}return n!==""&&t.push(n),t}var Rs=["rect","ellipse","vector","image","text"];function Ve(e){return{x:e.x+e.w/2,y:e.y+e.h/2}}function Pe(e,t,r){if(r===0)return e;let n=r*Math.PI/180,o=Math.cos(n),a=Math.sin(n),i=e.x-t.x,l=e.y-t.y;return{x:t.x+i*o-l*a,y:t.y+i*a+l*o}}function xn(e,t,r=Ve(e)){if(t%360===0)return e;let n=[{x:e.x,y:e.y},{x:e.x+e.w,y:e.y},{x:e.x+e.w,y:e.y+e.h},{x:e.x,y:e.y+e.h}].map(d=>Pe(d,r,t)),o=n.map(d=>d.x),a=n.map(d=>d.y),i=Math.min(...o),l=Math.min(...a);return{x:i,y:l,w:Math.max(...o)-i,h:Math.max(...a)-l}}function gn(e){let t=(e%360+360)%360,r=Math.round(t*100)/100;return r===360?0:r}var Is=["x","y","w","h","left","right","top","bottom","cx","cy"];function yn(e){return Is.includes(e)}var Fs=["parent","prev","next","self","root"];function Bs(e){return Fs.includes(e)}var Te=class extends Error{position;constructor(t,r){super(t),this.position=r,this.name="ExprSyntaxError"}},jf=/[A-Za-z_]/,Hs=/[A-Za-z0-9_]/;function Us(e){let t=[],r=0,n=()=>{if(!jf.test(e[r]??""))throw new Te(`Expected a name at position ${r}`,r);let i=r;for(;r<e.length&&Hs.test(e[r]??"");)r++;return e.slice(i,r)},o=()=>{if(!Hs.test(e[r]??""))throw new Te(`Expected a name at position ${r}`,r);let i=r;for(;r<e.length&&Hs.test(e[r]??"");)r++;return e.slice(i,r)},a=()=>{let i=[n()];for(;e[r]===".";)r++,i.push(o());return i};for(;r<e.length;){let i=e[r]??"";if(/\s/.test(i)){r++;continue}if(/[0-9]/.test(i)){let l=r;for(;r<e.length&&/[0-9]/.test(e[r]??"");)r++;if(e[r]==="."&&/[0-9]/.test(e[r+1]??""))for(r++;r<e.length&&/[0-9]/.test(e[r]??"");)r++;let d=e.slice(l,r),c=Number(d);if(!Number.isFinite(c))throw new Te(`Bad number "${d}"`,l);e[r]==="%"?(r++,t.push({type:"percent",value:c})):t.push({type:"number",value:c});continue}if(i==="$"){r++,t.push({type:"token",name:n()});continue}if(i==="@"){r++,t.push({type:"ref",path:a()});continue}if(jf.test(i)){t.push({type:"word",path:a()});continue}if("+-*/()".includes(i)){r++,t.push({type:"op",value:i});continue}throw new Te(`Unexpected character "${i}" at position ${r}`,r)}return t.push({type:"eof"}),t}var Wm={"+":1,"-":1,"*":2,"/":2};function Ze(e){try{let t=Us(e),r=new Vs(t),n=r.parseBinary(0);return r.expectEof(),{ok:!0,ast:n}}catch(t){if(t instanceof Te)return{ok:!1,message:t.message};throw t}}var Vs=class{tokens;index=0;constructor(t){this.tokens=t}peek(){return this.tokens[this.index]??{type:"eof"}}next(){let t=this.peek();return this.index++,t}expectEof(){if(this.peek().type!=="eof")throw new Te("Unexpected trailing input",this.index)}parseBinary(t){let r=this.parseUnary();for(;;){let n=this.peek();if(n.type!=="op"||!Xm(n.value))break;let o=Wm[n.value];if(o<t)break;this.next();let a=this.parseBinary(o+1);r={kind:"binary",op:n.value,left:r,right:a}}return r}parseUnary(){let t=this.peek();return t.type==="op"&&(t.value==="-"||t.value==="+")?(this.next(),{kind:"unary",op:t.value,operand:this.parseUnary()}):this.parsePrimary()}parsePrimary(){let t=this.next();switch(t.type){case"number":return{kind:"number",value:t.value};case"percent":return{kind:"percent",value:t.value};case"token":return{kind:"token",name:t.name};case"ref":{if(t.path.length<2)throw new Te(`@${t.path.join(".")} needs an edge, for example @${t.path.join(".")}.right`,this.index);return{kind:"nodeRef",path:t.path}}case"word":{let[r,n,...o]=t.path;if(r===void 0||!Bs(r))throw new Te(`Unknown name "${t.path.join(".")}". Use $token for a token or @id.edge for a node.`,this.index);if(n===void 0||!yn(n)||o.length>0)throw new Te(`${r} needs an edge, for example ${r}.w`,this.index);return{kind:"relRef",word:r,edge:n}}case"op":{if(t.value==="("){let r=this.parseBinary(0),n=this.next();if(n.type!=="op"||n.value!==")")throw new Te("Missing closing parenthesis",this.index);return r}throw new Te(`Unexpected "${t.value}"`,this.index)}case"eof":throw new Te("Unexpected end of expression",this.index)}}};function Xm(e){return e==="+"||e==="-"||e==="*"||e==="/"}var Kf={"+":1,"-":1,"*":2,"/":2},Gf=3,Ym=4;function Jm(e){return e.kind==="binary"?Kf[e.op]??1:e.kind==="unary"?Gf:Ym}function vn(e){return Eo(e,0)}function Eo(e,t){let r=Zm(e);return Jm(e)<t?`(${r})`:r}function Zm(e){switch(e.kind){case"number":return ee(e.value);case"percent":return`${ee(e.value)}%`;case"token":return`$${e.name}`;case"nodeRef":return`@${e.path.join(".")}`;case"relRef":return`${e.word}.${e.edge}`;case"unary":return`${e.op}${Eo(e.operand,Gf)}`;case"binary":{let t=Kf[e.op]??1;return`${Eo(e.left,t)} ${e.op} ${Eo(e.right,t+1)}`}}}function zs(e){return e.slice(0,-1).join(".")}function $t(e,t){switch(e.kind){case"nodeRef":{let r=e.path[e.path.length-1],n=t(zs(e.path));return r===void 0||n===void 0?e:{kind:"nodeRef",path:[...n.split("."),r]}}case"unary":return{...e,operand:$t(e.operand,t)};case"binary":return{...e,left:$t(e.left,t),right:$t(e.right,t)};default:return e}}function er(e){let t=new Set,r=new Set,n=o=>{switch(o.kind){case"nodeRef":t.add(zs(o.path));return;case"token":r.add(o.name);return;case"unary":n(o.operand);return;case"binary":n(o.left),n(o.right);return;default:return}};return n(e),{nodes:[...t],tokens:[...r]}}function Oe(e,t){return`${e} ${t}`}function qs(e){switch(e){case"x":case"left":return["x"];case"y":case"top":return["y"];case"w":return["w"];case"h":return["h"];case"right":case"cx":return["x","w"];case"bottom":case"cy":return["y","h"]}}function Ao(e,t,r,n,o){switch(e){case"x":case"left":return t;case"y":case"top":return r;case"w":return n;case"h":return o;case"right":return t+n;case"bottom":return r+o;case"cx":return t+n/2;case"cy":return r+o/2}}function js(e){switch(e){case"x":case"left":case"right":case"cx":return"x";case"y":case"top":case"bottom":case"cy":return"y";case"w":case"h":return}}function Ks(e,t,r){let n=x=>{let y=[];for(let b=r.parentOf.get(x);b!==void 0;b=r.parentOf.get(b))y.push(b);return y},o=n(e),a=n(t),i=new Set(a),l=o.find(x=>i.has(x)),d=x=>l===void 0?x:x.slice(0,x.indexOf(l)),c=new Map([[e,1]]),h=(x,y)=>{let b=(c.get(x)??0)+y;b===0?c.delete(x):c.set(x,b)};for(let x of d(o))h(x,1);for(let x of d(a))h(x,-1);return c}function Gs(e){switch(e){case"right":case"bottom":return 1;case"cx":case"cy":return .5;default:return 0}}function Mo(e){if(e==="x"||e==="w")return"w";if(e==="y"||e==="h")return"h"}function bn(e){let t=new Map,r=new Map,n=new Map,o=new Map,a=[];oe(e.root,(h,x)=>{t.has(h.id)||t.set(h.id,h),a.push(h),x&&r.set(h.id,x.id),ce(h)&&h.children.forEach((y,b)=>{let P=h.children[b-1],k=h.children[b+1];P&&n.set(y.id,P.id),k&&o.set(y.id,k.id)})});let i=new Map;for(let h of a){let x=r.get(h.id);for(;x!==void 0;){let y=t.get(x);if(!y||!Se(y))break;x=r.get(x)}x!==void 0&&i.set(h.id,x)}let l=new Map,d=new Map,c=h=>{if(ce(h)){if(!Se(h)){let x=Wf(h);x.forEach((y,b)=>{let P=x[b-1],k=x[b+1];P&&l.set(y.id,P.id),k&&d.set(y.id,k.id)})}for(let x of h.children)c(x)}};return c(e.root),{rootId:e.root.id,byId:t,parentOf:r,prevOf:n,nextOf:o,layoutParentOf:i,layoutPrevOf:l,layoutNextOf:d,order:a}}function Wf(e){let t=[];for(let r of e.children)ce(r)&&Se(r)?t.push(...Wf(r)):t.push(r);return t}function $o(e,t,r){if(e.kind==="relRef"){let a=Qm(e.word,t,r);return a===void 0?{ok:!1,message:`${t} has no ${e.word}`}:{ok:!0,nodeId:a,edge:e.edge}}let n=e.path[e.path.length-1]??"",o=e.path.slice(0,-1).join(".");return yn(n)?r.byId.has(o)?{ok:!0,nodeId:o,edge:n}:{ok:!1,message:`No node @${o}`}:{ok:!1,message:`"${n}" is not an edge of @${o}`}}function Qm(e,t,r){switch(e){case"self":return t;case"root":return r.rootId;case"parent":return r.layoutParentOf.get(t);case"prev":return r.layoutPrevOf.get(t);case"next":return r.layoutNextOf.get(t)}}function Ae(e){let t=[],r=bn(e),n=Xf(r),o=new Set;Yf(n,t),Jf(n,e,r,o,t);let a=ex(n);tx(n,a,t);let i=rx(n,a,e,r,o,t);return{nodes:ox(e.root,i,n,t),problems:t}}function Er(e){let t=bn(e),r=Xf(t),n=[];Yf(r,n),Jf(r,e,t,new Set,n);let o=new Map;for(let a of r.values())for(let i of a.deps){let l=o.get(i),d={nodeId:a.nodeId,prop:a.prop};l?l.push(d):o.set(i,[d])}return o}function Xf(e){let t=new Map;for(let r of e.order){let n=r;for(let o of rt(r)){let a=n[o];a!==void 0&&t.set(Oe(r.id,o),{nodeId:r.id,prop:o,value:a,deps:[]})}}return t}function Yf(e,t){for(let r of e.values()){if(!pe(r.value))continue;let n=Ze(r.value.expr);if(n.ok){r.ast=n.ast;continue}t.push({severity:"error",code:"expression-syntax",message:n.message,nodeId:r.nodeId,prop:r.prop})}}function Jf(e,t,r,n,o){for(let a of e.values()){if(!a.ast)continue;let i=new Set,l=d=>{switch(d.kind){case"number":return;case"token":{let c=t.tokens[d.name];typeof c!="number"&&o.push({severity:"error",code:c===void 0?"unknown-token":"token-not-a-number",message:c===void 0?`Unknown token $${d.name}`:`Token $${d.name} is not a number`,nodeId:a.nodeId,prop:a.prop});return}case"percent":{let c=Mo(a.prop);if(!c)return;let h=r.layoutParentOf.get(a.nodeId),x=h===void 0?void 0:Oe(h,c);if(x===void 0||!e.has(x)){o.push({severity:"error",code:"percent-without-parent",message:`${a.nodeId}.${a.prop} uses a percentage but has no parent to measure against`,nodeId:a.nodeId,prop:a.prop});return}i.add(x);return}case"nodeRef":case"relRef":{let c=$o(d,a.nodeId,r);if(!c.ok){n.add(d),o.push({severity:"error",code:"unknown-reference",message:c.message,nodeId:a.nodeId,prop:a.prop});return}let h=y=>{e.has(y)&&i.add(y)},x=js(c.edge);if(!x){for(let y of qs(c.edge))h(Oe(c.nodeId,y));return}for(let y of Ks(c.nodeId,a.nodeId,r).keys())h(Oe(y,x));Gs(c.edge)!==0&&h(Oe(c.nodeId,x==="x"?"w":"h"));return}case"unary":l(d.operand);return;case"binary":l(d.left),l(d.right);return}};l(a.ast),a.deps=[...i]}}function ex(e){let t=new Map,r=new Map;for(let[a,i]of e){t.set(a,i.deps.length);for(let l of i.deps){let d=r.get(l);d?d.push(a):r.set(l,[a])}}let n=[];for(let[a,i]of t)i===0&&n.push(a);let o=[];for(let a=0;a<n.length;a++){let i=n[a];o.push(i);for(let l of r.get(i)??[]){let d=(t.get(l)??0)-1;t.set(l,d),d===0&&n.push(l)}}return o}function tx(e,t,r){if(t.length===e.size)return;let n=new Set(t);for(let[o,a]of e)n.has(o)||r.push({severity:"error",code:"cycle",message:`${a.nodeId}.${a.prop} is part of a dependency cycle`,nodeId:a.nodeId,prop:a.prop})}function rx(e,t,r,n,o,a){let i=new Map,l=(d,c)=>i.get(Oe(d,c))??0;for(let d of t){let c=e.get(d);if(c){if(!pe(c.value)){i.set(d,c.value);continue}if(!c.ast){i.set(d,0);continue}i.set(d,Zf(c.ast,c,r,n,o,a,l))}}return i}function Zf(e,t,r,n,o,a,i){let l=d=>Zf(d,t,r,n,o,a,i);switch(e.kind){case"number":return e.value;case"token":{let d=r.tokens[e.name];return typeof d=="number"?d:0}case"percent":{let d=Mo(t.prop);if(!d)return e.value/100;let c=n.layoutParentOf.get(t.nodeId);return c===void 0?0:e.value/100*i(c,d)}case"nodeRef":case"relRef":{if(o.has(e))return 0;let d=$o(e,t.nodeId,n);if(!d.ok)return 0;let c=js(d.edge);if(!c)return Ao(d.edge,i(d.nodeId,"x"),i(d.nodeId,"y"),i(d.nodeId,"w"),i(d.nodeId,"h"));let h=Gs(d.edge)*i(d.nodeId,c==="x"?"w":"h");for(let[x,y]of Ks(d.nodeId,t.nodeId,n))h+=y*i(x,c);return h}case"unary":{let d=l(e.operand);return e.op==="-"?-d:d}case"binary":{let d=l(e.left),c=l(e.right);if(e.op==="/"&&c===0)return a.push({severity:"error",code:"divide-by-zero",message:`${t.nodeId}.${t.prop} divides by zero`,nodeId:t.nodeId,prop:t.prop}),0;let h=nx(e.op,d,c);return Number.isFinite(h)?h:(a.push({severity:"error",code:"not-a-number",message:`${t.nodeId}.${t.prop} did not produce a finite number`,nodeId:t.nodeId,prop:t.prop}),0)}}}function nx(e,t,r){switch(e){case"+":return t+r;case"-":return t-r;case"*":return t*r;case"/":return t/r}}function ox(e,t,r,n){let o=new Map,a=(l,d)=>t.get(Oe(l,d))??0,i=(l,d,c)=>{let h=a(l.id,"x"),x=a(l.id,"y"),y=a(l.id,"w"),b=a(l.id,"h"),P={};for(let B of rt(l)){let R=Oe(l.id,B);r.has(R)&&(P[B]=t.get(R)??0)}(y<0||b<0)&&n.push({severity:"warning",code:"negative-size",message:`${l.id} resolved to a negative size`,nodeId:l.id});let k=d+h,_=c+x;if(o.set(l.id,{id:l.id,type:l.type,x:h,y:x,w:y,h:b,left:h,top:x,right:h+y,bottom:x+b,cx:h+y/2,cy:x+b/2,absX:k,absY:_,values:P}),ce(l))for(let B of l.children)i(B,k,_)};return i(e,0,0),o}function To(e){if(!pe(e))return{kind:"literal",value:e};let t=Ze(e.expr);return t.ok?t.ast.kind==="number"?{kind:"literal",value:t.ast.value}:t.ast.kind==="token"?{kind:"token",name:t.ast.name}:{kind:"complex",source:e.expr,ast:t.ast}:{kind:"complex",source:e.expr,error:t.message}}var eu="system-ui, -apple-system, Segoe UI, Roboto, sans-serif",tu=16,ru=400,nu=1.2,Lo="#0F172A";function wn(){return{advance(e,t){return e.length*(t.size*.5+t.letterSpacing)},metrics(e){return{ascent:e.size*.8,descent:e.size*.2,lineGap:0}}}}function Ws(e,t){if(e===void 0)return eu;let r=t[e];return r?r.fallback?`${Qf(r.family)}, ${r.fallback}`:Qf(r.family):e}function Qf(e){return/^[A-Za-z][A-Za-z0-9 -]*$/.test(e)?e:JSON.stringify(e)}function ou(e,t,r,n){let o={family:Ws(t.font,r),size:t.size,weight:t.weight,italic:t.italic,underline:!1,strike:!1,fill:n(t.fill),letterSpacing:t.letterSpacing},a=typeof e=="string"?[e]:e,i=[];for(let l of a){if(typeof l=="string"){l.length>0&&i.push({text:l,style:o});continue}let d=l;d.text.length!==0&&i.push({text:d.text,style:{family:d.font===void 0?o.family:Ws(d.font,r),size:d.size??o.size,weight:d.weight??o.weight,italic:d.italic??o.italic,underline:d.underline??!1,strike:d.strike??!1,fill:d.fill===void 0?o.fill:n(d.fill),letterSpacing:d.letterSpacing??o.letterSpacing,...d.link!==void 0&&Je(d.link)?{link:d.link}:{}}})}return i}function ax(e,t){let r=[];for(let n of e)for(let o of n.text.split(/(\n)/))if(o!==""){if(o===`
38
+ `){let a=r[r.length-1];a&&!a.hardBreak?r[r.length-1]={...a,hardBreak:!0}:r.push({text:"",style:n.style,w:0,hardBreak:!0});continue}for(let a of o.match(/\S+\s*|\s+/g)??[])r.push({text:a,style:n.style,w:t.advance(a,n.style),hardBreak:!1})}return r}function sx(e,t,r){let n=[...e.text],o=[],a="";for(let i of n){let l=a+i;if(a!==""&&r.advance(l,e.style)>t){o.push({text:a,style:e.style,w:r.advance(a,e.style),hardBreak:!1}),a=i;continue}a=l}return a!==""&&o.push({text:a,style:e.style,w:r.advance(a,e.style),hardBreak:e.hardBreak}),o.length>0?o:[e]}function au(e,t){let{width:r,measure:n}=t,o=ax(n.itemize?e.flatMap(c=>n.itemize?.(c)??[c]):e,n);if(o.length===0){let c=e[0]?.style,h=c?t.lineHeight*c.size:0;return{lines:c?[ix(c,t.lineHeight)]:[],width:0,height:h}}let a=[],i=[],l=0,d=()=>{a.push(i),i=[],l=0};for(let c of o){let h=i.length===0&&c.w>r&&r>0?sx(c,r,n):[c];for(let x of h){let y=x.text.trimEnd(),b=y===x.text?x.w:n.advance(y,x.style);i.length>0&&l+b>r&&d(),i.push(x),l+=x.w,x.hardBreak&&d()}}return i.length>0&&a.push(i),lx(a,t)}function ix(e,t){let r=t*e.size;return{y:0,h:r,baseline:r*.8,w:0,spans:[]}}function lx(e,t){let r=[],n=0,o=0;return e.forEach((a,i)=>{let l=a.map(A=>A.style.size),d=Math.max(...l,0),c=t.lineHeight*d,h=a.map(A=>t.measure.metrics(A.style)),x=Math.max(...h.map(A=>A.ascent),0),y=Math.max(...h.map(A=>A.descent),0),b=n+(c-(x+y))/2+x,P=dx(a,t.measure),k=P.reduce((A,G)=>A+G.w,0);o=Math.max(o,k);let _=i===e.length-1||(a[a.length-1]?.hardBreak??!1),B=t.align==="justify"&&!_&&P.length>1,R=Math.max(0,t.width-k),J=t.align==="center"?R/2:t.align==="right"?R:0,E=B?R/(P.length-1):0,D=[],N=J;P.forEach((A,G)=>{D.push({text:A.text,style:A.style,x:N,w:A.w}),N+=A.w+(G<P.length-1?E:0)}),r.push({y:n,h:c,baseline:b,w:k,spans:fx(D,B)}),n+=c}),{lines:r,width:o,height:n}}function dx(e,t){let r=[...e];for(;r.length>0;){let n=r[r.length-1],o=n.text.trimEnd();if(o===n.text)break;if(o===""){r.pop();continue}r[r.length-1]={...n,text:o,w:t.advance(o,n.style)};break}return r}function fx(e,t){if(t)return[...e];let r=[];for(let n of e){let o=r[r.length-1];if(o&&su(o.style,n.style)&&Math.abs(o.x+o.w-n.x)<.01){r[r.length-1]={...o,text:o.text+n.text,w:o.w+n.w};continue}r.push(n)}return r}function su(e,t){return e.family===t.family&&e.size===t.size&&e.weight===t.weight&&e.italic===t.italic&&e.underline===t.underline&&e.strike===t.strike&&e.fill===t.fill&&e.letterSpacing===t.letterSpacing&&e.link===t.link}function Xs(e,t,r,n,o,a){let i={size:t.size??tu,weight:t.weight??ru,lineHeight:t.lineHeight??nu,letterSpacing:t.letterSpacing??0,italic:e.italic??!1,font:typeof e.font=="string"?e.font:void 0,fill:typeof e.fill=="string"?e.fill:Lo};return au(ou(e.content,i,n,o),{width:r,align:e.align??"left",lineHeight:i.lineHeight,measure:a})}function Ys(e,t,r){let n=t-r;return e.valign==="middle"?n/2:e.valign==="bottom"?n:0}function Js(e){switch(e.kind){case"text":{let t=Math.max(e.w,...e.lines.map(n=>n.w)),r=Math.max(e.y+e.h,...e.lines.map(n=>n.y+n.h));return{x:e.x,y:e.y,w:t,h:r-e.y}}case"vector":{let t=Xt(e.contours)??{x:e.x,y:e.y,w:e.w,h:e.h},r=e.stroke!==void 0?e.strokeWidth*2:0;return{x:t.x-r,y:t.y-r,w:t.w+r*2,h:t.h+r*2}}case"rect":case"ellipse":{let t=e.stroke!==void 0?e.strokeWidth/2:0;return{x:e.x-t,y:e.y-t,w:e.w+t*2,h:e.h+t*2}}case"frame":case"image":return{x:e.x,y:e.y,w:e.w,h:e.h}}}function Po(e,t){let r=e.x,n=e.y,o=e.x+e.w,a=e.y+e.h;for(let i of t){let l=i.spread+i.blur;r=Math.min(r,e.x+i.x-l),n=Math.min(n,e.y+i.y-l),o=Math.max(o,e.x+e.w+i.x+l),a=Math.max(a,e.y+e.h+i.y+l)}return{x:r,y:n,w:o-r,h:a-n}}var du="vd-paint-";var Do="#CBD5E1",fu="#FFFFFF";function _n(e,t,r={}){let n=[...t.problems],o=[],a=[],i=r.measure??wn(),l=yx(e.tokens,n),d=l.paint,c=new Map;oe(e.root,(k,_)=>{if("hidden"in k&&k.hidden===!0)return!1;let B=_?c.get(_.id):void 0,R=t.nodes.get(k.id);if(!R){c.set(k.id,B);return}if(k.type==="frame"){k.skip===!0&&_!==e.root&&n.push({severity:"warning",code:"skip-not-a-page",message:`${k.id}: skip only applies to a page, a frame at the top level`,nodeId:k.id,prop:"skip"});let E={x:R.absX,y:R.absY,w:Math.max(0,R.w),h:Math.max(0,R.h)};c.set(k.id,k.clip===!0?k.id:B),k.clip===!0&&a.push({id:k.id,...E,parent:B}),o.push({kind:"frame",id:k.id,...E,background:d(k.background,k.id,"background",E),clip:B,blend:k.blend??"normal",shadows:Ar(k.shadow,k.id,e.tokens,n),rotation:0});return}if(c.set(k.id,B),k.type==="text"){o.push(cx(k,R,e,i,n,B,d));return}if(k.type==="image"){o.push({kind:"image",id:k.id,x:R.absX,y:R.absY,w:Math.max(0,R.w),h:Math.max(0,R.h),href:wx(k,e,r.resolveAsset,n),fit:k.fit??"fill",radius:Math.max(0,R.values.radius??0),opacity:Sn(R.values.opacity??1),clip:B,blend:k.blend??"normal",shadows:Ar(k.shadow,k.id,e.tokens,n),rotation:R.values.rotation??0});return}if(k.type==="ellipse"){let E=lu(R);o.push({kind:"ellipse",id:k.id,...E,fill:d(k.fill,k.id,"fill",E)??Do,stroke:d(k.stroke,k.id,"stroke",E),strokeWidth:R.values.strokeWidth??0,opacity:Sn(R.values.opacity??1),clip:B,blend:k.blend??"normal",shadows:Ar(k.shadow,k.id,e.tokens,n),rotation:R.values.rotation??0});return}if(k.type==="vector"){o.push(gx(k,R,n,B,d,Ar(k.shadow,k.id,e.tokens,n)));return}if(k.type!=="rect")return;let J=lu(R);o.push({kind:"rect",id:k.id,...J,fill:d(k.fill,k.id,"fill",J)??Do,stroke:d(k.stroke,k.id,"stroke",J),strokeWidth:R.values.strokeWidth??0,radius:Math.max(0,R.values.radius??0),opacity:Sn(R.values.opacity??1),clip:B,blend:k.blend??"normal",shadows:Ar(k.shadow,k.id,e.tokens,n),rotation:R.values.rotation??0})});let h=t.nodes.get(e.root.id),x=e.root.w!==void 0&&e.root.h!==void 0,y=x?{x:0,y:0,width:Math.max(0,h?.w??0),height:Math.max(0,h?.h??0)}:ux(o,a),b={x:y.x,y:y.y,w:y.width,h:y.height},P=d(e.root.background,e.root.id,"background",b);return{...y,background:x?P??fu:P,items:o,clips:a,gradients:l.gradients,problems:n}}function ux(e,t){let r=new Map;for(let l of t){let d=l.parent===void 0?void 0:r.get(l.parent);r.set(l.id,d?iu(l,d):l)}let n=1/0,o=1/0,a=-1/0,i=-1/0;for(let l of e){let d=l.kind==="text"?Math.max(l.h,l.height):l.h,c=l.clip===void 0?void 0:r.get(l.clip),h=xn(Po({x:l.x,y:l.y,w:l.w,h:d},l.shadows),l.rotation,Ve(l)),x=c?iu(h,c):h;x.w<=0||x.h<=0||(n=Math.min(n,x.x),o=Math.min(o,x.y),a=Math.max(a,x.x+x.w),i=Math.max(i,x.y+x.h))}return Number.isFinite(n)?{x:n,y:o,width:a-n,height:i-o}:{x:0,y:0,width:0,height:0}}function iu(e,t){let r=Math.max(e.x,t.x),n=Math.max(e.y,t.y);return{x:r,y:n,w:Math.min(e.x+e.w,t.x+t.w)-r,h:Math.min(e.y+e.h,t.y+t.h)-n}}function cx(e,t,r,n,o,a,i){let l=Math.max(0,t.w),d=Math.max(0,t.h),c={x:t.absX,y:t.absY,w:l,h:d},h=Xs(e,t.values,l,r.fonts,y=>i(y,e.id,"fill",c)??Lo,n);h.height>d+.5&&o.push({severity:"warning",code:"text-overflow",message:`${e.id} needs ${Math.ceil(h.height)}px but its height is ${Math.round(d)}px`,nodeId:e.id,prop:"h"}),px(e,r,o);let x=t.absY+Ys(e,d,h.height);return{kind:"text",id:e.id,x:t.absX,y:t.absY,w:l,h:d,clip:a,blend:e.blend??"normal",shadows:Ar(e.shadow,e.id,r.tokens,o),rotation:t.values.rotation??0,opacity:Sn(t.values.opacity??1),height:h.height,lines:h.lines.map(y=>({y:x+y.y,h:y.h,baseline:x+y.baseline,w:y.w,spans:y.spans.map(b=>({text:b.text,x:t.absX+b.x,y:x+y.baseline,w:b.w,style:b.style}))}))}}function px(e,t,r){if(typeof e.content!="string")for(let n of e.content){if(typeof n=="string"||n.link===void 0)continue;let o=Je(n.link);if(!o){r.push({severity:"warning",code:"invalid-link",message:`${e.id}: links go to https:, mailto: or #<frame>, not ${JSON.stringify(n.link)}`,nodeId:e.id,prop:"content"});continue}o.kind==="frame"&&!hx(t,o.id)&&r.push({severity:"warning",code:"link-target-missing",message:`${e.id}: links to #${o.id}, which is not a frame`,nodeId:e.id,prop:"content"})}}function hx(e,t){let r=!1;return oe(e.root,n=>{if(r)return!1;n.id===t&&n.type==="frame"&&(r=!0)}),r}var kn=new Map,mx=512;function xx(e){let t=kn.get(e);if(t)return t;let r=sn(e);return kn.size>=mx&&kn.delete(kn.keys().next().value),kn.set(e,r),r}function gx(e,t,r,n,o,a){let i=Math.max(0,t.w),l=Math.max(0,t.h),d={x:t.absX,y:t.absY,w:i,h:l},{contours:c,error:h}=xx(e.d);h!==void 0&&r.push({severity:"error",code:"bad-path",message:`${e.id}: ${h}`,nodeId:e.id,prop:"d"}),e.view!==void 0&&go(e.view)===void 0&&r.push({severity:"warning",code:"bad-view",message:`${e.id}: view must be four numbers, like "0 0 24 24"`,nodeId:e.id,prop:"view"});let x=ct(c,un(fn(e.view,i,l),d));return{kind:"vector",id:e.id,...d,d:ut(x),contours:x,fill:o(e.fill,e.id,"fill",d)??Do,stroke:o(e.stroke,e.id,"stroke",d),strokeWidth:t.values.strokeWidth??0,opacity:Sn(t.values.opacity??1),rule:e.rule??"nonzero",cap:e.cap??"butt",join:e.join??"miter",clip:n,blend:e.blend??"normal",shadows:a,rotation:t.values.rotation??0}}function uu(e,t,r,n,o){if(e===void 0)return;if(pe(e)){o.push({severity:"warning",code:"expression-not-supported",message:`Expressions are not supported for ${n} yet; grammar v0 is numeric only`,nodeId:r,prop:n});return}let a=t[e];if(a===void 0)return e;if(typeof a=="string")return a;o.push({severity:"error",code:"token-not-a-colour",message:`Token $${e} is a number, not a colour`,nodeId:r,prop:n})}function lu(e){return{x:e.absX,y:e.absY,w:Math.max(0,e.w),h:Math.max(0,e.h)}}function yx(e,t){let r=[],n=new Map;return{paint:(a,i,l,d)=>{let c=uu(a,e,i,l,t);if(c===void 0)return;let h=mn(c);if("error"in h){t.push({severity:"error",code:"invalid-paint",message:`${i}: ${h.error}`,nodeId:i,prop:l});return}if(h.kind==="solid")return c;let x=`${i}\0${l}\0${c}`,y=n.get(x);if(y!==void 0)return`url(#${y})`;let b=[...n.keys()].filter(_=>_.startsWith(`${i}\0${l}\0`)).length,P=`${du}${i}-${l}${b===0?"":`-${b+1}`}`;n.set(x,P);let k=Ns(h.stops).map(_=>({offset:_.at,colour:cu(_.colour,e,i,l,t)}));return r.push(bx(h,P,d,vx(k))),`url(#${P})`},gradients:r}}function Ar(e,t,r,n){let o=uu(e,r,t,"shadow",n);if(o===void 0)return[];let a=Cr(o);return"error"in a?(n.push({severity:"error",code:"invalid-shadow",message:`${t}: ${a.error}`,nodeId:t,prop:"shadow"}),[]):a.shadows.map(i=>({...i,colour:cu(i.colour,r,t,"shadow",n)}))}function vx(e){return e.map((t,r)=>{if(t.colour.trim().toLowerCase()!=="transparent")return t;let n=[e[r-1],e[r+1]].find(o=>o!==void 0&&o.colour.trim().toLowerCase()!=="transparent");return n===void 0?t:{offset:t.offset,colour:n.colour,opacity:0}})}function cu(e,t,r,n,o){let a=t[e];return a===void 0?e:typeof a=="string"&&!_o(a)?a:(o.push({severity:"error",code:"invalid-paint",message:`${r}: a gradient stop names $${e}, which is not a colour`,nodeId:r,prop:n}),"transparent")}function bx(e,t,r,n){if(e.kind==="linear"){let c=e.angle*Math.PI/180,h=Math.sin(c),x=-Math.cos(c),y=(Math.abs(r.w*h)+Math.abs(r.h*x))/2,b=r.x+r.w/2,P=r.y+r.h/2;return{id:t,kind:"linear",x1:Oo(b-h*y),y1:Oo(P-x*y),x2:Oo(b+h*y),y2:Oo(P+x*y),stops:n}}let o=r.x+r.w*e.cx,a=r.y+r.h*e.cy,i={x:Math.max(o-r.x,r.x+r.w-o),y:Math.max(a-r.y,r.y+r.h-a)};if(e.shape==="circle"||i.x===0||i.y===0){let c=Math.hypot(i.x,i.y);return{id:t,kind:"radial",cx:o,cy:a,rx:c,ry:c,stops:n}}let l=i.x/i.y,d=Math.hypot(i.x/l,i.y);return{id:t,kind:"radial",cx:o,cy:a,rx:d*l,ry:d,stops:n}}function Oo(e){return Math.round(e*1e6)/1e6}function Sn(e){return Math.min(Math.max(e,0),1)}function wx(e,t,r,n){let o=pe(e.src)?void 0:e.src,a=o===void 0?void 0:t.assets[o];if(!a){n.push({severity:"warning",code:"missing-asset",message:`No picture for ${JSON.stringify(o??e.src)} yet: an image slot waiting for one`,nodeId:e.id,prop:"src"});return}let i=r?.(a,o);return i===void 0&&n.push({severity:"warning",code:"unresolved-asset",message:`The bytes for asset "${o}" are not available here`,nodeId:e.id,prop:"src"}),i}function Zs(e){return Sx(e,"")}function Sx(e,t){let r=e.stops.map(o=>`<stop offset="${ee(o.offset)}" stop-color="${No(o.colour)}"${o.opacity===void 0?"":` stop-opacity="${ee(o.opacity)}"`}/>`).join(""),n=No(t+e.id);return e.kind==="linear"?`<linearGradient id="${n}" gradientUnits="userSpaceOnUse" x1="${ee(e.x1)}" y1="${ee(e.y1)}" x2="${ee(e.x2)}" y2="${ee(e.y2)}">${r}</linearGradient>`:`<radialGradient id="${n}" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="matrix(${ee(e.rx)} 0 0 ${ee(e.ry)} ${ee(e.cx)} ${ee(e.cy)})">${r}</radialGradient>`}var Ro="vd-shadow-";function Qs(e,t=!1){return _x(e,t,"")}function _x(e,t,r){let n=Po(Js(e),e.shadows),o=2,a=[];e.shadows.forEach((l,d)=>{let c=`s${d}`,h="SourceAlpha";l.spread!==0&&(a.push(`<feMorphology in="${h}" operator="${l.spread>0?"dilate":"erode"}" radius="${ee(Math.abs(l.spread))}" result="${c}m"/>`),h=`${c}m`),l.blur>0&&(a.push(`<feGaussianBlur in="${h}" stdDeviation="${ee(l.blur/2)}" result="${c}b"/>`),h=`${c}b`),a.push(`<feOffset in="${h}" dx="${ee(l.x)}" dy="${ee(l.y)}" result="${c}o"/>`,`<feFlood flood-color="${No(l.colour)}" result="${c}c"/>`,`<feComposite in="${c}c" in2="${c}o" operator="in" result="${c}"/>`)});let i=e.shadows.map((l,d)=>`<feMergeNode in="s${e.shadows.length-1-d}"/>`).join("");return`<filter id="${No(r+Ro+e.id)}" filterUnits="userSpaceOnUse" x="${ee(n.x-o)}" y="${ee(n.y-o)}" width="${ee(n.w+o*2)}" height="${ee(n.h+o*2)}" color-interpolation-filters="sRGB">`+a.join("")+`<feMerge>${i}${t?"":'<feMergeNode in="SourceGraphic"/>'}</feMerge></filter>`}function ei(e){return`rotate(${ee(e.rotation)} ${ee(e.x+e.w/2)} ${ee(e.y+e.h/2)})`}function ti(e){return e.rotation!==0&&e.clip!==void 0}function No(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}var Ax=.8,Mx=.2;function ri(e,t){let n=e.createElement("canvas").getContext("2d"),o=wn(),a=new Map,i=new Map,l=new Set;function d(h){return`${h.italic?"italic ":""}${h.weight} ${h.size}px ${h.family}`}function c(){a.clear(),i.clear()}return{advance(h,x){if(!n)return o.advance(h,x);let y=d(x),b=`${y}\0${x.letterSpacing}\0${h}`,P=a.get(b);if(P!==void 0)return P;n.font=y;let k=n.measureText(h).width+x.letterSpacing*[...h].length;return a.set(b,k),k},metrics(h){if(!n)return o.metrics(h);let x=d(h),y=i.get(x);if(y)return y;n.font=x;let b=n.measureText("Hxg"),P=b.fontBoundingBoxAscent??h.size*Ax,k=b.fontBoundingBoxDescent??h.size*Mx,_={ascent:P,descent:k,lineGap:0};return i.set(x,_),_},load(h,x){let y=e.fonts;if(!y||typeof FontFace!="function")return!1;let b=!1;for(let P of Object.values(h.fonts))for(let k of $x(P)){let _=`${P.family}\0${k.src}\0${k.weight??400}\0${k.style??"normal"}`;if(l.has(_))continue;l.add(_);let B=k.src.startsWith("data:")?void 0:x?.(k.src),R={weight:String(k.weight??400),style:k.style??"normal"},J=E=>{let D=new FontFace(P.family,typeof E=="string"?`url(${E})`:Tx(E),R);y.add(D),D.load().then(()=>{c(),t?.()},()=>{y.delete(D)})};B===void 0?J(k.src):(b=!0,B.then(J,()=>{}))}return b},invalidate:c,destroy(){c(),l.clear()}}}function $x(e){return e.faces??[]}function Tx(e){return e instanceof Uint8Array?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):e}var Io={x:0,y:0,zoom:1},hu=.02,mu=64;function Cn(e){return Number.isFinite(e)?Math.min(Math.max(e,hu),mu):1}function Fo(e,t){return{x:(t.x-e.x)/e.zoom,y:(t.y-e.y)/e.zoom}}function ni(e,t){return{x:t.x*e.zoom+e.x,y:t.y*e.zoom+e.y}}function Bo(e,t,r){let n=Cn(e.zoom*r),o=Fo(e,t);return{zoom:n,x:t.x-o.x*n,y:t.y-o.y*n}}function Tt(e,t,r){return{...e,x:e.x+t,y:e.y+r}}function oi(e){return`translate(${e.x} ${e.y}) scale(${e.zoom})`}function Mr(e,t,r){let n={width:Math.max(1,t.width-r*2),height:Math.max(1,t.height-r*2)};if(e.width<=0||e.height<=0)return Io;let o=Cn(Math.min(n.width/e.width,n.height/e.height));return{zoom:o,x:(t.width-e.width*o)/2-(e.x??0)*o,y:(t.height-e.height*o)/2-(e.y??0)*o}}var ne="http://www.w3.org/2000/svg",xu="vd-viewer-styles",gu=`
39
39
  .vd-viewer {
40
40
  position: relative;
41
41
  overflow: hidden;
@@ -133,7 +133,7 @@ ${Yt}`);return t===-1?-1:t+1}function nh(e){let t=new Set;for(let r of e.matchAl
133
133
  .vd-viewer--interacting .vd-viewer__page {
134
134
  filter: none;
135
135
  }
136
- `;function hu(e){if(e.getElementById(pu))return;let t=e.createElement("style");t.id=pu,t.textContent=mu,e.head.appendChild(t)}function gu(e,t,r,n){return t?Ex(e,t,r,n):Cx(e,r,n)}function Cx(e,t,r){let n=ei(e,r);return{measurer:n,update:o=>{n.load(o,t)},afterPaint:()=>{},destroy:()=>n.destroy()}}var xu=new WeakMap;function Ex(e,t,r,n){let o,a,i,d=()=>{if(!o)throw new Error("canvasFonts: update() before measuring");return o};return{measurer:{advance:(c,m)=>d().measurer.advance(c,m),metrics:c=>d().measurer.metrics(c),itemize:c=>d().measurer.itemize(c)},update(c){o&&c.fonts===a||(i?.(),o?.dispose(),o=t.forDocument(c,r?{loader:r}:{}),a=c.fonts,i=o.onChange(n))},afterPaint(){let c=e.fonts;if(!o||!c||typeof FontFace!="function")return;let m=xu.get(e);m||xu.set(e,m=new Set);for(let x of o.usedFaces()){if(m.has(x.id))continue;m.add(x.id);let y=new FontFace(x.id,Ax(x.bytes),{weight:String(x.weight),style:x.style});c.add(y),y.load().catch(()=>c.delete(y))}},destroy(){i?.(),o?.dispose(),o=void 0}}}function Ax(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}var Mx=.01,$x=.004,yu=40,Lx=16;function Io(e,t){hu(e.ownerDocument);let r=t.document,n=b=>gu(e.ownerDocument,b,t.loadFont,()=>{A(r)}),o=n(t.fonts),a={advance:(b,U)=>o.measurer.advance(b,U),metrics:b=>o.measurer.metrics(b),itemize:b=>o.measurer.itemize?.(b)??[b]};o.update(r);let i=$e(r),d=()=>t.resolveAsset?{measure:a,resolveAsset:t.resolveAsset}:{measure:a},l=To(r,i,d()),c=t.camera??Po,m=t.interactive??!0,x=t.wheel??"always";e.classList.add("vd-viewer"),t.surface&&(e.style.background=t.surface);let y=e.ownerDocument.createElementNS(te,"svg");y.setAttribute("class","vd-viewer__surface"),y.setAttribute("width","100%"),y.setAttribute("height","100%");let w=e.ownerDocument.createElementNS(te,"g");w.setAttribute("class","vd-viewer__camera"),w.style.isolation="isolate",y.appendChild(w);let P=e.ownerDocument.createElementNS(te,"defs");w.appendChild(P);let _=e.ownerDocument.createElementNS(te,"rect");_.setAttribute("class","vd-viewer__page"),w.appendChild(_),e.appendChild(y);let C=new Map;function F(){w.setAttribute("transform",ri(c))}function N(){J();let b=l.background!==void 0;_.setAttribute("x",String(l.x)),_.setAttribute("y",String(l.y)),_.setAttribute("width",String(b?l.width:0)),_.setAttribute("height",String(b?l.height:0)),ye(_,"fill",l.background??null);let U=new Set,B=_;for(let R of l.items){U.add(R.id);let q=C.get(R.id);(!q||q.tagName!==vu(R))&&(q?.remove(),q=e.ownerDocument.createElementNS(te,vu(R)),q.setAttribute("data-vd-id",R.id),C.set(R.id,q)),Ox(q,R),B.nextSibling!==q&&w.insertBefore(q,B.nextSibling),B=q}for(let[R,q]of C)U.has(R)||(q.remove(),C.delete(R));o.afterPaint(),t.onSceneChange?.(l)}function J(){P.replaceChildren();let b=l.items.filter(U=>U.shadows.length>0);if(l.gradients.length>0||b.length>0){let U=`<svg xmlns="${te}">${l.gradients.map(Ys).join("")}${b.map(R=>Js(R)).join("")}</svg>`,B=new DOMParser().parseFromString(U,"image/svg+xml");for(let R of[...B.documentElement.children])P.appendChild(e.ownerDocument.importNode(R,!0))}for(let U of l.clips){let B=e.ownerDocument.createElementNS(te,"clipPath");B.setAttribute("id",wu(U.id)),U.parent!==void 0&&B.setAttribute("clip-path",oi(U.parent));let R=e.ownerDocument.createElementNS(te,"rect");R.setAttribute("x",String(U.x)),R.setAttribute("y",String(U.y)),R.setAttribute("width",String(U.w)),R.setAttribute("height",String(U.h)),B.appendChild(R),P.appendChild(B)}}function A(b){r=b,o.update(r),i=$e(r),l=To(r,i,d()),N()}function D(b){let U=e.getBoundingClientRect();return{x:b.clientX-U.left,y:b.clientY-U.top}}let k=0,V=0;function W(){e.classList.add("vd-viewer--interacting"),V&&clearTimeout(V),V=setTimeout(()=>{V=0,e.classList.remove("vd-viewer--interacting")},180)}function pe(){k&&(cancelAnimationFrame(k),k=0),F(),t.onCameraChange?.(c)}function re(b){c=b,pe()}function we(b){c=b,W(),!k&&(k=requestAnimationFrame(()=>{k=0,F(),t.onCameraChange?.(c)}))}let xe=null,L=null,me=!1,ne=b=>{if(x==="modifier"&&!b.ctrlKey&&!b.metaKey)return;b.preventDefault();let U=D(b),B=b.deltaMode===1?Lx:b.deltaMode===2?e.clientHeight||800:1,R=b.deltaX*B,q=b.deltaY*B;if(b.ctrlKey||b.metaKey){let je=b.ctrlKey?Mx:$x,oe=Math.max(-yu,Math.min(yu,q));we(Ro(c,U,Math.exp(-oe*je)));return}if(b.shiftKey&&R===0){we(Sn(c,-q,0));return}we(Sn(c,-R,-q))},S=b=>{(b.button===1||b.button===0&&me)&&(b.preventDefault(),xe=b.pointerId,L=D(b),e.setPointerCapture(b.pointerId))},$=b=>{if(xe!==b.pointerId||!L)return;let U=D(b);we(Sn(c,U.x-L.x,U.y-L.y)),L=U},M=b=>{xe===b.pointerId&&(xe=null,L=null,e.hasPointerCapture(b.pointerId)&&e.releasePointerCapture(b.pointerId))},T=b=>{b.code==="Space"&&(me=!0)},H=b=>{b.code==="Space"&&(me=!1)};m&&(e.addEventListener("wheel",ne,{passive:!1}),e.addEventListener("pointerdown",S),e.addEventListener("pointermove",$),e.addEventListener("pointerup",M),e.addEventListener("pointercancel",M),e.ownerDocument.addEventListener("keydown",T),e.ownerDocument.addEventListener("keyup",H)),F(),N();let K={element:e,surface:y,update:A,getDocument:()=>r,getScene:()=>l,getResolution:()=>i,getMeasurer:()=>a,setFonts(b){o.destroy(),o=n(b),A(r)},getCamera:()=>c,setCamera:re,zoomBy(b,U){let B=e.getBoundingClientRect(),R=U??{x:B.width/2,y:B.height/2};re(Ro(c,R,b))},fitToContent(b=32){let U=e.getBoundingClientRect();re(Er({x:l.x,y:l.y,width:l.width,height:l.height},{width:U.width||l.width,height:U.height||l.height},b))},screenToDocument:b=>No(c,b),documentToScreen:b=>ti(c,b),pointerPoint:D,hitTest(b,U){for(let B=l.items.length-1;B>=0;B--){let R=l.items[B];if(R&&Vx(R,b,Hx/c.zoom)&&(!U||U(R.id)))return R.id}return null},linkAt(b,U){for(let B=l.items.length-1;B>=0;B--){let R=l.items[B];if(R?.kind!=="text"||U&&!U(R.id))continue;let q=R.rotation===0?b:De(b,{x:R.x+R.w/2,y:R.y+R.h/2},-R.rotation);for(let je of R.lines){if(q.y<je.y||q.y>je.y+je.h)continue;let oe=je.spans.find(Pe=>q.x>=Pe.x&&q.x<=Pe.x+Pe.w);if(oe)return oe.style.link}}},itemOf:b=>l.items.find(U=>U.id===b),elementOf:b=>C.get(b),destroy(){m&&(e.removeEventListener("wheel",ne),e.removeEventListener("pointerdown",S),e.removeEventListener("pointermove",$),e.removeEventListener("pointerup",M),e.removeEventListener("pointercancel",M),e.ownerDocument.removeEventListener("keydown",T),e.ownerDocument.removeEventListener("keyup",H)),k&&cancelAnimationFrame(k),V&&clearTimeout(V),k=0,V=0,o.destroy(),e.classList.remove("vd-viewer--interacting"),y.remove(),C.clear(),e.classList.remove("vd-viewer")}};return t.autoFit&&K.fitToContent(),K}var Tx="vd-clip-";function wu(e){return Tx+e}function oi(e){return`url(#${wu(e)})`}function vu(e){return Qs(e)?"g":ni(e)}function ni(e){switch(e.kind){case"ellipse":return"ellipse";case"frame":return"rect";case"image":return e.href===void 0?"rect":"image";case"rect":return"rect";case"text":return"text";case"vector":return"path"}}function Ox(e,t){if(e.tagName!=="g"){bu(e,t);return}ye(e,"clip-path",t.clip===void 0?null:oi(t.clip)),e.style.mixBlendMode=t.blend==="normal"?"":t.blend;let r=e.firstElementChild;(!r||r.tagName!==ni(t))&&(r?.remove(),r=e.ownerDocument.createElementNS(te,ni(t)),e.appendChild(r)),bu(r,{...t,clip:void 0,blend:"normal"})}function bu(e,t){switch(ye(e,"clip-path",t.clip===void 0?null:oi(t.clip)),ye(e,"transform",t.rotation===0?null:Zs(t)),e.style.mixBlendMode=t.blend==="normal"?"":t.blend,e.style.filter=t.shadows.length>0?`url(#${Do}${t.id})`:"",t.kind){case"ellipse":Fx(e,t);return;case"frame":Dx(e,t);return;case"image":Px(e,t);return;case"rect":Ix(e,t);return;case"text":Rx(e,t);return;case"vector":Bx(e,t);return}}function Dx(e,t){e.setAttribute("class","vd-viewer__page"),e.setAttribute("x",String(t.x)),e.setAttribute("y",String(t.y)),e.setAttribute("width",String(t.w)),e.setAttribute("height",String(t.h)),ye(e,"fill",t.background??null)}function Px(e,t){if(e.setAttribute("x",String(t.x)),e.setAttribute("y",String(t.y)),e.setAttribute("width",String(t.w)),e.setAttribute("height",String(t.h)),ye(e,"opacity",t.opacity<1?String(t.opacity):null),t.href===void 0){e.setAttribute("class","vd-viewer__missing"),ye(e,"rx",t.radius>0?String(t.radius):null);return}e.setAttribute("href",t.href),e.setAttribute("preserveAspectRatio",Nx[t.fit])}var Nx={cover:"xMidYMid slice",contain:"xMidYMid meet",fill:"none"};function Rx(e,t){ye(e,"opacity",t.opacity<1?String(t.opacity):null),e.setAttribute("xml:space","preserve");let r=t.lines.flatMap(o=>o.spans).filter(o=>o.text!==""),n=e.ownerDocument;for(;e.childNodes.length>r.length;)e.lastChild?.remove();for(;e.childNodes.length<r.length;)e.appendChild(n.createElementNS(te,"tspan"));r.forEach((o,a)=>{let i=e.childNodes[a];i.textContent=o.text,i.setAttribute("x",String(o.x)),i.setAttribute("y",String(o.y)),i.setAttribute("font-family",o.style.family),i.setAttribute("font-size",String(o.style.size)),i.setAttribute("fill",o.style.fill),ye(i,"font-weight",o.style.weight===400?null:String(o.style.weight)),ye(i,"font-style",o.style.italic?"italic":null),ye(i,"letter-spacing",o.style.letterSpacing===0?null:String(o.style.letterSpacing)),ye(i,"data-vd-link",o.style.link??null);let d=[o.style.underline?"underline":"",o.style.strike?"line-through":""].filter(Boolean).join(" ");ye(i,"text-decoration",d===""?null:d)})}function Ix(e,t){e.removeAttribute("class"),e.setAttribute("x",String(t.x)),e.setAttribute("y",String(t.y)),e.setAttribute("width",String(t.w)),e.setAttribute("height",String(t.h)),e.setAttribute("fill",t.fill),ye(e,"rx",t.radius>0?String(t.radius):null),ye(e,"stroke",t.stroke??null),ye(e,"stroke-width",t.stroke&&t.strokeWidth>0?String(t.strokeWidth):null),ye(e,"opacity",t.opacity<1?String(t.opacity):null)}function ku(e,t){e.setAttribute("fill",t.fill),ye(e,"stroke",t.stroke??null),ye(e,"stroke-width",t.stroke&&t.strokeWidth>0?String(t.strokeWidth):null),ye(e,"opacity",t.opacity<1?String(t.opacity):null)}function Fx(e,t){e.setAttribute("cx",String(t.x+t.w/2)),e.setAttribute("cy",String(t.y+t.h/2)),e.setAttribute("rx",String(t.w/2)),e.setAttribute("ry",String(t.h/2)),ku(e,t)}function Bx(e,t){e.setAttribute("d",t.d),ku(e,t),ye(e,"fill-rule",t.rule==="nonzero"?null:t.rule),ye(e,"stroke-linecap",t.cap==="butt"?null:t.cap),ye(e,"stroke-linejoin",t.join==="miter"?null:t.join)}function ye(e,t,r){r===null?e.removeAttribute(t):e.setAttribute(t,r)}var Hx=4;function Vx(e,t,r){let n=e.rotation===0?t:De(t,{x:e.x+e.w/2,y:e.y+e.h/2},-e.rotation),o=n.x>=e.x&&n.x<=e.x+e.w&&n.y>=e.y&&n.y<=e.y+e.h;if(e.kind==="ellipse"){let a=e.stroke!==void 0?e.strokeWidth/2:0,i=e.w/2+a,d=e.h/2+a;if(i<=0||d<=0)return!1;let l=(n.x-(e.x+e.w/2))/i,c=(n.y-(e.y+e.h/2))/d;return l*l+c*c<=1}if(e.kind==="vector"){let a=e.stroke!==void 0&&e.strokeWidth>0;return ns(e.contours,n,{fill:e.fill!=="none",rule:e.rule,reach:(a?e.strokeWidth/2:0)+r})}return o}function ai(e,t){let r=e.root.id;if(r===t)return e;let n=o=>{if(!ce(o))return o;let a=Ze(o.expr);return!a.ok||!Zt(a.ast).nodes.includes(r)?o:{expr:gn(Mt(a.ast,i=>i===r?t:void 0))}};return{...e,root:{...Su(e.root,n),id:t}}}function Su(e,t){let r=e,n={};for(let[o,a]of Object.entries(r)){if(o==="children"&&Array.isArray(a)){n[o]=a.map(i=>Su(i,t));continue}n[o]=t(a)}return n}var ii=["nw","n","ne","e","se","s","sw","w"],En=["nw","ne","se","sw"];function Fo(e){let t=[];return e.includes("w")&&t.push("x","w"),e.includes("e")&&t.push("w"),e.includes("n")&&t.push("y","h"),e.includes("s")&&t.push("h"),t}function Ar(e){let t=e.includes("w")?0:e.includes("e")?1:.5,r=e.includes("n")?0:e.includes("s")?1:.5;return{u:t,v:r}}function li(e){switch(e){case"e":case"w":return 0;case"n":case"s":return 90;case"nw":case"se":return 45;case"ne":case"sw":return 135}}var Cn=1;function pt(e,t,r,n){let{x:o,y:a,w:i,h:d}=e;if(t.includes("w")){let l=o+i;o=Math.min(o+r,l-Cn),i=l-o}if(t.includes("e")&&(i=Math.max(Cn,i+r)),t.includes("n")){let l=a+d;a=Math.min(a+n,l-Cn),d=l-a}return t.includes("s")&&(d=Math.max(Cn,d+n)),{x:o,y:a,w:i,h:d}}function Qt(e,t){return{x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),w:Math.abs(t.x-e.x),h:Math.abs(t.y-e.y)}}function Bo(e,t){let r=[];return t.x!==e.x&&r.push("x"),t.y!==e.y&&r.push("y"),t.w!==e.w&&r.push("w"),t.h!==e.h&&r.push("h"),r}function Qe(e){if(e.length===0)return null;let t=1/0,r=1/0,n=-1/0,o=-1/0;for(let a of e)t=Math.min(t,a.x),r=Math.min(r,a.y),n=Math.max(n,a.x+a.w),o=Math.max(o,a.y+a.h);return{x:t,y:r,w:n-t,h:o-r}}function di(e,t){return e.x<t.x+t.w&&e.x+e.w>t.x&&e.y<t.y+t.h&&e.y+e.h>t.y}function et(e,t,r){return t>=e.x&&t<=e.x+e.w&&r>=e.y&&r<=e.y+e.h}var Mr=7,si=15,_n=9;function fi(e){let t=[],r=si/2;for(let d of En){let{u:l,v:c}=Ar(d);t.push({handle:d,rect:{x:e.x+e.w*l-r,y:e.y+e.h*c-r,w:si,h:si}})}let n=r,o=Math.max(0,e.w-n*2),a=Math.max(0,e.h-n*2),i=_n/2;return t.push({handle:"n",rect:{x:e.x+n,y:e.y-i,w:o,h:_n}},{handle:"s",rect:{x:e.x+n,y:e.y+e.h-i,w:o,h:_n}},{handle:"w",rect:{x:e.x-i,y:e.y+n,w:_n,h:a}},{handle:"e",rect:{x:e.x+e.w-i,y:e.y+n,w:_n,h:a}}),t}function Cu(e,t,r,n,o){if(o===0)return pt(e,t,r,n);let a=De({x:r,y:n},{x:0,y:0},-o),i=pt(e,t,a.x,a.y),d=Ve(e),l=Ve(i),c={x:d.x-l.x,y:d.y-l.y},m=De(c,{x:0,y:0},o);return{...i,x:i.x+c.x-m.x,y:i.y+c.y-m.y}}function _u(e,t){return Math.atan2(t.y-e.y,t.x-e.x)*180/Math.PI}function Eu(e,t,r,n,o){let a=_u(e,r)-_u(e,t);return o?Math.round((n+a)/o)*o-n:a}function Au(e,t,r){return e.map(n=>{let o=Ve(n.frame),a=De(o,t,r);return{id:n.id,frame:{...n.frame,x:a.x-n.frame.w/2,y:a.y-n.frame.h/2},rotation:hn(n.rotation+r)}})}function Mu(e,t,r,n){let o=r.w===0?1:n.w/r.w,a=r.h===0?1:n.h/r.h,i=t*Math.PI/180,d=Math.cos(i),l=Math.sin(i),c=e.w*Math.hypot(o*d,a*l),m=e.h*Math.hypot(o*l,a*d),x=Ve(e),y=n.x+(x.x-r.x)*o,w=n.y+(x.y-r.y)*a;return{x:y-c/2,y:w-m/2,w:c,h:m}}function Ee(e,t){return`${e}:${t}`}function Uo(e){let[t,r]=e.split(":").map(Number);if(!(t===void 0||r===void 0||!Number.isInteger(t)||!Number.isInteger(r)))return{contour:t,index:r}}function $u(e){let t=e.split(":"),r=t[2],n=Uo(t.slice(0,2).join(":"));if(!(!n||r!=="in"&&r!=="out"))return{...n,side:r}}function ci(e,t){let r=Uo(t);return r?e[r.contour]?.anchors[r.index]:void 0}function pi(e,t){let r=[];for(let n of t){let o=Uo(n);o&&e[o.contour]?.anchors[o.index]&&r.push(Ee(o.contour,o.index))}return r}function mi(e){return e.flatMap((t,r)=>t.anchors.map((n,o)=>Ee(r,o)))}function ui(e,t,r,n){return e.map((o,a)=>a===t?{...o,anchors:o.anchors.map((i,d)=>d===r?n:i)}:o)}var An=(e,t,r)=>({x:e.x+t,y:e.y+r});function zo(e,t,r,n){return e.map((o,a)=>({...o,anchors:o.anchors.map((i,d)=>t.has(Ee(a,d))?ot(An(i,r,n),i.in&&An(i.in,r,n),i.out&&An(i.out,r,n)):i)}))}function Ho(e){if(!e.in||!e.out)return!1;let t=e.in.x-e.x,r=e.in.y-e.y,n=e.out.x-e.x,o=e.out.y-e.y,a=Math.hypot(t,r),i=Math.hypot(n,o);return a===0||i===0?!1:(t*n+r*o)/(a*i)<-.995}function Vo(e,t,r,n,o,a){let i=e[t]?.anchors[r];if(!i)return[...e];let l=i[n==="in"?"out":"in"];if(a.smooth&&!a.breakSmooth&&l){let m=Math.hypot(l.x-i.x,l.y-i.y),x=o.x-i.x,y=o.y-i.y,w=Math.hypot(x,y);w>0&&(l={x:i.x-x/w*m,y:i.y-y/w*m})}let c=n==="in"?ot(i,o,l):ot(i,l,o);return ui(e,t,r,c)}function Lu(e,t){let r=Uo(t),n=r?e[r.contour]:void 0,o=n?.anchors[r?.index??-1];if(!r||!n||!o)return[...e];if(o.in||o.out)return ui(e,r.contour,r.index,ot(o));let a=n.anchors.length,i=r.index>0?n.anchors[r.index-1]:n.closed?n.anchors[a-1]:void 0,d=r.index<a-1?n.anchors[r.index+1]:n.closed?n.anchors[0]:void 0;if(!i&&!d)return[...e];let l=i??o,c=d??o,m=c.x-l.x,x=c.y-l.y,y=Math.hypot(m,x);if(y===0)return[...e];m/=y,x/=y;let w=i?Math.hypot(o.x-i.x,o.y-i.y)/3:0,P=d?Math.hypot(d.x-o.x,d.y-o.y)/3:0,_=i?{x:o.x-m*w,y:o.y-x*w}:void 0,C=d?{x:o.x+m*P,y:o.y+x*P}:void 0;return ui(e,r.contour,r.index,ot(o,_,C))}function Tu(e,t){let r=[];return e.forEach((n,o)=>{let a=n.anchors.filter((i,d)=>!t.has(Ee(o,d)));a.length>=2&&r.push({closed:n.closed,anchors:a})}),r}function Ou(e,t,r,n,o,a,i){let d=e[t];if(!d)return[...e];let l=d.anchors.length,c=(r+1)%l;if(i)return zo(e,new Set([Ee(t,r),Ee(t,c)]),o,a);let m=Math.min(.85,Math.max(.15,n)),x=1/(3*(1-m)*m),y=d.anchors[r],w=d.anchors[c],P=An(y.out??y,o*x,a*x),_=An(w.in??w,o*x,a*x),C=Vo(e,t,r,"out",P,{smooth:Ho(y),breakSmooth:!1});return C=Vo(C,t,c,"in",_,{smooth:Ho(w),breakSmooth:!1}),C}function Du(e,t){return e.map((r,n)=>r.closed||r.anchors.length<2?r:t.size===0||t.has(Ee(n,0))&&t.has(Ee(n,r.anchors.length-1))?{...r,closed:!0}:r)}function hi(e,t){let r=[],n=new Set,o=(a,i,d)=>{let l=e[a]?.anchors[i],c=l?.[d],m=`${Ee(a,i)}:${d}`;!l||!c||n.has(m)||(n.add(m),r.push({key:m,at:c,anchor:l}))};return e.forEach((a,i)=>{let d=a.anchors.length;a.anchors.forEach((l,c)=>{if(!t.has(Ee(i,c)))return;o(i,c,"in"),o(i,c,"out");let m=c>0?c-1:a.closed?d-1:-1,x=c<d-1?c+1:a.closed?0:-1;m>=0&&o(i,m,"out"),x>=0&&o(i,x,"in")})}),r}function Mn(e,t){let r=t.x-e.x,n=t.y-e.y,o=Math.round(Math.atan2(n,r)/(Math.PI/4))*(Math.PI/4),a=r*Math.cos(o)+n*Math.sin(o);return{x:e.x+Math.cos(o)*a,y:e.y+Math.sin(o)*a}}function Pu(e){return{closed:e.closed,anchors:[...e.anchors].reverse().map(t=>ot(t,t.out,t.in))}}function xi(e){if(!e)return null;for(let t of e.items){if(t.kind!=="file"||!t.type.startsWith("image/"))continue;let r=t.getAsFile();if(r)return r}return null}async function qo(e,t){let r;try{r=await createImageBitmap(e)}catch{return null}try{let n=Math.min(1,t/Math.max(r.width,r.height));return n>=1?{bytes:new Uint8Array(await e.arrayBuffer()),type:e.type||"image/png",width:r.width,height:r.height}:await zx(r,n,e.type)}finally{r.close()}}async function zx(e,t,r){let n=Math.max(1,Math.round(e.width*t)),o=Math.max(1,Math.round(e.height*t)),a=document.createElement("canvas");a.width=n,a.height=o;let i=a.getContext("2d");if(!i)return null;i.drawImage(e,0,0,n,o);let d=r==="image/png"?"image/png":"image/webp",l=await new Promise(c=>{a.toBlob(c,d,.9)});return l?{bytes:new Uint8Array(await l.arrayBuffer()),type:l.type||d,width:n,height:o}:null}function Nu(e,t,r,n){let o=Math.min(1,r/e,n/t);return{w:Math.round(e*o),h:Math.round(t*o)}}var qx={left:"x",hcenter:"x",right:"x",top:"y",vcenter:"y",bottom:"y"};function jo(e){return qx[e]}function jx(e,t,r){switch(e){case"left":return t.x;case"hcenter":return t.x+(t.w-r)/2;case"right":return t.x+t.w-r;case"top":return t.y;case"vcenter":return t.y+(t.h-r)/2;case"bottom":return t.y+t.h-r}}function gi(e,t,r){let n=jo(r),o=new Map;for(let a of e){let i=n==="x"?a.frame.w:a.frame.h,d=n==="x"?a.frame.x:a.frame.y;o.set(a.id,jx(r,t,i)-d)}return o}var Ru=[{key:"nw",sx:0,sy:0},{key:"ne",sx:1,sy:0},{key:"se",sx:1,sy:1},{key:"sw",sx:0,sy:1}],Kx={id:"radius",prop:"radius",handles(e,t,r){let n=this.max(e),o=Math.min(Math.max(t,r),Math.max(n,r));return Ru.map(({key:a,sx:i,sy:d})=>({id:`radius:${a}`,at:{x:e.x+(i===0?o:e.w-o),y:e.y+(d===0?o:e.h-o)}}))},valueAt(e,t,r){let n=Wx(t);if(!n)return 0;let o=e.x+(n.sx===0?0:e.w),a=e.y+(n.sy===0?0:e.h),i=Math.max(0,n.sx===0?r.x-o:o-r.x),d=Math.max(0,n.sy===0?r.y-a:a-r.y);return Math.min((i+d)/2,this.max(e))},max(e){return Math.max(0,Math.min(e.w,e.h)/2)}},Gx={canvas:[],frame:[],group:[],rect:[Kx]};function $n(e){return Gx[e.type]??[]}function Ko(e,t){let r=t.split(":")[0];return $n(e).find(n=>n.id===r)}function Wx(e){let t=e.split(":")[1];return Ru.find(r=>r.key===t)}var yi=[["path",{d:"m15 16 2.536-7.328a1.02 1.02 1 0 1 1.928 0L22 16"}],["path",{d:"M15.697 14h5.606"}],["path",{d:"m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16"}],["path",{d:"M3.304 13h6.392"}]];var vi=[["path",{d:"M2 12h20"}],["path",{d:"M10 16v4a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-4"}],["path",{d:"M10 8V4a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v4"}],["path",{d:"M20 16v1a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2v-1"}],["path",{d:"M14 8V7c0-1.1.9-2 2-2h2a2 2 0 0 1 2 2v1"}]];var bi=[["path",{d:"M12 2v20"}],["path",{d:"M8 10H4a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h4"}],["path",{d:"M16 10h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-4"}],["path",{d:"M8 20H7a2 2 0 0 1-2-2v-2c0-1.1.9-2 2-2h1"}],["path",{d:"M16 14h1a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2h-1"}]];var wi=[["rect",{width:"6",height:"16",x:"4",y:"2",rx:"2"}],["rect",{width:"6",height:"9",x:"14",y:"9",rx:"2"}],["path",{d:"M22 22H2"}]];var ki=[["rect",{width:"16",height:"6",x:"2",y:"4",rx:"2"}],["rect",{width:"9",height:"6",x:"9",y:"14",rx:"2"}],["path",{d:"M22 22V2"}]];var Si=[["rect",{width:"6",height:"14",x:"4",y:"5",rx:"2"}],["rect",{width:"6",height:"10",x:"14",y:"7",rx:"2"}],["path",{d:"M17 22v-5"}],["path",{d:"M17 7V2"}],["path",{d:"M7 22v-3"}],["path",{d:"M7 5V2"}]];var _i=[["rect",{width:"6",height:"16",x:"4",y:"6",rx:"2"}],["rect",{width:"6",height:"9",x:"14",y:"6",rx:"2"}],["path",{d:"M22 2H2"}]];var Ci=[["rect",{width:"9",height:"6",x:"6",y:"14",rx:"2"}],["rect",{width:"16",height:"6",x:"6",y:"4",rx:"2"}],["path",{d:"M2 2v20"}]];var Ei=[["path",{d:"M22 17h-3"}],["path",{d:"M22 7h-5"}],["path",{d:"M5 17H2"}],["path",{d:"M7 7H2"}],["rect",{x:"5",y:"14",width:"14",height:"6",rx:"2"}],["rect",{x:"7",y:"4",width:"10",height:"6",rx:"2"}]];var Ai=[["rect",{width:"14",height:"6",x:"5",y:"16",rx:"2"}],["rect",{width:"10",height:"6",x:"7",y:"2",rx:"2"}],["path",{d:"M2 12h20"}]];var Mi=[["rect",{width:"14",height:"6",x:"5",y:"12",rx:"2"}],["rect",{width:"10",height:"6",x:"7",y:"2",rx:"2"}],["path",{d:"M2 22h20"}]];var $i=[["rect",{width:"14",height:"6",x:"5",y:"16",rx:"2"}],["rect",{width:"10",height:"6",x:"7",y:"6",rx:"2"}],["path",{d:"M2 2h20"}]];var Li=[["circle",{cx:"15",cy:"9",r:"7"}],["circle",{cx:"9",cy:"15",r:"7"}]];var Ti=[["path",{d:"M20 6 9 17l-5-5"}]];var Oi=[["path",{d:"m6 9 6 6 6-6"}]];var Di=[["path",{d:"m9 18 6-6-6-6"}]];var Pi=[["circle",{cx:"12",cy:"12",r:"10"}]];var Ni=[["path",{d:"M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z"}]];var Ri=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"}],["circle",{cx:"12",cy:"12",r:"3"}]];var Ii=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"}],["path",{d:"m2 2 20 20"}]];var Fi=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M10 9H8"}],["path",{d:"M16 13H8"}],["path",{d:"M16 17H8"}]];var Bi=[["line",{x1:"22",x2:"2",y1:"6",y2:"6"}],["line",{x1:"22",x2:"2",y1:"18",y2:"18"}],["line",{x1:"6",x2:"6",y1:"2",y2:"22"}],["line",{x1:"18",x2:"18",y1:"2",y2:"22"}]];var Hi=[["path",{d:"M3 7V5c0-1.1.9-2 2-2h2"}],["path",{d:"M17 3h2c1.1 0 2 .9 2 2v2"}],["path",{d:"M21 17v2c0 1.1-.9 2-2 2h-2"}],["path",{d:"M7 21H5c-1.1 0-2-.9-2-2v-2"}],["rect",{width:"7",height:"5",x:"7",y:"7",rx:"1"}],["rect",{width:"7",height:"5",x:"10",y:"12",rx:"1"}]];var Vi=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2"}],["circle",{cx:"9",cy:"9",r:"2"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"}]];var Ui=[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}]];var Go=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1"}]];var zi=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4"}]];var qi=[["path",{d:"M5 12h14"}]];var ji=[["path",{d:"M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z"}]];var Ki=[["path",{d:"m18 8 4 4-4 4"}],["path",{d:"M2 12h20"}],["path",{d:"m6 8-4 4 4 4"}]];var Gi=[["path",{d:"M12 2v20"}],["path",{d:"m8 18 4 4 4-4"}],["path",{d:"m8 6 4-4 4 4"}]];var Wi=[["path",{d:"M15.707 21.293a1 1 0 0 1-1.414 0l-1.586-1.586a1 1 0 0 1 0-1.414l5.586-5.586a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414z"}],["path",{d:"m18 13-1.375-6.874a1 1 0 0 0-.746-.776L3.235 2.028a1 1 0 0 0-1.207 1.207L5.35 15.879a1 1 0 0 0 .776.746L13 18"}],["path",{d:"m2.3 2.3 7.286 7.286"}],["circle",{cx:"11",cy:"11",r:"2"}]];var Xi=[["path",{d:"m12 9-8.414 8.414A2 2 0 0 0 3 18.828v1.344a2 2 0 0 1-.586 1.414A2 2 0 0 1 3.828 21h1.344a2 2 0 0 0 1.414-.586L15 12"}],["path",{d:"m18 9 .4.4a1 1 0 1 1-3 3l-3.8-3.8a1 1 0 1 1 3-3l.4.4 3.4-3.4a1 1 0 1 1 3 3z"}],["path",{d:"m2 22 .414-.414"}]];var Yi=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z"}]];var Ji=[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]];var Zi=[["path",{d:"m15 14 5-5-5-5"}],["path",{d:"M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13"}]];var Qi=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"}],["path",{d:"M21 3v5h-5"}]];var el=[["circle",{cx:"19",cy:"5",r:"2"}],["circle",{cx:"5",cy:"19",r:"2"}],["path",{d:"M5 17A12 12 0 0 1 17 5"}]];var tl=[["path",{d:"M21 11a8 8 0 0 0-8-8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}]];var rl=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}]];var Wo=[["path",{d:"M21 5H3"}],["path",{d:"M21 12H9"}],["path",{d:"M21 19H7"}]];var Xo=[["path",{d:"M21 5H3"}],["path",{d:"M17 12H7"}],["path",{d:"M19 19H5"}]];var Yo=[["path",{d:"M3 5h18"}],["path",{d:"M3 12h18"}],["path",{d:"M3 19h18"}]];var Ln=[["path",{d:"M21 5H3"}],["path",{d:"M15 12H3"}],["path",{d:"M17 19H3"}]];var nl=[["path",{d:"M12 4v16"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2"}],["path",{d:"M9 20h6"}]];var ol=[["path",{d:"M9 14 4 9l5-5"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11"}]];var al=[["path",{d:"m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71"}],["path",{d:"m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71"}],["line",{x1:"8",x2:"8",y1:"2",y2:"5"}],["line",{x1:"2",x2:"5",y1:"8",y2:"8"}],["line",{x1:"16",x2:"16",y1:"19",y2:"22"}],["line",{x1:"19",x2:"22",y1:"16",y2:"16"}]];var sl=[["path",{d:"M18 6 6 18"}],["path",{d:"m6 6 12 12"}]];var Tn=e=>e.replace(/\b(?:CmdOrCtrl|CommandOrControl)\b/g,"Ctrl");function Iu(e,t){let n=e.ownerDocument.createElement("div");n.className="vd-chrome",n.setAttribute("role","toolbar"),n.setAttribute("aria-label","Canvas tools"),n.innerHTML=Xx(t),e.appendChild(n);let o=new Map;for(let m of n.querySelectorAll("[data-tool]"))o.set(m.dataset.tool,m);let a=n.querySelector('[data-act="undo"]'),i=n.querySelector('[data-act="redo"]'),d=n.querySelector('[data-act="zoom"]'),l=m=>{let x=m.target?.closest("button");if(!x)return;m.stopPropagation();let y=x.dataset.tool;if(y){t.onTool(y);return}switch(x.dataset.act){case"undo":t.onUndo();return;case"redo":t.onRedo();return;case"zoom":t.onZoomReset();return;case"play":t.onPlay?.();return}},c=m=>m.stopPropagation();return n.addEventListener("click",l),n.addEventListener("pointerdown",c),{element:n,setTool(m){for(let[x,y]of o)y.setAttribute("aria-pressed",String(x===m))},setHistory(m,x){a&&(a.disabled=!m),i&&(i.disabled=!x)},setZoom(m){d&&(d.textContent=`${Math.round(m*100)}%`)},destroy(){n.removeEventListener("click",l),n.removeEventListener("pointerdown",c),n.remove()}}}function Xx(e){let t=e.formatKeys??Tn;return[mt({tool:"select",label:"Select",hint:"V",icon:"select"}),mt({tool:"frame",label:"Frame",hint:"F",icon:"frame"}),mt({tool:"rect",label:"Rectangle",hint:"R",icon:"rect"}),mt({tool:"ellipse",label:"Ellipse",hint:"O",icon:"ellipse"}),mt({tool:"pen",label:"Pen",hint:"P",icon:"pen"}),mt({tool:"text",label:"Text",hint:"T",icon:"text"}),'<span class="vd-chrome__divider"></span>',mt({act:"undo",label:"Undo",hint:t("CmdOrCtrl+Z"),icon:"undo"}),mt({act:"redo",label:"Redo",hint:t("CmdOrCtrl+Shift+Z"),icon:"redo"}),'<span class="vd-chrome__divider"></span>','<button type="button" class="vd-chrome__zoom" data-act="zoom" title="Fit to screen">100%</button>',...e.onPlay?['<span class="vd-chrome__divider"></span>',mt({act:"play",label:"Play",hint:e.playHint,icon:"play"})]:[]].join("")}function mt(e){let t=e.tool?`data-tool="${e.tool}"`:`data-act="${e.act??""}"`,r=e.tool?' aria-pressed="false"':"";return`<button type="button" class="vd-chrome__tool" ${t}${r} title="${e.hint?`${e.label} \xB7 ${e.hint}`:e.label}" aria-label="${e.label}">`+Ue(e.icon)+"</button>"}var Yx={select:ji,frame:Bi,rect:rl,ellipse:Pi,pen:Wi,vector:el,text:nl,undo:ol,redo:Zi,"align-left":Ci,"align-hcenter":bi,"align-right":ki,"align-top":_i,"align-vcenter":vi,"align-bottom":wi,"distribute-h":Si,"distribute-v":Ei,group:Hi,image:Vi,eye:Ri,"eye-off":Ii,lock:zi,unlock:Go,chevron:Di,"text-left":Ln,"text-center":Xo,"text-right":Wo,"text-justify":Yo,"text-top":$i,"text-middle":Ai,"text-bottom":Mi,unlink:al,rotate:Qi,opacity:Ni,radius:tl,blend:Li,plus:Ji,minus:qi,close:sl,"chevron-down":Oi,check:Ti,link:Ui,"font-size":yi,"line-height":Gi,"letter-spacing":Ki,eyedropper:Xi,document:Fi,play:Yi};function Ue(e){return`<svg width="16" height="16" viewBox="0 0 24 24" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round">${Yx[e].map(([r,n])=>{let o=Object.entries(n).filter(([a])=>a!=="key").map(([a,i])=>` ${a}="${String(i)}"`).join("");return`<${r}${o} vector-effect="non-scaling-stroke"/>`}).join("")}</svg>`}var il="clipboard";function On(e,t){let r=new Set(t),n=[];return se(e.root,o=>{if(o.id!==e.root.id&&r.has(o.id))return n.push(o),!1}),n}function Fu(e,t){let r={};for(let a of e)se(a,i=>{for(let[d,l]of Object.entries(i)){if(ce(l)){let c=Ze(l.expr);if(!c.ok)continue;for(let m of Zt(c.ast).tokens){let x=t[m];x!==void 0&&(r[m]=x)}continue}typeof l=="string"&&o(l),d==="shadow"&&typeof l=="string"&&n(l)}for(let d of Hu(i.content))o(d)});return r;function n(a){let i=t[a],l=Sr(typeof i=="string"?i:a);if(!("error"in l))for(let c of l.shadows)o(c.colour)}function o(a){for(let i of wo(a)){let d=t[i];if(d!==void 0&&(r[i]=d,!(typeof d!="string"||d===a)))for(let l of wo(d)){let c=t[l];c!==void 0&&l!==i&&(r[l]=c)}}}}function Jx(e,t){let r={};for(let n of e)se(n,o=>{if(o.type!=="image"||typeof o.src!="string")return;let a=t[o.src];a!==void 0&&(r[o.src]=a)});return r}function Bu(e,t){let r={},n=o=>{if(typeof o!="string")return;let a=t[o];a!==void 0&&(r[o]=a)};for(let o of e)se(o,a=>{let i=a;n(i.font);for(let d of Hu(i.content,"font"))n(d)});return r}function Hu(e,t="fill"){if(!Array.isArray(e))return[];let r=[];for(let n of e){if(typeof n=="string")continue;let o=n[t];o!==void 0&&r.push(o)}return r}function ll(e,t,r){let n=On(e,t);if(n.length===0)return null;let o={};for(let d of n)se(d,l=>{let c=r.nodes.get(l.id)?.values;c&&Object.keys(c).length>0&&(o[l.id]=c)});let a={version:e.version,kind:e.kind,tokens:Fu(n,e.tokens),fonts:Bu(n,e.fonts),assets:Jx(n,e.assets),root:{...e.root,children:n}},i=JSON.parse(ts(a));return i[il]={resolved:o},JSON.stringify(i,null,2)}function dl(e){let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!="object"||t===null)return null;let r=t;if(typeof r.root!="object"||r.root===null)return null;let{document:n}=Ts(t),o=n.root.children;if(o.length===0)return null;let a=r[il],i=typeof a=="object"&&a!==null?a.resolved??{}:{};return{nodes:o,tokens:n.tokens,fonts:n.fonts,resolved:typeof i=="object"&&i!==null?i:{}}}function fl(e,t){let r=so(t.root),n=new Map;for(let i of e.nodes)se(i,d=>{let l=Zx(d.id,r);r.add(l),n.set(d.id,l)});let o=i=>r.has(i),a={...e.tokens,...t.tokens};return{nodes:e.nodes.map(i=>Vu(i,{payload:e,remap:n,exists:o,tokens:a})),remap:n}}function Zx(e,t){let r=e.lastIndexOf("."),n=r===-1?"":e.slice(r+1),o=/^[0-9]+$/.test(n)?e.slice(0,r):e,a=1;for(let i of t){if(!i.startsWith(`${o}.`))continue;let d=Number(i.slice(o.length+1));Number.isInteger(d)&&d>=a&&(a=d+1)}return`${o}.${a}`}function Vu(e,t){let r=e,n={};for(let[o,a]of Object.entries(r))o==="id"||o==="children"||(n[o]=ce(a)?Qx(a.expr,e.id,o,t):a);return n.id=t.remap.get(e.id)??e.id,ue(e)&&(n.children=le(e).map(o=>Vu(o,t))),n}function Qx(e,t,r,n){let o={expr:e},a=Ze(e);if(!a.ok)return o;let i=Zt(a.ast).nodes.some(m=>n.remap.has(m)),d=i?Mt(a.ast,m=>n.remap.get(m)):a.ast,l=Zt(d);if(l.nodes.some(m=>!n.exists(m))||l.tokens.some(m=>n.tokens[m]===void 0)){let m=n.payload.resolved[t]?.[r];return m===void 0?o:m}return i?{expr:gn(d)}:o}var ht="#ffffff",$t="#0b0d0c",Ku="#c6ff3d",eg="#ffb224";var Uu=new Map;function Ae(e,t={}){let r=t.badge??"none",n=e==="resize"?Gu(t.angle??0):e==="rotate"?rg(t.angle??0):0,o=`${e}:${n}:${r}`,a=Uu.get(o);if(a!==void 0)return a;let{at:i,fallback:d}=tg[e],l=ag(ng(e,n,r),i[0],i[1],d);return Uu.set(o,l),l}var zu=[2,2],$r=[12,12],tg={arrow:{at:zu,fallback:"default"},radius:{at:zu,fallback:"default"},resize:{at:$r,fallback:"ew-resize"},rotate:{at:$r,fallback:"crosshair"},crosshair:{at:$r,fallback:"crosshair"},grab:{at:$r,fallback:"grab"},grabbing:{at:$r,fallback:"grabbing"},text:{at:$r,fallback:"text"}};function rg(e){let t=(e%360+360)%360;return Math.round(t/15)*15%360}function Gu(e){let t=(e%180+180)%180;return Math.round(t/15)*15%180}function ng(e,t,r){switch(e){case"arrow":return Wu(r);case"resize":return sg(t,r);case"rotate":return ig(t);case"crosshair":return dg();case"grab":return ju(!1);case"grabbing":return ju(!0);case"radius":return fg(r);case"text":return lg()}}function og(e){return`<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">${e}</svg>`}function ag(e,t,r,n){return`url("data:image/svg+xml,${encodeURIComponent(og(e))}") ${t} ${r}, ${n}`}var qu="M2 2 L2 20.4 L6.7 15.9 L9.9 22.8 L12.6 21.5 L9.5 14.8 L15.4 14.6 Z";function Wu(e){return`<path d="${qu}" fill="${ht}" stroke="${ht}" stroke-width="3" stroke-linejoin="round"/><path d="${qu}" fill="${$t}"/>`+Xu(e)}function sg(e,t){let r=["M6.6 12 H17.4","M9.7 8.7 L6.2 12 L9.7 15.3","M14.3 8.7 L17.8 12 L14.3 15.3"],n=(o,a)=>r.map(i=>`<path d="${i}" stroke="${a}" stroke-width="${o}"/>`).join("");return`<g transform="rotate(${e} 12 12)" fill="none" stroke-linecap="round" stroke-linejoin="round">`+n(3.6,ht)+n(1.6,$t)+"</g>"+Xu(t)}function ig(e){let t=["M7 17.5 A10 10 0 0 0 17.5 7","M14.2 4.6 L17.6 7 L15 10.3","M4.6 14.2 L7 17.6 L10.3 15"],r=(n,o)=>t.map(a=>`<path d="${a}" stroke="${o}" stroke-width="${n}"/>`).join("");return`<g transform="rotate(${e} 12 12)" fill="none" stroke-linecap="round" stroke-linejoin="round">`+r(3.6,ht)+r(1.6,$t)+"</g>"}function lg(){let e=["M12 4.5 V19.5","M9 4.5 H15","M9 19.5 H15"],t=(r,n)=>e.map(o=>`<path d="${o}" stroke="${n}" stroke-width="${r}"/>`).join("");return'<g fill="none" stroke-linecap="round">'+t(3.4,ht)+t(1.5,$t)+"</g>"}function dg(){let e="M12 2.5 V9 M12 15 V21.5 M2.5 12 H9 M15 12 H21.5";return`<g fill="none" stroke-linecap="round"><path d="${e}" stroke="${ht}" stroke-width="3"/><path d="${e}" stroke="${$t}" stroke-width="1.2"/></g>`}function ju(e){let t=e?"M6.8 13.8v-1.3a1.35 1.35 0 0 1 1.35-1.35h7.7a1.35 1.35 0 0 1 1.35 1.35v2.6c0 3.2-2.2 5.2-5.1 5.2h-1.1c-1.9 0-3-.8-3.9-2.1l-1.4-2":"M9 14.6V6.4a1.25 1.25 0 0 1 2.5 0v5.1V5.1a1.25 1.25 0 0 1 2.5 0v6.4V6.2a1.25 1.25 0 0 1 2.5 0v6.6m0 0v2.3c0 3.1-2.1 5-4.8 5h-.7c-1.6 0-2.7-.6-3.6-1.9l-2.2-3a1.3 1.3 0 0 1 .45-1.85c.6-.35 1.35-.2 1.85.4L9 15.9";return`<g fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="${t}" stroke="${ht}" stroke-width="3.4"/><path d="${t}" stroke="${$t}" stroke-width="1.5"/></g>`}function fg(e){return Wu("none")+ug(e)}function ug(e){return`<g><rect x="17.5" y="17.5" width="14" height="14" rx="4.5" fill="${ht}"/><rect x="18.7" y="18.7" width="11.6" height="11.6" rx="3.4" fill="${e==="none"?Ku:eg}"/><path d="M21.6 27.9 V25.4 A3.8 3.8 0 0 1 25.4 21.6 H27.9" fill="none" stroke="${$t}" stroke-width="1.5" stroke-linecap="round"/></g>`}function Xu(e){return e==="none"?"":`<g><rect x="18.5" y="18.5" width="13" height="13" rx="4" fill="${ht}"/><rect x="19.6" y="19.6" width="10.8" height="10.8" rx="3" fill="${Ku}"/><text x="25" y="28.4" text-anchor="middle" fill="${$t}" font-family="ui-sans-serif, system-ui, -apple-system, Helvetica, sans-serif" font-size="10" font-weight="700">${e==="token"?"$":"\u0192"}</text></g>`}function Oe(e,t){let r=[],n=o=>{if(r.push(o.id),o.id===t)return!0;for(let a of le(o))if(n(a))return!0;return r.pop(),!1};return n(e)?r:[]}function Jo(e,t,r){let n=Oe(t.root,e);if(n.length===0)return e;let o=r!==null&&n.includes(r)?r:cg(n,t),a=n.indexOf(o);return a===-1?e:n[a+1]??e}function cg(e,t){for(let r=e.length-2;r>=0;r-=1){let n=e[r];if(z(t.root,n)?.type==="frame")return n}return t.root.id}function Yu(e,t){let r=e.map(o=>Oe(t.root,o)).filter(o=>o.length>0);if(r.length===0)return t.root.id;let n=t.root.id;for(let o=0;;o+=1){let a=r[0]?.[o];if(a===void 0||r.some(i=>i[o]!==a||o===i.length-1))break;n=a}return n}function er(e,t){let r=z(t.root,e);if(!r)return[];let n=[],o=a=>{if(ke(a)){for(let i of le(a))o(i);return}n.push(a.id)};return o(r),n}function tr(e,t,r){let n=z(t.root,e);if(!n)return;if(!ke(n)){let i=r.nodes.get(e);return i?ul(i):void 0}let o=[],a=i=>{if(!(i.id!==e&&"hidden"in i&&i.hidden===!0)){if(i.id!==e&&!ke(i)){let d=tr(i.id,t,r);d&&o.push(d);return}for(let d of le(i))a(d)}};return a(n),Qe(o)??void 0}function ul(e){let t={x:e.absX,y:e.absY,w:e.w,h:e.h},r=e.values.rotation??0;return r===0?t:mn(t,r)}function Dn(e,t,r){return t.flatMap(n=>{let o=tr(n,e,r);return o?[{id:n,frame:o}]:[]})}function cl(e,t){let r=t.filter(x=>x!==e.root.id&&z(e.root,x));if(r.length<2)return null;let n=Yu(r,e),o=z(e.root,n);if(!o)return null;let a=le(o),i=new Set(r.map(x=>Jo(x,e,n))),d=a.filter(x=>i.has(x.id));if(d.length<2)return null;let l=a.findIndex(x=>x.id===d[d.length-1]?.id),c=qt(e.root,"group"),m=[{op:"insert",parent:n,index:l+1,node:Wa({id:c,children:[]})}];return d.forEach((x,y)=>{m.push({op:"move",id:x.id,parent:c,index:y})}),{ops:m,groupId:c}}function pl(e,t){let r=z(e.root,t);if(!r||!ke(r))return[];let n=Oe(e.root,t),o=n[n.length-2];if(o===void 0)return[];let a=z(e.root,o);if(!a)return[];let i=le(a).findIndex(l=>l.id===t);if(i===-1)return[];let d=le(r).map((l,c)=>({op:"move",id:l.id,parent:o,index:i+c}));return d.push({op:"remove",id:t}),d}function ml(e,t,r){let n=new Map;for(let a of t){let i=Oe(e.root,a),d=i[i.length-2];if(d===void 0)continue;let l=n.get(d)??new Set;l.add(a),n.set(d,l)}let o=[];for(let[a,i]of n){let d=z(e.root,a);if(!d)continue;let l=le(d).map(c=>c.id);o.push(...mg(a,l,pg(l,i,r)))}return o}function pg(e,t,r){if(r==="front"||r==="back"){let i=e.filter(l=>t.has(l)),d=e.filter(l=>!t.has(l));return r==="front"?[...d,...i]:[...i,...d]}let n=r==="forward"?1:-1,o=[...e],a=o.flatMap((i,d)=>t.has(i)?[d]:[]);n===1&&a.reverse();for(let i of a){let d=i+n,l=o[d];l===void 0||t.has(l)||(o[d]=o[i],o[i]=l)}return o}function mg(e,t,r){let n=[...t],o=[];for(let a=0;a<r.length;a+=1){let i=r[a];i===void 0||n[a]===i||(n.splice(n.indexOf(i),1),n.splice(a,0,i),o.push({op:"move",id:i,parent:e,index:a}))}return o}function hl(e,t,r){let n=t.w===0?1:r.w/t.w,o=t.h===0?1:r.h/t.h,a=new Map;for(let[i,d]of e)a.set(i,{x:r.x+(d.x-t.x)*n,y:r.y+(d.y-t.y)*o,w:d.w*n,h:d.h*o});return a}var xl=6,xt=.01,ze={dx:0,dy:0,guides:[],measures:[]},Zo=["lo","mid","hi"];function gl(e,t,r){let n=[],o=(a,i)=>{let d=t.nodes.get(a);d&&n.push({id:a,frame:ul(d),isPage:i})};return e.root.w!==void 0&&e.root.h!==void 0&&o(e.root.id,!0),se(e.root,a=>{if(r.has(a.id)||"hidden"in a&&a.hidden===!0)return!1;if(a.id!==e.root.id){if(a.type==="frame"){o(a.id,!0);return}ue(a)||o(a.id,!1)}}),n}function yl(e,t,r){if(r<=0||t.length===0)return ze;let n=Lr("x",e,t,r,Zo,!0),o=Lr("y",e,t,r,Zo,!0);return bl(e,t,n,o)}function Qo(e,t,r,n){if(n<=0||r.length===0)return ze;let o=t.includes("w")?["lo"]:t.includes("e")?["hi"]:[],a=t.includes("n")?["lo"]:t.includes("s")?["hi"]:[],i=Lr("x",e,r,n,o,!1),d=Lr("y",e,r,n,a,!1);return bl(e,r,i,d)}function vl(e,t,r){let n={x:e.x,y:e.y,w:0,h:0};if(r<=0||t.length===0)return ze;let o=Lr("x",n,t,r,["lo"],!1),a=Lr("y",n,t,r,["lo"],!1);return bl(n,t,o,a)}function Lr(e,t,r,n,o,a){let i={axis:e,delta:0,kind:"none"};if(o.length===0)return i;let d=hg(e,t,r,n,o),l=a?gg(e,t,r,n):null;return d&&l?Math.abs(l.delta)<Math.abs(d.delta)-xt?{axis:e,delta:l.delta,kind:"space",gap:l.gap}:{axis:e,delta:d.delta,kind:"align",at:d.at}:d?{axis:e,delta:d.delta,kind:"align",at:d.at}:l?{axis:e,delta:l.delta,kind:"space",gap:l.gap}:i}function hg(e,t,r,n,o){let a=null;for(let i of r)for(let d of Zo){let l=de(i.frame,e,d);for(let c of o){let m=l-de(t,e,c);if(Math.abs(m)>n)continue;let x=c==="mid"&&d==="mid";(a===null||xg(m,x,a))&&(a={at:l,delta:m,centred:x})}}return a?{at:a.at,delta:a.delta}:null}function xg(e,t,r){let n=Math.abs(e),o=Math.abs(r.delta);return n<o-xt?!0:n>o+xt?!1:t&&!r.centred}function gg(e,t,r,n){let o=Ju(e,t,r);if(o.length<2)return null;let a=Zu(t,e),i=de(t,e,"lo"),d=[];for(let c of yg(o,e))for(let m of o)d.push({delta:de(m,e,"hi")+c-i,gap:c}),d.push({delta:de(m,e,"lo")-c-a-i,gap:c});for(let c=0;c+1<o.length;c+=1){let m=o[c],x=o[c+1];if(!m||!x)continue;let y=de(x,e,"lo")-de(m,e,"hi")-a;y<=xt||d.push({delta:de(m,e,"hi")+y/2-i,gap:y/2})}let l=null;for(let c of d)Math.abs(c.delta)>n||(l===null||Math.abs(c.delta)<Math.abs(l.delta)-xt)&&(l=c);return l}function Ju(e,t,r){let n=wl(e);return r.filter(o=>!o.isPage&&wg(o.frame,t,n)).map(o=>o.frame).sort((o,a)=>de(o,e,"lo")-de(a,e,"lo"))}function yg(e,t){let r=[];for(let n=0;n+1<e.length;n+=1){let o=e[n],a=e[n+1];if(!o||!a)continue;let i=de(a,t,"lo")-de(o,t,"hi");i<=xt||r.some(d=>Math.abs(d-i)<xt)||r.push(i)}return r}function bl(e,t,r,n){let o={...e,x:e.x+r.delta,y:e.y+n.delta},a=[],i=[];for(let d of[r,n]){if(d.kind==="align"&&d.at!==void 0){let l=vg(d.axis,d.at,o,t);l&&a.push(l)}d.kind==="space"&&d.gap!==void 0&&i.push(...bg(d.axis,d.gap,o,t))}return{dx:r.delta,dy:n.delta,guides:a,measures:i}}function vg(e,t,r,n){let o=wl(e),a=de(r,o,"lo"),i=de(r,o,"hi"),d=!1;for(let l of n)Zo.some(c=>kg(de(l.frame,e,c),t))&&(d=!0,a=Math.min(a,de(l.frame,o,"lo")),i=Math.max(i,de(l.frame,o,"hi")));return d?{axis:e,at:t,from:a,to:i}:null}function bg(e,t,r,n){let o=wl(e),a=[...Ju(e,r,n),r].sort((d,l)=>de(d,e,"lo")-de(l,e,"lo")),i=[];for(let d=0;d+1<a.length;d+=1){let l=a[d],c=a[d+1];if(!l||!c)continue;let m=de(c,e,"lo")-de(l,e,"hi");if(Math.abs(m-t)>xt)continue;let x=Math.max(de(l,o,"lo"),de(c,o,"lo")),y=Math.min(de(l,o,"hi"),de(c,o,"hi"));i.push({axis:e,at:(x+y)/2,from:de(l,e,"hi"),to:de(c,e,"lo"),label:Sg(m)})}return i}function wl(e){return e==="x"?"y":"x"}function Zu(e,t){return t==="x"?e.w:e.h}function de(e,t,r){let n=t==="x"?e.x:e.y,o=Zu(e,t);return r==="lo"?n:r==="hi"?n+o:n+o/2}function wg(e,t,r){return de(e,r,"lo")<de(t,r,"hi")&&de(e,r,"hi")>de(t,r,"lo")}function kg(e,t){return Math.abs(e-t)<xt}function Sg(e){return String(Math.round(e*100)/100)}var Pn=class{limit;past=[];future=[];constructor(t=500){this.limit=t}push(t){this.past.push(t),this.past.length>this.limit&&this.past.shift(),this.future.length=0}amend(t){let r=this.past[this.past.length-1];return r?(this.past[this.past.length-1]={label:t.label,ops:[...r.ops,...t.ops],inverse:[...t.inverse,...r.inverse]},this.future.length=0,!0):!1}get canUndo(){return this.past.length>0}get top(){return this.past[this.past.length-1]??null}isTail(t){if(t.length===0||t.length>this.past.length)return!1;let r=this.past.length-t.length;return t.every((n,o)=>this.past[r+o]===n)}get canRedo(){return this.future.length>0}undo(){let t=this.past.pop();if(t)return this.future.push(t),{entry:t,ops:t.inverse}}redo(){let t=this.future.pop();if(t)return this.past.push(t),{entry:t,ops:t.ops}}snapshot(){return{past:[...this.past],future:[...this.future]}}restore(t){this.past.length=0,this.future.length=0,this.past.push(...t.past),this.future.push(...t.future)}clear(){this.past.length=0,this.future.length=0}};var Qu=1,_g=48,Cg=.06,Eg=.5;function ec(e){return Math.max(_g,Math.min(e.width,e.height)*Cg)}function kl(e,t){let r=new Set(t),n=[];for(let o of e.root.children)(r.has(o.id)||tc(o,r))&&n.push(o.id);return n}function tc(e,t){for(let r of le(e))if(t.has(r.id)||tc(r,t))return!0;return!1}function ea(e){let t=e.filter(i=>i.w>0&&i.h>0);if(t.length===0)return null;let r=Math.min(...t.map(i=>i.x)),n=Math.min(...t.map(i=>i.y)),o=Math.max(...t.map(i=>i.x+i.w)),a=Math.max(...t.map(i=>i.y+i.h));return{x:r,y:n,w:o-r,h:a-n}}function rc(e,t){let r=ec(t),n={width:Math.max(1,t.width-r*2),height:Math.max(1,t.height-r*2)},o=kn(Math.min(n.width/e.w,n.height/e.h,Qu));return{zoom:o,x:t.width/2-(e.x+e.w/2)*o,y:t.height/2-(e.y+e.h/2)*o}}function Sl(e,t,r){let n=rc(e,t);return Ag(e,t,r)&&r.zoom>=n.zoom*Eg?null:n}function Ag(e,t,r){let n=e.x*r.zoom+r.x,o=e.y*r.zoom+r.y,a=(e.x+e.w)*r.zoom+r.x,i=(e.y+e.h)*r.zoom+r.y;return n>=0&&o>=0&&a<=t.width&&i<=t.height}function nc(e,t,r,n){let o=Math.exp(Math.log(e.zoom)+(Math.log(t.zoom)-Math.log(e.zoom))*r),a={x:n.width/2,y:n.height/2},i={x:(a.x-e.x)/e.zoom,y:(a.y-e.y)/e.zoom},d={x:(a.x-t.x)/t.zoom,y:(a.y-t.y)/t.zoom},l={x:i.x+(d.x-i.x)*r,y:i.y+(d.y-i.y)*r};return{zoom:o,x:a.x-l.x*o,y:a.y-l.y*o}}function oc(e){return 1-(1-e)**3}function Mg(e){return!("separator"in e)}function _l(e,t=[]){let r=t.length>0?[{separator:!0},...t]:[];if(e.count===0)return[{id:"paste",label:"Paste",keys:"CmdOrCtrl+V",disabled:!e.canPaste},{separator:!0},{id:"selectAll",label:"Select all",keys:"CmdOrCtrl+A"},...ac(e),{separator:!0},{id:"fit",label:"Fit to screen",keys:"Shift+1"},{id:"zoom100",label:"Zoom to 100%",keys:"CmdOrCtrl+0"},...r];let n=[];e.isText&&e.count===1&&n.push({id:"editText",label:"Edit text",keys:"Enter"},{separator:!0}),e.isVector&&e.count===1&&n.push({id:"editPoints",label:"Edit points",keys:"Enter"},{separator:!0}),(e.convertible??0)>0&&n.push({id:"toVector",label:"Convert to vector",keys:"CmdOrCtrl+Shift+O"},{separator:!0}),n.push({id:"cut",label:"Cut",keys:"CmdOrCtrl+X"},{id:"copy",label:"Copy",keys:"CmdOrCtrl+C"},{id:"paste",label:"Paste",keys:"CmdOrCtrl+V",disabled:!e.canPaste},{id:"duplicate",label:"Duplicate",keys:"CmdOrCtrl+D"},{separator:!0},{id:"group",label:"Group",keys:"CmdOrCtrl+G",disabled:e.count<2},{id:"ungroup",label:"Ungroup",keys:"CmdOrCtrl+Shift+G",disabled:!e.hasGroup});let o=[];if(e.hide&&o.push({id:"toggleHidden",label:e.hide==="show"?"Show":"Hide",keys:"CmdOrCtrl+Shift+H"}),e.lock&&o.push({id:"toggleLock",label:e.lock==="unlock"?"Unlock":"Lock",keys:"CmdOrCtrl+Shift+L"}),o.length>0&&n.push({separator:!0},...o),n.push({separator:!0},{id:"front",label:"Bring to front",keys:"CmdOrCtrl+]"},{id:"forward",label:"Bring forward",keys:"]"},{id:"backward",label:"Send backward",keys:"["},{id:"back",label:"Send to back",keys:"CmdOrCtrl+["}),e.bound.length>0){n.push({separator:!0});for(let a of e.bound)n.push({id:`detach:${a.prop}`,label:`Detach ${a.prop}`,hint:a.source})}return n.push(...ac(e)),n.push(...r),n.push({separator:!0},{id:"delete",label:"Delete",keys:"Delete"}),n}var $g=4;function ac(e){let t=(e.locksHere??[]).slice(0,$g).map(n=>({id:`unlock:${n}`,label:`Unlock ${n}`}));e.anyLocked&&t.push({id:"unlockAll",label:"Unlock all"});let r=e.hiddenCount??0;return r>0&&t.push({id:"showAll",label:`Show all hidden (${r})`}),t.length===0?[]:[{separator:!0},...t]}function Cl(e,t){let r=e.ownerDocument,n=t.formatKeys??Tn,o=r.createElement("div");o.className="vd-menu",o.setAttribute("role","menu"),o.hidden=!0,e.appendChild(o);let a=!1,i=[],d=-1;function l(C){o.replaceChildren(),i=[];for(let F of C){if(!Mg(F)){let D=r.createElement("div");D.className="vd-menu__separator",o.appendChild(D);continue}let N=r.createElement("button");N.type="button",N.className="vd-menu__item",N.dataset.command=F.id,N.disabled=F.disabled===!0,N.setAttribute("role","menuitem");let J=r.createElement("span");J.textContent=F.label,N.appendChild(J);let A=F.hint??(F.keys===void 0?void 0:n(F.keys));if(A!==void 0){let D=r.createElement("span");D.className="vd-menu__hint",D.textContent=A,N.appendChild(D)}o.appendChild(N),N.disabled||i.push(N)}}function c(C){o.style.left=`${C.x}px`,o.style.top=`${C.y}px`;let F=e.getBoundingClientRect(),N=o.getBoundingClientRect();if(N.width===0&&N.height===0)return;let J=C.x+N.width-F.width,A=C.y+N.height-F.height;J>0&&(o.style.left=`${Math.max(0,C.x-N.width)}px`),A>0&&(o.style.top=`${Math.max(0,C.y-N.height)}px`)}function m(C){i.length!==0&&(d=(C+i.length)%i.length,i[d]?.focus())}let x=C=>{let F=C.target?.closest("button");if(!F||F.disabled)return;C.stopPropagation();let N=F.dataset.command;_(),N&&t.onCommand(N)},y=C=>C.stopPropagation(),w=C=>{C.key==="ArrowDown"?(C.preventDefault(),m(d+1)):C.key==="ArrowUp"?(C.preventDefault(),m(d-1)):C.key==="Escape"&&(C.preventDefault(),C.stopPropagation(),_(),e.focus())},P=C=>{a&&(C.target instanceof Node&&o.contains(C.target)||_())};function _(){a&&(a=!1,d=-1,o.hidden=!0,r.removeEventListener("pointerdown",P,!0),r.removeEventListener("wheel",P,!0))}return o.addEventListener("click",x),o.addEventListener("pointerdown",y),o.addEventListener("keydown",w),{element:o,get isOpen(){return a},open(C,F){l(F),o.hidden=!1,a=!0,c(C),r.addEventListener("pointerdown",P,!0),r.addEventListener("wheel",P,!0),m(0)},close:_,destroy(){_(),o.removeEventListener("click",x),o.removeEventListener("pointerdown",y),o.removeEventListener("keydown",w),o.remove()}}}var Tr=2,sc=1.5,ic=1.5,lc=1.5,gc={hover:null,members:[],box:null,spacers:[],rings:[],lead:null,badge:null,caret:null,textSelection:[],draft:null,marquee:null,guides:[],measures:[],presence:null,highlight:[],parked:[],lockHint:null},dc=3.6,Lg=22,ta=14,ra=15,El=4,fc=15,uc=23,Nn=7,Tg=3.5,na=12,Og=4.5,oa=16,qe=18,Al=9,Ml=6.1,cc="Drop or double-click",Dg=6.4,pc=16,Lt=3,mc=5,Pg=11,hc=6,xc=6.4;function yc(e,t){let r=e.ownerDocument,n=r.createElementNS(te,"svg");n.setAttribute("class","vd-editor__overlay"),e.appendChild(n);let o=[],a=[],i=[],d=[],l=[],c=null,m=null,x=[],y=[];function w(S){let $=t({x:S.x,y:S.y}),M=t({x:S.x+S.w,y:S.y+S.h});return{x:$.x,y:$.y,w:M.x-$.x,h:M.y-$.y}}function P(S){for(;n.firstChild;)n.removeChild(n.firstChild);o=[],a=[],i=[],d=[],l=[],c=null,m=null,x=[],y=(S.pageLabels??[]).flatMap(M=>re(M));let $=S.turn&&S.turn.angle!==0?{angle:S.turn.angle,centre:t(S.turn.centre)}:null;for(let M of S.slots??[])xe(M);S.presence&&L(S.presence);for(let M of S.highlight)me("vd-editor__highlight",Or(w(M),Tr),Tr);S.lockHint&&we(S.lockHint),S.hover&&me("vd-editor__hover",Rn(w(S.hover)),ic);for(let M of S.parked)me("vd-editor__parked",Rn(w(M)),ic);for(let M of S.members)me("vd-editor__member",Or(w(M),sc),sc);S.lead&&me("vd-editor__lead",Rn(w(S.lead)),Tr);for(let M of S.guides)V(M);for(let M of S.measures)W(M);if(_($,()=>{for(let M of S.textSelection)n.appendChild(ne("vd-editor__text-selection",w(M)))}),S.box&&D(S.box),S.caret&&_($,()=>N(S.caret)),d=S.rings.map(J),i=S.spacers.map(A),S.badge&&S.box){let M=w(S.box.frame),T=c?Math.max(...[{x:M.x,y:M.y},{x:M.x+M.w,y:M.y},{x:M.x,y:M.y+M.h},{x:M.x+M.w,y:M.y+M.h}].map(H=>De(H,c.centre,c.angle).y)):M.y+M.h;pe(S.badge,{x:M.x+M.w/2,y:T+Al+qe/2})}if(S.draft){let M=w(S.draft);if(S.draftEllipse){let T=r.createElementNS(te,"ellipse");T.setAttribute("class","vd-editor__draft"),T.setAttribute("cx",String(M.x+M.w/2)),T.setAttribute("cy",String(M.y+M.h/2)),T.setAttribute("rx",String(Math.abs(M.w)/2)),T.setAttribute("ry",String(Math.abs(M.h)/2)),n.appendChild(T)}else n.appendChild(ne("vd-editor__draft",M))}S.marquee&&n.appendChild(ne("vd-editor__marquee",w(S.marquee))),S.path&&(m=$,_($,()=>F(S.path)))}function _(S,$){if(!S){$();return}let M=n.childNodes.length;$();let T=r.createElementNS(te,"g");for(T.setAttribute("transform",`rotate(${S.angle} ${S.centre.x} ${S.centre.y})`);n.childNodes.length>M;)T.insertBefore(n.childNodes[n.childNodes.length-1],T.firstChild);n.appendChild(T)}function C(S,$){return $?De(S,$.centre,-$.angle):S}function F(S){let $=r.createElementNS(te,"path");if($.setAttribute("class","vd-editor__path"),$.setAttribute("d",ft(ut(S.contours,t))),n.appendChild($),S.pending){let T=t(S.pending.from),H=t(S.pending.to),K=S.pending.c1?t(S.pending.c1):T,b=r.createElementNS(te,"path");b.setAttribute("class","vd-editor__pending"),b.setAttribute("d",`M${T.x} ${T.y} C${K.x} ${K.y} ${H.x} ${H.y} ${H.x} ${H.y}`),n.appendChild(b)}for(let T of S.handles){let H=t(T.at),K=t(T.anchor),b=r.createElementNS(te,"line");b.setAttribute("class","vd-editor__arm"),b.setAttribute("x1",String(K.x)),b.setAttribute("y1",String(K.y)),b.setAttribute("x2",String(H.x)),b.setAttribute("y2",String(H.y)),n.appendChild(b)}for(let T of S.handles){let H=t(T.at),K=r.createElementNS(te,"circle");K.setAttribute("class","vd-editor__knob"),K.setAttribute("cx",String(H.x)),K.setAttribute("cy",String(H.y)),K.setAttribute("r",String(Tg)),n.appendChild(K)}for(let T of S.anchors){let H=t(T.at),K=ne(T.selected?"vd-editor__anchor vd-editor__anchor--on":"vd-editor__anchor",{x:Math.round(H.x-Nn/2)+.5,y:Math.round(H.y-Nn/2)+.5,w:Nn,h:Nn});K.setAttribute("data-key",T.key),n.appendChild(K)}if(S.closeAt){let T=t(S.closeAt),H=r.createElementNS(te,"circle");H.setAttribute("class","vd-editor__close"),H.setAttribute("cx",String(T.x)),H.setAttribute("cy",String(T.y)),H.setAttribute("r",String(Nn)),n.appendChild(H)}let M=T=>({x:T.x-na/2,y:T.y-na/2,w:na,h:na});l=[...[...S.handles].reverse().map(T=>({kind:"handle",key:T.key,rect:M(t(T.at))})),...[...S.anchors].reverse().map(T=>({kind:"anchor",key:T.key,rect:M(t(T.at))}))]}function N(S){let $=t({x:S.x,y:S.y}),M=t({x:S.x,y:S.y+S.h}),T=r.createElementNS(te,"line");T.setAttribute("class","vd-editor__caret");let H=Math.round($.x)+.5;T.setAttribute("x1",String(H)),T.setAttribute("y1",String($.y)),T.setAttribute("x2",String(H)),T.setAttribute("y2",String(M.y)),n.appendChild(T)}function J(S){let $=t(S.at),M=r.createElementNS(te,"circle");return M.setAttribute("class","vd-editor__ring"),M.setAttribute("cx",String($.x)),M.setAttribute("cy",String($.y)),M.setAttribute("r",String(Og)),n.appendChild(M),{id:S.id,rect:{x:$.x-oa/2,y:$.y-oa/2,w:oa,h:oa}}}function A(S){let $=t(S.at),M=S.axis==="x"?El:ra,T=S.axis==="x"?ra:El,H=ne("vd-editor__spacer",{x:$.x-M/2,y:$.y-T/2,w:M,h:T});H.setAttribute("rx",String(El/2)),n.appendChild(H),S.label!==null&&pe(S.label,S.axis==="x"?{x:$.x,y:$.y-ra/2-Al-qe/2}:{x:$.x+ra/2+Al+qe,y:$.y});let K=S.axis==="x"?fc:uc,b=S.axis==="x"?uc:fc;return{id:S.id,rect:{x:$.x-K/2,y:$.y-b/2,w:K,h:b}}}function D(S){let $=w(S.frame),M=S.rotation??0;c=M===0?null:{angle:M,centre:{x:$.x+$.w/2,y:$.y+$.h/2}},_(c,()=>k(S,$)),S.handles&&S.rotatable&&(x=En.map(T=>{let{u:H,v:K}=Ar(T);return{handle:T,at:{x:$.x+$.w*H,y:$.y+$.h*K}}}))}function k(S,$){if(me("vd-editor__outline",Or($,Tr),Tr),!!S.handles){o=fi($).map(M=>({...M,bound:S.boundHandles.has(M.handle)}));for(let M of En){let{u:T,v:H}=Ar(M),K={x:$.x+$.w*T-Mr/2,y:$.y+$.h*H-Mr/2,w:Mr,h:Mr};n.appendChild(ne("vd-editor__halo",Or(K,lc+1))),n.appendChild(ne("vd-editor__handle",K))}a=S.adjusters.map(M=>{let T=t(M.at),H=r.createElementNS(te,"circle");H.setAttribute("class","vd-editor__halo"),H.setAttribute("cx",String(T.x)),H.setAttribute("cy",String(T.y)),H.setAttribute("r",String(dc+lc/2+.5)),n.appendChild(H);let K=r.createElementNS(te,"circle");return K.setAttribute("class","vd-editor__adjuster"),K.setAttribute("cx",String(T.x)),K.setAttribute("cy",String(T.y)),K.setAttribute("r",String(dc)),n.appendChild(K),{id:M.id,bound:M.bound,rect:{x:T.x-ta/2,y:T.y-ta/2,w:ta,h:ta}}})}}function V(S){let $=t(S.axis==="x"?{x:S.at,y:S.from}:{x:S.from,y:S.at}),M=t(S.axis==="x"?{x:S.at,y:S.to}:{x:S.to,y:S.at}),T=r.createElementNS(te,"line");T.setAttribute("class","vd-editor__guide"),T.setAttribute("x1",String(be($.x))),T.setAttribute("y1",String(be($.y))),T.setAttribute("x2",String(be(M.x))),T.setAttribute("y2",String(be(M.y))),n.appendChild(T)}function W(S){let $=t(S.axis==="x"?{x:S.from,y:S.at}:{x:S.at,y:S.from}),M=t(S.axis==="x"?{x:S.to,y:S.at}:{x:S.at,y:S.to}),T=r.createElementNS(te,"path");T.setAttribute("class","vd-editor__measure"),T.setAttribute("d",S.axis==="x"?`M${be($.x)} ${be($.y)-Lt} V${be($.y)+Lt} M${be($.x)} ${be($.y)} H${be(M.x)} M${be(M.x)} ${be(M.y)-Lt} V${be(M.y)+Lt}`:`M${be($.x)-Lt} ${be($.y)} H${be($.x)+Lt} M${be($.x)} ${be($.y)} V${be(M.y)} M${be(M.x)-Lt} ${be(M.y)} H${be(M.x)+Lt}`),n.appendChild(T);let H=r.createElementNS(te,"text");H.setAttribute("class","vd-editor__measure-text"),H.setAttribute("x",String(($.x+M.x)/2)),H.setAttribute("y",String(($.y+M.y)/2-(S.axis==="x"?mc:0))),S.axis==="y"&&H.setAttribute("dx",String(mc)),H.textContent=S.label,n.appendChild(H)}function pe(S,$){let M=Math.max(34,S.length*Ml+14),T=$.x-M/2,H=$.y-qe/2,K=ne("vd-editor__badge",{x:T,y:H,w:M,h:qe});K.setAttribute("rx",String(qe/2)),n.appendChild(K);let b=r.createElementNS(te,"text");b.setAttribute("class","vd-editor__badge-text"),b.setAttribute("x",String(T+M/2)),b.setAttribute("y",String(H+qe/2)),b.textContent=S,n.appendChild(b)}function re(S){let $=w(S.frame),M=Math.floor($.w/xc);if(M<3)return[];let T=S.label.length>M?`${S.label.slice(0,M-1)}\u2026`:S.label,H=r.createElementNS(te,"text");H.setAttribute("class",`vd-editor__page-label vd-editor__page-label--${S.state}`),H.setAttribute("x",String($.x)),H.setAttribute("y",String($.y-hc)),H.textContent=T,n.appendChild(H);let K=Math.min($.w,T.length*xc+4),b=Pg+6;return[{id:S.id,rect:{x:$.x,y:$.y-hc-b+3,w:K,h:b}}]}function we(S){let $=Rn(w(S.frame));n.appendChild(ne("vd-editor__lock",$));let M=`${S.label} \xB7 locked`,T=M.length*Ml+14,H=$.y+4,K=ne("vd-editor__lock-tag",{x:$.x+4,y:H,w:T,h:qe});K.setAttribute("rx","4"),n.appendChild(K);let b=r.createElementNS(te,"text");b.setAttribute("class","vd-editor__lock-text"),b.setAttribute("x",String($.x+4+T/2)),b.setAttribute("y",String(H+qe/2)),b.textContent=M,n.appendChild(b)}function xe(S){let $=Rn(w(S.frame)),M=ne(S.target?"vd-editor__slot vd-editor__slot--target":"vd-editor__slot",$);M.setAttribute("rx","3"),n.appendChild(M);let T=b=>b.length*Dg+16<=$.w,H=[];$.h>=20&&T(S.label)&&H.push([S.label,"vd-editor__slot-label"]),H.length>0&&$.h>=48&&T(cc)&&H.push([cc,"vd-editor__slot-hint"]);let K=$.y+$.h/2-(H.length-1)*pc/2;H.forEach(([b,U],B)=>{let R=r.createElementNS(te,"text");R.setAttribute("class",U),R.setAttribute("x",String($.x+$.w/2)),R.setAttribute("y",String(K+B*pc)),R.textContent=b,n.appendChild(R)})}function L(S){let $=S.frames.map(U=>Or(w(U),Tr));for(let U of $)n.appendChild(ne("vd-editor__presence",U));let M=$[0];if(!M||!S.label)return;let T=Math.max(34,S.label.length*Ml+14),H=M.y-qe-3<0?M.y+3:M.y-qe-3,K=ne("vd-editor__presence-tag",{x:M.x,y:H,w:T,h:qe});K.setAttribute("rx","4"),n.appendChild(K);let b=r.createElementNS(te,"text");b.setAttribute("class","vd-editor__presence-text"),b.setAttribute("x",String(M.x+T/2)),b.setAttribute("y",String(H+qe/2)),b.textContent=S.label,n.appendChild(b)}function me(S,$,M){let H=S==="vd-editor__highlight"?"vd-editor__halo vd-editor__halo--highlight":S==="vd-editor__hover"||S==="vd-editor__member"?"vd-editor__halo vd-editor__halo--quiet":"vd-editor__halo";n.appendChild(ne(H,Or($,M+1))),n.appendChild(ne(S,$))}function ne(S,$){let M=r.createElementNS(te,"rect");return M.setAttribute("class",S),M.setAttribute("x",String($.x)),M.setAttribute("y",String($.y)),M.setAttribute("width",String(Math.max(0,$.w))),M.setAttribute("height",String(Math.max(0,$.h))),M}return{element:n,render:P,hitHandle(S){let $=C(S,c);for(let M of o)if(et(M.rect,$.x,$.y))return{handle:M.handle,bound:M.bound};return null},hitAdjuster(S){let $=C(S,c);for(let M of a)if(et(M.rect,$.x,$.y))return{id:M.id,bound:M.bound};return null},hitSpacer(S){return $l(i,S)},hitPath(S){let $=C(S,m),M=l.find(T=>et(T.rect,$.x,$.y));return M?{kind:M.kind,key:M.key}:null},hitRotate(S){let $=C(S,c),M=o.length===0?null:x;if(!M)return null;for(let T of M){let H=Math.hypot($.x-T.at.x,$.y-T.at.y);if(H<Mr/2+2||H>Lg)continue;let{u:K,v:b}=Ar(T.handle);if(($.x-T.at.x)*(K*2-1)+($.y-T.at.y)*(b*2-1)>0)return T.handle}return null},hitRing(S){return $l(d,S)},hitPageLabel(S){return $l(y,S)},pageLabelRect(S){return y.find($=>$.id===S)?.rect??null},destroy(){n.remove(),o=[],a=[],i=[],d=[]}}}function $l(e,t){for(let r of e)if(et(r.rect,t.x,t.y))return r.id;return null}function be(e){return Math.round(e)+.5}function Rn(e){return{x:e.x+.5,y:e.y+.5,w:Math.max(0,e.w-1),h:Math.max(0,e.h-1)}}function Or(e,t){let r=t/2;return{x:e.x-r,y:e.y-r,w:e.w+t,h:e.h+t}}function vc(e,t){let r=[];return se(e.root,n=>{if(t.has(n.id))return!1;n.type!=="image"||ce(n.src)||e.assets[n.src]===void 0&&r.push({id:n.id,src:n.src,label:n.name??n.src})}),r}function Tl(e){if(e.length<2)return null;let t=Ll("x",e),r=Ll("y",e);return r.length===1&&t.length===e.length?bc("x",e,t):t.length===1&&r.length===e.length?bc("y",e,r):r.length>=2&&t.length>=2?Ng(e,t,r):null}function Ll(e,t){let r=[...t].sort((o,a)=>Dr(o.frame,e)-Dr(a.frame,e)),n=[];for(let o of r){let a=n[n.length-1];if(a&&Dr(o.frame,e)<a.hi-.01){n[n.length-1]={lo:a.lo,hi:Math.max(a.hi,sa(o.frame,e)),from:Math.min(a.from,Dr(o.frame,aa(e))),to:Math.max(a.to,sa(o.frame,aa(e))),members:[...a.members,o.id]};continue}n.push({lo:Dr(o.frame,e),hi:sa(o.frame,e),from:Dr(o.frame,aa(e)),to:sa(o.frame,aa(e)),members:[o.id]})}return n}function bc(e,t,r){return{kind:"run",items:t,series:[ia(e,r)],order:r.flatMap(n=>n.members)}}function Ng(e,t,r){if(t.length*r.length!==e.length)return null;let n=[];for(let o of r)for(let a of t){let i=o.members.filter(d=>a.members.includes(d));if(i.length!==1||i[0]===void 0)return null;n.push(i[0])}return{kind:"grid",items:e,series:[ia("x",t),ia("y",r)],order:n}}function ia(e,t){let r=[];for(let n=0;n+1<t.length;n+=1){let o=t[n],a=t[n+1];!o||!a||r.push(a.lo-o.hi)}return{axis:e,tracks:t,gaps:r}}function st(e,t){return e.series.find(r=>r.axis===t)}function Ol(e){let t=e[0];return t===void 0?!1:e.every(r=>Math.abs(r-t)<.01)}function Dl(e){let t=[];for(let r of e.series){let n=e.series.find(o=>o.axis!==r.axis);for(let o=0;o<r.gaps.length;o+=1){let a=r.tracks[o],i=r.tracks[o+1],d=r.gaps[o];if(!a||!i||d===void 0)continue;let l=(a.hi+i.lo)/2,c=n?n.tracks.map(m=>(m.lo+m.hi)/2):[(Math.max(a.from,i.from)+Math.min(a.to,i.to))/2];for(let m of c)t.push({id:wc(r.axis,o),axis:r.axis,index:o,gap:d,at:r.axis==="x"?{x:l,y:m}:{x:m,y:l}})}}return t}function wc(e,t){return`${e}:${t}`}function la(e){let[t,r]=e.split(":");if(t!=="x"&&t!=="y"||r===void 0)return null;let n=Number(r);return Number.isInteger(n)&&n>=0?{axis:t,index:n}:null}function Pl(e){return e.items.map(t=>({id:t.id,at:{x:t.frame.x+t.frame.w/2,y:t.frame.y+t.frame.h/2}}))}function da(e,t,r){let n=st(e,t);return n?fa(n,r):new Map}function fa(e,t){let r=new Map,n=e.tracks[0];if(!n)return r;let o=n.hi;for(let a=1;a<e.tracks.length;a+=1){let i=e.tracks[a];if(!i)continue;let d=o+t;for(let l of i.members)r.set(l,d-i.lo);o=d+(i.hi-i.lo)}return r}function Nl(e,t){return ia(t,Ll(t,e))}function Rl(e){let t=e.tracks,r=t[0],n=t[t.length-1];if(!r||!n||t.length<3)return null;let o=t.reduce((a,i)=>a+(i.hi-i.lo),0);return(n.hi-r.lo-o)/(t.length-1)}function Il(e,t){let r=Rg(e),n=0,o=1/0;for(let a=0;a<r.length;a+=1){let i=r[a];if(!i)continue;let d=Math.hypot(i.x-t.x,i.y-t.y);d<o&&(o=d,n=a)}return n}function Rg(e){if(e.kind==="grid"){let r=st(e,"x")?.tracks??[];return(st(e,"y")?.tracks??[]).flatMap(o=>r.map(a=>({x:(a.lo+a.hi)/2,y:(o.lo+o.hi)/2})))}let t=e.series[0];return t?t.tracks.map(r=>t.axis==="x"?{x:(r.lo+r.hi)/2,y:(r.from+r.to)/2}:{x:(r.from+r.to)/2,y:(r.lo+r.hi)/2}):[]}function Fl(e,t,r){let n=[...e],[o]=n.splice(t,1);return o===void 0?[...e]:(n.splice(Math.max(0,Math.min(r,n.length)),0,o),n)}function Bl(e,t){let r=new Map(e.items.map(d=>[d.id,d.frame])),n=new Map;if(e.kind==="grid"){let d=st(e,"x")?.tracks??[],l=st(e,"y")?.tracks??[];return t.forEach((c,m)=>{let x=d[m%d.length],y=l[Math.floor(m/d.length)];x&&y&&n.set(c,{x:x.lo,y:y.lo})}),n}let o=e.series[0],a=o?.tracks[0];if(!o||!a)return n;let i=a.lo;return t.forEach((d,l)=>{let c=r.get(d);if(!c)return;let m=o.axis==="x"?c.w:c.h;n.set(d,o.axis==="x"?{x:i,y:c.y}:{x:c.x,y:i}),i+=m+(o.gaps[l]??0)}),n}function Hl(e,t,r){let n=new Map,o=e.items.find(l=>l.id===t),a=e.items.find(l=>l.id===r);if(!o||!a||t===r)return n;let i=e.kind==="grid"?["x","y"]:[e.series[0]?.axis??"x"],d=(l,c)=>({x:i.includes("x")?c.frame.x:l.frame.x,y:i.includes("y")?c.frame.y:l.frame.y});return n.set(t,d(o,a)),n.set(r,d(a,o)),n}function aa(e){return e==="x"?"y":"x"}function Dr(e,t){return t==="x"?e.x:e.y}function sa(e,t){return t==="x"?e.x+e.w:e.y+e.h}var kc="vd-editor-styles",Sc=`
136
+ `;function yu(e){if(e.getElementById(xu))return;let t=e.createElement("style");t.id=xu,t.textContent=gu,e.head.appendChild(t)}function bu(e,t,r,n){return t?Ox(e,t,r,n):Lx(e,r,n)}function Lx(e,t,r){let n=ri(e,r);return{measurer:n,update:o=>{n.load(o,t)},afterPaint:()=>{},destroy:()=>n.destroy()}}var vu=new WeakMap;function Ox(e,t,r,n){let o,a,i,l=()=>{if(!o)throw new Error("canvasFonts: update() before measuring");return o};return{measurer:{advance:(c,h)=>l().measurer.advance(c,h),metrics:c=>l().measurer.metrics(c),itemize:c=>l().measurer.itemize(c)},update(c){o&&c.fonts===a||(i?.(),o?.dispose(),o=t.forDocument(c,r?{loader:r}:{}),a=c.fonts,i=o.onChange(n))},afterPaint(){let c=e.fonts;if(!o||!c||typeof FontFace!="function")return;let h=vu.get(e);h||vu.set(e,h=new Set);for(let x of o.usedFaces()){if(h.has(x.id))continue;h.add(x.id);let y=new FontFace(x.id,Dx(x.bytes),{weight:String(x.weight),style:x.style});c.add(y),y.load().catch(()=>c.delete(y))}},destroy(){i?.(),o?.dispose(),o=void 0}}}function Dx(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}var Px=.01,Nx=.004,wu=40,Rx=16;function Ho(e,t){yu(e.ownerDocument);let r=t.document,n=S=>bu(e.ownerDocument,S,t.loadFont,()=>{E(r)}),o=n(t.fonts),a={advance:(S,U)=>o.measurer.advance(S,U),metrics:S=>o.measurer.metrics(S),itemize:S=>o.measurer.itemize?.(S)??[S]};o.update(r);let i=Ae(r),l=()=>t.resolveAsset?{measure:a,resolveAsset:t.resolveAsset}:{measure:a},d=_n(r,i,l()),c=t.camera??Io,h=t.interactive??!0,x=t.wheel??"always";e.classList.add("vd-viewer"),t.surface&&(e.style.background=t.surface);let y=e.ownerDocument.createElementNS(ne,"svg");y.setAttribute("class","vd-viewer__surface"),y.setAttribute("width","100%"),y.setAttribute("height","100%");let b=e.ownerDocument.createElementNS(ne,"g");b.setAttribute("class","vd-viewer__camera"),b.style.isolation="isolate",y.appendChild(b);let P=e.ownerDocument.createElementNS(ne,"defs");b.appendChild(P);let k=e.ownerDocument.createElementNS(ne,"rect");k.setAttribute("class","vd-viewer__page"),b.appendChild(k),e.appendChild(y);let _=new Map;function B(){b.setAttribute("transform",oi(c))}function R(){J();let S=d.background!==void 0;k.setAttribute("x",String(d.x)),k.setAttribute("y",String(d.y)),k.setAttribute("width",String(S?d.width:0)),k.setAttribute("height",String(S?d.height:0)),ye(k,"fill",d.background??null);let U=new Set,W=k;for(let I of d.items){U.add(I.id);let z=_.get(I.id);(!z||z.tagName!==ku(I))&&(z?.remove(),z=e.ownerDocument.createElementNS(ne,ku(I)),z.setAttribute("data-vd-id",I.id),_.set(I.id,z)),Fx(z,I),W.nextSibling!==z&&b.insertBefore(z,W.nextSibling),W=z}for(let[I,z]of _)U.has(I)||(z.remove(),_.delete(I));o.afterPaint(),t.onSceneChange?.(d,r)}function J(){P.replaceChildren();let S=d.items.filter(U=>U.shadows.length>0);if(d.gradients.length>0||S.length>0){let U=`<svg xmlns="${ne}">${d.gradients.map(Zs).join("")}${S.map(I=>Qs(I)).join("")}</svg>`,W=new DOMParser().parseFromString(U,"image/svg+xml");for(let I of[...W.documentElement.children])P.appendChild(e.ownerDocument.importNode(I,!0))}for(let U of d.clips){let W=e.ownerDocument.createElementNS(ne,"clipPath");W.setAttribute("id",_u(U.id)),U.parent!==void 0&&W.setAttribute("clip-path",si(U.parent));let I=e.ownerDocument.createElementNS(ne,"rect");I.setAttribute("x",String(U.x)),I.setAttribute("y",String(U.y)),I.setAttribute("width",String(U.w)),I.setAttribute("height",String(U.h)),W.appendChild(I),P.appendChild(W)}}function E(S){r=S,o.update(r),i=Ae(r),d=_n(r,i,l()),R()}function D(S){let U=e.getBoundingClientRect();return{x:S.clientX-U.left,y:S.clientY-U.top}}let N=0,A=0;function G(){e.classList.add("vd-viewer--interacting"),A&&clearTimeout(A),A=setTimeout(()=>{A=0,e.classList.remove("vd-viewer--interacting")},180)}function se(){N&&(cancelAnimationFrame(N),N=0),B(),t.onCameraChange?.(c)}function me(S){c=S,se()}function he(S){c=S,G(),!N&&(N=requestAnimationFrame(()=>{N=0,B(),t.onCameraChange?.(c)}))}let ke=null,we=null,T=!1,Q=S=>{if(x==="modifier"&&!S.ctrlKey&&!S.metaKey)return;S.preventDefault();let U=D(S),W=S.deltaMode===1?Rx:S.deltaMode===2?e.clientHeight||800:1,I=S.deltaX*W,z=S.deltaY*W;if(S.ctrlKey||S.metaKey){let X=S.ctrlKey?Px:Nx,tt=Math.max(-wu,Math.min(wu,z));he(Bo(c,U,Math.exp(-tt*X)));return}if(S.shiftKey&&I===0){he(Tt(c,-z,0));return}he(Tt(c,-I,-z))},w=S=>{(S.button===1||S.button===0&&T)&&(S.preventDefault(),ke=S.pointerId,we=D(S),e.setPointerCapture(S.pointerId))},$=S=>{if(ke!==S.pointerId||!we)return;let U=D(S);he(Tt(c,U.x-we.x,U.y-we.y)),we=U},M=S=>{ke===S.pointerId&&(ke=null,we=null,e.hasPointerCapture(S.pointerId)&&e.releasePointerCapture(S.pointerId))},L=S=>{S.code==="Space"&&(T=!0)},H=S=>{S.code==="Space"&&(T=!1)};h&&(e.addEventListener("wheel",Q,{passive:!1}),e.addEventListener("pointerdown",w),e.addEventListener("pointermove",$),e.addEventListener("pointerup",M),e.addEventListener("pointercancel",M),e.ownerDocument.addEventListener("keydown",L),e.ownerDocument.addEventListener("keyup",H)),B(),R();let q={element:e,surface:y,update:E,getDocument:()=>r,getScene:()=>d,getResolution:()=>i,getMeasurer:()=>a,setFonts(S){o.destroy(),o=n(S),E(r)},getCamera:()=>c,setCamera:me,zoomBy(S,U){let W=e.getBoundingClientRect(),I=U??{x:W.width/2,y:W.height/2};me(Bo(c,I,S))},fitToContent(S=32){let U=e.getBoundingClientRect();me(Mr({x:d.x,y:d.y,width:d.width,height:d.height},{width:U.width||d.width,height:U.height||d.height},S))},screenToDocument:S=>Fo(c,S),documentToScreen:S=>ni(c,S),pointerPoint:D,hitTest(S,U){for(let W=d.items.length-1;W>=0;W--){let I=d.items[W];if(I&&Gx(I,S,Kx/c.zoom)&&(!U||U(I.id)))return I.id}return null},linkAt(S,U){for(let W=d.items.length-1;W>=0;W--){let I=d.items[W];if(I?.kind!=="text"||U&&!U(I.id))continue;let z=I.rotation===0?S:Pe(S,{x:I.x+I.w/2,y:I.y+I.h/2},-I.rotation);for(let X of I.lines){if(z.y<X.y||z.y>X.y+X.h)continue;let tt=X.spans.find(ie=>z.x>=ie.x&&z.x<=ie.x+ie.w);if(tt)return tt.style.link}}},itemOf:S=>d.items.find(U=>U.id===S),elementOf:S=>_.get(S),destroy(){h&&(e.removeEventListener("wheel",Q),e.removeEventListener("pointerdown",w),e.removeEventListener("pointermove",$),e.removeEventListener("pointerup",M),e.removeEventListener("pointercancel",M),e.ownerDocument.removeEventListener("keydown",L),e.ownerDocument.removeEventListener("keyup",H)),N&&cancelAnimationFrame(N),A&&clearTimeout(A),N=0,A=0,o.destroy(),e.classList.remove("vd-viewer--interacting"),y.remove(),_.clear(),e.classList.remove("vd-viewer")}};return t.autoFit&&q.fitToContent(),q}var Ix="vd-clip-";function _u(e){return Ix+e}function si(e){return`url(#${_u(e)})`}function ku(e){return ti(e)?"g":ai(e)}function ai(e){switch(e.kind){case"ellipse":return"ellipse";case"frame":return"rect";case"image":return e.href===void 0?"rect":"image";case"rect":return"rect";case"text":return"text";case"vector":return"path"}}function Fx(e,t){if(e.tagName!=="g"){Su(e,t);return}ye(e,"clip-path",t.clip===void 0?null:si(t.clip)),e.style.mixBlendMode=t.blend==="normal"?"":t.blend;let r=e.firstElementChild;(!r||r.tagName!==ai(t))&&(r?.remove(),r=e.ownerDocument.createElementNS(ne,ai(t)),e.appendChild(r)),Su(r,{...t,clip:void 0,blend:"normal"})}function Su(e,t){switch(ye(e,"clip-path",t.clip===void 0?null:si(t.clip)),ye(e,"transform",t.rotation===0?null:ei(t)),e.style.mixBlendMode=t.blend==="normal"?"":t.blend,e.style.filter=t.shadows.length>0?`url(#${Ro}${t.id})`:"",t.kind){case"ellipse":qx(e,t);return;case"frame":Bx(e,t);return;case"image":Hx(e,t);return;case"rect":zx(e,t);return;case"text":Vx(e,t);return;case"vector":jx(e,t);return}}function Bx(e,t){e.setAttribute("class","vd-viewer__page"),e.setAttribute("x",String(t.x)),e.setAttribute("y",String(t.y)),e.setAttribute("width",String(t.w)),e.setAttribute("height",String(t.h)),ye(e,"fill",t.background??null)}function Hx(e,t){if(e.setAttribute("x",String(t.x)),e.setAttribute("y",String(t.y)),e.setAttribute("width",String(t.w)),e.setAttribute("height",String(t.h)),ye(e,"opacity",t.opacity<1?String(t.opacity):null),t.href===void 0){e.setAttribute("class","vd-viewer__missing"),ye(e,"rx",t.radius>0?String(t.radius):null);return}e.setAttribute("href",t.href),e.setAttribute("preserveAspectRatio",Ux[t.fit])}var Ux={cover:"xMidYMid slice",contain:"xMidYMid meet",fill:"none"};function Vx(e,t){ye(e,"opacity",t.opacity<1?String(t.opacity):null),e.setAttribute("xml:space","preserve");let r=t.lines.flatMap(o=>o.spans).filter(o=>o.text!==""),n=e.ownerDocument;for(;e.childNodes.length>r.length;)e.lastChild?.remove();for(;e.childNodes.length<r.length;)e.appendChild(n.createElementNS(ne,"tspan"));r.forEach((o,a)=>{let i=e.childNodes[a];i.textContent=o.text,i.setAttribute("x",String(o.x)),i.setAttribute("y",String(o.y)),i.setAttribute("font-family",o.style.family),i.setAttribute("font-size",String(o.style.size)),i.setAttribute("fill",o.style.fill),ye(i,"font-weight",o.style.weight===400?null:String(o.style.weight)),ye(i,"font-style",o.style.italic?"italic":null),ye(i,"letter-spacing",o.style.letterSpacing===0?null:String(o.style.letterSpacing)),ye(i,"data-vd-link",o.style.link??null);let l=[o.style.underline?"underline":"",o.style.strike?"line-through":""].filter(Boolean).join(" ");ye(i,"text-decoration",l===""?null:l)})}function zx(e,t){e.removeAttribute("class"),e.setAttribute("x",String(t.x)),e.setAttribute("y",String(t.y)),e.setAttribute("width",String(t.w)),e.setAttribute("height",String(t.h)),e.setAttribute("fill",t.fill),ye(e,"rx",t.radius>0?String(t.radius):null),ye(e,"stroke",t.stroke??null),ye(e,"stroke-width",t.stroke&&t.strokeWidth>0?String(t.strokeWidth):null),ye(e,"opacity",t.opacity<1?String(t.opacity):null)}function Cu(e,t){e.setAttribute("fill",t.fill),ye(e,"stroke",t.stroke??null),ye(e,"stroke-width",t.stroke&&t.strokeWidth>0?String(t.strokeWidth):null),ye(e,"opacity",t.opacity<1?String(t.opacity):null)}function qx(e,t){e.setAttribute("cx",String(t.x+t.w/2)),e.setAttribute("cy",String(t.y+t.h/2)),e.setAttribute("rx",String(t.w/2)),e.setAttribute("ry",String(t.h/2)),Cu(e,t)}function jx(e,t){e.setAttribute("d",t.d),Cu(e,t),ye(e,"fill-rule",t.rule==="nonzero"?null:t.rule),ye(e,"stroke-linecap",t.cap==="butt"?null:t.cap),ye(e,"stroke-linejoin",t.join==="miter"?null:t.join)}function ye(e,t,r){r===null?e.removeAttribute(t):e.setAttribute(t,r)}var Kx=4;function Gx(e,t,r){let n=e.rotation===0?t:Pe(t,{x:e.x+e.w/2,y:e.y+e.h/2},-e.rotation),o=n.x>=e.x&&n.x<=e.x+e.w&&n.y>=e.y&&n.y<=e.y+e.h;if(e.kind==="ellipse"){let a=e.stroke!==void 0?e.strokeWidth/2:0,i=e.w/2+a,l=e.h/2+a;if(i<=0||l<=0)return!1;let d=(n.x-(e.x+e.w/2))/i,c=(n.y-(e.y+e.h/2))/l;return d*d+c*c<=1}if(e.kind==="vector"){let a=e.stroke!==void 0&&e.strokeWidth>0;return as(e.contours,n,{fill:e.fill!=="none",rule:e.rule,reach:(a?e.strokeWidth/2:0)+r})}return o}function ii(e,t){let r=e.root.id;if(r===t)return e;let n=o=>{if(!pe(o))return o;let a=Ze(o.expr);return!a.ok||!er(a.ast).nodes.includes(r)?o:{expr:vn($t(a.ast,i=>i===r?t:void 0))}};return{...e,root:{...Eu(e.root,n),id:t}}}function Eu(e,t){let r=e,n={};for(let[o,a]of Object.entries(r)){if(o==="children"&&Array.isArray(a)){n[o]=a.map(i=>Eu(i,t));continue}n[o]=t(a)}return n}var di=["nw","n","ne","e","se","s","sw","w"],Mn=["nw","ne","se","sw"];function Uo(e){let t=[];return e.includes("w")&&t.push("x","w"),e.includes("e")&&t.push("w"),e.includes("n")&&t.push("y","h"),e.includes("s")&&t.push("h"),t}function $r(e){let t=e.includes("w")?0:e.includes("e")?1:.5,r=e.includes("n")?0:e.includes("s")?1:.5;return{u:t,v:r}}function fi(e){switch(e){case"e":case"w":return 0;case"n":case"s":return 90;case"nw":case"se":return 45;case"ne":case"sw":return 135}}var An=1;function ht(e,t,r,n){let{x:o,y:a,w:i,h:l}=e;if(t.includes("w")){let d=o+i;o=Math.min(o+r,d-An),i=d-o}if(t.includes("e")&&(i=Math.max(An,i+r)),t.includes("n")){let d=a+l;a=Math.min(a+n,d-An),l=d-a}return t.includes("s")&&(l=Math.max(An,l+n)),{x:o,y:a,w:i,h:l}}function tr(e,t){return{x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),w:Math.abs(t.x-e.x),h:Math.abs(t.y-e.y)}}function Vo(e,t){let r=[];return t.x!==e.x&&r.push("x"),t.y!==e.y&&r.push("y"),t.w!==e.w&&r.push("w"),t.h!==e.h&&r.push("h"),r}function Qe(e){if(e.length===0)return null;let t=1/0,r=1/0,n=-1/0,o=-1/0;for(let a of e)t=Math.min(t,a.x),r=Math.min(r,a.y),n=Math.max(n,a.x+a.w),o=Math.max(o,a.y+a.h);return{x:t,y:r,w:n-t,h:o-r}}function ui(e,t){return e.x<t.x+t.w&&e.x+e.w>t.x&&e.y<t.y+t.h&&e.y+e.h>t.y}function et(e,t,r){return t>=e.x&&t<=e.x+e.w&&r>=e.y&&r<=e.y+e.h}var Tr=7,li=15,En=9;function ci(e){let t=[],r=li/2;for(let l of Mn){let{u:d,v:c}=$r(l);t.push({handle:l,rect:{x:e.x+e.w*d-r,y:e.y+e.h*c-r,w:li,h:li}})}let n=r,o=Math.max(0,e.w-n*2),a=Math.max(0,e.h-n*2),i=En/2;return t.push({handle:"n",rect:{x:e.x+n,y:e.y-i,w:o,h:En}},{handle:"s",rect:{x:e.x+n,y:e.y+e.h-i,w:o,h:En}},{handle:"w",rect:{x:e.x-i,y:e.y+n,w:En,h:a}},{handle:"e",rect:{x:e.x+e.w-i,y:e.y+n,w:En,h:a}}),t}function Mu(e,t,r,n,o){if(o===0)return ht(e,t,r,n);let a=Pe({x:r,y:n},{x:0,y:0},-o),i=ht(e,t,a.x,a.y),l=Ve(e),d=Ve(i),c={x:l.x-d.x,y:l.y-d.y},h=Pe(c,{x:0,y:0},o);return{...i,x:i.x+c.x-h.x,y:i.y+c.y-h.y}}function Au(e,t){return Math.atan2(t.y-e.y,t.x-e.x)*180/Math.PI}function $u(e,t,r,n,o){let a=Au(e,r)-Au(e,t);return o?Math.round((n+a)/o)*o-n:a}function Tu(e,t,r){return e.map(n=>{let o=Ve(n.frame),a=Pe(o,t,r);return{id:n.id,frame:{...n.frame,x:a.x-n.frame.w/2,y:a.y-n.frame.h/2},rotation:gn(n.rotation+r)}})}function Lu(e,t,r,n){let o=r.w===0?1:n.w/r.w,a=r.h===0?1:n.h/r.h,i=t*Math.PI/180,l=Math.cos(i),d=Math.sin(i),c=e.w*Math.hypot(o*l,a*d),h=e.h*Math.hypot(o*d,a*l),x=Ve(e),y=n.x+(x.x-r.x)*o,b=n.y+(x.y-r.y)*a;return{x:y-c/2,y:b-h/2,w:c,h}}function Me(e,t){return`${e}:${t}`}function jo(e){let[t,r]=e.split(":").map(Number);if(!(t===void 0||r===void 0||!Number.isInteger(t)||!Number.isInteger(r)))return{contour:t,index:r}}function Ou(e){let t=e.split(":"),r=t[2],n=jo(t.slice(0,2).join(":"));if(!(!n||r!=="in"&&r!=="out"))return{...n,side:r}}function hi(e,t){let r=jo(t);return r?e[r.contour]?.anchors[r.index]:void 0}function mi(e,t){let r=[];for(let n of t){let o=jo(n);o&&e[o.contour]?.anchors[o.index]&&r.push(Me(o.contour,o.index))}return r}function xi(e){return e.flatMap((t,r)=>t.anchors.map((n,o)=>Me(r,o)))}function pi(e,t,r,n){return e.map((o,a)=>a===t?{...o,anchors:o.anchors.map((i,l)=>l===r?n:i)}:o)}var $n=(e,t,r)=>({x:e.x+t,y:e.y+r});function Ko(e,t,r,n){return e.map((o,a)=>({...o,anchors:o.anchors.map((i,l)=>t.has(Me(a,l))?at($n(i,r,n),i.in&&$n(i.in,r,n),i.out&&$n(i.out,r,n)):i)}))}function zo(e){if(!e.in||!e.out)return!1;let t=e.in.x-e.x,r=e.in.y-e.y,n=e.out.x-e.x,o=e.out.y-e.y,a=Math.hypot(t,r),i=Math.hypot(n,o);return a===0||i===0?!1:(t*n+r*o)/(a*i)<-.995}function qo(e,t,r,n,o,a){let i=e[t]?.anchors[r];if(!i)return[...e];let d=i[n==="in"?"out":"in"];if(a.smooth&&!a.breakSmooth&&d){let h=Math.hypot(d.x-i.x,d.y-i.y),x=o.x-i.x,y=o.y-i.y,b=Math.hypot(x,y);b>0&&(d={x:i.x-x/b*h,y:i.y-y/b*h})}let c=n==="in"?at(i,o,d):at(i,d,o);return pi(e,t,r,c)}function Du(e,t){let r=jo(t),n=r?e[r.contour]:void 0,o=n?.anchors[r?.index??-1];if(!r||!n||!o)return[...e];if(o.in||o.out)return pi(e,r.contour,r.index,at(o));let a=n.anchors.length,i=r.index>0?n.anchors[r.index-1]:n.closed?n.anchors[a-1]:void 0,l=r.index<a-1?n.anchors[r.index+1]:n.closed?n.anchors[0]:void 0;if(!i&&!l)return[...e];let d=i??o,c=l??o,h=c.x-d.x,x=c.y-d.y,y=Math.hypot(h,x);if(y===0)return[...e];h/=y,x/=y;let b=i?Math.hypot(o.x-i.x,o.y-i.y)/3:0,P=l?Math.hypot(l.x-o.x,l.y-o.y)/3:0,k=i?{x:o.x-h*b,y:o.y-x*b}:void 0,_=l?{x:o.x+h*P,y:o.y+x*P}:void 0;return pi(e,r.contour,r.index,at(o,k,_))}function Pu(e,t){let r=[];return e.forEach((n,o)=>{let a=n.anchors.filter((i,l)=>!t.has(Me(o,l)));a.length>=2&&r.push({closed:n.closed,anchors:a})}),r}function Nu(e,t,r,n,o,a,i){let l=e[t];if(!l)return[...e];let d=l.anchors.length,c=(r+1)%d;if(i)return Ko(e,new Set([Me(t,r),Me(t,c)]),o,a);let h=Math.min(.85,Math.max(.15,n)),x=1/(3*(1-h)*h),y=l.anchors[r],b=l.anchors[c],P=$n(y.out??y,o*x,a*x),k=$n(b.in??b,o*x,a*x),_=qo(e,t,r,"out",P,{smooth:zo(y),breakSmooth:!1});return _=qo(_,t,c,"in",k,{smooth:zo(b),breakSmooth:!1}),_}function Ru(e,t){return e.map((r,n)=>r.closed||r.anchors.length<2?r:t.size===0||t.has(Me(n,0))&&t.has(Me(n,r.anchors.length-1))?{...r,closed:!0}:r)}function gi(e,t){let r=[],n=new Set,o=(a,i,l)=>{let d=e[a]?.anchors[i],c=d?.[l],h=`${Me(a,i)}:${l}`;!d||!c||n.has(h)||(n.add(h),r.push({key:h,at:c,anchor:d}))};return e.forEach((a,i)=>{let l=a.anchors.length;a.anchors.forEach((d,c)=>{if(!t.has(Me(i,c)))return;o(i,c,"in"),o(i,c,"out");let h=c>0?c-1:a.closed?l-1:-1,x=c<l-1?c+1:a.closed?0:-1;h>=0&&o(i,h,"out"),x>=0&&o(i,x,"in")})}),r}function Tn(e,t){let r=t.x-e.x,n=t.y-e.y,o=Math.round(Math.atan2(n,r)/(Math.PI/4))*(Math.PI/4),a=r*Math.cos(o)+n*Math.sin(o);return{x:e.x+Math.cos(o)*a,y:e.y+Math.sin(o)*a}}function Iu(e){return{closed:e.closed,anchors:[...e.anchors].reverse().map(t=>at(t,t.out,t.in))}}function yi(e){if(!e)return null;for(let t of e.items){if(t.kind!=="file"||!t.type.startsWith("image/"))continue;let r=t.getAsFile();if(r)return r}return null}async function Go(e,t){let r;try{r=await createImageBitmap(e)}catch{return null}try{let n=Math.min(1,t/Math.max(r.width,r.height));return n>=1?{bytes:new Uint8Array(await e.arrayBuffer()),type:e.type||"image/png",width:r.width,height:r.height}:await Jx(r,n,e.type)}finally{r.close()}}async function Jx(e,t,r){let n=Math.max(1,Math.round(e.width*t)),o=Math.max(1,Math.round(e.height*t)),a=document.createElement("canvas");a.width=n,a.height=o;let i=a.getContext("2d");if(!i)return null;i.drawImage(e,0,0,n,o);let l=r==="image/png"?"image/png":"image/webp",d=await new Promise(c=>{a.toBlob(c,l,.9)});return d?{bytes:new Uint8Array(await d.arrayBuffer()),type:d.type||l,width:n,height:o}:null}function Fu(e,t,r,n){let o=Math.min(1,r/e,n/t);return{w:Math.round(e*o),h:Math.round(t*o)}}var Zx={left:"x",hcenter:"x",right:"x",top:"y",vcenter:"y",bottom:"y"};function Wo(e){return Zx[e]}function Qx(e,t,r){switch(e){case"left":return t.x;case"hcenter":return t.x+(t.w-r)/2;case"right":return t.x+t.w-r;case"top":return t.y;case"vcenter":return t.y+(t.h-r)/2;case"bottom":return t.y+t.h-r}}function vi(e,t,r){let n=Wo(r),o=new Map;for(let a of e){let i=n==="x"?a.frame.w:a.frame.h,l=n==="x"?a.frame.x:a.frame.y;o.set(a.id,Qx(r,t,i)-l)}return o}var Bu=[{key:"nw",sx:0,sy:0},{key:"ne",sx:1,sy:0},{key:"se",sx:1,sy:1},{key:"sw",sx:0,sy:1}],eg={id:"radius",prop:"radius",handles(e,t,r){let n=this.max(e),o=Math.min(Math.max(t,r),Math.max(n,r));return Bu.map(({key:a,sx:i,sy:l})=>({id:`radius:${a}`,at:{x:e.x+(i===0?o:e.w-o),y:e.y+(l===0?o:e.h-o)}}))},valueAt(e,t,r){let n=rg(t);if(!n)return 0;let o=e.x+(n.sx===0?0:e.w),a=e.y+(n.sy===0?0:e.h),i=Math.max(0,n.sx===0?r.x-o:o-r.x),l=Math.max(0,n.sy===0?r.y-a:a-r.y);return Math.min((i+l)/2,this.max(e))},max(e){return Math.max(0,Math.min(e.w,e.h)/2)}},tg={canvas:[],frame:[],group:[],rect:[eg]};function Ln(e){return tg[e.type]??[]}function Xo(e,t){let r=t.split(":")[0];return Ln(e).find(n=>n.id===r)}function rg(e){let t=e.split(":")[1];return Bu.find(r=>r.key===t)}var bi=[["path",{d:"m15 16 2.536-7.328a1.02 1.02 1 0 1 1.928 0L22 16"}],["path",{d:"M15.697 14h5.606"}],["path",{d:"m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16"}],["path",{d:"M3.304 13h6.392"}]];var wi=[["path",{d:"M2 12h20"}],["path",{d:"M10 16v4a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-4"}],["path",{d:"M10 8V4a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v4"}],["path",{d:"M20 16v1a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2v-1"}],["path",{d:"M14 8V7c0-1.1.9-2 2-2h2a2 2 0 0 1 2 2v1"}]];var ki=[["path",{d:"M12 2v20"}],["path",{d:"M8 10H4a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h4"}],["path",{d:"M16 10h4a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2h-4"}],["path",{d:"M8 20H7a2 2 0 0 1-2-2v-2c0-1.1.9-2 2-2h1"}],["path",{d:"M16 14h1a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2h-1"}]];var Si=[["rect",{width:"6",height:"16",x:"4",y:"2",rx:"2"}],["rect",{width:"6",height:"9",x:"14",y:"9",rx:"2"}],["path",{d:"M22 22H2"}]];var _i=[["rect",{width:"16",height:"6",x:"2",y:"4",rx:"2"}],["rect",{width:"9",height:"6",x:"9",y:"14",rx:"2"}],["path",{d:"M22 22V2"}]];var Ci=[["rect",{width:"6",height:"14",x:"4",y:"5",rx:"2"}],["rect",{width:"6",height:"10",x:"14",y:"7",rx:"2"}],["path",{d:"M17 22v-5"}],["path",{d:"M17 7V2"}],["path",{d:"M7 22v-3"}],["path",{d:"M7 5V2"}]];var Ei=[["rect",{width:"6",height:"16",x:"4",y:"6",rx:"2"}],["rect",{width:"6",height:"9",x:"14",y:"6",rx:"2"}],["path",{d:"M22 2H2"}]];var Ai=[["rect",{width:"9",height:"6",x:"6",y:"14",rx:"2"}],["rect",{width:"16",height:"6",x:"6",y:"4",rx:"2"}],["path",{d:"M2 2v20"}]];var Mi=[["path",{d:"M22 17h-3"}],["path",{d:"M22 7h-5"}],["path",{d:"M5 17H2"}],["path",{d:"M7 7H2"}],["rect",{x:"5",y:"14",width:"14",height:"6",rx:"2"}],["rect",{x:"7",y:"4",width:"10",height:"6",rx:"2"}]];var $i=[["rect",{width:"14",height:"6",x:"5",y:"16",rx:"2"}],["rect",{width:"10",height:"6",x:"7",y:"2",rx:"2"}],["path",{d:"M2 12h20"}]];var Ti=[["rect",{width:"14",height:"6",x:"5",y:"12",rx:"2"}],["rect",{width:"10",height:"6",x:"7",y:"2",rx:"2"}],["path",{d:"M2 22h20"}]];var Li=[["rect",{width:"14",height:"6",x:"5",y:"16",rx:"2"}],["rect",{width:"10",height:"6",x:"7",y:"6",rx:"2"}],["path",{d:"M2 2h20"}]];var Oi=[["circle",{cx:"15",cy:"9",r:"7"}],["circle",{cx:"9",cy:"15",r:"7"}]];var Di=[["path",{d:"M20 6 9 17l-5-5"}]];var Pi=[["path",{d:"m6 9 6 6 6-6"}]];var Ni=[["path",{d:"m9 18 6-6-6-6"}]];var Ri=[["circle",{cx:"12",cy:"12",r:"10"}]];var Ii=[["path",{d:"M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z"}]];var Fi=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"}],["circle",{cx:"12",cy:"12",r:"3"}]];var Bi=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"}],["path",{d:"m2 2 20 20"}]];var Hi=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5"}],["path",{d:"M10 9H8"}],["path",{d:"M16 13H8"}],["path",{d:"M16 17H8"}]];var Ui=[["line",{x1:"22",x2:"2",y1:"6",y2:"6"}],["line",{x1:"22",x2:"2",y1:"18",y2:"18"}],["line",{x1:"6",x2:"6",y1:"2",y2:"22"}],["line",{x1:"18",x2:"18",y1:"2",y2:"22"}]];var Vi=[["path",{d:"M3 7V5c0-1.1.9-2 2-2h2"}],["path",{d:"M17 3h2c1.1 0 2 .9 2 2v2"}],["path",{d:"M21 17v2c0 1.1-.9 2-2 2h-2"}],["path",{d:"M7 21H5c-1.1 0-2-.9-2-2v-2"}],["rect",{width:"7",height:"5",x:"7",y:"7",rx:"1"}],["rect",{width:"7",height:"5",x:"10",y:"12",rx:"1"}]];var zi=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2"}],["circle",{cx:"9",cy:"9",r:"2"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21"}]];var qi=[["path",{d:"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["path",{d:"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}]];var Yo=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2"}],["path",{d:"M7 11V7a5 5 0 0 1 9.9-1"}]];var ji=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4"}]];var Ki=[["path",{d:"M5 12h14"}]];var Gi=[["path",{d:"M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z"}]];var Wi=[["path",{d:"m18 8 4 4-4 4"}],["path",{d:"M2 12h20"}],["path",{d:"m6 8-4 4 4 4"}]];var Xi=[["path",{d:"M12 2v20"}],["path",{d:"m8 18 4 4 4-4"}],["path",{d:"m8 6 4-4 4 4"}]];var Yi=[["path",{d:"M15.707 21.293a1 1 0 0 1-1.414 0l-1.586-1.586a1 1 0 0 1 0-1.414l5.586-5.586a1 1 0 0 1 1.414 0l1.586 1.586a1 1 0 0 1 0 1.414z"}],["path",{d:"m18 13-1.375-6.874a1 1 0 0 0-.746-.776L3.235 2.028a1 1 0 0 0-1.207 1.207L5.35 15.879a1 1 0 0 0 .776.746L13 18"}],["path",{d:"m2.3 2.3 7.286 7.286"}],["circle",{cx:"11",cy:"11",r:"2"}]];var Ji=[["path",{d:"m12 9-8.414 8.414A2 2 0 0 0 3 18.828v1.344a2 2 0 0 1-.586 1.414A2 2 0 0 1 3.828 21h1.344a2 2 0 0 0 1.414-.586L15 12"}],["path",{d:"m18 9 .4.4a1 1 0 1 1-3 3l-3.8-3.8a1 1 0 1 1 3-3l.4.4 3.4-3.4a1 1 0 1 1 3 3z"}],["path",{d:"m2 22 .414-.414"}]];var Zi=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z"}]];var Qi=[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]];var el=[["path",{d:"m15 14 5-5-5-5"}],["path",{d:"M20 9H9.5A5.5 5.5 0 0 0 4 14.5A5.5 5.5 0 0 0 9.5 20H13"}]];var tl=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8"}],["path",{d:"M21 3v5h-5"}]];var rl=[["circle",{cx:"19",cy:"5",r:"2"}],["circle",{cx:"5",cy:"19",r:"2"}],["path",{d:"M5 17A12 12 0 0 1 17 5"}]];var nl=[["path",{d:"M21 11a8 8 0 0 0-8-8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"}]];var ol=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}]];var Jo=[["path",{d:"M21 5H3"}],["path",{d:"M21 12H9"}],["path",{d:"M21 19H7"}]];var Zo=[["path",{d:"M21 5H3"}],["path",{d:"M17 12H7"}],["path",{d:"M19 19H5"}]];var Qo=[["path",{d:"M3 5h18"}],["path",{d:"M3 12h18"}],["path",{d:"M3 19h18"}]];var On=[["path",{d:"M21 5H3"}],["path",{d:"M15 12H3"}],["path",{d:"M17 19H3"}]];var al=[["path",{d:"M12 4v16"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2"}],["path",{d:"M9 20h6"}]];var sl=[["path",{d:"M9 14 4 9l5-5"}],["path",{d:"M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11"}]];var il=[["path",{d:"m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71"}],["path",{d:"m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71"}],["line",{x1:"8",x2:"8",y1:"2",y2:"5"}],["line",{x1:"2",x2:"5",y1:"8",y2:"8"}],["line",{x1:"16",x2:"16",y1:"19",y2:"22"}],["line",{x1:"19",x2:"22",y1:"16",y2:"16"}]];var ll=[["path",{d:"M18 6 6 18"}],["path",{d:"m6 6 12 12"}]];var Dn=e=>e.replace(/\b(?:CmdOrCtrl|CommandOrControl)\b/g,"Ctrl");function Hu(e,t){let n=e.ownerDocument.createElement("div");n.className="vd-chrome",n.setAttribute("role","toolbar"),n.setAttribute("aria-label","Canvas tools"),n.innerHTML=ng(t),e.appendChild(n);let o=new Map;for(let h of n.querySelectorAll("[data-tool]"))o.set(h.dataset.tool,h);let a=n.querySelector('[data-act="undo"]'),i=n.querySelector('[data-act="redo"]'),l=n.querySelector('[data-act="zoom"]'),d=h=>{let x=h.target?.closest("button");if(!x)return;h.stopPropagation();let y=x.dataset.tool;if(y){t.onTool(y);return}switch(x.dataset.act){case"undo":t.onUndo();return;case"redo":t.onRedo();return;case"zoom":t.onZoomReset();return;case"play":t.onPlay?.();return}},c=h=>h.stopPropagation();return n.addEventListener("click",d),n.addEventListener("pointerdown",c),{element:n,setTool(h){for(let[x,y]of o)y.setAttribute("aria-pressed",String(x===h))},setHistory(h,x){a&&(a.disabled=!h),i&&(i.disabled=!x)},setZoom(h){l&&(l.textContent=`${Math.round(h*100)}%`)},destroy(){n.removeEventListener("click",d),n.removeEventListener("pointerdown",c),n.remove()}}}function ng(e){let t=e.formatKeys??Dn;return[mt({tool:"select",label:"Select",hint:"V",icon:"select"}),mt({tool:"frame",label:"Frame",hint:"F",icon:"frame"}),mt({tool:"rect",label:"Rectangle",hint:"R",icon:"rect"}),mt({tool:"ellipse",label:"Ellipse",hint:"O",icon:"ellipse"}),mt({tool:"pen",label:"Pen",hint:"P",icon:"pen"}),mt({tool:"text",label:"Text",hint:"T",icon:"text"}),'<span class="vd-chrome__divider"></span>',mt({act:"undo",label:"Undo",hint:t("CmdOrCtrl+Z"),icon:"undo"}),mt({act:"redo",label:"Redo",hint:t("CmdOrCtrl+Shift+Z"),icon:"redo"}),'<span class="vd-chrome__divider"></span>','<button type="button" class="vd-chrome__zoom" data-act="zoom" title="Fit to screen">100%</button>',...e.onPlay?['<span class="vd-chrome__divider"></span>',mt({act:"play",label:"Play",hint:e.playHint,icon:"play"})]:[]].join("")}function mt(e){let t=e.tool?`data-tool="${e.tool}"`:`data-act="${e.act??""}"`,r=e.tool?' aria-pressed="false"':"";return`<button type="button" class="vd-chrome__tool" ${t}${r} title="${e.hint?`${e.label} \xB7 ${e.hint}`:e.label}" aria-label="${e.label}">`+Ne(e.icon)+"</button>"}var og={select:Gi,frame:Ui,rect:ol,ellipse:Ri,pen:Yi,vector:rl,text:al,undo:sl,redo:el,"align-left":Ai,"align-hcenter":ki,"align-right":_i,"align-top":Ei,"align-vcenter":wi,"align-bottom":Si,"distribute-h":Ci,"distribute-v":Mi,group:Vi,image:zi,eye:Fi,"eye-off":Bi,lock:ji,unlock:Yo,chevron:Ni,"text-left":On,"text-center":Zo,"text-right":Jo,"text-justify":Qo,"text-top":Li,"text-middle":$i,"text-bottom":Ti,unlink:il,rotate:tl,opacity:Ii,radius:nl,blend:Oi,plus:Qi,minus:Ki,close:ll,"chevron-down":Pi,check:Di,link:qi,"font-size":bi,"line-height":Xi,"letter-spacing":Wi,eyedropper:Ji,document:Hi,play:Zi};function Ne(e){return`<svg width="16" height="16" viewBox="0 0 24 24" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round">${og[e].map(([r,n])=>{let o=Object.entries(n).filter(([a])=>a!=="key").map(([a,i])=>` ${a}="${String(i)}"`).join("");return`<${r}${o} vector-effect="non-scaling-stroke"/>`}).join("")}</svg>`}var dl="clipboard";function Pn(e,t){let r=new Set(t),n=[];return oe(e.root,o=>{if(o.id!==e.root.id&&r.has(o.id))return n.push(o),!1}),n}function Uu(e,t){let r={};for(let a of e)oe(a,i=>{for(let[l,d]of Object.entries(i)){if(pe(d)){let c=Ze(d.expr);if(!c.ok)continue;for(let h of er(c.ast).tokens){let x=t[h];x!==void 0&&(r[h]=x)}continue}typeof d=="string"&&o(d),l==="shadow"&&typeof d=="string"&&n(d)}for(let l of zu(i.content))o(l)});return r;function n(a){let i=t[a],d=Cr(typeof i=="string"?i:a);if(!("error"in d))for(let c of d.shadows)o(c.colour)}function o(a){for(let i of Co(a)){let l=t[i];if(l!==void 0&&(r[i]=l,!(typeof l!="string"||l===a)))for(let d of Co(l)){let c=t[d];c!==void 0&&d!==i&&(r[d]=c)}}}}function ag(e,t){let r={};for(let n of e)oe(n,o=>{if(o.type!=="image"||typeof o.src!="string")return;let a=t[o.src];a!==void 0&&(r[o.src]=a)});return r}function Vu(e,t){let r={},n=o=>{if(typeof o!="string")return;let a=t[o];a!==void 0&&(r[o]=a)};for(let o of e)oe(o,a=>{let i=a;n(i.font);for(let l of zu(i.content,"font"))n(l)});return r}function zu(e,t="fill"){if(!Array.isArray(e))return[];let r=[];for(let n of e){if(typeof n=="string")continue;let o=n[t];o!==void 0&&r.push(o)}return r}function fl(e,t,r){let n=Pn(e,t);if(n.length===0)return null;let o={};for(let l of n)oe(l,d=>{let c=r.nodes.get(d.id)?.values;c&&Object.keys(c).length>0&&(o[d.id]=c)});let a={version:e.version,kind:e.kind,tokens:Uu(n,e.tokens),fonts:Vu(n,e.fonts),assets:ag(n,e.assets),root:{...e.root,children:n}},i=JSON.parse(ns(a));return i[dl]={resolved:o},JSON.stringify(i,null,2)}function ul(e){let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!="object"||t===null)return null;let r=t;if(typeof r.root!="object"||r.root===null)return null;let{document:n}=Ds(t),o=n.root.children;if(o.length===0)return null;let a=r[dl],i=typeof a=="object"&&a!==null?a.resolved??{}:{};return{nodes:o,tokens:n.tokens,fonts:n.fonts,resolved:typeof i=="object"&&i!==null?i:{}}}function cl(e,t){let r=uo(t.root),n=new Map;for(let i of e.nodes)oe(i,l=>{let d=sg(l.id,r);r.add(d),n.set(l.id,d)});let o=i=>r.has(i),a={...e.tokens,...t.tokens};return{nodes:e.nodes.map(i=>qu(i,{payload:e,remap:n,exists:o,tokens:a})),remap:n}}function sg(e,t){let r=e.lastIndexOf("."),n=r===-1?"":e.slice(r+1),o=/^[0-9]+$/.test(n)?e.slice(0,r):e,a=1;for(let i of t){if(!i.startsWith(`${o}.`))continue;let l=Number(i.slice(o.length+1));Number.isInteger(l)&&l>=a&&(a=l+1)}return`${o}.${a}`}function qu(e,t){let r=e,n={};for(let[o,a]of Object.entries(r))o==="id"||o==="children"||(n[o]=pe(a)?ig(a.expr,e.id,o,t):a);return n.id=t.remap.get(e.id)??e.id,ce(e)&&(n.children=de(e).map(o=>qu(o,t))),n}function ig(e,t,r,n){let o={expr:e},a=Ze(e);if(!a.ok)return o;let i=er(a.ast).nodes.some(h=>n.remap.has(h)),l=i?$t(a.ast,h=>n.remap.get(h)):a.ast,d=er(l);if(d.nodes.some(h=>!n.exists(h))||d.tokens.some(h=>n.tokens[h]===void 0)){let h=n.payload.resolved[t]?.[r];return h===void 0?o:h}return i?{expr:vn(l)}:o}var xt="#ffffff",Lt="#0b0d0c",Xu="#c6ff3d",lg="#ffb224";var ju=new Map;function $e(e,t={}){let r=t.badge??"none",n=e==="resize"?Yu(t.angle??0):e==="rotate"?fg(t.angle??0):0,o=`${e}:${n}:${r}`,a=ju.get(o);if(a!==void 0)return a;let{at:i,fallback:l}=dg[e],d=pg(ug(e,n,r),i[0],i[1],l);return ju.set(o,d),d}var Ku=[2,2],Lr=[12,12],dg={arrow:{at:Ku,fallback:"default"},radius:{at:Ku,fallback:"default"},resize:{at:Lr,fallback:"ew-resize"},rotate:{at:Lr,fallback:"crosshair"},crosshair:{at:Lr,fallback:"crosshair"},grab:{at:Lr,fallback:"grab"},grabbing:{at:Lr,fallback:"grabbing"},text:{at:Lr,fallback:"text"}};function fg(e){let t=(e%360+360)%360;return Math.round(t/15)*15%360}function Yu(e){let t=(e%180+180)%180;return Math.round(t/15)*15%180}function ug(e,t,r){switch(e){case"arrow":return Ju(r);case"resize":return hg(t,r);case"rotate":return mg(t);case"crosshair":return gg();case"grab":return Wu(!1);case"grabbing":return Wu(!0);case"radius":return yg(r);case"text":return xg()}}function cg(e){return`<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">${e}</svg>`}function pg(e,t,r,n){return`url("data:image/svg+xml,${encodeURIComponent(cg(e))}") ${t} ${r}, ${n}`}var Gu="M2 2 L2 20.4 L6.7 15.9 L9.9 22.8 L12.6 21.5 L9.5 14.8 L15.4 14.6 Z";function Ju(e){return`<path d="${Gu}" fill="${xt}" stroke="${xt}" stroke-width="3" stroke-linejoin="round"/><path d="${Gu}" fill="${Lt}"/>`+Zu(e)}function hg(e,t){let r=["M6.6 12 H17.4","M9.7 8.7 L6.2 12 L9.7 15.3","M14.3 8.7 L17.8 12 L14.3 15.3"],n=(o,a)=>r.map(i=>`<path d="${i}" stroke="${a}" stroke-width="${o}"/>`).join("");return`<g transform="rotate(${e} 12 12)" fill="none" stroke-linecap="round" stroke-linejoin="round">`+n(3.6,xt)+n(1.6,Lt)+"</g>"+Zu(t)}function mg(e){let t=["M7 17.5 A10 10 0 0 0 17.5 7","M14.2 4.6 L17.6 7 L15 10.3","M4.6 14.2 L7 17.6 L10.3 15"],r=(n,o)=>t.map(a=>`<path d="${a}" stroke="${o}" stroke-width="${n}"/>`).join("");return`<g transform="rotate(${e} 12 12)" fill="none" stroke-linecap="round" stroke-linejoin="round">`+r(3.6,xt)+r(1.6,Lt)+"</g>"}function xg(){let e=["M12 4.5 V19.5","M9 4.5 H15","M9 19.5 H15"],t=(r,n)=>e.map(o=>`<path d="${o}" stroke="${n}" stroke-width="${r}"/>`).join("");return'<g fill="none" stroke-linecap="round">'+t(3.4,xt)+t(1.5,Lt)+"</g>"}function gg(){let e="M12 2.5 V9 M12 15 V21.5 M2.5 12 H9 M15 12 H21.5";return`<g fill="none" stroke-linecap="round"><path d="${e}" stroke="${xt}" stroke-width="3"/><path d="${e}" stroke="${Lt}" stroke-width="1.2"/></g>`}function Wu(e){let t=e?"M6.8 13.8v-1.3a1.35 1.35 0 0 1 1.35-1.35h7.7a1.35 1.35 0 0 1 1.35 1.35v2.6c0 3.2-2.2 5.2-5.1 5.2h-1.1c-1.9 0-3-.8-3.9-2.1l-1.4-2":"M9 14.6V6.4a1.25 1.25 0 0 1 2.5 0v5.1V5.1a1.25 1.25 0 0 1 2.5 0v6.4V6.2a1.25 1.25 0 0 1 2.5 0v6.6m0 0v2.3c0 3.1-2.1 5-4.8 5h-.7c-1.6 0-2.7-.6-3.6-1.9l-2.2-3a1.3 1.3 0 0 1 .45-1.85c.6-.35 1.35-.2 1.85.4L9 15.9";return`<g fill="none" stroke-linecap="round" stroke-linejoin="round"><path d="${t}" stroke="${xt}" stroke-width="3.4"/><path d="${t}" stroke="${Lt}" stroke-width="1.5"/></g>`}function yg(e){return Ju("none")+vg(e)}function vg(e){return`<g><rect x="17.5" y="17.5" width="14" height="14" rx="4.5" fill="${xt}"/><rect x="18.7" y="18.7" width="11.6" height="11.6" rx="3.4" fill="${e==="none"?Xu:lg}"/><path d="M21.6 27.9 V25.4 A3.8 3.8 0 0 1 25.4 21.6 H27.9" fill="none" stroke="${Lt}" stroke-width="1.5" stroke-linecap="round"/></g>`}function Zu(e){return e==="none"?"":`<g><rect x="18.5" y="18.5" width="13" height="13" rx="4" fill="${xt}"/><rect x="19.6" y="19.6" width="10.8" height="10.8" rx="3" fill="${Xu}"/><text x="25" y="28.4" text-anchor="middle" fill="${Lt}" font-family="ui-sans-serif, system-ui, -apple-system, Helvetica, sans-serif" font-size="10" font-weight="700">${e==="token"?"$":"\u0192"}</text></g>`}function De(e,t){let r=[],n=o=>{if(r.push(o.id),o.id===t)return!0;for(let a of de(o))if(n(a))return!0;return r.pop(),!1};return n(e)?r:[]}function ea(e,t,r){let n=De(t.root,e);if(n.length===0)return e;let o=r!==null&&n.includes(r)?r:bg(n,t),a=n.indexOf(o);return a===-1?e:n[a+1]??e}function bg(e,t){for(let r=e.length-2;r>=0;r-=1){let n=e[r];if(V(t.root,n)?.type==="frame")return n}return t.root.id}function Qu(e,t){let r=e.map(o=>De(t.root,o)).filter(o=>o.length>0);if(r.length===0)return t.root.id;let n=t.root.id;for(let o=0;;o+=1){let a=r[0]?.[o];if(a===void 0||r.some(i=>i[o]!==a||o===i.length-1))break;n=a}return n}function rr(e,t){let r=V(t.root,e);if(!r)return[];let n=[],o=a=>{if(Se(a)){for(let i of de(a))o(i);return}n.push(a.id)};return o(r),n}function nr(e,t,r){let n=V(t.root,e);if(!n)return;if(!Se(n)){let i=r.nodes.get(e);return i?pl(i):void 0}let o=[],a=i=>{if(!(i.id!==e&&"hidden"in i&&i.hidden===!0)){if(i.id!==e&&!Se(i)){let l=nr(i.id,t,r);l&&o.push(l);return}for(let l of de(i))a(l)}};return a(n),Qe(o)??void 0}function pl(e){let t={x:e.absX,y:e.absY,w:e.w,h:e.h},r=e.values.rotation??0;return r===0?t:xn(t,r)}function Nn(e,t,r){return t.flatMap(n=>{let o=nr(n,e,r);return o?[{id:n,frame:o}]:[]})}function hl(e,t){let r=t.filter(x=>x!==e.root.id&&V(e.root,x));if(r.length<2)return null;let n=Qu(r,e),o=V(e.root,n);if(!o)return null;let a=de(o),i=new Set(r.map(x=>ea(x,e,n))),l=a.filter(x=>i.has(x.id));if(l.length<2)return null;let d=a.findIndex(x=>x.id===l[l.length-1]?.id),c=Kt(e.root,"group"),h=[{op:"insert",parent:n,index:d+1,node:Ya({id:c,children:[]})}];return l.forEach((x,y)=>{h.push({op:"move",id:x.id,parent:c,index:y})}),{ops:h,groupId:c}}function ml(e,t){let r=V(e.root,t);if(!r||!Se(r))return[];let n=De(e.root,t),o=n[n.length-2];if(o===void 0)return[];let a=V(e.root,o);if(!a)return[];let i=de(a).findIndex(d=>d.id===t);if(i===-1)return[];let l=de(r).map((d,c)=>({op:"move",id:d.id,parent:o,index:i+c}));return l.push({op:"remove",id:t}),l}function xl(e,t,r){let n=new Map;for(let a of t){let i=De(e.root,a),l=i[i.length-2];if(l===void 0)continue;let d=n.get(l)??new Set;d.add(a),n.set(l,d)}let o=[];for(let[a,i]of n){let l=V(e.root,a);if(!l)continue;let d=de(l).map(c=>c.id);o.push(...kg(a,d,wg(d,i,r)))}return o}function wg(e,t,r){if(r==="front"||r==="back"){let i=e.filter(d=>t.has(d)),l=e.filter(d=>!t.has(d));return r==="front"?[...l,...i]:[...i,...l]}let n=r==="forward"?1:-1,o=[...e],a=o.flatMap((i,l)=>t.has(i)?[l]:[]);n===1&&a.reverse();for(let i of a){let l=i+n,d=o[l];d===void 0||t.has(d)||(o[l]=o[i],o[i]=d)}return o}function kg(e,t,r){let n=[...t],o=[];for(let a=0;a<r.length;a+=1){let i=r[a];i===void 0||n[a]===i||(n.splice(n.indexOf(i),1),n.splice(a,0,i),o.push({op:"move",id:i,parent:e,index:a}))}return o}function gl(e,t,r){let n=t.w===0?1:r.w/t.w,o=t.h===0?1:r.h/t.h,a=new Map;for(let[i,l]of e)a.set(i,{x:r.x+(l.x-t.x)*n,y:r.y+(l.y-t.y)*o,w:l.w*n,h:l.h*o});return a}var yl=6,gt=.01,ze={dx:0,dy:0,guides:[],measures:[]},ta=["lo","mid","hi"];function vl(e,t,r){let n=[],o=(a,i)=>{let l=t.nodes.get(a);l&&n.push({id:a,frame:pl(l),isPage:i})};return e.root.w!==void 0&&e.root.h!==void 0&&o(e.root.id,!0),oe(e.root,a=>{if(r.has(a.id)||"hidden"in a&&a.hidden===!0)return!1;if(a.id!==e.root.id){if(a.type==="frame"){o(a.id,!0);return}ce(a)||o(a.id,!1)}}),n}function bl(e,t,r){if(r<=0||t.length===0)return ze;let n=Or("x",e,t,r,ta,!0),o=Or("y",e,t,r,ta,!0);return kl(e,t,n,o)}function ra(e,t,r,n){if(n<=0||r.length===0)return ze;let o=t.includes("w")?["lo"]:t.includes("e")?["hi"]:[],a=t.includes("n")?["lo"]:t.includes("s")?["hi"]:[],i=Or("x",e,r,n,o,!1),l=Or("y",e,r,n,a,!1);return kl(e,r,i,l)}function wl(e,t,r){let n={x:e.x,y:e.y,w:0,h:0};if(r<=0||t.length===0)return ze;let o=Or("x",n,t,r,["lo"],!1),a=Or("y",n,t,r,["lo"],!1);return kl(n,t,o,a)}function Or(e,t,r,n,o,a){let i={axis:e,delta:0,kind:"none"};if(o.length===0)return i;let l=Sg(e,t,r,n,o),d=a?Cg(e,t,r,n):null;return l&&d?Math.abs(d.delta)<Math.abs(l.delta)-gt?{axis:e,delta:d.delta,kind:"space",gap:d.gap}:{axis:e,delta:l.delta,kind:"align",at:l.at}:l?{axis:e,delta:l.delta,kind:"align",at:l.at}:d?{axis:e,delta:d.delta,kind:"space",gap:d.gap}:i}function Sg(e,t,r,n,o){let a=null;for(let i of r)for(let l of ta){let d=fe(i.frame,e,l);for(let c of o){let h=d-fe(t,e,c);if(Math.abs(h)>n)continue;let x=c==="mid"&&l==="mid";(a===null||_g(h,x,a))&&(a={at:d,delta:h,centred:x})}}return a?{at:a.at,delta:a.delta}:null}function _g(e,t,r){let n=Math.abs(e),o=Math.abs(r.delta);return n<o-gt?!0:n>o+gt?!1:t&&!r.centred}function Cg(e,t,r,n){let o=ec(e,t,r);if(o.length<2)return null;let a=tc(t,e),i=fe(t,e,"lo"),l=[];for(let c of Eg(o,e))for(let h of o)l.push({delta:fe(h,e,"hi")+c-i,gap:c}),l.push({delta:fe(h,e,"lo")-c-a-i,gap:c});for(let c=0;c+1<o.length;c+=1){let h=o[c],x=o[c+1];if(!h||!x)continue;let y=fe(x,e,"lo")-fe(h,e,"hi")-a;y<=gt||l.push({delta:fe(h,e,"hi")+y/2-i,gap:y/2})}let d=null;for(let c of l)Math.abs(c.delta)>n||(d===null||Math.abs(c.delta)<Math.abs(d.delta)-gt)&&(d=c);return d}function ec(e,t,r){let n=Sl(e);return r.filter(o=>!o.isPage&&$g(o.frame,t,n)).map(o=>o.frame).sort((o,a)=>fe(o,e,"lo")-fe(a,e,"lo"))}function Eg(e,t){let r=[];for(let n=0;n+1<e.length;n+=1){let o=e[n],a=e[n+1];if(!o||!a)continue;let i=fe(a,t,"lo")-fe(o,t,"hi");i<=gt||r.some(l=>Math.abs(l-i)<gt)||r.push(i)}return r}function kl(e,t,r,n){let o={...e,x:e.x+r.delta,y:e.y+n.delta},a=[],i=[];for(let l of[r,n]){if(l.kind==="align"&&l.at!==void 0){let d=Ag(l.axis,l.at,o,t);d&&a.push(d)}l.kind==="space"&&l.gap!==void 0&&i.push(...Mg(l.axis,l.gap,o,t))}return{dx:r.delta,dy:n.delta,guides:a,measures:i}}function Ag(e,t,r,n){let o=Sl(e),a=fe(r,o,"lo"),i=fe(r,o,"hi"),l=!1;for(let d of n)ta.some(c=>Tg(fe(d.frame,e,c),t))&&(l=!0,a=Math.min(a,fe(d.frame,o,"lo")),i=Math.max(i,fe(d.frame,o,"hi")));return l?{axis:e,at:t,from:a,to:i}:null}function Mg(e,t,r,n){let o=Sl(e),a=[...ec(e,r,n),r].sort((l,d)=>fe(l,e,"lo")-fe(d,e,"lo")),i=[];for(let l=0;l+1<a.length;l+=1){let d=a[l],c=a[l+1];if(!d||!c)continue;let h=fe(c,e,"lo")-fe(d,e,"hi");if(Math.abs(h-t)>gt)continue;let x=Math.max(fe(d,o,"lo"),fe(c,o,"lo")),y=Math.min(fe(d,o,"hi"),fe(c,o,"hi"));i.push({axis:e,at:(x+y)/2,from:fe(d,e,"hi"),to:fe(c,e,"lo"),label:Lg(h)})}return i}function Sl(e){return e==="x"?"y":"x"}function tc(e,t){return t==="x"?e.w:e.h}function fe(e,t,r){let n=t==="x"?e.x:e.y,o=tc(e,t);return r==="lo"?n:r==="hi"?n+o:n+o/2}function $g(e,t,r){return fe(e,r,"lo")<fe(t,r,"hi")&&fe(e,r,"hi")>fe(t,r,"lo")}function Tg(e,t){return Math.abs(e-t)<gt}function Lg(e){return String(Math.round(e*100)/100)}var Rn=class{limit;past=[];future=[];constructor(t=500){this.limit=t}push(t){this.past.push(t),this.past.length>this.limit&&this.past.shift(),this.future.length=0}amend(t){let r=this.past[this.past.length-1];return r?(this.past[this.past.length-1]={label:t.label,ops:[...r.ops,...t.ops],inverse:[...t.inverse,...r.inverse]},this.future.length=0,!0):!1}get canUndo(){return this.past.length>0}get top(){return this.past[this.past.length-1]??null}isTail(t){if(t.length===0||t.length>this.past.length)return!1;let r=this.past.length-t.length;return t.every((n,o)=>this.past[r+o]===n)}get canRedo(){return this.future.length>0}undo(){let t=this.past.pop();if(t)return this.future.push(t),{entry:t,ops:t.inverse}}redo(){let t=this.future.pop();if(t)return this.past.push(t),{entry:t,ops:t.ops}}snapshot(){return{past:[...this.past],future:[...this.future]}}restore(t){this.past.length=0,this.future.length=0,this.past.push(...t.past),this.future.push(...t.future)}clear(){this.past.length=0,this.future.length=0}};var rc=1,Og=48,Dg=.06,Pg=.5;function nc(e){return Math.max(Og,Math.min(e.width,e.height)*Dg)}function _l(e,t){let r=new Set(t),n=[];for(let o of e.root.children)(r.has(o.id)||oc(o,r))&&n.push(o.id);return n}function oc(e,t){for(let r of de(e))if(t.has(r.id)||oc(r,t))return!0;return!1}function na(e){let t=e.filter(i=>i.w>0&&i.h>0);if(t.length===0)return null;let r=Math.min(...t.map(i=>i.x)),n=Math.min(...t.map(i=>i.y)),o=Math.max(...t.map(i=>i.x+i.w)),a=Math.max(...t.map(i=>i.y+i.h));return{x:r,y:n,w:o-r,h:a-n}}function oa(e,t){let r=nc(t),n={width:Math.max(1,t.width-r*2),height:Math.max(1,t.height-r*2)},o=Cn(Math.min(n.width/e.w,n.height/e.h,rc));return{zoom:o,x:t.width/2-(e.x+e.w/2)*o,y:t.height/2-(e.y+e.h/2)*o}}function Cl(e,t,r){let n=oa(e,t);return Ng(e,t,r)&&r.zoom>=n.zoom*Pg?null:n}function Ng(e,t,r){let n=e.x*r.zoom+r.x,o=e.y*r.zoom+r.y,a=(e.x+e.w)*r.zoom+r.x,i=(e.y+e.h)*r.zoom+r.y;return n>=0&&o>=0&&a<=t.width&&i<=t.height}function ac(e,t,r,n){let o=Math.exp(Math.log(e.zoom)+(Math.log(t.zoom)-Math.log(e.zoom))*r),a={x:n.width/2,y:n.height/2},i={x:(a.x-e.x)/e.zoom,y:(a.y-e.y)/e.zoom},l={x:(a.x-t.x)/t.zoom,y:(a.y-t.y)/t.zoom},d={x:i.x+(l.x-i.x)*r,y:i.y+(l.y-i.y)*r};return{zoom:o,x:a.x-d.x*o,y:a.y-d.y*o}}function sc(e){return 1-(1-e)**3}function Rg(e){return!("separator"in e)}function El(e,t=[]){let r=t.length>0?[{separator:!0},...t]:[];if(e.count===0)return[{id:"paste",label:"Paste",keys:"CmdOrCtrl+V",disabled:!e.canPaste},{separator:!0},{id:"selectAll",label:"Select all",keys:"CmdOrCtrl+A"},...ic(e),{separator:!0},{id:"fit",label:"Fit to screen",keys:"Shift+1"},{id:"zoom100",label:"Zoom to 100%",keys:"CmdOrCtrl+0"},...r];let n=[];e.isText&&e.count===1&&n.push({id:"editText",label:"Edit text",keys:"Enter"},{separator:!0}),e.isVector&&e.count===1&&n.push({id:"editPoints",label:"Edit points",keys:"Enter"},{separator:!0}),(e.convertible??0)>0&&n.push({id:"toVector",label:"Convert to vector",keys:"CmdOrCtrl+Shift+O"},{separator:!0}),n.push({id:"cut",label:"Cut",keys:"CmdOrCtrl+X"},{id:"copy",label:"Copy",keys:"CmdOrCtrl+C"},{id:"paste",label:"Paste",keys:"CmdOrCtrl+V",disabled:!e.canPaste},{id:"duplicate",label:"Duplicate",keys:"CmdOrCtrl+D"},{separator:!0},{id:"group",label:"Group",keys:"CmdOrCtrl+G",disabled:e.count<2},{id:"ungroup",label:"Ungroup",keys:"CmdOrCtrl+Shift+G",disabled:!e.hasGroup});let o=[];if(e.hide&&o.push({id:"toggleHidden",label:e.hide==="show"?"Show":"Hide",keys:"CmdOrCtrl+Shift+H"}),e.lock&&o.push({id:"toggleLock",label:e.lock==="unlock"?"Unlock":"Lock",keys:"CmdOrCtrl+Shift+L"}),o.length>0&&n.push({separator:!0},...o),n.push({separator:!0},{id:"front",label:"Bring to front",keys:"CmdOrCtrl+]"},{id:"forward",label:"Bring forward",keys:"]"},{id:"backward",label:"Send backward",keys:"["},{id:"back",label:"Send to back",keys:"CmdOrCtrl+["}),e.bound.length>0){n.push({separator:!0});for(let a of e.bound)n.push({id:`detach:${a.prop}`,label:`Detach ${a.prop}`,hint:a.source})}return n.push(...ic(e)),n.push(...r),n.push({separator:!0},{id:"delete",label:"Delete",keys:"Delete"}),n}var Ig=4;function ic(e){let t=(e.locksHere??[]).slice(0,Ig).map(n=>({id:`unlock:${n}`,label:`Unlock ${n}`}));e.anyLocked&&t.push({id:"unlockAll",label:"Unlock all"});let r=e.hiddenCount??0;return r>0&&t.push({id:"showAll",label:`Show all hidden (${r})`}),t.length===0?[]:[{separator:!0},...t]}function Al(e,t){let r=e.ownerDocument,n=t.formatKeys??Dn,o=r.createElement("div");o.className="vd-menu",o.setAttribute("role","menu"),o.hidden=!0,e.appendChild(o);let a=!1,i=[],l=-1;function d(_){o.replaceChildren(),i=[];for(let B of _){if(!Rg(B)){let D=r.createElement("div");D.className="vd-menu__separator",o.appendChild(D);continue}let R=r.createElement("button");R.type="button",R.className="vd-menu__item",R.dataset.command=B.id,R.disabled=B.disabled===!0,R.setAttribute("role","menuitem");let J=r.createElement("span");J.textContent=B.label,R.appendChild(J);let E=B.hint??(B.keys===void 0?void 0:n(B.keys));if(E!==void 0){let D=r.createElement("span");D.className="vd-menu__hint",D.textContent=E,R.appendChild(D)}o.appendChild(R),R.disabled||i.push(R)}}function c(_){o.style.left=`${_.x}px`,o.style.top=`${_.y}px`;let B=e.getBoundingClientRect(),R=o.getBoundingClientRect();if(R.width===0&&R.height===0)return;let J=_.x+R.width-B.width,E=_.y+R.height-B.height;J>0&&(o.style.left=`${Math.max(0,_.x-R.width)}px`),E>0&&(o.style.top=`${Math.max(0,_.y-R.height)}px`)}function h(_){i.length!==0&&(l=(_+i.length)%i.length,i[l]?.focus())}let x=_=>{let B=_.target?.closest("button");if(!B||B.disabled)return;_.stopPropagation();let R=B.dataset.command;k(),R&&t.onCommand(R)},y=_=>_.stopPropagation(),b=_=>{_.key==="ArrowDown"?(_.preventDefault(),h(l+1)):_.key==="ArrowUp"?(_.preventDefault(),h(l-1)):_.key==="Escape"&&(_.preventDefault(),_.stopPropagation(),k(),e.focus())},P=_=>{a&&(_.target instanceof Node&&o.contains(_.target)||k())};function k(){a&&(a=!1,l=-1,o.hidden=!0,r.removeEventListener("pointerdown",P,!0),r.removeEventListener("wheel",P,!0))}return o.addEventListener("click",x),o.addEventListener("pointerdown",y),o.addEventListener("keydown",b),{element:o,get isOpen(){return a},open(_,B){d(B),o.hidden=!1,a=!0,c(_),r.addEventListener("pointerdown",P,!0),r.addEventListener("wheel",P,!0),h(0)},close:k,destroy(){k(),o.removeEventListener("click",x),o.removeEventListener("pointerdown",y),o.removeEventListener("keydown",b),o.remove()}}}var Dr=2,lc=1.5,dc=1.5,fc=1.5,vc={hover:null,members:[],box:null,spacers:[],rings:[],lead:null,badge:null,caret:null,textSelection:[],draft:null,marquee:null,guides:[],measures:[],presence:null,highlight:[],parked:[],lockHint:null},uc=3.6,Fg=22,aa=14,sa=15,Ml=4,cc=15,pc=23,In=7,Bg=3.5,ia=12,Hg=4.5,la=16,qe=18,$l=9,Tl=6.1,hc="Drop or double-click",Ug=6.4,mc=16,Ot=3,xc=5,Vg=11,gc=6,yc=6.4;function bc(e,t){let r=e.ownerDocument,n=r.createElementNS(ne,"svg");n.setAttribute("class","vd-editor__overlay"),e.appendChild(n);let o=[],a=[],i=[],l=[],d=[],c=null,h=null,x=[],y=[];function b(w){let $=t({x:w.x,y:w.y}),M=t({x:w.x+w.w,y:w.y+w.h});return{x:$.x,y:$.y,w:M.x-$.x,h:M.y-$.y}}function P(w){for(;n.firstChild;)n.removeChild(n.firstChild);o=[],a=[],i=[],l=[],d=[],c=null,h=null,x=[],y=(w.pageLabels??[]).flatMap(M=>me(M));let $=w.turn&&w.turn.angle!==0?{angle:w.turn.angle,centre:t(w.turn.centre)}:null;for(let M of w.slots??[])ke(M);w.presence&&we(w.presence);for(let M of w.highlight)T("vd-editor__highlight",Pr(b(M),Dr),Dr);w.lockHint&&he(w.lockHint),w.hover&&T("vd-editor__hover",Fn(b(w.hover)),dc);for(let M of w.parked)T("vd-editor__parked",Fn(b(M)),dc);for(let M of w.members)T("vd-editor__member",Pr(b(M),lc),lc);w.lead&&T("vd-editor__lead",Fn(b(w.lead)),Dr);for(let M of w.guides)A(M);for(let M of w.measures)G(M);if(k($,()=>{for(let M of w.textSelection)n.appendChild(Q("vd-editor__text-selection",b(M)))}),w.box&&D(w.box),w.caret&&k($,()=>R(w.caret)),l=w.rings.map(J),i=w.spacers.map(E),w.badge&&w.box){let M=b(w.box.frame),L=c?Math.max(...[{x:M.x,y:M.y},{x:M.x+M.w,y:M.y},{x:M.x,y:M.y+M.h},{x:M.x+M.w,y:M.y+M.h}].map(H=>Pe(H,c.centre,c.angle).y)):M.y+M.h;se(w.badge,{x:M.x+M.w/2,y:L+$l+qe/2})}if(w.draft){let M=b(w.draft);if(w.draftEllipse){let L=r.createElementNS(ne,"ellipse");L.setAttribute("class","vd-editor__draft"),L.setAttribute("cx",String(M.x+M.w/2)),L.setAttribute("cy",String(M.y+M.h/2)),L.setAttribute("rx",String(Math.abs(M.w)/2)),L.setAttribute("ry",String(Math.abs(M.h)/2)),n.appendChild(L)}else n.appendChild(Q("vd-editor__draft",M))}w.marquee&&n.appendChild(Q("vd-editor__marquee",b(w.marquee))),w.path&&(h=$,k($,()=>B(w.path)))}function k(w,$){if(!w){$();return}let M=n.childNodes.length;$();let L=r.createElementNS(ne,"g");for(L.setAttribute("transform",`rotate(${w.angle} ${w.centre.x} ${w.centre.y})`);n.childNodes.length>M;)L.insertBefore(n.childNodes[n.childNodes.length-1],L.firstChild);n.appendChild(L)}function _(w,$){return $?Pe(w,$.centre,-$.angle):w}function B(w){let $=r.createElementNS(ne,"path");if($.setAttribute("class","vd-editor__path"),$.setAttribute("d",ut(ct(w.contours,t))),n.appendChild($),w.pending){let L=t(w.pending.from),H=t(w.pending.to),q=w.pending.c1?t(w.pending.c1):L,S=r.createElementNS(ne,"path");S.setAttribute("class","vd-editor__pending"),S.setAttribute("d",`M${L.x} ${L.y} C${q.x} ${q.y} ${H.x} ${H.y} ${H.x} ${H.y}`),n.appendChild(S)}for(let L of w.handles){let H=t(L.at),q=t(L.anchor),S=r.createElementNS(ne,"line");S.setAttribute("class","vd-editor__arm"),S.setAttribute("x1",String(q.x)),S.setAttribute("y1",String(q.y)),S.setAttribute("x2",String(H.x)),S.setAttribute("y2",String(H.y)),n.appendChild(S)}for(let L of w.handles){let H=t(L.at),q=r.createElementNS(ne,"circle");q.setAttribute("class","vd-editor__knob"),q.setAttribute("cx",String(H.x)),q.setAttribute("cy",String(H.y)),q.setAttribute("r",String(Bg)),n.appendChild(q)}for(let L of w.anchors){let H=t(L.at),q=Q(L.selected?"vd-editor__anchor vd-editor__anchor--on":"vd-editor__anchor",{x:Math.round(H.x-In/2)+.5,y:Math.round(H.y-In/2)+.5,w:In,h:In});q.setAttribute("data-key",L.key),n.appendChild(q)}if(w.closeAt){let L=t(w.closeAt),H=r.createElementNS(ne,"circle");H.setAttribute("class","vd-editor__close"),H.setAttribute("cx",String(L.x)),H.setAttribute("cy",String(L.y)),H.setAttribute("r",String(In)),n.appendChild(H)}let M=L=>({x:L.x-ia/2,y:L.y-ia/2,w:ia,h:ia});d=[...[...w.handles].reverse().map(L=>({kind:"handle",key:L.key,rect:M(t(L.at))})),...[...w.anchors].reverse().map(L=>({kind:"anchor",key:L.key,rect:M(t(L.at))}))]}function R(w){let $=t({x:w.x,y:w.y}),M=t({x:w.x,y:w.y+w.h}),L=r.createElementNS(ne,"line");L.setAttribute("class","vd-editor__caret");let H=Math.round($.x)+.5;L.setAttribute("x1",String(H)),L.setAttribute("y1",String($.y)),L.setAttribute("x2",String(H)),L.setAttribute("y2",String(M.y)),n.appendChild(L)}function J(w){let $=t(w.at),M=r.createElementNS(ne,"circle");return M.setAttribute("class","vd-editor__ring"),M.setAttribute("cx",String($.x)),M.setAttribute("cy",String($.y)),M.setAttribute("r",String(Hg)),n.appendChild(M),{id:w.id,rect:{x:$.x-la/2,y:$.y-la/2,w:la,h:la}}}function E(w){let $=t(w.at),M=w.axis==="x"?Ml:sa,L=w.axis==="x"?sa:Ml,H=Q("vd-editor__spacer",{x:$.x-M/2,y:$.y-L/2,w:M,h:L});H.setAttribute("rx",String(Ml/2)),n.appendChild(H),w.label!==null&&se(w.label,w.axis==="x"?{x:$.x,y:$.y-sa/2-$l-qe/2}:{x:$.x+sa/2+$l+qe,y:$.y});let q=w.axis==="x"?cc:pc,S=w.axis==="x"?pc:cc;return{id:w.id,rect:{x:$.x-q/2,y:$.y-S/2,w:q,h:S}}}function D(w){let $=b(w.frame),M=w.rotation??0;c=M===0?null:{angle:M,centre:{x:$.x+$.w/2,y:$.y+$.h/2}},k(c,()=>N(w,$)),w.handles&&w.rotatable&&(x=Mn.map(L=>{let{u:H,v:q}=$r(L);return{handle:L,at:{x:$.x+$.w*H,y:$.y+$.h*q}}}))}function N(w,$){if(T("vd-editor__outline",Pr($,Dr),Dr),!!w.handles){o=ci($).map(M=>({...M,bound:w.boundHandles.has(M.handle)}));for(let M of Mn){let{u:L,v:H}=$r(M),q={x:$.x+$.w*L-Tr/2,y:$.y+$.h*H-Tr/2,w:Tr,h:Tr};n.appendChild(Q("vd-editor__halo",Pr(q,fc+1))),n.appendChild(Q("vd-editor__handle",q))}a=w.adjusters.map(M=>{let L=t(M.at),H=r.createElementNS(ne,"circle");H.setAttribute("class","vd-editor__halo"),H.setAttribute("cx",String(L.x)),H.setAttribute("cy",String(L.y)),H.setAttribute("r",String(uc+fc/2+.5)),n.appendChild(H);let q=r.createElementNS(ne,"circle");return q.setAttribute("class","vd-editor__adjuster"),q.setAttribute("cx",String(L.x)),q.setAttribute("cy",String(L.y)),q.setAttribute("r",String(uc)),n.appendChild(q),{id:M.id,bound:M.bound,rect:{x:L.x-aa/2,y:L.y-aa/2,w:aa,h:aa}}})}}function A(w){let $=t(w.axis==="x"?{x:w.at,y:w.from}:{x:w.from,y:w.at}),M=t(w.axis==="x"?{x:w.at,y:w.to}:{x:w.to,y:w.at}),L=r.createElementNS(ne,"line");L.setAttribute("class","vd-editor__guide"),L.setAttribute("x1",String(be($.x))),L.setAttribute("y1",String(be($.y))),L.setAttribute("x2",String(be(M.x))),L.setAttribute("y2",String(be(M.y))),n.appendChild(L)}function G(w){let $=t(w.axis==="x"?{x:w.from,y:w.at}:{x:w.at,y:w.from}),M=t(w.axis==="x"?{x:w.to,y:w.at}:{x:w.at,y:w.to}),L=r.createElementNS(ne,"path");L.setAttribute("class","vd-editor__measure"),L.setAttribute("d",w.axis==="x"?`M${be($.x)} ${be($.y)-Ot} V${be($.y)+Ot} M${be($.x)} ${be($.y)} H${be(M.x)} M${be(M.x)} ${be(M.y)-Ot} V${be(M.y)+Ot}`:`M${be($.x)-Ot} ${be($.y)} H${be($.x)+Ot} M${be($.x)} ${be($.y)} V${be(M.y)} M${be(M.x)-Ot} ${be(M.y)} H${be(M.x)+Ot}`),n.appendChild(L);let H=r.createElementNS(ne,"text");H.setAttribute("class","vd-editor__measure-text"),H.setAttribute("x",String(($.x+M.x)/2)),H.setAttribute("y",String(($.y+M.y)/2-(w.axis==="x"?xc:0))),w.axis==="y"&&H.setAttribute("dx",String(xc)),H.textContent=w.label,n.appendChild(H)}function se(w,$){let M=Math.max(34,w.length*Tl+14),L=$.x-M/2,H=$.y-qe/2,q=Q("vd-editor__badge",{x:L,y:H,w:M,h:qe});q.setAttribute("rx",String(qe/2)),n.appendChild(q);let S=r.createElementNS(ne,"text");S.setAttribute("class","vd-editor__badge-text"),S.setAttribute("x",String(L+M/2)),S.setAttribute("y",String(H+qe/2)),S.textContent=w,n.appendChild(S)}function me(w){let $=b(w.frame),M=Math.floor($.w/yc);if(M<3)return[];let L=w.label.length>M?`${w.label.slice(0,M-1)}\u2026`:w.label,H=r.createElementNS(ne,"text");H.setAttribute("class",`vd-editor__page-label vd-editor__page-label--${w.state}`),H.setAttribute("x",String($.x)),H.setAttribute("y",String($.y-gc)),H.textContent=L,n.appendChild(H);let q=Math.min($.w,L.length*yc+4),S=Vg+6;return[{id:w.id,rect:{x:$.x,y:$.y-gc-S+3,w:q,h:S}}]}function he(w){let $=Fn(b(w.frame));n.appendChild(Q("vd-editor__lock",$));let M=`${w.label} \xB7 locked`,L=M.length*Tl+14,H=$.y+4,q=Q("vd-editor__lock-tag",{x:$.x+4,y:H,w:L,h:qe});q.setAttribute("rx","4"),n.appendChild(q);let S=r.createElementNS(ne,"text");S.setAttribute("class","vd-editor__lock-text"),S.setAttribute("x",String($.x+4+L/2)),S.setAttribute("y",String(H+qe/2)),S.textContent=M,n.appendChild(S)}function ke(w){let $=Fn(b(w.frame)),M=Q(w.target?"vd-editor__slot vd-editor__slot--target":"vd-editor__slot",$);M.setAttribute("rx","3"),n.appendChild(M);let L=S=>S.length*Ug+16<=$.w,H=[];$.h>=20&&L(w.label)&&H.push([w.label,"vd-editor__slot-label"]),H.length>0&&$.h>=48&&L(hc)&&H.push([hc,"vd-editor__slot-hint"]);let q=$.y+$.h/2-(H.length-1)*mc/2;H.forEach(([S,U],W)=>{let I=r.createElementNS(ne,"text");I.setAttribute("class",U),I.setAttribute("x",String($.x+$.w/2)),I.setAttribute("y",String(q+W*mc)),I.textContent=S,n.appendChild(I)})}function we(w){let $=w.frames.map(U=>Pr(b(U),Dr));for(let U of $)n.appendChild(Q("vd-editor__presence",U));let M=$[0];if(!M||!w.label)return;let L=Math.max(34,w.label.length*Tl+14),H=M.y-qe-3<0?M.y+3:M.y-qe-3,q=Q("vd-editor__presence-tag",{x:M.x,y:H,w:L,h:qe});q.setAttribute("rx","4"),n.appendChild(q);let S=r.createElementNS(ne,"text");S.setAttribute("class","vd-editor__presence-text"),S.setAttribute("x",String(M.x+L/2)),S.setAttribute("y",String(H+qe/2)),S.textContent=w.label,n.appendChild(S)}function T(w,$,M){let H=w==="vd-editor__highlight"?"vd-editor__halo vd-editor__halo--highlight":w==="vd-editor__hover"||w==="vd-editor__member"?"vd-editor__halo vd-editor__halo--quiet":"vd-editor__halo";n.appendChild(Q(H,Pr($,M+1))),n.appendChild(Q(w,$))}function Q(w,$){let M=r.createElementNS(ne,"rect");return M.setAttribute("class",w),M.setAttribute("x",String($.x)),M.setAttribute("y",String($.y)),M.setAttribute("width",String(Math.max(0,$.w))),M.setAttribute("height",String(Math.max(0,$.h))),M}return{element:n,render:P,hitHandle(w){let $=_(w,c);for(let M of o)if(et(M.rect,$.x,$.y))return{handle:M.handle,bound:M.bound};return null},hitAdjuster(w){let $=_(w,c);for(let M of a)if(et(M.rect,$.x,$.y))return{id:M.id,bound:M.bound};return null},hitSpacer(w){return Ll(i,w)},hitPath(w){let $=_(w,h),M=d.find(L=>et(L.rect,$.x,$.y));return M?{kind:M.kind,key:M.key}:null},hitRotate(w){let $=_(w,c),M=o.length===0?null:x;if(!M)return null;for(let L of M){let H=Math.hypot($.x-L.at.x,$.y-L.at.y);if(H<Tr/2+2||H>Fg)continue;let{u:q,v:S}=$r(L.handle);if(($.x-L.at.x)*(q*2-1)+($.y-L.at.y)*(S*2-1)>0)return L.handle}return null},hitRing(w){return Ll(l,w)},hitPageLabel(w){return Ll(y,w)},pageLabelRect(w){return y.find($=>$.id===w)?.rect??null},destroy(){n.remove(),o=[],a=[],i=[],l=[]}}}function Ll(e,t){for(let r of e)if(et(r.rect,t.x,t.y))return r.id;return null}function be(e){return Math.round(e)+.5}function Fn(e){return{x:e.x+.5,y:e.y+.5,w:Math.max(0,e.w-1),h:Math.max(0,e.h-1)}}function Pr(e,t){let r=t/2;return{x:e.x-r,y:e.y-r,w:e.w+t,h:e.h+t}}function wc(e,t){let r=[];return oe(e.root,n=>{if(t.has(n.id))return!1;n.type!=="image"||pe(n.src)||e.assets[n.src]===void 0&&r.push({id:n.id,src:n.src,label:n.name??n.src})}),r}function Dl(e){if(e.length<2)return null;let t=Ol("x",e),r=Ol("y",e);return r.length===1&&t.length===e.length?kc("x",e,t):t.length===1&&r.length===e.length?kc("y",e,r):r.length>=2&&t.length>=2?zg(e,t,r):null}function Ol(e,t){let r=[...t].sort((o,a)=>Nr(o.frame,e)-Nr(a.frame,e)),n=[];for(let o of r){let a=n[n.length-1];if(a&&Nr(o.frame,e)<a.hi-.01){n[n.length-1]={lo:a.lo,hi:Math.max(a.hi,fa(o.frame,e)),from:Math.min(a.from,Nr(o.frame,da(e))),to:Math.max(a.to,fa(o.frame,da(e))),members:[...a.members,o.id]};continue}n.push({lo:Nr(o.frame,e),hi:fa(o.frame,e),from:Nr(o.frame,da(e)),to:fa(o.frame,da(e)),members:[o.id]})}return n}function kc(e,t,r){return{kind:"run",items:t,series:[ua(e,r)],order:r.flatMap(n=>n.members)}}function zg(e,t,r){if(t.length*r.length!==e.length)return null;let n=[];for(let o of r)for(let a of t){let i=o.members.filter(l=>a.members.includes(l));if(i.length!==1||i[0]===void 0)return null;n.push(i[0])}return{kind:"grid",items:e,series:[ua("x",t),ua("y",r)],order:n}}function ua(e,t){let r=[];for(let n=0;n+1<t.length;n+=1){let o=t[n],a=t[n+1];!o||!a||r.push(a.lo-o.hi)}return{axis:e,tracks:t,gaps:r}}function it(e,t){return e.series.find(r=>r.axis===t)}function Pl(e){let t=e[0];return t===void 0?!1:e.every(r=>Math.abs(r-t)<.01)}function Nl(e){let t=[];for(let r of e.series){let n=e.series.find(o=>o.axis!==r.axis);for(let o=0;o<r.gaps.length;o+=1){let a=r.tracks[o],i=r.tracks[o+1],l=r.gaps[o];if(!a||!i||l===void 0)continue;let d=(a.hi+i.lo)/2,c=n?n.tracks.map(h=>(h.lo+h.hi)/2):[(Math.max(a.from,i.from)+Math.min(a.to,i.to))/2];for(let h of c)t.push({id:Sc(r.axis,o),axis:r.axis,index:o,gap:l,at:r.axis==="x"?{x:d,y:h}:{x:h,y:d}})}}return t}function Sc(e,t){return`${e}:${t}`}function ca(e){let[t,r]=e.split(":");if(t!=="x"&&t!=="y"||r===void 0)return null;let n=Number(r);return Number.isInteger(n)&&n>=0?{axis:t,index:n}:null}function Rl(e){return e.items.map(t=>({id:t.id,at:{x:t.frame.x+t.frame.w/2,y:t.frame.y+t.frame.h/2}}))}function pa(e,t,r){let n=it(e,t);return n?ha(n,r):new Map}function ha(e,t){let r=new Map,n=e.tracks[0];if(!n)return r;let o=n.hi;for(let a=1;a<e.tracks.length;a+=1){let i=e.tracks[a];if(!i)continue;let l=o+t;for(let d of i.members)r.set(d,l-i.lo);o=l+(i.hi-i.lo)}return r}function Il(e,t){return ua(t,Ol(t,e))}function Fl(e){let t=e.tracks,r=t[0],n=t[t.length-1];if(!r||!n||t.length<3)return null;let o=t.reduce((a,i)=>a+(i.hi-i.lo),0);return(n.hi-r.lo-o)/(t.length-1)}function Bl(e,t){let r=qg(e),n=0,o=1/0;for(let a=0;a<r.length;a+=1){let i=r[a];if(!i)continue;let l=Math.hypot(i.x-t.x,i.y-t.y);l<o&&(o=l,n=a)}return n}function qg(e){if(e.kind==="grid"){let r=it(e,"x")?.tracks??[];return(it(e,"y")?.tracks??[]).flatMap(o=>r.map(a=>({x:(a.lo+a.hi)/2,y:(o.lo+o.hi)/2})))}let t=e.series[0];return t?t.tracks.map(r=>t.axis==="x"?{x:(r.lo+r.hi)/2,y:(r.from+r.to)/2}:{x:(r.from+r.to)/2,y:(r.lo+r.hi)/2}):[]}function Hl(e,t,r){let n=[...e],[o]=n.splice(t,1);return o===void 0?[...e]:(n.splice(Math.max(0,Math.min(r,n.length)),0,o),n)}function Ul(e,t){let r=new Map(e.items.map(l=>[l.id,l.frame])),n=new Map;if(e.kind==="grid"){let l=it(e,"x")?.tracks??[],d=it(e,"y")?.tracks??[];return t.forEach((c,h)=>{let x=l[h%l.length],y=d[Math.floor(h/l.length)];x&&y&&n.set(c,{x:x.lo,y:y.lo})}),n}let o=e.series[0],a=o?.tracks[0];if(!o||!a)return n;let i=a.lo;return t.forEach((l,d)=>{let c=r.get(l);if(!c)return;let h=o.axis==="x"?c.w:c.h;n.set(l,o.axis==="x"?{x:i,y:c.y}:{x:c.x,y:i}),i+=h+(o.gaps[d]??0)}),n}function Vl(e,t,r){let n=new Map,o=e.items.find(d=>d.id===t),a=e.items.find(d=>d.id===r);if(!o||!a||t===r)return n;let i=e.kind==="grid"?["x","y"]:[e.series[0]?.axis??"x"],l=(d,c)=>({x:i.includes("x")?c.frame.x:d.frame.x,y:i.includes("y")?c.frame.y:d.frame.y});return n.set(t,l(o,a)),n.set(r,l(a,o)),n}function da(e){return e==="x"?"y":"x"}function Nr(e,t){return t==="x"?e.x:e.y}function fa(e,t){return t==="x"?e.x+e.w:e.y+e.h}var _c="vd-editor-styles",Cc=`
137
137
  .vd-editor {
138
138
  position: relative;
139
139
  width: 100%;
@@ -752,6 +752,152 @@ ${Yt}`);return t===-1?-1:t+1}function nh(e){let t=new Set;for(let r of e.matchAl
752
752
  }
753
753
  }
754
754
 
755
+ /* --- thumbnail strip ------------------------------------------------------ */
756
+
757
+ /*
758
+ * One row under the canvas (strip.ts). The height is STRIP_HEIGHT in
759
+ * strip-model.ts \u2014 12 above, a 64 tile, 6, a 14 caption, 8 below \u2014 and the
760
+ * host shifts the camera by half of it, so change both or neither.
761
+ */
762
+ .vd-strip {
763
+ box-sizing: border-box;
764
+ display: flex;
765
+ flex: 0 0 104px;
766
+ height: 104px;
767
+ min-width: 0;
768
+ border-top: 1px solid var(--vd-rule, rgb(0 0 0 / 0.12));
769
+ background: var(--vd-strip-bg, #ffffff);
770
+ color: var(--vd-ink, #1a1a1f);
771
+ font-family: var(--vd-font, system-ui, -apple-system, sans-serif);
772
+ }
773
+
774
+ .vd-strip__list {
775
+ display: flex;
776
+ align-items: flex-start;
777
+ gap: 12px;
778
+ flex: 1 1 auto;
779
+ min-width: 0;
780
+ padding: 11px 16px 0;
781
+ overflow-x: auto;
782
+ overflow-y: hidden;
783
+ outline: none;
784
+ scrollbar-width: thin;
785
+ /* A tile scrolled into view lands clear of the edge, outline and all. */
786
+ scroll-padding-inline: 16px;
787
+ }
788
+
789
+ .vd-strip__list[hidden],
790
+ .vd-strip__empty[hidden] {
791
+ display: none;
792
+ }
793
+
794
+ .vd-strip__empty {
795
+ flex: 1 1 auto;
796
+ align-self: center;
797
+ margin: 0;
798
+ padding: 0 16px;
799
+ font-size: 12px;
800
+ line-height: 1.5;
801
+ text-align: center;
802
+ color: var(--vd-muted, rgb(0 0 0 / 0.55));
803
+ }
804
+
805
+ .vd-strip__tile {
806
+ display: flex;
807
+ flex: 0 0 auto;
808
+ flex-direction: column;
809
+ gap: 6px;
810
+ cursor: default;
811
+ user-select: none;
812
+ }
813
+
814
+ .vd-strip__well {
815
+ display: flex;
816
+ align-items: center;
817
+ /* Left, so a narrow picture lines up with its number under it. */
818
+ justify-content: flex-start;
819
+ height: 64px;
820
+ }
821
+
822
+ .vd-strip__thumb {
823
+ flex: 0 0 auto;
824
+ box-sizing: border-box;
825
+ overflow: hidden;
826
+ border-radius: 4px;
827
+ outline: 1px solid var(--vd-rule, rgb(0 0 0 / 0.12));
828
+ outline-offset: -1px;
829
+ background: var(--vd-thumb-bg, #f2f2f2);
830
+ }
831
+
832
+ .vd-strip__thumb svg {
833
+ display: block;
834
+ width: 100%;
835
+ height: 100%;
836
+ /* As on the canvas: text was measured against real faces, and drawn with
837
+ every space it was measured with. */
838
+ font-synthesis: none;
839
+ }
840
+
841
+ .vd-strip__thumb text {
842
+ white-space: pre;
843
+ }
844
+
845
+ .vd-strip__tile:hover .vd-strip__thumb {
846
+ outline-color: var(--vd-muted, rgb(0 0 0 / 0.55));
847
+ }
848
+
849
+ /* Current: Ink in light, lime in dark, as a chosen card is. */
850
+ .vd-strip__tile[aria-selected='true'] .vd-strip__thumb {
851
+ outline: 2px solid var(--vd-chosen, var(--vd-accent, #3b82f6));
852
+ outline-offset: 1px;
853
+ }
854
+
855
+ /* The keyboard's tile: a ring outside the current outline, so the two read
856
+ apart when they are on different tiles and stack when they are on one. */
857
+ .vd-strip__list:focus-visible .vd-strip__tile[data-active='true'] .vd-strip__thumb {
858
+ box-shadow:
859
+ 0 0 0 5px var(--vd-strip-bg, #ffffff),
860
+ 0 0 0 7px var(--vd-focus, var(--vd-accent, #3b82f6));
861
+ }
862
+
863
+ .vd-strip__tile[data-state='hidden'] .vd-strip__thumb {
864
+ opacity: 0.4;
865
+ }
866
+
867
+ .vd-strip__caption {
868
+ display: flex;
869
+ align-items: center;
870
+ height: 14px;
871
+ overflow: hidden;
872
+ font-family: var(--vd-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
873
+ font-size: 11px;
874
+ line-height: 14px;
875
+ white-space: nowrap;
876
+ color: var(--vd-muted, rgb(0 0 0 / 0.55));
877
+ }
878
+
879
+ .vd-strip__tile[aria-selected='true'] .vd-strip__caption {
880
+ color: var(--vd-ink, #1a1a1f);
881
+ }
882
+
883
+ .vd-strip__tag {
884
+ padding: 0 4px;
885
+ border: 1px solid currentColor;
886
+ border-radius: 4px;
887
+ font-size: 10px;
888
+ line-height: 12px;
889
+ }
890
+
891
+ .vd-strip__icon {
892
+ display: grid;
893
+ place-items: center;
894
+ }
895
+
896
+ .vd-strip__icon svg {
897
+ width: 12px;
898
+ height: 12px;
899
+ }
900
+
755
901
  /* --- inspector ------------------------------------------------------------ */
756
902
 
757
903
  .vd-inspector {
@@ -2318,9 +2464,9 @@ button.vd-field__swatch:focus-visible {
2318
2464
  background: rgb(255 255 255 / 0.09);
2319
2465
  color: #fff;
2320
2466
  }
2321
- `;function ua(e){if(e.getElementById(kc))return;let t=e.createElement("style");t.id=kc,t.textContent=Sc,e.head.appendChild(t)}var Tt=["font","size","weight","italic","underline","strike","fill","letterSpacing","link"];function nr(e){return typeof e=="string"?e===""?[]:[{text:e}]:e.flatMap(t=>typeof t=="string"?t===""?[]:[{text:t}]:t.text===""?[]:[t])}function or(e){return typeof e=="string"?e:e.map(t=>typeof t=="string"?t:t.text).join("")}function ar(e){return or(e).length}function rr(e){let t={};for(let r of Tt){let n=e[r];n!==void 0&&(t[r]=n)}return t}function Ec(e,t){return Tt.every(r=>e[r]===t[r])}function Ig(e,t){let r={text:e};for(let n of Tt){let o=t[n];o!==void 0&&(r[n]=o)}return r}function In(e){let t=nr(e),r=[];for(let o of t){let a=r[r.length-1];if(a&&Ec(rr(a),rr(o))){r[r.length-1]={...a,text:a.text+o.text};continue}r.push(o)}if(r.length===0)return"";let n=r[0];return r.length===1&&_c(n)?n.text:r.map(o=>_c(o)?o.text:o)}function _c(e){return Tt.every(t=>e[t]===void 0)}function Vl(e,t,r){let[n,o]=ca(t,r,ar(e)),a=[],i=0;for(let d of nr(e)){let l=i+d.text.length,c=Math.max(n,i),m=Math.min(o,l);m>c&&a.push({...d,text:d.text.slice(c-i,m-i)}),i=l}return In(a)}function Pr(e,t,r,n,o){let a=ar(e),[i,d]=ca(t,r,a),l=o??Fn(e,i),c=[],m=0,x=!1,y=()=>{x||n===""||(c.push(Ig(n,l)),x=!0)};for(let w of nr(e)){let P=m+w.text.length,_=Math.min(i,P);_>m&&c.push({...w,text:w.text.slice(0,_-m)}),i>=m&&i<=P&&y();let C=Math.max(d,m);P>C&&c.push({...w,text:w.text.slice(C-m)}),m=P}return y(),In(c)}function Fn(e,t){let r=nr(e);if(r.length===0)return{};let n=0,o=r[0];for(let a of r){let i=n+a.text.length;if(t>n&&t<=i)return rr(a);if(t<=n)return rr(o);o=a,n=i}return rr(o)}function Ul(e,t,r,n){let[o,a]=ca(t,r,ar(e));if(o===a)return In(e);let i=Object.keys(n),d=[],l=0;for(let c of nr(e)){let m=l+c.text.length;for(let[x,y,w]of Fg(l,m,o,a)){if(y<=x)continue;let P=c.text.slice(x-l,y-l);if(!w){d.push({...c,text:P});continue}let _={...c,text:P};for(let C of i)n[C]===void 0?delete _[C]:_[C]=n[C];d.push(_)}l=m}return In(d)}function Fg(e,t,r,n){return[[e,Math.min(t,r),!1],[Math.max(e,r),Math.min(t,n),!0],[Math.max(e,n),t,!1]]}function zl(e,t,r){let[n,o]=ca(t,r,ar(e));if(n===o)return Fn(e,n);let a,i=0;for(let d of nr(e)){let l=i+d.text.length;if(Math.min(l,o)>Math.max(i,n)){let c=rr(d);if(!a)a=c;else{let m={};for(let x of Tt)a[x]===c[x]&&a[x]!==void 0&&(m[x]=a[x]);a=m}}i=l}return a??{}}function ca(e,t,r){let n=Cc(Math.min(e,t),r),o=Cc(Math.max(e,t),r);return[n,o]}function Cc(e,t){return Math.max(0,Math.min(Math.round(e),t))}function Nr(e,t){let r=[],n=0;return e.lines.forEach((o,a)=>{let i=o.spans.map(m=>m.text).join(""),d=i===""?n:Bg(t,i,n),l=d+i.length,c=a===e.lines.length-1;r.push({start:d,end:c?t.length:l}),n=l}),r.length===0&&r.push({start:0,end:t.length}),r}function Bg(e,t,r){let n=e.indexOf(t,r);return n===-1?r:n}function pa(e,t){for(let r=0;r<e.length;r+=1){let n=e[r];if(t<=n.end)return r}return Math.max(0,e.length-1)}function ma(e,t,r,n){let o=Nr(e,t),a=pa(o,r),i=e.lines[a],d=o[a];if(!i||!d)return{x:0,y:0,h:0,line:0};let l=Math.max(0,Math.min(r-d.start,Mc(i)));return{x:ql(i,l,n),y:i.y,h:i.h,line:a}}function Bn(e,t,r,n){let o=Nr(e,t);if(e.lines.length===0)return 0;let a=e.lines.findIndex(l=>r.y<l.y+l.h);a===-1&&(a=e.lines.length-1);let i=e.lines[a];return o[a].start+Ac(i,r.x,n)}function Ac(e,t,r){let n=0,o=1/0,a=0,i=(d,l)=>{let c=Math.abs(l-t);c<o&&(o=c,n=d)};i(0,e.spans[0]?.x??0);for(let d of e.spans){let l=[...d.text],c=0;l.forEach((m,x)=>{c=r.advance(l.slice(0,x+1).join(""),d.style),i(a+x+1,d.x+c)}),a+=l.length}return n}function ql(e,t,r){let n=0,o=e.spans[0]?.x??0;for(let a of e.spans){let i=[...a.text];if(t<=n)return a.x;if(t>=n+i.length){o=a.x+a.w,n+=i.length;continue}let d=i.slice(0,t-n).join("");return a.x+r.advance(d,a.style)}return o}function Mc(e){return e.spans.reduce((t,r)=>t+[...r.text].length,0)}function jl(e,t,r,n,o){let a=Math.min(r,n),i=Math.max(r,n);if(a===i)return[];let d=Nr(e,t),l=[];return e.lines.forEach((c,m)=>{let x=d[m];if(!x)return;let y=Math.max(a,x.start),w=Math.min(i,x.end);if(w<=y)return;let P=Mc(c),_=ql(c,Math.min(y-x.start,P),o),C=ql(c,Math.min(w-x.start,P),o),F=Math.max(C-_,w>x.end-1&&w>y?4:0);F>0&&l.push({x:_,y:c.y,w:F,h:c.h})}),l}function Kl(e,t,r,n,o){let a=Nr(e,t),d=pa(a,r)+n,l=e.lines[d],c=a[d];if(!l||!c)return n===-1?0:t.length;let m=ma(e,t,r,o);return Math.min(c.start+Ac(l,m.x,o),c.end)}var Hg=/[\p{L}\p{N}_]/u;function Gl(e,t){let r=Math.max(0,Math.min(t,e.length)),n=d=>Hg.test(e[d]??""),o=r;if(!n(o)&&o>0&&n(o-1)&&(o-=1),!n(o))return{from:r,to:r};let a=o,i=o;for(;a>0&&n(a-1);)a-=1;for(;i<e.length&&n(i);)i+=1;return{from:a,to:i}}function ha(e,t,r){let n=Nr(e,t),o=n[pa(n,r)];return o?{from:o.start,to:o.end}:{from:0,to:t.length}}var Oc=700;function Wl(e){let t=0,r=0,n=null,o=!1,a=0,i=!1,d=0,l=0;function c(){return or(e.content())}function m(A){return Math.max(0,Math.min(Math.round(A),c().length))}function x(){return{from:Math.min(t,r),to:Math.max(t,r)}}function y(A,D=A){let k=t!==A||r!==D;t=m(A),r=m(D),k&&w(),n=null,e.invalidate()}function w(){o=!1,a&&(clearTimeout(a),a=0)}function P(){a&&clearTimeout(a),a=setTimeout(w,Oc)}function _(A,D){e.write(A,o,D),o=!0,P()}function C(A,D){let{from:k,to:V}=x(),W=n??void 0;_(Pr(e.content(),k,V,A,W),D),t=r=k+A.length,n=null,e.invalidate()}function F(A,D){A!==D&&(_(Pr(e.content(),A,D,""),"Delete text"),t=r=Math.min(A,D),e.invalidate())}function N(A,D){let{from:k,to:V}=x();if(k!==V){F(k,V);return}let W=c();if(A===-1){if(k===0)return;let re=D?Lc(W,k):k-1;F(re,k);return}if(k>=W.length)return;let pe=D?Tc(W,k):k+1;F(k,pe)}function J(A,D){let k=c();return D?A===-1?Lc(k,r):Tc(k,r):m(r+A)}return{id:e.id,getSelection:()=>({anchor:t,head:r}),setSelection(A,D){y(A,D??A)},caret(){return ma(e.layout(),c(),r,e.measure())},highlight(){let{from:A,to:D}=x();return jl(e.layout(),c(),A,D,e.measure())},pointTo(A,D){let k=Bn(e.layout(),c(),A,e.measure());y(D?t:k,k)},selectWordAt(A){let D=Bn(e.layout(),c(),A,e.measure()),k=Gl(c(),D);y(k.from,k.to)},selectLineAt(A){let D=Bn(e.layout(),c(),A,e.measure()),k=ha(e.layout(),c(),D);y(k.from,k.to)},selectAll(){y(0,c().length)},format(A){let{from:D,to:k}=x();if(D===k){n={...Fn(e.content(),D),...A},e.invalidate();return}w(),_(Ul(e.content(),D,k,A),"Format text"),w(),e.invalidate()},activeMark(){if(n)return n;let{from:A,to:D}=x();return zl(e.content(),A,D)},composing:()=>i,handleKey(A){if(i)return!1;let D=A.metaKey||A.ctrlKey,k=A.altKey||A.ctrlKey&&!A.metaKey;switch(A.key){case"Escape":return e.close("escape"),!0;case"ArrowLeft":case"ArrowRight":{let V=A.key==="ArrowLeft"?-1:1,{from:W,to:pe}=x();if(!A.shiftKey&&W!==pe)y(V===-1?W:pe);else{let re=D?$c(e,c(),r,V):J(V,k);y(A.shiftKey?t:re,re)}return!0}case"ArrowUp":case"ArrowDown":{let V=A.key==="ArrowUp"?-1:1,W=D?V===-1?0:c().length:Kl(e.layout(),c(),r,V,e.measure());return y(A.shiftKey?t:W,W),!0}case"Home":case"End":{let V=$c(e,c(),r,A.key==="Home"?-1:1);return y(A.shiftKey?t:V,V),!0}case"Backspace":return N(-1,k||D),!0;case"Delete":return N(1,k||D),!0;case"Enter":return D?e.close("done"):C(`
2322
- `,"Type text"),!0;case"Tab":return!1;case"a":case"A":return D?(y(0,c().length),!0):!1;case"b":case"B":{if(!D)return!1;let V=this.activeMark().weight===700;return this.format({weight:V?void 0:700}),!0}case"i":case"I":return D?(this.format({italic:this.activeMark().italic===!0?void 0:!0}),!0):!1;case"u":case"U":return D?(this.format({underline:this.activeMark().underline===!0?void 0:!0}),!0):!1;default:return!1}},handleInput(A){if(!i)switch(A.inputType){case"insertText":case"insertReplacementText":case"insertFromPaste":case"insertFromDrop":case"insertFromYank":C(Vg(A),"Type text");return;case"insertParagraph":case"insertLineBreak":C(`
2323
- `,"Type text");return;case"deleteContentBackward":case"deleteWordBackward":N(-1,A.inputType==="deleteWordBackward");return;case"deleteContentForward":case"deleteWordForward":N(1,A.inputType==="deleteWordForward");return;case"deleteByCut":case"deleteByDrag":{let{from:D,to:k}=x();F(D,k);return}default:return}},handleCompositionStart(){i=!0;let{from:A,to:D}=x();d=A,l=D,w()},handleCompositionUpdate(A){_(Pr(e.content(),d,l,A),"Type text"),l=d+A.length,t=r=l,e.invalidate()},handleCompositionEnd(A){_(Pr(e.content(),d,l,A),"Type text"),i=!1,l=d+A.length,t=r=l,w(),e.invalidate()},breakBurst:w,destroy(){w()}}}function Vg(e){return typeof e.data=="string"?e.data:e.dataTransfer?.getData("text/plain")??""}function $c(e,t,r,n){let o=ha(e.layout(),t,r);return n===-1?o.from:o.to}var xa=/[\p{L}\p{N}_]/u;function Lc(e,t){let r=t;for(;r>0&&!xa.test(e[r-1]??"");)r-=1;for(;r>0&&xa.test(e[r-1]??"");)r-=1;return r}function Tc(e,t){let r=t;for(;r<e.length&&!xa.test(e[r]??"");)r+=1;for(;r<e.length&&xa.test(e[r]??"");)r+=1;return r}function Xl(e){return ar(e)===0}var Yl={v:"select",f:"frame",r:"rect",o:"ellipse",p:"pen",t:"text"};function Rr(e,t){let r=[];for(let n of t){if(!z(e.root,n.nodeId))continue;let o=ee(n.to);ee(n.from)!==o&&r.push({op:"set",id:n.nodeId,prop:n.prop,value:o})}return r}function ee(e){return Math.round(e*100)/100}function Ir(e,t,r,n){let o=new Set,a=[];for(let l of t)l.op==="set"&&(o.add(Te(l.id,l.prop)),a.push({nodeId:l.id,prop:l.prop}));if(a.length===0)return[];let i=[],d=new Set;for(let l of a)for(let c of r.get(Te(l.nodeId,l.prop))??[]){let m=Te(c.nodeId,c.prop);if(o.has(m)||d.has(m)||!z(e.root,c.nodeId))continue;let x=n.nodes.get(c.nodeId)?.values[c.prop];x!==void 0&&(d.add(m),i.push({op:"set",id:c.nodeId,prop:c.prop,value:ee(x)}))}return i}function Jl(e,t,r,n={x:0,y:0}){let o=[],a=new Set,i=e;for(;;){let d=[],l=$e(i);for(let[c,m]of t){let x=r.get(c),y=z(i.root,m),w=l.nodes.get(m);if(!(!x||!y||!w))for(let P of tt(y)){let _=Te(m,P);if(a.has(_))continue;let C=x[P],F=w.values[P];if(C===void 0||F===void 0)continue;let N=C+(P==="x"?n.x:P==="y"?n.y:0);ee(N)!==ee(F)&&(a.add(_),d.push({op:"set",id:m,prop:P,value:ee(N)}))}}if(d.length===0)return o;o.push(...d),i=ve(i,d).document}}function Fr(e,t,r=new Set){let n=$e(e),o=$e(t),a=[];for(let[i,d]of o.nodes){if(r.has(i))continue;let l=n.nodes.get(i),c=z(t.root,i);if(!(!l||!c))for(let m of tt(c)){let x=l.values[m],y=d.values[m];x===void 0||y===void 0||ee(x)!==ee(y)&&a.push({op:"set",id:i,prop:m,value:ee(x)})}}return a}function ga(e,t,r){let n=new Set,o=[];for(let a of t)a.op==="set"&&a.prop==="view"&&n.add(a.id);for(let a of t){if(a.op!=="set"||a.prop!=="w"&&a.prop!=="h"||n.has(a.id))continue;let i=z(e.root,a.id);if(i?.type!=="vector"||i.view!==void 0)continue;let d=r(a.id);d&&(n.add(a.id),o.push({op:"set",id:a.id,prop:"view",value:Wt({x:0,y:0,w:d.w,h:d.h})}))}return o.length===0?[...t]:[...o,...t]}var Zl="host:",Ug="#ffffff",ya=20,zg=15,qg={ne:0,se:90,sw:180,nw:270,n:0,e:90,s:180,w:270},Dc={w:240,h:28},jg={text:"Add text",frame:"Add page",rect:"Draw rectangle",ellipse:"Draw ellipse"};function Kg(e,t){let r=t.x-e.x,n=t.y-e.y,o=Math.max(Math.abs(r),Math.abs(n));return{x:e.x+Math.sign(r||1)*o,y:e.y+Math.sign(n||1)*o}}var Gg={KeyA:"left",KeyD:"right",KeyW:"top",KeyS:"bottom",KeyH:"hcenter",KeyV:"vcenter"},Wg={KeyH:"x",KeyV:"y"},Xg={left:"Align left",hcenter:"Align horizontal centres",right:"Align right",top:"Align top",vcenter:"Align vertical centres",bottom:"Align bottom"},Ql=null,Yg=220,Pc={lock:!0,hide:!0},Jg=["x","y","w","h"],Zg={front:"Bring to front",forward:"Bring forward",backward:"Send backward",back:"Send to back"},Qg=11,Ot=2;function td(e,t){ua(e.ownerDocument),e.classList.add("vd-editor"),e.hasAttribute("tabindex")||(e.tabIndex=0);let r=t.document,n=[],o=t.tool??"select",a=null,i=null,d=null,l={ids:[],label:null},c=null,m=[],x=!1,y=!1,w=null,P={...Pc,...t.features},_=null,C=new Pn,F=0,N=null,J=null,A=new Map,D=e.ownerDocument.createElement("div");D.style.position="absolute",D.style.inset="0",e.appendChild(D);let k=Io(D,{document:r,...t.camera?{camera:t.camera}:{},...t.surface?{surface:t.surface}:{},...t.interactive===void 0?{}:{interactive:t.interactive},...t.wheel?{wheel:t.wheel}:{},...t.resolveAsset?{resolveAsset:t.resolveAsset}:{},...t.fonts?{fonts:t.fonts}:{},onCameraChange:s=>{W?.setZoom(s.zoom),X(),Pe("camera",s),!(F>0)&&(Sa(),Pe("navigate",s))}}),V=yc(e,s=>k.documentToScreen(s)),W=t.chrome===!1?null:Iu(e,{onTool:bt,onUndo:Yr,onRedo:to,onZoomReset:()=>k.fitToContent(),onPlay:t.onPlay,playHint:t.playHint,formatKeys:t.formatKeys}),pe=t.chrome===!1?null:Cl(e,{onCommand:Yp,...t.formatKeys?{formatKeys:t.formatKeys}:{}}),re=r,we=r,xe=[],L=null,me=[],ne=null,S=null,$=new Map,M=null,T=null,H=null,K=[],b=ze,U=null,B=null,R=null,q=null,je=!1,oe=e.ownerDocument.createElement("textarea");oe.className="vd-editor__input",oe.setAttribute("aria-hidden","true"),oe.tabIndex=-1,oe.autocapitalize="off",oe.autocomplete="off",oe.spellcheck=!1,e.appendChild(oe);function Pe(s,f){let u=A.get(s);if(u)for(let p of u)p(f)}function op(s,f){let u=A.get(s)??new Set;return u.add(f),A.set(s,u),()=>u.delete(f)}function ka(s){F+=1;try{s()}finally{F-=1}}function Sa(){N!==null&&(e.ownerDocument.defaultView?.cancelAnimationFrame(N),N=null)}function ap(s){let f=k.linkAt(s),u=f===void 0?void 0:Je(f);return u?u.kind==="url"?t.onOpenLink?(t.onOpenLink(u.url),!0):!1:z(r.root,u.id)?(ie([u.id]),_a([u.id]),!0):!1:!1}function _a(s,f={}){if(L!==null)return J={target:s,options:f},!1;let u=ip(s);if(!u)return!1;let p=e.getBoundingClientRect(),h=p.width>0&&p.height>0,g=h?{width:p.width,height:p.height-sp(p)}:{width:u.w+96,height:u.h+96},v=Sl(u,g,k.getCamera());if(!v)return!1;Sa();let E=e.ownerDocument.defaultView,O=E?.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1;if(f.animate===!1||O||!h||!E?.requestAnimationFrame)return ka(()=>k.setCamera(v)),!0;let I=k.getCamera(),j=E.performance.now(),G=ae=>{let Y=Math.min(1,Math.max(0,(ae-j)/Yg));ka(()=>k.setCamera(Y===1?v:nc(I,v,oc(Y),g))),N=Y===1?null:E.requestAnimationFrame(G)};return N=E.requestAnimationFrame(G),!0}function sp(s){let f=W?.element.getBoundingClientRect();return!f||f.height===0?0:Math.max(0,s.bottom-f.top)}function Un(){if(J===null||L!==null)return;let{target:s,options:f}=J;J=null,_a(s,f)}function ip(s){if(s==="content"){let u=k.getScene();return ea([{x:u.x,y:u.y,w:u.width,h:u.height}])}let f=[];for(let u of kl(r,s)){let p=Ce(u);p&&f.push(p)}return ea(f)}function it(s){return k.getResolution().nodes.get(s)}function gt(s){let f=it(s);return f?{x:f.x,y:f.y,w:f.w,h:f.h}:void 0}function Ce(s){return tr(s,r,k.getResolution())}function Dt(s){let f=it(s);return f?{x:f.absX,y:f.absY,w:f.w,h:f.h}:void 0}function Pt(s){return it(s)?.values.rotation??0}function ud(){let s=Vr();if(s.length===0)return null;for(let f of s){let u=z(r.root,f);if(!u||!Ps.includes(u.type))return null}return s}function zn(s,f=new Set){let u=k.getResolution(),p=null;return se(r.root,h=>{if(f.has(h.id)||!Rt(h.id))return!1;if(h.type!=="frame")return;let g=u.nodes.get(h.id);if(!g)return!1;let v={x:g.absX,y:g.absY,w:g.w,h:g.h};if(!et(v,s.x,s.y))return!1;p=h.id}),p}function Nt(s){let f=it(s);return f?{x:f.absX,y:f.absY}:{x:0,y:0}}function Ne(){return _?.of!==r&&(_={of:r,hidden:no(r.root),locked:oo(r.root)}),_}function Rt(s){let{hidden:f,locked:u}=Ne();return!f.has(s)&&!u.has(s)}function Q(){return n.filter(Rt)}function qn(s){let f=k.hitTest(s,p=>!Ne().locked.has(p));if(f===null)return null;let u=w===null||Oe(r.root,f).includes(w);return Jo(f,r,u?w:null)}function lp(){return Dn(r,Q(),k.getResolution())}function Hr(){return Q().length<2?null:Tl(lp())}function jn(s){let f=[];for(let u of s)for(let p of er(u,r)){let h=gt(p);h&&f.push({member:u,node:p,frame:h})}return f}function Kn(s,f){let u=z(r.root,s);if(!u)return"literal";let p=u[f];return p===void 0?"literal":Eo(p).kind}function dp(s){let f=z(r.root,s),u={};if(!f)return u;let p=[...Jg,...$n(f).map(h=>h.prop)];for(let h of p)u[h]=Kn(s,h);return u}function cd(s,f){let u="none";for(let p of s){let h=Ca(p,f);if(h==="expression")return"expression";h==="token"&&(u="token")}return u}function Ca(s,f){let u="none";for(let p of f){let h=Kn(s,p);if(h==="complex")return"expression";h==="token"&&(u="token")}return u}let Re=null;function fe(s,f){if(s.length===0)return;let u=xo(r,ga(r,s,gt)),p=ve(r,u);r=p.document,Re?(Ma(Re.started,Re.label,u,p.inverse),Re.started=!0):C.push({label:f,ops:u,inverse:p.inverse}),Gn(u,f)}function fp(s){Re={label:s,started:!1}}function up(){Re=null}function pd(s,f){s.length!==0&&(r=ve(r,s).document,Gn(s,f))}function Gn(s,f){a=null,T=null,H=null,k.update(r),W?.setHistory(C.canUndo,C.canRedo),X(),Pe("change",{document:r,ops:s,label:f}),Pe("problems",k.getScene().problems)}function ie(s){let f=s.filter(p=>p!==r.root.id&&z(r.root,p)),u=f.length!==n.length||f.some((p,h)=>n[h]!==p);n=[...f],R&&(f.length!==1||f[0]!==R.id)&&(R=null),u&&(pe?.close(),H=null,Pe("selection",n)),X()}function cp(s,f){let u=z(r.root,s);if(!u)return[];let p=k.getCamera().zoom;if(Math.min(f.w,f.h)*p<24)return[];let h=Qg/p,g=it(s);return $n(u).flatMap(v=>{let E=g?.values[v.prop]??0,O=Kn(s,v.prop)!=="literal";return v.handles(f,E,h).map(I=>({id:I.id,at:I.at,bound:O}))})}function pp(){let s=[];for(let I of Q()){let j=Ce(I);j&&s.push(j)}let f=Qe(s);if(!f)return null;let u=Q().length===1?Q()[0]:void 0,p=u===void 0?void 0:z(r.root,u),h=u===void 0||!p||ue(p),g=new Set,v=Vr();for(let I of ii){let j=Fo(I);v.some(G=>j.some(ae=>Kn(G,ae)!=="literal"))&&g.add(I)}let E=!h&&u!==void 0?Pt(u):0,O=E!==0&&u!==void 0?Dt(u):void 0;return{frame:O??f,...O?{rotation:E}:{},rotatable:ud()!==null,handles:B===null,boundHandles:g,adjusters:B!==null||h||u===void 0||O?[]:cp(u,f)}}function Vr(){return[...new Set(Q().flatMap(s=>er(s,r)))]}function mp(s){if(!s)return null;if(L?.kind==="adjust")return`r ${ee(ne??L.from)}`;if(L?.kind==="rotate")return`${ee(S??0)}\xB0`;if(!L&&T&&Q().length===1){let f=it(Q()[0])?.values[T.prop]??0;return`r ${ee(f)}`}return L?.kind==="move"?`${ee(s.frame.x)}, ${ee(s.frame.y)}`:`${ee(s.frame.w)} \xD7 ${ee(s.frame.h)}`}function hp(){let f=L!==null&&L.kind!=="space"&&L.kind!=="reorder"?null:Hr();if(!f)return{spacers:[],rings:[],lead:null};let u=L?.kind==="space"?L.spacer:null;return{spacers:Dl(f).map(p=>({id:p.id,axis:p.axis,at:p.at,label:p.id===(u??H)?String(ee(p.gap)):null})),rings:Pl(f).map(p=>({id:p.id,at:p.at})),lead:L?.kind==="reorder"?Ce(L.id)??null:null}}function X(){if(!y)return;let s=Rp(),f=s?null:pp(),u=a!==null&&!n.includes(a)&&!L?Ce(a)??null:null,p={...gc,...hp(),hover:u,members:Q().length>1?Q().flatMap(h=>Ce(h)??[]):[],box:f,badge:mp(f),caret:md(),textSelection:hd(),draft:L?.kind==="create"?Qt(L.origin,L.current):null,draftEllipse:L?.kind==="create"&&o==="ellipse",marquee:L?.kind==="marquee"?Qt(L.origin,L.current):null,guides:L?b.guides:[],measures:L?b.measures:[],presence:l.ids.length===0?null:{frames:l.ids.flatMap(h=>Ce(h)??[]),label:l.label},highlight:On(r,m).flatMap(h=>Ce(h.id)??[]),slots:am(),parked:n.filter(h=>!Rt(h)).flatMap(h=>Ce(h)??[]),lockHint:yp(),path:s,turn:vp(),pageLabels:xp()};V.render(p)}function xp(){return i?[]:r.root.children.flatMap(s=>{if(s.type!=="frame")return[];let f=Ce(s.id);if(!f)return[];let u=s.name;return[{id:s.id,frame:f,label:typeof u=="string"&&u!==""?u:s.id,state:n.includes(s.id)?"selected":a===s.id?"hover":"idle"}]})}function gp(s){let f=V.pageLabelRect(s),u=z(r.root,s);if(!f||!u)return;let p=u.name,h=e.ownerDocument.createElement("input");h.className="vd-editor__rename",h.type="text",h.spellcheck=!1,h.value=typeof p=="string"&&p!==""?p:"",h.placeholder=s,h.setAttribute("aria-label",`Name of ${s}`),h.style.left=`${f.x-4}px`,h.style.top=`${f.y-2}px`,h.style.width=`${Math.max(120,f.w+40)}px`;let g=!1,v=E=>{if(g)return;g=!0;let O=h.value.trim();h.remove(),i=null,E&&O!==(typeof p=="string"?p:"")&&tf(s,"name",O===""?void 0:O,"Rename"),X(),e.focus({preventScroll:!0})};h.addEventListener("keydown",E=>{E.stopPropagation(),E.key==="Enter"?(E.preventDefault(),v(!0)):E.key==="Escape"&&(E.preventDefault(),v(!1))}),h.addEventListener("pointerdown",E=>E.stopPropagation()),h.addEventListener("blur",()=>v(!0)),i=h,e.appendChild(h),X(),h.focus(),h.select()}function yp(){if(d===null||L||!Ne().locked.has(d))return null;let s=Ce(d);return s?{frame:s,label:d}:null}function Wn(s){let f=k.itemOf(s);if(f?.kind!=="text")return null;let u=f.lines[0]?.y??f.y,p={lines:f.lines.map(h=>({y:h.y-u,h:h.h,baseline:h.baseline-u,w:h.w,spans:h.spans.map(g=>({text:g.text,style:g.style,x:g.x-f.x,w:g.w}))})),width:Math.max(0,...f.lines.map(h=>h.w)),height:f.height};return{item:f,layout:p,top:u}}function Ea(){return o==="text"?"text":o!=="select"?"crosshair":"arrow"}function md(){if(!B)return null;let s=Wn(B.id);if(!s)return null;let f=B.caret();return{x:s.item.x+f.x,y:s.top+f.y,h:f.h}}function hd(){if(!B)return[];let s=Wn(B.id);return s?B.highlight().map(f=>({x:s.item.x+f.x,y:s.top+f.y,w:f.w,h:f.h})):[]}function Aa(s){if(!B)return null;let f=Wn(B.id);if(!f)return null;let u=Ur(B.id,s);return{x:u.x-f.item.x,y:u.y-f.top}}function Ur(s,f){let u=Pt(s),p=u===0?void 0:Dt(s);return p?De(f,Ve(p),-u):f}function vp(){let s=B?.id??R?.id;if(s===void 0)return null;let f=Pt(s),u=f===0?void 0:Dt(s);return u?{angle:f,centre:Ve(u)}:null}function bp(s){let f=z(r.root,s);if(!f||f.type!=="text"||typeof f.h!="number")return[];let u=k.itemOf(s);if(u?.kind!=="text")return[];let p=ee(Math.ceil(u.height));return p>f.h?[{op:"set",id:s,prop:"h",value:p}]:[]}function wp(s,f,u,p){let h=Re?Re.started:u,g=Re?.label??p;Re&&(Re.started=!0);let v=[{op:"set",id:s,prop:"content",value:f}],E=ve(r,v);r=E.document,k.update(r);let O=bp(s);if(O.length===0){Ma(h,g,v,E.inverse),Gn(v,g);return}let I=ve(r,O);r=I.document,k.update(r);let j=[...v,...O];Ma(h,g,j,[...I.inverse,...E.inverse]),Gn(j,g)}function Ma(s,f,u,p){let h={label:f,ops:u,inverse:p};s&&C.amend(h)||C.push(h)}function zr(s,f){let u=z(r.root,s);if(!u||u.type!=="text"||B?.id===s)return;sr("done"),bt("select"),ie([s]),B=Wl({id:s,content:()=>{let h=z(r.root,s);return h?.type==="text"?h.content:""},layout:()=>Wn(s)?.layout??{lines:[],width:0,height:0},measure:()=>k.getMeasurer(),write:(h,g,v)=>wp(s,h,g,v),invalidate:()=>{X(),xd(),Pe("selection",n)},close:h=>sr(h)});let p=f?Aa(f):null;p?B.pointTo(p,!1):B.selectAll(),e.classList.add("vd-editor--editing"),oe.value="",oe.focus({preventScroll:!0}),X(),xd()}function sr(s){let f=B;if(!f)return;B=null,je=!1,f.destroy(),e.classList.remove("vd-editor--editing","vd-editor--typing"),Pe("selection",n);let u=z(r.root,f.id);u?.type==="text"&&Xl(u.content)&&(fe([{op:"remove",id:f.id}],"Remove empty text"),ie([])),e.ownerDocument.activeElement===oe&&e.focus({preventScroll:!0}),X()}function xd(){let s=md();if(!s)return;let f=k.documentToScreen({x:s.x,y:s.y});oe.style.left=`${Math.round(f.x)}px`,oe.style.top=`${Math.round(f.y)}px`}let ir=0;function gd(){e.classList.add("vd-editor--typing"),ir&&clearTimeout(ir),ir=setTimeout(()=>{ir=0,e.classList.remove("vd-editor--typing")},520)}function $a(s){let f=Rr(re,s);return f.length>0&&M?[...f,...Ir(re,f,$,M)]:f}function It(s){La($a(s))}function La(s,f=s){let u=h=>{let g=M?.nodes.get(h);return g?{x:0,y:0,w:g.w,h:g.h}:void 0},p=ga(re,s,u);me=ga(re,f,u),k.update(p.length>0?ve(re,p).document:re),X()}function yd(){let s=Qe(Q().flatMap(p=>Ce(p)??[]));if(!s)return null;let f=new Map,u=new Map;for(let p of Vr()){let h=Dt(p),g=gt(p);!h||!g||(f.set(p,h),u.set(p,{x:h.x-g.x,y:h.y-g.y}))}return f.size===0?null:{bounds:s,frames:f,offsets:u}}function vd(s,f){let u=hl(s.frames,s.bounds,f),p=[];for(let[h,g]of u){let v=s.frames.get(h),E=s.offsets.get(h);if(!v||!E)continue;let O=Pt(h),I=O===0?g:Mu(v,O,s.bounds,f);p.push({nodeId:h,prop:"x",from:v.x-E.x,to:I.x-E.x},{nodeId:h,prop:"y",from:v.y-E.y,to:I.y-E.y},{nodeId:h,prop:"w",from:v.w,to:I.w},{nodeId:h,prop:"h",from:v.h,to:I.h})}return p}function kp(s,f){let u=ud();if(!u)return!1;let p=Q().length===1&&u.length===1?u[0]:void 0,h=Qe(Q().flatMap(E=>Ce(E)??[])),g=p!==void 0?Dt(p):h;if(!g)return!1;let v=u.flatMap(E=>{let O=Dt(E),I=gt(E);return!O||!I?[]:[{id:E,frame:O,rotation:Pt(E),offset:{x:O.x-I.x,y:O.y-I.y}}]});return v.length===0?!1:(Ge(f),Ie({kind:"rotate",pointerId:f,origin:s,centre:Ve(g),targets:v}),!0)}function Sp(s,f,u){let p=yd();return p?(Ge(u),Ie({kind:"scale",pointerId:u,origin:s,handle:f,...p}),!0):!1}function _p(s){let f=yd();if(!f)return;let u=Rr(r,vd(f,s));if(u.length===0)return;let p=s.w!==f.bounds.w||s.h!==f.bounds.h;fe([...u,...Ir(r,u,_r(r),$e(r))],p?"Resize":"Move")}function Cp(s,f,u){let p=la(s),h=Hr();if(!p||!h)return!1;let g=st(h,p.axis)?.gaps[p.index],v=jn(Q());return g===void 0||v.length===0?!1:(Ge(u),Ie({kind:"space",pointerId:u,origin:f,axis:p.axis,spacer:s,layout:h,gap:g,parts:v}),!0)}function Ep(s,f){let u=s.axis==="x"?f.x-s.origin.x:f.y-s.origin.y,p=Math.max(0,s.gap+u);It(Ta(s.parts,s.axis,da(s.layout,s.axis,p)))}function Ap(s,f){let u=Hr(),p=u?st(u,s):void 0;if(!u||!p||p.gaps.length===0)return;let h=Rr(r,Ta(jn(Q()),s,da(u,s,Math.max(0,f))));h.length!==0&&fe([...h,...Ir(r,h,_r(r),$e(r))],"Spacing")}function Mp(s){let f=Hr(),u=f?st(f,s)?.gaps:void 0;return!u||u.length===0?null:Ol(u)?u[0]??null:"mixed"}function Ta(s,f,u){return s.map(p=>{let h=f==="x"?p.frame.x:p.frame.y;return{nodeId:p.node,prop:f,from:h,to:h+(u.get(p.member)??0)}})}function $p(s,f,u){let p=Hr();if(!p||!p.order.includes(s))return!1;let h=jn(Q()),g=p.items.find(v=>v.id===s)?.frame;return h.length===0||!g?!1:(Ge(u),Ie({kind:"reorder",pointerId:u,id:s,layout:p,parts:h,grab:{x:f.x-g.x,y:f.y-g.y},to:p.order.indexOf(s),swap:!1}),!0)}function Lp(s,f,u){s.to=Il(s.layout,f),s.swap=u;let p=Tp(s),h=new Map(p);h.set(s.id,{x:f.x-s.grab.x,y:f.y-s.grab.y}),La($a(bd(s,h)),$a(bd(s,p)))}function Tp(s){let f=s.layout.order.indexOf(s.id);if(f===-1||s.to===f)return new Map;if(s.swap){let u=s.layout.order[s.to];return u===void 0?new Map:Hl(s.layout,s.id,u)}return Bl(s.layout,Fl(s.layout.order,f,s.to))}function bd(s,f){let u=new Map(s.layout.items.map(h=>[h.id,h.frame])),p=[];for(let h of s.parts){let g=f.get(h.member),v=u.get(h.member);!g||!v||p.push({nodeId:h.node,prop:"x",from:h.frame.x,to:h.frame.x+(g.x-v.x)},{nodeId:h.node,prop:"y",from:h.frame.y,to:h.frame.y+(g.y-v.y)})}return p}function Ie(s,f=[],u=r){we=u,xe=f,re=r,L=s,me=[],$=_r(r),M=$e(r),b=ze,K=Op(s)?gl(r,M,Dp(s)):[]}function Op(s){return s.kind==="move"||s.kind==="resize"||s.kind==="scale"||s.kind==="create"}function Dp(s){return s.kind==="move"||s.kind==="scale"?new Set(Q()):s.kind==="resize"?new Set([s.id]):new Set}function qr(s){return s.metaKey||s.ctrlKey?0:xl/k.getCamera().zoom}function yt(s){let f=[...xe,...me];L=null,me=[],xe=[],ne=null,S=null,b=ze,r=we,k.update(r),fe(f,s),X()}function Pp(){let s=me.length>0?ve(re,me).document:re,f=new Set(Q().flatMap(h=>wd(h,s))),u=[];for(let h of Q()){let g=z(s.root,h),v=rt(s.root,h);if(!g||!v)continue;let E=Ce(h);if(!E)continue;let O={x:E.x+E.w/2,y:E.y+E.h/2},I=zn(O,f)??r.root.id;if(I===v.id)continue;let j=z(s.root,I);if(!j||!ue(j))continue;u.push({op:"move",id:h,parent:I,index:le(j).length});let G={x:Nt(v.id).x-Nt(I).x,y:Nt(v.id).y-Nt(I).y};if(!(G.x===0&&G.y===0))for(let ae of er(h,s)){let Y=gt(ae);Y&&(u.push({op:"set",id:ae,prop:"x",value:ee(Y.x+G.x)}),u.push({op:"set",id:ae,prop:"y",value:ee(Y.y+G.y)}))}}if(u.length===0)return[];let p=ve(s,u).document;return[...u,...Fr(s,p,f)]}function wd(s,f){let u=z(f.root,s);if(!u)return[];let p=[];return se(u,h=>{p.push(h.id)}),p}function Oa(){if(!L)return;L=null,me=[],ne=null,S=null,b=ze;let s=xe.length>0;r=we,xe=[],s&&ie(n.filter(f=>z(r.root,f))),k.update(r),X()}let Np=5,Xn=8;function kd(s,f=r,u=k.getResolution()){let p=z(f.root,s),h=u.nodes.get(s);if(p?.type!=="vector"||!h)return;let g={x:h.absX,y:h.absY,w:Math.max(0,h.w),h:Math.max(0,h.h)};return{node:p,view:ln(p.view,g.w,g.h),box:g}}function jr(s,f=r,u=k.getResolution()){let p=kd(s,f,u);if(p)return ut(on(p.node.d).contours,dn(p.view,p.box))}function vt(s,f,u,p=r,h=k.getResolution()){let g=kd(s,p,h);if(!g)return[];let{node:v,view:E,box:O}=g,I=ut(f,rs(E,O)),j=[],G=(ja,ff,gm)=>{ff!==gm&&j.push({op:"set",id:s,prop:ja,value:ff})};G("d",ft(I),v.d);let ae=[v.x,v.y,v.w,v.h].every(ja=>typeof ja=="number"),Y=Gt(I),ge=Gt(f);if(!u||!ae||!Y||!ge)return j;let wt=O.x-v.x,Jr=O.y-v.y;return G("view",Wt(Y),v.view),G("x",ee(ge.x-wt),v.x),G("y",ee(ge.y-Jr),v.y),G("w",ee(ge.w),v.w),G("h",ee(ge.h),v.h),j}function Ft(s){return z(r.root,s)?.type!=="vector"||!Rt(s)?!1:(B&&sr("done"),q&&Yn(),ie([s]),R={id:s,picked:new Set},o!=="select"&&bt("select"),Ke(null),X(),!0)}function Kr(){R&&(R=null,X())}function Rp(){if(q){let u=q.contours[q.contour],p=u?.anchors??[],h=p[p.length-1],g=p[0],v=q.hover,E=v!==null&&g!==void 0&&p.length>=2&&!u?.closed&&Gr(g,v)<=Xn;return{contours:q.contours,anchors:p.map((O,I)=>({key:Ee(q?.contour??0,I),at:O,selected:I===p.length-1})),handles:h?hi(q.contours,new Set([Ee(q.contour,p.length-1)])):[],pending:h&&v&&!q.dragging&&!u?.closed?{from:h,...h.out?{c1:h.out}:{},to:v}:null,closeAt:E?g:null}}if(!R)return null;let s=jr(R.id);if(!s)return null;let f=new Set(pi(s,R.picked));return{contours:s,anchors:s.flatMap((u,p)=>u.anchors.map((h,g)=>({key:Ee(p,g),at:h,selected:f.has(Ee(p,g))}))),handles:hi(s,f)}}function Gr(s,f){return Math.hypot(s.x-f.x,s.y-f.y)*k.getCamera().zoom}function Ip(s,f,u,p){if(!R)return!1;let h=R.id,g=jr(h);if(!g)return R=null,!1;s.preventDefault(),Ge(s.pointerId);let v=V.hitPath(f);if(v?.kind==="handle"){let O=$u(v.key),I=O?g[O.contour]?.anchors[O.index]:void 0;if(O&&I)return Ie({kind:"pathHandle",pointerId:s.pointerId,id:h,start:g,contour:O.contour,index:O.index,side:O.side,smooth:Ho(I),last:g}),!0}if(v?.kind==="anchor")return s.altKey?(R.picked=new Set([v.key]),fe(vt(h,Lu(g,v.key),!1),"Convert point"),!0):(s.shiftKey?R.picked.has(v.key)?R.picked.delete(v.key):R.picked.add(v.key):R.picked.has(v.key)||(R.picked=new Set([v.key])),Ie({kind:"points",pointerId:s.pointerId,id:h,origin:u,start:g,keys:new Set(R.picked),lead:v.key,moved:!1,last:g}),X(),!0);let E=os(g,u);if(E&&E.distance*k.getCamera().zoom<=Np){if(p>=2){let G=as(g,E.contour,E.segment,E.t);return R.picked=new Set([Ee(E.contour,E.segment+1)]),fe(vt(h,G,!1),"Add point"),!0}let O=g[E.contour],I=O.anchors[E.segment],j=O.anchors[(E.segment+1)%O.anchors.length];return Ie({kind:"segment",pointerId:s.pointerId,id:h,origin:u,start:g,contour:E.contour,segment:E.segment,t:E.t,straight:!I?.out&&!j?.in,last:g}),!0}return Ie({kind:"pointMarquee",pointerId:s.pointerId,origin:u,current:u,additive:s.shiftKey}),!0}function Fp(s,f,u,p){let h=ci(s.start,s.lead);if(!h||p===0)return{dx:f,dy:u};let g=h.x+f,v=h.y+u,E=p,O=p,I=f,j=u;return s.start.forEach((G,ae)=>G.anchors.forEach((Y,ge)=>{s.keys.has(Ee(ae,ge))||(Math.abs(Y.x-g)<E&&(E=Math.abs(Y.x-g),I=Y.x-h.x),Math.abs(Y.y-v)<O&&(O=Math.abs(Y.y-v),j=Y.y-h.y))})),{dx:I,dy:j}}function Bp(s,f){if(!L)return!1;let u=(p,h)=>{M&&La(vt(h,p,!1,re,M))};switch(L.kind){case"points":{let p=f;s.shiftKey&&(p=Mn(L.origin,f));let h={dx:p.x-L.origin.x,dy:p.y-L.origin.y};if(!L.moved&&Math.hypot(h.dx,h.dy)*k.getCamera().zoom<Ot)return!0;L.moved=!0;let{dx:g,dy:v}=s.shiftKey?h:Fp(L,h.dx,h.dy,qr(s));return L.last=zo(L.start,L.keys,g,v),u(L.last,L.id),!0}case"pathHandle":{let p=L.start[L.contour]?.anchors[L.index],h=s.shiftKey&&p?Mn(p,f):f;return L.last=Vo(L.start,L.contour,L.index,L.side,h,{smooth:L.smooth,breakSmooth:s.altKey}),u(L.last,L.id),!0}case"segment":return L.last=Ou(L.start,L.contour,L.segment,L.t,f.x-L.origin.x,f.y-L.origin.y,L.straight),u(L.last,L.id),!0;case"pointMarquee":return L.current=f,X(),!0;default:return!1}}function Hp(s){if(!L)return!1;switch(L.kind){case"points":case"pathHandle":case"segment":{let f=L.kind!=="points"||L.moved,u=L.kind==="points"?L.keys.size===1?"Move point":"Move points":L.kind==="pathHandle"?"Adjust curve":"Reshape";return me=f&&M?vt(L.id,L.last,!0,re,M):[],yt(u),!0}case"pointMarquee":{let f=Qt(L.origin,L.current),u=L.additive;if(L=null,b=ze,!R)return!0;let p=k.getCamera().zoom;if(f.w*p<Ot&&f.h*p<Ot){if(k.hitTest(s)===R.id)R.picked=new Set;else{Kr();let v=qn(s);ie(v===null?[]:[v])}return X(),!0}let h=jr(R.id)??[],g=mi(h).filter(v=>{let E=ci(h,v);return E!==void 0&&et(f,E.x,E.y)});return R.picked=new Set(u?[...R.picked,...g]:g),X(),!0}default:return!1}}function Vp(s){if(!R)return!1;let f=R.id,u=s.metaKey||s.ctrlKey;if(s.key==="Escape"||s.key==="Enter"&&!u)return s.preventDefault(),L?Oa():Kr(),!0;let p=jr(f);if(!p)return!1;let h=new Set(pi(p,R.picked));if(s.key==="Delete"||s.key==="Backspace"){if(s.preventDefault(),h.size===0)return!0;let O=Tu(p,h);return R.picked=new Set,O.length===0?(Kr(),fr(),!0):(fe(vt(f,O,!0),h.size===1?"Delete point":"Delete points"),!0)}let g=s.shiftKey?10:1,E={ArrowLeft:[-g,0],ArrowRight:[g,0],ArrowUp:[0,-g],ArrowDown:[0,g]}[s.key];return E&&!u?(s.preventDefault(),h.size>0&&fe(vt(f,zo(p,h,E[0],E[1]),!0),"Nudge points"),!0):u&&s.key.toLowerCase()==="a"?(s.preventDefault(),R.picked=new Set(mi(p)),X(),!0):u&&!s.shiftKey&&s.code==="KeyJ"?(s.preventDefault(),fe(vt(f,Du(p,h),!0),"Close path"),!0):!1}function Up(s,f){if(s.preventDefault(),Ge(s.pointerId),!q){q=zp(f)??{contours:[{closed:!1,anchors:[{x:f.x,y:f.y}]}],contour:0,target:null,hover:null,dragging:null};let v=q.contours[q.contour];q.dragging={pointerId:s.pointerId,index:v.anchors.length-1,origin:f},X();return}let u=q.contours[q.contour],p=u.anchors[0],h=u.anchors[u.anchors.length-1];if(p&&u.anchors.length>=2&&Gr(p,f)<=Xn){q.contours[q.contour]={...u,closed:!0},q.dragging={pointerId:s.pointerId,index:0,origin:p},X();return}let g=s.shiftKey&&h?Mn(h,f):f;q.contours[q.contour]={...u,anchors:[...u.anchors,{x:g.x,y:g.y}]},q.dragging={pointerId:s.pointerId,index:u.anchors.length,origin:g},X()}function zp(s){let f=n.length===1?n[0]:null;if(f===null||!Rt(f))return null;let u=jr(f);if(!u)return null;for(let p=0;p<u.length;p+=1){let h=u[p];if(h.closed||h.anchors.length<1)continue;let g=h.anchors[0],v=h.anchors[h.anchors.length-1],E=Gr(v,s)<=Xn,O=!E&&Gr(g,s)<=Xn;if(!E&&!O)continue;let I=[...u];return O&&(I[p]=Pu(h)),{contours:I,contour:p,target:f,hover:null,dragging:null}}return null}function qp(s,f){if(!q)return;let u=q.dragging;if(!u||u.pointerId!==s.pointerId){let O=q.contours[q.contour],I=O?.anchors[O.anchors.length-1];q.hover=s.shiftKey&&I?Mn(I,f):f,X();return}if(Gr(u.origin,f)<Ot)return;let p=q.contours[q.contour],h=p.anchors[u.index];if(!h)return;let g={x:2*h.x-f.x,y:2*h.y-f.y},v=s.altKey?h.in:g,E=[...p.anchors];E[u.index]={x:h.x,y:h.y,...v?{in:v}:{},out:f},q.contours[q.contour]={...p,anchors:E},X()}function jp(s){!q?.dragging||q.dragging.pointerId!==s.pointerId||(qa(s.pointerId),q.dragging=null,q.contours[q.contour]?.closed?Yn():X())}function Yn(){if(!q)return;let s=q;q=null;let f=s.contours[s.contour];if(!f||f.anchors.length<2){X();return}if(s.target!==null){fe(vt(s.target,s.contours,!0),"Extend path"),bt("select"),Ft(s.target);return}let u=Gt(s.contours),p=f.anchors[0];if(!u)return;let h=zn(p)??w??r.root.id,g=z(r.root,h)??r.root,v=Nt(h),E=ut(s.contours,I=>({x:I.x-u.x,y:I.y-u.y})),O=qt(r.root,"path");fe([{op:"insert",parent:h,index:le(g).length,node:ao({id:O,x:ee(u.x-v.x),y:ee(u.y-v.y),w:ee(u.w),h:ee(u.h),view:Wt({x:0,y:0,w:u.w,h:u.h}),d:ft(E),fill:"none",stroke:t.defaultStroke??"#1f2937",strokeWidth:2,cap:"round",join:"round"})}],"Draw path"),bt("select"),Ft(O)}function Da(s=Q()){let f=[],u=[];for(let p of s){let h=z(r.root,p),g=rt(r.root,p),v=it(p);if(!h||!g||!v||h.type!=="rect"&&h.type!=="ellipse")continue;let E=Math.max(0,v.w),O=Math.max(0,v.h),I=h.type==="rect"?ss(E,O,v.values.radius??0):is(E,O),j=ao({id:p,...h.name===void 0?{}:{name:h.name},x:h.x,y:h.y,w:h.w,h:h.h,view:Wt({x:0,y:0,w:E,h:O}),d:ft(I),...h.fill===void 0?{}:{fill:h.fill},...h.stroke===void 0?{}:{stroke:h.stroke},...h.strokeWidth===void 0?{}:{strokeWidth:h.strokeWidth},...h.opacity===void 0?{}:{opacity:h.opacity},...h.hidden?{hidden:!0}:{},...h.locked?{locked:!0}:{}}),G=g.children.findIndex(ae=>ae.id===p);f.push({op:"remove",id:p},{op:"insert",parent:g.id,index:G,node:j}),u.push(p)}u.length!==0&&(fe(f,u.length===1?"Convert to vector":`Convert ${u.length} to vector`),ie(u),u.length===1&&Ft(u[0]))}function Sd(){return Q().filter(s=>{let f=z(r.root,s)?.type;return f==="rect"||f==="ellipse"}).length}let Kp=450,_d=4,Wr={x:0,y:0,at:0,count:0};function Gp(s){let f=Date.now(),p=Math.abs(s.x-Wr.x)<=_d&&Math.abs(s.y-Wr.y)<=_d&&f-Wr.at<=Kp?Wr.count+1:1;return Wr={x:s.x,y:s.y,at:f,count:p},p}let Cd=s=>{if(s.button!==0||x)return;let f=k.pointerPoint(s),u=k.screenToDocument(f);U=u;let p=Gp(f);if(B){let O=Aa(u),I=k.itemOf(B.id),j=Ur(B.id,u);if(O&&I&&et(I,j.x,j.y)){s.preventDefault(),Ge(s.pointerId),je=!0,p>=3?B.selectLineAt(O):p===2?B.selectWordAt(O):B.pointTo(O,s.shiftKey),oe.focus({preventScroll:!0}),X();return}sr("blur")}if(e.focus({preventScroll:!0}),o==="select"&&(s.metaKey||s.ctrlKey)&&ap(u)){s.preventDefault();return}if(o==="pen"){Up(s,u);return}if(R&&o==="select"&&Ip(s,f,Ur(R.id,u),p))return;if(o!=="select"){s.preventDefault(),Ge(s.pointerId),Ie({kind:"create",pointerId:s.pointerId,origin:u,current:u}),X();return}let h=Q().length===1?Q()[0]:null;if(h!==null){let O=z(r.root,h),I=V.hitAdjuster(f),j=O&&I?Ko(O,I.id):void 0,G=j?Ce(h):void 0;if(j&&G&&I){s.preventDefault(),Ge(s.pointerId),Ie({kind:"adjust",pointerId:s.pointerId,id:h,adjuster:j,handleId:I.id,frame:G,from:it(h)?.values[j.prop]??0});return}let ae=O&&!ue(O)?V.hitHandle(f):null,Y=ae?gt(h):void 0,ge=Y?Dt(h):void 0;if(ae&&Y&&ge){s.preventDefault(),Ge(s.pointerId),Ie({kind:"resize",pointerId:s.pointerId,origin:u,id:h,handle:ae.handle,frame:Y,offset:{x:ge.x-Y.x,y:ge.y-Y.y},rotation:Pt(h)});return}}let g=Q().length>0?V.hitHandle(f):null;if(g&&Sp(u,g.handle,s.pointerId)){s.preventDefault();return}let v=V.hitPageLabel(f);if(v!==null){if(s.preventDefault(),w=null,s.shiftKey){ie(n.includes(v)?n.filter(O=>O!==v):[...n,v]);return}if(n.includes(v)||ie([v]),p===2){gp(v);return}Ed(u,s.pointerId,s.altKey);return}if(Q().length>0&&V.hitRotate(f)!==null&&kp(u,s.pointerId)){s.preventDefault();return}if(Q().length>1){let O=V.hitRing(f);if(O!==null&&$p(O,u,s.pointerId)){s.preventDefault();return}let I=V.hitSpacer(f);if(I!==null&&Cp(I,u,s.pointerId)){s.preventDefault();return}}let E=qn(u);if(E===null){s.preventDefault(),Ge(s.pointerId),w=null,s.shiftKey||ie([]),Ie({kind:"marquee",pointerId:s.pointerId,origin:u,current:u});return}w!==null&&!Oe(r.root,E).includes(w)&&(w=null),s.shiftKey?ie(n.includes(E)?n.filter(O=>O!==E):[...n,E]):n.includes(E)||ie([E]),Ed(u,s.pointerId,s.altKey)&&s.preventDefault()};function Ed(s,f,u){let p=r,h=[];if(u){let v=Gd({x:0,y:0});v&&(h=v.ops,r=ve(r,h).document,k.update(r),ie(v.ids))}let g=new Map;for(let v of Q())for(let E of er(v,r)){let O=gt(E);O&&g.set(E,O)}return g.size===0?(r=p,k.update(r),!1):(Ge(f),Ie({kind:"move",pointerId:f,origin:s,frames:g,bounds:Qe(Q().flatMap(v=>Ce(v)??[]))},h,p),!0)}let Ad=s=>{let f=k.pointerPoint(s);if(U=k.screenToDocument(f),je&&B){let p=Aa(U);p&&B.pointTo(p,!0);return}if(q&&o==="pen"){qp(s,U);return}if(!L){Jp(f);return}if(L.pointerId!==s.pointerId)return;let u=U;if(!Bp(s,R?Ur(R.id,u):u))switch(L.kind){case"move":{let p=u.x-L.origin.x,h=u.y-L.origin.y;if(L.bounds){let v={...L.bounds,x:L.bounds.x+p,y:L.bounds.y+h};b=yl(v,K,qr(s)),p+=b.dx,h+=b.dy}let g=[];for(let[v,E]of L.frames)g.push({nodeId:v,prop:"x",from:E.x,to:E.x+p}),g.push({nodeId:v,prop:"y",from:E.y,to:E.y+h});It(g);return}case"resize":{let{id:p,handle:h,frame:g,origin:v,offset:E,rotation:O}=L,I=u.x-v.x,j=u.y-v.y;if(O!==0){b=ze;let Y=Cu(g,h,I,j,O);It(Bo(g,Y).map(ge=>({nodeId:p,prop:ge,from:g[ge],to:Y[ge]})));return}let G=pt(g,h,I,j);b=Qo({...G,x:G.x+E.x,y:G.y+E.y},h,K,qr(s)),I+=b.dx,j+=b.dy;let ae=pt(g,h,I,j);It(Bo(g,ae).map(Y=>({nodeId:p,prop:Y,from:g[Y],to:ae[Y]})));return}case"scale":{let{handle:p,bounds:h,origin:g,frames:v,offsets:E}=L,O=u.x-g.x,I=u.y-g.y,j=pt(h,p,O,I);b=Qo(j,p,K,qr(s)),O+=b.dx,I+=b.dy,It(vd({bounds:h,frames:v,offsets:E},pt(h,p,O,I)));return}case"space":Ep(L,u);return;case"reorder":Lp(L,u,s.metaKey||s.ctrlKey);return;case"rotate":{let{centre:p,origin:h,targets:g}=L,v=g[0],E=Eu(p,h,u,v?.rotation??0,s.shiftKey?zg:void 0);S=hn((v?.rotation??0)+E);let O=[],I=g.length===1;for(let j of Au(g,p,E)){let G=g.find(ae=>ae.id===j.id);G&&(O.push({nodeId:j.id,prop:"rotation",from:G.rotation,to:j.rotation}),!I&&O.push({nodeId:j.id,prop:"x",from:G.frame.x-G.offset.x,to:ee(j.frame.x-G.offset.x)},{nodeId:j.id,prop:"y",from:G.frame.y-G.offset.y,to:ee(j.frame.y-G.offset.y)}))}It(O);return}case"adjust":{let p=L.adjuster.valueAt(L.frame,L.handleId,u);ne=p,It([{nodeId:L.id,prop:L.adjuster.prop,from:L.from,to:p}]);return}case"create":{b=vl(u,K,qr(s));let p={x:u.x+b.dx,y:u.y+b.dy};L.current=s.shiftKey&&o!=="text"?Kg(L.origin,p):p,X();return}case"marquee":{L.current=u,X();return}}},Jn=s=>{if(je){je=!1,qa(s.pointerId),oe.focus({preventScroll:!0});return}if(q){jp(s);return}if(!L||L.pointerId!==s.pointerId)return;qa(s.pointerId);let f=k.screenToDocument(k.pointerPoint(s));if(!Hp(R?Ur(R.id,f):f))switch(L.kind){case"create":{let u=Qt(L.origin,L.current),p=o==="text"?"text":o==="frame"?"frame":o==="ellipse"?"ellipse":"rect";L=null,b=ze,X();let h=u.w<Ot||u.h<Ot;if(h&&p!=="text")return;let g=h?{x:u.x,y:u.y,w:Dc.w,h:Dc.h}:u,v=zn({x:g.x,y:g.y})??w??r.root.id,E=z(r.root,v)??r.root,O=Nt(v),I={x:Math.round(g.x-O.x),y:Math.round(g.y-O.y),w:Math.round(g.w),h:Math.round(g.h)},j=qt(r.root,p);fe([{op:"insert",parent:v,index:le(E).length,node:p==="text"?Ja({...I,id:j,content:""}):p==="frame"?Ga({...I,id:j,background:Ug,children:[]}):p==="ellipse"?Ka({...I,id:j,fill:t.defaultFill??"#3b82f6"}):Ya({...I,id:j,fill:t.defaultFill??"#3b82f6"})}],jg[p]),ie([j]),bt("select"),p==="text"&&zr(j);return}case"marquee":{let u=Qt(L.origin,L.current),p=s.shiftKey;if(L=null,b=ze,u.w>=Ot||u.h>=Ot){let h=xm(u);ie(p?[...new Set([...n,...h])]:h)}X();return}case"move":{let u=Pp();u.length>0&&(me=[...me,...u]),yt(xe.length>0?"Duplicate":"Move");return}case"resize":yt("Resize");return;case"scale":yt(n.length===1?"Resize group":`Resize ${n.length} elements`);return;case"space":yt("Spacing");return;case"reorder":yt(L.swap?"Swap":"Reorder");return;case"adjust":yt("Corner radius");return;case"rotate":yt("Rotate");return}},Md=s=>{if(va(s.target))return;if(B){if(!((s.metaKey||s.ctrlKey)&&s.key.toLowerCase()==="z"))return;s.preventDefault(),B.breakBurst(),s.shiftKey?to():Yr();return}if(q&&(s.key==="Enter"||s.key==="Escape")){s.preventDefault(),Yn();return}if(Vp(s))return;if((s.metaKey||s.ctrlKey)&&s.shiftKey&&s.code==="KeyO"){if(Sd()===0)return;s.preventDefault(),Da();return}if(s.key==="Enter"&&!Nc(s)&&n.length===1){let p=n[0];if(z(r.root,p)?.type==="vector"&&Ft(p)){s.preventDefault();return}}if(s.key==="Enter"&&!Nc(s)&&n.length===1){let p=n[0];if(z(r.root,p)?.type==="text"){s.preventDefault(),zr(p);return}}if(s.code==="Space"&&!x){x=!0,Le(Ae("grab"));return}let f=s.metaKey||s.ctrlKey;if(f&&s.key.toLowerCase()==="z"){s.preventDefault(),s.shiftKey?to():Yr();return}if(f&&s.shiftKey&&!s.altKey&&s.code==="KeyL"){if(!P.lock||n.length===0)return;s.preventDefault(),dr(n,"locked");return}if(f&&s.shiftKey&&!s.altKey&&s.code==="KeyH"){if(!P.hide||n.length===0)return;s.preventDefault(),dr(n,"hidden");return}if(f&&s.key.toLowerCase()==="g"){s.preventDefault(),s.shiftKey?Ha():Ba();return}if(f&&s.key.toLowerCase()==="a"){s.preventDefault(),Ua();return}if(f&&!s.altKey&&s.key.toLowerCase()==="d"){s.preventDefault(),Ia();return}if(s.altKey){let p=Gg[s.code];if(p&&!f){s.preventDefault(),zd(p);return}let h=Wg[s.code];if(h&&s.ctrlKey){s.preventDefault(),jd(h);return}}if(s.key==="]"||s.key==="["){if(n.length===0)return;s.preventDefault();let p=s.key==="]";Va(f?p?"front":"back":p?"forward":"backward");return}if(s.key==="Escape"){L?Oa():w!==null?Qd():ie([]);return}if(s.key==="Delete"||s.key==="Backspace"){if(n.length===0)return;s.preventDefault(),fr();return}let u=f||s.altKey?void 0:Yl[s.key.toLowerCase()];u&&bt(u)};function $d(){if(!B)return null;let s=z(r.root,B.id);if(s?.type!=="text")return null;let{anchor:f,head:u}=B.getSelection();return f===u?null:or(Vl(s.content,f,u))}let Ld=s=>{if(va(s.target))return;let f=$d()??Xr();f!==null&&(s.preventDefault(),s.clipboardData?.setData("text/plain",f))},Td=s=>{if(va(s.target))return;let f=$d();if(f!==null&&B){s.preventDefault(),s.clipboardData?.setData("text/plain",f);let{anchor:p,head:h}=B.getSelection();B.breakBurst(),B.setSelection(p,h),B.handleInput({inputType:"deleteByCut",data:null});return}let u=Xr();u!==null&&(s.preventDefault(),s.clipboardData?.setData("text/plain",u),fr())},Od=s=>{if(va(s.target))return;s.preventDefault();let f=xi(s.clipboardData);if(f&&!B){let p=sm();p?Ra(p,f):Xd(f,U??void 0);return}let u=s.clipboardData?.getData("text/plain")||void 0;if(B&&u!==void 0){B.handleInput({inputType:"insertFromPaste",data:u});return}Na(u)},Dd=s=>{s.code==="Space"&&(x=!1,Le(Ae(Ea())))},Pd=s=>{if(!pe)return;s.preventDefault(),L&&Oa();let f=k.pointerPoint(s),u=k.screenToDocument(f),p=qn(u),h=Wp(u),g=k.hitTest(u),v=g!==null&&n.some(O=>Oe(r.root,g).includes(O));p===null?v||ie([]):n.includes(p)||ie([p]);let E=(t.menuExtras?.(n)??[]).map(O=>"separator"in O?O:{...O,id:`${Zl}${O.id}`});pe.open(f,_l(Xp(h),E))};function Wp(s){let{locked:f}=Ne(),u=[];for(let p of[...k.getScene().items].reverse()){if(!f.has(p.id)||!k.hitTest(s,g=>g===p.id))continue;let h=Zr(r.root,p.id,"locked");h!==void 0&&!u.includes(h)&&u.push(h)}return u}function Xp(s=[]){let f=n.length===1?z(r.root,n[0]):void 0,u=[];if(f){let p=f;for(let h of tt(f)){let g=p[h];g===void 0||!ce(g)||Eo(g).kind!=="literal"&&u.push({prop:h,source:`=${g.expr}`})}}return{count:n.length,hasGroup:n.some(p=>{let h=z(r.root,p);return h!==void 0&&ke(h)}),canPaste:Ql!==null,isText:n.length===1&&z(r.root,n[0])?.type==="text",isVector:Q().length===1&&z(r.root,Q()[0])?.type==="vector",convertible:Sd(),bound:u,lock:P.lock?n.every(p=>Ne().locked.has(p))?"unlock":"lock":null,hide:P.hide?n.every(p=>Ne().hidden.has(p))?"show":"hide":null,locksHere:s,anyLocked:za("locked").length>0,hiddenCount:za("hidden").length}}function Yp(s){if(e.focus({preventScroll:!0}),s.startsWith(Zl)){t.onMenuCommand?.(s.slice(Zl.length),[...n]);return}if(s.startsWith("unlock:")){lr([s.slice(7)],"locked",!1);return}if(s.startsWith("detach:")){let f=s.slice(7),u=n[0];u!==void 0&&rf(u,f);return}switch(s){case"copy":Xr();return;case"cut":Wd();return;case"editText":{let f=n[0];f!==void 0&&zr(f);return}case"editPoints":{let f=n[0];f!==void 0&&Ft(f);return}case"toVector":return Da();case"duplicate":return Ia();case"paste":return Na();case"group":return Ba();case"ungroup":return Ha();case"front":case"forward":case"backward":case"back":return Va(s);case"delete":return fr();case"selectAll":return Ua();case"toggleLock":return dr(n,"locked");case"toggleHidden":return dr(n,"hidden");case"unlockAll":return eo("locked");case"showAll":return eo("hidden");case"fit":return k.fitToContent();case"zoom100":return k.setCamera({...k.getCamera(),zoom:1})}}let Nd=s=>{if(o!=="select"||x||R)return;let f=k.screenToDocument(k.pointerPoint(s)),u=k.hitTest(f,E=>!Ne().locked.has(E));if(u===null)return;let p=Qn().find(E=>E.id===u);if(p){s.preventDefault(),im(p);return}let h=z(r.root,u);if(h?.type==="text"){s.preventDefault(),zr(u,f);return}if(h?.type==="vector"){s.preventDefault(),Ft(u);return}let g=Oe(r.root,u),v=w===null?1:g.indexOf(w)+1;for(let E=Math.max(v,1);E<g.length;E+=1){let O=g[E];if(O===void 0)break;let I=z(r.root,O);if(!(!I||!ke(I))){s.preventDefault(),Zd(O),ie([g[E+1]??O]);return}}},Rd=s=>Array.from(s.dataTransfer?.types??[]).includes("Files"),Id=s=>{if(!Rd(s)||!t.importImage)return;s.preventDefault(),s.dataTransfer&&(s.dataTransfer.dropEffect="copy");let f=k.screenToDocument(k.pointerPoint(s)),u=Yd(f)?.id??null;u!==c&&(c=u,X())},Fd=s=>{s.relatedTarget instanceof Node&&e.contains(s.relatedTarget)||c!==null&&(c=null,X())},Bd=s=>{if(!Rd(s)||!t.importImage)return;s.preventDefault();let f=k.screenToDocument(k.pointerPoint(s)),u=Yd(f);c=null,X();let p=Array.from(s.dataTransfer?.files??[]).find(h=>h.type.startsWith("image/"));p&&(u?Ra(u,p):Xd(p,f))},Hd=()=>{U=null,d=null,!L&&(a===null&&T===null&&H===null||(a=null,T=null,H=null,X()))};function Vd(){let s=Q().length===1?Q()[0]:void 0,f=s===void 0?void 0:z(r.root,s);return s!==void 0&&f&&!ue(f)?Pt(s):0}function Jp(s){if(x){Le(Ae("grab"));return}if(R){Ke(null),Le(Ae("arrow"));return}if(o!=="select"){Ke(null),Pa(null),Zn(null),Le(Ae(o==="text"?"text":"crosshair"));return}let f=Q().length===1?Q()[0]:null;if(f!==null){let g=V.hitAdjuster(s);if(g){let v=z(r.root,f),E=v?Ko(v,g.id):void 0;Ke(null),Pa(E?{id:g.id,prop:E.prop}:null),Le(Ae("radius",{badge:E?Ca(f,[E.prop]):"none"}));return}Pa(null)}if(Q().length>0){let g=V.hitHandle(s);if(g){Ke(null);let O=Fo(g.handle);Le(Ae("resize",{angle:li(g.handle)+Vd(),badge:cd(Vr(),O)}));return}let v=V.hitPageLabel(s);if(v!==null){Ke(v),Le(Ae("arrow"));return}let E=V.hitRotate(s);if(E!==null){Ke(null),Le(Ae("rotate",{angle:qg[E]+Vd()}));return}}let u=V.hitPageLabel(s);if(u!==null){d=null,Ke(u),Le(Ae("arrow"));return}if(Q().length>1){if(V.hitRing(s)!==null){Ke(null),Zn(null),Le(Ae("grab"));return}let v=V.hitSpacer(s),E=v===null?null:la(v);if(v!==null&&E){Ke(null),Zn(v),Le(Ae("resize",{angle:E.axis==="x"?0:90,badge:cd(Vr(),[E.axis])}));return}Zn(null)}let p=k.screenToDocument(s),h=qn(p);d=Zp(p,h),Ke(h),X(),Le(Ae("arrow",{badge:h===null?"none":Ca(h,["x","y"])}))}function Zp(s,f){let u=k.hitTest(s);if(u===null||!Ne().locked.has(u))return null;let p=Zr(r.root,u,"locked");return p===void 0?null:f===null||Oe(r.root,p).includes(f)?p:null}function Ke(s){a!==s&&(a=s,X())}function Pa(s){T?.id!==s?.id&&(T=s,X())}function Zn(s){H!==s&&(H=s,X())}function Le(s){e.style.cursor!==s&&(e.style.cursor=s)}function bt(s){o!==s&&(o=s,q&&s!=="pen"&&Yn(),s!=="select"&&Kr(),W?.setTool(o),s!=="select"&&Ke(null),Le(Ae(Ea())),Pe("tool",o))}function Qp(s){if(s.length===0)return null;if(s.length>1)return Qe(s.map(p=>p.frame))??null;let f=s[0],u=rt(r.root,f.id);return u?tr(u.id,r,k.getResolution())??null:null}function Ud(s,f,u){let p=Rr(r,Ta(jn(n),s,f));p.length!==0&&fe([...p,...Ir(r,p,_r(r),$e(r))],u)}function zd(s){let f=Dn(r,n,k.getResolution()),u=Qp(f);u&&Ud(jo(s),gi(f,u,s),Xg[s])}function qd(s){let f=Dn(r,n,k.getResolution());if(f.length<3)return null;let u=Nl(f,s),p=Rl(u);return p===null?null:{gap:p,series:u}}function jd(s){let f=qd(s);f&&Ud(s,fa(f.series,f.gap),s==="x"?"Distribute horizontally":"Distribute vertically")}function em(){let s=On(r,n);if(s.length===0)return null;let f=k.getResolution(),u={};for(let p of s)se(p,h=>{let g=f.nodes.get(h.id)?.values;g&&(u[h.id]=g)});return{nodes:s,tokens:r.tokens,fonts:r.fonts,resolved:u}}function tm(s){return new Map(Object.entries(s.resolved))}function rm(s){let f=Object.entries(s.tokens).filter(([u])=>r.tokens[u]===void 0).map(([u,p])=>({op:"setToken",name:u,value:p}));for(let[u,p]of Object.entries(s.fonts))r.fonts[u]===void 0&&f.push({op:"setFont",name:u,family:p});return f}function Kd(s,f,u){let{nodes:p,remap:h}=fl(s,r);if(p.length===0)return null;let g=rm(s),v=g.length>0?ve(r,g).document:r;p.forEach((I,j)=>{let G=s.nodes[j];if(!G)return;let ae=f(G,j,v),Y={op:"insert",parent:ae.parent,index:ae.index,node:I};g.push(Y),v=ve(v,[Y]).document});let E=Jl(v,h,tm(s),u);E.length>0&&(v=ve(v,E).document);let O=nm(p);return{ops:[...g,...E,...Fr(r,v)],ids:[...h.values()].filter(I=>O.has(I))}}function nm(s){let f=new Set;for(let u of s)f.add(u.id);return f}function Gd(s){let f=em();return f?Kd(f,(u,p,h)=>{let g=rt(h.root,u.id)??h.root,v=le(g).findIndex(E=>E.id===u.id);return{parent:g.id,index:v===-1?le(g).length:v+1}},s):null}function Xr(){let s=ll(r,n,k.getResolution());return s!==null&&(Ql=s),s}function Wd(){let s=Xr();return s!==null&&fr(),s}function om(s){let f=[];for(let u of s.nodes){let p=s.resolved[u.id];if(!p)continue;let{x:h,y:g,w:v,h:E}=p;h===void 0||g===void 0||v===void 0||E===void 0||f.push({x:h,y:g,w:v,h:E})}return Qe(f)??null}function Na(s,f){let u=dl(s??Ql??"");if(!u)return;let p=f??U,h=om(u),g=p&&h?{x:p.x-(h.x+h.w/2),y:p.y-(h.y+h.h/2)}:{x:ya,y:ya},v=w??r.root.id,E=Kd(u,(O,I,j)=>({parent:v,index:le(z(j.root,v)??j.root).length}),g);E&&(fe(E.ops,E.ids.length===1?"Paste":`Paste ${E.ids.length} elements`),ie(E.ids))}async function Xd(s,f){let u=t.importImage;if(!u)return;let p=await qo(s,t.maxImageEdge??2560);if(!p)return;let h=await u(new File([p.bytes],s.name,{type:p.type}));if(!h)return;let g=(f?zn(f):void 0)??w??r.root.id,v=z(r.root,g)??r.root,E=Nt(g),O=k.getResolution().nodes.get(g),{w:I,h:j}=Nu(p.width,p.height,O?.w&&O.w>0?O.w:p.width,O?.h&&O.h>0?O.h:p.height),G=f??U,ae=Math.round((G?G.x-I/2:E.x)-E.x),Y=Math.round((G?G.y-j/2:E.y)-E.y),ge=lm(r,s.name),wt=qt(r.root,"image");fe([{op:"setAsset",name:ge,value:h},{op:"insert",parent:g,index:le(v).length,node:Xa({id:wt,x:ae,y:Y,w:I,h:j,src:ge,fit:"cover"})}],"Place image"),ie([wt])}function Qn(){return t.importImage?vc(r,Ne().hidden):[]}function am(){return Qn().flatMap(s=>{let f=Ce(s.id);return f?[{frame:f,label:s.label,target:s.id===c}]:[]})}function Yd(s){return Qn().filter(u=>{let p=Ce(u.id);return p!==void 0&&et(p,s.x,s.y)}).at(-1)??null}function sm(){return n.length!==1?null:Qn().find(s=>s.id===n[0])??null}async function Ra(s,f){let u=t.importImage;if(!u)return;let p=await qo(f,t.maxImageEdge??2560);if(!p)return;let h=await u(new File([p.bytes],f.name,{type:p.type}));!h||r.assets[s.src]!==void 0||(fe([{op:"setAsset",name:s.src,value:h}],"Add image"),ie([s.id]))}function im(s){let f=e.ownerDocument.createElement("input");f.type="file",f.accept="image/*",f.addEventListener("change",()=>{let u=f.files?.[0];u&&Ra(s,u)}),f.click()}function lm(s,f){let u=f.replace(/\.[^.]+$/,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"image";if(s.assets[u]===void 0)return u;for(let p=2;;p+=1){let h=`${u}-${p}`;if(s.assets[h]===void 0)return h}}function Ia(){let s=Gd({x:ya,y:ya});s&&(fe(s.ops,s.ids.length===1?"Duplicate":`Duplicate ${s.ids.length} elements`),ie(s.ids))}function Fa(s,f){if(s.length===0)return;let u=ve(r,s).document;fe([...s,...Fr(r,u)],f)}function Ba(){let s=cl(r,n);s&&(Fa(s.ops,"Group"),ie([s.groupId]))}function Ha(){let s=n.filter(h=>{let g=z(r.root,h);return g!==void 0&&ke(g)});if(s.length===0)return;let f=r,u=[],p=[];for(let h of s){let g=z(f.root,h);g&&p.push(...le(g).map(E=>E.id));let v=pl(f,h);v.length!==0&&(u.push(...v),f=ve(f,v).document)}w!==null&&s.includes(w)&&(w=null),Fa(u,s.length===1?"Ungroup":`Ungroup ${s.length} groups`),ie(p)}function Va(s){Fa(ml(r,n,s),Zg[s])}function dm(s,f,u){let p=z(r.root,f);if(!p||!ue(p))return;let h=new Set(Oe(r.root,f)),g=s.filter(G=>G!==r.root.id&&z(r.root,G)&&!h.has(G));if(g.length===0)return;let v=[],E=r;if(g.forEach((G,ae)=>{let Y={op:"move",id:G,parent:f,index:u+ae};v.push(Y),E=ve(E,[Y]).document}),g.every(G=>fm(r,E,G)))return;let O=new Set(g.flatMap(G=>wd(G,E))),I=[];for(let G of g){let ae=Jd(r,G),Y=Jd(E,G),ge={x:ae.x-Y.x,y:ae.y-Y.y};if(!(ge.x===0&&ge.y===0))for(let wt of er(G,E)){let Jr=gt(wt);Jr&&(I.push({op:"set",id:wt,prop:"x",value:ee(Jr.x+ge.x)}),I.push({op:"set",id:wt,prop:"y",value:ee(Jr.y+ge.y)}))}}let j=ve(E,I).document;fe([...v,...I,...Fr(r,j,O)],g.length===1?`Move ${g[0]}`:`Move ${g.length} layers`)}function fm(s,f,u){let p=rt(s.root,u),h=rt(f.root,u);return p?.id===h?.id&&p?.children.findIndex(g=>g.id===u)===h?.children.findIndex(g=>g.id===u)}function Jd(s,f){let u=Oe(s.root,f).slice(0,-1).reverse(),p=$e(s);for(let h of u){let g=z(s.root,h);if(!g||ke(g))continue;let v=p.nodes.get(h);return v?{x:v.absX,y:v.absY}:{x:0,y:0}}return{x:0,y:0}}function Zd(s){let f=z(r.root,s);!f||!ke(f)||(w=s,X())}function Qd(){if(w===null)return;let s=w;w=Oe(r.root,s).slice(0,-1).reverse().find(u=>{let p=z(r.root,u);return p!==void 0&&ke(p)})??null,ie([s])}function Ua(){let s=z(r.root,w??r.root.id)??r.root;ie(le(s).map(f=>f.id).filter(Rt))}let um={locked:["Lock","Unlock"],hidden:["Hide","Show"]};function ef(s){return s==="locked"?Ne().locked:Ne().hidden}function lr(s,f,u){let p=s.filter(v=>v!==r.root.id&&z(r.root,v)),h=u?p.filter(v=>!ef(f).has(v)):[...new Set(p.flatMap(v=>{let E=Zr(r.root,v,f);return E===void 0?[]:[E]}))];if(h.length===0)return;let g=um[f][u?0:1];fe(h.map(v=>({op:"set",id:v,prop:f,value:u?!0:void 0})),h.length===1?`${g} ${h[0]}`:`${g} ${h.length} layers`)}function dr(s,f){s.length!==0&&lr(s,f,!s.every(u=>ef(f).has(u)))}function za(s){let f=[];return se(r.root,u=>{u[s]===!0&&f.push(u.id)}),f}function eo(s){let f=za(s);if(f.length===0)return;let u=s==="locked"?"Unlock all":"Show all";fe(f.map(p=>({op:"set",id:p,prop:s,value:void 0})),u)}function cm(s){P={...Pc,...s},pe?.close()}function fr(){let s=n.filter(u=>u!==r.root.id).map(u=>({op:"remove",id:u}));if(s.length===0)return;let f=s.length;ie([]),fe(s,f===1?"Delete element":`Delete ${f} elements`)}function Yr(){Re=null;let s=C.undo();s&&pd(s.ops,`Undo ${s.entry.label}`)}function to(){Re=null;let s=C.redo();s&&pd(s.ops,`Redo ${s.entry.label}`)}function pm(s){if(!C.isTail(s))return!1;for(let f=s.length;f>0;f-=1)Yr();return!0}function tf(s,f,u,p){let h=z(r.root,s);if(!h)return;let g=h[f];ey(g,u)||fe([{op:"set",id:s,prop:f,value:u}],p??`Set ${f}`)}function mm(s,f){r.tokens[s]!==f&&fe([{op:"setToken",name:s,value:f}],`Set $${s}`)}function hm(s){s in r.tokens&&fe([{op:"setToken",name:s,value:void 0}],`Remove $${s}`)}function rf(s,f){let u=it(s)?.values[f];u!==void 0&&fe([{op:"set",id:s,prop:f,value:ee(u)}],`Detach ${f}`)}function xm(s){let f=z(r.root,w??r.root.id)??r.root,u=[];for(let p of le(f)){if(!Rt(p.id))continue;let h=Ce(p.id);h&&di(h,s)&&u.push(p.id)}return u}function Ge(s){typeof e.setPointerCapture=="function"&&e.setPointerCapture(s)}function qa(s){e.hasPointerCapture?.(s)&&e.releasePointerCapture(s)}let nf=s=>{B&&(gd(),B.handleKey(s)&&(s.preventDefault(),s.stopPropagation()))},of=s=>{B&&(s.preventDefault(),gd(),B.handleInput(s))},af=()=>B?.handleCompositionStart(),sf=s=>B?.handleCompositionUpdate(s.data??""),lf=s=>B?.handleCompositionEnd(s.data??""),df=s=>{if(!e.ownerDocument.hasFocus())return;let f=s.relatedTarget;f instanceof Element&&f.closest("[data-vd-keeps-text]")||sr("blur")};return oe.addEventListener("keydown",nf),oe.addEventListener("beforeinput",of),oe.addEventListener("compositionstart",af),oe.addEventListener("compositionupdate",sf),oe.addEventListener("compositionend",lf),oe.addEventListener("blur",df),e.addEventListener("pointerdown",Cd),e.addEventListener("pointermove",Ad),e.addEventListener("pointerup",Jn),e.addEventListener("pointercancel",Jn),e.addEventListener("pointerup",Un),e.addEventListener("pointercancel",Un),e.addEventListener("pointerleave",Hd),e.addEventListener("dblclick",Nd),e.addEventListener("contextmenu",Pd),e.addEventListener("keydown",Md),e.addEventListener("keyup",Dd),e.addEventListener("copy",Ld),e.addEventListener("cut",Td),e.addEventListener("paste",Od),e.addEventListener("dragover",Id),e.addEventListener("dragleave",Fd),e.addEventListener("drop",Bd),y=!0,W?.setTool(o),W?.setHistory(!1,!1),W?.setZoom(k.getCamera().zoom),Le(Ae(Ea())),t.autoFit&&!t.camera&&ka(()=>k.fitToContent()),t.history&&(C.restore(t.history),W?.setHistory(C.canUndo,C.canRedo)),t.selection&&t.selection.length>0&&ie(t.selection),X(),{element:e,viewer:k,getDocument:()=>r,update(s){r=s,k.update(r),ie(n),X(),Pe("problems",k.getScene().problems)},applyOps:(s,f)=>fe(s,f??"Apply changes"),setDocument:(s,f)=>fe(fs(r,ai(s,r.root.id)),f??"Replace document"),getSelection:()=>n,setSelection:ie,selectAll:Ua,deleteSelection:fr,lock:s=>lr(s??n,"locked",!0),unlock:s=>lr(s??n,"locked",!1),toggleLock:s=>dr(s??n,"locked"),unlockAll:()=>eo("locked"),hide:s=>lr(s??n,"hidden",!0),show:s=>lr(s??n,"hidden",!1),toggleHidden:s=>dr(s??n,"hidden"),showAll:()=>eo("hidden"),isLocked:s=>Ne().locked.has(s),isHidden:s=>Ne().hidden.has(s),setFeatures:cm,getFeatures:()=>P,moveLayers:dm,copy:Xr,cut:Wd,paste:Na,duplicate:Ia,group:Ba,ungroup:Ha,reorder:Va,scaleSelection:_p,getSpacing:Mp,setSpacing:Ap,align:zd,distribute:jd,canDistribute:s=>qd(s)!==null,editText:zr,endTextEditing:()=>sr("done"),getEditingText:()=>B?.id??null,formatText:s=>B?.format(s),getTextFormat:()=>B?.activeMark()??{},getTextSelectionRects:hd,getTextRange:()=>{if(!B)return null;let{anchor:s,head:f}=B.getSelection();return{from:Math.min(s,f),to:Math.max(s,f)}},getEnteredGroup:()=>w,enterGroup:Zd,exitGroup:Qd,getTool:()=>o,editPoints:Ft,stopEditingPoints:Kr,getPointEditing:()=>R?.id??null,convertToVector:s=>Da(s),setTool:bt,beginEdit:fp,endEdit:up,undo:Yr,redo:to,canUndo:()=>C.canUndo,canRedo:()=>C.canRedo,getHistory:()=>C.snapshot(),setProperty:tf,fontFamilies:()=>{let s=new Map;for(let f of t.fonts?.faces()??[]){let u=s.get(f.family)??{weights:new Set,italic:!1};u.weights.add(f.weight),f.style==="italic"?u.italic=!0:(u.css===void 0||f.weight===400)&&(u.css=f.id),s.set(f.family,u)}return[...s.entries()].sort(([f],[u])=>f.localeCompare(u)).map(([f,u])=>({family:f,weights:[...u.weights].sort((p,h)=>p-h),italic:u.italic,...u.css===void 0?{}:{css:u.css}}))},assetUrl:s=>{let f=r.assets[s];return f?t.resolveAsset?.(f,s):void 0},setToken:mm,removeToken:hm,bindingsOf:dp,unbind:rf,getResolution:()=>k.getResolution(),getCamera:()=>k.getCamera(),getProblems:()=>k.getScene().problems,on:op,reveal:_a,setPresence(s,f){l={ids:[...s],label:f??null},X()},setHighlight(s){s.length===0&&m.length===0||(m=[...s],X())},isHistoryTail:s=>C.isTail(s),undoTail:pm,historyTop:()=>C.top,destroy(){Sa(),e.removeEventListener("pointerup",Un),e.removeEventListener("pointercancel",Un),e.removeEventListener("pointerdown",Cd),e.removeEventListener("pointermove",Ad),e.removeEventListener("pointerup",Jn),e.removeEventListener("pointercancel",Jn),e.removeEventListener("pointerleave",Hd),oe.removeEventListener("keydown",nf),oe.removeEventListener("beforeinput",of),oe.removeEventListener("compositionstart",af),oe.removeEventListener("compositionupdate",sf),oe.removeEventListener("compositionend",lf),oe.removeEventListener("blur",df),oe.remove(),ir&&clearTimeout(ir),e.removeEventListener("dblclick",Nd),e.removeEventListener("contextmenu",Pd),e.removeEventListener("copy",Ld),e.removeEventListener("cut",Td),e.removeEventListener("paste",Od),e.removeEventListener("dragover",Id),e.removeEventListener("dragleave",Fd),e.removeEventListener("drop",Bd),e.removeEventListener("keydown",Md),e.removeEventListener("keyup",Dd),pe?.destroy(),W?.destroy(),V.destroy(),k.destroy(),D.remove(),A.clear(),e.style.cursor="",e.classList.remove("vd-editor")}}}function ey(e,t){return e===t?!0:ce(e)&&ce(t)?e.expr===t.expr:!1}function Nc(e){return e.metaKey||e.ctrlKey||e.altKey}function va(e){if(!(e instanceof HTMLElement)||e.classList.contains("vd-editor__input"))return!1;let t=e.tagName;return t==="INPUT"||t==="TEXTAREA"||e.isContentEditable}var RS=new Set(Tt);function od(e){return e.map(t=>({value:t,label:`${t.charAt(0).toUpperCase()}${t.slice(1)}`}))}var ny=[{value:"nonzero",label:"Non-zero"},{value:"evenodd",label:"Even-odd"}].filter(e=>Ht.includes(e.value)),oy=od(Vt),ay=od(Ct),sy=od(Ut),iy=[{value:"left",label:"Left",icon:Ue("text-left")},{value:"center",label:"Centre",icon:Ue("text-center")},{value:"right",label:"Right",icon:Ue("text-right")},{value:"justify",label:"Justify",icon:Ue("text-justify")}].filter(e=>St.includes(e.value)),ly=[{value:"top",label:"Top",icon:Ue("text-top")},{value:"middle",label:"Middle",icon:Ue("text-middle")},{value:"bottom",label:"Bottom",icon:Ue("text-bottom")}].filter(e=>_t.includes(e.value)),Bc={prop:"x",label:"X",kind:"number",prefix:"X"},Hc={prop:"y",label:"Y",kind:"number",prefix:"Y"},rd={prop:"w",label:"W",kind:"number",prefix:"W"},nd={prop:"h",label:"H",kind:"number",prefix:"H"},dy={prop:"rotation",label:"Rotation",kind:"number",icon:"rotate",fallback:"0"},fy={prop:"opacity",label:"Opacity",kind:"number",icon:"opacity",percent:!0,fallback:"100%"},Ic={prop:"radius",label:"Radius",kind:"number",icon:"radius",span:"wide",fallback:"0"},Hn={heading:"Position",props:[Bc,Hc,rd,nd,dy,fy]},ba={prop:"fill",label:"Fill",kind:"colour"},Vc={prop:"stroke",label:"Stroke",kind:"colour",span:"half"},Uc={prop:"strokeWidth",label:"Stroke width",kind:"number",prefix:"Width",fallback:"1"},zc={present:"stroke",empty:"No stroke",add:{stroke:"#000000",strokeWidth:1},clear:["stroke","strokeWidth","cap","join"]},Fc={heading:"Stroke",props:[Vc,Uc],optional:zc},IS={frame:[{heading:"Frame",props:[Bc,Hc,rd,nd,{prop:"clip",label:"Clip content",kind:"toggle"}]},{heading:"Fill",props:[{prop:"background",label:"Fill",kind:"colour"}]}],canvas:[{heading:"Canvas",props:[rd,nd,{prop:"background",label:"Fill",kind:"colour"}]}],text:[Hn,{heading:"Text",props:[{prop:"font",label:"Font",kind:"font",fallback:"Default"},{prop:"weight",label:"Style",kind:"style",span:"half"},{prop:"size",label:"Size",kind:"number",icon:"font-size",fallback:"16"},{prop:"lineHeight",label:"Line height",kind:"number",icon:"line-height",fallback:"Auto"},{prop:"letterSpacing",label:"Letter spacing",kind:"number",icon:"letter-spacing",fallback:"0"},{prop:"align",label:"Align",kind:"segmented",options:iy,span:"half"},{prop:"valign",label:"Vertical",kind:"segmented",options:ly,span:"half"}]},{heading:"Fill",props:[ba]},{heading:"Link",props:[{prop:"content",label:"Link",kind:"link",icon:"link"}]}],rect:[{heading:"Position",props:[...Hn.props,Ic]},{heading:"Fill",props:[ba]},Fc],ellipse:[Hn,{heading:"Fill",props:[ba]},Fc],image:[{heading:"Position",props:[...Hn.props,Ic]},{heading:"Image",props:[{prop:"fit",label:"Fit",kind:"select",options:ay,prefix:"Fit"}]}],vector:[Hn,{heading:"Fill",props:[{...ba,span:"half"},{prop:"rule",label:"Fill rule",kind:"select",options:ny,prefix:"Rule",span:"half"}]},{heading:"Stroke",props:[Vc,Uc,{prop:"cap",label:"Cap",kind:"select",options:oy,prefix:"Cap",span:"half"},{prop:"join",label:"Join",kind:"select",options:sy,prefix:"Join",span:"half"}],optional:zc}]};var FS=Bt.map(e=>({value:e,label:e.split("-").map((t,r)=>r===0?t.charAt(0).toUpperCase()+t.slice(1):t).join(" ")}));function qc(e){let t=e,r=new Map,n=typeof URL.createObjectURL=="function"&&typeof URL.revokeObjectURL=="function";return{resolve(o){let a=r.get(o.hash);if(a!==void 0)return a;let i=t.get(o.hash);if(i===void 0)return;if(!n)return ks(o.type,i);let d;try{d=_s(i)}catch{return}let l=URL.createObjectURL(new Blob([d],{type:o.type}));return r.set(o.hash,l),l},replace(o){t=o;for(let[a,i]of r)o.has(a)||(URL.revokeObjectURL(i),r.delete(a))},destroy(){for(let o of r.values())URL.revokeObjectURL(o);r.clear(),t=new Map}}}var ad="0.1.0",jc="https://cdn.jsdelivr.net/npm/@getv.design/embed@0.1.0/fonts/";var uy=Symbol.for(`vdesign.embed.documents@${ad}`),Kc=globalThis[uy]??=new WeakMap,cy=/^Line (\d+): /;function ld(e){let t=cy.exec(e.message);return{...t?{line:Number(t[1])}:{},code:e.code,message:e.message,severity:e.severity}}function sd(e){if(typeof e!="string")return id(vo("").document,new Map,[{code:"not-text",message:`parse() takes .vd text, not ${e===null?"null":typeof e}.`,severity:"error"}]);let{head:t,blocks:r}=vs(e),n=vo(t);return id(n.document,r,n.problems.map(ld))}function id(e,t,r){let n=Object.freeze({});return Kc.set(n,{document:e,blocks:t,problems:r}),{document:n,problems:r}}function Gc(e,t,r){return id(e,t,[...r]).document}function wa(e){let t=Kc.get(e);if(!t)throw new TypeError("Not a vDesign document: pass .vd text or what parse() returned.");return t}async function Wc(e){if(typeof e=="string")return wa(sd(e).document);if(e instanceof URL){let t=await fetch(e);if(!t.ok)throw new Error(`Could not fetch ${e.href}: ${t.status}`);return wa(sd(await t.text()).document)}return py(e)?wa(sd(await e.text()).document):wa(e)}function py(e){let t=e;return typeof t.text=="function"&&typeof t.size=="number"}function Br(e){return e.root.children.filter(t=>t.type==="frame"&&t.hidden!==!0)}function Xc(e,t){let r=Br(e),n=typeof t=="number"?r[t]:r.find(o=>o.id===t);if(!n){let o=r.map(a=>a.id).join(", ")||"none";throw new RangeError(`No page ${JSON.stringify(t)} in this document; its pages: ${o}.`)}return n}var dd=["page","content","none"],Yc=24;function Vn(e){let t=e.getBoundingClientRect();return{width:t.width,height:t.height}}function Jc(e,t){let r=t===void 0?void 0:e.itemOf(t);if(!(!r||r.w<=0||r.h<=0))return{x:r.x,y:r.y,width:r.w,height:r.h}}function Zc(e,t,r,n){if(r==="none")return;let o=r==="page"?Jc(e,n):void 0;if(!o){e.fitToContent(Yc);return}let a=Vn(t);e.setCamera(Er(o,{width:a.width||o.width,height:a.height||o.height},Yc))}function Qc(e,t,r){let n=e.getCamera(),o=Vn(t),a={x:(o.width/2-n.x)/n.zoom,y:(o.height/2-n.y)/n.zoom},i;for(let d of Br(e.getDocument())){let l=Jc(e,d.id);if(!l)continue;let c=Math.max(l.x-a.x,0,a.x-(l.x+l.width)),m=Math.max(l.y-a.y,0,a.y-(l.y+l.height)),x=Math.hypot(c,m);(!i||x<i.distance)&&(i={id:d.id,distance:x})}return i?.id??r}function ep(e,t,r){let n=e===void 0?t:String(e);if(n===void 0)return;let o;try{o=new URL(n,r??globalThis.location?.href)}catch{throw new TypeError(`fontBase must be a URL, or a path on this page; got ${n}.`)}return o.pathname.endsWith("/")||(o.pathname+="/"),o}var fd=Symbol.for("vdesign.embed.handover");function tp(e){return e[fd]}var rp=["exact","browser"],np=["change"],my=250;async function J_(e,t,r={}){let n=r.fit??"page";if(!dd.includes(n))throw new TypeError(`edit: fit must be one of ${dd.join(", ")}; got ${String(n)}.`);let o=r.fonts??"exact";if(!rp.includes(o))throw new TypeError(`edit: fonts must be one of ${rp.join(", ")}; got ${String(o)}.`);let a=o==="exact"?ep(r.fontBase,jc,e.ownerDocument.baseURI):void 0,i=tp(r),d=await Wc(t),l=i?.page!==void 0&&Br(d.document).some(b=>b.id===i.page)?i.page:r.page===void 0?Br(d.document)[0]?.id:Xc(d.document,r.page).id,c=i?.exact&&a?await hy(a,d.document):void 0,m=e.ownerDocument,x=m.defaultView,y=new Map(d.blocks),w=qc(y),P=m.createElement("div");P.className="vd-embed vd-embed--edit",P.style.position="relative",P.style.width="100%",P.style.height="100%",e.appendChild(P);let _=b=>{r.onLink?r.onLink(b):x?.open(b,"_blank","noopener,noreferrer")},C;try{C=td(P,{document:d.document,chrome:r.toolbar??!0,interactive:r.interactive??!0,wheel:"modifier",resolveAsset:b=>w.resolve(b),importImage:we,onOpenLink:_,...r.surface?{surface:r.surface}:{},...i?{camera:i.camera}:{},...c?{fonts:c.library}:{}})}catch(b){throw P.remove(),w.destroy(),b}let F=new Set,N=!1,J=!1,A=0,D=i===void 0,k,V,W,pe;function re(b){return W?.of!==b&&(W={of:b,text:bs(ys(b),y)}),W.text}async function we(b){if(N||!b.type.startsWith("image/"))return null;let U=new Uint8Array(await b.arrayBuffer()),B=await ws(U);return N?null:(y.has(B)||y.set(B,Ss(U)),{type:b.type,hash:B,bytes:U.length})}function xe(){A+=1;try{Zc(C.viewer,P,n,l)}finally{A-=1}}let L=C.on("navigate",()=>{A===0&&(D=!1)}),me=C.on("change",({document:b})=>{let U={text:()=>re(b)};for(let B of[...F])B(U);c&&T()}),ne=Vn(P),S=x&&"ResizeObserver"in x?new x.ResizeObserver(()=>{let b=Vn(P);b.width===ne.width&&b.height===ne.height||(ne=b,D&&xe())}):void 0;S?.observe(P),i||xe(),!c&&o==="exact"&&M();function $(){return V??=(async()=>{if(a)try{let{exactFontsAt:b}=await import("./chunks/fonts.js");return b(a)}catch{return}})(),V}async function M(){let b=await $();if(!(N||!b)){for(;;){let U=C.getDocument(),B=await b.ensure(U);if(N||B.length>0)return;if(C.getDocument()===U)break}c=b,C.viewer.setFonts(b.library)}}function T(){k!==void 0&&clearTimeout(k),k=setTimeout(()=>{k=void 0;let b=c;N||!b||b.ensure(C.getDocument()).then(U=>{N||c!==b||U.length===0||(c=void 0,C.viewer.setFonts(void 0))})},my)}function H(){N||(N=!0,k!==void 0&&clearTimeout(k),me(),L(),S?.disconnect(),C.destroy(),w.destroy(),P.remove(),F.clear())}let K={getText:()=>re(C.getDocument()),getDocument(){let b=C.getDocument();return pe?.of!==b&&(pe={of:b,document:Gc(b,new Map(y),C.getProblems().map(ld))}),pe.document},on(b,U){if(!np.includes(b))throw new TypeError(`edit: on() takes one of ${np.join(", ")}; got ${String(b)}.`);return F.add(U),()=>{F.delete(U)}},undo(){N||C.undo()},redo(){N||C.redo()},async view(){if(N)throw new Error("edit: this editor was destroyed.");if(J)throw new Error("edit: view() is already opening a view.");J=!0,P.inert=!0;try{C.endTextEditing();let{view:b}=await import("./view.js");if(N)throw new Error("edit: this editor was destroyed.");l=Qc(C.viewer,P,l);let U={camera:C.viewer.getCamera(),page:l,exact:c!==void 0},B=C.getDocument(),R=await b(e,K.getDocument(),{...xy(r),[fd]:U});if(N)throw R.destroy(),new Error("edit: this editor was destroyed.");let q=C.getDocument()===B?void 0:K.getDocument();return H(),q&&await R.load(q),R}finally{J=!1,P.inert=!1}},destroy:H};return K}async function hy(e,t){try{let{exactFontsAt:r}=await import("./chunks/fonts.js"),n=r(e);return(await n.ensure(t)).length===0?n:void 0}catch{return}}function xy(e){let{toolbar:t,...r}=e;return r}export{J_ as edit,ad as version};
2467
+ `;function Bn(e){if(e.getElementById(_c))return;let t=e.createElement("style");t.id=_c,t.textContent=Cc,e.head.appendChild(t)}var Dt=["font","size","weight","italic","underline","strike","fill","letterSpacing","link"];function ar(e){return typeof e=="string"?e===""?[]:[{text:e}]:e.flatMap(t=>typeof t=="string"?t===""?[]:[{text:t}]:t.text===""?[]:[t])}function sr(e){return typeof e=="string"?e:e.map(t=>typeof t=="string"?t:t.text).join("")}function ir(e){return sr(e).length}function or(e){let t={};for(let r of Dt){let n=e[r];n!==void 0&&(t[r]=n)}return t}function Mc(e,t){return Dt.every(r=>e[r]===t[r])}function jg(e,t){let r={text:e};for(let n of Dt){let o=t[n];o!==void 0&&(r[n]=o)}return r}function Hn(e){let t=ar(e),r=[];for(let o of t){let a=r[r.length-1];if(a&&Mc(or(a),or(o))){r[r.length-1]={...a,text:a.text+o.text};continue}r.push(o)}if(r.length===0)return"";let n=r[0];return r.length===1&&Ec(n)?n.text:r.map(o=>Ec(o)?o.text:o)}function Ec(e){return Dt.every(t=>e[t]===void 0)}function zl(e,t,r){let[n,o]=ma(t,r,ir(e)),a=[],i=0;for(let l of ar(e)){let d=i+l.text.length,c=Math.max(n,i),h=Math.min(o,d);h>c&&a.push({...l,text:l.text.slice(c-i,h-i)}),i=d}return Hn(a)}function Rr(e,t,r,n,o){let a=ir(e),[i,l]=ma(t,r,a),d=o??Un(e,i),c=[],h=0,x=!1,y=()=>{x||n===""||(c.push(jg(n,d)),x=!0)};for(let b of ar(e)){let P=h+b.text.length,k=Math.min(i,P);k>h&&c.push({...b,text:b.text.slice(0,k-h)}),i>=h&&i<=P&&y();let _=Math.max(l,h);P>_&&c.push({...b,text:b.text.slice(_-h)}),h=P}return y(),Hn(c)}function Un(e,t){let r=ar(e);if(r.length===0)return{};let n=0,o=r[0];for(let a of r){let i=n+a.text.length;if(t>n&&t<=i)return or(a);if(t<=n)return or(o);o=a,n=i}return or(o)}function ql(e,t,r,n){let[o,a]=ma(t,r,ir(e));if(o===a)return Hn(e);let i=Object.keys(n),l=[],d=0;for(let c of ar(e)){let h=d+c.text.length;for(let[x,y,b]of Kg(d,h,o,a)){if(y<=x)continue;let P=c.text.slice(x-d,y-d);if(!b){l.push({...c,text:P});continue}let k={...c,text:P};for(let _ of i)n[_]===void 0?delete k[_]:k[_]=n[_];l.push(k)}d=h}return Hn(l)}function Kg(e,t,r,n){return[[e,Math.min(t,r),!1],[Math.max(e,r),Math.min(t,n),!0],[Math.max(e,n),t,!1]]}function jl(e,t,r){let[n,o]=ma(t,r,ir(e));if(n===o)return Un(e,n);let a,i=0;for(let l of ar(e)){let d=i+l.text.length;if(Math.min(d,o)>Math.max(i,n)){let c=or(l);if(!a)a=c;else{let h={};for(let x of Dt)a[x]===c[x]&&a[x]!==void 0&&(h[x]=a[x]);a=h}}i=d}return a??{}}function ma(e,t,r){let n=Ac(Math.min(e,t),r),o=Ac(Math.max(e,t),r);return[n,o]}function Ac(e,t){return Math.max(0,Math.min(Math.round(e),t))}function Ir(e,t){let r=[],n=0;return e.lines.forEach((o,a)=>{let i=o.spans.map(h=>h.text).join(""),l=i===""?n:Gg(t,i,n),d=l+i.length,c=a===e.lines.length-1;r.push({start:l,end:c?t.length:d}),n=d}),r.length===0&&r.push({start:0,end:t.length}),r}function Gg(e,t,r){let n=e.indexOf(t,r);return n===-1?r:n}function xa(e,t){for(let r=0;r<e.length;r+=1){let n=e[r];if(t<=n.end)return r}return Math.max(0,e.length-1)}function ga(e,t,r,n){let o=Ir(e,t),a=xa(o,r),i=e.lines[a],l=o[a];if(!i||!l)return{x:0,y:0,h:0,line:0};let d=Math.max(0,Math.min(r-l.start,Tc(i)));return{x:Kl(i,d,n),y:i.y,h:i.h,line:a}}function Vn(e,t,r,n){let o=Ir(e,t);if(e.lines.length===0)return 0;let a=e.lines.findIndex(d=>r.y<d.y+d.h);a===-1&&(a=e.lines.length-1);let i=e.lines[a];return o[a].start+$c(i,r.x,n)}function $c(e,t,r){let n=0,o=1/0,a=0,i=(l,d)=>{let c=Math.abs(d-t);c<o&&(o=c,n=l)};i(0,e.spans[0]?.x??0);for(let l of e.spans){let d=[...l.text],c=0;d.forEach((h,x)=>{c=r.advance(d.slice(0,x+1).join(""),l.style),i(a+x+1,l.x+c)}),a+=d.length}return n}function Kl(e,t,r){let n=0,o=e.spans[0]?.x??0;for(let a of e.spans){let i=[...a.text];if(t<=n)return a.x;if(t>=n+i.length){o=a.x+a.w,n+=i.length;continue}let l=i.slice(0,t-n).join("");return a.x+r.advance(l,a.style)}return o}function Tc(e){return e.spans.reduce((t,r)=>t+[...r.text].length,0)}function Gl(e,t,r,n,o){let a=Math.min(r,n),i=Math.max(r,n);if(a===i)return[];let l=Ir(e,t),d=[];return e.lines.forEach((c,h)=>{let x=l[h];if(!x)return;let y=Math.max(a,x.start),b=Math.min(i,x.end);if(b<=y)return;let P=Tc(c),k=Kl(c,Math.min(y-x.start,P),o),_=Kl(c,Math.min(b-x.start,P),o),B=Math.max(_-k,b>x.end-1&&b>y?4:0);B>0&&d.push({x:k,y:c.y,w:B,h:c.h})}),d}function Wl(e,t,r,n,o){let a=Ir(e,t),l=xa(a,r)+n,d=e.lines[l],c=a[l];if(!d||!c)return n===-1?0:t.length;let h=ga(e,t,r,o);return Math.min(c.start+$c(d,h.x,o),c.end)}var Wg=/[\p{L}\p{N}_]/u;function Xl(e,t){let r=Math.max(0,Math.min(t,e.length)),n=l=>Wg.test(e[l]??""),o=r;if(!n(o)&&o>0&&n(o-1)&&(o-=1),!n(o))return{from:r,to:r};let a=o,i=o;for(;a>0&&n(a-1);)a-=1;for(;i<e.length&&n(i);)i+=1;return{from:a,to:i}}function ya(e,t,r){let n=Ir(e,t),o=n[xa(n,r)];return o?{from:o.start,to:o.end}:{from:0,to:t.length}}var Pc=700;function Yl(e){let t=0,r=0,n=null,o=!1,a=0,i=!1,l=0,d=0;function c(){return sr(e.content())}function h(E){return Math.max(0,Math.min(Math.round(E),c().length))}function x(){return{from:Math.min(t,r),to:Math.max(t,r)}}function y(E,D=E){let N=t!==E||r!==D;t=h(E),r=h(D),N&&b(),n=null,e.invalidate()}function b(){o=!1,a&&(clearTimeout(a),a=0)}function P(){a&&clearTimeout(a),a=setTimeout(b,Pc)}function k(E,D){e.write(E,o,D),o=!0,P()}function _(E,D){let{from:N,to:A}=x(),G=n??void 0;k(Rr(e.content(),N,A,E,G),D),t=r=N+E.length,n=null,e.invalidate()}function B(E,D){E!==D&&(k(Rr(e.content(),E,D,""),"Delete text"),t=r=Math.min(E,D),e.invalidate())}function R(E,D){let{from:N,to:A}=x();if(N!==A){B(N,A);return}let G=c();if(E===-1){if(N===0)return;let me=D?Oc(G,N):N-1;B(me,N);return}if(N>=G.length)return;let se=D?Dc(G,N):N+1;B(N,se)}function J(E,D){let N=c();return D?E===-1?Oc(N,r):Dc(N,r):h(r+E)}return{id:e.id,getSelection:()=>({anchor:t,head:r}),setSelection(E,D){y(E,D??E)},caret(){return ga(e.layout(),c(),r,e.measure())},highlight(){let{from:E,to:D}=x();return Gl(e.layout(),c(),E,D,e.measure())},pointTo(E,D){let N=Vn(e.layout(),c(),E,e.measure());y(D?t:N,N)},selectWordAt(E){let D=Vn(e.layout(),c(),E,e.measure()),N=Xl(c(),D);y(N.from,N.to)},selectLineAt(E){let D=Vn(e.layout(),c(),E,e.measure()),N=ya(e.layout(),c(),D);y(N.from,N.to)},selectAll(){y(0,c().length)},format(E){let{from:D,to:N}=x();if(D===N){n={...Un(e.content(),D),...E},e.invalidate();return}b(),k(ql(e.content(),D,N,E),"Format text"),b(),e.invalidate()},activeMark(){if(n)return n;let{from:E,to:D}=x();return jl(e.content(),E,D)},composing:()=>i,handleKey(E){if(i)return!1;let D=E.metaKey||E.ctrlKey,N=E.altKey||E.ctrlKey&&!E.metaKey;switch(E.key){case"Escape":return e.close("escape"),!0;case"ArrowLeft":case"ArrowRight":{let A=E.key==="ArrowLeft"?-1:1,{from:G,to:se}=x();if(!E.shiftKey&&G!==se)y(A===-1?G:se);else{let me=D?Lc(e,c(),r,A):J(A,N);y(E.shiftKey?t:me,me)}return!0}case"ArrowUp":case"ArrowDown":{let A=E.key==="ArrowUp"?-1:1,G=D?A===-1?0:c().length:Wl(e.layout(),c(),r,A,e.measure());return y(E.shiftKey?t:G,G),!0}case"Home":case"End":{let A=Lc(e,c(),r,E.key==="Home"?-1:1);return y(E.shiftKey?t:A,A),!0}case"Backspace":return R(-1,N||D),!0;case"Delete":return R(1,N||D),!0;case"Enter":return D?e.close("done"):_(`
2468
+ `,"Type text"),!0;case"Tab":return!1;case"a":case"A":return D?(y(0,c().length),!0):!1;case"b":case"B":{if(!D)return!1;let A=this.activeMark().weight===700;return this.format({weight:A?void 0:700}),!0}case"i":case"I":return D?(this.format({italic:this.activeMark().italic===!0?void 0:!0}),!0):!1;case"u":case"U":return D?(this.format({underline:this.activeMark().underline===!0?void 0:!0}),!0):!1;default:return!1}},handleInput(E){if(!i)switch(E.inputType){case"insertText":case"insertReplacementText":case"insertFromPaste":case"insertFromDrop":case"insertFromYank":_(Xg(E),"Type text");return;case"insertParagraph":case"insertLineBreak":_(`
2469
+ `,"Type text");return;case"deleteContentBackward":case"deleteWordBackward":R(-1,E.inputType==="deleteWordBackward");return;case"deleteContentForward":case"deleteWordForward":R(1,E.inputType==="deleteWordForward");return;case"deleteByCut":case"deleteByDrag":{let{from:D,to:N}=x();B(D,N);return}default:return}},handleCompositionStart(){i=!0;let{from:E,to:D}=x();l=E,d=D,b()},handleCompositionUpdate(E){k(Rr(e.content(),l,d,E),"Type text"),d=l+E.length,t=r=d,e.invalidate()},handleCompositionEnd(E){k(Rr(e.content(),l,d,E),"Type text"),i=!1,d=l+E.length,t=r=d,b(),e.invalidate()},breakBurst:b,destroy(){b()}}}function Xg(e){return typeof e.data=="string"?e.data:e.dataTransfer?.getData("text/plain")??""}function Lc(e,t,r,n){let o=ya(e.layout(),t,r);return n===-1?o.from:o.to}var va=/[\p{L}\p{N}_]/u;function Oc(e,t){let r=t;for(;r>0&&!va.test(e[r-1]??"");)r-=1;for(;r>0&&va.test(e[r-1]??"");)r-=1;return r}function Dc(e,t){let r=t;for(;r<e.length&&!va.test(e[r]??"");)r+=1;for(;r<e.length&&va.test(e[r]??"");)r+=1;return r}function Jl(e){return ir(e)===0}var Zl={v:"select",f:"frame",r:"rect",o:"ellipse",p:"pen",t:"text"};function Fr(e,t){let r=[];for(let n of t){if(!V(e.root,n.nodeId))continue;let o=re(n.to);re(n.from)!==o&&r.push({op:"set",id:n.nodeId,prop:n.prop,value:o})}return r}function re(e){return Math.round(e*100)/100}function Br(e,t,r,n){let o=new Set,a=[];for(let d of t)d.op==="set"&&(o.add(Oe(d.id,d.prop)),a.push({nodeId:d.id,prop:d.prop}));if(a.length===0)return[];let i=[],l=new Set;for(let d of a)for(let c of r.get(Oe(d.nodeId,d.prop))??[]){let h=Oe(c.nodeId,c.prop);if(o.has(h)||l.has(h)||!V(e.root,c.nodeId))continue;let x=n.nodes.get(c.nodeId)?.values[c.prop];x!==void 0&&(l.add(h),i.push({op:"set",id:c.nodeId,prop:c.prop,value:re(x)}))}return i}function Ql(e,t,r,n={x:0,y:0}){let o=[],a=new Set,i=e;for(;;){let l=[],d=Ae(i);for(let[c,h]of t){let x=r.get(c),y=V(i.root,h),b=d.nodes.get(h);if(!(!x||!y||!b))for(let P of rt(y)){let k=Oe(h,P);if(a.has(k))continue;let _=x[P],B=b.values[P];if(_===void 0||B===void 0)continue;let R=_+(P==="x"?n.x:P==="y"?n.y:0);re(R)!==re(B)&&(a.add(k),l.push({op:"set",id:h,prop:P,value:re(R)}))}}if(l.length===0)return o;o.push(...l),i=ve(i,l).document}}function Hr(e,t,r=new Set){let n=Ae(e),o=Ae(t),a=[];for(let[i,l]of o.nodes){if(r.has(i))continue;let d=n.nodes.get(i),c=V(t.root,i);if(!(!d||!c))for(let h of rt(c)){let x=d.values[h],y=l.values[h];x===void 0||y===void 0||re(x)!==re(y)&&a.push({op:"set",id:i,prop:h,value:re(x)})}}return a}function ba(e,t,r){let n=new Set,o=[];for(let a of t)a.op==="set"&&a.prop==="view"&&n.add(a.id);for(let a of t){if(a.op!=="set"||a.prop!=="w"&&a.prop!=="h"||n.has(a.id))continue;let i=V(e.root,a.id);if(i?.type!=="vector"||i.view!==void 0)continue;let l=r(a.id);l&&(n.add(a.id),o.push({op:"set",id:a.id,prop:"view",value:Yt({x:0,y:0,w:l.w,h:l.h})}))}return o.length===0?[...t]:[...o,...t]}var ed="host:",Yg="#ffffff",wa=20,Jg=15,Zg={ne:0,se:90,sw:180,nw:270,n:0,e:90,s:180,w:270},Nc={w:240,h:28},Qg={text:"Add text",frame:"Add page",rect:"Draw rectangle",ellipse:"Draw ellipse"};function ey(e,t){let r=t.x-e.x,n=t.y-e.y,o=Math.max(Math.abs(r),Math.abs(n));return{x:e.x+Math.sign(r||1)*o,y:e.y+Math.sign(n||1)*o}}var ty={KeyA:"left",KeyD:"right",KeyW:"top",KeyS:"bottom",KeyH:"hcenter",KeyV:"vcenter"},ry={KeyH:"x",KeyV:"y"},ny={left:"Align left",hcenter:"Align horizontal centres",right:"Align right",top:"Align top",vcenter:"Align vertical centres",bottom:"Align bottom"},td=null,oy=220,Rc={lock:!0,hide:!0},ay=["x","y","w","h"],sy={front:"Bring to front",forward:"Bring forward",backward:"Send backward",back:"Send to back"},iy=11,Pt=2;function nd(e,t){Bn(e.ownerDocument),e.classList.add("vd-editor"),e.hasAttribute("tabindex")||(e.tabIndex=0);let r=t.document,n=[],o=t.tool??"select",a=null,i=null,l=null,d={ids:[],label:null},c=null,h=[],x=!1,y=!1,b=null,P={...Rc,...t.features},k=null,_=new Rn,B=0,R=null,J={dx:0,dy:0},E=null,D=new Map,N=e.ownerDocument.createElement("div");N.style.position="absolute",N.style.inset="0",e.appendChild(N);let A=Ho(N,{document:r,...t.camera?{camera:t.camera}:{},...t.surface?{surface:t.surface}:{},...t.interactive===void 0?{}:{interactive:t.interactive},...t.wheel?{wheel:t.wheel}:{},...t.resolveAsset?{resolveAsset:t.resolveAsset}:{},...t.fonts?{fonts:t.fonts}:{},onSceneChange:(s,f)=>{f===r&&Ye("scene",{scene:s,document:f})},onCameraChange:s=>{se?.setZoom(s.zoom),Y(),Ye("camera",s),!(B>0)&&(Ca(),Ye("navigate",s))}}),G=bc(e,s=>A.documentToScreen(s)),se=t.chrome===!1?null:Hu(e,{onTool:wt,onUndo:Zr,onRedo:ao,onZoomReset:()=>A.fitToContent(),onPlay:t.onPlay,playHint:t.playHint,formatKeys:t.formatKeys}),me=t.chrome===!1?null:Al(e,{onCommand:Qp,...t.formatKeys?{formatKeys:t.formatKeys}:{}}),he=r,ke=r,we=[],T=null,Q=[],w=null,$=null,M=new Map,L=null,H=null,q=null,S=[],U=ze,W=null,I=null,z=null,X=null,tt=!1,ie=e.ownerDocument.createElement("textarea");ie.className="vd-editor__input",ie.setAttribute("aria-hidden","true"),ie.tabIndex=-1,ie.autocapitalize="off",ie.autocomplete="off",ie.spellcheck=!1,e.appendChild(ie);function Ye(s,f){let u=D.get(s);if(u)for(let p of u)p(f)}function sp(s,f){let u=D.get(s)??new Set;return u.add(f),D.set(s,u),()=>u.delete(f)}function jn(s){B+=1;try{s()}finally{B-=1}}function Ca(){R!==null&&(e.ownerDocument.defaultView?.cancelAnimationFrame(R),R=null)}function ip(s){let f=A.linkAt(s),u=f===void 0?void 0:Je(f);return u?u.kind==="url"?t.onOpenLink?(t.onOpenLink(u.url),!0):!1:V(r.root,u.id)?(le([u.id]),Ea([u.id]),!0):!1:!1}function Ea(s,f={}){if(T!==null)return E={target:s,options:f},!1;let u=fp(s);if(!u)return!1;let p=e.getBoundingClientRect(),m=p.width>0&&p.height>0,g=m?{width:p.width,height:p.height-lp(p)}:{width:u.w+96,height:u.h+96},v=f.fit==="always"?oa(u,g):Cl(u,g,A.getCamera());if(!v)return!1;Ca(),f.by==="person"&&Ye("navigate",v);let C=e.ownerDocument.defaultView,O=C?.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1;if(f.animate===!1||O||!m||!C?.requestAnimationFrame)return jn(()=>A.setCamera(v)),!0;let F=A.getCamera(),j=C.performance.now();J={dx:0,dy:0};let K=ae=>{let Z=Math.min(1,Math.max(0,(ae-j)/oy)),ge=Z===1?v:ac(F,v,sc(Z),g);jn(()=>A.setCamera(Tt(ge,J.dx,J.dy))),R=Z===1?null:C.requestAnimationFrame(K)};return R=C.requestAnimationFrame(K),!0}function lp(s){let f=se?.element.getBoundingClientRect();return!f||f.height===0?0:Math.max(0,s.bottom-f.top)}function dp(s,f){R!==null&&(J={dx:J.dx+s,dy:J.dy+f}),jn(()=>A.setCamera(Tt(A.getCamera(),s,f)))}function Kn(){if(E===null||T!==null)return;let{target:s,options:f}=E;E=null,Ea(s,f)}function fp(s){if(s==="content"){let u=A.getScene();return na([{x:u.x,y:u.y,w:u.width,h:u.height}])}let f=[];for(let u of _l(r,s)){let p=Ee(u);p&&f.push(p)}return na(f)}function lt(s){return A.getResolution().nodes.get(s)}function yt(s){let f=lt(s);return f?{x:f.x,y:f.y,w:f.w,h:f.h}:void 0}function Ee(s){return nr(s,r,A.getResolution())}function Nt(s){let f=lt(s);return f?{x:f.absX,y:f.absY,w:f.w,h:f.h}:void 0}function Rt(s){return lt(s)?.values.rotation??0}function pd(){let s=zr();if(s.length===0)return null;for(let f of s){let u=V(r.root,f);if(!u||!Rs.includes(u.type))return null}return s}function Gn(s,f=new Set){let u=A.getResolution(),p=null;return oe(r.root,m=>{if(f.has(m.id)||!Ft(m.id))return!1;if(m.type!=="frame")return;let g=u.nodes.get(m.id);if(!g)return!1;let v={x:g.absX,y:g.absY,w:g.w,h:g.h};if(!et(v,s.x,s.y))return!1;p=m.id}),p}function It(s){let f=lt(s);return f?{x:f.absX,y:f.absY}:{x:0,y:0}}function Re(){return k?.of!==r&&(k={of:r,hidden:io(r.root),locked:lo(r.root)}),k}function Ft(s){let{hidden:f,locked:u}=Re();return!f.has(s)&&!u.has(s)}function te(){return n.filter(Ft)}function Wn(s){let f=A.hitTest(s,p=>!Re().locked.has(p));if(f===null)return null;let u=b===null||De(r.root,f).includes(b);return ea(f,r,u?b:null)}function up(){return Nn(r,te(),A.getResolution())}function Vr(){return te().length<2?null:Dl(up())}function Xn(s){let f=[];for(let u of s)for(let p of rr(u,r)){let m=yt(p);m&&f.push({member:u,node:p,frame:m})}return f}function Yn(s,f){let u=V(r.root,s);if(!u)return"literal";let p=u[f];return p===void 0?"literal":To(p).kind}function cp(s){let f=V(r.root,s),u={};if(!f)return u;let p=[...ay,...Ln(f).map(m=>m.prop)];for(let m of p)u[m]=Yn(s,m);return u}function hd(s,f){let u="none";for(let p of s){let m=Aa(p,f);if(m==="expression")return"expression";m==="token"&&(u="token")}return u}function Aa(s,f){let u="none";for(let p of f){let m=Yn(s,p);if(m==="complex")return"expression";m==="token"&&(u="token")}return u}let Ie=null;function ue(s,f){if(s.length===0)return;let u=bo(r,ba(r,s,yt)),p=ve(r,u);r=p.document,Ie?(Ta(Ie.started,Ie.label,u,p.inverse),Ie.started=!0):_.push({label:f,ops:u,inverse:p.inverse}),Jn(u,f)}function pp(s){Ie={label:s,started:!1}}function hp(){Ie=null}function md(s,f){s.length!==0&&(r=ve(r,s).document,Jn(s,f))}function Jn(s,f){a=null,H=null,q=null,A.update(r),se?.setHistory(_.canUndo,_.canRedo),Y(),Ye("change",{document:r,ops:s,label:f}),Ye("problems",A.getScene().problems)}function le(s){let f=s.filter(p=>p!==r.root.id&&V(r.root,p)),u=f.length!==n.length||f.some((p,m)=>n[m]!==p);n=[...f],z&&(f.length!==1||f[0]!==z.id)&&(z=null),u&&(me?.close(),q=null,Ye("selection",n)),Y()}function mp(s,f){let u=V(r.root,s);if(!u)return[];let p=A.getCamera().zoom;if(Math.min(f.w,f.h)*p<24)return[];let m=iy/p,g=lt(s);return Ln(u).flatMap(v=>{let C=g?.values[v.prop]??0,O=Yn(s,v.prop)!=="literal";return v.handles(f,C,m).map(F=>({id:F.id,at:F.at,bound:O}))})}function xp(){let s=[];for(let F of te()){let j=Ee(F);j&&s.push(j)}let f=Qe(s);if(!f)return null;let u=te().length===1?te()[0]:void 0,p=u===void 0?void 0:V(r.root,u),m=u===void 0||!p||ce(p),g=new Set,v=zr();for(let F of di){let j=Uo(F);v.some(K=>j.some(ae=>Yn(K,ae)!=="literal"))&&g.add(F)}let C=!m&&u!==void 0?Rt(u):0,O=C!==0&&u!==void 0?Nt(u):void 0;return{frame:O??f,...O?{rotation:C}:{},rotatable:pd()!==null,handles:I===null,boundHandles:g,adjusters:I!==null||m||u===void 0||O?[]:mp(u,f)}}function zr(){return[...new Set(te().flatMap(s=>rr(s,r)))]}function gp(s){if(!s)return null;if(T?.kind==="adjust")return`r ${re(w??T.from)}`;if(T?.kind==="rotate")return`${re($??0)}\xB0`;if(!T&&H&&te().length===1){let f=lt(te()[0])?.values[H.prop]??0;return`r ${re(f)}`}return T?.kind==="move"?`${re(s.frame.x)}, ${re(s.frame.y)}`:`${re(s.frame.w)} \xD7 ${re(s.frame.h)}`}function yp(){let f=T!==null&&T.kind!=="space"&&T.kind!=="reorder"?null:Vr();if(!f)return{spacers:[],rings:[],lead:null};let u=T?.kind==="space"?T.spacer:null;return{spacers:Nl(f).map(p=>({id:p.id,axis:p.axis,at:p.at,label:p.id===(u??q)?String(re(p.gap)):null})),rings:Rl(f).map(p=>({id:p.id,at:p.at})),lead:T?.kind==="reorder"?Ee(T.id)??null:null}}function Y(){if(!y)return;let s=Bp(),f=s?null:xp(),u=a!==null&&!n.includes(a)&&!T?Ee(a)??null:null,p={...vc,...yp(),hover:u,members:te().length>1?te().flatMap(m=>Ee(m)??[]):[],box:f,badge:gp(f),caret:xd(),textSelection:gd(),draft:T?.kind==="create"?tr(T.origin,T.current):null,draftEllipse:T?.kind==="create"&&o==="ellipse",marquee:T?.kind==="marquee"?tr(T.origin,T.current):null,guides:T?U.guides:[],measures:T?U.measures:[],presence:d.ids.length===0?null:{frames:d.ids.flatMap(m=>Ee(m)??[]),label:d.label},highlight:Pn(r,h).flatMap(m=>Ee(m.id)??[]),slots:lh(),parked:n.filter(m=>!Ft(m)).flatMap(m=>Ee(m)??[]),lockHint:wp(),path:s,turn:kp(),pageLabels:vp()};G.render(p)}function vp(){return i?[]:r.root.children.flatMap(s=>{if(s.type!=="frame")return[];let f=Ee(s.id);if(!f)return[];let u=s.name;return[{id:s.id,frame:f,label:typeof u=="string"&&u!==""?u:s.id,state:n.includes(s.id)?"selected":a===s.id?"hover":"idle"}]})}function bp(s){let f=G.pageLabelRect(s),u=V(r.root,s);if(!f||!u)return;let p=u.name,m=e.ownerDocument.createElement("input");m.className="vd-editor__rename",m.type="text",m.spellcheck=!1,m.value=typeof p=="string"&&p!==""?p:"",m.placeholder=s,m.setAttribute("aria-label",`Name of ${s}`),m.style.left=`${f.x-4}px`,m.style.top=`${f.y-2}px`,m.style.width=`${Math.max(120,f.w+40)}px`;let g=!1,v=C=>{if(g)return;g=!0;let O=m.value.trim();m.remove(),i=null,C&&O!==(typeof p=="string"?p:"")&&nf(s,"name",O===""?void 0:O,"Rename"),Y(),e.focus({preventScroll:!0})};m.addEventListener("keydown",C=>{C.stopPropagation(),C.key==="Enter"?(C.preventDefault(),v(!0)):C.key==="Escape"&&(C.preventDefault(),v(!1))}),m.addEventListener("pointerdown",C=>C.stopPropagation()),m.addEventListener("blur",()=>v(!0)),i=m,e.appendChild(m),Y(),m.focus(),m.select()}function wp(){if(l===null||T||!Re().locked.has(l))return null;let s=Ee(l);return s?{frame:s,label:l}:null}function Zn(s){let f=A.itemOf(s);if(f?.kind!=="text")return null;let u=f.lines[0]?.y??f.y,p={lines:f.lines.map(m=>({y:m.y-u,h:m.h,baseline:m.baseline-u,w:m.w,spans:m.spans.map(g=>({text:g.text,style:g.style,x:g.x-f.x,w:g.w}))})),width:Math.max(0,...f.lines.map(m=>m.w)),height:f.height};return{item:f,layout:p,top:u}}function Ma(){return o==="text"?"text":o!=="select"?"crosshair":"arrow"}function xd(){if(!I)return null;let s=Zn(I.id);if(!s)return null;let f=I.caret();return{x:s.item.x+f.x,y:s.top+f.y,h:f.h}}function gd(){if(!I)return[];let s=Zn(I.id);return s?I.highlight().map(f=>({x:s.item.x+f.x,y:s.top+f.y,w:f.w,h:f.h})):[]}function $a(s){if(!I)return null;let f=Zn(I.id);if(!f)return null;let u=qr(I.id,s);return{x:u.x-f.item.x,y:u.y-f.top}}function qr(s,f){let u=Rt(s),p=u===0?void 0:Nt(s);return p?Pe(f,Ve(p),-u):f}function kp(){let s=I?.id??z?.id;if(s===void 0)return null;let f=Rt(s),u=f===0?void 0:Nt(s);return u?{angle:f,centre:Ve(u)}:null}function Sp(s){let f=V(r.root,s);if(!f||f.type!=="text"||typeof f.h!="number")return[];let u=A.itemOf(s);if(u?.kind!=="text")return[];let p=re(Math.ceil(u.height));return p>f.h?[{op:"set",id:s,prop:"h",value:p}]:[]}function _p(s,f,u,p){let m=Ie?Ie.started:u,g=Ie?.label??p;Ie&&(Ie.started=!0);let v=[{op:"set",id:s,prop:"content",value:f}],C=ve(r,v);r=C.document,A.update(r);let O=Sp(s);if(O.length===0){Ta(m,g,v,C.inverse),Jn(v,g);return}let F=ve(r,O);r=F.document,A.update(r);let j=[...v,...O];Ta(m,g,j,[...F.inverse,...C.inverse]),Jn(j,g)}function Ta(s,f,u,p){let m={label:f,ops:u,inverse:p};s&&_.amend(m)||_.push(m)}function jr(s,f){let u=V(r.root,s);if(!u||u.type!=="text"||I?.id===s)return;lr("done"),wt("select"),le([s]),I=Yl({id:s,content:()=>{let m=V(r.root,s);return m?.type==="text"?m.content:""},layout:()=>Zn(s)?.layout??{lines:[],width:0,height:0},measure:()=>A.getMeasurer(),write:(m,g,v)=>_p(s,m,g,v),invalidate:()=>{Y(),yd(),Ye("selection",n)},close:m=>lr(m)});let p=f?$a(f):null;p?I.pointTo(p,!1):I.selectAll(),e.classList.add("vd-editor--editing"),ie.value="",ie.focus({preventScroll:!0}),Y(),yd()}function lr(s){let f=I;if(!f)return;I=null,tt=!1,f.destroy(),e.classList.remove("vd-editor--editing","vd-editor--typing"),Ye("selection",n);let u=V(r.root,f.id);u?.type==="text"&&Jl(u.content)&&(ue([{op:"remove",id:f.id}],"Remove empty text"),le([])),e.ownerDocument.activeElement===ie&&e.focus({preventScroll:!0}),Y()}function yd(){let s=xd();if(!s)return;let f=A.documentToScreen({x:s.x,y:s.y});ie.style.left=`${Math.round(f.x)}px`,ie.style.top=`${Math.round(f.y)}px`}let dr=0;function vd(){e.classList.add("vd-editor--typing"),dr&&clearTimeout(dr),dr=setTimeout(()=>{dr=0,e.classList.remove("vd-editor--typing")},520)}function La(s){let f=Fr(he,s);return f.length>0&&L?[...f,...Br(he,f,M,L)]:f}function Bt(s){Oa(La(s))}function Oa(s,f=s){let u=m=>{let g=L?.nodes.get(m);return g?{x:0,y:0,w:g.w,h:g.h}:void 0},p=ba(he,s,u);Q=ba(he,f,u),A.update(p.length>0?ve(he,p).document:he),Y()}function bd(){let s=Qe(te().flatMap(p=>Ee(p)??[]));if(!s)return null;let f=new Map,u=new Map;for(let p of zr()){let m=Nt(p),g=yt(p);!m||!g||(f.set(p,m),u.set(p,{x:m.x-g.x,y:m.y-g.y}))}return f.size===0?null:{bounds:s,frames:f,offsets:u}}function wd(s,f){let u=gl(s.frames,s.bounds,f),p=[];for(let[m,g]of u){let v=s.frames.get(m),C=s.offsets.get(m);if(!v||!C)continue;let O=Rt(m),F=O===0?g:Lu(v,O,s.bounds,f);p.push({nodeId:m,prop:"x",from:v.x-C.x,to:F.x-C.x},{nodeId:m,prop:"y",from:v.y-C.y,to:F.y-C.y},{nodeId:m,prop:"w",from:v.w,to:F.w},{nodeId:m,prop:"h",from:v.h,to:F.h})}return p}function Cp(s,f){let u=pd();if(!u)return!1;let p=te().length===1&&u.length===1?u[0]:void 0,m=Qe(te().flatMap(C=>Ee(C)??[])),g=p!==void 0?Nt(p):m;if(!g)return!1;let v=u.flatMap(C=>{let O=Nt(C),F=yt(C);return!O||!F?[]:[{id:C,frame:O,rotation:Rt(C),offset:{x:O.x-F.x,y:O.y-F.y}}]});return v.length===0?!1:(Ke(f),Fe({kind:"rotate",pointerId:f,origin:s,centre:Ve(g),targets:v}),!0)}function Ep(s,f,u){let p=bd();return p?(Ke(u),Fe({kind:"scale",pointerId:u,origin:s,handle:f,...p}),!0):!1}function Ap(s){let f=bd();if(!f)return;let u=Fr(r,wd(f,s));if(u.length===0)return;let p=s.w!==f.bounds.w||s.h!==f.bounds.h;ue([...u,...Br(r,u,Er(r),Ae(r))],p?"Resize":"Move")}function Mp(s,f,u){let p=ca(s),m=Vr();if(!p||!m)return!1;let g=it(m,p.axis)?.gaps[p.index],v=Xn(te());return g===void 0||v.length===0?!1:(Ke(u),Fe({kind:"space",pointerId:u,origin:f,axis:p.axis,spacer:s,layout:m,gap:g,parts:v}),!0)}function $p(s,f){let u=s.axis==="x"?f.x-s.origin.x:f.y-s.origin.y,p=Math.max(0,s.gap+u);Bt(Da(s.parts,s.axis,pa(s.layout,s.axis,p)))}function Tp(s,f){let u=Vr(),p=u?it(u,s):void 0;if(!u||!p||p.gaps.length===0)return;let m=Fr(r,Da(Xn(te()),s,pa(u,s,Math.max(0,f))));m.length!==0&&ue([...m,...Br(r,m,Er(r),Ae(r))],"Spacing")}function Lp(s){let f=Vr(),u=f?it(f,s)?.gaps:void 0;return!u||u.length===0?null:Pl(u)?u[0]??null:"mixed"}function Da(s,f,u){return s.map(p=>{let m=f==="x"?p.frame.x:p.frame.y;return{nodeId:p.node,prop:f,from:m,to:m+(u.get(p.member)??0)}})}function Op(s,f,u){let p=Vr();if(!p||!p.order.includes(s))return!1;let m=Xn(te()),g=p.items.find(v=>v.id===s)?.frame;return m.length===0||!g?!1:(Ke(u),Fe({kind:"reorder",pointerId:u,id:s,layout:p,parts:m,grab:{x:f.x-g.x,y:f.y-g.y},to:p.order.indexOf(s),swap:!1}),!0)}function Dp(s,f,u){s.to=Bl(s.layout,f),s.swap=u;let p=Pp(s),m=new Map(p);m.set(s.id,{x:f.x-s.grab.x,y:f.y-s.grab.y}),Oa(La(kd(s,m)),La(kd(s,p)))}function Pp(s){let f=s.layout.order.indexOf(s.id);if(f===-1||s.to===f)return new Map;if(s.swap){let u=s.layout.order[s.to];return u===void 0?new Map:Vl(s.layout,s.id,u)}return Ul(s.layout,Hl(s.layout.order,f,s.to))}function kd(s,f){let u=new Map(s.layout.items.map(m=>[m.id,m.frame])),p=[];for(let m of s.parts){let g=f.get(m.member),v=u.get(m.member);!g||!v||p.push({nodeId:m.node,prop:"x",from:m.frame.x,to:m.frame.x+(g.x-v.x)},{nodeId:m.node,prop:"y",from:m.frame.y,to:m.frame.y+(g.y-v.y)})}return p}function Fe(s,f=[],u=r){ke=u,we=f,he=r,T=s,Q=[],M=Er(r),L=Ae(r),U=ze,S=Np(s)?vl(r,L,Rp(s)):[]}function Np(s){return s.kind==="move"||s.kind==="resize"||s.kind==="scale"||s.kind==="create"}function Rp(s){return s.kind==="move"||s.kind==="scale"?new Set(te()):s.kind==="resize"?new Set([s.id]):new Set}function Kr(s){return s.metaKey||s.ctrlKey?0:yl/A.getCamera().zoom}function vt(s){let f=[...we,...Q];T=null,Q=[],we=[],w=null,$=null,U=ze,r=ke,A.update(r),ue(f,s),Y()}function Ip(){let s=Q.length>0?ve(he,Q).document:he,f=new Set(te().flatMap(m=>Sd(m,s))),u=[];for(let m of te()){let g=V(s.root,m),v=nt(s.root,m);if(!g||!v)continue;let C=Ee(m);if(!C)continue;let O={x:C.x+C.w/2,y:C.y+C.h/2},F=Gn(O,f)??r.root.id;if(F===v.id)continue;let j=V(s.root,F);if(!j||!ce(j))continue;u.push({op:"move",id:m,parent:F,index:de(j).length});let K={x:It(v.id).x-It(F).x,y:It(v.id).y-It(F).y};if(!(K.x===0&&K.y===0))for(let ae of rr(m,s)){let Z=yt(ae);Z&&(u.push({op:"set",id:ae,prop:"x",value:re(Z.x+K.x)}),u.push({op:"set",id:ae,prop:"y",value:re(Z.y+K.y)}))}}if(u.length===0)return[];let p=ve(s,u).document;return[...u,...Hr(s,p,f)]}function Sd(s,f){let u=V(f.root,s);if(!u)return[];let p=[];return oe(u,m=>{p.push(m.id)}),p}function Pa(){if(!T)return;T=null,Q=[],w=null,$=null,U=ze;let s=we.length>0;r=ke,we=[],s&&le(n.filter(f=>V(r.root,f))),A.update(r),Y()}let Fp=5,Qn=8;function _d(s,f=r,u=A.getResolution()){let p=V(f.root,s),m=u.nodes.get(s);if(p?.type!=="vector"||!m)return;let g={x:m.absX,y:m.absY,w:Math.max(0,m.w),h:Math.max(0,m.h)};return{node:p,view:fn(p.view,g.w,g.h),box:g}}function Gr(s,f=r,u=A.getResolution()){let p=_d(s,f,u);if(p)return ct(sn(p.node.d).contours,un(p.view,p.box))}function bt(s,f,u,p=r,m=A.getResolution()){let g=_d(s,p,m);if(!g)return[];let{node:v,view:C,box:O}=g,F=ct(f,os(C,O)),j=[],K=(Ga,cf,bh)=>{cf!==bh&&j.push({op:"set",id:s,prop:Ga,value:cf})};K("d",ut(F),v.d);let ae=[v.x,v.y,v.w,v.h].every(Ga=>typeof Ga=="number"),Z=Xt(F),ge=Xt(f);if(!u||!ae||!Z||!ge)return j;let kt=O.x-v.x,Qr=O.y-v.y;return K("view",Yt(Z),v.view),K("x",re(ge.x-kt),v.x),K("y",re(ge.y-Qr),v.y),K("w",re(ge.w),v.w),K("h",re(ge.h),v.h),j}function Ht(s){return V(r.root,s)?.type!=="vector"||!Ft(s)?!1:(I&&lr("done"),X&&eo(),le([s]),z={id:s,picked:new Set},o!=="select"&&wt("select"),je(null),Y(),!0)}function Wr(){z&&(z=null,Y())}function Bp(){if(X){let u=X.contours[X.contour],p=u?.anchors??[],m=p[p.length-1],g=p[0],v=X.hover,C=v!==null&&g!==void 0&&p.length>=2&&!u?.closed&&Xr(g,v)<=Qn;return{contours:X.contours,anchors:p.map((O,F)=>({key:Me(X?.contour??0,F),at:O,selected:F===p.length-1})),handles:m?gi(X.contours,new Set([Me(X.contour,p.length-1)])):[],pending:m&&v&&!X.dragging&&!u?.closed?{from:m,...m.out?{c1:m.out}:{},to:v}:null,closeAt:C?g:null}}if(!z)return null;let s=Gr(z.id);if(!s)return null;let f=new Set(mi(s,z.picked));return{contours:s,anchors:s.flatMap((u,p)=>u.anchors.map((m,g)=>({key:Me(p,g),at:m,selected:f.has(Me(p,g))}))),handles:gi(s,f)}}function Xr(s,f){return Math.hypot(s.x-f.x,s.y-f.y)*A.getCamera().zoom}function Hp(s,f,u,p){if(!z)return!1;let m=z.id,g=Gr(m);if(!g)return z=null,!1;s.preventDefault(),Ke(s.pointerId);let v=G.hitPath(f);if(v?.kind==="handle"){let O=Ou(v.key),F=O?g[O.contour]?.anchors[O.index]:void 0;if(O&&F)return Fe({kind:"pathHandle",pointerId:s.pointerId,id:m,start:g,contour:O.contour,index:O.index,side:O.side,smooth:zo(F),last:g}),!0}if(v?.kind==="anchor")return s.altKey?(z.picked=new Set([v.key]),ue(bt(m,Du(g,v.key),!1),"Convert point"),!0):(s.shiftKey?z.picked.has(v.key)?z.picked.delete(v.key):z.picked.add(v.key):z.picked.has(v.key)||(z.picked=new Set([v.key])),Fe({kind:"points",pointerId:s.pointerId,id:m,origin:u,start:g,keys:new Set(z.picked),lead:v.key,moved:!1,last:g}),Y(),!0);let C=ss(g,u);if(C&&C.distance*A.getCamera().zoom<=Fp){if(p>=2){let K=is(g,C.contour,C.segment,C.t);return z.picked=new Set([Me(C.contour,C.segment+1)]),ue(bt(m,K,!1),"Add point"),!0}let O=g[C.contour],F=O.anchors[C.segment],j=O.anchors[(C.segment+1)%O.anchors.length];return Fe({kind:"segment",pointerId:s.pointerId,id:m,origin:u,start:g,contour:C.contour,segment:C.segment,t:C.t,straight:!F?.out&&!j?.in,last:g}),!0}return Fe({kind:"pointMarquee",pointerId:s.pointerId,origin:u,current:u,additive:s.shiftKey}),!0}function Up(s,f,u,p){let m=hi(s.start,s.lead);if(!m||p===0)return{dx:f,dy:u};let g=m.x+f,v=m.y+u,C=p,O=p,F=f,j=u;return s.start.forEach((K,ae)=>K.anchors.forEach((Z,ge)=>{s.keys.has(Me(ae,ge))||(Math.abs(Z.x-g)<C&&(C=Math.abs(Z.x-g),F=Z.x-m.x),Math.abs(Z.y-v)<O&&(O=Math.abs(Z.y-v),j=Z.y-m.y))})),{dx:F,dy:j}}function Vp(s,f){if(!T)return!1;let u=(p,m)=>{L&&Oa(bt(m,p,!1,he,L))};switch(T.kind){case"points":{let p=f;s.shiftKey&&(p=Tn(T.origin,f));let m={dx:p.x-T.origin.x,dy:p.y-T.origin.y};if(!T.moved&&Math.hypot(m.dx,m.dy)*A.getCamera().zoom<Pt)return!0;T.moved=!0;let{dx:g,dy:v}=s.shiftKey?m:Up(T,m.dx,m.dy,Kr(s));return T.last=Ko(T.start,T.keys,g,v),u(T.last,T.id),!0}case"pathHandle":{let p=T.start[T.contour]?.anchors[T.index],m=s.shiftKey&&p?Tn(p,f):f;return T.last=qo(T.start,T.contour,T.index,T.side,m,{smooth:T.smooth,breakSmooth:s.altKey}),u(T.last,T.id),!0}case"segment":return T.last=Nu(T.start,T.contour,T.segment,T.t,f.x-T.origin.x,f.y-T.origin.y,T.straight),u(T.last,T.id),!0;case"pointMarquee":return T.current=f,Y(),!0;default:return!1}}function zp(s){if(!T)return!1;switch(T.kind){case"points":case"pathHandle":case"segment":{let f=T.kind!=="points"||T.moved,u=T.kind==="points"?T.keys.size===1?"Move point":"Move points":T.kind==="pathHandle"?"Adjust curve":"Reshape";return Q=f&&L?bt(T.id,T.last,!0,he,L):[],vt(u),!0}case"pointMarquee":{let f=tr(T.origin,T.current),u=T.additive;if(T=null,U=ze,!z)return!0;let p=A.getCamera().zoom;if(f.w*p<Pt&&f.h*p<Pt){if(A.hitTest(s)===z.id)z.picked=new Set;else{Wr();let v=Wn(s);le(v===null?[]:[v])}return Y(),!0}let m=Gr(z.id)??[],g=xi(m).filter(v=>{let C=hi(m,v);return C!==void 0&&et(f,C.x,C.y)});return z.picked=new Set(u?[...z.picked,...g]:g),Y(),!0}default:return!1}}function qp(s){if(!z)return!1;let f=z.id,u=s.metaKey||s.ctrlKey;if(s.key==="Escape"||s.key==="Enter"&&!u)return s.preventDefault(),T?Pa():Wr(),!0;let p=Gr(f);if(!p)return!1;let m=new Set(mi(p,z.picked));if(s.key==="Delete"||s.key==="Backspace"){if(s.preventDefault(),m.size===0)return!0;let O=Pu(p,m);return z.picked=new Set,O.length===0?(Wr(),cr(),!0):(ue(bt(f,O,!0),m.size===1?"Delete point":"Delete points"),!0)}let g=s.shiftKey?10:1,C={ArrowLeft:[-g,0],ArrowRight:[g,0],ArrowUp:[0,-g],ArrowDown:[0,g]}[s.key];return C&&!u?(s.preventDefault(),m.size>0&&ue(bt(f,Ko(p,m,C[0],C[1]),!0),"Nudge points"),!0):u&&s.key.toLowerCase()==="a"?(s.preventDefault(),z.picked=new Set(xi(p)),Y(),!0):u&&!s.shiftKey&&s.code==="KeyJ"?(s.preventDefault(),ue(bt(f,Ru(p,m),!0),"Close path"),!0):!1}function jp(s,f){if(s.preventDefault(),Ke(s.pointerId),!X){X=Kp(f)??{contours:[{closed:!1,anchors:[{x:f.x,y:f.y}]}],contour:0,target:null,hover:null,dragging:null};let v=X.contours[X.contour];X.dragging={pointerId:s.pointerId,index:v.anchors.length-1,origin:f},Y();return}let u=X.contours[X.contour],p=u.anchors[0],m=u.anchors[u.anchors.length-1];if(p&&u.anchors.length>=2&&Xr(p,f)<=Qn){X.contours[X.contour]={...u,closed:!0},X.dragging={pointerId:s.pointerId,index:0,origin:p},Y();return}let g=s.shiftKey&&m?Tn(m,f):f;X.contours[X.contour]={...u,anchors:[...u.anchors,{x:g.x,y:g.y}]},X.dragging={pointerId:s.pointerId,index:u.anchors.length,origin:g},Y()}function Kp(s){let f=n.length===1?n[0]:null;if(f===null||!Ft(f))return null;let u=Gr(f);if(!u)return null;for(let p=0;p<u.length;p+=1){let m=u[p];if(m.closed||m.anchors.length<1)continue;let g=m.anchors[0],v=m.anchors[m.anchors.length-1],C=Xr(v,s)<=Qn,O=!C&&Xr(g,s)<=Qn;if(!C&&!O)continue;let F=[...u];return O&&(F[p]=Iu(m)),{contours:F,contour:p,target:f,hover:null,dragging:null}}return null}function Gp(s,f){if(!X)return;let u=X.dragging;if(!u||u.pointerId!==s.pointerId){let O=X.contours[X.contour],F=O?.anchors[O.anchors.length-1];X.hover=s.shiftKey&&F?Tn(F,f):f,Y();return}if(Xr(u.origin,f)<Pt)return;let p=X.contours[X.contour],m=p.anchors[u.index];if(!m)return;let g={x:2*m.x-f.x,y:2*m.y-f.y},v=s.altKey?m.in:g,C=[...p.anchors];C[u.index]={x:m.x,y:m.y,...v?{in:v}:{},out:f},X.contours[X.contour]={...p,anchors:C},Y()}function Wp(s){!X?.dragging||X.dragging.pointerId!==s.pointerId||(Ka(s.pointerId),X.dragging=null,X.contours[X.contour]?.closed?eo():Y())}function eo(){if(!X)return;let s=X;X=null;let f=s.contours[s.contour];if(!f||f.anchors.length<2){Y();return}if(s.target!==null){ue(bt(s.target,s.contours,!0),"Extend path"),wt("select"),Ht(s.target);return}let u=Xt(s.contours),p=f.anchors[0];if(!u)return;let m=Gn(p)??b??r.root.id,g=V(r.root,m)??r.root,v=It(m),C=ct(s.contours,F=>({x:F.x-u.x,y:F.y-u.y})),O=Kt(r.root,"path");ue([{op:"insert",parent:m,index:de(g).length,node:fo({id:O,x:re(u.x-v.x),y:re(u.y-v.y),w:re(u.w),h:re(u.h),view:Yt({x:0,y:0,w:u.w,h:u.h}),d:ut(C),fill:"none",stroke:t.defaultStroke??"#1f2937",strokeWidth:2,cap:"round",join:"round"})}],"Draw path"),wt("select"),Ht(O)}function Na(s=te()){let f=[],u=[];for(let p of s){let m=V(r.root,p),g=nt(r.root,p),v=lt(p);if(!m||!g||!v||m.type!=="rect"&&m.type!=="ellipse")continue;let C=Math.max(0,v.w),O=Math.max(0,v.h),F=m.type==="rect"?ls(C,O,v.values.radius??0):ds(C,O),j=fo({id:p,...m.name===void 0?{}:{name:m.name},x:m.x,y:m.y,w:m.w,h:m.h,view:Yt({x:0,y:0,w:C,h:O}),d:ut(F),...m.fill===void 0?{}:{fill:m.fill},...m.stroke===void 0?{}:{stroke:m.stroke},...m.strokeWidth===void 0?{}:{strokeWidth:m.strokeWidth},...m.opacity===void 0?{}:{opacity:m.opacity},...m.hidden?{hidden:!0}:{},...m.locked?{locked:!0}:{}}),K=g.children.findIndex(ae=>ae.id===p);f.push({op:"remove",id:p},{op:"insert",parent:g.id,index:K,node:j}),u.push(p)}u.length!==0&&(ue(f,u.length===1?"Convert to vector":`Convert ${u.length} to vector`),le(u),u.length===1&&Ht(u[0]))}function Cd(){return te().filter(s=>{let f=V(r.root,s)?.type;return f==="rect"||f==="ellipse"}).length}let Xp=450,Ed=4,Yr={x:0,y:0,at:0,count:0};function Yp(s){let f=Date.now(),p=Math.abs(s.x-Yr.x)<=Ed&&Math.abs(s.y-Yr.y)<=Ed&&f-Yr.at<=Xp?Yr.count+1:1;return Yr={x:s.x,y:s.y,at:f,count:p},p}let Ad=s=>{if(s.button!==0||x)return;let f=A.pointerPoint(s),u=A.screenToDocument(f);W=u;let p=Yp(f);if(I){let O=$a(u),F=A.itemOf(I.id),j=qr(I.id,u);if(O&&F&&et(F,j.x,j.y)){s.preventDefault(),Ke(s.pointerId),tt=!0,p>=3?I.selectLineAt(O):p===2?I.selectWordAt(O):I.pointTo(O,s.shiftKey),ie.focus({preventScroll:!0}),Y();return}lr("blur")}if(e.focus({preventScroll:!0}),o==="select"&&(s.metaKey||s.ctrlKey)&&ip(u)){s.preventDefault();return}if(o==="pen"){jp(s,u);return}if(z&&o==="select"&&Hp(s,f,qr(z.id,u),p))return;if(o!=="select"){s.preventDefault(),Ke(s.pointerId),Fe({kind:"create",pointerId:s.pointerId,origin:u,current:u}),Y();return}let m=te().length===1?te()[0]:null;if(m!==null){let O=V(r.root,m),F=G.hitAdjuster(f),j=O&&F?Xo(O,F.id):void 0,K=j?Ee(m):void 0;if(j&&K&&F){s.preventDefault(),Ke(s.pointerId),Fe({kind:"adjust",pointerId:s.pointerId,id:m,adjuster:j,handleId:F.id,frame:K,from:lt(m)?.values[j.prop]??0});return}let ae=O&&!ce(O)?G.hitHandle(f):null,Z=ae?yt(m):void 0,ge=Z?Nt(m):void 0;if(ae&&Z&&ge){s.preventDefault(),Ke(s.pointerId),Fe({kind:"resize",pointerId:s.pointerId,origin:u,id:m,handle:ae.handle,frame:Z,offset:{x:ge.x-Z.x,y:ge.y-Z.y},rotation:Rt(m)});return}}let g=te().length>0?G.hitHandle(f):null;if(g&&Ep(u,g.handle,s.pointerId)){s.preventDefault();return}let v=G.hitPageLabel(f);if(v!==null){if(s.preventDefault(),b=null,s.shiftKey){le(n.includes(v)?n.filter(O=>O!==v):[...n,v]);return}if(n.includes(v)||le([v]),p===2){bp(v);return}Md(u,s.pointerId,s.altKey);return}if(te().length>0&&G.hitRotate(f)!==null&&Cp(u,s.pointerId)){s.preventDefault();return}if(te().length>1){let O=G.hitRing(f);if(O!==null&&Op(O,u,s.pointerId)){s.preventDefault();return}let F=G.hitSpacer(f);if(F!==null&&Mp(F,u,s.pointerId)){s.preventDefault();return}}let C=Wn(u);if(C===null){s.preventDefault(),Ke(s.pointerId),b=null,s.shiftKey||le([]),Fe({kind:"marquee",pointerId:s.pointerId,origin:u,current:u});return}b!==null&&!De(r.root,C).includes(b)&&(b=null),s.shiftKey?le(n.includes(C)?n.filter(O=>O!==C):[...n,C]):n.includes(C)||le([C]),Md(u,s.pointerId,s.altKey)&&s.preventDefault()};function Md(s,f,u){let p=r,m=[];if(u){let v=Xd({x:0,y:0});v&&(m=v.ops,r=ve(r,m).document,A.update(r),le(v.ids))}let g=new Map;for(let v of te())for(let C of rr(v,r)){let O=yt(C);O&&g.set(C,O)}return g.size===0?(r=p,A.update(r),!1):(Ke(f),Fe({kind:"move",pointerId:f,origin:s,frames:g,bounds:Qe(te().flatMap(v=>Ee(v)??[]))},m,p),!0)}let $d=s=>{let f=A.pointerPoint(s);if(W=A.screenToDocument(f),tt&&I){let p=$a(W);p&&I.pointTo(p,!0);return}if(X&&o==="pen"){Gp(s,W);return}if(!T){eh(f);return}if(T.pointerId!==s.pointerId)return;let u=W;if(!Vp(s,z?qr(z.id,u):u))switch(T.kind){case"move":{let p=u.x-T.origin.x,m=u.y-T.origin.y;if(T.bounds){let v={...T.bounds,x:T.bounds.x+p,y:T.bounds.y+m};U=bl(v,S,Kr(s)),p+=U.dx,m+=U.dy}let g=[];for(let[v,C]of T.frames)g.push({nodeId:v,prop:"x",from:C.x,to:C.x+p}),g.push({nodeId:v,prop:"y",from:C.y,to:C.y+m});Bt(g);return}case"resize":{let{id:p,handle:m,frame:g,origin:v,offset:C,rotation:O}=T,F=u.x-v.x,j=u.y-v.y;if(O!==0){U=ze;let Z=Mu(g,m,F,j,O);Bt(Vo(g,Z).map(ge=>({nodeId:p,prop:ge,from:g[ge],to:Z[ge]})));return}let K=ht(g,m,F,j);U=ra({...K,x:K.x+C.x,y:K.y+C.y},m,S,Kr(s)),F+=U.dx,j+=U.dy;let ae=ht(g,m,F,j);Bt(Vo(g,ae).map(Z=>({nodeId:p,prop:Z,from:g[Z],to:ae[Z]})));return}case"scale":{let{handle:p,bounds:m,origin:g,frames:v,offsets:C}=T,O=u.x-g.x,F=u.y-g.y,j=ht(m,p,O,F);U=ra(j,p,S,Kr(s)),O+=U.dx,F+=U.dy,Bt(wd({bounds:m,frames:v,offsets:C},ht(m,p,O,F)));return}case"space":$p(T,u);return;case"reorder":Dp(T,u,s.metaKey||s.ctrlKey);return;case"rotate":{let{centre:p,origin:m,targets:g}=T,v=g[0],C=$u(p,m,u,v?.rotation??0,s.shiftKey?Jg:void 0);$=gn((v?.rotation??0)+C);let O=[],F=g.length===1;for(let j of Tu(g,p,C)){let K=g.find(ae=>ae.id===j.id);K&&(O.push({nodeId:j.id,prop:"rotation",from:K.rotation,to:j.rotation}),!F&&O.push({nodeId:j.id,prop:"x",from:K.frame.x-K.offset.x,to:re(j.frame.x-K.offset.x)},{nodeId:j.id,prop:"y",from:K.frame.y-K.offset.y,to:re(j.frame.y-K.offset.y)}))}Bt(O);return}case"adjust":{let p=T.adjuster.valueAt(T.frame,T.handleId,u);w=p,Bt([{nodeId:T.id,prop:T.adjuster.prop,from:T.from,to:p}]);return}case"create":{U=wl(u,S,Kr(s));let p={x:u.x+U.dx,y:u.y+U.dy};T.current=s.shiftKey&&o!=="text"?ey(T.origin,p):p,Y();return}case"marquee":{T.current=u,Y();return}}},to=s=>{if(tt){tt=!1,Ka(s.pointerId),ie.focus({preventScroll:!0});return}if(X){Wp(s);return}if(!T||T.pointerId!==s.pointerId)return;Ka(s.pointerId);let f=A.screenToDocument(A.pointerPoint(s));if(!zp(z?qr(z.id,f):f))switch(T.kind){case"create":{let u=tr(T.origin,T.current),p=o==="text"?"text":o==="frame"?"frame":o==="ellipse"?"ellipse":"rect";T=null,U=ze,Y();let m=u.w<Pt||u.h<Pt;if(m&&p!=="text")return;let g=m?{x:u.x,y:u.y,w:Nc.w,h:Nc.h}:u,v=Gn({x:g.x,y:g.y})??b??r.root.id,C=V(r.root,v)??r.root,O=It(v),F={x:Math.round(g.x-O.x),y:Math.round(g.y-O.y),w:Math.round(g.w),h:Math.round(g.h)},j=Kt(r.root,p);ue([{op:"insert",parent:v,index:de(C).length,node:p==="text"?Qa({...F,id:j,content:""}):p==="frame"?Xa({...F,id:j,background:Yg,children:[]}):p==="ellipse"?Wa({...F,id:j,fill:t.defaultFill??"#3b82f6"}):Za({...F,id:j,fill:t.defaultFill??"#3b82f6"})}],Qg[p]),le([j]),wt("select"),p==="text"&&jr(j);return}case"marquee":{let u=tr(T.origin,T.current),p=s.shiftKey;if(T=null,U=ze,u.w>=Pt||u.h>=Pt){let m=vh(u);le(p?[...new Set([...n,...m])]:m)}Y();return}case"move":{let u=Ip();u.length>0&&(Q=[...Q,...u]),vt(we.length>0?"Duplicate":"Move");return}case"resize":vt("Resize");return;case"scale":vt(n.length===1?"Resize group":`Resize ${n.length} elements`);return;case"space":vt("Spacing");return;case"reorder":vt(T.swap?"Swap":"Reorder");return;case"adjust":vt("Corner radius");return;case"rotate":vt("Rotate");return}},Td=s=>{if(ka(s.target))return;if(I){if(!((s.metaKey||s.ctrlKey)&&s.key.toLowerCase()==="z"))return;s.preventDefault(),I.breakBurst(),s.shiftKey?ao():Zr();return}if(X&&(s.key==="Enter"||s.key==="Escape")){s.preventDefault(),eo();return}if(qp(s))return;if((s.metaKey||s.ctrlKey)&&s.shiftKey&&s.code==="KeyO"){if(Cd()===0)return;s.preventDefault(),Na();return}if(s.key==="Enter"&&!Ic(s)&&n.length===1){let p=n[0];if(V(r.root,p)?.type==="vector"&&Ht(p)){s.preventDefault();return}}if(s.key==="Enter"&&!Ic(s)&&n.length===1){let p=n[0];if(V(r.root,p)?.type==="text"){s.preventDefault(),jr(p);return}}if(s.code==="Space"&&!x){x=!0,Le($e("grab"));return}let f=s.metaKey||s.ctrlKey;if(f&&s.key.toLowerCase()==="z"){s.preventDefault(),s.shiftKey?ao():Zr();return}if(f&&s.shiftKey&&!s.altKey&&s.code==="KeyL"){if(!P.lock||n.length===0)return;s.preventDefault(),ur(n,"locked");return}if(f&&s.shiftKey&&!s.altKey&&s.code==="KeyH"){if(!P.hide||n.length===0)return;s.preventDefault(),ur(n,"hidden");return}if(f&&s.key.toLowerCase()==="g"){s.preventDefault(),s.shiftKey?Va():Ua();return}if(f&&s.key.toLowerCase()==="a"){s.preventDefault(),qa();return}if(f&&!s.altKey&&s.key.toLowerCase()==="d"){s.preventDefault(),Ba();return}if(s.altKey){let p=ty[s.code];if(p&&!f){s.preventDefault(),jd(p);return}let m=ry[s.code];if(m&&s.ctrlKey){s.preventDefault(),Gd(m);return}}if(s.key==="]"||s.key==="["){if(n.length===0)return;s.preventDefault();let p=s.key==="]";za(f?p?"front":"back":p?"forward":"backward");return}if(s.key==="Escape"){T?Pa():b!==null?tf():le([]);return}if(s.key==="Delete"||s.key==="Backspace"){if(n.length===0)return;s.preventDefault(),cr();return}let u=f||s.altKey?void 0:Zl[s.key.toLowerCase()];u&&wt(u)};function Ld(){if(!I)return null;let s=V(r.root,I.id);if(s?.type!=="text")return null;let{anchor:f,head:u}=I.getSelection();return f===u?null:sr(zl(s.content,f,u))}let Od=s=>{if(ka(s.target))return;let f=Ld()??Jr();f!==null&&(s.preventDefault(),s.clipboardData?.setData("text/plain",f))},Dd=s=>{if(ka(s.target))return;let f=Ld();if(f!==null&&I){s.preventDefault(),s.clipboardData?.setData("text/plain",f);let{anchor:p,head:m}=I.getSelection();I.breakBurst(),I.setSelection(p,m),I.handleInput({inputType:"deleteByCut",data:null});return}let u=Jr();u!==null&&(s.preventDefault(),s.clipboardData?.setData("text/plain",u),cr())},Pd=s=>{if(ka(s.target))return;s.preventDefault();let f=yi(s.clipboardData);if(f&&!I){let p=dh();p?Fa(p,f):Jd(f,W??void 0);return}let u=s.clipboardData?.getData("text/plain")||void 0;if(I&&u!==void 0){I.handleInput({inputType:"insertFromPaste",data:u});return}Ia(u)},Nd=s=>{s.code==="Space"&&(x=!1,Le($e(Ma())))},Rd=s=>{if(!me)return;s.preventDefault(),T&&Pa();let f=A.pointerPoint(s),u=A.screenToDocument(f),p=Wn(u),m=Jp(u),g=A.hitTest(u),v=g!==null&&n.some(O=>De(r.root,g).includes(O));p===null?v||le([]):n.includes(p)||le([p]);let C=(t.menuExtras?.(n)??[]).map(O=>"separator"in O?O:{...O,id:`${ed}${O.id}`});me.open(f,El(Zp(m),C))};function Jp(s){let{locked:f}=Re(),u=[];for(let p of[...A.getScene().items].reverse()){if(!f.has(p.id)||!A.hitTest(s,g=>g===p.id))continue;let m=en(r.root,p.id,"locked");m!==void 0&&!u.includes(m)&&u.push(m)}return u}function Zp(s=[]){let f=n.length===1?V(r.root,n[0]):void 0,u=[];if(f){let p=f;for(let m of rt(f)){let g=p[m];g===void 0||!pe(g)||To(g).kind!=="literal"&&u.push({prop:m,source:`=${g.expr}`})}}return{count:n.length,hasGroup:n.some(p=>{let m=V(r.root,p);return m!==void 0&&Se(m)}),canPaste:td!==null,isText:n.length===1&&V(r.root,n[0])?.type==="text",isVector:te().length===1&&V(r.root,te()[0])?.type==="vector",convertible:Cd(),bound:u,lock:P.lock?n.every(p=>Re().locked.has(p))?"unlock":"lock":null,hide:P.hide?n.every(p=>Re().hidden.has(p))?"show":"hide":null,locksHere:s,anyLocked:ja("locked").length>0,hiddenCount:ja("hidden").length}}function Qp(s){if(e.focus({preventScroll:!0}),s.startsWith(ed)){t.onMenuCommand?.(s.slice(ed.length),[...n]);return}if(s.startsWith("unlock:")){fr([s.slice(7)],"locked",!1);return}if(s.startsWith("detach:")){let f=s.slice(7),u=n[0];u!==void 0&&of(u,f);return}switch(s){case"copy":Jr();return;case"cut":Yd();return;case"editText":{let f=n[0];f!==void 0&&jr(f);return}case"editPoints":{let f=n[0];f!==void 0&&Ht(f);return}case"toVector":return Na();case"duplicate":return Ba();case"paste":return Ia();case"group":return Ua();case"ungroup":return Va();case"front":case"forward":case"backward":case"back":return za(s);case"delete":return cr();case"selectAll":return qa();case"toggleLock":return ur(n,"locked");case"toggleHidden":return ur(n,"hidden");case"unlockAll":return oo("locked");case"showAll":return oo("hidden");case"fit":return A.fitToContent();case"zoom100":return A.setCamera({...A.getCamera(),zoom:1})}}let Id=s=>{if(o!=="select"||x||z)return;let f=A.screenToDocument(A.pointerPoint(s)),u=A.hitTest(f,C=>!Re().locked.has(C));if(u===null)return;let p=no().find(C=>C.id===u);if(p){s.preventDefault(),fh(p);return}let m=V(r.root,u);if(m?.type==="text"){s.preventDefault(),jr(u,f);return}if(m?.type==="vector"){s.preventDefault(),Ht(u);return}let g=De(r.root,u),v=b===null?1:g.indexOf(b)+1;for(let C=Math.max(v,1);C<g.length;C+=1){let O=g[C];if(O===void 0)break;let F=V(r.root,O);if(!(!F||!Se(F))){s.preventDefault(),ef(O),le([g[C+1]??O]);return}}},Fd=s=>Array.from(s.dataTransfer?.types??[]).includes("Files"),Bd=s=>{if(!Fd(s)||!t.importImage)return;s.preventDefault(),s.dataTransfer&&(s.dataTransfer.dropEffect="copy");let f=A.screenToDocument(A.pointerPoint(s)),u=Zd(f)?.id??null;u!==c&&(c=u,Y())},Hd=s=>{s.relatedTarget instanceof Node&&e.contains(s.relatedTarget)||c!==null&&(c=null,Y())},Ud=s=>{if(!Fd(s)||!t.importImage)return;s.preventDefault();let f=A.screenToDocument(A.pointerPoint(s)),u=Zd(f);c=null,Y();let p=Array.from(s.dataTransfer?.files??[]).find(m=>m.type.startsWith("image/"));p&&(u?Fa(u,p):Jd(p,f))},Vd=()=>{W=null,l=null,!T&&(a===null&&H===null&&q===null||(a=null,H=null,q=null,Y()))};function zd(){let s=te().length===1?te()[0]:void 0,f=s===void 0?void 0:V(r.root,s);return s!==void 0&&f&&!ce(f)?Rt(s):0}function eh(s){if(x){Le($e("grab"));return}if(z){je(null),Le($e("arrow"));return}if(o!=="select"){je(null),Ra(null),ro(null),Le($e(o==="text"?"text":"crosshair"));return}let f=te().length===1?te()[0]:null;if(f!==null){let g=G.hitAdjuster(s);if(g){let v=V(r.root,f),C=v?Xo(v,g.id):void 0;je(null),Ra(C?{id:g.id,prop:C.prop}:null),Le($e("radius",{badge:C?Aa(f,[C.prop]):"none"}));return}Ra(null)}if(te().length>0){let g=G.hitHandle(s);if(g){je(null);let O=Uo(g.handle);Le($e("resize",{angle:fi(g.handle)+zd(),badge:hd(zr(),O)}));return}let v=G.hitPageLabel(s);if(v!==null){je(v),Le($e("arrow"));return}let C=G.hitRotate(s);if(C!==null){je(null),Le($e("rotate",{angle:Zg[C]+zd()}));return}}let u=G.hitPageLabel(s);if(u!==null){l=null,je(u),Le($e("arrow"));return}if(te().length>1){if(G.hitRing(s)!==null){je(null),ro(null),Le($e("grab"));return}let v=G.hitSpacer(s),C=v===null?null:ca(v);if(v!==null&&C){je(null),ro(v),Le($e("resize",{angle:C.axis==="x"?0:90,badge:hd(zr(),[C.axis])}));return}ro(null)}let p=A.screenToDocument(s),m=Wn(p);l=th(p,m),je(m),Y(),Le($e("arrow",{badge:m===null?"none":Aa(m,["x","y"])}))}function th(s,f){let u=A.hitTest(s);if(u===null||!Re().locked.has(u))return null;let p=en(r.root,u,"locked");return p===void 0?null:f===null||De(r.root,p).includes(f)?p:null}function je(s){a!==s&&(a=s,Y())}function Ra(s){H?.id!==s?.id&&(H=s,Y())}function ro(s){q!==s&&(q=s,Y())}function Le(s){e.style.cursor!==s&&(e.style.cursor=s)}function wt(s){o!==s&&(o=s,X&&s!=="pen"&&eo(),s!=="select"&&Wr(),se?.setTool(o),s!=="select"&&je(null),Le($e(Ma())),Ye("tool",o))}function rh(s){if(s.length===0)return null;if(s.length>1)return Qe(s.map(p=>p.frame))??null;let f=s[0],u=nt(r.root,f.id);return u?nr(u.id,r,A.getResolution())??null:null}function qd(s,f,u){let p=Fr(r,Da(Xn(n),s,f));p.length!==0&&ue([...p,...Br(r,p,Er(r),Ae(r))],u)}function jd(s){let f=Nn(r,n,A.getResolution()),u=rh(f);u&&qd(Wo(s),vi(f,u,s),ny[s])}function Kd(s){let f=Nn(r,n,A.getResolution());if(f.length<3)return null;let u=Il(f,s),p=Fl(u);return p===null?null:{gap:p,series:u}}function Gd(s){let f=Kd(s);f&&qd(s,ha(f.series,f.gap),s==="x"?"Distribute horizontally":"Distribute vertically")}function nh(){let s=Pn(r,n);if(s.length===0)return null;let f=A.getResolution(),u={};for(let p of s)oe(p,m=>{let g=f.nodes.get(m.id)?.values;g&&(u[m.id]=g)});return{nodes:s,tokens:r.tokens,fonts:r.fonts,resolved:u}}function oh(s){return new Map(Object.entries(s.resolved))}function ah(s){let f=Object.entries(s.tokens).filter(([u])=>r.tokens[u]===void 0).map(([u,p])=>({op:"setToken",name:u,value:p}));for(let[u,p]of Object.entries(s.fonts))r.fonts[u]===void 0&&f.push({op:"setFont",name:u,family:p});return f}function Wd(s,f,u){let{nodes:p,remap:m}=cl(s,r);if(p.length===0)return null;let g=ah(s),v=g.length>0?ve(r,g).document:r;p.forEach((F,j)=>{let K=s.nodes[j];if(!K)return;let ae=f(K,j,v),Z={op:"insert",parent:ae.parent,index:ae.index,node:F};g.push(Z),v=ve(v,[Z]).document});let C=Ql(v,m,oh(s),u);C.length>0&&(v=ve(v,C).document);let O=sh(p);return{ops:[...g,...C,...Hr(r,v)],ids:[...m.values()].filter(F=>O.has(F))}}function sh(s){let f=new Set;for(let u of s)f.add(u.id);return f}function Xd(s){let f=nh();return f?Wd(f,(u,p,m)=>{let g=nt(m.root,u.id)??m.root,v=de(g).findIndex(C=>C.id===u.id);return{parent:g.id,index:v===-1?de(g).length:v+1}},s):null}function Jr(){let s=fl(r,n,A.getResolution());return s!==null&&(td=s),s}function Yd(){let s=Jr();return s!==null&&cr(),s}function ih(s){let f=[];for(let u of s.nodes){let p=s.resolved[u.id];if(!p)continue;let{x:m,y:g,w:v,h:C}=p;m===void 0||g===void 0||v===void 0||C===void 0||f.push({x:m,y:g,w:v,h:C})}return Qe(f)??null}function Ia(s,f){let u=ul(s??td??"");if(!u)return;let p=f??W,m=ih(u),g=p&&m?{x:p.x-(m.x+m.w/2),y:p.y-(m.y+m.h/2)}:{x:wa,y:wa},v=b??r.root.id,C=Wd(u,(O,F,j)=>({parent:v,index:de(V(j.root,v)??j.root).length}),g);C&&(ue(C.ops,C.ids.length===1?"Paste":`Paste ${C.ids.length} elements`),le(C.ids))}async function Jd(s,f){let u=t.importImage;if(!u)return;let p=await Go(s,t.maxImageEdge??2560);if(!p)return;let m=await u(new File([p.bytes],s.name,{type:p.type}));if(!m)return;let g=(f?Gn(f):void 0)??b??r.root.id,v=V(r.root,g)??r.root,C=It(g),O=A.getResolution().nodes.get(g),{w:F,h:j}=Fu(p.width,p.height,O?.w&&O.w>0?O.w:p.width,O?.h&&O.h>0?O.h:p.height),K=f??W,ae=Math.round((K?K.x-F/2:C.x)-C.x),Z=Math.round((K?K.y-j/2:C.y)-C.y),ge=uh(r,s.name),kt=Kt(r.root,"image");ue([{op:"setAsset",name:ge,value:m},{op:"insert",parent:g,index:de(v).length,node:Ja({id:kt,x:ae,y:Z,w:F,h:j,src:ge,fit:"cover"})}],"Place image"),le([kt])}function no(){return t.importImage?wc(r,Re().hidden):[]}function lh(){return no().flatMap(s=>{let f=Ee(s.id);return f?[{frame:f,label:s.label,target:s.id===c}]:[]})}function Zd(s){return no().filter(u=>{let p=Ee(u.id);return p!==void 0&&et(p,s.x,s.y)}).at(-1)??null}function dh(){return n.length!==1?null:no().find(s=>s.id===n[0])??null}async function Fa(s,f){let u=t.importImage;if(!u)return;let p=await Go(f,t.maxImageEdge??2560);if(!p)return;let m=await u(new File([p.bytes],f.name,{type:p.type}));!m||r.assets[s.src]!==void 0||(ue([{op:"setAsset",name:s.src,value:m}],"Add image"),le([s.id]))}function fh(s){let f=e.ownerDocument.createElement("input");f.type="file",f.accept="image/*",f.addEventListener("change",()=>{let u=f.files?.[0];u&&Fa(s,u)}),f.click()}function uh(s,f){let u=f.replace(/\.[^.]+$/,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"image";if(s.assets[u]===void 0)return u;for(let p=2;;p+=1){let m=`${u}-${p}`;if(s.assets[m]===void 0)return m}}function Ba(){let s=Xd({x:wa,y:wa});s&&(ue(s.ops,s.ids.length===1?"Duplicate":`Duplicate ${s.ids.length} elements`),le(s.ids))}function Ha(s,f){if(s.length===0)return;let u=ve(r,s).document;ue([...s,...Hr(r,u)],f)}function Ua(){let s=hl(r,n);s&&(Ha(s.ops,"Group"),le([s.groupId]))}function Va(){let s=n.filter(m=>{let g=V(r.root,m);return g!==void 0&&Se(g)});if(s.length===0)return;let f=r,u=[],p=[];for(let m of s){let g=V(f.root,m);g&&p.push(...de(g).map(C=>C.id));let v=ml(f,m);v.length!==0&&(u.push(...v),f=ve(f,v).document)}b!==null&&s.includes(b)&&(b=null),Ha(u,s.length===1?"Ungroup":`Ungroup ${s.length} groups`),le(p)}function za(s){Ha(xl(r,n,s),sy[s])}function ch(s,f,u){let p=V(r.root,f);if(!p||!ce(p))return;let m=new Set(De(r.root,f)),g=s.filter(K=>K!==r.root.id&&V(r.root,K)&&!m.has(K));if(g.length===0)return;let v=[],C=r;if(g.forEach((K,ae)=>{let Z={op:"move",id:K,parent:f,index:u+ae};v.push(Z),C=ve(C,[Z]).document}),g.every(K=>ph(r,C,K)))return;let O=new Set(g.flatMap(K=>Sd(K,C))),F=[];for(let K of g){let ae=Qd(r,K),Z=Qd(C,K),ge={x:ae.x-Z.x,y:ae.y-Z.y};if(!(ge.x===0&&ge.y===0))for(let kt of rr(K,C)){let Qr=yt(kt);Qr&&(F.push({op:"set",id:kt,prop:"x",value:re(Qr.x+ge.x)}),F.push({op:"set",id:kt,prop:"y",value:re(Qr.y+ge.y)}))}}let j=ve(C,F).document;ue([...v,...F,...Hr(r,j,O)],g.length===1?`Move ${g[0]}`:`Move ${g.length} layers`)}function ph(s,f,u){let p=nt(s.root,u),m=nt(f.root,u);return p?.id===m?.id&&p?.children.findIndex(g=>g.id===u)===m?.children.findIndex(g=>g.id===u)}function Qd(s,f){let u=De(s.root,f).slice(0,-1).reverse(),p=Ae(s);for(let m of u){let g=V(s.root,m);if(!g||Se(g))continue;let v=p.nodes.get(m);return v?{x:v.absX,y:v.absY}:{x:0,y:0}}return{x:0,y:0}}function ef(s){let f=V(r.root,s);!f||!Se(f)||(b=s,Y())}function tf(){if(b===null)return;let s=b;b=De(r.root,s).slice(0,-1).reverse().find(u=>{let p=V(r.root,u);return p!==void 0&&Se(p)})??null,le([s])}function qa(){let s=V(r.root,b??r.root.id)??r.root;le(de(s).map(f=>f.id).filter(Ft))}let hh={locked:["Lock","Unlock"],hidden:["Hide","Show"]};function rf(s){return s==="locked"?Re().locked:Re().hidden}function fr(s,f,u){let p=s.filter(v=>v!==r.root.id&&V(r.root,v)),m=u?p.filter(v=>!rf(f).has(v)):[...new Set(p.flatMap(v=>{let C=en(r.root,v,f);return C===void 0?[]:[C]}))];if(m.length===0)return;let g=hh[f][u?0:1];ue(m.map(v=>({op:"set",id:v,prop:f,value:u?!0:void 0})),m.length===1?`${g} ${m[0]}`:`${g} ${m.length} layers`)}function ur(s,f){s.length!==0&&fr(s,f,!s.every(u=>rf(f).has(u)))}function ja(s){let f=[];return oe(r.root,u=>{u[s]===!0&&f.push(u.id)}),f}function oo(s){let f=ja(s);if(f.length===0)return;let u=s==="locked"?"Unlock all":"Show all";ue(f.map(p=>({op:"set",id:p,prop:s,value:void 0})),u)}function mh(s){P={...Rc,...s},me?.close()}function cr(){let s=n.filter(u=>u!==r.root.id).map(u=>({op:"remove",id:u}));if(s.length===0)return;let f=s.length;le([]),ue(s,f===1?"Delete element":`Delete ${f} elements`)}function Zr(){Ie=null;let s=_.undo();s&&md(s.ops,`Undo ${s.entry.label}`)}function ao(){Ie=null;let s=_.redo();s&&md(s.ops,`Redo ${s.entry.label}`)}function xh(s){if(!_.isTail(s))return!1;for(let f=s.length;f>0;f-=1)Zr();return!0}function nf(s,f,u,p){let m=V(r.root,s);if(!m)return;let g=m[f];ly(g,u)||ue([{op:"set",id:s,prop:f,value:u}],p??`Set ${f}`)}function gh(s,f){r.tokens[s]!==f&&ue([{op:"setToken",name:s,value:f}],`Set $${s}`)}function yh(s){s in r.tokens&&ue([{op:"setToken",name:s,value:void 0}],`Remove $${s}`)}function of(s,f){let u=lt(s)?.values[f];u!==void 0&&ue([{op:"set",id:s,prop:f,value:re(u)}],`Detach ${f}`)}function vh(s){let f=V(r.root,b??r.root.id)??r.root,u=[];for(let p of de(f)){if(!Ft(p.id))continue;let m=Ee(p.id);m&&ui(m,s)&&u.push(p.id)}return u}function Ke(s){typeof e.setPointerCapture=="function"&&e.setPointerCapture(s)}function Ka(s){e.hasPointerCapture?.(s)&&e.releasePointerCapture(s)}let af=s=>{I&&(vd(),I.handleKey(s)&&(s.preventDefault(),s.stopPropagation()))},sf=s=>{I&&(s.preventDefault(),vd(),I.handleInput(s))},lf=()=>I?.handleCompositionStart(),df=s=>I?.handleCompositionUpdate(s.data??""),ff=s=>I?.handleCompositionEnd(s.data??""),uf=s=>{if(!e.ownerDocument.hasFocus())return;let f=s.relatedTarget;f instanceof Element&&f.closest("[data-vd-keeps-text]")||lr("blur")};return ie.addEventListener("keydown",af),ie.addEventListener("beforeinput",sf),ie.addEventListener("compositionstart",lf),ie.addEventListener("compositionupdate",df),ie.addEventListener("compositionend",ff),ie.addEventListener("blur",uf),e.addEventListener("pointerdown",Ad),e.addEventListener("pointermove",$d),e.addEventListener("pointerup",to),e.addEventListener("pointercancel",to),e.addEventListener("pointerup",Kn),e.addEventListener("pointercancel",Kn),e.addEventListener("pointerleave",Vd),e.addEventListener("dblclick",Id),e.addEventListener("contextmenu",Rd),e.addEventListener("keydown",Td),e.addEventListener("keyup",Nd),e.addEventListener("copy",Od),e.addEventListener("cut",Dd),e.addEventListener("paste",Pd),e.addEventListener("dragover",Bd),e.addEventListener("dragleave",Hd),e.addEventListener("drop",Ud),y=!0,se?.setTool(o),se?.setHistory(!1,!1),se?.setZoom(A.getCamera().zoom),Le($e(Ma())),t.autoFit&&!t.camera&&jn(()=>A.fitToContent()),t.history&&(_.restore(t.history),se?.setHistory(_.canUndo,_.canRedo)),t.selection&&t.selection.length>0&&le(t.selection),Y(),{element:e,viewer:A,getDocument:()=>r,update(s){r=s,A.update(r),le(n),Y(),Ye("problems",A.getScene().problems)},applyOps:(s,f)=>ue(s,f??"Apply changes"),setDocument:(s,f)=>ue(cs(r,ii(s,r.root.id)),f??"Replace document"),getSelection:()=>n,setSelection:le,selectAll:qa,deleteSelection:cr,lock:s=>fr(s??n,"locked",!0),unlock:s=>fr(s??n,"locked",!1),toggleLock:s=>ur(s??n,"locked"),unlockAll:()=>oo("locked"),hide:s=>fr(s??n,"hidden",!0),show:s=>fr(s??n,"hidden",!1),toggleHidden:s=>ur(s??n,"hidden"),showAll:()=>oo("hidden"),isLocked:s=>Re().locked.has(s),isHidden:s=>Re().hidden.has(s),setFeatures:mh,getFeatures:()=>P,moveLayers:ch,copy:Jr,cut:Yd,paste:Ia,duplicate:Ba,group:Ua,ungroup:Va,reorder:za,scaleSelection:Ap,getSpacing:Lp,setSpacing:Tp,align:jd,distribute:Gd,canDistribute:s=>Kd(s)!==null,editText:jr,endTextEditing:()=>lr("done"),getEditingText:()=>I?.id??null,formatText:s=>I?.format(s),getTextFormat:()=>I?.activeMark()??{},getTextSelectionRects:gd,getTextRange:()=>{if(!I)return null;let{anchor:s,head:f}=I.getSelection();return{from:Math.min(s,f),to:Math.max(s,f)}},getEnteredGroup:()=>b,enterGroup:ef,exitGroup:tf,getTool:()=>o,editPoints:Ht,stopEditingPoints:Wr,getPointEditing:()=>z?.id??null,convertToVector:s=>Na(s),setTool:wt,beginEdit:pp,endEdit:hp,undo:Zr,redo:ao,canUndo:()=>_.canUndo,canRedo:()=>_.canRedo,getHistory:()=>_.snapshot(),setProperty:nf,fontFamilies:()=>{let s=new Map;for(let f of t.fonts?.faces()??[]){let u=s.get(f.family)??{weights:new Set,italic:!1};u.weights.add(f.weight),f.style==="italic"?u.italic=!0:(u.css===void 0||f.weight===400)&&(u.css=f.id),s.set(f.family,u)}return[...s.entries()].sort(([f],[u])=>f.localeCompare(u)).map(([f,u])=>({family:f,weights:[...u.weights].sort((p,m)=>p-m),italic:u.italic,...u.css===void 0?{}:{css:u.css}}))},assetUrl:s=>{let f=r.assets[s];return f?t.resolveAsset?.(f,s):void 0},setToken:gh,removeToken:yh,bindingsOf:cp,unbind:of,getResolution:()=>A.getResolution(),getCamera:()=>A.getCamera(),getProblems:()=>A.getScene().problems,on:sp,reveal:Ea,panBy:dp,setPresence(s,f){d={ids:[...s],label:f??null},Y()},setHighlight(s){s.length===0&&h.length===0||(h=[...s],Y())},isHistoryTail:s=>_.isTail(s),undoTail:xh,historyTop:()=>_.top,destroy(){Ca(),e.removeEventListener("pointerup",Kn),e.removeEventListener("pointercancel",Kn),e.removeEventListener("pointerdown",Ad),e.removeEventListener("pointermove",$d),e.removeEventListener("pointerup",to),e.removeEventListener("pointercancel",to),e.removeEventListener("pointerleave",Vd),ie.removeEventListener("keydown",af),ie.removeEventListener("beforeinput",sf),ie.removeEventListener("compositionstart",lf),ie.removeEventListener("compositionupdate",df),ie.removeEventListener("compositionend",ff),ie.removeEventListener("blur",uf),ie.remove(),dr&&clearTimeout(dr),e.removeEventListener("dblclick",Id),e.removeEventListener("contextmenu",Rd),e.removeEventListener("copy",Od),e.removeEventListener("cut",Dd),e.removeEventListener("paste",Pd),e.removeEventListener("dragover",Bd),e.removeEventListener("dragleave",Hd),e.removeEventListener("drop",Ud),e.removeEventListener("keydown",Td),e.removeEventListener("keyup",Nd),me?.destroy(),se?.destroy(),G.destroy(),A.destroy(),N.remove(),D.clear(),e.style.cursor="",e.classList.remove("vd-editor")}}}function ly(e,t){return e===t?!0:pe(e)&&pe(t)?e.expr===t.expr:!1}function Ic(e){return e.metaKey||e.ctrlKey||e.altKey}function ka(e){if(!(e instanceof HTMLElement)||e.classList.contains("vd-editor__input"))return!1;let t=e.tagName;return t==="INPUT"||t==="TEXTAREA"||e.isContentEditable}var e_=new Set(Dt);function sd(e){return e.map(t=>({value:t,label:`${t.charAt(0).toUpperCase()}${t.slice(1)}`}))}var uy=[{value:"nonzero",label:"Non-zero"},{value:"evenodd",label:"Even-odd"}].filter(e=>Vt.includes(e.value)),cy=sd(zt),py=sd(Et),hy=sd(qt),my=[{value:"left",label:"Left",icon:Ne("text-left")},{value:"center",label:"Centre",icon:Ne("text-center")},{value:"right",label:"Right",icon:Ne("text-right")},{value:"justify",label:"Justify",icon:Ne("text-justify")}].filter(e=>_t.includes(e.value)),xy=[{value:"top",label:"Top",icon:Ne("text-top")},{value:"middle",label:"Middle",icon:Ne("text-middle")},{value:"bottom",label:"Bottom",icon:Ne("text-bottom")}].filter(e=>Ct.includes(e.value)),Uc={prop:"x",label:"X",kind:"number",prefix:"X"},Vc={prop:"y",label:"Y",kind:"number",prefix:"Y"},od={prop:"w",label:"W",kind:"number",prefix:"W"},ad={prop:"h",label:"H",kind:"number",prefix:"H"},gy={prop:"rotation",label:"Rotation",kind:"number",icon:"rotate",fallback:"0"},yy={prop:"opacity",label:"Opacity",kind:"number",icon:"opacity",percent:!0,fallback:"100%"},Bc={prop:"radius",label:"Radius",kind:"number",icon:"radius",span:"wide",fallback:"0"},zn={heading:"Position",props:[Uc,Vc,od,ad,gy,yy]},Sa={prop:"fill",label:"Fill",kind:"colour"},zc={prop:"stroke",label:"Stroke",kind:"colour",span:"half"},qc={prop:"strokeWidth",label:"Stroke width",kind:"number",prefix:"Width",fallback:"1"},jc={present:"stroke",empty:"No stroke",add:{stroke:"#000000",strokeWidth:1},clear:["stroke","strokeWidth","cap","join"]},Hc={heading:"Stroke",props:[zc,qc],optional:jc},t_={frame:[{heading:"Frame",props:[Uc,Vc,od,ad,{prop:"clip",label:"Clip content",kind:"toggle"}]},{heading:"Fill",props:[{prop:"background",label:"Fill",kind:"colour"}]}],canvas:[{heading:"Canvas",props:[od,ad,{prop:"background",label:"Fill",kind:"colour"}]}],text:[zn,{heading:"Text",props:[{prop:"font",label:"Font",kind:"font",fallback:"Default"},{prop:"weight",label:"Style",kind:"style",span:"half"},{prop:"size",label:"Size",kind:"number",icon:"font-size",fallback:"16"},{prop:"lineHeight",label:"Line height",kind:"number",icon:"line-height",fallback:"Auto"},{prop:"letterSpacing",label:"Letter spacing",kind:"number",icon:"letter-spacing",fallback:"0"},{prop:"align",label:"Align",kind:"segmented",options:my,span:"half"},{prop:"valign",label:"Vertical",kind:"segmented",options:xy,span:"half"}]},{heading:"Fill",props:[Sa]},{heading:"Link",props:[{prop:"content",label:"Link",kind:"link",icon:"link"}]}],rect:[{heading:"Position",props:[...zn.props,Bc]},{heading:"Fill",props:[Sa]},Hc],ellipse:[zn,{heading:"Fill",props:[Sa]},Hc],image:[{heading:"Position",props:[...zn.props,Bc]},{heading:"Image",props:[{prop:"fit",label:"Fit",kind:"select",options:py,prefix:"Fit"}]}],vector:[zn,{heading:"Fill",props:[{...Sa,span:"half"},{prop:"rule",label:"Fill rule",kind:"select",options:uy,prefix:"Rule",span:"half"}]},{heading:"Stroke",props:[zc,qc,{prop:"cap",label:"Cap",kind:"select",options:cy,prefix:"Cap",span:"half"},{prop:"join",label:"Join",kind:"select",options:hy,prefix:"Join",span:"half"}],optional:jc}]};var r_=Ut.map(e=>({value:e,label:e.split("-").map((t,r)=>r===0?t.charAt(0).toUpperCase()+t.slice(1):t).join(" ")}));function Kc(e){let t=e,r=new Map,n=typeof URL.createObjectURL=="function"&&typeof URL.revokeObjectURL=="function";return{resolve(o){let a=r.get(o.hash);if(a!==void 0)return a;let i=t.get(o.hash);if(i===void 0)return;if(!n)return _s(o.type,i);let l;try{l=Es(i)}catch{return}let d=URL.createObjectURL(new Blob([l],{type:o.type}));return r.set(o.hash,d),d},replace(o){t=o;for(let[a,i]of r)o.has(a)||(URL.revokeObjectURL(i),r.delete(a))},destroy(){for(let o of r.values())URL.revokeObjectURL(o);r.clear(),t=new Map}}}var id="0.1.2",Gc="https://cdn.jsdelivr.net/npm/@getv.design/embed@0.1.2/fonts/";var wy=Symbol.for(`vdesign.embed.documents@${id}`),Wc=globalThis[wy]??=new WeakMap,ky=/^Line (\d+): /;function fd(e){let t=ky.exec(e.message);return{...t?{line:Number(t[1])}:{},code:e.code,message:e.message,severity:e.severity}}function ld(e){if(typeof e!="string")return dd(So("").document,new Map,[{code:"not-text",message:`parse() takes .vd text, not ${e===null?"null":typeof e}.`,severity:"error"}]);let{head:t,blocks:r}=ws(e),n=So(t);return dd(n.document,r,n.problems.map(fd))}function dd(e,t,r){let n=Object.freeze({});return Wc.set(n,{document:e,blocks:t,problems:r}),{document:n,problems:r}}function Xc(e,t,r){return dd(e,t,[...r]).document}function _a(e){let t=Wc.get(e);if(!t)throw new TypeError("Not a vDesign document: pass .vd text or what parse() returned.");return t}async function Yc(e){if(typeof e=="string")return _a(ld(e).document);if(e instanceof URL){let t=await fetch(e);if(!t.ok)throw new Error(`Could not fetch ${e.href}: ${t.status}`);return _a(ld(await t.text()).document)}return Sy(e)?_a(ld(await e.text()).document):_a(e)}function Sy(e){let t=e;return typeof t.text=="function"&&typeof t.size=="number"}function Ur(e){return e.root.children.filter(t=>t.type==="frame"&&t.hidden!==!0)}function Jc(e,t){let r=Ur(e),n=typeof t=="number"?r[t]:r.find(o=>o.id===t);if(!n){let o=r.map(a=>a.id).join(", ")||"none";throw new RangeError(`No page ${JSON.stringify(t)} in this document; its pages: ${o}.`)}return n}var ud=["page","content","none"],Zc=24;function qn(e){let t=e.getBoundingClientRect();return{width:t.width,height:t.height}}function Qc(e,t){let r=t===void 0?void 0:e.itemOf(t);if(!(!r||r.w<=0||r.h<=0))return{x:r.x,y:r.y,width:r.w,height:r.h}}function ep(e,t,r,n){if(r==="none")return;let o=r==="page"?Qc(e,n):void 0;if(!o){e.fitToContent(Zc);return}let a=qn(t);e.setCamera(Mr(o,{width:a.width||o.width,height:a.height||o.height},Zc))}function tp(e,t,r){let n=e.getCamera(),o=qn(t),a={x:(o.width/2-n.x)/n.zoom,y:(o.height/2-n.y)/n.zoom},i;for(let l of Ur(e.getDocument())){let d=Qc(e,l.id);if(!d)continue;let c=Math.max(d.x-a.x,0,a.x-(d.x+d.width)),h=Math.max(d.y-a.y,0,a.y-(d.y+d.height)),x=Math.hypot(c,h);(!i||x<i.distance)&&(i={id:l.id,distance:x})}return i?.id??r}function rp(e,t,r){let n=e===void 0?t:String(e);if(n===void 0)return;let o;try{o=new URL(n,r??globalThis.location?.href)}catch{throw new TypeError(`fontBase must be a URL, or a path on this page; got ${n}.`)}return o.pathname.endsWith("/")||(o.pathname+="/"),o}var cd=Symbol.for("vdesign.embed.handover");function np(e){return e[cd]}var op=["exact","browser"],ap=["change"],_y=250;async function OC(e,t,r={}){let n=r.fit??"page";if(!ud.includes(n))throw new TypeError(`edit: fit must be one of ${ud.join(", ")}; got ${String(n)}.`);let o=r.fonts??"exact";if(!op.includes(o))throw new TypeError(`edit: fonts must be one of ${op.join(", ")}; got ${String(o)}.`);let a=o==="exact"?rp(r.fontBase,Gc,e.ownerDocument.baseURI):void 0,i=np(r),l=await Yc(t),d=i?.page!==void 0&&Ur(l.document).some(S=>S.id===i.page)?i.page:r.page===void 0?Ur(l.document)[0]?.id:Jc(l.document,r.page).id,c=i?.exact&&a?await Cy(a,l.document):void 0,h=e.ownerDocument,x=h.defaultView,y=new Map(l.blocks),b=Kc(y),P=h.createElement("div");P.className="vd-embed vd-embed--edit",P.style.position="relative",P.style.width="100%",P.style.height="100%",e.appendChild(P);let k=S=>{r.onLink?r.onLink(S):x?.open(S,"_blank","noopener,noreferrer")},_;try{_=nd(P,{document:l.document,chrome:r.toolbar??!0,interactive:r.interactive??!0,wheel:"modifier",resolveAsset:S=>b.resolve(S),importImage:he,onOpenLink:k,...r.surface?{surface:r.surface}:{},...i?{camera:i.camera}:{},...c?{fonts:c.library}:{}})}catch(S){throw P.remove(),b.destroy(),S}let B=new Set,R=!1,J=!1,E=0,D=i===void 0,N,A,G,se;function me(S){return G?.of!==S&&(G={of:S,text:ks(bs(S),y)}),G.text}async function he(S){if(R||!S.type.startsWith("image/"))return null;let U=new Uint8Array(await S.arrayBuffer()),W=await Ss(U);return R?null:(y.has(W)||y.set(W,Cs(U)),{type:S.type,hash:W,bytes:U.length})}function ke(){E+=1;try{ep(_.viewer,P,n,d)}finally{E-=1}}let we=_.on("navigate",()=>{E===0&&(D=!1)}),T=_.on("change",({document:S})=>{let U={text:()=>me(S)};for(let W of[...B])W(U);c&&L()}),Q=qn(P),w=x&&"ResizeObserver"in x?new x.ResizeObserver(()=>{let S=qn(P);S.width===Q.width&&S.height===Q.height||(Q=S,D&&ke())}):void 0;w?.observe(P),i||ke(),!c&&o==="exact"&&M();function $(){return A??=(async()=>{if(a)try{let{exactFontsAt:S}=await import("./chunks/fonts.js");return S(a)}catch{return}})(),A}async function M(){let S=await $();if(!(R||!S)){for(;;){let U=_.getDocument(),W=await S.ensure(U);if(R||W.length>0)return;if(_.getDocument()===U)break}c=S,_.viewer.setFonts(S.library)}}function L(){N!==void 0&&clearTimeout(N),N=setTimeout(()=>{N=void 0;let S=c;R||!S||S.ensure(_.getDocument()).then(U=>{R||c!==S||U.length===0||(c=void 0,_.viewer.setFonts(void 0))})},_y)}function H(){R||(R=!0,N!==void 0&&clearTimeout(N),T(),we(),w?.disconnect(),_.destroy(),b.destroy(),P.remove(),B.clear())}let q={getText:()=>me(_.getDocument()),getDocument(){let S=_.getDocument();return se?.of!==S&&(se={of:S,document:Xc(S,new Map(y),_.getProblems().map(fd))}),se.document},on(S,U){if(!ap.includes(S))throw new TypeError(`edit: on() takes one of ${ap.join(", ")}; got ${String(S)}.`);return B.add(U),()=>{B.delete(U)}},undo(){R||_.undo()},redo(){R||_.redo()},async view(){if(R)throw new Error("edit: this editor was destroyed.");if(J)throw new Error("edit: view() is already opening a view.");J=!0,P.inert=!0;try{_.endTextEditing();let{view:S}=await import("./view.js");if(R)throw new Error("edit: this editor was destroyed.");d=tp(_.viewer,P,d);let U={camera:_.viewer.getCamera(),page:d,exact:c!==void 0},W=_.getDocument(),I=await S(e,q.getDocument(),{...Ey(r),[cd]:U});if(R)throw I.destroy(),new Error("edit: this editor was destroyed.");let z=_.getDocument()===W?void 0:q.getDocument();return H(),z&&await I.load(z),I}finally{J=!1,P.inert=!1}},destroy:H};return q}async function Cy(e,t){try{let{exactFontsAt:r}=await import("./chunks/fonts.js"),n=r(e);return(await n.ensure(t)).length===0?n:void 0}catch{return}}function Ey(e){let{toolbar:t,...r}=e;return r}export{OC as edit,id as version};
2324
2470
  /*! Bundled license information:
2325
2471
 
2326
2472
  lucide/dist/esm/icons/a-large-small.mjs: