@getv.design/embed 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/edit.js CHANGED
@@ -1,47 +1,47 @@
1
- /*! @getv.design/embed v0.5.2. Free to use under the vDesign Embed Licence. © 2026 vDesign. https://getv.design/docs/licence/ */
2
- function wt(e){return{expr:e}}function ye(e){return typeof e=="object"&&e!==null&&typeof e.expr=="string"}var On=["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],dn=["left","center","right","justify"],ln=["top","middle","bottom"],un=["cover","contain","fill"],Tn=["nonzero","evenodd"],Ln=["butt","round","square"],Dn=["miter","round","bevel"],tp=["canvas","frame","group","instance"];function ks(e){return tp.includes(e)}function le(e){return ks(e.type)}function $e(e){return e.type==="group"}function te(e){return le(e)?e.children:[]}var np={canvas:["w","h"],ellipse:["x","y","w","h","rotation","strokeWidth","opacity"],frame:["x","y","w","h"],group:[],instance:["x","y","w","h"],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 Ct(e){return np[e.type]}function ne(e,t,n){if(t(e,n)!==!1&&le(e))for(let r of e.children)ne(r,t,e)}function F(e,t){let n;return ne(e,r=>{if(n)return!1;r.id===t&&(n=r)}),n}function Ue(e,t){let n;return ne(e,(r,o)=>{r.id===t&&o&&(n=o)}),n}function _s(e){return rp(e,"hidden")}function Ss(e){return rp(e,"locked")}function rp(e,t){let n=new Set,r=(o,s)=>{let i=s||o[t]===!0;i&&n.add(o.id);for(let d of te(o))r(d,i)};return r(e,!1),n}function no(e,t,n){let r,o=(s,i)=>{let d=i??(s[n]===!0?s.id:void 0);return s.id===t?(r=d,!0):te(s).some(l=>o(l,d))};return o(e,void 0),r}var Es=["light","dark"],Cs=["must","should"],Ms=["no-gradient","contrast","font-only","logo-min"];var op=["role","logo","rule","guide","review"];function As(e){return op.includes(e)}function $s(e="",t=1){return{slug:e,version:t,changes:[],sources:[],roles:{},logos:{},rules:{},guides:{},review:[]}}function Fa(e){let t=/^([a-z0-9][a-z0-9-]*)(?:@(\d+))?$/.exec(e);if(!t)return;let n=t[2]===void 0?1:Number(t[2]);if(!(!Number.isSafeInteger(n)||n<1))return{slug:t[1],version:n}}function Ba(e){return`${e.slug}@${e.version}`}function Pn(e){return Va(e,()=>{})??e}function Ha(e,t){return e===t?!0:e===void 0||t===void 0?!1:JSON.stringify(Pn(e))===JSON.stringify(Pn(t))}function Va(e,t){let n=ro(e),r=n?.version;if(!n||typeof n.slug!="string"||typeof r!="number"||!Number.isSafeInteger(r)||r<1){t('`brand` must be an object with a "slug" and a "version" counting from 1');return}let o=p=>{let m={};for(let[y,v]of Object.entries(ro(p)??{}))typeof v=="string"&&(m[y]=v);return m},s=(p,m)=>{let y={};for(let[v,C]of Object.entries(ro(p)??{})){let _=ro(C),g=_?m(_):void 0;g===void 0?t(`brand: could not read ${v}`):y[v]=g}return y},i=(p,m)=>{let y=[];for(let v of Array.isArray(p)?p:[]){let C=ro(v),_=C?m(C):void 0;_===void 0?t("brand: could not read a list entry"):y.push(_)}return y},d=p=>typeof p=="string"?p:void 0,l=p=>typeof p=="number"?p:void 0,f=(p,m)=>m===void 0?{}:{[p]:m};return{slug:n.slug,version:r,...f("id",d(n.id)),...f("theme",Es.includes(n.theme)?n.theme:void 0),...f("strict",n.strict===!0?!0:void 0),...f("summary",d(n.summary)),changes:i(n.changes,p=>{let m=l(p.version),y=d(p.note);if(!(m===void 0||y===void 0))return{version:m,note:y,...f("at",d(p.at))}}),sources:i(n.sources,p=>{let m=d(p.kind);return m===void 0?void 0:{kind:m,props:o(p.props)}}),roles:s(n.roles,p=>{let m=d(p.light);return m===void 0?void 0:{light:m,...f("dark",d(p.dark))}}),logos:s(n.logos,p=>{let m=d(p.asset);if(m!==void 0)return{asset:m,...f("min",l(p.min)),...f("clear",l(p.clear))}}),rules:s(n.rules,p=>{let m=p.level,y=d(p.text);if(!Cs.includes(m)||y===void 0)return;let v=o(p.params);return delete v.check,{level:m,text:y,...f("check",d(p.check)),...Object.keys(v).length===0?{}:{params:v}}}),guides:s(n.guides,p=>({entries:i(p.entries,gy)})),review:i(n.review,p=>{let m=d(p.target);if(m!==void 0)return{target:m,...f("from",d(p.from)),...f("note",d(p.note))}})}}function gy(e){let t=e.kind,n=e.text;if(t==="line"||t==="banned"||t==="avoid")return typeof n=="string"?{kind:t,text:n}:void 0;if(t==="rewrite"){let{from:r,to:o}=e;return typeof r=="string"&&typeof o=="string"?{kind:t,from:r,to:o}:void 0}if(t==="ref"||t==="approved"||t==="rejected"){let{asset:r,note:o}=e;return typeof r!="string"?void 0:{kind:t,asset:r,...typeof o=="string"?{note:o}:{}}}}function ro(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}var yy=8,vy=new Set(["type","id","children","component","overrides"]);function fn(e){return!vy.has(e)}function Mt(e,t){return`${e}.${t}`}function Ye(e){let t=new Map,n=r=>{if(r.type!=="instance"){r.type==="frame"&&r.component===!0&&t.set(r.id,r);for(let o of te(r))n(o)}};return n(e),t}function Ft(e,t){let n=[],r=o=>{if(o.type==="instance"){(t===void 0||o.component===t)&&n.push(o);return}for(let s of te(o))r(s)};return r(e),n}function At(e,t){let n,r=(o,s)=>{if(o.id===t)return s&&(n={instance:s,key:t.slice(s.id.length+1)}),!0;let i=s??(o.type==="instance"?o:void 0);return te(o).some(d=>r(d,i))};return r(e,void 0),n}function ja(e,t){let n,r=(o,s)=>{if(o.id===t)return n=s,!0;let i=o.type==="instance"?o:s;return te(o).some(d=>r(d,i))};return r(e,void 0),n}function Ka(e,t,n,r){let o=Ye(e).get(t.component),s=o?F(o,n):void 0;return s?s[r]:void 0}function Ga(e,t,n,r,o){let s={...e?.[t]};r===void 0||Ts(r,o)?delete s[n]:s[n]=r;let i={...e};return Object.keys(s).length===0?delete i[t]:i[t]=s,Object.keys(i).length===0?void 0:i}function Bt(e){let t=e;for(let n=0;n<yy;n+=1){let r=Ye(t),o=sp(t,r);if(o===t)return t;t=o}return t}var Ua=new WeakMap;function sp(e,t){if(e.type==="instance"){let o=t.get(e.component)??null;if(Ua.has(e)&&Ua.get(e)===o)return e;let s=ip(e,t,new Set),i=Ts(s,e.children)?e:{...e,children:s};return Ua.set(i,o),i}if(!le(e))return e;let n=!1,r=e.children.map(o=>{let s=sp(o,t);return s!==o&&(n=!0),s});return n?{...e,children:r}:e}function ip(e,t,n){let r=t.get(e.component);if(!r||n.has(r.id))return[];let o=new Set(n).add(r.id),s=r.children.map(i=>za(i,e.id,t,o));return by(s,e.id,e.overrides)}function za(e,t,n,r){let o=Mt(t,e.id);if(e.type==="instance"){let s={...e,id:o};return{...s,children:ip(s,n,r)}}if(e.type==="frame"){let s={...e};return delete s.component,{...s,id:o,children:e.children.map(i=>za(i,t,n,r))}}return le(e)?{...e,id:o,children:e.children.map(s=>za(s,t,n,r))}:{...e,id:o}}function by(e,t,n){if(n===void 0)return[...e];let r=new Map;for(let[s,i]of Object.entries(n))r.set(Mt(t,s),i);let o=s=>{let i=r.get(s.id),d=s;if(i){let l={...s};for(let[f,p]of Object.entries(i))fn(f)&&(l[f]=p);d=l}return le(d)?{...d,children:d.children.map(o)}:d};return e.map(o)}function oo(e){let t=[],n=Ye(e);for(let s of Ft(e)){let i=n.get(s.component);if(!i){t.push({severity:"error",code:"missing-component",message:`${s.id} places ${s.component}, which is not a component \u2014 mark a frame with component, or point component= at one`,nodeId:s.id});continue}if(Os(i,i.id,n,new Set)){t.push({severity:"error",code:"component-cycle",message:`${i.id} holds an instance of itself, so ${s.id} cannot be drawn`,nodeId:s.id});continue}for(let d of Object.keys(s.overrides??{}))F(s,Mt(s.id,d))||t.push({severity:"warning",code:"orphaned-override",message:`${s.id} overrides ${d}, which ${i.id} no longer has`,nodeId:s.id})}for(let[s]of n)e.type==="canvas"&&e.children.some(i=>i.id===s)||t.push({severity:"warning",code:"component-not-top-level",message:`${s} is a component inside another frame \u2014 keep components in the row below the pages, at the top level`,nodeId:s});let r=new Map,o=s=>{r.set(s.id,(r.get(s.id)??0)+1);for(let i of te(s))o(i)};o(e);for(let s of Ft(e))for(let i of s.children){let d=l=>{(r.get(l.id)??0)>1&&t.push({severity:"error",code:"duplicate-id",message:`${l.id} is both a node and a part of ${s.id} \u2014 rename one`,nodeId:l.id});for(let f of te(l))d(f)};d(i)}return t}function Os(e,t,n,r){return te(e).some(o=>{if(o.type==="instance"){if(o.component===t)return!0;if(r.has(o.component))return!1;r.add(o.component);let s=n.get(o.component);return s!==void 0&&Os(s,t,n,r)}return Os(o,t,n,r)})}function qa(e,t,n){if(t===n)return!0;let r=Ye(e),o=r.get(t);return o!==void 0&&Os(o,n,r,new Set)}function Wa(e,t){let n,r=(o,s)=>{let i=o.type==="frame"&&o.component===!0?o.id:s;return o.id===t?(n=s,!0):o.type==="instance"?!1:te(o).some(d=>r(d,i))};return r(e,void 0),n}function so(e,t){let n=e.overrides??{},r=[],o=new Set,s=d=>{let l=d.id.slice(e.id.length+1);n[l]!==void 0&&!o.has(l)&&(r.push({key:l,type:d.type}),o.add(l));for(let f of te(d))s(f)};for(let d of e.children)s(d);let i=Object.keys(n).filter(d=>!o.has(d)).sort().map(d=>({key:d,type:void 0}));return[...r,...i].map(({key:d,type:l})=>{let f=l===void 0?[]:t(l),p=y=>y==="content"?-1:f.includes(y)?f.indexOf(y):f.length,m=Object.entries(n[d]??{}).sort(([y],[v])=>p(y)-p(v)||(y<v?-1:y>v?1:0));return[d,m]})}function io(e){return Ye(e).size>0||Ft(e).length>0}function Ts(e,t){if(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((s,i)=>Ts(s,t[i]));let n=e,r=t,o=new Set([...Object.keys(n),...Object.keys(r)]);for(let s of o)if(!Ts(n[s],r[s]))return!1;return!0}var Nn=["design","brand"],cn="design",ap=new WeakMap;function ot(e){let t=e.brand?.theme==="dark"?e.themes?.dark:void 0;if(t===void 0)return e.tokens;let n=ap.get(e);if(n!==void 0)return n;let r={...e.tokens,...t};return ap.set(e,r),r}var dp=4,lp=5,Xa=6,ao=[1,2,3,4,5,6],lo=Xa;function st(e){return e.root!==void 0&&io(e.root)?Xa:e.kind==="brand"||e.brand!==void 0||e.themes!==void 0||wy(e.fonts)?lp:dp}function wy(e){return Object.values(e??{}).some(t=>(t.faces??[]).some(n=>n.asset!==void 0))}var $t="doc";function dr(e){return{type:"canvas",...e}}function Ya(e){return{type:"ellipse",...e}}function Ls(e){return{type:"frame",...e}}function Ja(e){return{type:"group",...e}}function Za(e){return{type:"image",...e}}function Qa(e){return{type:"rect",...e}}function ed(e){return{type:"text",...e}}function Ds(e){return{type:"vector",...e}}function uo(e={}){let t=e.kind??cn,n=Ot(e.themes),r=Bt(e.root??dr({id:$t,children:[]}));return{version:st({kind:t,root:r,...e.fonts===void 0?{}:{fonts:e.fonts},...e.brand===void 0?{}:{brand:e.brand},...n===void 0?{}:{themes:n}}),kind:t,...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},...e.brand===void 0?{}:{brand:e.brand},...n===void 0?{}:{themes:n},root:r}}function Ot(e){let t=e?.dark;return t===void 0||Object.keys(t).length===0?void 0:{dark:t}}function pn(e){let t=new Set;return ne(e,n=>{t.add(n.id)}),t}function mn(e,t){let n=pn(e),r=0;for(let o of n){if(!o.startsWith(`${t}.`))continue;let s=Number(o.slice(t.length+1));Number.isInteger(s)&&s>r&&(r=s)}return`${t}.${r+1}`}function kt(e){let t=e.trim();if(t.startsWith("#")){let r=t.slice(1);return r===""?void 0:{kind:"frame",id:r}}let n;try{n=new URL(t)}catch{return}if(!(n.protocol!=="https:"&&n.protocol!=="mailto:"))return{kind:"url",url:t}}var fo=["beat","bar"];var ky=/^(\d+(?:\.\d+)?)(beats?|bars?)$/;function In(e){let t=ky.exec(e);if(!t)return;let n=Number(t[1]);if(Number.isFinite(n))return{count:n,unit:t[2].startsWith("bar")?"bar":"beat"}}function Rn(e,t){return`${String(Math.round(e*1e6)/1e6)}${t}${e===1?"":"s"}`}function Fn(e){return typeof e=="string"&&In(e)!==void 0}function _t(e){let t=e?.bpm;if(t===void 0)return;let n=e?.meter??4,r=6e4/t;return{bpm:t,meter:n,beat:r,bar:r*n}}function Je(e,t,n){if(e===void 0)return n;if(typeof e=="number")return e;let r=In(e);return!r||!t?n:r.count*(r.unit==="bar"?t.bar:t.beat)}function td(e,t,n){let r=t==="bar"?n.bar:n.beat,o=Math.ceil((e-1)/r);return Math.max(0,o)*r}function co(e){return`${Math.round(e)} ms`}var lr=36e5;var nd=50,rd=16e3,od=320,po=["from","volume","fadein","fadeout","loop"];function sd(e,t){return e===t?!0:e===void 0||t===void 0?!1:e.asset===t.asset&&po.every(n=>e[n]===t[n])}function id(e,t){let n=e?.music;if(!n)return[];let r=_t(e),o=t[n.asset]?.ms,s=Je(n.fadeout,r);return[{asset:n.asset,at:0,from:n.from??0,volume:n.volume??1,fadeIn:Je(n.fadein,r,0),...s===void 0?{}:{fadeOut:s},loop:n.loop===!0,...o===void 0?{}:{sourceMs:o}}]}var fr=["cut","fade","push","slide"],mo=["cut","fade","rise","drop","pop","wipe","grow","count","draw"],ur=["cut","fade","rise","drop","pop"],ho=["pulse"],xo=["out","in","inout","linear","spring"],go=["word","letter"],hn=["left","right","top","bottom"],yo=400,Tt=1e4,xn=18e4,Lt=7680;function Ht(e){let t=e.trim();return t==="back"?{kind:"back"}:t==="next"?{kind:"next"}:kt(t)}function Vt(e){return e===void 0||e.enter===void 0&&e.duration===void 0&&e.scroll!==!0&&e.length===void 0&&e.w===void 0&&e.h===void 0&&e.bpm===void 0&&e.meter===void 0&&e.music===void 0&&e.lines.length===0}function cr(e){return e.camera===!0||e.enter!==void 0||e.exit!==void 0||e.emphasis!==void 0||e.go!==void 0}var _y=["id","camera","enter","exit","emphasis","from","by","stagger","duration","hold","delay","at","after","with","step","together","on","ease","pad","go"],Sy=["camera","emphasis","from","by","stagger","hold","at","after","with","on","ease","pad"];function Bn(e){return e===void 0?!1:e.length!==void 0||e.w!==void 0||e.h!==void 0||e.bpm!==void 0||e.meter!==void 0||e.music!==void 0?!0:e.lines.some(t=>Sy.some(n=>t[n]!==void 0)||t.enter!==void 0&&!ur.includes(t.enter)||t.exit!==void 0&&!ur.includes(t.exit))}function Ps(e,t){return e===t?!0:e===void 0||t===void 0||e.enter!==t.enter||e.duration!==t.duration||e.length!==t.length||e.w!==t.w||e.h!==t.h||e.bpm!==t.bpm||e.meter!==t.meter||!sd(e.music,t.music)||e.scroll===!0!=(t.scroll===!0)||e.lines.length!==t.lines.length?!1:e.lines.every((n,r)=>{let o=t.lines[r];return _y.every(s=>n[s]===o[s])})}function pr(e){let t=e.motion;if(!t)return[];let n=e.root.children.map(o=>o.id).filter(o=>o in t),r=Object.keys(t).filter(o=>!n.includes(o)).sort();return[...n,...r]}function Ut(e){return new Set(e.root.children.filter(t=>t.type==="frame"&&t.component!==!0).map(t=>t.id))}function gt(e){let t=new Map;for(let n of e.root.children)n.type!=="frame"||n.component===!0||ne(n,r=>{t.set(r.id,n.id)});return t}function ad(e){let t=new Set;return ne(e,n=>{t.add(n.id)}),t}function mr(e,t){let n=e.motion;if(!n)return[];let r=[],o=Ut(e),s=gt(e),i=ad(e.root),d=(l,f)=>{let p=t?.(l,f);return p===void 0?"":`Line ${p}: `};for(let l of pr(e)){let f=n[l];if(!f)continue;if(!o.has(l)){r.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}let p=new Set;for(let m of f.lines){let y=d(l,m.id);for(let _ of["after","with"]){let g=m[_];g!==void 0&&!p.has(g)&&r.push({severity:"warning",code:"motion-anchor-missing",message:`${y}motion ${l}: ${_}=${g} names no line above, so it starts after the line above instead`,nodeId:m.id})}m.camera!==!0&&p.add(m.id);let v=i.has(m.id)?F(e.root,m.id):void 0;v&&r.push(...Ey(m,v,y,l)),i.has(m.id)?s.get(m.id)!==l&&r.push({severity:"warning",code:"motion-wrong-page",message:`${y}motion ${l}: ${m.id} is not on ${l}, so Play skips it`,nodeId:m.id}):r.push({severity:"warning",code:"unknown-reference",message:`${y}motion ${l}: no node ${m.id}`,nodeId:m.id});let C=m.go===void 0?void 0:Ht(m.go);C?.kind==="frame"&&!Ay(e,C.id)&&r.push({severity:"warning",code:"unknown-reference",message:`${y}motion ${l}: go=#${C.id} names no frame`,nodeId:m.id})}}return r}function Ey(e,t,n,r){let o=[],s=(d,l)=>{o.push({severity:"warning",code:d,message:`${n}motion ${r}: ${l}`,nodeId:t.id})};if(e.camera===!0)return o;let i=e.enter??e.exit;return i==="count"&&(t.type!=="text"||!/\d/.test(gn(t.content)))&&s("count-no-number",`${t.id} has no number to count, so it fades in instead`),i==="draw"&&!My(t)&&s("draw-no-stroke",`${t.id} has no stroked vector to draw, so it fades in instead`),e.by!==void 0&&t.type!=="text"?s("by-not-text",`by=${e.by} splits text, and ${t.id} is a ${t.type}`):e.by!==void 0&&t.type==="text"&&Cy(t)&&s("by-rotated",`${t.id} is rotated, so by=${e.by} enters it whole`),e.stagger!==void 0&&e.by===void 0&&te(t).length===0&&s("stagger-no-children",`${t.id} has no children to stagger: split a text with by=word`),o}function Cy(e){let t=e.rotation;return t!==void 0&&t!==0}function My(e){let t=!1;return ne(e,n=>(n.type==="vector"&&n.stroke!==void 0&&(t=!0),t?!1:void 0)),t}function gn(e){return typeof e=="string"?e:e.map(t=>typeof t=="string"?t:t.text).join("")}function Ay(e,t){let n=!1;return ne(e.root,r=>{if(n)return!1;r.id===t&&(n=r.type==="frame")}),n}function up(e,t){let n=t.motion;if(!n||!e.motion)return n;let r=gt(e),o=gt(t),s=ad(e.root),i=ad(t.root),d=m=>s.has(m)&&!i.has(m),l=!1,f={},p=[];for(let[m,y]of Object.entries(n)){if(d(m)){l=!0;continue}let v=[];for(let _ of y.lines){let g=_,P=_.go===void 0?void 0:Ht(_.go);if(P?.kind==="frame"&&d(P.id)){let A=Oy(_);g=cr(A)?A:void 0,l=!0}if(g&&(g.after!==void 0&&d(g.after)||g.with!==void 0&&d(g.with))&&(g=$y(g,d),l=!0),g&&d(_.id))g=void 0,l=!0;else if(g&&r.get(_.id)===m&&o.get(_.id)!==m){let A=o.get(_.id);A!==void 0&&p.push([A,g]),g=void 0,l=!0}g&&v.push(g)}let C={...y,lines:v};Vt(C)||(f[m]=C)}for(let[m,y]of p){let v=f[m]??{lines:[]};f[m]={...v,lines:[...v.lines,y]}}return l?Object.keys(f).length===0?void 0:f:n}function $y(e,t){let n={...e};return e.after!==void 0&&t(e.after)&&delete n.after,e.with!==void 0&&t(e.with)&&delete n.with,n}function Oy(e){let t={...e};return delete t.go,t}function dd(e,t){let n={...e};return t===void 0||Object.keys(t).length===0?delete n.motion:n.motion=t,n}function ld(e,t){let n=up(e,t);if(n===t.motion)return[];let r=new Set([...Object.keys(t.motion??{}),...Object.keys(n??{})]),o=[];for(let s of r){let i=n?.[s];Ps(t.motion?.[s],i)||o.push({op:"setMotion",page:s,value:i})}return o}var fp={canvas:["type","id","name","w","h","background","children"],frame:["type","id","name","x","y","w","h","background","clip","skip","component","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"],instance:["type","id","name","component","x","y","w","h","overrides","hidden","locked"],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"]},cp=["text","font","size","weight","italic","underline","strike","fill","letterSpacing","link"],Ty=["family","fallback","faces"],Ly=["src","asset","weight","style"],Te=" ";function ud(e){let t=["{",`${Te}"version": ${re(st(e))},`,`${Te}"kind": ${JSON.stringify(e.kind)},`,...e.title===void 0?[]:[`${Te}"title": ${JSON.stringify(e.title)},`],`${Te}"tokens": ${Py(e.tokens,Te)},`];return Object.keys(e.fonts).length>0&&t.push(`${Te}"fonts": ${Ny(e.fonts,Te)},`),e.motion!==void 0&&t.push(`${Te}"motion": ${Dy(e,Te)},`),e.brand!==void 0&&t.push(`${Te}"brand": ${JSON.stringify(Pn(e.brand))},`),e.themes?.dark!==void 0&&Object.keys(e.themes.dark).length>0&&t.push(`${Te}"themes": ${JSON.stringify({dark:e.themes.dark})},`),t.push(`${Te}"root": ${fd(e.root,Te)}`,"}"),`${t.join(`
1
+ /*! @getv.design/embed v0.6.0. Free to use under the vDesign Embed Licence. © 2026 vDesign. https://getv.design/docs/licence/ */
2
+ function _t(e){return{expr:e}}function ve(e){return typeof e=="object"&&e!==null&&typeof e.expr=="string"}var Bt=["radiusTL","radiusTR","radiusBR","radiusBL"],Cn=["radius",...Bt];var F1={radiusTL:"tl",radiusTR:"tr",radiusBR:"br",radiusBL:"bl"};function Zn(e){let t=e.radius??0,n=r=>Math.max(0,e[r]??t);return{tl:n("radiusTL"),tr:n("radiusTR"),br:n("radiusBR"),bl:n("radiusBL")}}function Ao(e,t,n){let r=Math.max(0,t),o=Math.max(0,n),s=1,i=(a,d)=>{d>0&&(s=Math.min(s,a/d))};return i(r,e.tl+e.tr),i(r,e.bl+e.br),i(o,e.tl+e.bl),i(o,e.tr+e.br),s>=1?e:{tl:e.tl*s,tr:e.tr*s,br:e.br*s,bl:e.bl*s}}function $o(e,t,n){return Ao(Zn(e),t,n)}function Jt(e){return e.tl<=0&&e.tr<=0&&e.br<=0&&e.bl<=0}function Vc(e){return e.tl===e.tr&&e.tr===e.br&&e.br===e.bl}function Hc(e,t){return e[F1[t]]}function zs(e){let t=e;return Bt.some(n=>t[n]!==void 0)}var B1=/^(?:\d+(?:\.\d*)?|\.\d+)$/;function Uc(e){if(!e.startsWith('"'))return;let t;try{let a=JSON.parse(e);if(typeof a!="string")return;t=a}catch{return}let n=t.trim().split(/\s+/).filter(a=>a!=="");if(n.length<2)return;if(n.length>4)return{error:`the shorthand takes one to four corners, got ${n.length}: "${t}"`};for(let a of n){if(/^[$@(]/.test(a))return{error:`the shorthand takes numbers \u2014 bind one corner with its own cell, e.g. radiusTL=${a}`};if(!B1.test(a))return/^(-?\d+(?:\.\d+)?)px$/.exec(a)&&!a.startsWith("-")?{error:`drop the unit: radius="${n.map(c=>c.replace(/px$/,"")).join(" ")}"`}:{error:/^-\d/.test(a)?`a radius cannot be negative, got ${a}`:`the shorthand takes plain numbers, got "${a}"`}}let[r,o=r,s=r,i=o]=n;return{corners:[["radiusTL",r],["radiusTR",o],["radiusBR",s],["radiusBL",i]]}}function Ca(e){if(e.radius!==void 0)return;let t=[];for(let n of Bt){let r=e[n];if(typeof r!="number"||!(r>=0)||!Number.isFinite(r))return;t.push(r)}return t}var Cr=["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],kg=["frame","rect","ellipse","vector"];function Aa(e){return kg.includes(e)}var Qn=["left","center","right","justify"],er=["top","middle","bottom"],Zt=["cover","contain","fill"],Ar=["nonzero","evenodd"],tr=["butt","round","square"],$r=["miter","round","bevel"],Sg=["canvas","frame","group","instance"];function $a(e){return Sg.includes(e)}function me(e){return $a(e.type)}function Ne(e){return e.type==="group"}function te(e){return me(e)?e.children:[]}var _g={canvas:["w","h"],connector:["x1","y1","x2","y2","strokeWidth","opacity","blur"],ellipse:["x","y","w","h","rotation","strokeWidth","opacity","blur","backdrop"],frame:["x","y","w","h","strokeWidth",...Cn,"blur","backdrop"],group:[],instance:["x","y","w","h"],image:["x","y","w","h","rotation","strokeWidth",...Cn,"opacity","blur"],rect:["x","y","w","h","rotation","strokeWidth",...Cn,"opacity","blur","backdrop"],text:["x","y","w","h","rotation","size","weight","lineHeight","letterSpacing","strokeWidth","opacity","blur"],video:["x","y","w","h","rotation","strokeWidth",...Cn,"opacity","blur"],vector:["x","y","w","h","rotation","strokeWidth","opacity","blur","backdrop"]};function Vt(e){return _g[e.type]}function de(e,t,n){if(t(e,n)!==!1&&me(e))for(let r of e.children)de(r,t,e)}function z(e,t){let n;return de(e,r=>{if(n)return!1;r.id===t&&(n=r)}),n}function Le(e,t){let n;return de(e,(r,o)=>{r.id===t&&o&&(n=o)}),n}function Oa(e){return Eg(e,"hidden")}function Ta(e){return Eg(e,"locked")}function Eg(e,t){let n=new Set,r=(o,s)=>{let i=s||o[t]===!0;i&&n.add(o.id);for(let a of te(o))r(a,i)};return r(e,!1),n}function js(e,t,n){let r,o=(s,i)=>{let a=i??(s[n]===!0?s.id:void 0);return s.id===t?(r=a,!0):te(s).some(d=>o(d,a))};return o(e,void 0),r}var La=["light","dark"],Pa=["must","should"],Da=["no-gradient","contrast","font-only","logo-min"];var Mg=["role","logo","rule","guide","review"];function Na(e){return Mg.includes(e)}function Ra(e="",t=1){return{slug:e,version:t,changes:[],sources:[],roles:{},logos:{},rules:{},guides:{},review:[]}}function zc(e){let t=/^([a-z0-9][a-z0-9-]*)(?:@(\d+))?$/.exec(e);if(!t)return;let n=t[2]===void 0?1:Number(t[2]);if(!(!Number.isSafeInteger(n)||n<1))return{slug:t[1],version:n}}function jc(e){return`${e.slug}@${e.version}`}function Or(e){return Gc(e,()=>{})??e}function Kc(e,t){return e===t?!0:e===void 0||t===void 0?!1:JSON.stringify(Or(e))===JSON.stringify(Or(t))}function Gc(e,t){let n=Ks(e),r=n?.version;if(!n||typeof n.slug!="string"||typeof r!="number"||!Number.isSafeInteger(r)||r<1){t('`brand` must be an object with a "slug" and a "version" counting from 1');return}let o=l=>{let p={};for(let[m,g]of Object.entries(Ks(l)??{}))typeof g=="string"&&(p[m]=g);return p},s=(l,p)=>{let m={};for(let[g,b]of Object.entries(Ks(l)??{})){let w=Ks(b),k=w?p(w):void 0;k===void 0?t(`brand: could not read ${g}`):m[g]=k}return m},i=(l,p)=>{let m=[];for(let g of Array.isArray(l)?l:[]){let b=Ks(g),w=b?p(b):void 0;w===void 0?t("brand: could not read a list entry"):m.push(w)}return m},a=l=>typeof l=="string"?l:void 0,d=l=>typeof l=="number"?l:void 0,c=(l,p)=>p===void 0?{}:{[l]:p};return{slug:n.slug,version:r,...c("id",a(n.id)),...c("theme",La.includes(n.theme)?n.theme:void 0),...c("strict",n.strict===!0?!0:void 0),...c("summary",a(n.summary)),changes:i(n.changes,l=>{let p=d(l.version),m=a(l.note);if(!(p===void 0||m===void 0))return{version:p,note:m,...c("at",a(l.at))}}),sources:i(n.sources,l=>{let p=a(l.kind);return p===void 0?void 0:{kind:p,props:o(l.props)}}),roles:s(n.roles,l=>{let p=a(l.light);return p===void 0?void 0:{light:p,...c("dark",a(l.dark))}}),logos:s(n.logos,l=>{let p=a(l.asset);if(p!==void 0)return{asset:p,...c("min",d(l.min)),...c("clear",d(l.clear))}}),rules:s(n.rules,l=>{let p=l.level,m=a(l.text);if(!Pa.includes(p)||m===void 0)return;let g=o(l.params);return delete g.check,{level:p,text:m,...c("check",a(l.check)),...Object.keys(g).length===0?{}:{params:g}}}),guides:s(n.guides,l=>({entries:i(l.entries,V1)})),review:i(n.review,l=>{let p=a(l.target);if(p!==void 0)return{target:p,...c("from",a(l.from)),...c("note",a(l.note))}})}}function V1(e){let t=e.kind,n=e.text;if(t==="line"||t==="banned"||t==="avoid")return typeof n=="string"?{kind:t,text:n}:void 0;if(t==="rewrite"){let{from:r,to:o}=e;return typeof r=="string"&&typeof o=="string"?{kind:t,from:r,to:o}:void 0}if(t==="ref"||t==="approved"||t==="rejected"){let{asset:r,note:o}=e;return typeof r!="string"?void 0:{kind:t,asset:r,...typeof o=="string"?{note:o}:{}}}}function Ks(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}var H1=8,U1=new Set(["type","id","children","component","overrides"]);function nr(e){return!U1.has(e)}function Ht(e,t){return`${e}.${t}`}function lt(e){let t=new Map,n=r=>{if(r.type!=="instance"){r.type==="frame"&&r.component===!0&&t.set(r.id,r);for(let o of te(r))n(o)}};return n(e),t}function An(e,t){let n=[],r=o=>{if(o.type==="instance"){(t===void 0||o.component===t)&&n.push(o);return}for(let s of te(o))r(s)};return r(e),n}function Lt(e,t){let n,r=(o,s)=>{if(o.id===t)return s&&(n={instance:s,key:t.slice(s.id.length+1)}),!0;let i=s??(o.type==="instance"?o:void 0);return te(o).some(a=>r(a,i))};return r(e,void 0),n}function Ba(e,t){let n,r=(o,s)=>{if(o.id===t)return n=s,!0;let i=o.type==="instance"?o:s;return te(o).some(a=>r(a,i))};return r(e,void 0),n}function Xc(e,t,n,r){let o=lt(e).get(t.component),s=o?z(o,n):void 0;return s?s[r]:void 0}function Yc(e,t,n,r,o){let s={...e?.[t]};r===void 0||Fa(r,o)?delete s[n]:s[n]=r;let i={...e};return Object.keys(s).length===0?delete i[t]:i[t]=s,Object.keys(i).length===0?void 0:i}function $n(e){let t=e;for(let n=0;n<H1;n+=1){let r=lt(t),o=Cg(t,r);if(o===t)return t;t=o}return t}var qc=new WeakMap;function Cg(e,t){if(e.type==="instance"){let o=t.get(e.component)??null;if(qc.has(e)&&qc.get(e)===o)return e;let s=Ag(e,t,new Set),i=Fa(s,e.children)?e:{...e,children:s};return qc.set(i,o),i}if(!me(e))return e;let n=!1,r=e.children.map(o=>{let s=Cg(o,t);return s!==o&&(n=!0),s});return n?{...e,children:r}:e}function Ag(e,t,n){let r=t.get(e.component);if(!r||n.has(r.id))return[];let o=new Set(n).add(r.id),s=r.children.map(i=>Wc(i,e.id,t,o));return z1(s,e.id,e.overrides)}function Wc(e,t,n,r){let o=Ht(t,e.id);if(e.type==="instance"){let s={...e,id:o};return{...s,children:Ag(s,n,r)}}if(e.type==="frame"){let s={...e};return delete s.component,{...s,id:o,children:e.children.map(i=>Wc(i,t,n,r))}}return me(e)?{...e,id:o,children:e.children.map(s=>Wc(s,t,n,r))}:{...e,id:o}}function z1(e,t,n){if(n===void 0)return[...e];let r=new Map;for(let[s,i]of Object.entries(n))r.set(Ht(t,s),i);let o=s=>{let i=r.get(s.id),a=s;if(i){let d={...s};for(let[c,l]of Object.entries(i))nr(c)&&(d[c]=l);a=d}return me(a)?{...a,children:a.children.map(o)}:a};return e.map(o)}function Gs(e){let t=[],n=lt(e);for(let s of An(e)){let i=n.get(s.component);if(!i){t.push({severity:"error",code:"missing-component",message:`${s.id} places ${s.component}, which is not a component \u2014 mark a frame with component, or point component= at one`,nodeId:s.id});continue}if(Ia(i,i.id,n,new Set)){t.push({severity:"error",code:"component-cycle",message:`${i.id} holds an instance of itself, so ${s.id} cannot be drawn`,nodeId:s.id});continue}for(let a of Object.keys(s.overrides??{}))z(s,Ht(s.id,a))||t.push({severity:"warning",code:"orphaned-override",message:`${s.id} overrides ${a}, which ${i.id} no longer has`,nodeId:s.id})}for(let[s]of n)e.type==="canvas"&&e.children.some(i=>i.id===s)||t.push({severity:"warning",code:"component-not-top-level",message:`${s} is a component inside another frame \u2014 keep components in the row below the pages, at the top level`,nodeId:s});let r=new Map,o=s=>{r.set(s.id,(r.get(s.id)??0)+1);for(let i of te(s))o(i)};o(e);for(let s of An(e))for(let i of s.children){let a=d=>{(r.get(d.id)??0)>1&&t.push({severity:"error",code:"duplicate-id",message:`${d.id} is both a node and a part of ${s.id} \u2014 rename one`,nodeId:d.id});for(let c of te(d))a(c)};a(i)}return t}function Ia(e,t,n,r){return te(e).some(o=>{if(o.type==="instance"){if(o.component===t)return!0;if(r.has(o.component))return!1;r.add(o.component);let s=n.get(o.component);return s!==void 0&&Ia(s,t,n,r)}return Ia(o,t,n,r)})}function Jc(e,t,n){if(t===n)return!0;let r=lt(e),o=r.get(t);return o!==void 0&&Ia(o,n,r,new Set)}function Zc(e,t){let n,r=(o,s)=>{let i=o.type==="frame"&&o.component===!0?o.id:s;return o.id===t?(n=s,!0):o.type==="instance"?!1:te(o).some(a=>r(a,i))};return r(e,void 0),n}function qs(e,t){let n=e.overrides??{},r=[],o=new Set,s=a=>{let d=a.id.slice(e.id.length+1);n[d]!==void 0&&!o.has(d)&&(r.push({key:d,type:a.type}),o.add(d));for(let c of te(a))s(c)};for(let a of e.children)s(a);let i=Object.keys(n).filter(a=>!o.has(a)).sort().map(a=>({key:a,type:void 0}));return[...r,...i].map(({key:a,type:d})=>{let c=d===void 0?[]:t(d),l=m=>m==="content"?-1:c.includes(m)?c.indexOf(m):c.length,p=Object.entries(n[a]??{}).sort(([m],[g])=>l(m)-l(g)||(m<g?-1:m>g?1:0));return[a,p]})}function Ws(e){return lt(e).size>0||An(e).length>0}function Fa(e,t){if(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((s,i)=>Fa(s,t[i]));let n=e,r=t,o=new Set([...Object.keys(n),...Object.keys(r)]);for(let s of o)if(!Fa(n[s],r[s]))return!1;return!0}var Tr=["design","brand"],rr="design",$g=new WeakMap;function Ze(e){let t=e.brand?.theme==="dark"?e.themes?.dark:void 0;if(t===void 0)return e.tokens;let n=$g.get(e);if(n!==void 0)return n;let r={...e.tokens,...t};return $g.set(e,r),r}var Og=4,Tg=5,Lg=6,Pg=7,Qc=8,Xs=[1,2,3,4,5,6,7,8],Ys=Qc;function Et(e){return e.root!==void 0&&Dg(e.root)?Qc:e.root!==void 0&&Ng(e.root)?Pg:e.root!==void 0&&Ws(e.root)?Lg:e.kind==="brand"||e.brand!==void 0||e.themes!==void 0||j1(e.fonts)?Tg:Og}function Dg(e){let t=!1;return de(e,n=>(n.type==="video"&&(t=!0),t?!1:void 0)),t}function Ng(e){let t=!1;return de(e,n=>(n.type==="connector"&&(t=!0),t?!1:void 0)),t}function j1(e){return Object.values(e??{}).some(t=>(t.faces??[]).some(n=>n.asset!==void 0))}var dn="doc";function Oo(e){return{type:"canvas",...e}}function el(e){return{type:"connector",...e}}function tl(e){return{type:"ellipse",...e}}function Va(e){return{type:"frame",...e}}function nl(e){return{type:"group",...e}}function rl(e){return{type:"video",...e}}function ol(e){return{type:"image",...e}}function sl(e){return{type:"rect",...e}}function il(e){return{type:"text",...e}}function To(e){return{type:"vector",...e}}function Js(e={}){let t=e.kind??rr,n=un(e.themes),r=$n(e.root??Oo({id:dn,children:[]}));return{version:Et({kind:t,root:r,...e.fonts===void 0?{}:{fonts:e.fonts},...e.brand===void 0?{}:{brand:e.brand},...n===void 0?{}:{themes:n}}),kind:t,...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},...e.brand===void 0?{}:{brand:e.brand},...n===void 0?{}:{themes:n},root:r}}function un(e){let t=e?.dark;return t===void 0||Object.keys(t).length===0?void 0:{dark:t}}function Qt(e){let t=e.trim();if(t.startsWith("#")){let r=t.slice(1);return r===""?void 0:{kind:"frame",id:r}}let n;try{n=new URL(t)}catch{return}if(!(n.protocol!=="https:"&&n.protocol!=="mailto:"))return{kind:"url",url:t}}var Zs=["beat","bar"];var K1=/^(\d+(?:\.\d+)?)(beats?|bars?)$/;function Lr(e){let t=K1.exec(e);if(!t)return;let n=Number(t[1]);if(Number.isFinite(n))return{count:n,unit:t[2].startsWith("bar")?"bar":"beat"}}function Pr(e,t){return`${String(Math.round(e*1e6)/1e6)}${t}${e===1?"":"s"}`}function Dr(e){return typeof e=="string"&&Lr(e)!==void 0}function en(e){let t=e?.bpm;if(t===void 0)return;let n=e?.meter??4,r=6e4/t;return{bpm:t,meter:n,beat:r,bar:r*n}}function ft(e,t,n){if(e===void 0)return n;if(typeof e=="number")return e;let r=Lr(e);return!r||!t?n:r.count*(r.unit==="bar"?t.bar:t.beat)}function al(e,t,n){let r=t==="bar"?n.bar:n.beat,o=Math.ceil((e-1)/r);return Math.max(0,o)*r}function Qs(e){return`${Math.round(e)} ms`}var Lo=36e5;var dl=50,ul=16e3,cl=320,ei=["from","volume","fadein","fadeout","loop"];function ll(e,t){return e===t?!0:e===void 0||t===void 0?!1:e.asset===t.asset&&ei.every(n=>e[n]===t[n])}function fl(e,t){let n=e?.music;if(!n)return[];let r=en(e),o=t[n.asset]?.ms,s=ft(n.fadeout,r);return[{asset:n.asset,at:0,from:n.from??0,volume:n.volume??1,fadeIn:ft(n.fadein,r,0),...s===void 0?{}:{fadeOut:s},loop:n.loop===!0,...o===void 0?{}:{sourceMs:o}}]}var Do=["cut","fade","push","slide"],ti=["cut","fade","rise","drop","pop","wipe","grow","count","draw"],Po=["cut","fade","rise","drop","pop"],ni=["pulse"],ri=["out","in","inout","linear","spring"],oi=["word","letter"],or=["left","right","top","bottom"],si=400,cn=1e4,sr=18e4,ln=7680;function On(e){let t=e.trim();return t==="back"?{kind:"back"}:t==="next"?{kind:"next"}:Qt(t)}function Tn(e){return e===void 0||e.enter===void 0&&e.duration===void 0&&e.scroll!==!0&&e.length===void 0&&e.w===void 0&&e.h===void 0&&e.bpm===void 0&&e.meter===void 0&&e.music===void 0&&e.lines.length===0}function No(e){return e.camera===!0||e.enter!==void 0||e.exit!==void 0||e.emphasis!==void 0||e.go!==void 0}var G1=["id","camera","enter","exit","emphasis","from","by","stagger","duration","hold","delay","at","after","with","step","together","on","ease","pad","go"],q1=["camera","emphasis","from","by","stagger","hold","at","after","with","on","ease","pad"];function Nr(e){return e===void 0?!1:e.length!==void 0||e.w!==void 0||e.h!==void 0||e.bpm!==void 0||e.meter!==void 0||e.music!==void 0?!0:e.lines.some(t=>q1.some(n=>t[n]!==void 0)||t.enter!==void 0&&!Po.includes(t.enter)||t.exit!==void 0&&!Po.includes(t.exit))}function Ha(e,t){return e===t?!0:e===void 0||t===void 0||e.enter!==t.enter||e.duration!==t.duration||e.length!==t.length||e.w!==t.w||e.h!==t.h||e.bpm!==t.bpm||e.meter!==t.meter||!ll(e.music,t.music)||e.scroll===!0!=(t.scroll===!0)||e.lines.length!==t.lines.length?!1:e.lines.every((n,r)=>{let o=t.lines[r];return G1.every(s=>n[s]===o[s])})}function Ro(e){let t=e.motion;if(!t)return[];let n=e.root.children.map(o=>o.id).filter(o=>o in t),r=Object.keys(t).filter(o=>!n.includes(o)).sort();return[...n,...r]}function Ln(e){return new Set(e.root.children.filter(t=>t.type==="frame"&&t.component!==!0).map(t=>t.id))}function Ut(e){let t=new Map;for(let n of e.root.children)n.type!=="frame"||n.component===!0||de(n,r=>{t.set(r.id,n.id)});return t}function pl(e){let t=new Set;return de(e,n=>{t.add(n.id)}),t}function Io(e,t){let n=e.motion;if(!n)return[];let r=[],o=Ln(e),s=Ut(e),i=pl(e.root),a=(d,c)=>{let l=t?.(d,c);return l===void 0?"":`Line ${l}: `};for(let d of Ro(e)){let c=n[d];if(!c)continue;if(!o.has(d)){r.push({severity:"warning",code:"motion-not-a-page",message:`${a(d)}motion ${d}: ${d} is not a page (a top-level frame), so none of it plays`,nodeId:d});continue}let l=new Set;for(let p of c.lines){let m=a(d,p.id);for(let w of["after","with"]){let k=p[w];k!==void 0&&!l.has(k)&&r.push({severity:"warning",code:"motion-anchor-missing",message:`${m}motion ${d}: ${w}=${k} names no line above, so it starts after the line above instead`,nodeId:p.id})}p.camera!==!0&&l.add(p.id);let g=i.has(p.id)?z(e.root,p.id):void 0;g&&r.push(...W1(p,g,m,d)),i.has(p.id)?s.get(p.id)!==d&&r.push({severity:"warning",code:"motion-wrong-page",message:`${m}motion ${d}: ${p.id} is not on ${d}, so Play skips it`,nodeId:p.id}):r.push({severity:"warning",code:"unknown-reference",message:`${m}motion ${d}: no node ${p.id}`,nodeId:p.id});let b=p.go===void 0?void 0:On(p.go);b?.kind==="frame"&&!J1(e,b.id)&&r.push({severity:"warning",code:"unknown-reference",message:`${m}motion ${d}: go=#${b.id} names no frame`,nodeId:p.id})}}return r}function W1(e,t,n,r){let o=[],s=(a,d)=>{o.push({severity:"warning",code:a,message:`${n}motion ${r}: ${d}`,nodeId:t.id})};if(e.camera===!0)return o;let i=e.enter??e.exit;return i==="count"&&(t.type!=="text"||!/\d/.test(ir(t.content)))&&s("count-no-number",`${t.id} has no number to count, so it fades in instead`),i==="draw"&&!Y1(t)&&s("draw-no-stroke",`${t.id} has no stroked vector to draw, so it fades in instead`),e.by!==void 0&&t.type!=="text"?s("by-not-text",`by=${e.by} splits text, and ${t.id} is a ${t.type}`):e.by!==void 0&&t.type==="text"&&X1(t)&&s("by-rotated",`${t.id} is rotated, so by=${e.by} enters it whole`),e.stagger!==void 0&&e.by===void 0&&te(t).length===0&&s("stagger-no-children",`${t.id} has no children to stagger: split a text with by=word`),o}function X1(e){let t=e.rotation;return t!==void 0&&t!==0}function Y1(e){let t=!1;return de(e,n=>((n.type==="vector"&&n.stroke!==void 0||n.type==="connector")&&(t=!0),t?!1:void 0)),t}function ir(e){return typeof e=="string"?e:e.map(t=>typeof t=="string"?t:t.text).join("")}function J1(e,t){let n=!1;return de(e.root,r=>{if(n)return!1;r.id===t&&(n=r.type==="frame")}),n}function Rg(e,t){let n=t.motion;if(!n||!e.motion)return n;let r=Ut(e),o=Ut(t),s=pl(e.root),i=pl(t.root),a=p=>s.has(p)&&!i.has(p),d=!1,c={},l=[];for(let[p,m]of Object.entries(n)){if(a(p)){d=!0;continue}let g=[];for(let w of m.lines){let k=w,_=w.go===void 0?void 0:On(w.go);if(_?.kind==="frame"&&a(_.id)){let M=Q1(w);k=No(M)?M:void 0,d=!0}if(k&&(k.after!==void 0&&a(k.after)||k.with!==void 0&&a(k.with))&&(k=Z1(k,a),d=!0),k&&a(w.id))k=void 0,d=!0;else if(k&&r.get(w.id)===p&&o.get(w.id)!==p){let M=o.get(w.id);M!==void 0&&l.push([M,k]),k=void 0,d=!0}k&&g.push(k)}let b={...m,lines:g};Tn(b)||(c[p]=b)}for(let[p,m]of l){let g=c[p]??{lines:[]};c[p]={...g,lines:[...g.lines,m]}}return d?Object.keys(c).length===0?void 0:c:n}function Z1(e,t){let n={...e};return e.after!==void 0&&t(e.after)&&delete n.after,e.with!==void 0&&t(e.with)&&delete n.with,n}function Q1(e){let t={...e};return delete t.go,t}function hl(e,t){let n={...e};return t===void 0||Object.keys(t).length===0?delete n.motion:n.motion=t,n}function ml(e,t){let n=Rg(e,t);if(n===t.motion)return[];let r=new Set([...Object.keys(t.motion??{}),...Object.keys(n??{})]),o=[];for(let s of r){let i=n?.[s];Ha(t.motion?.[s],i)||o.push({op:"setMotion",page:s,value:i})}return o}var Ig={canvas:["type","id","name","w","h","background","children"],connector:["type","id","name","x1","y1","x2","y2","route","start","end","stroke","strokeWidth","dash","cap","opacity","blend","shadow","blur","hidden","locked"],frame:["type","id","name","x","y","w","h","background","stroke","strokeWidth","dash","strokeAlign","cap","radius","radiusTL","radiusTR","radiusBR","radiusBL","clip","skip","component","blend","shadow","blur","backdrop","hidden","locked","children"],ellipse:["type","id","name","x","y","w","h","rotation","fill","stroke","strokeWidth","dash","strokeAlign","cap","opacity","blend","shadow","blur","backdrop","hidden","locked"],group:["type","id","name","hidden","locked","children"],instance:["type","id","name","component","x","y","w","h","overrides","hidden","locked"],image:["type","id","name","x","y","w","h","rotation","src","fit","mask","stroke","strokeWidth","dash","strokeAlign","cap","radius","radiusTL","radiusTR","radiusBR","radiusBL","opacity","blend","shadow","blur","hidden","locked"],rect:["type","id","name","x","y","w","h","rotation","fill","stroke","strokeWidth","dash","strokeAlign","cap","radius","radiusTL","radiusTR","radiusBR","radiusBL","opacity","blend","shadow","blur","backdrop","hidden","locked"],text:["type","id","name","x","y","w","h","rotation","content","font","size","weight","lineHeight","letterSpacing","align","valign","italic","fill","stroke","strokeWidth","dash","opacity","blend","shadow","blur","hidden","locked"],vector:["type","id","name","x","y","w","h","rotation","view","d","fill","stroke","strokeWidth","dash","strokeAlign","opacity","rule","cap","join","blend","shadow","blur","backdrop","hidden","locked"],video:["type","id","name","x","y","w","h","rotation","src","fit","start","end","poster","muted","loop","mask","stroke","strokeWidth","dash","strokeAlign","cap","radius","radiusTL","radiusTR","radiusBR","radiusBL","opacity","blend","shadow","blur","hidden","locked"]},Fg=["text","font","size","weight","italic","underline","strike","fill","letterSpacing","link"],eS=["family","fallback","faces"],tS=["src","asset","weight","style"],Fe=" ";function xl(e){let t=["{",`${Fe}"version": ${K(Et(e))},`,`${Fe}"kind": ${JSON.stringify(e.kind)},`,...e.title===void 0?[]:[`${Fe}"title": ${JSON.stringify(e.title)},`],`${Fe}"tokens": ${rS(e.tokens,Fe)},`];return Object.keys(e.fonts).length>0&&t.push(`${Fe}"fonts": ${oS(e.fonts,Fe)},`),e.motion!==void 0&&t.push(`${Fe}"motion": ${nS(e,Fe)},`),e.brand!==void 0&&t.push(`${Fe}"brand": ${JSON.stringify(Or(e.brand))},`),e.themes?.dark!==void 0&&Object.keys(e.themes.dark).length>0&&t.push(`${Fe}"themes": ${JSON.stringify({dark:e.themes.dark})},`),t.push(`${Fe}"root": ${gl(e.root,Fe)}`,"}"),`${t.join(`
3
3
  `)}
4
- `}function Ns(e){return`${fd(e,"")}
5
- `}function Dy(e,t){let n=t+Te,r=pr(e).map(o=>`${n}${JSON.stringify(o)}: ${JSON.stringify(e.motion?.[o])}`).join(`,
4
+ `}function Ua(e){return`${gl(e,"")}
5
+ `}function nS(e,t){let n=t+Fe,r=Ro(e).map(o=>`${n}${JSON.stringify(o)}: ${JSON.stringify(e.motion?.[o])}`).join(`,
6
6
  `);return r===""?"{}":`{
7
7
  ${r}
8
- ${t}}`}function Py(e,t){let n=Object.keys(e).sort();if(n.length===0)return"{}";let r=t+Te;return`{
9
- ${n.map(s=>`${r}${JSON.stringify(s)}: ${vo(e[s])}`).join(`,
8
+ ${t}}`}function rS(e,t){let n=Object.keys(e).sort();if(n.length===0)return"{}";let r=t+Fe;return`{
9
+ ${n.map(s=>`${r}${JSON.stringify(s)}: ${ii(e[s])}`).join(`,
10
10
  `)}
11
- ${t}}`}function Ny(e,t){let n=Object.keys(e).sort();if(n.length===0)return"{}";let r=t+Te;return`{
12
- ${n.map(s=>`${r}${JSON.stringify(s)}: ${Iy(e[s],r)}`).join(`,
11
+ ${t}}`}function oS(e,t){let n=Object.keys(e).sort();if(n.length===0)return"{}";let r=t+Fe;return`{
12
+ ${n.map(s=>`${r}${JSON.stringify(s)}: ${sS(e[s],r)}`).join(`,
13
13
  `)}
14
- ${t}}`}function Iy(e,t){if(!e)return"{}";let n=t+Te,r=e,o=[];for(let s of Ty){let i=r[s];if(i!==void 0){if(s==="faces"){o.push(`${n}"faces": ${Ry(i,n)}`);continue}o.push(`${n}${JSON.stringify(s)}: ${vo(i)}`)}}return`{
14
+ ${t}}`}function sS(e,t){if(!e)return"{}";let n=t+Fe,r=e,o=[];for(let s of eS){let i=r[s];if(i!==void 0){if(s==="faces"){o.push(`${n}"faces": ${iS(i,n)}`);continue}o.push(`${n}${JSON.stringify(s)}: ${ii(i)}`)}}return`{
15
15
  ${o.join(`,
16
16
  `)}
17
- ${t}}`}function Ry(e,t){if(e.length===0)return"[]";let n=t+Te;return`[
18
- ${e.map(o=>n+cd(o,Ly)).join(`,
17
+ ${t}}`}function iS(e,t){if(e.length===0)return"[]";let n=t+Fe;return`[
18
+ ${e.map(o=>n+yl(o,tS)).join(`,
19
19
  `)}
20
- ${t}]`}function fd(e,t){let n=t+Te,r=e,o=[];for(let s of fp[e.type]){let i=r[s];if(i!==void 0){if(s==="children"){o.push(`${n}"children": ${Vy(i,n)}`);continue}if(s==="content"){o.push(`${n}"content": ${Hy(i,n)}`);continue}if(s==="overrides"&&e.type==="instance"){o.push(`${n}"overrides": ${Fy(e,n)}`);continue}o.push(`${n}${JSON.stringify(s)}: ${vo(i)}`)}}return`{
20
+ ${t}]`}function gl(e,t){let n=t+Fe,r=e,o=[];for(let s of Ig[e.type]){let i=r[s];if(i!==void 0){if(s==="children"){o.push(`${n}"children": ${cS(i,n)}`);continue}if(s==="content"){o.push(`${n}"content": ${uS(i,n)}`);continue}if(s==="overrides"&&e.type==="instance"){o.push(`${n}"overrides": ${aS(e,n)}`);continue}o.push(`${n}${JSON.stringify(s)}: ${ii(i)}`)}}return`{
21
21
  ${o.join(`,
22
22
  `)}
23
- ${t}}`}function Fy(e,t){let n=so(e,s=>fp[s]);if(n.length===0)return"{}";let r=t+Te;return`{
24
- ${n.map(([s,i])=>{let d=i.map(([l,f])=>l==="content"?`${JSON.stringify(l)}: ${By(f)}`:`${JSON.stringify(l)}: ${vo(f)}`).join(", ");return`${r}${JSON.stringify(s)}: { ${d} }`}).join(`,
23
+ ${t}}`}function aS(e,t){let n=qs(e,s=>Ig[s]);if(n.length===0)return"{}";let r=t+Fe;return`{
24
+ ${n.map(([s,i])=>{let a=i.map(([d,c])=>d==="content"?`${JSON.stringify(d)}: ${dS(c)}`:`${JSON.stringify(d)}: ${ii(c)}`).join(", ");return`${r}${JSON.stringify(s)}: { ${a} }`}).join(`,
25
25
  `)}
26
- ${t}}`}function By(e){return typeof e=="string"?JSON.stringify(e):`[${e.map(n=>typeof n=="string"?JSON.stringify(n):cd(n,cp)).join(", ")}]`}function Hy(e,t){if(typeof e=="string")return JSON.stringify(e);if(e.length===0)return"[]";let n=t+Te;return`[
27
- ${e.map(o=>typeof o=="string"?n+JSON.stringify(o):n+cd(o,cp)).join(`,
26
+ ${t}}`}function dS(e){return typeof e=="string"?JSON.stringify(e):`[${e.map(n=>typeof n=="string"?JSON.stringify(n):yl(n,Fg)).join(", ")}]`}function uS(e,t){if(typeof e=="string")return JSON.stringify(e);if(e.length===0)return"[]";let n=t+Fe;return`[
27
+ ${e.map(o=>typeof o=="string"?n+JSON.stringify(o):n+yl(o,Fg)).join(`,
28
28
  `)}
29
- ${t}]`}function cd(e,t){let n=[];for(let r of t){let o=e[r];o!==void 0&&n.push(`${JSON.stringify(r)}: ${vo(o)}`)}return`{ ${n.join(", ")} }`}function Vy(e,t){if(e.length===0)return"[]";let n=t+Te;return`[
30
- ${e.map(o=>n+fd(o,n)).join(`,
29
+ ${t}]`}function yl(e,t){let n=[];for(let r of t){let o=e[r];o!==void 0&&n.push(`${JSON.stringify(r)}: ${ii(o)}`)}return`{ ${n.join(", ")} }`}function cS(e,t){if(e.length===0)return"[]";let n=t+Fe;return`[
30
+ ${e.map(o=>n+gl(o,n)).join(`,
31
31
  `)}
32
- ${t}]`}function vo(e){return ye(e)?JSON.stringify(`=${e.expr}`):typeof e=="number"?re(e):JSON.stringify(e)}function re(e){if(!Number.isFinite(e))return"0";let t=Math.round(e*1e4)/1e4,n=Object.is(t,-0)?0:t;return Math.abs(n)>=1e21?n.toFixed(0):String(n)}var Uy={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0};function ko(e){let t=[],n,r=0,o=0,s=0,i=0,d,l,f=zy(e),p=()=>(n||(n={anchors:[{x:r,y:o}],closed:!1},t.push(n)),n.anchors[n.anchors.length-1]),m=(_,g)=>{p(),n?.anchors.push({x:_,y:g}),r=_,o=g},y=(_,g,P,A)=>{p().out=_,n?.anchors.push({x:P,y:A,in:g}),r=P,o=A},v="",C=!0;for(;f.more();){let _=f.command();if(_!==void 0)v=_,C=!0;else if(v===""||v.toUpperCase()==="Z")return{contours:Is(t),error:`Expected a command at ${f.at()}`};let g=v.toUpperCase(),P=v!==g,A=Uy[g];if(A===void 0)return{contours:Is(t),error:`Unknown command ${v}`};if(g==="Z"){n&&(n.closed=!0),n=void 0,r=s,o=i,d=void 0,l=void 0,v="";continue}let R=g==="A"?f.arc():f.numbers(A);if(R===void 0)return{contours:Is(t),error:`${v} expects ${A} numbers at ${f.at()}`};let $=P?r:0,D=P?o:0,T=V=>R[V];switch(g){case"M":C&&(n={anchors:[{x:$+T(0),y:D+T(1)}],closed:!1},t.push(n),r=s=$+T(0),o=i=D+T(1),v=P?"l":"L"),d=l=void 0;break;case"L":m($+T(0),D+T(1)),d=l=void 0;break;case"H":m($+T(0),o),d=l=void 0;break;case"V":m(r,D+T(0)),d=l=void 0;break;case"C":{let V={x:$+T(2),y:D+T(3)};y({x:$+T(0),y:D+T(1)},V,$+T(4),D+T(5)),d=V,l=void 0;break}case"S":{let V=d?{x:2*r-d.x,y:2*o-d.y}:{x:r,y:o},O={x:$+T(0),y:D+T(1)};y(V,O,$+T(2),D+T(3)),d=O,l=void 0;break}case"Q":case"T":{let V=g==="Q"?{x:$+T(0),y:D+T(1)}:l?{x:2*r-l.x,y:2*o-l.y}:{x:r,y:o},O=g==="Q"?$+T(2):$+T(0),j=g==="Q"?D+T(3):D+T(1),M={x:r+2/3*(V.x-r),y:o+2/3*(V.y-o)},G={x:O+2/3*(V.x-O),y:j+2/3*(V.y-j)};y(M,G,O,j),l=V,d=void 0;break}case"A":{let V=$+T(5),O=D+T(6);for(let[j,M,G]of jy(r,o,T(0),T(1),T(2),T(3)!==0,T(4)!==0,V,O))y(j,M,G.x,G.y);(r!==V||o!==O)&&m(V,O),d=l=void 0;break}}C=!1}return{contours:Is(t)}}function Is(e){return e.map(t=>{let n=[...t.anchors];if(t.closed&&n.length>1){let r=n[0],o=n[n.length-1];Hn(r,o)&&(n.pop(),n[0]={...r,...o.in?{in:o.in}:{}})}return{anchors:n.map(bo),closed:t.closed}})}function Dt(e,t,n){return bo({x:e.x,y:e.y,...t?{in:t}:{},...n?{out:n}:{}})}function bo(e){let t={x:e.x,y:e.y};return e.in&&!Hn(e.in,e)&&(t.in=e.in),e.out&&!Hn(e.out,e)&&(t.out=e.out),t}function Hn(e,t,n=1e-6){return Math.abs(e.x-t.x)<n&&Math.abs(e.y-t.y)<n}function zy(e){let t=0,n=()=>{for(;t<e.length&&/[\s,]/.test(e[t]);)t+=1},r=()=>{n();let s=/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/.exec(e.slice(t));if(s)return t+=s[0].length,Number(s[0])},o=()=>{n();let s=e[t];if(!(s!=="0"&&s!=="1"))return t+=1,Number(s)};return{more(){return n(),t<e.length},command(){n();let s=e[t];if(/[a-zA-Z]/.test(s))return t+=1,s},numbers(s){let i=[];for(let d=0;d<s;d+=1){let l=r();if(l===void 0)return;i.push(l)}return i},arc(){let s=this.numbers(3),i=o(),d=o(),l=this.numbers(2);if(!(!s||i===void 0||d===void 0||!l))return[...s,i,d,...l]},at(){return t}}}function jy(e,t,n,r,o,s,i,d,l){let f=Math.abs(n),p=Math.abs(r);if(f===0||p===0||e===d&&t===l)return[];let m=o*Math.PI/180,y=Math.cos(m),v=Math.sin(m),C=(e-d)/2,_=(t-l)/2,g=y*C+v*_,P=-v*C+y*_,A=g*g/(f*f)+P*P/(p*p);A>1&&(f*=Math.sqrt(A),p*=Math.sqrt(A));let R=f*f*p*p-f*f*P*P-p*p*g*g,$=f*f*P*P+p*p*g*g,D=(s===i?-1:1)*Math.sqrt(Math.max(0,R/$)),T=D*f*P/p,V=-D*p*g/f,O=y*T-v*V+(e+d)/2,j=v*T+y*V+(t+l)/2,M=(I,K,J,U)=>{let ue=I*J+K*U,Ee=Math.hypot(I,K)*Math.hypot(J,U),Ae=Math.acos(Math.min(1,Math.max(-1,ue/Ee)));return I*U-K*J<0?-Ae:Ae},G=M(1,0,(g-T)/f,(P-V)/p),z=M((g-T)/f,(P-V)/p,(-g-T)/f,(-P-V)/p);!i&&z>0&&(z-=2*Math.PI),i&&z<0&&(z+=2*Math.PI);let X=Math.max(1,Math.ceil(Math.abs(z)/(Math.PI/2)-1e-9)),ae=z/X,de=4/3*Math.tan(ae/4),S=I=>({x:O+f*Math.cos(I)*y-p*Math.sin(I)*v,y:j+f*Math.cos(I)*v+p*Math.sin(I)*y}),w=I=>({x:-f*Math.sin(I)*y-p*Math.cos(I)*v,y:-f*Math.sin(I)*v+p*Math.cos(I)*y}),L=[];for(let I=0;I<X;I+=1){let K=G+I*ae,J=K+ae,U=S(K),ue=I===X-1?{x:d,y:l}:S(J),Ee=w(K),Ae=w(J);L.push([{x:U.x+de*Ee.x,y:U.y+de*Ee.y},{x:ue.x-de*Ae.x,y:ue.y-de*Ae.y},ue])}return L}function zt(e){let t=[],n=r=>`${re(r.x)} ${re(r.y)}`;for(let r of e){let{anchors:o}=r,s=o[0];if(!s)continue;t.push(`M${n(s)}`);let i=hr(r);for(let d=0;d<i;d+=1){let l=o[d],f=o[(d+1)%o.length],p=r.closed&&d===o.length-1;!l.out&&!f.in?p||t.push(`L${n(f)}`):t.push(`C${n(l.out??l)} ${n(f.in??f)} ${n(f)}`)}r.closed&&t.push("Z")}return t.join(" ")}function hr(e){let t=e.anchors.length;return t<2?0:e.closed?t:t-1}function xr(e,t){let n=e.anchors[t],r=e.anchors[(t+1)%e.anchors.length];return[{x:n.x,y:n.y},n.out??{x:n.x,y:n.y},r.in??{x:r.x,y:r.y},{x:r.x,y:r.y}]}function pp(e,t){let n=e.anchors[t],r=e.anchors[(t+1)%e.anchors.length];return!n.out&&!r.in}function wo(e,t){let[n,r,o,s]=e,i=1-t,d=i*i*i,l=3*i*i*t,f=3*i*t*t,p=t*t*t;return{x:d*n.x+l*r.x+f*o.x+p*s.x,y:d*n.y+l*r.y+f*o.y+p*s.y}}function jt(e,t){return e.map(n=>({closed:n.closed,anchors:n.anchors.map(r=>{let o=t(r);return{x:o.x,y:o.y,...r.in?{in:t(r.in)}:{},...r.out?{out:t(r.out)}:{}}})}))}function Vn(e){let t=1/0,n=1/0,r=-1/0,o=-1/0,s=i=>{t=Math.min(t,i.x),n=Math.min(n,i.y),r=Math.max(r,i.x),o=Math.max(o,i.y)};for(let i of e){for(let l of i.anchors)s(l);let d=hr(i);for(let l=0;l<d;l+=1){let f=xr(i,l);for(let p of Ky(f))s(wo(f,p))}}if(t!==1/0)return{x:t,y:n,w:r-t,h:o-n}}function Ky(e){let[t,n,r,o]=e,s=[];for(let i of["x","y"]){let d=-t[i]+3*n[i]-3*r[i]+o[i],l=2*(t[i]-2*n[i]+r[i]),f=n[i]-t[i];if(Math.abs(d)<1e-12){Math.abs(l)>1e-12&&s.push(-f/l);continue}let p=l*l-4*d*f;if(p<0)continue;let m=Math.sqrt(p);s.push((-l+m)/(2*d),(-l-m)/(2*d))}return s.filter(i=>i>0&&i<1)}function Fs(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[n,r,o,s]=t;return{x:n,y:r,w:o,h:s}}function Un(e){return[e.x,e.y,e.w,e.h].map(re).join(" ")}function _o(e,t,n){return Fs(e)??{x:0,y:0,w:t,h:n}}function So(e,t){let n=e.w===0?1:t.w/e.w,r=e.h===0?1:t.h/e.h;return o=>({x:t.x+(o.x-e.x)*n,y:t.y+(o.y-e.y)*r})}function pd(e,t){let n=e.w===0||t.w===0?1:e.w/t.w,r=e.h===0||t.h===0?1:e.h/t.h;return o=>({x:e.x+(o.x-t.x)*n,y:e.y+(o.y-t.y)*r})}function md(e,t=.5){let[n,r,o,s]=e;if(Hn(n,r)&&Hn(o,s))return[n,s];let d=Math.hypot(r.x-n.x,r.y-n.y)+Math.hypot(o.x-r.x,o.y-r.y)+Math.hypot(s.x-o.x,s.y-o.y),l=Math.min(256,Math.max(4,Math.ceil(Math.sqrt(d/t)))),f=[];for(let p=0;p<=l;p+=1)f.push(wo(e,p/l));return f}function Bs(e){let t=0;for(let n of e)for(let r=0;r<hr(n);r+=1){let o=md(xr(n,r),.25);for(let s=1;s<o.length;s+=1){let i=o[s-1],d=o[s];t+=Math.hypot(d.x-i.x,d.y-i.y)}}return t}function hd(e,t,n){let r=0,o=0;for(let s of e){let i=Gy(s);if(i.length!==0){if(n.reach>0){let d=s.closed?i.length:i.length-1;for(let l=0;l<d;l+=1){let f=i[l],p=i[(l+1)%i.length];if(qy(t,f,p)<=n.reach)return!0}if(i.length===1&&Math.hypot(t.x-i[0].x,t.y-i[0].y)<=n.reach)return!0}if(n.fill)for(let d=0;d<i.length;d+=1){let l=i[d],f=i[(d+1)%i.length];l.y<=t.y!=f.y<=t.y&&l.x+(t.y-l.y)/(f.y-l.y)*(f.x-l.x)>t.x&&(o+=1,r+=f.y>l.y?1:-1)}}}return n.fill?n.rule==="evenodd"?o%2===1:r!==0:!1}function Gy(e){let t=e.anchors[0];if(!t)return[];let n=[{x:t.x,y:t.y}],r=hr(e);for(let o=0;o<r;o+=1)n.push(...md(xr(e,o)).slice(1));return e.closed&&n.length>1&&n.pop(),n}function qy(e,t,n){let r=n.x-t.x,o=n.y-t.y,s=r*r+o*o,i=s===0?0:Math.max(0,Math.min(1,((e.x-t.x)*r+(e.y-t.y)*o)/s));return Math.hypot(e.x-(t.x+i*r),e.y-(t.y+i*o))}function xd(e,t){let n;return e.forEach((r,o)=>{let s=hr(r);for(let i=0;i<s;i+=1){let d=xr(r,i),l=_=>{let g=wo(d,_);return Math.hypot(g.x-t.x,g.y-t.y)},f=32,p=0;for(let _=1;_<=f;_+=1)l(_/f)<l(p)&&(p=_/f);let m=Math.max(0,p-1/f),y=Math.min(1,p+1/f);for(let _=0;_<24;_+=1){let g=m+(y-m)/3,P=y-(y-m)/3;l(g)<l(P)?y=P:m=g}let v=(m+y)/2,C=l(v);(!n||C<n.distance)&&(n={contour:o,segment:i,t:v,point:wo(d,v),distance:C})}}),n}function gd(e,t,n,r){return e.map((o,s)=>{if(s!==t)return o;let i=[...o.anchors],d=i.length,l=i[n],f=(n+1)%d,p=i[f];if(pp(o,n)){let T={x:l.x+(p.x-l.x)*r,y:l.y+(p.y-l.y)*r};return i.splice(n+1,0,T),{...o,anchors:i}}let[m,y,v,C]=xr(o,n),_=(T,V)=>({x:T.x+(V.x-T.x)*r,y:T.y+(V.y-T.y)*r}),g=_(m,y),P=_(y,v),A=_(v,C),R=_(g,P),$=_(P,A),D=_(R,$);return i[n]=bo({...l,out:g}),i[f]=bo({...p,in:A}),i.splice(n+1,0,bo({x:D.x,y:D.y,in:R,out:$})),{...o,anchors:i}})}var Rs=.5522847498;function yd(e,t,n=0){let r=Math.max(0,Math.min(n,e/2,t/2));if(r===0)return[{closed:!0,anchors:[{x:0,y:0},{x:e,y:0},{x:e,y:t},{x:0,y:t}]}];let o=Rs*r,s=[{x:r,y:0,in:{x:r-o,y:0}},{x:e-r,y:0,out:{x:e-r+o,y:0}},{x:e,y:r,in:{x:e,y:r-o}},{x:e,y:t-r,out:{x:e,y:t-r+o}},{x:e-r,y:t,in:{x:e-r+o,y:t}},{x:r,y:t,out:{x:r-o,y:t}},{x:0,y:t-r,in:{x:0,y:t-r+o}},{x:0,y:r,out:{x:0,y:r-o}}];return[{closed:!0,anchors:Wy(s)}]}function vd(e,t){let n=e/2,r=t/2,o=Rs*n,s=Rs*r;return[{closed:!0,anchors:[{x:n,y:0,in:{x:n-o,y:0},out:{x:n+o,y:0}},{x:e,y:r,in:{x:e,y:r-s},out:{x:e,y:r+s}},{x:n,y:t,in:{x:n+o,y:t},out:{x:n-o,y:t}},{x:0,y:r,in:{x:0,y:r+s},out:{x:0,y:r-s}}]}]}function Wy(e){let t=[];for(let o of e){let s=t[t.length-1];if(s&&Hn(s,o)&&!s.out&&!o.in){t[t.length-1]=Dt(s,s.in,o.out);continue}t.push(o)}let n=t[0],r=t[t.length-1];return t.length>1&&n&&r&&Hn(n,r)&&!r.out&&!n.in&&(t[0]=Dt(n,r.in,n.out),t.pop()),t}var et=class extends Error{op;constructor(t,n){super(t),this.op=n,this.name="OpError"}};function _e(e,t){let n=e,r=[];for(let o of t){let s=xp(n,o);n=s.document,r.push(s.inverse)}return r.reverse(),{document:n,inverse:r}}function xp(e,t){let n=Jy(e,t);if(!Xy(e.root)&&!Yy(t))return bd.add(n.document.root),n;let r=Bt(n.document.root);return r===n.document.root?n:{document:{...n.document,root:r},inverse:n.inverse}}var bd=new WeakSet;function Xy(e){return bd.has(e)?!1:io(e)?!0:(bd.add(e),!1)}function Yy(e){if(e.op==="set")return e.prop==="component";if(e.op!=="insert")return!1;let t=!1;return ne(e.node,n=>((n.type==="instance"||n.type==="frame"&&n.component===!0)&&(t=!0),t?!1:void 0)),t}function Jy(e,t){switch(t.op){case"set":{let n=At(e.root,t.id);if(n)return Zy(e,t,n.instance.id,n.key);if(t.prop==="children"&&F(e.root,t.id)?.type==="instance")throw new et(`${t.id}'s contents come from its component`,t);let r=F(e.root,t.id);if(!r)throw new et(`No node ${t.id}`,t);let o=r[t.prop];return{document:Eo(e,zs(e.root,t.id,s=>gp(s,t.prop,t.value),t)),inverse:{op:"set",id:t.id,prop:t.prop,value:o}}}case"insert":{if(Hs(e,t.parent,t,!0),F(e.root,t.node.id))throw new et(`Duplicate id ${t.node.id}`,t);let n=Vs(e.root,t.parent,r=>{let o=hp(t.index,0,r.length);return[...r.slice(0,o),t.node,...r.slice(o)]},t);return{document:Eo(e,n),inverse:{op:"remove",id:t.node.id}}}case"remove":{Hs(e,t.id,t,!1);let n=mp(e,t.id,t),r=Vs(e.root,n.parent.id,o=>o.filter(s=>s.id!==t.id),t);return{document:Eo(e,r),inverse:{op:"insert",parent:n.parent.id,index:n.index,node:n.node}}}case"move":{Hs(e,t.id,t,!1),Hs(e,t.parent,t,!0);let n=mp(e,t.id,t),r=Vs(e.root,n.parent.id,s=>s.filter(i=>i.id!==t.id),t),o=Vs(r,t.parent,s=>{let i=hp(t.index,0,s.length);return[...s.slice(0,i),n.node,...s.slice(i)]},t);return{document:Eo(e,o),inverse:{op:"move",id:t.id,parent:n.parent.id,index:n.index}}}case"setTitle":{let{title:n,...r}=e;return{document:t.value===void 0?r:{...r,title:t.value},inverse:{op:"setTitle",value:n}}}case"setToken":{let n=Object.prototype.hasOwnProperty.call(e.tokens,t.name)?e.tokens[t.name]:void 0,r={...e.tokens};return t.value===void 0?delete r[t.name]:r[t.name]=t.value,{document:{...e,tokens:r},inverse:{op:"setToken",name:t.name,value:n}}}case"setAsset":{let n=Object.prototype.hasOwnProperty.call(e.assets,t.name)?e.assets[t.name]:void 0,r={...e.assets};return t.value===void 0?delete r[t.name]:r[t.name]=t.value,{document:{...e,assets:r},inverse:{op:"setAsset",name:t.name,value:n}}}case"setFont":{let n=Object.prototype.hasOwnProperty.call(e.fonts,t.name)?e.fonts[t.name]:void 0,r={...e.fonts};return t.family===void 0?delete r[t.name]:r[t.name]=t.family,{document:{...e,fonts:r},inverse:{op:"setFont",name:t.name,family:n}}}case"setBrand":{let{brand:n,...r}=e,o=t.value===void 0?r:{...r,brand:Pn(t.value)};return{document:{...o,version:st(o)},inverse:{op:"setBrand",value:n}}}case"setTheme":{let{themes:n,...r}=e,o=Ot(t.value),s=o===void 0?r:{...r,themes:o};return{document:{...s,version:st(s)},inverse:{op:"setTheme",value:n}}}case"setKind":{let n={...e,kind:t.value};return{document:{...n,version:st(n)},inverse:{op:"setKind",value:e.kind}}}case"setMotion":{let n=e.motion&&Object.prototype.hasOwnProperty.call(e.motion,t.page)?e.motion[t.page]:void 0,r={...e.motion};return Vt(t.value)?delete r[t.page]:r[t.page]=t.value,{document:dd(e,r),inverse:{op:"setMotion",page:t.page,value:n}}}}}function Us(e,t){if(!e.motion||!t.some(r=>r.op==="remove"||r.op==="move"))return t;let n=ld(e,_e(e,t).document);return n.length===0?t:[...t,...n]}function Zy(e,t,n,r){if(!fn(t.prop))throw new et(`${t.id} is part of ${n}; its ${t.prop} comes from the component`,t);let o=F(e.root,n);if(o?.type!=="instance")throw new et(`No instance ${n}`,t);let s=o.overrides?.[r]?.[t.prop],i=Ga(o.overrides,r,t.prop,t.value,Ka(e.root,o,r,t.prop));return{document:Eo(e,zs(e.root,n,d=>gp(d,"overrides",i),t)),inverse:{op:"set",id:t.id,prop:t.prop,value:s}}}function Hs(e,t,n,r){let o=At(e.root,t),s=r&&F(e.root,t)?.type==="instance";if(o)throw new et(`${t} is inside ${o.instance.id} \u2014 change its component, or detach the instance first`,n);if(s)throw new et(`${t} holds only copies of its component \u2014 change the component, or detach ${t} first`,n)}function Eo(e,t){if(t.type!=="canvas")throw new Error("The document root must stay a canvas");return{...e,root:t}}function gp(e,t,n){let r={...e};return n===void 0?delete r[t]:r[t]=n,r}function zs(e,t,n,r){if(e.id===t)return n(e);if(!le(e))return e;let o=!1,s=e.children.map(i=>{let d=zs(i,t,n,r);return d!==i&&(o=!0),d});return o?{...e,children:s}:e}function Vs(e,t,n,r){let o=F(e,t);if(!o)throw new et(`No node ${t}`,r);if(!le(o))throw new et(`${t} cannot hold children`,r);return zs(e,t,s=>({...s,children:n(s.children)}),r)}function mp(e,t,n){if(t===e.root.id)throw new et("The document root cannot be removed or moved",n);let r,o=s=>{le(s)&&s.children.forEach((i,d)=>{i.id===t&&(r={node:i,parent:s,index:d}),o(i)})};if(o(e.root),!r)throw new et(`No node ${t}`,n);return r}function hp(e,t,n){return Math.min(Math.max(e,t),n)}function kd(e,t){let n=[];e.kind!==t.kind&&n.push({op:"setKind",value:t.kind}),e.title!==t.title&&n.push({op:"setTitle",value:t.title});for(let s of gr(e.tokens,t.tokens)){let i=t.tokens[s];e.tokens[s]!==i&&n.push({op:"setToken",name:s,value:i})}for(let s of gr(e.fonts,t.fonts)){let i=t.fonts[s];ev(e.fonts[s],i)||n.push({op:"setFont",name:s,family:i})}for(let s of gr(e.assets,t.assets)){let i=t.assets[s];(e.assets[s]?.hash!==i?.hash||e.assets[s]?.ms!==i?.ms)&&n.push({op:"setAsset",name:s,value:i})}if(!Qy(e.root.children,t.root.children)){for(let s of e.root.children)n.push({op:"remove",id:s.id});t.root.children.forEach((s,i)=>{n.push({op:"insert",parent:e.root.id,index:i,node:s})})}for(let s of gr(e.motion??{},t.motion??{})){let i=t.motion?.[s];Ps(e.motion?.[s],i)||n.push({op:"setMotion",page:s,value:i})}Ha(e.brand,t.brand)||n.push({op:"setBrand",value:t.brand}),tv(e.themes,t.themes)||n.push({op:"setTheme",value:t.themes});let r=e.root,o=t.root;for(let s of gr(r,o))s==="type"||s==="id"||s==="children"||yp(r[s],o[s])||n.push({op:"set",id:e.root.id,prop:s,value:o[s]});return n}function gr(e,t){return[...new Set([...Object.keys(e),...Object.keys(t)])]}function yp(e,t){return e===t?!0:ye(e)&&ye(t)&&e.expr===t.expr}function Qy(e,t){return e.length===t.length&&e.every((n,r)=>wd(n,t[r]))}function wd(e,t){if(yp(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((s,i)=>wd(s,t[i]));let n=e,r=t;return gr(n,r).every(s=>wd(n[s],r[s]))}function ev(e,t){if(e===t)return!0;if(!e||!t||e.family!==t.family||e.fallback!==t.fallback)return!1;let n=e.faces??[],r=t.faces??[];return n.length===r.length&&n.every((o,s)=>{let i=r[s];return o.src===i.src&&o.asset===i.asset&&o.weight===i.weight&&o.style===i.style})}function tv(e,t){let n=Ot(e)?.dark??{},r=Ot(t)?.dark??{},o=Object.keys(n);return o.length===Object.keys(r).length&&o.every(s=>n[s]===r[s])}var yr={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"],["component","boolean"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],group:[["name","string"],["hidden","boolean"],["locked","boolean"]],instance:[["name","string"],["component","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["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"]]},Co=[["font","string"],["size","number"],["weight","number"],["italic","boolean"],["underline","boolean"],["strike","boolean"],["fill","string"],["letterSpacing","number"],["link","string"]],_d=[["weight","number"],["style","fontStyle"]],Mo=[["enter","pageEffect"],["duration","number"],["scroll","boolean"],["length","time"],["w","number"],["h","number"],["bpm","number"],["meter","number"]],zn=[["enter","nodeEffect"],["exit","nodeEffect"],["emphasis","emphasisEffect"],["from","from"],["by","piece"],["stagger","time"],["duration","time"],["hold","time"],["delay","time"],["at","time"],["after","string"],["with","string"],["step","boolean"],["together","boolean"],["on","on"],["ease","ease"],["pad","number"],["go","string"]],Ao=[["from","number"],["volume","number"],["fadein","time"],["fadeout","time"],["loop","boolean"]],Sd=Object.keys(yr);function js(e){return Sd.includes(e)}function Ks(e,t){return yr[e].find(([n])=>n===t)?.[1]}function Gs(e){for(let t of Sd){if(t==="canvas"||t==="instance")continue;let n=Ks(t,e);if(n!==void 0)return n}}var qs="override",ze=" ";function Fe(e){if(ye(e))return/^[$@]/.test(e.expr)&&!/\s/.test(e.expr)?e.expr:`(${e.expr})`;if(typeof e=="number")return re(e);let t=String(e);return nv(t)?JSON.stringify(t):t}function nv(e){return e===""||/[\s"=()]/.test(e)||/^[$@]/.test(e)}function je(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 r=Pt(e);return r===void 0?{error:`Malformed quoted string ${e}`}:vp(r,t,e)}if(iv(e)){if(!rv(t))return{error:ov(e,t)};let r=_p(e).trim();return r===""?{error:"Empty expression"}:{value:wt(r)}}return t==="numberValue"&&wp.test(e)?{value:wt(e)}:vp(e,t,e)}var wp=/^-?\d+(?:\.\d+)?%$/;function rv(e){return e==="numberValue"||e==="stringValue"}function ov(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 kp(e,t){let n=/^(-?\d+(?:\.\d+)?)([A-Za-z]+)$/.exec(e);return n?/^(?:beats?|bars?)$/.test(n[2])?" \u2014 beats and bars count motion times on a page with bpm=; this is milliseconds":n[2]==="s"&&t==="number"?` \u2014 durations are milliseconds: ${Number(n[1])*1e3}`:/^(?:px|pt|deg|ms)$/.test(n[2])?` \u2014 drop the unit: ${n[1]}`:" \u2014 units are not supported: use a number, a percentage like (100%), or an expression":t==="number"?wp.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 vp(e,t,n){switch(t){case"numberValue":case"number":{let r=Number(e);return Number.isFinite(r)&&e.trim()!==""?{value:r}:{error:`Expected a number, got ${n}${kp(e,t)}`}}case"align":return dn.includes(e)?{value:e}:{error:`Expected one of ${dn.join(", ")}, got ${n}`};case"valign":return ln.includes(e)?{value:e}:{error:`Expected one of ${ln.join(", ")}, got ${n}`};case"fontStyle":return e==="normal"||e==="italic"?{value:e}:{error:`Expected normal or italic, got ${n}`};case"imageFit":return un.includes(e)?{value:e}:{error:`Expected one of ${un.join(", ")}, got ${n}`};case"fillRule":return Kt(Tn,e,n);case"lineCap":return Kt(Ln,e,n);case"lineJoin":return Kt(Dn,e,n);case"blendMode":return Kt(On,e,n);case"pageEffect":return Kt(fr,e,n);case"nodeEffect":return Kt(mo,e,n);case"emphasisEffect":return Kt(ho,e,n);case"ease":return Kt(xo,e,n);case"piece":return Kt(go,e,n);case"time":{let r=In(e);if(r)return{value:Rn(r.count,r.unit)};let o=Number(e);return Number.isFinite(o)&&e.trim()!==""?{value:o}:{error:`Expected milliseconds or beats, got ${n}${sv(e)}`}}case"on":return fo.includes(e)?{value:e}:e==="downbeat"?{error:`Expected beat or bar, got ${n} \u2014 write on=bar: a bar starts on its downbeat`}:e==="beats"||e==="bars"?{error:`Expected beat or bar, got ${n} \u2014 write on=${e.slice(0,-1)}`}:{error:`Expected beat or bar, got ${n}`};case"from":{if(hn.includes(e))return{value:e};let r=Number(e);return Number.isFinite(r)&&e.trim()!==""?{value:r}:{error:`Expected a number or one of ${hn.join(", ")}, got ${n}`}}default:return{value:e}}}function sv(e){let t=/^(beat|bar|b)[:\s#]?(\d+(?:\.\d+)?)$/.exec(e);if(t){let r=t[1]==="bar"?"bar":"beat",o=Number(t[2]);return` \u2014 write ${Rn(Math.max(0,o-1),r)} (counted from the start: ${r} ${o}'s ${r==="bar"?"downbeat":"start"})`}let n=/^(\d+(?:\.\d+)?)\s*(b|bt|beat|bars?|beats?)$/.exec(e);if(n){let r=n[2]?.startsWith("bar")?"bar":"beat";return` \u2014 write ${Rn(Number(n[1]),r)} (counted from the start)`}return kp(e,"number")}function Kt(e,t,n){return e.includes(t)?{value:t}:{error:`Expected one of ${e.join(", ")}, got ${n}`}}function iv(e){return/^[$@(]/.test(e)}function Pt(e){try{let t=JSON.parse(e);return typeof t=="string"?t:void 0}catch{return}}function _p(e){if(!e.startsWith("("))return e;let t=0;for(let n=0;n<e.length;n+=1){let r=e[n];if(r==="(")t+=1;else if(r===")"&&(t-=1,t===0))return n===e.length-1?e.slice(1,-1):e}return e}function Sp(e){let t=[],n="",r=0,o=!1;for(let s=0;s<e.length;s+=1){let i=e[s];if(o){n+=i,i==="\\"?(n+=e[s+1]??"",s+=1):i==='"'&&(o=!1);continue}if(i==='"'){o=!0,n+=i;continue}if(i==="("?r+=1:i===")"&&(r=Math.max(0,r-1)),r===0&&/\s/.test(i)){n!==""&&t.push(n),n="";continue}n+=i}return n!==""&&t.push(n),t}function Ws(e,t,n){let r=n===void 0?void 0:Ke(n);if(r?.value===void 0||!bp(e[t]??""))return;let o=t;for(;o<e.length&&bp(e[o]??"");)o+=1;let s=[_p(r.value),...e.slice(t,o)].join(" ");return{end:o,message:`${r.key}: an expression with spaces needs parentheses \u2014 write ${r.key}=(${s})`}}function bp(e){return!e.includes("=")&&/^(?:[-+*/]|-?\d+(?:\.\d+)?%?|[$@][\w.]*|[A-Za-z_]\w*(?:\.\w+)+|\(.*|.*\))$/.test(e)}function Ke(e){let t=e.indexOf("=");return t===-1?{key:e,value:void 0}:{key:e.slice(0,t),value:e.slice(t+1)}}function Ed(e,t){let n,r=0,o,s=[],i=[],d={},l={},f={},p={},m=[],y=!1,v=!1,C,_=(O,j,M)=>{t.push({severity:"warning",code:j,message:`Line ${O}: ${M}`})},g=(O,j,M)=>{e(O.number,"invalid-brand",`${j} ${M} is written twice \u2014 keep one`)},P=O=>{if(n){e(O.number,"invalid-brand",`A document has one brand line; the first is on line ${r}`);return}let j=O.words[1]===void 0?void 0:Fa(O.words[1]);if(!j){e(O.number,"invalid-brand","Expected brand <slug>@<version>, e.g. brand ember@3 \u2014 a slug is lower case, digits and dashes");return}let M=O.words.slice(2).includes("strict"),G=Gt({...O,words:O.words.filter((X,ae)=>ae<2||X!=="strict")},2,["id","theme"],e),z=G.theme;z!==void 0&&!Es.includes(z)&&e(O.number,"invalid-brand",`theme= is light or dark, got ${z}`),n={...j,...G.id===void 0?{}:{id:G.id},...z==="dark"||z==="light"?{theme:z}:{},...M?{strict:!0}:{}},r=O.number,C={kind:"brand"}},A=O=>{let j=O.words[0];if(j==="summary"){let M=Xs(O,1);M===void 0?e(O.number,"invalid-brand",'Expected summary "\u2026"'):o=M;return}if(j==="change"){let M=Number(O.words[1]),G=O.words[2]===void 0?void 0:Cp(O.words[2]);if(!Number.isSafeInteger(M)||M<1||G===void 0){e(O.number,"invalid-brand",'Expected change <version> "<what changed>" at=<date>');return}let z=Gt(O,3,["at"],e);s.push({version:M,note:G,...z.at===void 0?{}:{at:z.at}});return}if(j==="source"){let M=O.words[1];if(M===void 0||M.includes("=")){e(O.number,"invalid-brand","Expected source <kind> key=value\u2026, e.g. source site url=\u2026");return}i.push({kind:M,props:Gt(O,2,void 0,e)});return}if(j==="rule"){D(O);return}if(j==="banned"){let M=Xs(O,1);if(M===void 0){e(O.number,"invalid-brand",'Expected banned "\u2026"');return}(p.voice??={entries:[]}).entries.push({kind:"banned",text:M});return}e(O.number,"invalid-brand",`"${j}" is not a line of the brand block \u2014 it holds summary, change and source, and in a design rule and banned`)},R=O=>{let j=O.words[1];if(j===void 0||j.includes("=")){e(O.number,"invalid-role","Expected role <name> light=<token or colour> dark=\u2026");return}let M=Gt(O,2,["light","dark"],e),G=M.light;if(G===void 0){e(O.number,"invalid-role",`role ${j} needs light=`);return}if(Object.prototype.hasOwnProperty.call(d,j))return g(O,"role",j);let z=M.dark;d[j]={light:Ep(G),...z===void 0?{}:{dark:Ep(z)}}},$=O=>{let j=O.words[1];if(j===void 0||j.includes("=")){e(O.number,"invalid-logo","Expected logo <id> asset=<name> min=<px> clear=<fraction>");return}let M=Gt(O,2,["asset","min","clear"],e),G=M.asset;if(G===void 0){e(O.number,"invalid-logo",`logo ${j} needs asset=`);return}let z={asset:G};for(let X of["min","clear"]){let ae=M[X];if(ae===void 0)continue;let de=Number(ae);if(!Number.isFinite(de)||de<0){e(O.number,"invalid-logo",`logo ${j}: ${X} must be a number, got ${ae}`);continue}z[X]=de}if(Object.prototype.hasOwnProperty.call(l,j))return g(O,"logo",j);l[j]=z},D=O=>{let j=O.words[1],M=O.words[2],G=O.words[3],z=G?.startsWith('"')===!0?Pt(G):void 0;if(j===void 0||j.includes("=")){e(O.number,"invalid-rule",'Expected rule <id> must|should "<what it asks>" check=\u2026');return}if(M===void 0||!Cs.includes(M)){e(O.number,"invalid-rule",`rule ${j}: the second word is must or should`);return}if(z===void 0){e(O.number,"invalid-rule",`rule ${j} needs its words, quoted: rule ${j} ${M} "\u2026"`);return}let{check:X,...ae}=Gt(O,4,void 0,e);if(X!==void 0&&!Ms.includes(X)&&_(O.number,"unknown-check",`rule ${j}: this build has no check "${X}", so it is kept as words only \u2014 the checks are ${Ms.join(", ")}`),Object.prototype.hasOwnProperty.call(f,j))return g(O,"rule",j);f[j]={level:M,text:z,...X===void 0?{}:{check:X},...Object.keys(ae).length===0?{}:{params:ae}}},T=(O,j)=>{let M=O.words[0];if(M.startsWith('"')){let G=Xs(O,0);G===void 0?e(O.number,"invalid-guide",`Could not read ${O.text}`):j.push({kind:"line",text:G});return}if(M==="banned"||M==="avoid"){let G=Xs(O,1);G===void 0?e(O.number,"invalid-guide",`Expected ${M} "\u2026"`):j.push({kind:M,text:G});return}if(M==="rewrite"){let G=Gt(O,1,["from","to"],e),z=G.from,X=G.to;if(z===void 0||X===void 0){e(O.number,"invalid-guide",'Expected rewrite from="\u2026" to="\u2026"');return}j.push({kind:"rewrite",from:z,to:X});return}if(M==="ref"||M==="approved"||M==="rejected"){let G=Gt(O,1,["asset","note"],e),z=G.asset;if(z===void 0){e(O.number,"invalid-guide",`Expected ${M} asset=<name> note="\u2026"`);return}let X=G.note;j.push({kind:M,asset:z,...X===void 0?{}:{note:X}});return}e(O.number,"invalid-guide",`"${M}" is not a guide line \u2014 a guide holds quoted lines, banned, avoid, rewrite, ref, approved and rejected`)},V=O=>{let j=O.words[0];if(j.includes("=")||j.startsWith('"')){e(O.number,"invalid-review",'Expected <what>.<id> from=\u2026 note="\u2026", e.g. role.muted from=site');return}let M=Gt(O,1,["from","note"],e);m.push({target:j,...M.from===void 0?{}:{from:M.from},...M.note===void 0?{}:{note:M.note}})};return{take(O){if(O.indent>0)return C?(C.kind==="brand"?A(O):C.kind==="guide"?T(O,C.entries):V(O),!0):!1;C=void 0;let j=O.words[0];if(j!=="brand"&&!As(j))return!1;switch(v=!0,j){case"brand":P(O);break;case"role":R(O);break;case"logo":$(O);break;case"rule":D(O);break;case"guide":{let M=O.words[1];if(M===void 0||M.includes("=")||O.words.length>2){e(O.number,"invalid-guide","Expected guide <id> on its own line, e.g. guide voice"),C={kind:"guide",id:"",entries:[]};break}if(Object.prototype.hasOwnProperty.call(p,M)){g(O,"guide",M),C={kind:"guide",id:"",entries:[]};break}let G=[];p[M]={entries:G},C={kind:"guide",id:M,entries:G};break}case"review":O.words.length>1&&e(O.number,"invalid-review","review is a block: its items go on the lines under it"),y=!0,C={kind:"review"};break}return!0},finish(){if(!v)return{header:!1,review:!1};let O=n??$s();return{brand:{slug:O.slug,version:O.version,...n?.id===void 0?{}:{id:n.id},...n?.theme===void 0?{}:{theme:n.theme},...n?.strict===!0?{strict:!0}:{},...o===void 0?{}:{summary:o},changes:s,sources:i,roles:d,logos:l,rules:f,guides:p,review:m},header:n!==void 0,review:y}}}}function Gt(e,t,n,r){let o={};for(let s of e.words.slice(t)){let{key:i,value:d}=Ke(s);if(d===void 0){r(e.number,"invalid-brand",`A stray word "${s}" \u2014 expected key=value`);continue}if(n!==void 0&&!n.includes(i)){r(e.number,"invalid-brand",`"${i}" is not allowed here; this line takes ${n.join(", ")}`);continue}o[i]=Cp(d)}return o}function Xs(e,t){if(e.words.length!==t+1)return;let n=e.words[t];return n.startsWith('"')?Pt(n):void 0}function Cp(e){return e.startsWith('"')?Pt(e)??e:e}function Ep(e){return e.startsWith("$")?e.slice(1):e}function Mp(e,t,n="brand"){if(!t||t.slug==="")return;let r=["brand",Ba(t)];t.id!==void 0&&r.push(`id=${Fe(t.id)}`),t.theme!==void 0&&r.push(`theme=${t.theme}`),t.strict===!0&&r.push("strict"),e.push(r.join(" ")),t.summary!==void 0&&e.push(`${ze}summary ${JSON.stringify(t.summary)}`);for(let o of t.changes){let s=["change",re(o.version),JSON.stringify(o.note)];o.at!==void 0&&s.push(`at=${Fe(o.at)}`),e.push(ze+s.join(" "))}for(let o of t.sources)e.push(ze+["source",o.kind,...vr(o.props)].join(" "));if(n==="design"){for(let o of Ap(t))e.push(ze+o);for(let o of av(t))e.push(`${ze}banned ${JSON.stringify(o)}`)}e.push("")}function Ap(e){return Object.entries(e.rules).map(([t,n])=>["rule",t,n.level,JSON.stringify(n.text),...vr({check:n.check,...n.params})].join(" "))}function av(e){return(e.guides.voice?.entries??[]).flatMap(t=>t.kind==="banned"?[t.text]:[])}function $p(e,t,n="brand"){if(!t)return;let r=n==="design",o=s=>{s.length!==0&&e.push(...s,"")};o(Object.entries(t.roles).map(([s,i])=>["role",s,...vr({light:i.light,dark:i.dark})].join(" "))),o(Object.entries(t.logos).map(([s,i])=>["logo",s,...vr({asset:i.asset,min:i.min===void 0?void 0:re(i.min),clear:i.clear===void 0?void 0:re(i.clear)})].join(" "))),r||o(Ap(t));for(let[s,i]of Object.entries(t.guides)){let d=r&&s==="voice"?i.entries.filter(l=>l.kind!=="banned"):i.entries;if(!(r&&d.length===0)){e.push(`guide ${s}`);for(let l of d)e.push(ze+dv(l));e.push("")}}if(t.review.length>0){e.push("review");for(let s of t.review)e.push(ze+[s.target,...vr({from:s.from,note:s.note})].join(" "));e.push("")}}function dv(e){switch(e.kind){case"line":return JSON.stringify(e.text);case"banned":case"avoid":return`${e.kind} ${JSON.stringify(e.text)}`;case"rewrite":return`rewrite from=${JSON.stringify(e.from)} to=${JSON.stringify(e.to)}`;case"ref":case"approved":case"rejected":return[e.kind,...vr({asset:e.asset,note:e.note})].join(" ")}}function vr(e){let t=[];for(let[n,r]of Object.entries(e))r!==void 0&&t.push(`${n}=${Fe(r)}`);return t}var lv=new Set(["exit","delay","step","together","go","at","after","with"]),Tp=["at","after","with","together","step"],uv=new Set(["pad","duration","delay","ease","on",...Tp]);function Cd(e){if(e==="at"||e==="length")return xn;if(e==="w"||e==="h")return Lt;if(e==="duration"||e==="delay"||e==="stagger"||e==="hold")return Tt;if(e==="pad")return Lt}function Md(e,t){let n=e.words[1];if(n===void 0||n.includes("=")){t(e.number,"invalid-motion","Expected motion <page>, e.g. motion intro enter=fade");return}let r={};for(let s of e.words.slice(2)){let{key:i,value:d}=Ke(s),l=Mo.find(([p])=>p===i)?.[1];if(l===void 0){let p=lv.has(i)?` \u2014 ${i} goes on a node's line, under the header`:"";t(e.number,"invalid-motion",`motion ${n} has no "${i}"${p}`,n);continue}let f=je(d??"",l);"error"in f?t(e.number,"invalid-motion",`${i}: ${gv(i,d)??f.error}`,n):i==="bpm"&&!hv(f.value)?t(e.number,"invalid-motion",`bpm: expected ${20} to ${300} beats a minute, got ${d??""}`,n):i==="meter"&&!xv(f.value)?t(e.number,"invalid-motion",`meter: expected a whole number of beats in a bar, 1 to ${16}, got ${d??""}`,n):f.value!==!1&&(r[i]=f.value)}let o=_t({...r,lines:[]});for(let[s]of Mo){let i=r[s];if(i===void 0||Cd(s)===void 0)continue;let d=Od(s,i,o,n);d!==void 0&&(t(e.number,"invalid-motion",d,n),delete r[s])}return{page:n,number:e.number,head:r,lines:[],where:new Map,taken:new Map,numbers:[]}}function Ad(e,t,n){if(t.words[0]==="music"&&!(t.words[1]??"").includes("=")){cv(e,t,n);return}let r=t.words[0]==="camera"&&t.words[1]!==void 0&&!t.words[1].includes("="),o=r?t.words.slice(1):t.words,s=o[0];if(t.indent!==1){n(t.number,"invalid-motion","A motion line sits one level under its page");return}if(s.includes("=")){n(t.number,"invalid-motion",`Expected a node id first, got ${s}`);return}if(s===e.page&&!r){n(t.number,"invalid-motion",`${s} is the page: its transition goes on the header (motion ${s} enter=fade)`,s);return}let i=r?{id:s,camera:!0}:{id:s},d=!0;for(let p of o.slice(1)){let{key:m,value:y}=Ke(p),v=zn.find(([g])=>g===m)?.[1];if(v===void 0){n(t.number,"invalid-motion",`A motion line has no "${m}"${yv(m)}`,s),d=!1;continue}if(r&&!uv.has(m)){n(t.number,"invalid-motion",`A camera line moves the shot and says only pad=, duration=, delay=, ease= and when: not ${m}=`,s),d=!1;continue}let C=je(y??"",v),_="error"in C||Cd(m)===void 0?void 0:Od(m,C.value,_t(Dp(e)),e.page);"error"in C?(n(t.number,"invalid-motion",`${m}: ${C.error}`,s),d=!1):_!==void 0?(n(t.number,"invalid-motion",`${s}: ${_}`,s),d=!1):m==="on"&&e.head.bpm===void 0?(n(t.number,"invalid-motion",`${s}: on=${String(C.value)} needs a tempo \u2014 motion ${e.page} bpm=120`,s),d=!1):m==="go"&&Ht(C.value)===void 0?(n(t.number,"invalid-motion",`go: expected #<page>, back, next, or an https: or mailto: link, got ${y??""}`,s),d=!1):C.value!==!1&&(i[m]=C.value)}i.enter!==void 0&&i.exit!==void 0&&(n(t.number,"invalid-motion",`${s} either enters or exits on one line \u2014 write a second line for the other`,s),d=!1),i.emphasis!==void 0&&(i.enter!==void 0||i.exit!==void 0)&&(n(t.number,"invalid-motion",`${s} either ${i.enter!==void 0?"enters":"exits"} or is stressed on one line \u2014 write a second line for emphasis=`,s),d=!1);let l=Tp.filter(p=>i[p]!==void 0);if(i.step===!0&&i.together===!0?(n(t.number,"invalid-motion",`${s} waits for a step or starts together with the line above, not both`,s),d=!1):l.length>1?(n(t.number,"invalid-motion",`${s} says when it starts twice (${l.join(", ")}): keep one`,s),d=!1):i.on!==void 0&&(i.with!==void 0||i.together===!0)&&(n(t.number,"invalid-motion",`${s} starts with another line (${i.with===void 0?"together":"with="}), so on= could only pull it apart: keep one`,s),d=!1),d){let p=vv(i);p!==void 0&&(n(t.number,"invalid-motion",`${s}: ${p}`,s),d=!1)}if(!d)return;let f=mv(i);if(!cr(f)){n(t.number,"invalid-motion",`${s} says nothing: give it enter=, exit=, emphasis= or go=`,s);return}if(r){e.where.has(s)||e.where.set(s,t.number),e.lines.push(f),e.numbers.push(t.number);return}for(let p of["enter","exit","emphasis","go"]){if(f[p]===void 0)continue;let m=e.taken.get(`${s} ${p}`);if(m!==void 0){let y=p==="go"?"has a go=":p==="enter"?"enters":p==="exit"?"exits":"has an emphasis=";n(t.number,"invalid-motion",`${s} already ${y} on line ${m}`,s);return}}for(let p of["enter","exit","emphasis","go"])f[p]!==void 0&&e.taken.set(`${s} ${p}`,t.number);e.where.has(s)||e.where.set(s,t.number),e.lines.push(f),e.numbers.push(t.number)}function $d(e){let t={...e.head.enter===void 0?{}:{enter:e.head.enter},...e.head.duration===void 0?{}:{duration:e.head.duration},...e.head.scroll===!0?{scroll:!0}:{},...e.head.length===void 0?{}:{length:e.head.length},...e.head.w===void 0?{}:{w:e.head.w},...e.head.h===void 0?{}:{h:e.head.h},...e.head.bpm===void 0?{}:{bpm:e.head.bpm},...e.head.meter===void 0?{}:{meter:e.head.meter},...e.music===void 0?{}:{music:e.music},lines:e.lines};return Vt(t)?void 0:t}function Lp(e,t){let n=t.motion;if(n)for(let r of pr(t)){let o=n[r];if(o===void 0||Vt(o))continue;e.at(-1)!==""&&e.push("");let s=["motion",r];for(let[i,d]of Mo){let l=o[i];if(l!==void 0){if(d==="boolean"){l===!0&&s.push(i);continue}s.push(`${i}=${Fe(l)}`)}}if(e.push(s.join(" ")),o.music){let i=["music",o.music.asset];for(let[d,l]of Ao){let f=o.music[d];if(f!==void 0){if(l==="boolean"){f===!0&&i.push(d);continue}i.push(`${d}=${Fe(f)}`)}}e.push(ze+i.join(" "))}for(let i of o.lines){let d=i.camera===!0?["camera",i.id]:[i.id];for(let[l,f]of zn){let p=i[l];if(p!==void 0){if(f==="boolean"){p===!0&&d.push(l);continue}d.push(`${l}=${Fe(p)}`)}}e.push(ze+d.join(" "))}}}var fv=new Set(["loop","step","together"]);function cv(e,t,n){let r=t.words[1];if(t.indent!==1){n(t.number,"invalid-motion","A motion line sits one level under its page");return}if(r===void 0){n(t.number,"invalid-motion","Expected music <asset>, e.g. music bed fadeout=1500");return}if(fv.has(r)){n(t.number,"invalid-motion",`music names its track first: music <asset> ${r}`);return}if(e.musicLine!==void 0){n(t.number,"invalid-motion",`motion ${e.page} already has music on line ${e.musicLine}: a page has one track`);return}let o={asset:r},s=_t(Dp(e)),i=!0,d=f=>{n(t.number,"invalid-motion",`music ${r}: ${f}`),i=!1};for(let f of t.words.slice(2)){let{key:p,value:m}=Ke(f),y=Ao.find(([C])=>C===p)?.[1];if(y===void 0){d(`the music line has no "${p}"${pv(p)}`);continue}if(p==="from"&&m!==void 0&&/\d(?:beats?|bars?)$/.test(m)){d(`from= is where in the track to begin, in milliseconds, not ${m}`);continue}let v=je(m??"",y);if("error"in v){d(`${p}: ${v.error}`);continue}if(p==="from"&&!Op(v.value,0,lr)){d(`from: expected 0 to ${lr} milliseconds, got ${m??""}`);continue}if(p==="volume"&&!Op(v.value,0,1)){d(`volume: expected 0 to 1, got ${m??""}`);continue}if(p==="fadein"||p==="fadeout"){let C=Od(p,v.value,s,e.page);if(C!==void 0){d(C);continue}}v.value!==!1&&(o[p]=v.value)}if(!i)return;let l={asset:r};for(let[f]of Ao)o[f]!==void 0&&(l[f]=o[f]);e.music=l,e.musicLine=t.number}function Op(e,t,n){return typeof e=="number"&&e>=t&&e<=n}function pv(e){return e==="fade"?" \u2014 write fadein= and fadeout=":e==="fade-in"||e==="fadeIn"||e==="fade_in"?" \u2014 write fadein=":e==="fade-out"||e==="fadeOut"||e==="fade_out"?" \u2014 write fadeout=":e==="start"||e==="offset"||e==="seek"?" \u2014 write from= (where in the track to begin, in milliseconds)":e==="gain"||e==="level"?" \u2014 write volume= (0 to 1)":e==="at"||e==="delay"||e==="after"||e==="with"?": the music starts with the video; from= picks where in the track":": it takes from=, volume=, fadein=, fadeout= and loop"}function mv(e){let t=e.camera===!0?{id:e.id,camera:!0}:{id:e.id};for(let[n]of zn)e[n]!==void 0&&(t[n]=e[n]);return t}function Dp(e){let{bpm:t,meter:n}=e.head;return{...t===void 0?{}:{bpm:t},...n===void 0?{}:{meter:n},lines:[]}}function Od(e,t,n,r){if(Fn(t)&&!n)return`${t} needs a tempo \u2014 motion ${r} bpm=120`;let o=typeof t=="number"||Fn(t)?Je(t,n):void 0,s=Cd(e)??Tt;if(o!==void 0&&o>=(e==="w"||e==="h"?16:0)&&o<=s)return;let d=String(t),l=Fn(t)&&o!==void 0?` (${Math.round(o)} ms)`:"";return e==="w"||e==="h"?`${e}: expected 16 to ${Lt} pixels, got ${d}`:e==="pad"?`pad: expected 0 to ${Lt}, got ${d}`:`${e}: expected 0 to ${s} milliseconds, got ${d}${l}`}function hv(e){return typeof e=="number"&&e>=20&&e<=300}function xv(e){return typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=16}function gv(e,t){if(e==="meter"&&t!==void 0&&/^\d+\/\d+$/.test(t))return`Expected beats in a bar, got ${t} \u2014 meter is beats per bar: meter=${t.split("/")[0]??""}`;if(e==="duration"&&t!==void 0&&/\d(?:beats?|bars?)$/.test(t))return`Expected milliseconds, got ${t} \u2014 the page transition is milliseconds; beats are for the lines`}function yv(e){return e==="emphasise"||e==="emphasize"?" \u2014 write emphasis=pulse":e==="easing"?" \u2014 write ease=":e==="split"?" \u2014 write by=word or by=letter":e==="start"?" \u2014 write at= (milliseconds), after= or with=":""}function vv(e){let t=e.enter,n=e.exit,r=t??n,o=e.from;if(n==="count")return"count only enters: it runs a number up to its written value";if(o!==void 0)if(r==="count"){if(typeof o!="number")return"from= on count is the number it starts at, e.g. from=0"}else if(r==="wipe"||r==="grow"){if(typeof o=="number")return`from= on ${r} is a side: ${hn.join(", ")}`}else return"from= goes with count (a number), or wipe and grow (a side)";if(e.by!==void 0&&r!==void 0&&!ur.includes(r))return`by= splits a text for ${ur.join(", ")}, not ${r}`;if(e.by!==void 0&&r===void 0)return"by= goes with enter= or exit=";if(e.stagger!==void 0&&r===void 0)return"stagger= goes with enter= or exit=";if(e.hold!==void 0&&t===void 0)return"hold= goes with enter=: how long to stay before leaving the way it came"}var bv=24;function Ld(e,t={}){let n=[`version ${re(st(e))}`,`kind ${e.kind}`];e.title!==void 0&&n.push(`title ${JSON.stringify(e.title)}`),Mp(n,e.brand,e.kind);for(let[o,s]of Object.entries(e.tokens))n.push(`$${o} = ${Fe(s)}`);n.at(-1)!==""&&n.push("");let r=e.themes?.dark;if(r!==void 0&&Object.keys(r).length>0){n.push("theme dark");for(let[o,s]of Object.entries(r))n.push(` $${o} = ${Fe(s)}`);n.push("")}for(let[o,s]of Object.entries(e.fonts))_v(n,o,s,t),n.push("");if(Object.keys(e.assets).length>0){for(let[o,s]of Object.entries(e.assets))n.push(kv(o,s));n.push("")}return $p(n,e.brand,e.kind),wv(e.root)?e.root.children.forEach((o,s)=>{s>0&&n.push(""),Td(n,o,0)}):Td(n,e.root,0),Lp(n,e),n.join(`
33
- `)}function wv(e){return e.id===$t&&e.w===void 0&&e.h===void 0&&e.background===void 0&&e.name===void 0}function kv(e,t){let n=[`asset ${e} = ${t.type}`,`hash=${t.hash}`,`bytes=${re(t.bytes)}`];t.ms!==void 0&&n.push(`ms=${re(t.ms)}`);for(let r of["credit","source","license"]){let o=t[r];o!==void 0&&n.push(`${r}=${Fe(o)}`)}return n.join(" ")}function _v(e,t,n,r){e.push(`font ${t} = ${Fe(n.family)}`),n.fallback!==void 0&&e.push(`${ze}fallback ${Fe(n.fallback)}`);for(let o of n.faces??[]){let s=o.asset!==void 0?[`face asset=${o.asset}`]:[`face ${Fe(r.abbreviateFaces?Sv(o.src??""):o.src??"")}`];for(let[i]of _d){let d=o[i];d!==void 0&&s.push(`${i}=${Fe(d)}`)}e.push(ze+s.join(" "))}}function Sv(e){return e.startsWith("data:")?`${e.slice(0,bv)}\u2026 ${re(Math.round(e.length/1024))} kB`:e}function Td(e,t,n){let r=ze.repeat(n),o=t,s=[t.type,t.id];for(let[i,d]of yr[t.type]){let l=o[i];if(l!==void 0){if(d==="boolean"){l===!0&&s.push(i);continue}s.push(`${i}=${Fe(l)}`)}}if(e.push(r+s.join(" ")),t.type==="text"&&Pp(e,t.content,n+1),t.type==="instance"){Ev(e,t,n+1);return}if(le(t))for(let i of te(t))Td(e,i,n+1)}function Ev(e,t,n){let r=ze.repeat(n),o=s=>yr[s].map(([i])=>i);for(let[s,i]of so(t,o)){let d=[qs,s];for(let[f,p]of i)f!=="content"&&(typeof p=="boolean"?d.push(p?f:`${f}=false`):d.push(`${f}=${Fe(p)}`));e.push(r+d.join(" "));let l=i.find(([f])=>f==="content")?.[1];l!==void 0&&Pp(e,l,n+1)}}function Pp(e,t,n){let r=ze.repeat(n),o=typeof t=="string"?[t]:t;for(let s of o){if(typeof s=="string"){e.push(r+JSON.stringify(s));continue}e.push(r+[JSON.stringify(s.text),...Cv(s)].join(" "))}}function Cv(e){let t=[];for(let[n,r]of Co){let o=e[n];if(o!==void 0){if(r==="boolean"){o===!0&&t.push(n);continue}t.push(`${n}=${Fe(o)}`)}}return t}var jn="--- payload base64 ---",Np="sha256-";function Ip(e){let t=Mv(e);return t===-1?{head:e,payload:""}:{head:e.slice(0,t),payload:e.slice(t+jn.length)}}function Dd(e){let{head:t,payload:n}=Ip(e);return{head:t,blocks:Rp(n)}}function Pd(e,t){let n=new Map;for(let r of Av(e)){let o=t.get(r);o!==void 0&&n.set(r,o)}return n.size===0?e:`${e.trimEnd()}
32
+ ${t}]`}function ii(e){return ve(e)?JSON.stringify(`=${e.expr}`):typeof e=="number"?K(e):JSON.stringify(e)}function K(e){if(!Number.isFinite(e))return"0";let t=Math.round(e*1e4)/1e4,n=Object.is(t,-0)?0:t;return Math.abs(n)>=1e21?n.toFixed(0):String(n)}var lS={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0};function ar(e){let t=[],n,r=0,o=0,s=0,i=0,a,d,c=fS(e),l=()=>(n||(n={anchors:[{x:r,y:o}],closed:!1},t.push(n)),n.anchors[n.anchors.length-1]),p=(w,k)=>{l(),n?.anchors.push({x:w,y:k}),r=w,o=k},m=(w,k,_,M)=>{l().out=w,n?.anchors.push({x:_,y:M,in:k}),r=_,o=M},g="",b=!0;for(;c.more();){let w=c.command();if(w!==void 0)g=w,b=!0;else if(g===""||g.toUpperCase()==="Z")return{contours:za(t),error:`Expected a command at ${c.at()}`};let k=g.toUpperCase(),_=g!==k,M=lS[k];if(M===void 0)return{contours:za(t),error:`Unknown command ${g}`};if(k==="Z"){n&&(n.closed=!0),n=void 0,r=s,o=i,a=void 0,d=void 0,g="";continue}let R=k==="A"?c.arc():c.numbers(M);if(R===void 0)return{contours:za(t),error:`${g} expects ${M} numbers at ${c.at()}`};let B=_?r:0,D=_?o:0,V=T=>R[T];switch(k){case"M":b&&(n={anchors:[{x:B+V(0),y:D+V(1)}],closed:!1},t.push(n),r=s=B+V(0),o=i=D+V(1),g=_?"l":"L"),a=d=void 0;break;case"L":p(B+V(0),D+V(1)),a=d=void 0;break;case"H":p(B+V(0),o),a=d=void 0;break;case"V":p(r,D+V(0)),a=d=void 0;break;case"C":{let T={x:B+V(2),y:D+V(3)};m({x:B+V(0),y:D+V(1)},T,B+V(4),D+V(5)),a=T,d=void 0;break}case"S":{let T=a?{x:2*r-a.x,y:2*o-a.y}:{x:r,y:o},O={x:B+V(0),y:D+V(1)};m(T,O,B+V(2),D+V(3)),a=O,d=void 0;break}case"Q":case"T":{let T=k==="Q"?{x:B+V(0),y:D+V(1)}:d?{x:2*r-d.x,y:2*o-d.y}:{x:r,y:o},O=k==="Q"?B+V(2):B+V(0),j=k==="Q"?D+V(3):D+V(1),$={x:r+2/3*(T.x-r),y:o+2/3*(T.y-o)},P={x:O+2/3*(T.x-O),y:j+2/3*(T.y-j)};m($,P,O,j),d=T,a=void 0;break}case"A":{let T=B+V(5),O=D+V(6);for(let[j,$,P]of pS(r,o,V(0),V(1),V(2),V(3)!==0,V(4)!==0,T,O))m(j,$,P.x,P.y);(r!==T||o!==O)&&p(T,O),a=d=void 0;break}}b=!1}return{contours:za(t)}}function za(e){return e.map(t=>{let n=[...t.anchors];if(t.closed&&n.length>1){let r=n[0],o=n[n.length-1];Rr(r,o)&&(n.pop(),n[0]={...r,...o.in?{in:o.in}:{}})}return{anchors:n.map(ai),closed:t.closed}})}function fn(e,t,n){return ai({x:e.x,y:e.y,...t?{in:t}:{},...n?{out:n}:{}})}function ai(e){let t={x:e.x,y:e.y};return e.in&&!Rr(e.in,e)&&(t.in=e.in),e.out&&!Rr(e.out,e)&&(t.out=e.out),t}function Rr(e,t,n=1e-6){return Math.abs(e.x-t.x)<n&&Math.abs(e.y-t.y)<n}function fS(e){let t=0,n=()=>{for(;t<e.length&&/[\s,]/.test(e[t]);)t+=1},r=()=>{n();let s=/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/.exec(e.slice(t));if(s)return t+=s[0].length,Number(s[0])},o=()=>{n();let s=e[t];if(!(s!=="0"&&s!=="1"))return t+=1,Number(s)};return{more(){return n(),t<e.length},command(){n();let s=e[t];if(/[a-zA-Z]/.test(s))return t+=1,s},numbers(s){let i=[];for(let a=0;a<s;a+=1){let d=r();if(d===void 0)return;i.push(d)}return i},arc(){let s=this.numbers(3),i=o(),a=o(),d=this.numbers(2);if(!(!s||i===void 0||a===void 0||!d))return[...s,i,a,...d]},at(){return t}}}function pS(e,t,n,r,o,s,i,a,d){let c=Math.abs(n),l=Math.abs(r);if(c===0||l===0||e===a&&t===d)return[];let p=o*Math.PI/180,m=Math.cos(p),g=Math.sin(p),b=(e-a)/2,w=(t-d)/2,k=m*b+g*w,_=-g*b+m*w,M=k*k/(c*c)+_*_/(l*l);M>1&&(c*=Math.sqrt(M),l*=Math.sqrt(M));let R=c*c*l*l-c*c*_*_-l*l*k*k,B=c*c*_*_+l*l*k*k,D=(s===i?-1:1)*Math.sqrt(Math.max(0,R/B)),V=D*c*_/l,T=-D*l*k/c,O=m*V-g*T+(e+a)/2,j=g*V+m*T+(t+d)/2,$=(v,N,I,F)=>{let q=v*I+N*F,Y=Math.hypot(v,N)*Math.hypot(I,F),Q=Math.acos(Math.min(1,Math.max(-1,q/Y)));return v*F-N*I<0?-Q:Q},P=$(1,0,(k-V)/c,(_-T)/l),C=$((k-V)/c,(_-T)/l,(-k-V)/c,(-_-T)/l);!i&&C>0&&(C-=2*Math.PI),i&&C<0&&(C+=2*Math.PI);let G=Math.max(1,Math.ceil(Math.abs(C)/(Math.PI/2)-1e-9)),ee=C/G,fe=4/3*Math.tan(ee/4),oe=v=>({x:O+c*Math.cos(v)*m-l*Math.sin(v)*g,y:j+c*Math.cos(v)*g+l*Math.sin(v)*m}),Se=v=>({x:-c*Math.sin(v)*m-l*Math.cos(v)*g,y:-c*Math.sin(v)*g+l*Math.cos(v)*m}),be=[];for(let v=0;v<G;v+=1){let N=P+v*ee,I=N+ee,F=oe(N),q=v===G-1?{x:a,y:d}:oe(I),Y=Se(N),Q=Se(I);be.push([{x:F.x+fe*Y.x,y:F.y+fe*Y.y},{x:q.x-fe*Q.x,y:q.y-fe*Q.y},q])}return be}function ze(e){let t=[],n=r=>`${K(r.x)} ${K(r.y)}`;for(let r of e){let{anchors:o}=r,s=o[0];if(!s)continue;t.push(`M${n(s)}`);let i=zt(r);for(let a=0;a<i;a+=1){let d=o[a],c=o[(a+1)%o.length],l=r.closed&&a===o.length-1;!d.out&&!c.in?l||t.push(`L${n(c)}`):t.push(`C${n(d.out??d)} ${n(c.in??c)} ${n(c)}`)}r.closed&&t.push("Z")}return t.join(" ")}function zt(e){let t=e.anchors.length;return t<2?0:e.closed?t:t-1}function jt(e,t){let n=e.anchors[t],r=e.anchors[(t+1)%e.anchors.length];return[{x:n.x,y:n.y},n.out??{x:n.x,y:n.y},r.in??{x:r.x,y:r.y},{x:r.x,y:r.y}]}function ja(e,t){let n=e.anchors[t],r=e.anchors[(t+1)%e.anchors.length];return!n.out&&!r.in}function di(e,t){let[n,r,o,s]=e,i=1-t,a=i*i*i,d=3*i*i*t,c=3*i*t*t,l=t*t*t;return{x:a*n.x+d*r.x+c*o.x+l*s.x,y:a*n.y+d*r.y+c*o.y+l*s.y}}function Be(e,t){return e.map(n=>({closed:n.closed,anchors:n.anchors.map(r=>{let o=t(r);return{x:o.x,y:o.y,...r.in?{in:t(r.in)}:{},...r.out?{out:t(r.out)}:{}}})}))}function Kt(e){let t=1/0,n=1/0,r=-1/0,o=-1/0,s=i=>{t=Math.min(t,i.x),n=Math.min(n,i.y),r=Math.max(r,i.x),o=Math.max(o,i.y)};for(let i of e){for(let d of i.anchors)s(d);let a=zt(i);for(let d=0;d<a;d+=1){let c=jt(i,d);for(let l of hS(c))s(di(c,l))}}if(t!==1/0)return{x:t,y:n,w:r-t,h:o-n}}function hS(e){let[t,n,r,o]=e,s=[];for(let i of["x","y"]){let a=-t[i]+3*n[i]-3*r[i]+o[i],d=2*(t[i]-2*n[i]+r[i]),c=n[i]-t[i];if(Math.abs(a)<1e-12){Math.abs(d)>1e-12&&s.push(-c/d);continue}let l=d*d-4*a*c;if(l<0)continue;let p=Math.sqrt(l);s.push((-d+p)/(2*a),(-d-p)/(2*a))}return s.filter(i=>i>0&&i<1)}function Ka(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[n,r,o,s]=t;return{x:n,y:r,w:o,h:s}}function Pn(e){return[e.x,e.y,e.w,e.h].map(K).join(" ")}function Ir(e,t,n){return Ka(e)??{x:0,y:0,w:t,h:n}}function Fr(e,t){let n=e.w===0?1:t.w/e.w,r=e.h===0?1:t.h/e.h;return o=>({x:t.x+(o.x-e.x)*n,y:t.y+(o.y-e.y)*r})}function bl(e,t){let n=e.w===0||t.w===0?1:e.w/t.w,r=e.h===0||t.h===0?1:e.h/t.h;return o=>({x:e.x+(o.x-t.x)*n,y:e.y+(o.y-t.y)*r})}function dr(e,t=.5){let[n,r,o,s]=e;if(Rr(n,r)&&Rr(o,s))return[n,s];let a=Math.hypot(r.x-n.x,r.y-n.y)+Math.hypot(o.x-r.x,o.y-r.y)+Math.hypot(s.x-o.x,s.y-o.y),d=Math.min(256,Math.max(4,Math.ceil(Math.sqrt(a/t)))),c=[];for(let l=0;l<=d;l+=1)c.push(di(e,l/d));return c}function ui(e){let t=0;for(let n of e)for(let r=0;r<zt(n);r+=1){let o=dr(jt(n,r),.25);for(let s=1;s<o.length;s+=1){let i=o[s-1],a=o[s];t+=Math.hypot(a.x-i.x,a.y-i.y)}}return t}function Br(e,t,n){let r=0,o=0;for(let s of e){let i=mS(s);if(i.length!==0){if(n.reach>0){let a=s.closed?i.length:i.length-1;for(let d=0;d<a;d+=1){let c=i[d],l=i[(d+1)%i.length];if(xS(t,c,l)<=n.reach)return!0}if(i.length===1&&Math.hypot(t.x-i[0].x,t.y-i[0].y)<=n.reach)return!0}if(n.fill)for(let a=0;a<i.length;a+=1){let d=i[a],c=i[(a+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,r+=c.y>d.y?1:-1)}}}return n.fill?n.rule==="evenodd"?o%2===1:r!==0:!1}function mS(e){let t=e.anchors[0];if(!t)return[];let n=[{x:t.x,y:t.y}],r=zt(e);for(let o=0;o<r;o+=1)n.push(...dr(jt(e,o)).slice(1));return e.closed&&n.length>1&&n.pop(),n}function xS(e,t,n){let r=n.x-t.x,o=n.y-t.y,s=r*r+o*o,i=s===0?0:Math.max(0,Math.min(1,((e.x-t.x)*r+(e.y-t.y)*o)/s));return Math.hypot(e.x-(t.x+i*r),e.y-(t.y+i*o))}function vl(e,t){let n;return e.forEach((r,o)=>{let s=zt(r);for(let i=0;i<s;i+=1){let a=jt(r,i),d=w=>{let k=di(a,w);return Math.hypot(k.x-t.x,k.y-t.y)},c=32,l=0;for(let w=1;w<=c;w+=1)d(w/c)<d(l)&&(l=w/c);let p=Math.max(0,l-1/c),m=Math.min(1,l+1/c);for(let w=0;w<24;w+=1){let k=p+(m-p)/3,_=m-(m-p)/3;d(k)<d(_)?m=_:p=k}let g=(p+m)/2,b=d(g);(!n||b<n.distance)&&(n={contour:o,segment:i,t:g,point:di(a,g),distance:b})}}),n}function wl(e,t,n,r){return e.map((o,s)=>{if(s!==t)return o;let i=[...o.anchors],a=i.length,d=i[n],c=(n+1)%a,l=i[c];if(ja(o,n)){let V={x:d.x+(l.x-d.x)*r,y:d.y+(l.y-d.y)*r};return i.splice(n+1,0,V),{...o,anchors:i}}let[p,m,g,b]=jt(o,n),w=(V,T)=>({x:V.x+(T.x-V.x)*r,y:V.y+(T.y-V.y)*r}),k=w(p,m),_=w(m,g),M=w(g,b),R=w(k,_),B=w(_,M),D=w(R,B);return i[n]=ai({...d,out:k}),i[c]=ai({...l,in:M}),i.splice(n+1,0,ai({x:D.x,y:D.y,in:R,out:B})),{...o,anchors:i}})}var Fo=.5522847498;function Dn(e,t,n=0){let r=Ao(typeof n=="number"?{tl:Math.max(0,n),tr:Math.max(0,n),br:Math.max(0,n),bl:Math.max(0,n)}:n,e,t),o=[],s=(a,d,c,l)=>{if(a<=0){o.push({x:d.x,y:d.y});return}let p=Fo*a,m={x:d.x+c.x*a,y:d.y+c.y*a},g={x:d.x+l.x*a,y:d.y+l.y*a};o.push({x:m.x,y:m.y,out:{x:m.x-c.x*p,y:m.y-c.y*p}}),o.push({x:g.x,y:g.y,in:{x:g.x-l.x*p,y:g.y-l.y*p}})};s(r.tl,{x:0,y:0},{x:0,y:1},{x:1,y:0}),s(r.tr,{x:e,y:0},{x:-1,y:0},{x:0,y:1}),s(r.br,{x:e,y:t},{x:0,y:-1},{x:-1,y:0}),s(r.bl,{x:0,y:t},{x:1,y:0},{x:0,y:-1});let i=r.tl>0?o.slice(1).concat(o.slice(0,1)):o;return[{closed:!0,anchors:gS(i)}]}function Vr(e,t){let n=e/2,r=t/2,o=Fo*n,s=Fo*r;return[{closed:!0,anchors:[{x:n,y:0,in:{x:n-o,y:0},out:{x:n+o,y:0}},{x:e,y:r,in:{x:e,y:r-s},out:{x:e,y:r+s}},{x:n,y:t,in:{x:n+o,y:t},out:{x:n-o,y:t}},{x:0,y:r,in:{x:0,y:r+s},out:{x:0,y:r-s}}]}]}function gS(e){let t=[];for(let o of e){let s=t[t.length-1];if(s&&Rr(s,o)&&!s.out&&!o.in){t[t.length-1]=fn(s,s.in,o.out);continue}t.push(o)}let n=t[0],r=t[t.length-1];return t.length>1&&n&&r&&Rr(n,r)&&!r.out&&!n.in&&(t[0]=fn(n,r.in,n.out),t.pop()),t}var Hr=["straight","elbow","curve"],ur=["none","arrow","triangle","dot","bar"],Sl=["x1","y1","x2","y2"],ci="#1F2937",li=2;function fi(e){return{x:Math.min(e.x1,e.x2),y:Math.min(e.y1,e.y2),w:Math.abs(e.x2-e.x1),h:Math.abs(e.y2-e.y1)}}function Bg(e){return Math.abs(e.x2-e.x1)>=Math.abs(e.y2-e.y1)?"x":"y"}function Vg(e,t){let n=Bg(e);return{start:t.start??n,end:t.end??n}}function Hg(e,t,n={}){let{x1:r,y1:o,x2:s,y2:i}=e,a=(r+s)/2,d=(o+i)/2,c=Vg(e,n);switch(t){case"straight":return{closed:!1,anchors:[{x:r,y:o},{x:s,y:i}]};case"elbow":{let l=c.start==="x"?c.end==="x"?[{x:a,y:o},{x:a,y:i}]:[{x:s,y:o}]:c.end==="y"?[{x:r,y:d},{x:s,y:d}]:[{x:r,y:i}];return{closed:!1,anchors:[{x:r,y:o},...l,{x:s,y:i}]}}case"curve":{let l=c.start!==c.end,p=c.start==="x"?{x:l?s:a,y:o}:{x:r,y:l?i:d},m=c.end==="x"?{x:l?r:a,y:i}:{x:s,y:l?o:d};return{closed:!1,anchors:[{x:r,y:o,out:p},{x:s,y:i,in:m}]}}}}function Ug(e,t,n={}){let r=e.x2-e.x1,o=e.y2-e.y1;if(r===0&&o===0)return;if(t==="straight"||r===0||o===0){let d=Math.hypot(r,o),c={x:r/d,y:o/d};return{start:{x:-c.x,y:-c.y},end:c}}let s=Vg(e,n),i=d=>d==="x"?{x:Math.sign(r),y:0}:{x:0,y:Math.sign(o)},a=i(s.start);return{start:{x:-a.x,y:-a.y},end:i(s.end)}}function Ga(e){return 3*Math.max(0,e)+4}function kl(e,t,n,r){let o=Ga(r),s=o/2,i={x:-n.x,y:-n.y},a={x:-n.y,y:n.x},d=(c,l)=>({x:t.x+i.x*c+a.x*l,y:t.y+i.y*c+a.y*l});switch(e){case"none":return;case"triangle":return{filled:!0,inset:s,contours:[{closed:!0,anchors:[d(0,0),d(o,s),d(o,-s)]}]};case"arrow":return{filled:!1,inset:r/2,contours:[{closed:!1,anchors:[d(o,s),d(0,0),d(o,-s)]}]};case"bar":return{filled:!1,inset:0,contours:[{closed:!1,anchors:[d(0,s),d(0,-s)]}]};case"dot":return{filled:!0,inset:0,contours:[yS(t,o*.4)]}}}function yS(e,t){let n=t*Fo,{x:r,y:o}=e;return{closed:!0,anchors:[{x:r+t,y:o,in:{x:r+t,y:o-n},out:{x:r+t,y:o+n}},{x:r,y:o+t,in:{x:r+n,y:o+t},out:{x:r-n,y:o+t}},{x:r-t,y:o,in:{x:r-t,y:o+n},out:{x:r-t,y:o-n}},{x:r,y:o-t,in:{x:r-n,y:o-t},out:{x:r+n,y:o-t}}]}}function _l(e,t,n,r,o,s={}){let i=Hg(e,t,s),a=Ug(e,t,s);if(!a)return{route:i,filled:[],lined:[]};let d=[kl(n,{x:e.x1,y:e.y1},a.start,o),kl(r,{x:e.x2,y:e.y2},a.end,o)],c=bS(i,a,d[0]?.inset??0,d[1]?.inset??0),l=[],p=[];for(let m of d)m&&(m.filled?l:p).push(...m.contours);return{route:c,filled:l,lined:p}}function bS(e,t,n,r){if(n===0&&r===0)return e;let o=[...e.anchors],s=(i,a,d,c)=>{let l=o[i],p=o[a];if(!l||!p||d<=0)return;let m=Math.hypot(p.x-l.x,p.y-l.y),g=o.length===2?Math.min(d,m/2):Math.min(d,m),b=-c.x*g,w=-c.y*g,k=B=>B===void 0?void 0:{x:B.x+b,y:B.y+w},_={x:l.x+b,y:l.y+w},M=k(l.in),R=k(l.out);o[i]={..._,...M===void 0?{}:{in:M},...R===void 0?{}:{out:R}}};return s(0,1,n,t.start),s(o.length-1,o.length-2,r,t.end),{...e,anchors:o}}function cr(e){let t=new Set;return de(e,n=>{t.add(n.id)}),t}function pn(e,t){let n=cr(e),r=0;for(let o of n){if(!o.startsWith(`${t}.`))continue;let s=Number(o.slice(t.length+1));Number.isInteger(s)&&s>r&&(r=s)}return`${t}.${r+1}`}var gt=class extends Error{op;constructor(t,n){super(t),this.op=n,this.name="OpError"}};function Ae(e,t){let n=e,r=[];for(let o of t){let s=Kg(n,o);n=s.document,r.push(s.inverse)}return r.reverse(),{document:n,inverse:r}}function Kg(e,t){let n=kS(e,t);if(!vS(e.root)&&!wS(t))return El.add(n.document.root),n;let r=$n(n.document.root);return r===n.document.root?n:{document:{...n.document,root:r},inverse:n.inverse}}var El=new WeakSet;function vS(e){return El.has(e)?!1:Ws(e)?!0:(El.add(e),!1)}function wS(e){if(e.op==="set")return e.prop==="component";if(e.op!=="insert")return!1;let t=!1;return de(e.node,n=>((n.type==="instance"||n.type==="frame"&&n.component===!0)&&(t=!0),t?!1:void 0)),t}function kS(e,t){switch(t.op){case"set":{let n=Lt(e.root,t.id);if(n)return SS(e,t,n.instance.id,n.key);if(t.prop==="children"&&z(e.root,t.id)?.type==="instance")throw new gt(`${t.id}'s contents come from its component`,t);let r=z(e.root,t.id);if(!r)throw new gt(`No node ${t.id}`,t);let o=r[t.prop];return{document:pi(e,Xa(e.root,t.id,s=>Gg(s,t.prop,t.value),t)),inverse:{op:"set",id:t.id,prop:t.prop,value:o}}}case"insert":{if(qa(e,t.parent,t,!0),z(e.root,t.node.id))throw new gt(`Duplicate id ${t.node.id}`,t);let n=Wa(e.root,t.parent,r=>{let o=jg(t.index,0,r.length);return[...r.slice(0,o),t.node,...r.slice(o)]},t);return{document:pi(e,n),inverse:{op:"remove",id:t.node.id}}}case"remove":{qa(e,t.id,t,!1);let n=zg(e,t.id,t),r=Wa(e.root,n.parent.id,o=>o.filter(s=>s.id!==t.id),t);return{document:pi(e,r),inverse:{op:"insert",parent:n.parent.id,index:n.index,node:n.node}}}case"move":{qa(e,t.id,t,!1),qa(e,t.parent,t,!0);let n=zg(e,t.id,t),r=Wa(e.root,n.parent.id,s=>s.filter(i=>i.id!==t.id),t),o=Wa(r,t.parent,s=>{let i=jg(t.index,0,s.length);return[...s.slice(0,i),n.node,...s.slice(i)]},t);return{document:pi(e,o),inverse:{op:"move",id:t.id,parent:n.parent.id,index:n.index}}}case"setTitle":{let{title:n,...r}=e;return{document:t.value===void 0?r:{...r,title:t.value},inverse:{op:"setTitle",value:n}}}case"setToken":{let n=Object.prototype.hasOwnProperty.call(e.tokens,t.name)?e.tokens[t.name]:void 0,r={...e.tokens};return t.value===void 0?delete r[t.name]:r[t.name]=t.value,{document:{...e,tokens:r},inverse:{op:"setToken",name:t.name,value:n}}}case"setAsset":{let n=Object.prototype.hasOwnProperty.call(e.assets,t.name)?e.assets[t.name]:void 0,r={...e.assets};return t.value===void 0?delete r[t.name]:r[t.name]=t.value,{document:{...e,assets:r},inverse:{op:"setAsset",name:t.name,value:n}}}case"setFont":{let n=Object.prototype.hasOwnProperty.call(e.fonts,t.name)?e.fonts[t.name]:void 0,r={...e.fonts};return t.family===void 0?delete r[t.name]:r[t.name]=t.family,{document:{...e,fonts:r},inverse:{op:"setFont",name:t.name,family:n}}}case"setBrand":{let{brand:n,...r}=e,o=t.value===void 0?r:{...r,brand:Or(t.value)};return{document:{...o,version:Et(o)},inverse:{op:"setBrand",value:n}}}case"setTheme":{let{themes:n,...r}=e,o=un(t.value),s=o===void 0?r:{...r,themes:o};return{document:{...s,version:Et(s)},inverse:{op:"setTheme",value:n}}}case"setKind":{let n={...e,kind:t.value};return{document:{...n,version:Et(n)},inverse:{op:"setKind",value:e.kind}}}case"setMotion":{let n=e.motion&&Object.prototype.hasOwnProperty.call(e.motion,t.page)?e.motion[t.page]:void 0,r={...e.motion};return Tn(t.value)?delete r[t.page]:r[t.page]=t.value,{document:hl(e,r),inverse:{op:"setMotion",page:t.page,value:n}}}}}function Vo(e,t){if(!e.motion||!t.some(r=>r.op==="remove"||r.op==="move"))return t;let n=ml(e,Ae(e,t).document);return n.length===0?t:[...t,...n]}function SS(e,t,n,r){if(!nr(t.prop))throw new gt(`${t.id} is part of ${n}; its ${t.prop} comes from the component`,t);let o=z(e.root,n);if(o?.type!=="instance")throw new gt(`No instance ${n}`,t);let s=o.overrides?.[r]?.[t.prop],i=Yc(o.overrides,r,t.prop,t.value,Xc(e.root,o,r,t.prop));return{document:pi(e,Xa(e.root,n,a=>Gg(a,"overrides",i),t)),inverse:{op:"set",id:t.id,prop:t.prop,value:s}}}function qa(e,t,n,r){let o=Lt(e.root,t),s=r&&z(e.root,t)?.type==="instance";if(o)throw new gt(`${t} is inside ${o.instance.id} \u2014 change its component, or detach the instance first`,n);if(s)throw new gt(`${t} holds only copies of its component \u2014 change the component, or detach ${t} first`,n)}function pi(e,t){if(t.type!=="canvas")throw new Error("The document root must stay a canvas");return{...e,root:t}}function Gg(e,t,n){let r={...e};return n===void 0?delete r[t]:r[t]=n,r}function Xa(e,t,n,r){if(e.id===t)return n(e);if(!me(e))return e;let o=!1,s=e.children.map(i=>{let a=Xa(i,t,n,r);return a!==i&&(o=!0),a});return o?{...e,children:s}:e}function Wa(e,t,n,r){let o=z(e,t);if(!o)throw new gt(`No node ${t}`,r);if(!me(o))throw new gt(`${t} cannot hold children`,r);return Xa(e,t,s=>({...s,children:n(s.children)}),r)}function zg(e,t,n){if(t===e.root.id)throw new gt("The document root cannot be removed or moved",n);let r,o=s=>{me(s)&&s.children.forEach((i,a)=>{i.id===t&&(r={node:i,parent:s,index:a}),o(i)})};if(o(e.root),!r)throw new gt(`No node ${t}`,n);return r}function jg(e,t,n){return Math.min(Math.max(e,t),n)}function Cl(e,t){let n=[];e.kind!==t.kind&&n.push({op:"setKind",value:t.kind}),e.title!==t.title&&n.push({op:"setTitle",value:t.title});for(let s of Bo(e.tokens,t.tokens)){let i=t.tokens[s];e.tokens[s]!==i&&n.push({op:"setToken",name:s,value:i})}for(let s of Bo(e.fonts,t.fonts)){let i=t.fonts[s];ES(e.fonts[s],i)||n.push({op:"setFont",name:s,family:i})}for(let s of Bo(e.assets,t.assets)){let i=t.assets[s];(e.assets[s]?.hash!==i?.hash||e.assets[s]?.ms!==i?.ms)&&n.push({op:"setAsset",name:s,value:i})}if(!_S(e.root.children,t.root.children)){for(let s of e.root.children)n.push({op:"remove",id:s.id});t.root.children.forEach((s,i)=>{n.push({op:"insert",parent:e.root.id,index:i,node:s})})}for(let s of Bo(e.motion??{},t.motion??{})){let i=t.motion?.[s];Ha(e.motion?.[s],i)||n.push({op:"setMotion",page:s,value:i})}Kc(e.brand,t.brand)||n.push({op:"setBrand",value:t.brand}),MS(e.themes,t.themes)||n.push({op:"setTheme",value:t.themes});let r=e.root,o=t.root;for(let s of Bo(r,o))s==="type"||s==="id"||s==="children"||qg(r[s],o[s])||n.push({op:"set",id:e.root.id,prop:s,value:o[s]});return n}function Bo(e,t){return[...new Set([...Object.keys(e),...Object.keys(t)])]}function qg(e,t){return e===t?!0:ve(e)&&ve(t)&&e.expr===t.expr}function _S(e,t){return e.length===t.length&&e.every((n,r)=>Ml(n,t[r]))}function Ml(e,t){if(qg(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((s,i)=>Ml(s,t[i]));let n=e,r=t;return Bo(n,r).every(s=>Ml(n[s],r[s]))}function ES(e,t){if(e===t)return!0;if(!e||!t||e.family!==t.family||e.fallback!==t.fallback)return!1;let n=e.faces??[],r=t.faces??[];return n.length===r.length&&n.every((o,s)=>{let i=r[s];return o.src===i.src&&o.asset===i.asset&&o.weight===i.weight&&o.style===i.style})}function MS(e,t){let n=un(e)?.dark??{},r=un(t)?.dark??{},o=Object.keys(n);return o.length===Object.keys(r).length&&o.every(s=>n[s]===r[s])}var Ur=["center","inside","outside"];function zr(e){let t=e.trim();if(t===""||t==="none"||t==="solid")return{error:"a solid line has no dash \u2014 unset dash rather than writing one"};let n=t.split(/[\s,]+/),r=[];for(let o of n){if(!/^\d*\.?\d+$/.test(o)){let s=/^(\d*\.?\d+)[a-z%]+$/i.exec(o);return s?{error:`lengths have no unit \u2014 write ${s[1]} for ${o}`}:/^-/.test(o)?{error:`a dash length cannot be negative, got ${o}`}:{error:`expected lengths like "6 4", got ${JSON.stringify(e)}`}}r.push(Number(K(Number(o))))}return r.some(o=>o>0)?{dash:r}:{error:"a dash needs one length above zero \u2014 unset dash for a solid line"}}function Ho(e){return e.map(t=>K(t)).join(" ")}function Al(e){if(e===void 0)return[];let t=zr(e);return"error"in t?[]:t.dash.length%2===1?[...t.dash,...t.dash]:t.dash}var Uo={canvas:[["name","string"],["w","numberValue"],["h","numberValue"],["background","stringValue"]],frame:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["background","stringValue"],["stroke","stringValue"],["strokeWidth","numberValue"],["dash","dash"],["strokeAlign","strokeAlign"],["cap","lineCap"],["radius","numberValue"],["radiusTL","numberValue"],["radiusTR","numberValue"],["radiusBR","numberValue"],["radiusBL","numberValue"],["clip","boolean"],["skip","boolean"],["component","boolean"],["blend","blendMode"],["shadow","stringValue"],["blur","numberValue"],["backdrop","numberValue"],["hidden","boolean"],["locked","boolean"]],connector:[["name","string"],["x1","numberValue"],["y1","numberValue"],["x2","numberValue"],["y2","numberValue"],["route","route"],["start","connectorEnd"],["end","connectorEnd"],["stroke","stringValue"],["strokeWidth","numberValue"],["dash","dash"],["cap","lineCap"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["blur","numberValue"],["hidden","boolean"],["locked","boolean"]],group:[["name","string"],["hidden","boolean"],["locked","boolean"]],instance:[["name","string"],["component","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["hidden","boolean"],["locked","boolean"]],ellipse:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["fill","stringValue"],["stroke","stringValue"],["strokeWidth","numberValue"],["dash","dash"],["strokeAlign","strokeAlign"],["cap","lineCap"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["blur","numberValue"],["backdrop","numberValue"],["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"],["dash","dash"],["strokeAlign","strokeAlign"],["opacity","numberValue"],["rule","fillRule"],["cap","lineCap"],["join","lineJoin"],["blend","blendMode"],["shadow","stringValue"],["blur","numberValue"],["backdrop","numberValue"],["hidden","boolean"],["locked","boolean"]],video:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["src","stringValue"],["fit","imageFit"],["start","number"],["end","number"],["poster","number"],["muted","boolean"],["loop","boolean"],["mask","string"],["stroke","stringValue"],["strokeWidth","numberValue"],["dash","dash"],["strokeAlign","strokeAlign"],["cap","lineCap"],["radius","numberValue"],["radiusTL","numberValue"],["radiusTR","numberValue"],["radiusBR","numberValue"],["radiusBL","numberValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["blur","numberValue"],["hidden","boolean"],["locked","boolean"]],rect:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["fill","stringValue"],["stroke","stringValue"],["strokeWidth","numberValue"],["dash","dash"],["strokeAlign","strokeAlign"],["cap","lineCap"],["radius","numberValue"],["radiusTL","numberValue"],["radiusTR","numberValue"],["radiusBR","numberValue"],["radiusBL","numberValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["blur","numberValue"],["backdrop","numberValue"],["hidden","boolean"],["locked","boolean"]],image:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["src","stringValue"],["fit","imageFit"],["mask","string"],["stroke","stringValue"],["strokeWidth","numberValue"],["dash","dash"],["strokeAlign","strokeAlign"],["cap","lineCap"],["radius","numberValue"],["radiusTL","numberValue"],["radiusTR","numberValue"],["radiusBR","numberValue"],["radiusBL","numberValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["blur","numberValue"],["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"],["stroke","stringValue"],["strokeWidth","numberValue"],["dash","dash"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["blur","numberValue"],["hidden","boolean"],["locked","boolean"]]},hi=[["font","string"],["size","number"],["weight","number"],["italic","boolean"],["underline","boolean"],["strike","boolean"],["fill","string"],["letterSpacing","number"],["link","string"]],$l=[["weight","number"],["style","fontStyle"]],mi=[["enter","pageEffect"],["duration","number"],["scroll","boolean"],["length","time"],["w","number"],["h","number"],["bpm","number"],["meter","number"]],jr=[["enter","nodeEffect"],["exit","nodeEffect"],["emphasis","emphasisEffect"],["from","from"],["by","piece"],["stagger","time"],["duration","time"],["hold","time"],["delay","time"],["at","time"],["after","string"],["with","string"],["step","boolean"],["together","boolean"],["on","on"],["ease","ease"],["pad","number"],["go","string"]],xi=[["from","number"],["volume","number"],["fadein","time"],["fadeout","time"],["loop","boolean"]],Ol=Object.keys(Uo);function Ya(e){return Ol.includes(e)}function zo(e,t){return Uo[e].find(([n])=>n===t)?.[1]}function Ja(e){for(let t of Ol){if(t==="canvas"||t==="instance")continue;let n=zo(t,e);if(n!==void 0)return n}}var Za="override",rt=" ";function Xe(e){if(ve(e))return/^[$@]/.test(e.expr)&&!/\s/.test(e.expr)?e.expr:`(${e.expr})`;if(typeof e=="number")return K(e);let t=String(e);return CS(t)?JSON.stringify(t):t}function CS(e){return e===""||/[\s"=()]/.test(e)||/^[$@]/.test(e)}function Qe(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 r=hn(e);return r===void 0?{error:`Malformed quoted string ${e}`}:Wg(r,t,e)}if(TS(e)){if(!AS(t))return{error:$S(e,t)};let r=Zg(e).trim();return r===""?{error:"Empty expression"}:{value:_t(r)}}return t==="numberValue"&&Yg.test(e)?{value:_t(e)}:Wg(e,t,e)}var Yg=/^-?\d+(?:\.\d+)?%$/;function AS(e){return e==="numberValue"||e==="stringValue"}function $S(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 Jg(e,t){let n=/^(-?\d+(?:\.\d+)?)([A-Za-z]+)$/.exec(e);return n?/^(?:beats?|bars?)$/.test(n[2])?" \u2014 beats and bars count motion times on a page with bpm=; this is milliseconds":n[2]==="s"&&t==="number"?` \u2014 durations are milliseconds: ${Number(n[1])*1e3}`:/^(?:px|pt|deg|ms)$/.test(n[2])?` \u2014 drop the unit: ${n[1]}`:" \u2014 units are not supported: use a number, a percentage like (100%), or an expression":t==="number"?Yg.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 Wg(e,t,n){switch(t){case"numberValue":case"number":{let r=Number(e);return Number.isFinite(r)&&e.trim()!==""?{value:r}:{error:`Expected a number, got ${n}${Jg(e,t)}`}}case"align":return Qn.includes(e)?{value:e}:{error:`Expected one of ${Qn.join(", ")}, got ${n}`};case"valign":return er.includes(e)?{value:e}:{error:`Expected one of ${er.join(", ")}, got ${n}`};case"fontStyle":return e==="normal"||e==="italic"?{value:e}:{error:`Expected normal or italic, got ${n}`};case"imageFit":return Zt.includes(e)?{value:e}:{error:`Expected one of ${Zt.join(", ")}, got ${n}`};case"fillRule":return Gt(Ar,e,n);case"lineCap":return Gt(tr,e,n);case"lineJoin":return Gt($r,e,n);case"dash":{let r=zr(e);return"error"in r?{error:r.error}:{value:Ho(r.dash)}}case"strokeAlign":return Gt(Ur,e,n);case"blendMode":return Gt(Cr,e,n);case"route":return Gt(Hr,e,n);case"connectorEnd":return Gt(ur,e,n);case"pageEffect":return Gt(Do,e,n);case"nodeEffect":return Gt(ti,e,n);case"emphasisEffect":return Gt(ni,e,n);case"ease":return Gt(ri,e,n);case"piece":return Gt(oi,e,n);case"time":{let r=Lr(e);if(r)return{value:Pr(r.count,r.unit)};let o=Number(e);return Number.isFinite(o)&&e.trim()!==""?{value:o}:{error:`Expected milliseconds or beats, got ${n}${OS(e)}`}}case"on":return Zs.includes(e)?{value:e}:e==="downbeat"?{error:`Expected beat or bar, got ${n} \u2014 write on=bar: a bar starts on its downbeat`}:e==="beats"||e==="bars"?{error:`Expected beat or bar, got ${n} \u2014 write on=${e.slice(0,-1)}`}:{error:`Expected beat or bar, got ${n}`};case"from":{if(or.includes(e))return{value:e};let r=Number(e);return Number.isFinite(r)&&e.trim()!==""?{value:r}:{error:`Expected a number or one of ${or.join(", ")}, got ${n}`}}default:return{value:e}}}function OS(e){let t=/^(beat|bar|b)[:\s#]?(\d+(?:\.\d+)?)$/.exec(e);if(t){let r=t[1]==="bar"?"bar":"beat",o=Number(t[2]);return` \u2014 write ${Pr(Math.max(0,o-1),r)} (counted from the start: ${r} ${o}'s ${r==="bar"?"downbeat":"start"})`}let n=/^(\d+(?:\.\d+)?)\s*(b|bt|beat|bars?|beats?)$/.exec(e);if(n){let r=n[2]?.startsWith("bar")?"bar":"beat";return` \u2014 write ${Pr(Number(n[1]),r)} (counted from the start)`}return Jg(e,"number")}function Gt(e,t,n){return e.includes(t)?{value:t}:{error:`Expected one of ${e.join(", ")}, got ${n}`}}function TS(e){return/^[$@(]/.test(e)}function Qa(e,t){if(e!=="radius")return;let n=Uc(t);if(n===void 0)return;if("error"in n)return n;let r=[];for(let[o,s]of n.corners){let i=Qe(s,"numberValue");if("error"in i)return i;r.push([o,i.value])}return{cells:r}}function hn(e){try{let t=JSON.parse(e);return typeof t=="string"?t:void 0}catch{return}}function Zg(e){if(!e.startsWith("("))return e;let t=0;for(let n=0;n<e.length;n+=1){let r=e[n];if(r==="(")t+=1;else if(r===")"&&(t-=1,t===0))return n===e.length-1?e.slice(1,-1):e}return e}function Qg(e){let t=[],n="",r=0,o=!1;for(let s=0;s<e.length;s+=1){let i=e[s];if(o){n+=i,i==="\\"?(n+=e[s+1]??"",s+=1):i==='"'&&(o=!1);continue}if(i==='"'){o=!0,n+=i;continue}if(i==="("?r+=1:i===")"&&(r=Math.max(0,r-1)),r===0&&/\s/.test(i)){n!==""&&t.push(n),n="";continue}n+=i}return n!==""&&t.push(n),t}function ed(e,t,n){let r=n===void 0?void 0:ot(n);if(r?.value===void 0||!Xg(e[t]??""))return;let o=t;for(;o<e.length&&Xg(e[o]??"");)o+=1;let s=[Zg(r.value),...e.slice(t,o)].join(" ");return r.key==="dash"&&s.split(" ").every(i=>/^\d*\.?\d+$/.test(i))?{end:o,message:`dash: quote a pattern of several lengths \u2014 write dash="${s}"`}:r.key==="radius"&&s.split(" ").every(i=>/^-?\d+(?:\.\d+)?$/.test(i))?{end:o,message:`radius: quote the four-corner shorthand \u2014 write radius="${s}"`}:{end:o,message:`${r.key}: an expression with spaces needs parentheses \u2014 write ${r.key}=(${s})`}}function Xg(e){return!e.includes("=")&&/^(?:[-+*/]|-?\d+(?:\.\d+)?%?|[$@][\w.]*|[A-Za-z_]\w*(?:\.\w+)+|\(.*|.*\))$/.test(e)}function ot(e){let t=e.indexOf("=");return t===-1?{key:e,value:void 0}:{key:e.slice(0,t),value:e.slice(t+1)}}function Tl(e,t){let n,r=0,o,s=[],i=[],a={},d={},c={},l={},p=[],m=!1,g=!1,b,w=(O,j,$)=>{t.push({severity:"warning",code:j,message:`Line ${O}: ${$}`})},k=(O,j,$)=>{e(O.number,"invalid-brand",`${j} ${$} is written twice \u2014 keep one`)},_=O=>{if(n){e(O.number,"invalid-brand",`A document has one brand line; the first is on line ${r}`);return}let j=O.words[1]===void 0?void 0:zc(O.words[1]);if(!j){e(O.number,"invalid-brand","Expected brand <slug>@<version>, e.g. brand ember@3 \u2014 a slug is lower case, digits and dashes");return}let $=O.words.slice(2).includes("strict"),P=Nn({...O,words:O.words.filter((G,ee)=>ee<2||G!=="strict")},2,["id","theme"],e),C=P.theme;C!==void 0&&!La.includes(C)&&e(O.number,"invalid-brand",`theme= is light or dark, got ${C}`),n={...j,...P.id===void 0?{}:{id:P.id},...C==="dark"||C==="light"?{theme:C}:{},...$?{strict:!0}:{}},r=O.number,b={kind:"brand"}},M=O=>{let j=O.words[0];if(j==="summary"){let $=td(O,1);$===void 0?e(O.number,"invalid-brand",'Expected summary "\u2026"'):o=$;return}if(j==="change"){let $=Number(O.words[1]),P=O.words[2]===void 0?void 0:ty(O.words[2]);if(!Number.isSafeInteger($)||$<1||P===void 0){e(O.number,"invalid-brand",'Expected change <version> "<what changed>" at=<date>');return}let C=Nn(O,3,["at"],e);s.push({version:$,note:P,...C.at===void 0?{}:{at:C.at}});return}if(j==="source"){let $=O.words[1];if($===void 0||$.includes("=")){e(O.number,"invalid-brand","Expected source <kind> key=value\u2026, e.g. source site url=\u2026");return}i.push({kind:$,props:Nn(O,2,void 0,e)});return}if(j==="rule"){D(O);return}if(j==="banned"){let $=td(O,1);if($===void 0){e(O.number,"invalid-brand",'Expected banned "\u2026"');return}(l.voice??={entries:[]}).entries.push({kind:"banned",text:$});return}e(O.number,"invalid-brand",`"${j}" is not a line of the brand block \u2014 it holds summary, change and source, and in a design rule and banned`)},R=O=>{let j=O.words[1];if(j===void 0||j.includes("=")){e(O.number,"invalid-role","Expected role <name> light=<token or colour> dark=\u2026");return}let $=Nn(O,2,["light","dark"],e),P=$.light;if(P===void 0){e(O.number,"invalid-role",`role ${j} needs light=`);return}if(Object.prototype.hasOwnProperty.call(a,j))return k(O,"role",j);let C=$.dark;a[j]={light:ey(P),...C===void 0?{}:{dark:ey(C)}}},B=O=>{let j=O.words[1];if(j===void 0||j.includes("=")){e(O.number,"invalid-logo","Expected logo <id> asset=<name> min=<px> clear=<fraction>");return}let $=Nn(O,2,["asset","min","clear"],e),P=$.asset;if(P===void 0){e(O.number,"invalid-logo",`logo ${j} needs asset=`);return}let C={asset:P};for(let G of["min","clear"]){let ee=$[G];if(ee===void 0)continue;let fe=Number(ee);if(!Number.isFinite(fe)||fe<0){e(O.number,"invalid-logo",`logo ${j}: ${G} must be a number, got ${ee}`);continue}C[G]=fe}if(Object.prototype.hasOwnProperty.call(d,j))return k(O,"logo",j);d[j]=C},D=O=>{let j=O.words[1],$=O.words[2],P=O.words[3],C=P?.startsWith('"')===!0?hn(P):void 0;if(j===void 0||j.includes("=")){e(O.number,"invalid-rule",'Expected rule <id> must|should "<what it asks>" check=\u2026');return}if($===void 0||!Pa.includes($)){e(O.number,"invalid-rule",`rule ${j}: the second word is must or should`);return}if(C===void 0){e(O.number,"invalid-rule",`rule ${j} needs its words, quoted: rule ${j} ${$} "\u2026"`);return}let{check:G,...ee}=Nn(O,4,void 0,e);if(G!==void 0&&!Da.includes(G)&&w(O.number,"unknown-check",`rule ${j}: this build has no check "${G}", so it is kept as words only \u2014 the checks are ${Da.join(", ")}`),Object.prototype.hasOwnProperty.call(c,j))return k(O,"rule",j);c[j]={level:$,text:C,...G===void 0?{}:{check:G},...Object.keys(ee).length===0?{}:{params:ee}}},V=(O,j)=>{let $=O.words[0];if($.startsWith('"')){let P=td(O,0);P===void 0?e(O.number,"invalid-guide",`Could not read ${O.text}`):j.push({kind:"line",text:P});return}if($==="banned"||$==="avoid"){let P=td(O,1);P===void 0?e(O.number,"invalid-guide",`Expected ${$} "\u2026"`):j.push({kind:$,text:P});return}if($==="rewrite"){let P=Nn(O,1,["from","to"],e),C=P.from,G=P.to;if(C===void 0||G===void 0){e(O.number,"invalid-guide",'Expected rewrite from="\u2026" to="\u2026"');return}j.push({kind:"rewrite",from:C,to:G});return}if($==="ref"||$==="approved"||$==="rejected"){let P=Nn(O,1,["asset","note"],e),C=P.asset;if(C===void 0){e(O.number,"invalid-guide",`Expected ${$} asset=<name> note="\u2026"`);return}let G=P.note;j.push({kind:$,asset:C,...G===void 0?{}:{note:G}});return}e(O.number,"invalid-guide",`"${$}" is not a guide line \u2014 a guide holds quoted lines, banned, avoid, rewrite, ref, approved and rejected`)},T=O=>{let j=O.words[0];if(j.includes("=")||j.startsWith('"')){e(O.number,"invalid-review",'Expected <what>.<id> from=\u2026 note="\u2026", e.g. role.muted from=site');return}let $=Nn(O,1,["from","note"],e);p.push({target:j,...$.from===void 0?{}:{from:$.from},...$.note===void 0?{}:{note:$.note}})};return{take(O){if(O.indent>0)return b?(b.kind==="brand"?M(O):b.kind==="guide"?V(O,b.entries):T(O),!0):!1;b=void 0;let j=O.words[0];if(j!=="brand"&&!Na(j))return!1;switch(g=!0,j){case"brand":_(O);break;case"role":R(O);break;case"logo":B(O);break;case"rule":D(O);break;case"guide":{let $=O.words[1];if($===void 0||$.includes("=")||O.words.length>2){e(O.number,"invalid-guide","Expected guide <id> on its own line, e.g. guide voice"),b={kind:"guide",id:"",entries:[]};break}if(Object.prototype.hasOwnProperty.call(l,$)){k(O,"guide",$),b={kind:"guide",id:"",entries:[]};break}let P=[];l[$]={entries:P},b={kind:"guide",id:$,entries:P};break}case"review":O.words.length>1&&e(O.number,"invalid-review","review is a block: its items go on the lines under it"),m=!0,b={kind:"review"};break}return!0},finish(){if(!g)return{header:!1,review:!1};let O=n??Ra();return{brand:{slug:O.slug,version:O.version,...n?.id===void 0?{}:{id:n.id},...n?.theme===void 0?{}:{theme:n.theme},...n?.strict===!0?{strict:!0}:{},...o===void 0?{}:{summary:o},changes:s,sources:i,roles:a,logos:d,rules:c,guides:l,review:p},header:n!==void 0,review:m}}}}function Nn(e,t,n,r){let o={};for(let s of e.words.slice(t)){let{key:i,value:a}=ot(s);if(a===void 0){r(e.number,"invalid-brand",`A stray word "${s}" \u2014 expected key=value`);continue}if(n!==void 0&&!n.includes(i)){r(e.number,"invalid-brand",`"${i}" is not allowed here; this line takes ${n.join(", ")}`);continue}o[i]=ty(a)}return o}function td(e,t){if(e.words.length!==t+1)return;let n=e.words[t];return n.startsWith('"')?hn(n):void 0}function ty(e){return e.startsWith('"')?hn(e)??e:e}function ey(e){return e.startsWith("$")?e.slice(1):e}function ny(e,t,n="brand"){if(!t||t.slug==="")return;let r=["brand",jc(t)];t.id!==void 0&&r.push(`id=${Xe(t.id)}`),t.theme!==void 0&&r.push(`theme=${t.theme}`),t.strict===!0&&r.push("strict"),e.push(r.join(" ")),t.summary!==void 0&&e.push(`${rt}summary ${JSON.stringify(t.summary)}`);for(let o of t.changes){let s=["change",K(o.version),JSON.stringify(o.note)];o.at!==void 0&&s.push(`at=${Xe(o.at)}`),e.push(rt+s.join(" "))}for(let o of t.sources)e.push(rt+["source",o.kind,...jo(o.props)].join(" "));if(n==="design"){for(let o of ry(t))e.push(rt+o);for(let o of LS(t))e.push(`${rt}banned ${JSON.stringify(o)}`)}e.push("")}function ry(e){return Object.entries(e.rules).map(([t,n])=>["rule",t,n.level,JSON.stringify(n.text),...jo({check:n.check,...n.params})].join(" "))}function LS(e){return(e.guides.voice?.entries??[]).flatMap(t=>t.kind==="banned"?[t.text]:[])}function oy(e,t,n="brand"){if(!t)return;let r=n==="design",o=s=>{s.length!==0&&e.push(...s,"")};o(Object.entries(t.roles).map(([s,i])=>["role",s,...jo({light:i.light,dark:i.dark})].join(" "))),o(Object.entries(t.logos).map(([s,i])=>["logo",s,...jo({asset:i.asset,min:i.min===void 0?void 0:K(i.min),clear:i.clear===void 0?void 0:K(i.clear)})].join(" "))),r||o(ry(t));for(let[s,i]of Object.entries(t.guides)){let a=r&&s==="voice"?i.entries.filter(d=>d.kind!=="banned"):i.entries;if(!(r&&a.length===0)){e.push(`guide ${s}`);for(let d of a)e.push(rt+PS(d));e.push("")}}if(t.review.length>0){e.push("review");for(let s of t.review)e.push(rt+[s.target,...jo({from:s.from,note:s.note})].join(" "));e.push("")}}function PS(e){switch(e.kind){case"line":return JSON.stringify(e.text);case"banned":case"avoid":return`${e.kind} ${JSON.stringify(e.text)}`;case"rewrite":return`rewrite from=${JSON.stringify(e.from)} to=${JSON.stringify(e.to)}`;case"ref":case"approved":case"rejected":return[e.kind,...jo({asset:e.asset,note:e.note})].join(" ")}}function jo(e){let t=[];for(let[n,r]of Object.entries(e))r!==void 0&&t.push(`${n}=${Xe(r)}`);return t}var DS=new Set(["exit","delay","step","together","go","at","after","with"]),iy=["at","after","with","together","step"],NS=new Set(["pad","duration","delay","ease","on",...iy]);function Ll(e){if(e==="at"||e==="length")return sr;if(e==="w"||e==="h")return ln;if(e==="duration"||e==="delay"||e==="stagger"||e==="hold")return cn;if(e==="pad")return ln}function Pl(e,t){let n=e.words[1];if(n===void 0||n.includes("=")){t(e.number,"invalid-motion","Expected motion <page>, e.g. motion intro enter=fade");return}let r={};for(let s of e.words.slice(2)){let{key:i,value:a}=ot(s),d=mi.find(([l])=>l===i)?.[1];if(d===void 0){let l=DS.has(i)?` \u2014 ${i} goes on a node's line, under the header`:"";t(e.number,"invalid-motion",`motion ${n} has no "${i}"${l}`,n);continue}let c=Qe(a??"",d);"error"in c?t(e.number,"invalid-motion",`${i}: ${US(i,a)??c.error}`,n):i==="bpm"&&!VS(c.value)?t(e.number,"invalid-motion",`bpm: expected ${20} to ${300} beats a minute, got ${a??""}`,n):i==="meter"&&!HS(c.value)?t(e.number,"invalid-motion",`meter: expected a whole number of beats in a bar, 1 to ${16}, got ${a??""}`,n):c.value!==!1&&(r[i]=c.value)}let o=en({...r,lines:[]});for(let[s]of mi){let i=r[s];if(i===void 0||Ll(s)===void 0)continue;let a=Rl(s,i,o,n);a!==void 0&&(t(e.number,"invalid-motion",a,n),delete r[s])}return{page:n,number:e.number,head:r,lines:[],where:new Map,taken:new Map,numbers:[]}}function Dl(e,t,n){if(t.words[0]==="music"&&!(t.words[1]??"").includes("=")){IS(e,t,n);return}let r=t.words[0]==="camera"&&t.words[1]!==void 0&&!t.words[1].includes("="),o=r?t.words.slice(1):t.words,s=o[0];if(t.indent!==1){n(t.number,"invalid-motion","A motion line sits one level under its page");return}if(s.includes("=")){n(t.number,"invalid-motion",`Expected a node id first, got ${s}`);return}if(s===e.page&&!r){n(t.number,"invalid-motion",`${s} is the page: its transition goes on the header (motion ${s} enter=fade)`,s);return}let i=r?{id:s,camera:!0}:{id:s},a=!0;for(let l of o.slice(1)){let{key:p,value:m}=ot(l),g=jr.find(([k])=>k===p)?.[1];if(g===void 0){n(t.number,"invalid-motion",`A motion line has no "${p}"${zS(p)}`,s),a=!1;continue}if(r&&!NS.has(p)){n(t.number,"invalid-motion",`A camera line moves the shot and says only pad=, duration=, delay=, ease= and when: not ${p}=`,s),a=!1;continue}let b=Qe(m??"",g),w="error"in b||Ll(p)===void 0?void 0:Rl(p,b.value,en(dy(e)),e.page);"error"in b?(n(t.number,"invalid-motion",`${p}: ${b.error}`,s),a=!1):w!==void 0?(n(t.number,"invalid-motion",`${s}: ${w}`,s),a=!1):p==="on"&&e.head.bpm===void 0?(n(t.number,"invalid-motion",`${s}: on=${String(b.value)} needs a tempo \u2014 motion ${e.page} bpm=120`,s),a=!1):p==="go"&&On(b.value)===void 0?(n(t.number,"invalid-motion",`go: expected #<page>, back, next, or an https: or mailto: link, got ${m??""}`,s),a=!1):b.value!==!1&&(i[p]=b.value)}i.enter!==void 0&&i.exit!==void 0&&(n(t.number,"invalid-motion",`${s} either enters or exits on one line \u2014 write a second line for the other`,s),a=!1),i.emphasis!==void 0&&(i.enter!==void 0||i.exit!==void 0)&&(n(t.number,"invalid-motion",`${s} either ${i.enter!==void 0?"enters":"exits"} or is stressed on one line \u2014 write a second line for emphasis=`,s),a=!1);let d=iy.filter(l=>i[l]!==void 0);if(i.step===!0&&i.together===!0?(n(t.number,"invalid-motion",`${s} waits for a step or starts together with the line above, not both`,s),a=!1):d.length>1?(n(t.number,"invalid-motion",`${s} says when it starts twice (${d.join(", ")}): keep one`,s),a=!1):i.on!==void 0&&(i.with!==void 0||i.together===!0)&&(n(t.number,"invalid-motion",`${s} starts with another line (${i.with===void 0?"together":"with="}), so on= could only pull it apart: keep one`,s),a=!1),a){let l=jS(i);l!==void 0&&(n(t.number,"invalid-motion",`${s}: ${l}`,s),a=!1)}if(!a)return;let c=BS(i);if(!No(c)){n(t.number,"invalid-motion",`${s} says nothing: give it enter=, exit=, emphasis= or go=`,s);return}if(r){e.where.has(s)||e.where.set(s,t.number),e.lines.push(c),e.numbers.push(t.number);return}for(let l of["enter","exit","emphasis","go"]){if(c[l]===void 0)continue;let p=e.taken.get(`${s} ${l}`);if(p!==void 0){let m=l==="go"?"has a go=":l==="enter"?"enters":l==="exit"?"exits":"has an emphasis=";n(t.number,"invalid-motion",`${s} already ${m} on line ${p}`,s);return}}for(let l of["enter","exit","emphasis","go"])c[l]!==void 0&&e.taken.set(`${s} ${l}`,t.number);e.where.has(s)||e.where.set(s,t.number),e.lines.push(c),e.numbers.push(t.number)}function Nl(e){let t={...e.head.enter===void 0?{}:{enter:e.head.enter},...e.head.duration===void 0?{}:{duration:e.head.duration},...e.head.scroll===!0?{scroll:!0}:{},...e.head.length===void 0?{}:{length:e.head.length},...e.head.w===void 0?{}:{w:e.head.w},...e.head.h===void 0?{}:{h:e.head.h},...e.head.bpm===void 0?{}:{bpm:e.head.bpm},...e.head.meter===void 0?{}:{meter:e.head.meter},...e.music===void 0?{}:{music:e.music},lines:e.lines};return Tn(t)?void 0:t}function ay(e,t){let n=t.motion;if(n)for(let r of Ro(t)){let o=n[r];if(o===void 0||Tn(o))continue;e.at(-1)!==""&&e.push("");let s=["motion",r];for(let[i,a]of mi){let d=o[i];if(d!==void 0){if(a==="boolean"){d===!0&&s.push(i);continue}s.push(`${i}=${Xe(d)}`)}}if(e.push(s.join(" ")),o.music){let i=["music",o.music.asset];for(let[a,d]of xi){let c=o.music[a];if(c!==void 0){if(d==="boolean"){c===!0&&i.push(a);continue}i.push(`${a}=${Xe(c)}`)}}e.push(rt+i.join(" "))}for(let i of o.lines){let a=i.camera===!0?["camera",i.id]:[i.id];for(let[d,c]of jr){let l=i[d];if(l!==void 0){if(c==="boolean"){l===!0&&a.push(d);continue}a.push(`${d}=${Xe(l)}`)}}e.push(rt+a.join(" "))}}}var RS=new Set(["loop","step","together"]);function IS(e,t,n){let r=t.words[1];if(t.indent!==1){n(t.number,"invalid-motion","A motion line sits one level under its page");return}if(r===void 0){n(t.number,"invalid-motion","Expected music <asset>, e.g. music bed fadeout=1500");return}if(RS.has(r)){n(t.number,"invalid-motion",`music names its track first: music <asset> ${r}`);return}if(e.musicLine!==void 0){n(t.number,"invalid-motion",`motion ${e.page} already has music on line ${e.musicLine}: a page has one track`);return}let o={asset:r},s=en(dy(e)),i=!0,a=c=>{n(t.number,"invalid-motion",`music ${r}: ${c}`),i=!1};for(let c of t.words.slice(2)){let{key:l,value:p}=ot(c),m=xi.find(([b])=>b===l)?.[1];if(m===void 0){a(`the music line has no "${l}"${FS(l)}`);continue}if(l==="from"&&p!==void 0&&/\d(?:beats?|bars?)$/.test(p)){a(`from= is where in the track to begin, in milliseconds, not ${p}`);continue}let g=Qe(p??"",m);if("error"in g){a(`${l}: ${g.error}`);continue}if(l==="from"&&!sy(g.value,0,Lo)){a(`from: expected 0 to ${Lo} milliseconds, got ${p??""}`);continue}if(l==="volume"&&!sy(g.value,0,1)){a(`volume: expected 0 to 1, got ${p??""}`);continue}if(l==="fadein"||l==="fadeout"){let b=Rl(l,g.value,s,e.page);if(b!==void 0){a(b);continue}}g.value!==!1&&(o[l]=g.value)}if(!i)return;let d={asset:r};for(let[c]of xi)o[c]!==void 0&&(d[c]=o[c]);e.music=d,e.musicLine=t.number}function sy(e,t,n){return typeof e=="number"&&e>=t&&e<=n}function FS(e){return e==="fade"?" \u2014 write fadein= and fadeout=":e==="fade-in"||e==="fadeIn"||e==="fade_in"?" \u2014 write fadein=":e==="fade-out"||e==="fadeOut"||e==="fade_out"?" \u2014 write fadeout=":e==="start"||e==="offset"||e==="seek"?" \u2014 write from= (where in the track to begin, in milliseconds)":e==="gain"||e==="level"?" \u2014 write volume= (0 to 1)":e==="at"||e==="delay"||e==="after"||e==="with"?": the music starts with the video; from= picks where in the track":": it takes from=, volume=, fadein=, fadeout= and loop"}function BS(e){let t=e.camera===!0?{id:e.id,camera:!0}:{id:e.id};for(let[n]of jr)e[n]!==void 0&&(t[n]=e[n]);return t}function dy(e){let{bpm:t,meter:n}=e.head;return{...t===void 0?{}:{bpm:t},...n===void 0?{}:{meter:n},lines:[]}}function Rl(e,t,n,r){if(Dr(t)&&!n)return`${t} needs a tempo \u2014 motion ${r} bpm=120`;let o=typeof t=="number"||Dr(t)?ft(t,n):void 0,s=Ll(e)??cn;if(o!==void 0&&o>=(e==="w"||e==="h"?16:0)&&o<=s)return;let a=String(t),d=Dr(t)&&o!==void 0?` (${Math.round(o)} ms)`:"";return e==="w"||e==="h"?`${e}: expected 16 to ${ln} pixels, got ${a}`:e==="pad"?`pad: expected 0 to ${ln}, got ${a}`:`${e}: expected 0 to ${s} milliseconds, got ${a}${d}`}function VS(e){return typeof e=="number"&&e>=20&&e<=300}function HS(e){return typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=16}function US(e,t){if(e==="meter"&&t!==void 0&&/^\d+\/\d+$/.test(t))return`Expected beats in a bar, got ${t} \u2014 meter is beats per bar: meter=${t.split("/")[0]??""}`;if(e==="duration"&&t!==void 0&&/\d(?:beats?|bars?)$/.test(t))return`Expected milliseconds, got ${t} \u2014 the page transition is milliseconds; beats are for the lines`}function zS(e){return e==="emphasise"||e==="emphasize"?" \u2014 write emphasis=pulse":e==="easing"?" \u2014 write ease=":e==="split"?" \u2014 write by=word or by=letter":e==="start"?" \u2014 write at= (milliseconds), after= or with=":""}function jS(e){let t=e.enter,n=e.exit,r=t??n,o=e.from;if(n==="count")return"count only enters: it runs a number up to its written value";if(o!==void 0)if(r==="count"){if(typeof o!="number")return"from= on count is the number it starts at, e.g. from=0"}else if(r==="wipe"||r==="grow"){if(typeof o=="number")return`from= on ${r} is a side: ${or.join(", ")}`}else return"from= goes with count (a number), or wipe and grow (a side)";if(e.by!==void 0&&r!==void 0&&!Po.includes(r))return`by= splits a text for ${Po.join(", ")}, not ${r}`;if(e.by!==void 0&&r===void 0)return"by= goes with enter= or exit=";if(e.stagger!==void 0&&r===void 0)return"stagger= goes with enter= or exit=";if(e.hold!==void 0&&t===void 0)return"hold= goes with enter=: how long to stay before leaving the way it came"}var KS=24;function Fl(e,t={}){let n=[`version ${K(Et(e))}`,`kind ${e.kind}`];e.title!==void 0&&n.push(`title ${JSON.stringify(e.title)}`),ny(n,e.brand,e.kind);for(let[o,s]of Object.entries(e.tokens))n.push(`$${o} = ${Xe(s)}`);n.at(-1)!==""&&n.push("");let r=e.themes?.dark;if(r!==void 0&&Object.keys(r).length>0){n.push("theme dark");for(let[o,s]of Object.entries(r))n.push(` $${o} = ${Xe(s)}`);n.push("")}for(let[o,s]of Object.entries(e.fonts))WS(n,o,s,t),n.push("");if(Object.keys(e.assets).length>0){for(let[o,s]of Object.entries(e.assets))n.push(qS(o,s));n.push("")}return oy(n,e.brand,e.kind),GS(e.root)?e.root.children.forEach((o,s)=>{s>0&&n.push(""),Il(n,o,0)}):Il(n,e.root,0),ay(n,e),n.join(`
33
+ `)}function GS(e){return e.id===dn&&e.w===void 0&&e.h===void 0&&e.background===void 0&&e.name===void 0}function qS(e,t){let n=[`asset ${e} = ${t.type}`,`hash=${t.hash}`,`bytes=${K(t.bytes)}`];t.ms!==void 0&&n.push(`ms=${K(t.ms)}`);for(let r of["credit","source","license"]){let o=t[r];o!==void 0&&n.push(`${r}=${Xe(o)}`)}return n.join(" ")}function WS(e,t,n,r){e.push(`font ${t} = ${Xe(n.family)}`),n.fallback!==void 0&&e.push(`${rt}fallback ${Xe(n.fallback)}`);for(let o of n.faces??[]){let s=o.asset!==void 0?[`face asset=${o.asset}`]:[`face ${Xe(r.abbreviateFaces?XS(o.src??""):o.src??"")}`];for(let[i]of $l){let a=o[i];a!==void 0&&s.push(`${i}=${Xe(a)}`)}e.push(rt+s.join(" "))}}function XS(e){return e.startsWith("data:")?`${e.slice(0,KS)}\u2026 ${K(Math.round(e.length/1024))} kB`:e}function Il(e,t,n){let r=rt.repeat(n),o=t,s=[t.type,t.id],i=Ca(o);for(let[a,d]of Uo[t.type]){if(i!==void 0&&uy(a)){a===Bt[0]&&s.push(`radius=${cy(i)}`);continue}let c=o[a];if(c!==void 0){if(d==="boolean"){c===!0&&s.push(a);continue}s.push(`${a}=${Xe(c)}`)}}if(e.push(r+s.join(" ")),t.type==="text"&&ly(e,t.content,n+1),t.type==="instance"){YS(e,t,n+1);return}if(me(t))for(let a of te(t))Il(e,a,n+1)}function uy(e){return Bt.includes(e)}function cy(e){return`"${e.map(K).join(" ")}"`}function YS(e,t,n){let r=rt.repeat(n),o=s=>Uo[s].map(([i])=>i);for(let[s,i]of qs(t,o)){let a=[Za,s],d=Ca(Object.fromEntries(i));for(let[l,p]of i)if(l!=="content"){if(d!==void 0&&uy(l)){l===Bt[0]&&a.push(`radius=${cy(d)}`);continue}typeof p=="boolean"?a.push(p?l:`${l}=false`):a.push(`${l}=${Xe(p)}`)}e.push(r+a.join(" "));let c=i.find(([l])=>l==="content")?.[1];c!==void 0&&ly(e,c,n+1)}}function ly(e,t,n){let r=rt.repeat(n),o=typeof t=="string"?[t]:t;for(let s of o){if(typeof s=="string"){e.push(r+JSON.stringify(s));continue}e.push(r+[JSON.stringify(s.text),...JS(s)].join(" "))}}function JS(e){let t=[];for(let[n,r]of hi){let o=e[n];if(o!==void 0){if(r==="boolean"){o===!0&&t.push(n);continue}t.push(`${n}=${Xe(o)}`)}}return t}var Kr="--- payload base64 ---",fy="sha256-";function py(e){let t=ZS(e);return t===-1?{head:e,payload:""}:{head:e.slice(0,t),payload:e.slice(t+Kr.length)}}function Bl(e){let{head:t,payload:n}=py(e);return{head:t,blocks:hy(n)}}function Vl(e,t){let n=new Map;for(let r of QS(e)){let o=t.get(r);o!==void 0&&n.set(r,o)}return n.size===0?e:`${e.trimEnd()}
34
34
 
35
- ${Fp(n)}`}function Rp(e){let t=new Map;for(let n of e.split(`
36
- `)){let r=n.indexOf(" ");if(r===-1)continue;let o=n.slice(0,r);o.startsWith(Np)&&t.set(o,n.slice(r+1).trim())}return t}function Fp(e){let t=[...e.entries()].sort(([n],[r])=>n<r?-1:n>r?1:0).map(([n,r])=>`${n} ${r}`);return`${jn}
35
+ ${my(n)}`}function hy(e){let t=new Map;for(let n of e.split(`
36
+ `)){let r=n.indexOf(" ");if(r===-1)continue;let o=n.slice(0,r);o.startsWith(fy)&&t.set(o,n.slice(r+1).trim())}return t}function my(e){let t=[...e.entries()].sort(([n],[r])=>n<r?-1:n>r?1:0).map(([n,r])=>`${n} ${r}`);return`${Kr}
37
37
  ${t.join(`
38
38
  `)}
39
- `}async function Nd(e){let t=await crypto.subtle.digest("SHA-256",e),n=[...new Uint8Array(t)].map(r=>r.toString(16).padStart(2,"0"));return`${Np}${n.join("")}`}function Id(e,t){return`data:${e};base64,${t}`}function Rd(e){let t=e.toBase64;if(typeof t=="function")return t.call(e);let n="";for(let r=0;r<e.length;r+=32768)n+=String.fromCharCode(...e.subarray(r,r+32768));return btoa(n)}function Fd(e){let t=Uint8Array.fromBase64;if(typeof t=="function")return t(e);let n=atob(e),r=new Uint8Array(n.length);for(let o=0;o<n.length;o+=1)r[o]=n.charCodeAt(o);return r}function Mv(e){if(e.startsWith(jn))return 0;let t=e.indexOf(`
40
- ${jn}`);return t===-1?-1:t+1}function Av(e){let t=new Set;for(let n of e.matchAll(/sha256-[0-9a-f]{64}/g))t.add(n[0]);return t}function Bd(e){return(t,n,r,o)=>{e.push({severity:"error",code:n,message:`Line ${t}: ${r}`,...o===void 0?{}:{nodeId:o}})}}function Hd(e){let t=[],n=e.split(`
41
- `);for(let r=0;r<n.length;r+=1){let o=n[r],s=o.trim();if(s===jn)break;if(s===""||s.startsWith("```"))continue;let i=o.length-o.trimStart().length;t.push({number:r+1,indent:Math.floor(i/2),text:s,words:Sp(s)})}return t}function Vd(e){let t=[],n=[],r,o=()=>{r&&r.runs.length>0&&(r.props.content=Hp(r.runs)),r=void 0},s=i=>{for(o();t.length>0&&t[t.length-1].indent>=i;)Tv(t.pop())};return{push(i){let d=i.words[0];if(d.startsWith('"')&&r&&i.indent>r.indent){let m=Bp(i,e);return m!==void 0&&r.runs.push(m),!0}if(d===qs){s(i.indent);let m=t[t.length-1];return!m||m.type!=="instance"?(e(i.number,"invalid-override","An override line must sit inside an instance"),!0):(r=Ov(m,i,e),!0)}if(d.startsWith('"')){let m=t[t.length-1];if(!m||m.type!=="text")return e(i.number,"invalid-content","A quoted line must sit inside a text node"),!0;let y=Bp(i,e);return y!==void 0&&m.runs.push(y),!0}if(!js(d))return!1;s(i.indent);let l=i.words[1];if(l===void 0||l.includes("="))return e(i.number,"missing-id",`A ${d} needs an id`),!0;let f=$v(d,l,i.words.slice(2),i,e),p=t[t.length-1];return p?.type==="instance"?e(i.number,"invalid-override",`${p.record.id} takes its contents from its component \u2014 change the component, or write an override line`,l):p?p.children.push(f.record):n.push(f.record),t.push(f),!0},finish(){return s(0),n}}}function $v(e,t,n,r,o){let s={type:e,id:t},i=[];for(let d=0;d<n.length;d+=1){let{key:l,value:f}=Ke(n[d]),p=Ks(e,l);if(p===void 0){let y=Ws(n,d,n[d-1]);y?(o(r.number,"invalid-value",y.message,t),d=y.end-1):o(r.number,"invalid-value",`${e} has no property "${l}"`,t);continue}let m=je(f??"",p);"error"in m?o(r.number,"invalid-value",`${l}: ${m.error}`,t):s[l]=m.value}return ks(e)&&(s.children=i),e==="text"&&(s.content=""),{indent:r.indent,type:e,record:s,children:i,runs:[]}}function Ov(e,t,n){let r=e.record.id,o=t.words[1];if(o===void 0||o.includes("=")){n(t.number,"invalid-override","An override names the part it changes, e.g. override item.title fill=accent",r);return}let s=e.record.overrides??={},i=s[o]??={},d=t.words.slice(2);for(let l=0;l<d.length;l+=1){let{key:f,value:p}=Ke(d[l]),m=fn(f)?Gs(f):void 0;if(m===void 0){let v=Ws(d,l,d[l-1]);v?(n(t.number,"invalid-value",v.message,r),l=v.end-1):f==="content"?n(t.number,"invalid-value","Write the text as quoted lines under the override",r):n(t.number,"invalid-value",`An override cannot set "${f}"`,r);continue}let y=je(p??"",m);"error"in y?n(t.number,"invalid-value",`${f}: ${y.error}`,r):i[f]=y.value}return{indent:t.indent,props:i,runs:[]}}function Tv(e){if(e.type==="text"&&(e.record.content=Hp(e.runs)),e.type==="instance"){let t=e.record.overrides;for(let[n,r]of Object.entries(t??{}))Object.keys(r).length===0&&delete t?.[n];t&&Object.keys(t).length===0&&delete e.record.overrides}}function Hp(e){if(e.length===0)return"";let t=e[0];return e.length===1&&typeof t=="string"?t:[...e]}function Bp(e,t){let n=Pt(e.words[0]);if(n===void 0){t(e.number,"invalid-run","Malformed quoted string");return}if(e.words.length===1)return n;let r={text:n};for(let o of e.words.slice(1)){let{key:s,value:i}=Ke(o),d=Co.find(([f])=>f===s);if(!d){t(e.number,"invalid-run",`A run has no mark "${s}"`);continue}let l=je(i??"",d[1]);"error"in l?t(e.number,"invalid-run",`${s}: ${l.error}`):r[s]=l.value}return r}function $o(e){let t=[],n=Bd(t),r=cn,o,s=!1,i={},d={},l={},f=Vd(n),p=Ed(n,t),m,y={},v=!1,C=!1,_={},g=new Map,P,A=!1,R=()=>{if(!P)return;let z=P;P=void 0;let X=g.get(z.page);if(X!==void 0){n(z.number,"invalid-motion",`motion ${z.page} is written twice \u2014 put its lines in the block on line ${X}`,z.page);return}g.set(z.page,z.number);for(let[de,S]of z.where)g.set(`${z.page} ${de}`,S);let ae=$d(z);ae&&(_[z.page]=ae)};for(let z of Hd(e)){let X=z.words[0];if(P&&z.indent>0){Ad(P,z,n);continue}if(!(A&&z.indent>0)){if(A=!1,R(),X==="motion"&&z.indent===0){m=void 0,P=Md(z,n),A=P===void 0;continue}if(p.take(z)){m=void 0;continue}if(X==="version"){s=!0,Pv(z,t);continue}if(X==="kind"&&z.indent===0){r=Nv(z,t);continue}if(X==="title"&&z.indent===0){o=Vp(z,n);continue}if(X==="theme"&&z.indent===0){m=void 0,v=!0,C&&n(z.number,"invalid-theme","theme dark is written twice \u2014 keep one block"),C=!0,(z.words[1]!=="dark"||z.words.length>2)&&n(z.number,"invalid-theme","Expected theme dark on its own line, with the tokens that differ indented under it");continue}if(X.startsWith("$")){if(m=void 0,v&&z.indent>0){Ud(z,y,n);continue}v=!1,Ud(z,i,n);continue}if(z.indent===0)v=!1;else if(v){n(z.number,"invalid-theme","A theme block holds only $name = value lines");continue}if(X==="asset"&&z.indent===0){m=void 0,Iv(z,l,n);continue}if(X==="font"&&z.indent===0){m=Fv(z,d,n);continue}if((X==="fallback"||X==="face")&&m){Hv(X,z,m,n);continue}m=void 0,!f.push(z)&&n(z.number,"unknown-node-type",`Unknown statement "${X}"`)}}R();let $=Dv(p.finish(),r,t),D=Ot({dark:y}),T={...$===void 0?{}:{brand:$},...D===void 0?{}:{themes:D}},V=Lv(f.finish(),t),O=Object.keys(_).length===0?{}:{motion:_},j=(z,X)=>g.get(X===void 0?z:`${z} ${X}`);if(!V){s||t.push({severity:"error",code:"invalid-document",message:"No nodes found"});let z=dr({id:$t,children:[]}),X=uo({kind:r,...o===void 0?{}:{title:o},tokens:i,fonts:d,assets:l,...O,...T,root:z});return t.push(...mr(X,j)),{document:X,problems:t}}let M=Bt(V),G={version:st({kind:r,fonts:d,...T,root:M}),kind:r,...o===void 0?{}:{title:o},tokens:i,fonts:d,assets:l,...O,...T,root:M};return t.push(...mr(G,j)),{document:G,problems:t}}function Lv(e,t){let n=e[0];if(n!==void 0){if(e.length===1&&n.type==="canvas")return n;for(let r of e){if(r.type!=="canvas")continue;let o=r.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:$t,children:[...e]}}}function Dv(e,t,n){let r=e.brand;if(!r)return;e.header||n.push({severity:"error",code:"invalid-brand",message:"A brand needs its brand line first, e.g. brand ember@1"});let o=Object.entries(r.guides).filter(([i,d])=>i!=="voice"||d.entries.some(l=>l.kind!=="banned")),s=Object.keys(r.roles).length+Object.keys(r.logos).length+o.length+r.review.length;return t!=="brand"&&s>0&&n.push({severity:"warning",code:"brand-only",message:"Roles, logos, guides and review define a brand, and are read in a kind brand document"}),r}function Pv(e,t){ao.includes(Number(e.words[1]))||t.push({severity:"warning",code:"version-mismatch",message:`Line ${e.number}: expected version ${lo} or older, got ${e.words[1]??"nothing"}`})}function Nv(e,t){let n=e.words[1];return n!==void 0&&Nn.includes(n)?n:(t.push({severity:"error",code:"unknown-kind",message:`Line ${e.number}: unknown kind "${n??"nothing"}" \u2014 this build reads ${Nn.join(", ")}`}),cn)}function Vp(e,t){let n=e.words.slice(1).join(" ").trim();if(n===""){t(e.number,"invalid-value",'title needs a name, e.g. title "Pitch deck"');return}let r=n.startsWith('"')?Pt(n):n;if(r===void 0){t(e.number,"invalid-value",`Could not read the title ${n}`);return}return r.trim()===""?void 0:r}function Ud(e,t,n){let{name:r,value:o}=zd(e.words);if(r===void 0||o===void 0){n(e.number,"invalid-token","Expected $name = value");return}if(!o.startsWith('"')&&/\s/.test(o)){n(e.number,"invalid-token",`$${r}: expected one value, got "${o}". Quote it if the value has spaces; there are no comments.`);return}let s=je(o,"stringValue");if("error"in s){n(e.number,"invalid-token",`$${r}: ${s.error}`);return}if(typeof s.value!="string"){n(e.number,"invalid-token",`$${r} may not be an expression`);return}t[r]=Up(s.value,o)}function Up(e,t){let n=Number(e);return t.startsWith('"')||!Number.isFinite(n)||e.trim()===""?e:n}function zd(e){let t=e[0],n=s=>s.startsWith("$")?s.slice(1):s;if(e[1]==="=")return{name:n(t),value:e.slice(2).join(" ")||void 0};let{key:r,value:o}=Ke(t);return o!==void 0?{name:n(r),value:o}:{name:n(t)}}function Iv(e,t,n){let r=e.words.slice(1),o=r[0],s=r[1]==="=",i=o===void 0?void 0:Ke(o),d=i?.key,l=s?r[2]:i?.value,f=r.slice(s?3:1);if(d===void 0||d===""||l===void 0){n(e.number,"invalid-asset","Expected asset <name> = <type> hash=\u2026 bytes=\u2026");return}let p={};for(let C of f){let{key:_,value:g}=Ke(C);if(g===void 0){n(e.number,"invalid-asset",`Asset "${d}" has a stray word "${C}"`);continue}p[_]=Rv(g)}let m=p.hash,y=Number(p.bytes);if(m===void 0||!Number.isFinite(y)){n(e.number,"invalid-asset",`Asset "${d}" needs a hash and a bytes count`);return}let v=p.ms===void 0?void 0:Number(p.ms);if(v!==void 0&&!(Number.isFinite(v)&&v>=0)){n(e.number,"invalid-asset",`Asset "${d}": ms is the track's length, in milliseconds`);return}t[d]={type:l,hash:m,bytes:y,...v===void 0?{}:{ms:v},...p.credit===void 0?{}:{credit:p.credit},...p.source===void 0?{}:{source:p.source},...p.license===void 0?{}:{license:p.license}}}function Rv(e){return e.startsWith('"')?Pt(e)??e:e}function Fv(e,t,n){let{name:r,value:o}=zd(e.words.slice(1));if(r===void 0||o===void 0){n(e.number,"invalid-font","Expected font <name> = <family>");return}let s=je(o,"string"),i={family:"error"in s?o:s.value};return t[r]=i,{family:i,faces:[]}}var Bv=/^[A-Za-z_][\w-]*$/;function Hv(e,t,n,r){if(e==="fallback"){let d=je(t.words.slice(1).join(" "),"string");"error"in d?r(t.number,"invalid-font",`fallback: ${d.error}`):n.family.fallback=d.value;return}let o=t.words[1];if(o===void 0){r(t.number,"invalid-font-face","A face needs a src, or asset=");return}let s=o.startsWith("asset=")?o.slice(6):void 0,i={};if(s!==void 0){if(!Bv.test(s)){r(t.number,"invalid-font-face",`asset=${s}: not an asset name`);return}i.asset=s}else{let d=je(o,"string");i.src="error"in d?o:d.value}for(let d of t.words.slice(2)){let{key:l,value:f}=Ke(d);if(l!=="weight"&&l!=="style"){r(t.number,"invalid-font-face",`A face has no property "${l}"`);continue}let p=je(f??"",l==="weight"?"number":"fontStyle");"error"in p?r(t.number,"invalid-font-face",`${l}: ${p.error}`):i[l]=p.value}n.faces.push(i),n.family.faces=n.faces}var jp="https://getv.design/ns/vd",b_=`<metadata><vd:document xmlns:vd="${jp}" version="1"><![CDATA[
42
- `;var Vv=/<vd:document\b[^>]*>([\s\S]*?)<\/vd:document\s*>/;function jd(e){let t=Vv.exec(e);if(!t)return;let n=t[1]??"",r="",o=n;for(;;){let s=o.indexOf("<![CDATA[");if(s===-1){r+=zp(o);break}r+=zp(o.slice(0,s));let i=o.indexOf("]]>",s);if(i===-1){r+=o.slice(s+9);break}r+=o.slice(s+9,i),o=o.slice(i+3)}return`${r.replace(/^\n/,"").replace(/\n$/,"")}
43
- `}function Kd(e){return/^\uFEFF?\s*</.test(e)}function zp(e){return e.replace(/&(lt|gt|quot|apos|amp|#\d+|#x[0-9a-fA-F]+);/g,(t,n)=>{switch(n){case"lt":return"<";case"gt":return">";case"quot":return'"';case"apos":return"'";case"amp":return"&";default:{let r=n.startsWith("#x")?parseInt(n.slice(2),16):parseInt(n.slice(1),10);return Number.isFinite(r)&&r<=1114111?String.fromCodePoint(r):t}}})}function Gd(e){let t=[],n=Be(e);if(!n)return t.push({severity:"error",code:"invalid-document",message:"Expected an object"}),{document:uo(),problems:t};ao.includes(n.version)||t.push({severity:"warning",code:"version-mismatch",message:`Expected version ${lo} or older, got ${JSON.stringify(n.version)}`});let r=qp(n.root,t);r&&db(r,t);let o=r&&Bt(r),s=Uv(n.motion,t),i=qv(n.kind,t),d=n.brand===void 0?void 0:Va(n.brand,v=>{t.push({severity:"error",code:"invalid-brand",message:v})}),l=Be(Be(n.themes)?.dark),f=l===void 0?void 0:Ot({dark:Kp(l,t)}),p={...d===void 0?{}:{brand:d},...f===void 0?{}:{themes:f}},m=Xv(n.fonts,t),y={version:st({kind:i,fonts:m,...p,...o?{root:o}:{}}),kind:i,...typeof n.title=="string"&&n.title.trim()!==""?{title:n.title}:{},tokens:Kp(n.tokens,t),fonts:m,assets:Wv(n.assets,t),...s===void 0?{}:{motion:s},...p,root:o??dr({id:$t,children:[]})};return t.push(...mr(y)),{document:y,problems:t}}function Uv(e,t){if(e===void 0)return;let n=Be(e),r=s=>{t.push({severity:"error",code:"invalid-motion",message:s})};if(!n){r("`motion` must be an object");return}let o={};for(let[s,i]of Object.entries(n)){let d=Be(i);if(!d||!Array.isArray(d.lines)){r(`motion ${s} must be an object with a lines array`);continue}let l=d.enter,f=d.duration;if(l!==void 0&&!fr.includes(l)){r(`motion ${s}: enter must be one of ${fr.join(", ")}`);continue}if(f!==void 0&&!Gv(f)){r(`motion ${s}: duration must be 0 to ${Tt} milliseconds`);continue}let p=d.scroll;if(p!==void 0&&typeof p!="boolean"){r(`motion ${s}: scroll must be true or false`);continue}let m=d.bpm,y=d.meter;if(m!==void 0&&!(typeof m=="number"&&m>=20&&m<=300)){r(`motion ${s}: bpm must be ${20} to ${300}`);continue}if(y!==void 0&&!(typeof y=="number"&&Number.isInteger(y)&&y>=1&&y<=16)){r(`motion ${s}: meter must be a whole number from 1 to ${16}`);continue}let v=_t({...m===void 0?{}:{bpm:m},...y===void 0?{}:{meter:y},lines:[]}),C=Kv(d.music,v);if(C===null){r(`motion ${s}: music must be { asset, from?, volume?, fadein?, fadeout?, loop? }`);continue}let _=d.length;if(_!==void 0&&!qd(_,xn,v)){r(`motion ${s}: length must be 0 to ${xn} milliseconds, or beats with a bpm`);continue}let g=R=>R===void 0||typeof R=="number"&&R>=16&&R<=Lt;if(!g(d.w)||!g(d.h)){r(`motion ${s}: w and h must be 16 to ${Lt} pixels`);continue}let P=d.lines.flatMap(R=>{let $=zv(R,v);return $===void 0&&r(`motion ${s}: a line that is not one: ${JSON.stringify(R)}`),$===void 0?[]:[$]}),A={...l===void 0?{}:{enter:l},...f===void 0?{}:{duration:f},...p===!0?{scroll:!0}:{},..._===void 0?{}:{length:_},...d.w===void 0?{}:{w:d.w},...d.h===void 0?{}:{h:d.h},...m===void 0?{}:{bpm:m},...y===void 0?{}:{meter:y},...C===void 0?{}:{music:C},lines:P};Vt(A)||(o[s]=A)}return Object.keys(o).length===0?void 0:o}function zv(e,t){let n=Be(e);if(!n||typeof n.id!="string")return;let r={id:n.id};if(n.camera!==void 0){if(n.camera!==!0)return;r.camera=!0}for(let[m,y]of zn){let v=n[m];if(v!==void 0){if(!jv(m,y,v,t))return;r[m]=v}}if(r.on!==void 0&&(!t||r.with!==void 0||r.together))return;let{enter:o,exit:s,emphasis:i,step:d,together:l}=r;if(o!==void 0&&s!==void 0||i!==void 0&&(o!==void 0||s!==void 0)||d===!0&&l===!0||["at","after","with","together","step"].filter(m=>r[m]!==void 0).length>1||r.camera===!0&&(o??s??i??r.go)!==void 0)return;let p=r;return cr(p)?p:void 0}function jv(e,t,n,r){switch(t){case"time":return qd(n,e==="at"?xn:Tt,r);case"on":return fo.includes(n);case"boolean":return n===!0;case"number":return typeof n!="number"||!Number.isFinite(n)||n<0?!1:e==="at"?n<=xn:e==="pad"?n<=Lt:n<=Tt;case"string":return typeof n=="string"&&(e!=="go"||Ht(n)!==void 0);case"nodeEffect":return mo.includes(n);case"emphasisEffect":return ho.includes(n);case"ease":return xo.includes(n);case"piece":return go.includes(n);case"from":return typeof n=="number"&&Number.isFinite(n)||hn.includes(n);default:return!1}}function Kv(e,t){if(e===void 0)return;let n=Be(e);if(!n||typeof n.asset!="string"||n.asset==="")return null;let r={asset:n.asset};for(let i of Object.keys(n))if(i!=="asset"&&!po.includes(i))return null;let o=n.from;if(o!==void 0&&!(typeof o=="number"&&o>=0&&o<=lr))return null;let s=n.volume;if(s!==void 0&&!(typeof s=="number"&&s>=0&&s<=1))return null;for(let i of["fadein","fadeout"])if(n[i]!==void 0&&!qd(n[i],Tt,t))return null;if(n.loop!==void 0&&n.loop!==!0)return null;for(let i of po)n[i]!==void 0&&(r[i]=n[i]);return r}function qd(e,t,n){if(typeof e=="number")return Number.isFinite(e)&&e>=0&&e<=t;if(!Fn(e)||!n)return!1;let r=In(e);if(!r||Rn(r.count,r.unit)!==e)return!1;let o=Je(e,n);return o!==void 0&&o<=t}function Gv(e){return typeof e=="number"&&e>=0&&e<=Tt}function qv(e,t){return e==null?cn:typeof e=="string"&&Nn.includes(e)?e:(t.push({severity:"error",code:"unknown-kind",message:`Unknown kind ${JSON.stringify(e)} \u2014 this build reads ${Nn.join(", ")}`}),cn)}function Kp(e,t){let n={};if(e===void 0)return n;let r=Be(e);if(!r)return t.push({severity:"error",code:"invalid-tokens",message:"`tokens` must be an object"}),n;for(let[o,s]of Object.entries(r))typeof s=="number"||typeof s=="string"?n[o]=s:t.push({severity:"error",code:"invalid-token",message:`Token $${o} must be a number or string`});return n}function Wv(e,t){let n={};if(e===void 0)return n;let r=Be(e);if(!r)return t.push({severity:"error",code:"invalid-assets",message:"`assets` must be an object"}),n;for(let[o,s]of Object.entries(r)){let i=Be(s);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}n[o]={type:i.type,hash:i.hash,bytes:i.bytes,...typeof i.ms=="number"&&i.ms>=0?{ms:i.ms}:{},...ut(i.credit,"credit"),...ut(i.source,"source"),...ut(i.license,"license")}}return n}function Xv(e,t){let n={};if(e===void 0)return n;let r=Be(e);if(!r)return t.push({severity:"error",code:"invalid-fonts",message:"`fonts` must be an object"}),n;for(let[o,s]of Object.entries(r)){let i=Be(s);if(!i||typeof i.family!="string"){t.push({severity:"error",code:"invalid-font",message:`Font "${o}" must be an object with a "family"`});continue}n[o]={family:i.family,...typeof i.fallback=="string"?{fallback:i.fallback}:{},...Yv(i.faces,o,t)}}return n}function Yv(e,t,n){if(e===void 0)return{};if(!Array.isArray(e))return n.push({severity:"error",code:"invalid-font",message:`Font "${t}" has a "faces" that is not an array`}),{};let r=[];for(let o of e){let s=Be(o),i=s?.src,d=s?.asset;if(!s||typeof i=="string"==(typeof d=="string")){n.push({severity:"error",code:"invalid-font-face",message:`A face of font "${t}" needs a "src" or an "asset", and not both`});continue}let l=s.style;r.push({...typeof i=="string"?{src:i}:{asset:d},...typeof s.weight=="number"?{weight:s.weight}:{},...l==="italic"||l==="normal"?{style:l}:{}})}return r.length>0?{faces:r}:{}}function Jv(e,t){let n=Be(e);if(!n){t.push({severity:"error",code:"invalid-node",message:"Expected a node object"});return}switch(n.type){case"canvas":return qp(e,t);case"ellipse":return sb(n,t);case"frame":return Zv(n,t);case"group":return Qv(n,t);case"image":return rb(n,t);case"instance":return eb(n,t);case"rect":return ob(n,t);case"text":return ab(n,t);case"vector":return ib(n,t);default:t.push({severity:"error",code:"unknown-node-type",message:`Unknown node type ${JSON.stringify(n.type)}`,...typeof n.id=="string"?{nodeId:n.id}:{}});return}}function qp(e,t){let n=Be(e);if(!n){t.push({severity:"error",code:"invalid-node",message:"`root` must be a canvas node"});return}let r=Wt(n,$t,t);return{type:"canvas",id:r,...ut(n.name,"name"),...Gp(n,"w",1280,r,t),...Gp(n,"h",720,r,t),...yt(n.background,r,"background",t),children:Wd(n.children,r,t)}}function Gp(e,t,n,r,o){return e[t]===void 0?{}:{[t]:Se(e[t],r,t,n,o)}}function Zv(e,t){let n=Wt(e,"frame",t);return{type:"frame",id:n,...ut(e.name,"name"),x:Se(e.x,n,"x",0,t),y:Se(e.y,n,"y",0,t),w:Se(e.w,n,"w",0,t),h:Se(e.h,n,"h",0,t),...yt(e.background,n,"background",t),...Ys(e.clip,"clip"),...Ys(e.skip,"skip"),...Ys(e.component,"component"),...Sr(e,n,t),...yn(e),children:Wd(e.children,n,t)}}function Qv(e,t){let n=Wt(e,"group",t);return{type:"group",id:n,...ut(e.name,"name"),...yn(e),children:Wd(e.children,n,t)}}function eb(e,t){let n=Wt(e,"instance",t),r=e.component;(typeof r!="string"||r==="")&&t.push({severity:"error",code:"invalid-value",message:"An instance needs the id of the component it places",nodeId:n,prop:"component"});let o=tb(e.overrides,n,t);return{type:"instance",id:n,...ut(e.name,"name"),component:typeof r=="string"?r:"",x:Se(e.x,n,"x",0,t),y:Se(e.y,n,"y",0,t),...Pe(e.w,n,"w",t),...Pe(e.h,n,"h",t),...o===void 0?{}:{overrides:o},...yn(e),children:[]}}function tb(e,t,n){if(e===void 0)return;let r=Be(e);if(!r){n.push({severity:"error",code:"invalid-value",message:"`overrides` must be an object of inner id to properties",nodeId:t,prop:"overrides"});return}let o={};for(let[s,i]of Object.entries(r)){let d=Be(i);if(!d)continue;let l={};for(let[f,p]of Object.entries(d)){let m=nb(f,p,t,n);m!==void 0&&(l[f]=m)}Object.keys(l).length>0&&(o[s]=l)}return Object.keys(o).length===0?void 0:o}function nb(e,t,n,r){let o=()=>{r.push({severity:"error",code:"invalid-value",message:`${n} overrides ${e} with ${JSON.stringify(t)}, which it cannot hold`,nodeId:n,prop:e})};if(!fn(e))return o();if(e==="content")return typeof t=="string"||Array.isArray(t)&&t.every(l=>typeof l=="string"||typeof l=="object"&&l!==null&&typeof l.text=="string")?Wp(t,n,r):o();let s=Gs(e);if(s===void 0)return o();if(s==="numberValue")return Xp(t)??o();if(s==="stringValue")return typeof t!="string"?o():t.startsWith("=")?wt(t.slice(1)):t;if(s==="boolean")return typeof t=="boolean"?t:o();if(s==="number")return typeof t=="number"&&Number.isFinite(t)?t:o();if(typeof t!="string")return o();let i=je(JSON.stringify(t),s);return"error"in i?o():i.value}function Wd(e,t,n){let r=[];if(Array.isArray(e))for(let o of e){let s=Jv(o,n);s&&r.push(s)}else e!==void 0&&n.push({severity:"error",code:"invalid-children",message:"`children` must be an array",nodeId:t});return r}function rb(e,t){let n=Wt(e,"image",t),r=e.fit,o=yt(e.src,n,"src",t);return{type:"image",id:n,...ut(e.name,"name"),x:Se(e.x,n,"x",0,t),y:Se(e.y,n,"y",0,t),w:Se(e.w,n,"w",100,t),h:Se(e.h,n,"h",100,t),...Pe(e.rotation,n,"rotation",t),src:o.src??"",...un.includes(r)?{fit:r}:{},...Pe(e.radius,n,"radius",t),...Pe(e.opacity,n,"opacity",t),...Sr(e,n,t),...yn(e)}}function ob(e,t){let n=Wt(e,"rect",t);return{type:"rect",id:n,...ut(e.name,"name"),x:Se(e.x,n,"x",0,t),y:Se(e.y,n,"y",0,t),w:Se(e.w,n,"w",100,t),h:Se(e.h,n,"h",100,t),...Pe(e.rotation,n,"rotation",t),...yt(e.fill,n,"fill",t),...yt(e.stroke,n,"stroke",t),...Pe(e.strokeWidth,n,"strokeWidth",t),...Pe(e.radius,n,"radius",t),...Pe(e.opacity,n,"opacity",t),...Sr(e,n,t),...yn(e)}}function sb(e,t){let n=Wt(e,"ellipse",t);return{type:"ellipse",id:n,...ut(e.name,"name"),x:Se(e.x,n,"x",0,t),y:Se(e.y,n,"y",0,t),w:Se(e.w,n,"w",100,t),h:Se(e.h,n,"h",100,t),...Pe(e.rotation,n,"rotation",t),...yt(e.fill,n,"fill",t),...yt(e.stroke,n,"stroke",t),...Pe(e.strokeWidth,n,"strokeWidth",t),...Pe(e.opacity,n,"opacity",t),...Sr(e,n,t),...yn(e)}}function ib(e,t){let n=Wt(e,"vector",t);return{type:"vector",id:n,...ut(e.name,"name"),x:Se(e.x,n,"x",0,t),y:Se(e.y,n,"y",0,t),w:Se(e.w,n,"w",100,t),h:Se(e.h,n,"h",100,t),...Pe(e.rotation,n,"rotation",t),...ut(e.view,"view"),d:typeof e.d=="string"?e.d:"",...yt(e.fill,n,"fill",t),...yt(e.stroke,n,"stroke",t),...Pe(e.strokeWidth,n,"strokeWidth",t),...Pe(e.opacity,n,"opacity",t),..._r(e.rule,Tn,n,"rule",t),..._r(e.cap,Ln,n,"cap",t),..._r(e.join,Dn,n,"join",t),...Sr(e,n,t),...yn(e)}}function ab(e,t){let n=Wt(e,"text",t);return{type:"text",id:n,...ut(e.name,"name"),x:Se(e.x,n,"x",0,t),y:Se(e.y,n,"y",0,t),w:Se(e.w,n,"w",200,t),h:Se(e.h,n,"h",40,t),...Pe(e.rotation,n,"rotation",t),content:Wp(e.content,n,t),...yt(e.font,n,"font",t),...Pe(e.size,n,"size",t),...Pe(e.weight,n,"weight",t),...Pe(e.lineHeight,n,"lineHeight",t),...Pe(e.letterSpacing,n,"letterSpacing",t),..._r(e.align,dn,n,"align",t),..._r(e.valign,ln,n,"valign",t),...Ys(e.italic,"italic"),...yt(e.fill,n,"fill",t),...Pe(e.opacity,n,"opacity",t),...Sr(e,n,t),...yn(e)}}function Wp(e,t,n){if(e===void 0)return"";if(typeof e=="string")return e;if(!Array.isArray(e))return n.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 r=[];for(let o of e){if(typeof o=="string"){r.push(o);continue}let s=Be(o);if(!s||typeof s.text!="string"){n.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}r.push({text:s.text,...qt(s,"font","string"),...qt(s,"size","number"),...qt(s,"weight","number"),...qt(s,"italic","boolean"),...qt(s,"underline","boolean"),...qt(s,"strike","boolean"),...qt(s,"fill","string"),...qt(s,"letterSpacing","number"),...qt(s,"link","string")})}return r}function qt(e,t,n){let r=e[t];return typeof r!==n?{}:n==="number"&&!Number.isFinite(r)?{}:{[t]:r}}function Sr(e,t,n){return{..._r(e.blend,On,t,"blend",n),...yt(e.shadow,t,"shadow",n)}}function yn(e){return{...e.hidden===!0?{hidden:!0}:{},...e.locked===!0?{locked:!0}:{}}}function Ys(e,t){return typeof e=="boolean"?{[t]:e}:{}}function _r(e,t,n,r,o){return e===void 0?{}:typeof e=="string"&&t.includes(e)?{[r]:e}:(o.push({severity:"error",code:"invalid-value",message:`Expected one of ${t.join(", ")} for ${r}, got ${JSON.stringify(e)}`,nodeId:n,prop:r}),{})}function Wt(e,t,n){let r=e.id;return typeof r=="string"&&r.length>0?r:(n.push({severity:"error",code:"missing-id",message:`Node is missing an id; using "${t}"`}),t)}function Se(e,t,n,r,o){let s=Xp(e);return s!==void 0?s:(o.push({severity:"error",code:"invalid-value",message:`Expected a number or expression for ${n}, got ${JSON.stringify(e)}`,nodeId:t,prop:n}),r)}function Xp(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e.startsWith("="))return wt(e.slice(1))}function Pe(e,t,n,r){return e===void 0?{}:{[n]:Se(e,t,n,0,r)}}function yt(e,t,n,r){return e===void 0?{}:typeof e=="string"?{[n]:e.startsWith("=")?wt(e.slice(1)):e}:(r.push({severity:"error",code:"invalid-value",message:`Expected a string for ${n}, got ${JSON.stringify(e)}`,nodeId:t,prop:n}),{})}function ut(e,t){return typeof e=="string"?{[t]:e}:{}}function db(e,t){let n=new Set,r=o=>{n.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}),n.add(o.id),le(o)&&o.children.forEach(r)};r(e)}function Be(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}var Yp=1500,Xd=5e3,Jp=1200,Zp=800,Qp=600,em=800,tm={letter:30,word:80,children:100},Oo=.04,To=.85,Yd=1.06,Js=[.2,0,0,1],Zs=[.4,0,1,1],Qs=[.4,0,.2,1],nm=[.34,1.56,.64,1],lb={out:Js,in:Zs,inout:Qs,linear:null,spring:nm};function Jd(e,t){let n=e.motion?.[t],r=n?.w!==void 0||n?.h!==void 0?ub(e,t,n):void 0,o=_t(n),s=o?{tempo:o}:{},i=id(n,e.assets);if(!n||!Ut(e).has(t))return{page:t,length:Je(n?.length,o,Xd),beats:[],camera:!1,steps:[],...r?{size:r}:{},...s,clips:i};let d=gt(e),l=[],f=[],p,m=new Map;for(let[C,_]of n.lines.entries()){if(d.get(_.id)!==t||_.camera!==!0&&_.enter===void 0&&_.exit===void 0&&_.emphasis===void 0)continue;let g=F(e.root,_.id);if(!g)continue;let P=X=>X===void 0?void 0:m.get(X),A;_.at!==void 0?A=Je(_.at,o,0):_.with!==void 0&&P(_.with)?A=P(_.with).start:_.after!==void 0&&P(_.after)?A=P(_.after).end:_.together===!0?A=p?.start??0:A=p?.end??0,A+=Je(_.delay,o,0);let R;if(_.on!==void 0&&o){let X=td(A,_.on,o);X!==A&&(R=A),A=X}_.step===!0&&f.push(A);let $=_.camera===!0?"camera":_.enter!==void 0?"enter":_.exit!==void 0?"exit":"emphasis",D=_.enter??_.exit??_.emphasis,T=fb(_,D,o),V=$==="camera"||$==="emphasis"?void 0:cb(_,g),O=V===void 0?1:Math.max(1,rm(g,V)),j=O>1&&V!==void 0?Je(_.stagger,o,tm[V]):0,M=A+(O-1)*j+T,G=_.ease??($==="enter"?"out":$==="exit"?"in":"inout");l.push({index:C,line:_,kind:$,...R===void 0?{}:{asked:R},...D===void 0?{}:{effect:D},start:A,end:M,duration:T,ease:G,pieces:O,stagger:j,...V===void 0||O===1?{}:{split:V}});let z=M;if($==="enter"&&_.hold!==void 0&&_.enter!=="count"){let X=M+Je(_.hold,o,0);z=X+T,l.push({index:C,line:_,kind:"exit",...D===void 0?{}:{effect:D},start:X,end:z,duration:T,ease:"in",pieces:1,stagger:0})}p={start:A,end:z},_.camera!==!0&&m.set(_.id,p)}let y=Math.max(0,...l.map(C=>C.end)),v=Je(n.length,o,l.length===0?Xd:y+Yp);return{page:t,length:v,beats:l,camera:l.some(C=>C.kind==="camera"),steps:f,...r?{size:r}:{},...s,clips:i}}function ub(e,t,n){let r=n.w,o=n.h;if(r!==void 0&&o!==void 0)return{w:r,h:o};let s=F(e.root,t),i=s&&"w"in s&&typeof s.w=="number"?s.w:void 0,d=s&&"h"in s&&typeof s.h=="number"?s.h:void 0;if(r!==void 0)return{w:r,h:i&&d?Math.round(r*d/i):r};if(o!==void 0)return{w:i&&d?Math.round(o*i/d):o,h:o}}function fb(e,t,n){return t==="cut"?0:e.duration!==void 0?Je(e.duration,n,yo):e.camera===!0?em:e.emphasis!==void 0?Qp:t==="count"?Jp:t==="draw"?Zp:yo}function cb(e,t){if(e.by!==void 0){if(t.type!=="text")return;let n=t.rotation;return n!==void 0&&n!==0?void 0:e.by}if(e.stagger!==void 0&&te(t).length>0)return"children"}function rm(e,t){return t==="children"?te(e).length:e.type!=="text"?1:t==="word"?Zd(gn(e.content)).length:om(gn(e.content)).length}function Zd(e){return e.split(/\s+/).filter(t=>t!=="")}function om(e){return[...new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(e)].map(n=>n.segment).filter(n=>n.trim()!=="")}function ei(e,t){if(t<=0)return 0;if(t>=1)return 1;let n=lb[e];return n===null?t:pb(n,t)}function pb(e,t){let[n,r,o,s]=e,i=(p,m,y)=>3*p*y*(1-y)**2+3*m*y*y*(1-y)+y**3,d=0,l=1,f=t;for(let p=0;p<40;p++){f=(d+l)/2;let m=i(n,o,f);if(Math.abs(m-t)<1e-7)break;m<t?d=f:l=f}return i(r,s,f)}function Qd(e){let t=/-?\d{1,3}(?:,\d{3})+(?:\.\d+)?|-?\d+(?:\.\d+)?/.exec(e);if(!t)return;let n=t[0],r=n.includes(",")?",":"",o=n.replaceAll(",",""),s=o.includes(".")?o.split(".")[1].length:0;return{before:e.slice(0,t.index),value:Number(o),decimals:s,grouping:r,after:e.slice(t.index+n.length)}}function el(e,t){let n=Math.abs(t).toFixed(e.decimals),[r,o]=n.split("."),s=e.grouping===""?r:r.replace(/\B(?=(\d{3})+(?!\d))/g,e.grouping),i=t<0&&Number(n)!==0?"-":"";return`${e.before}${i}${s}${o===void 0?"":`.${o}`}${e.after}`}var sm=1200,im=3.5;function am(e){return Math.max(sm,Math.round(Zd(e).length/im*1e3))}function tl(e){let t=[];for(let n of Object.keys(e.motion??{})){let r=e.motion?.[n];if(!Bn(r)||!Ut(e).has(n))continue;let o=Jd(e,n);t.push(...mb(e,n,o));for(let i of o.beats)i.start>o.length&&t.push({severity:"warning",code:"motion-after-length",message:`motion ${n}: ${i.line.camera===!0?"camera ":""}${i.line.id} starts at ${co(i.start)}, after the video ends at ${co(o.length)}`,nodeId:i.line.id});let s=new Map;for(let i of o.beats)if(i.kind==="enter"&&!s.has(i.line.id))s.set(i.line.id,{from:i.start,to:o.length});else if(i.kind==="exit"){let d=s.get(i.line.id);s.set(i.line.id,{from:d?.from??0,to:i.start})}for(let[i,{from:d,to:l}]of s){let f=F(e.root,i);if(f?.type!=="text")continue;let p=gn(f.content),m=am(p);l-d<m&&t.push({severity:"warning",code:"video-text-brief",message:`motion ${n}: ${i} is on screen for ${co(l-d)}; "${hb(p)}" takes about ${m} ms to read`,nodeId:i})}}return t}function mb(e,t,n){let r=e.motion?.[t]?.music,o=n.clips[0];if(!r||!o)return[];let s=(y,v)=>({severity:"warning",code:y,message:`motion ${t}: ${v}`,nodeId:t}),i=y=>`${(y/1e3).toFixed(2)} s`,d=e.assets[r.asset];if(!d)return[s("music-missing",`${r.asset} has no file yet, so the video is silent. Add it with vd_add_asset (a URL), or the person drops a track on the canvas`)];if(!d.type.startsWith("audio/"))return[s("music-not-audio",`music ${r.asset} is ${d.type}, not a sound`)];let l=[],f=o.from;d.ms!==void 0&&f>=d.ms?l.push(s("music-from-past-end",`from=${f} is past the end of ${r.asset}, which is ${i(d.ms)} long`)):d.ms!==void 0&&!o.loop&&d.ms-f<n.length-nd&&l.push(s("music-short",`${r.asset} runs out at ${i(d.ms-f)} and the video at ${i(n.length)}: add loop, or set length=`));let p=d.ms!==void 0&&d.ms>0?d.bytes*8/d.ms:void 0,m=2*(n.length+f)*rd/1e3;return p!==void 0&&p>od?l.push(s("audio-heavy",`${r.asset} is ${Math.round(p)} kbps: re-encode it as a 128 kbps MP3 or M4A, about 1 MB a minute`)):d.bytes>m&&l.push(s("audio-heavy",`${r.asset} is ${(d.bytes/1e6).toFixed(1)} MB for ${i(n.length)} of video: trim it to the part the video uses, as a 128 kbps MP3 or M4A`)),l}function hb(e){return e.length>40?`${e.slice(0,37)}\u2026`:e}function ti(e){return/^\s*(linear|radial|conic|repeating-[a-z]+)-gradient\s*\(/i.test(e)}function Lo(e){let t=e.trim(),n=/^([a-z-]+)-gradient\s*\(([\s\S]*)\)$/i.exec(t);if(!n)return ti(t)?{error:'A gradient needs its closing ")"'}:{kind:"solid",colour:t};let r=n[1].toLowerCase(),o=xb(n[2]).map(s=>s.trim());if(o.some(s=>s===""))return{error:"A gradient has an empty argument"};if(r==="linear"){let s=yb(o[0]),i=lm(s===void 0?o:o.slice(1));return"error"in i?i:{kind:"linear",angle:s??180,stops:i.stops}}if(r==="radial"){let s=bb(o[0]);if(s&&"error"in s)return s;let i=lm(s?o.slice(1):o);return"error"in i?i:{kind:"radial",shape:s?.shape??"ellipse",cx:s?.cx??.5,cy:s?.cy??.5,stops:i.stops}}return{error:`${r}-gradient is not supported; use linear-gradient or radial-gradient`}}function nl(e){let t=e.map(r=>r.at);t[0]===void 0&&(t[0]=0),t[t.length-1]===void 0&&(t[t.length-1]=1);let n=0;for(let r=0;r<t.length;r+=1){let o=t[r];o!==void 0&&(n=Math.max(n,o),t[r]=n)}for(let r=1;r<t.length;r+=1){if(t[r]!==void 0)continue;let o=r-1,s=r;for(;t[s]===void 0;)s+=1;let i=t[o],d=t[s];for(let l=r;l<s;l+=1)t[l]=i+(d-i)*(l-o)/(s-o);r=s}return e.map((r,o)=>({colour:r.colour,at:t[o]}))}function xb(e){let t=[],n=0,r=0;for(let o=0;o<e.length;o+=1){let s=e[o];s==="("?n+=1:s===")"?n=Math.max(0,n-1):s===","&&n===0&&(t.push(e.slice(r,o)),r=o+1)}return t.push(e.slice(r)),t}var gb={top:[0,-1],bottom:[0,1],left:[-1,0],right:[1,0]};function yb(e){let t=/^(-?\d*\.?\d+)(deg|turn|rad)$/i.exec(e);if(t){let s=Number(t[1]),i=t[2].toLowerCase();return i==="turn"?s*360:i==="rad"?s*180/Math.PI:s}let n=/^to\s+([a-z]+)(?:\s+([a-z]+))?$/i.exec(e);if(!n)return;let r=0,o=0;for(let s of[n[1],n[2]]){if(s===void 0)continue;let i=gb[s.toLowerCase()];if(!i)return;r+=i[0],o+=i[1]}return(Math.atan2(r,-o)*180/Math.PI+360)%360}var vb={left:0,top:0,center:.5,right:1,bottom:1};function bb(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 n=t[1]?.toLowerCase();if(t[2]===void 0)return n?{shape:n}:void 0;let r=dm(t[2]),o=t[3]===void 0?.5:dm(t[3]);return r===void 0||o===void 0?{error:`A radial centre is two percentages or keywords, not "${e}"`}:{...n?{shape:n}:{},cx:r,cy:o}}function dm(e){let t=vb[e.toLowerCase()];if(t!==void 0)return t;let n=/^(-?\d*\.?\d+)%$/.exec(e);return n?Number(n[1])/100:void 0}function lm(e){if(e.length<2)return{error:"A gradient needs at least two colours"};let t=[];for(let n of e){let r=/^([\s\S]*?\S)\s+(-?\d*\.?\d+)%$/.exec(n);if(r&&wb(r[1]))t.push({colour:r[1],at:Number(r[2])/100});else{if(/\s/.test(n.replace(/\([^)]*\)/g,"")))return{error:`"${n}" is not a colour with an optional percentage`};t.push({colour:n})}}return{stops:t}}function wb(e){let t=0;for(let n of e)if(n==="("&&(t+=1),n===")"&&(t-=1),t<0)return!1;return t===0}function ni(e){let t=Lo(e);return"error"in t?[]:t.kind==="solid"?[t.colour]:t.stops.map(n=>n.colour)}function Er(e){let t=e.trim();if(t===""||t==="none")return{shadows:[]};let n=[];for(let r of kb(t)){let o=_b(r.trim());if(o.includes("inset"))return{error:"Inner shadows (inset) are not supported yet"};let s=[],i=[];for(let m of o){let y=/^(-?\d*\.?\d+)(px)?$/.exec(m);y&&i.length===0?s.push(Number(y[1])):i.push(m)}if(s.length<2||s.length>4)return{error:`"${r.trim()}" needs x, y, then optional blur and spread`};if(i.length!==1)return{error:`"${r.trim()}" needs one colour after its numbers`};let[d=0,l=0,f=0,p=0]=s;if(f<0)return{error:"A shadow cannot have a negative blur"};n.push({x:d,y:l,blur:f,spread:p,colour:i[0]})}return{shadows:n}}function kb(e){let t=[],n=0,r=0;for(let o=0;o<e.length;o+=1){let s=e[o];s==="("?n+=1:s===")"?n=Math.max(0,n-1):s===","&&n===0&&(t.push(e.slice(r,o)),r=o+1)}return t.push(e.slice(r)),t}function _b(e){let t=[],n=0,r="";for(let o of e){if(o==="("&&(n+=1),o===")"&&(n=Math.max(0,n-1)),/\s/.test(o)&&n===0){r!==""&&t.push(r),r="";continue}r+=o}return r!==""&&t.push(r),t}var rl=["rect","ellipse","vector","image","text"];function ft(e){return{x:e.x+e.w/2,y:e.y+e.h/2}}function it(e,t,n){if(n===0)return e;let r=n*Math.PI/180,o=Math.cos(r),s=Math.sin(r),i=e.x-t.x,d=e.y-t.y;return{x:t.x+i*o-d*s,y:t.y+i*s+d*o}}function Do(e,t,n=ft(e)){if(t%360===0)return e;let r=[{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=>it(l,n,t)),o=r.map(l=>l.x),s=r.map(l=>l.y),i=Math.min(...o),d=Math.min(...s);return{x:i,y:d,w:Math.max(...o)-i,h:Math.max(...s)-d}}function Po(e){let t=(e%360+360)%360,n=Math.round(t*100)/100;return n===360?0:n}var ol=["x","y","w","h","left","right","top","bottom","cx","cy"];function No(e){return ol.includes(e)}var sl=["parent","prev","next","self","root"];function il(e){return sl.includes(e)}var Ze=class extends Error{position;constructor(t,n){super(t),this.position=n,this.name="ExprSyntaxError"}},fm=/[A-Za-z_]/,al=/[A-Za-z0-9_]/;function dl(e){let t=[],n=0,r=()=>{if(!fm.test(e[n]??""))throw new Ze(`Expected a name at position ${n}`,n);let i=n;for(;n<e.length&&al.test(e[n]??"");)n++;return e.slice(i,n)},o=()=>{if(!al.test(e[n]??""))throw new Ze(`Expected a name at position ${n}`,n);let i=n;for(;n<e.length&&al.test(e[n]??"");)n++;return e.slice(i,n)},s=()=>{let i=[r()];for(;e[n]===".";)n++,i.push(o());return i};for(;n<e.length;){let i=e[n]??"";if(/\s/.test(i)){n++;continue}if(/[0-9]/.test(i)){let d=n;for(;n<e.length&&/[0-9]/.test(e[n]??"");)n++;if(e[n]==="."&&/[0-9]/.test(e[n+1]??""))for(n++;n<e.length&&/[0-9]/.test(e[n]??"");)n++;let l=e.slice(d,n),f=Number(l);if(!Number.isFinite(f))throw new Ze(`Bad number "${l}"`,d);e[n]==="%"?(n++,t.push({type:"percent",value:f})):t.push({type:"number",value:f});continue}if(i==="$"){n++,t.push({type:"token",name:r()});continue}if(i==="@"){n++,t.push({type:"ref",path:s()});continue}if(fm.test(i)){t.push({type:"word",path:s()});continue}if("+-*/()".includes(i)){n++,t.push({type:"op",value:i});continue}throw new Ze(`Unexpected character "${i}" at position ${n}`,n)}return t.push({type:"eof"}),t}var Ab={"+":1,"-":1,"*":2,"/":2};function ct(e){try{let t=dl(e),n=new ll(t),r=n.parseBinary(0);return n.expectEof(),{ok:!0,ast:r}}catch(t){if(t instanceof Ze)return{ok:!1,message:t.message};throw t}}var ll=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 Ze("Unexpected trailing input",this.index)}parseBinary(t){let n=this.parseUnary();for(;;){let r=this.peek();if(r.type!=="op"||!$b(r.value))break;let o=Ab[r.value];if(o<t)break;this.next();let s=this.parseBinary(o+1);n={kind:"binary",op:r.value,left:n,right:s}}return n}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 Ze(`@${t.path.join(".")} needs an edge, for example @${t.path.join(".")}.right`,this.index);return{kind:"nodeRef",path:t.path}}case"word":{let[n,r,...o]=t.path;if(n===void 0||!il(n))throw new Ze(`Unknown name "${t.path.join(".")}". Use $token for a token or @id.edge for a node.`,this.index);if(r===void 0||!No(r)||o.length>0)throw new Ze(`${n} needs an edge, for example ${n}.w`,this.index);return{kind:"relRef",word:n,edge:r}}case"op":{if(t.value==="("){let n=this.parseBinary(0),r=this.next();if(r.type!=="op"||r.value!==")")throw new Ze("Missing closing parenthesis",this.index);return n}throw new Ze(`Unexpected "${t.value}"`,this.index)}case"eof":throw new Ze("Unexpected end of expression",this.index)}}};function $b(e){return e==="+"||e==="-"||e==="*"||e==="/"}var cm={"+":1,"-":1,"*":2,"/":2},pm=3,Ob=4;function Tb(e){return e.kind==="binary"?cm[e.op]??1:e.kind==="unary"?pm:Ob}function Kn(e){return ri(e,0)}function ri(e,t){let n=Lb(e);return Tb(e)<t?`(${n})`:n}function Lb(e){switch(e.kind){case"number":return re(e.value);case"percent":return`${re(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}${ri(e.operand,pm)}`;case"binary":{let t=cm[e.op]??1;return`${ri(e.left,t)} ${e.op} ${ri(e.right,t+1)}`}}}function ul(e){return e.slice(0,-1).join(".")}function Nt(e,t){switch(e.kind){case"nodeRef":{let n=e.path[e.path.length-1],r=t(ul(e.path));return n===void 0||r===void 0?e:{kind:"nodeRef",path:[...r.split("."),n]}}case"unary":return{...e,operand:Nt(e.operand,t)};case"binary":return{...e,left:Nt(e.left,t),right:Nt(e.right,t)};default:return e}}function Xt(e){let t=new Set,n=new Set,r=o=>{switch(o.kind){case"nodeRef":t.add(ul(o.path));return;case"token":n.add(o.name);return;case"unary":r(o.operand);return;case"binary":r(o.left),r(o.right);return;default:return}};return r(e),{nodes:[...t],tokens:[...n]}}function tt(e,t){return`${e} ${t}`}function fl(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 oi(e,t,n,r,o){switch(e){case"x":case"left":return t;case"y":case"top":return n;case"w":return r;case"h":return o;case"right":return t+r;case"bottom":return n+o;case"cx":return t+r/2;case"cy":return n+o/2}}function cl(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 pl(e,t,n){let r=m=>{let y=[];for(let v=n.parentOf.get(m);v!==void 0;v=n.parentOf.get(v))y.push(v);return y},o=r(e),s=r(t),i=new Set(s),d=o.find(m=>i.has(m)),l=m=>d===void 0?m:m.slice(0,m.indexOf(d)),f=new Map([[e,1]]),p=(m,y)=>{let v=(f.get(m)??0)+y;v===0?f.delete(m):f.set(m,v)};for(let m of l(o))p(m,1);for(let m of l(s))p(m,-1);return f}function ml(e){switch(e){case"right":case"bottom":return 1;case"cx":case"cy":return .5;default:return 0}}function si(e){if(e==="x"||e==="w")return"w";if(e==="y"||e==="h")return"h"}function Io(e){let t=new Map,n=new Map,r=new Map,o=new Map,s=new Map,i=[];ne(e.root,(m,y)=>{if(t.has(m.id)||t.set(m.id,m),i.push(m),y){n.set(m.id,y.id);let v=s.get(y.id)??[],C=y.type==="instance"?[y.id,...v]:v;C.length>0&&s.set(m.id,C)}le(m)&&m.children.forEach((v,C)=>{let _=m.children[C-1],g=m.children[C+1];_&&r.set(v.id,_.id),g&&o.set(v.id,g.id)})});let d=new Map;for(let m of i){let y=n.get(m.id);for(;y!==void 0;){let v=t.get(y);if(!v||!$e(v))break;y=n.get(y)}y!==void 0&&d.set(m.id,y)}let l=new Map,f=new Map,p=m=>{if(le(m)){if(!$e(m)){let y=mm(m);y.forEach((v,C)=>{let _=y[C-1],g=y[C+1];_&&l.set(v.id,_.id),g&&f.set(v.id,g.id)})}for(let y of m.children)p(y)}};return p(e.root),{rootId:e.root.id,byId:t,parentOf:n,prevOf:r,nextOf:o,layoutParentOf:d,layoutPrevOf:l,layoutNextOf:f,scopeOf:s,order:i}}function mm(e){let t=[];for(let n of e.children)le(n)&&$e(n)?t.push(...mm(n)):t.push(n);return t}function ii(e,t,n){if(e.kind==="relRef"){let s=Db(e.word,t,n);return s===void 0?{ok:!1,message:`${t} has no ${e.word}`}:{ok:!0,nodeId:s,edge:e.edge}}let r=e.path[e.path.length-1]??"",o=e.path.slice(0,-1).join(".");if(!No(r))return{ok:!1,message:`"${r}" is not an edge of @${o}`};for(let s of n.scopeOf.get(t)??[]){let i=`${s}.${o}`;if(n.byId.has(i))return{ok:!0,nodeId:i,edge:r};let d=n.byId.get(s);if(d?.type==="instance"&&d.component===o)return{ok:!0,nodeId:s,edge:r}}return n.byId.has(o)?{ok:!0,nodeId:o,edge:r}:{ok:!1,message:`No node @${o}`}}function Db(e,t,n){switch(e){case"self":return t;case"root":return n.rootId;case"parent":return n.layoutParentOf.get(t);case"prev":return n.layoutPrevOf.get(t);case"next":return n.layoutNextOf.get(t)}}function Ie(e){let t=[...oo(e.root)],n=Io(e),r=hm(n),o=new Set;xm(r,t),gm(r,e,n,o,t);let s=Nb(r);Ib(r,s,t);let i=Rb(r,s,e,n,o,t);return{nodes:Bb(e.root,i,r,t),problems:t}}function Cr(e){let t=Io(e),n=hm(t),r=[];xm(n,r),gm(n,e,t,new Set,r);let o=new Map;for(let s of n.values())for(let i of s.deps){let d=o.get(i),l={nodeId:s.nodeId,prop:s.prop};d?d.push(l):o.set(i,[l])}return o}function hm(e){let t=new Map;for(let n of e.order){let r=n;for(let o of Ct(n)){let s=r[o]??Pb(n,o,e);s!==void 0&&t.set(tt(n.id,o),{nodeId:n.id,prop:o,value:s,deps:[]})}}return t}function Pb(e,t,n){if(!(e.type!=="instance"||t!=="w"&&t!=="h")&&n.byId.get(e.component)?.type==="frame")return wt(`@${e.component}.${t}`)}function xm(e,t){for(let n of e.values()){if(!ye(n.value))continue;let r=ct(n.value.expr);if(r.ok){n.ast=r.ast;continue}t.push({severity:"error",code:"expression-syntax",message:r.message,nodeId:n.nodeId,prop:n.prop})}}function gm(e,t,n,r,o){for(let s of e.values()){if(!s.ast)continue;let i=new Set,d=l=>{switch(l.kind){case"number":return;case"token":{let f=ot(t)[l.name];typeof f!="number"&&o.push({severity:"error",code:f===void 0?"unknown-token":"token-not-a-number",message:f===void 0?`Unknown token $${l.name}`:`Token $${l.name} is not a number`,nodeId:s.nodeId,prop:s.prop});return}case"percent":{let f=si(s.prop);if(!f)return;let p=n.layoutParentOf.get(s.nodeId),m=p===void 0?void 0:tt(p,f);if(m===void 0||!e.has(m)){o.push({severity:"error",code:"percent-without-parent",message:`${s.nodeId}.${s.prop} uses a percentage but has no parent to measure against`,nodeId:s.nodeId,prop:s.prop});return}i.add(m);return}case"nodeRef":case"relRef":{let f=ii(l,s.nodeId,n);if(!f.ok){r.add(l),o.push({severity:"error",code:"unknown-reference",message:f.message,nodeId:s.nodeId,prop:s.prop});return}let p=y=>{e.has(y)&&i.add(y)},m=cl(f.edge);if(!m){for(let y of fl(f.edge))p(tt(f.nodeId,y));return}for(let y of pl(f.nodeId,s.nodeId,n).keys())p(tt(y,m));ml(f.edge)!==0&&p(tt(f.nodeId,m==="x"?"w":"h"));return}case"unary":d(l.operand);return;case"binary":d(l.left),d(l.right);return}};d(s.ast),s.deps=[...i]}}function Nb(e){let t=new Map,n=new Map;for(let[s,i]of e){t.set(s,i.deps.length);for(let d of i.deps){let l=n.get(d);l?l.push(s):n.set(d,[s])}}let r=[];for(let[s,i]of t)i===0&&r.push(s);let o=[];for(let s=0;s<r.length;s++){let i=r[s];o.push(i);for(let d of n.get(i)??[]){let l=(t.get(d)??0)-1;t.set(d,l),l===0&&r.push(d)}}return o}function Ib(e,t,n){if(t.length===e.size)return;let r=new Set(t);for(let[o,s]of e)r.has(o)||n.push({severity:"error",code:"cycle",message:`${s.nodeId}.${s.prop} is part of a dependency cycle`,nodeId:s.nodeId,prop:s.prop})}function Rb(e,t,n,r,o,s){let i=new Map,d=(l,f)=>i.get(tt(l,f))??0;for(let l of t){let f=e.get(l);if(f){if(!ye(f.value)){i.set(l,f.value);continue}if(!f.ast){i.set(l,0);continue}i.set(l,ym(f.ast,f,n,r,o,s,d))}}return i}function ym(e,t,n,r,o,s,i){let d=l=>ym(l,t,n,r,o,s,i);switch(e.kind){case"number":return e.value;case"token":{let l=ot(n)[e.name];return typeof l=="number"?l:0}case"percent":{let l=si(t.prop);if(!l)return e.value/100;let f=r.layoutParentOf.get(t.nodeId);return f===void 0?0:e.value/100*i(f,l)}case"nodeRef":case"relRef":{if(o.has(e))return 0;let l=ii(e,t.nodeId,r);if(!l.ok)return 0;let f=cl(l.edge);if(!f)return oi(l.edge,i(l.nodeId,"x"),i(l.nodeId,"y"),i(l.nodeId,"w"),i(l.nodeId,"h"));let p=ml(l.edge)*i(l.nodeId,f==="x"?"w":"h");for(let[m,y]of pl(l.nodeId,t.nodeId,r))p+=y*i(m,f);return p}case"unary":{let l=d(e.operand);return e.op==="-"?-l:l}case"binary":{let l=d(e.left),f=d(e.right);if(e.op==="/"&&f===0)return s.push({severity:"error",code:"divide-by-zero",message:`${t.nodeId}.${t.prop} divides by zero`,nodeId:t.nodeId,prop:t.prop}),0;let p=Fb(e.op,l,f);return Number.isFinite(p)?p:(s.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 Fb(e,t,n){switch(e){case"+":return t+n;case"-":return t-n;case"*":return t*n;case"/":return t/n}}function Bb(e,t,n,r){let o=new Map,s=(d,l)=>t.get(tt(d,l))??0,i=(d,l,f)=>{let p=s(d.id,"x"),m=s(d.id,"y"),y=s(d.id,"w"),v=s(d.id,"h"),C={};for(let P of Ct(d)){let A=tt(d.id,P);n.has(A)&&(C[P]=t.get(A)??0)}(y<0||v<0)&&r.push({severity:"warning",code:"negative-size",message:`${d.id} resolved to a negative size`,nodeId:d.id});let _=l+p,g=f+m;if(o.set(d.id,{id:d.id,type:d.type,x:p,y:m,w:y,h:v,left:p,top:m,right:p+y,bottom:m+v,cx:p+y/2,cy:m+v/2,absX:_,absY:g,values:C}),le(d))for(let P of d.children)i(P,_,g)};return i(e,0,0),o}function ai(e){if(!ye(e))return{kind:"literal",value:e};let t=ct(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 bm="system-ui, -apple-system, Segoe UI, Roboto, sans-serif",wm=16,km=400,_m=1.2,di="#0F172A";function Yt(){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 hl(e,t){if(e===void 0)return bm;let n=t[e];return n?n.fallback?`${vm(n.family)}, ${n.fallback}`:vm(n.family):e}function vm(e){return/^[A-Za-z][A-Za-z0-9 -]*$/.test(e)?e:JSON.stringify(e)}function xl(e,t,n,r){let o={family:hl(t.font,n),size:t.size,weight:t.weight,italic:t.italic,underline:!1,strike:!1,fill:r(t.fill),letterSpacing:t.letterSpacing},s=typeof e=="string"?[e]:e,i=[];for(let d of s){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:hl(l.font,n),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:r(l.fill),letterSpacing:l.letterSpacing??o.letterSpacing,...l.link!==void 0&&kt(l.link)?{link:l.link}:{}}})}return i}function Hb(e,t){let n=[];for(let r of e)for(let o of r.text.split(/(\n)/))if(o!==""){if(o===`
44
- `){let s=n[n.length-1];s&&!s.hardBreak?n[n.length-1]={...s,hardBreak:!0}:n.push({text:"",style:r.style,w:0,hardBreak:!0});continue}for(let s of o.match(/\S+\s*|\s+/g)??[])n.push({text:s,style:r.style,w:t.advance(s,r.style),hardBreak:!1})}return n}function Vb(e,t,n){let r=[...e.text],o=[],s="";for(let i of r){let d=s+i;if(s!==""&&n.advance(d,e.style)>t){o.push({text:s,style:e.style,w:n.advance(s,e.style),hardBreak:!1}),s=i;continue}s=d}return s!==""&&o.push({text:s,style:e.style,w:n.advance(s,e.style),hardBreak:e.hardBreak}),o.length>0?o:[e]}function Sm(e,t){let{width:n,measure:r}=t,o=Hb(r.itemize?e.flatMap(f=>r.itemize?.(f)??[f]):e,r);if(o.length===0){let f=e[0]?.style,p=f?t.lineHeight*f.size:0;return{lines:f?[Ub(f,t.lineHeight)]:[],width:0,height:p}}let s=[],i=[],d=0,l=()=>{s.push(i),i=[],d=0};for(let f of o){let p=i.length===0&&f.w>n&&n>0?Vb(f,n,r):[f];for(let m of p){let y=m.text.trimEnd(),v=y===m.text?m.w:r.advance(y,m.style);i.length>0&&d+v>n&&l(),i.push(m),d+=m.w,m.hardBreak&&l()}}return i.length>0&&s.push(i),zb(s,t)}function Ub(e,t){let n=t*e.size;return{y:0,h:n,baseline:n*.8,w:0,spans:[],style:e}}function zb(e,t){let n=[],r=0,o=0;return e.forEach((s,i)=>{let d=s.map(V=>V.style.size),l=Math.max(...d,0),f=t.lineHeight*l,p=s.map(V=>t.measure.metrics(V.style)),m=Math.max(...p.map(V=>V.ascent),0),y=Math.max(...p.map(V=>V.descent),0),v=r+(f-(m+y))/2+m,C=jb(s,t.measure),_=C.reduce((V,O)=>V+O.w,0);o=Math.max(o,_);let g=i===e.length-1||(s[s.length-1]?.hardBreak??!1),P=t.align==="justify"&&!g&&C.length>1,A=Math.max(0,t.width-_),R=t.align==="center"?A/2:t.align==="right"?A:0,$=P?A/(C.length-1):0,D=[],T=R;C.forEach((V,O)=>{D.push({text:V.text,style:V.style,x:T,w:V.w}),T+=V.w+(O<C.length-1?$:0)}),n.push({y:r,h:f,baseline:v,w:_,spans:Kb(D,P)}),r+=f}),{lines:n,width:o,height:r}}function jb(e,t){let n=[...e];for(;n.length>0;){let r=n[n.length-1],o=r.text.trimEnd();if(o===r.text)break;if(o===""){n.pop();continue}n[n.length-1]={...r,text:o,w:t.advance(o,r.style)};break}return n}function Kb(e,t){if(t)return[...e];let n=[];for(let r of e){let o=n[n.length-1];if(o&&Em(o.style,r.style)&&Math.abs(o.x+o.w-r.x)<.01){n[n.length-1]={...o,text:o.text+r.text,w:o.w+r.w};continue}n.push(r)}return n}function Em(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 gl(e,t,n,r,o,s){let i={size:t.size??wm,weight:t.weight??km,lineHeight:t.lineHeight??_m,letterSpacing:t.letterSpacing??0,italic:e.italic??!1,font:typeof e.font=="string"?e.font:void 0,fill:typeof e.fill=="string"?e.fill:di},d=xl(e.content,i,r,o),l=xl(" ",i,r,o).map(f=>({...f,text:""}));return Sm(d.length>0?d:l,{width:n,align:e.align??"left",lineHeight:i.lineHeight,measure:s})}function yl(e,t,n){let r=t-n;return e.valign==="middle"?r/2:e.valign==="bottom"?r:0}function vl(e){return e.lines.filter(t=>t.spans.length>0)}function Bo(e){switch(e.kind){case"text":{let t=vl(e),n=Math.max(e.w,...t.map(o=>o.w)),r=Math.max(e.y+e.h,...t.map(o=>o.y+o.h));return{x:e.x,y:e.y,w:n,h:r-e.y}}case"vector":{let t=Vn(e.contours)??{x:e.x,y:e.y,w:e.w,h:e.h},n=e.stroke!==void 0?e.strokeWidth*2:0;return{x:t.x-n,y:t.y-n,w:t.w+n*2,h:t.h+n*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 fi(e,t){let n=e.x,r=e.y,o=e.x+e.w,s=e.y+e.h;for(let i of t){let d=i.spread+i.blur;n=Math.min(n,e.x+i.x-d),r=Math.min(r,e.y+i.y-d),o=Math.max(o,e.x+e.w+i.x+d),s=Math.max(s,e.y+e.h+i.y+d)}return{x:n,y:r,w:o-n,h:s-r}}var Am="vd-paint-";var ui="#CBD5E1",$m="#FFFFFF";function Ho(e,t,n={}){let r=[...t.problems],o=[],s=[],i=n.measure??Yt(),d=Lm(ot(e),r),l=d.paint,f=new Map,p=Ye(e.root);ne(e.root,(g,P)=>{if("hidden"in g&&g.hidden===!0)return!1;let A=P?f.get(P.id):void 0,R=t.nodes.get(g.id);if(!R){f.set(g.id,A);return}let $=g.type==="frame"?g:g.type==="instance"?p.get(g.component):void 0;if(g.type==="instance"&&!$){f.set(g.id,A);return}if($){g.type==="frame"&&g.skip===!0&&P!==e.root&&r.push({severity:"warning",code:"skip-not-a-page",message:`${g.id}: skip only applies to a page, a frame at the top level`,nodeId:g.id,prop:"skip"});let T={x:R.absX,y:R.absY,w:Math.max(0,R.w),h:Math.max(0,R.h)};f.set(g.id,$.clip===!0?g.id:A),$.clip===!0&&s.push({id:g.id,...T,parent:A}),o.push({kind:"frame",id:g.id,...T,background:l($.background,g.id,"background",T),clip:A,blend:$.blend??"normal",shadows:Mr($.shadow,g.id,ot(e),r),rotation:0});return}if(f.set(g.id,A),g.type==="text"){o.push(Om(g,R,e,i,r,A,l));return}if(g.type==="image"){o.push({kind:"image",id:g.id,x:R.absX,y:R.absY,w:Math.max(0,R.w),h:Math.max(0,R.h),href:e0(g,e,n.resolveAsset,r),fit:g.fit??"fill",radius:Math.max(0,R.values.radius??0),opacity:Fo(R.values.opacity??1),clip:A,blend:g.blend??"normal",shadows:Mr(g.shadow,g.id,ot(e),r),rotation:R.values.rotation??0});return}if(g.type==="ellipse"){let T=Mm(R);o.push({kind:"ellipse",id:g.id,...T,fill:l(g.fill,g.id,"fill",T)??ui,stroke:l(g.stroke,g.id,"stroke",T),strokeWidth:R.values.strokeWidth??0,opacity:Fo(R.values.opacity??1),clip:A,blend:g.blend??"normal",shadows:Mr(g.shadow,g.id,ot(e),r),rotation:R.values.rotation??0});return}if(g.type==="vector"){o.push(Jb(g,R,r,A,l,Mr(g.shadow,g.id,ot(e),r)));return}if(g.type!=="rect")return;let D=Mm(R);o.push({kind:"rect",id:g.id,...D,fill:l(g.fill,g.id,"fill",D)??ui,stroke:l(g.stroke,g.id,"stroke",D),strokeWidth:R.values.strokeWidth??0,radius:Math.max(0,R.values.radius??0),opacity:Fo(R.values.opacity??1),clip:A,blend:g.blend??"normal",shadows:Mr(g.shadow,g.id,ot(e),r),rotation:R.values.rotation??0})});let m=t.nodes.get(e.root.id),y=e.root.w!==void 0&&e.root.h!==void 0,v=y?{x:0,y:0,width:Math.max(0,m?.w??0),height:Math.max(0,m?.h??0)}:Gb(o,s),C={x:v.x,y:v.y,w:v.width,h:v.height},_=l(e.root.background,e.root.id,"background",C);return{...v,background:y?_??$m:_,items:o,clips:s,gradients:d.gradients,problems:r}}function bl(e,t,n,r,o={}){let s=F(e.root,n.id),i=t.nodes.get(n.id);if(s?.type!=="text"||!i)return;let d=[],l=Lm(ot(e),d);return Om({...s,content:r},i,e,o.measure??Yt(),d,n.clip,l.paint)}function Gb(e,t){let n=new Map;for(let d of t){let l=d.parent===void 0?void 0:n.get(d.parent);n.set(d.id,l?Cm(d,l):d)}let r=1/0,o=1/0,s=-1/0,i=-1/0;for(let d of e){let l=d.kind==="text"&&vl(d).length>0?Math.max(d.h,d.height):d.h,f=d.clip===void 0?void 0:n.get(d.clip),p=Do(fi({x:d.x,y:d.y,w:d.w,h:l},d.shadows),d.rotation,ft(d)),m=f?Cm(p,f):p;m.w<=0||m.h<=0||(r=Math.min(r,m.x),o=Math.min(o,m.y),s=Math.max(s,m.x+m.w),i=Math.max(i,m.y+m.h))}return Number.isFinite(r)?{x:r,y:o,width:s-r,height:i-o}:{x:0,y:0,width:0,height:0}}function Cm(e,t){let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y);return{x:n,y:r,w:Math.min(e.x+e.w,t.x+t.w)-n,h:Math.min(e.y+e.h,t.y+t.h)-r}}function Om(e,t,n,r,o,s,i){let d=Math.max(0,t.w),l=Math.max(0,t.h),f={x:t.absX,y:t.absY,w:d,h:l},p=gl(e,t.values,d,n.fonts,v=>i(v,e.id,"fill",f)??di,r);!p.lines.every(v=>v.spans.length===0)&&p.height>l+.5&&o.push({severity:"warning",code:"text-overflow",message:`${e.id} needs ${Math.ceil(p.height)}px but its height is ${Math.round(l)}px`,nodeId:e.id,prop:"h"}),qb(e,n,o);let y=t.absY+yl(e,l,p.height);return{kind:"text",id:e.id,x:t.absX,y:t.absY,w:d,h:l,clip:s,blend:e.blend??"normal",shadows:Mr(e.shadow,e.id,ot(n),o),rotation:t.values.rotation??0,opacity:Fo(t.values.opacity??1),height:p.height,lines:p.lines.map(v=>({y:y+v.y,h:v.h,baseline:y+v.baseline,w:v.w,spans:v.spans.map(C=>({text:C.text,x:t.absX+C.x,y:y+v.baseline,w:C.w,style:C.style})),...v.style?{style:v.style}:{}}))}}function qb(e,t,n){if(typeof e.content!="string")for(let r of e.content){if(typeof r=="string"||r.link===void 0)continue;let o=kt(r.link);if(!o){n.push({severity:"warning",code:"invalid-link",message:`${e.id}: links go to https:, mailto: or #<frame>, not ${JSON.stringify(r.link)}`,nodeId:e.id,prop:"content"});continue}o.kind==="frame"&&!Wb(t,o.id)&&n.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 Wb(e,t){let n=!1;return ne(e.root,r=>{if(n)return!1;r.id===t&&r.type==="frame"&&(n=!0)}),n}var Ro=new Map,Xb=512;function Yb(e){let t=Ro.get(e);if(t)return t;let n=ko(e);return Ro.size>=Xb&&Ro.delete(Ro.keys().next().value),Ro.set(e,n),n}function Jb(e,t,n,r,o,s){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:f,error:p}=Yb(e.d);p!==void 0&&n.push({severity:"error",code:"bad-path",message:`${e.id}: ${p}`,nodeId:e.id,prop:"d"}),e.view!==void 0&&Fs(e.view)===void 0&&n.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 m=jt(f,So(_o(e.view,i,d),l));return{kind:"vector",id:e.id,...l,d:zt(m),contours:m,fill:o(e.fill,e.id,"fill",l)??ui,stroke:o(e.stroke,e.id,"stroke",l),strokeWidth:t.values.strokeWidth??0,opacity:Fo(t.values.opacity??1),rule:e.rule??"nonzero",cap:e.cap??"butt",join:e.join??"miter",clip:r,blend:e.blend??"normal",shadows:s,rotation:t.values.rotation??0}}function Tm(e,t,n,r,o){if(e===void 0)return;if(ye(e)){o.push({severity:"warning",code:"expression-not-supported",message:`Expressions are not supported for ${r} yet; grammar v0 is numeric only`,nodeId:n,prop:r});return}let s=t[e];if(s===void 0)return e;if(typeof s=="string")return s;o.push({severity:"error",code:"token-not-a-colour",message:`Token $${e} is a number, not a colour`,nodeId:n,prop:r})}function Mm(e){return{x:e.absX,y:e.absY,w:Math.max(0,e.w),h:Math.max(0,e.h)}}function Lm(e,t){let n=[],r=new Map;return{paint:(s,i,d,l)=>{let f=Tm(s,e,i,d,t);if(f===void 0)return;if(/url\(/i.test(f)){t.push({severity:"error",code:"invalid-paint",message:`${i}: a paint is a colour or a gradient, not ${JSON.stringify(f)}`,nodeId:i,prop:d});return}let p=Lo(f);if("error"in p){t.push({severity:"error",code:"invalid-paint",message:`${i}: ${p.error}`,nodeId:i,prop:d});return}if(p.kind==="solid")return f;let m=`${i}\0${d}\0${f}`,y=r.get(m);if(y!==void 0)return`url(#${y})`;let v=[...r.keys()].filter(g=>g.startsWith(`${i}\0${d}\0`)).length,C=`${Am}${i}-${d}${v===0?"":`-${v+1}`}`;r.set(m,C);let _=nl(p.stops).map(g=>({offset:g.at,colour:Dm(g.colour,e,i,d,t)}));return n.push(Qb(p,C,l,Zb(_))),`url(#${C})`},gradients:n}}function Mr(e,t,n,r){let o=Tm(e,n,t,"shadow",r);if(o===void 0)return[];let s=Er(o);return"error"in s?(r.push({severity:"error",code:"invalid-shadow",message:`${t}: ${s.error}`,nodeId:t,prop:"shadow"}),[]):s.shadows.map(i=>({...i,colour:Dm(i.colour,n,t,"shadow",r)}))}function Zb(e){return e.map((t,n)=>{if(t.colour.trim().toLowerCase()!=="transparent")return t;let r=[e[n-1],e[n+1]].find(o=>o!==void 0&&o.colour.trim().toLowerCase()!=="transparent");return r===void 0?t:{offset:t.offset,colour:r.colour,opacity:0}})}function Dm(e,t,n,r,o){let s=t[e];return s===void 0?e:typeof s=="string"&&!ti(s)?s:(o.push({severity:"error",code:"invalid-paint",message:`${n}: a gradient stop names $${e}, which is not a colour`,nodeId:n,prop:r}),"transparent")}function Qb(e,t,n,r){if(e.kind==="linear"){let f=e.angle*Math.PI/180,p=Math.sin(f),m=-Math.cos(f),y=(Math.abs(n.w*p)+Math.abs(n.h*m))/2,v=n.x+n.w/2,C=n.y+n.h/2;return{id:t,kind:"linear",x1:li(v-p*y),y1:li(C-m*y),x2:li(v+p*y),y2:li(C+m*y),stops:r}}let o=n.x+n.w*e.cx,s=n.y+n.h*e.cy,i={x:Math.max(o-n.x,n.x+n.w-o),y:Math.max(s-n.y,n.y+n.h-s)};if(e.shape==="circle"||i.x===0||i.y===0){let f=Math.hypot(i.x,i.y);return{id:t,kind:"radial",cx:o,cy:s,rx:f,ry:f,stops:r}}let d=i.x/i.y,l=Math.hypot(i.x/d,i.y);return{id:t,kind:"radial",cx:o,cy:s,rx:l*d,ry:l,stops:r}}function li(e){return Math.round(e*1e6)/1e6}function Fo(e){return Math.min(Math.max(e,0),1)}function e0(e,t,n,r){let o=ye(e.src)?void 0:e.src,s=o===void 0?void 0:t.assets[o];if(!s){r.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=n?.(s,o);return i===void 0&&r.push({severity:"warning",code:"unresolved-asset",message:`The bytes for asset "${o}" are not available here`,nodeId:e.id,prop:"src"}),i}function t0(e,t){let n=new Map,r=(o,s)=>{n.set(o,[...n.get(o)??[],s])};for(let o of e.beats){if(o.kind==="camera")continue;let s=o.kind;if(o.split==="children"){let i=F(t.root,o.line.id);(i&&"children"in i?i.children:[]).forEach((l,f)=>{r(l.id,{beat:o,kind:s,start:o.start+f*o.stagger})})}else if(o.split!==void 0)for(let i=0;i<o.pieces;i+=1)r(o.line.id,{beat:o,kind:s,start:o.start+i*o.stagger,piece:i});else r(o.line.id,{beat:o,kind:s,start:o.start})}for(let o of n.values())o.sort((s,i)=>s.start-i.start);return n}function n0(e,t){let n=t.nodes.get(e.page);return n?Math.min(n.w,n.h):1e3}function Pm(e,t,n,r,o){let s=e[0]?.kind==="enter",i,d,l;for(let f of e){if(f.start>t)break;let p=f.beat.effect,m=f.beat.duration,y=m<=0?1:Math.min(1,(t-f.start)/m),v=y>=1;if(f.kind==="emphasis"){if(s||v){i=void 0;continue}let A=1+(Yd-1)*Math.sin(Math.PI*ei(f.beat.ease,y));i=ci(n,A,A,"centre",1);continue}if(v){s=f.kind==="exit",i=void 0,d=void 0,l=void 0;continue}let C=ei(f.beat.ease,y),_=f.kind==="enter"?C:1-C,g=Rm(f.kind==="enter"?C:1-C);s=!1,d=void 0,l=void 0;let P=f.beat.line.from;switch(p){case"cut":i=void 0;break;case"fade":i=Nm(g);break;case"rise":case"drop":{let A=p==="rise"?1:-1;i={sx:1,sy:1,tx:0,ty:f.kind==="enter"?A*r*(1-C):-A*r*C,opacity:g};break}case"pop":{let A=To+(1-To)*_;i=ci(n,A,A,"centre",g);break}case"grow":{let A=typeof P=="string"?P:"bottom",R=Math.max(0,_);i=A==="left"||A==="right"?ci(n,R,1,A,1):ci(n,1,R,A,1);break}case"wipe":{let A=typeof P=="string"?P:"left";d=f.kind==="enter"?Fm(n,A,_):r0(n,A,C),i=void 0;break}case"count":{let A=o.text===void 0?void 0:Qd(o.text);if(!A){i=Nm(g);break}let R=typeof P=="number"?P:0;l=el(A,R+(A.value-R)*C),i=void 0;break}case"draw":i={sx:1,sy:1,tx:0,ty:0,opacity:1,trace:_,fillOpacity:Rm((_-.75)/.25)};break;case"pulse":case void 0:i=void 0;break}}return{hidden:s,pose:i,...d?{reveal:d}:{},...l===void 0?{}:{text:l}}}function Nm(e){return{sx:1,sy:1,tx:0,ty:0,opacity:e}}function ci(e,t,n,r,o){let s=r==="left"?e.x:r==="right"?e.x+e.w:e.x+e.w/2,i=r==="top"?e.y:r==="bottom"?e.y+e.h:e.y+e.h/2;return{sx:t,sy:n,tx:s*(1-t),ty:i*(1-n),opacity:o}}function Fm(e,t,n){let r=e.w*n,o=e.h*n;switch(t){case"left":return{x:e.x,y:e.y,w:r,h:e.h};case"right":return{x:e.x+e.w-r,y:e.y,w:r,h:e.h};case"top":return{x:e.x,y:e.y,w:e.w,h:o};case"bottom":return{x:e.x,y:e.y+e.h-o,w:e.w,h:o}}}function r0(e,t,n){return Fm(e,{left:"right",right:"left",top:"bottom",bottom:"top"}[t],1-n)}function Im(e,t){let n=t.trace??e.trace,r=t.fillOpacity??e.fillOpacity;return{sx:e.sx*t.sx,sy:e.sy*t.sy,tx:e.sx*t.tx+e.tx,ty:e.sy*t.ty+e.ty,opacity:e.opacity*t.opacity,...n===void 0?{}:{trace:n},...r===void 0?{}:{fillOpacity:r}}}function Rm(e){return e<0?0:e>1?1:e}function o0(e,t){let n=new Map;ne(t.root,(o,s)=>{s&&n.set(o.id,s.id)});let r=new Map;for(let o of e.items){let s=o.kind==="frame"?{x:o.x,y:o.y,w:o.w,h:o.h}:Bo(o);for(let i=o.id;i!==void 0;i=n.get(i)){let d=r.get(i);if(r.set(i,d?s0(d,s):s),i===t.root.id)break}}return{parents:n,boxes:r}}function s0(e,t){let n=Math.min(e.x,t.x),r=Math.min(e.y,t.y);return{x:n,y:r,w:Math.max(e.x+e.w,t.x+t.w)-n,h:Math.max(e.y+e.h,t.y+t.h)-r}}function wl(e,t,n,r){let o=t0(t,r.doc);if(o.size===0)return e;let{parents:s,boxes:i}=o0(e,r.doc),d=Oo*n0(t,r.resolution),l=r.options?.measure??Yt(),f=new Map,p=new Map;for(let[v,C]of o){let _=i.get(v)??{x:0,y:0,w:0,h:0},g=F(r.doc.root,v),P=g?.type==="text"?gn(g.content):void 0,A=C.filter($=>$.piece===void 0),R=C.find($=>$.piece!==void 0);if(A.length>0&&f.set(v,Pm(A,n,_,d,{...P===void 0?{}:{text:P}})),R&&(R.beat.split==="word"||R.beat.split==="letter")){let $=[];for(let D=0;D<R.beat.pieces;D+=1){let T=C.filter(V=>V.piece===D);$.push(Pm(T,n,_,d,{}))}$.some(D=>D.hidden||D.pose!==void 0)&&p.set(v,{split:R.beat.split,moments:$})}}let m=[...e.clips],y=[];for(let v of e.items){let C=[],_;for(let $=v.id;$!==void 0;$=s.get($)){let D=f.get($);D&&(C.unshift(D),D.reveal&&!_&&(_={id:$,box:D.reveal}))}if(C.some($=>$.hidden))continue;let g;for(let $ of C)$.pose&&(g=g?Im(g,$.pose):$.pose);let P=v,A=f.get(v.id)?.text;if(A!==void 0&&v.kind==="text"&&(P=bl(r.doc,r.resolution,v,A,r.options)??v),_){let $=`${_.id}~wipe${v.clip===void 0?"":`~${v.clip}`}`;m.some(D=>D.id===$)||m.push({id:$,..._.box,parent:v.clip}),P={...P,clip:$}}let R=p.get(v.id);if(R&&P.kind==="text"){Bm(P,R.split,l).forEach(($,D)=>{let T=R.moments[D];if(!T||T.hidden)return;let V=T.pose&&g?Im(g,T.pose):T.pose??g;y.push({...$,part:D,...V?{pose:V}:{}})});continue}y.push(g&&!i0(g)?{...P,pose:g}:P)}return{...e,items:y,clips:m}}function i0(e){return e.sx===1&&e.sy===1&&e.tx===0&&e.ty===0&&e.opacity===1&&e.trace===void 0&&e.fillOpacity===void 0}function Bm(e,t,n=Yt()){let r=[],o=new Intl.Segmenter(void 0,{granularity:"grapheme"}),s=!1;for(let i of e.lines){s=!1;for(let d of i.spans){let l=0,f=t==="word"?d.text.split(/(\s+)/).filter(p=>p!==""):[...o.segment(d.text)].map(p=>p.segment);for(let p of f){if(p.trim()==="")s=!1;else{(t==="letter"||!s)&&r.push([]);let y=d.x+n.advance(d.text.slice(0,l),d.style);r.at(-1).push({...d,text:p,x:y,w:n.advance(p,d.style)}),s=!0}l+=p.length}}}return r.map(i=>({...e,lines:e.lines.map(d=>({...d,spans:i.filter(l=>l.y===d.baseline)})).filter(d=>d.spans.length>0)}))}var Hm="vd-clip-";function kl(e){return d0(e,"")}function d0(e,t){let n=e.parent===void 0?"":` clip-path="url(#${Ar(t+Hm+e.parent)})"`;return`<clipPath id="${Ar(t+Hm+e.id)}"${n}><rect x="${re(e.x)}" y="${re(e.y)}" width="${re(e.w)}" height="${re(e.h)}"/></clipPath>`}function _l(e){return l0(e,"")}function l0(e,t){let n=e.stops.map(o=>`<stop offset="${re(o.offset)}" stop-color="${Ar(o.colour)}"${o.opacity===void 0?"":` stop-opacity="${re(o.opacity)}"`}/>`).join(""),r=Ar(t+e.id);return e.kind==="linear"?`<linearGradient id="${r}" gradientUnits="userSpaceOnUse" x1="${re(e.x1)}" y1="${re(e.y1)}" x2="${re(e.x2)}" y2="${re(e.y2)}">${n}</linearGradient>`:`<radialGradient id="${r}" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="matrix(${re(e.rx)} 0 0 ${re(e.ry)} ${re(e.cx)} ${re(e.cy)})">${n}</radialGradient>`}var pi="vd-shadow-";function Sl(e,t=!1){return u0(e,t,"")}function u0(e,t,n){let r=fi(Bo(e),e.shadows),o=2,s=[];e.shadows.forEach((d,l)=>{let f=`s${l}`,p="SourceAlpha";d.spread!==0&&(s.push(`<feMorphology in="${p}" operator="${d.spread>0?"dilate":"erode"}" radius="${re(Math.abs(d.spread))}" result="${f}m"/>`),p=`${f}m`),d.blur>0&&(s.push(`<feGaussianBlur in="${p}" stdDeviation="${re(d.blur/2)}" result="${f}b"/>`),p=`${f}b`),s.push(`<feOffset in="${p}" dx="${re(d.x)}" dy="${re(d.y)}" result="${f}o"/>`,`<feFlood flood-color="${Ar(d.colour)}" result="${f}c"/>`,`<feComposite in="${f}c" in2="${f}o" operator="in" result="${f}"/>`)});let i=e.shadows.map((d,l)=>`<feMergeNode in="s${e.shadows.length-1-l}"/>`).join("");return`<filter id="${Ar(n+pi+e.id)}" filterUnits="userSpaceOnUse" x="${re(r.x-o)}" y="${re(r.y-o)}" width="${re(r.w+o*2)}" height="${re(r.h+o*2)}" color-interpolation-filters="sRGB">`+s.join("")+`<feMerge>${i}${t?"":'<feMergeNode in="SourceGraphic"/>'}</feMerge></filter>`}function mi(e){return`rotate(${re(e.rotation)} ${re(e.x+e.w/2)} ${re(e.y+e.h/2)})`}function El(e){return e.rotation!==0&&e.clip!==void 0}function Cl(e){return`matrix(${re(e.sx)} 0 0 ${re(e.sy)} ${re(e.tx)} ${re(e.ty)})`}function Ar(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}var m0=.8,h0=.2;function Ml(e,t){let r=e.createElement("canvas").getContext("2d"),o=Yt(),s=new Map,i=new Map,d=new Set;function l(p){return`${p.italic?"italic ":""}${p.weight} ${p.size}px ${p.family}`}function f(){s.clear(),i.clear()}return{advance(p,m){if(!r)return o.advance(p,m);let y=l(m),v=`${y}\0${m.letterSpacing}\0${p}`,C=s.get(v);if(C!==void 0)return C;r.font=y;let _=r.measureText(p).width+m.letterSpacing*[...p].length;return s.set(v,_),_},metrics(p){if(!r)return o.metrics(p);let m=l(p),y=i.get(m);if(y)return y;r.font=m;let v=r.measureText("Hxg"),C=v.fontBoundingBoxAscent??p.size*m0,_=v.fontBoundingBoxDescent??p.size*h0,g={ascent:C,descent:_,lineGap:0};return i.set(m,g),g},load(p,m){let y=e.fonts;if(!y||typeof FontFace!="function")return!1;let v=!1;for(let C of Object.values(p.fonts))for(let _ of x0(C)){let g=`${C.family}\0${_.src}\0${_.weight??400}\0${_.style??"normal"}`;if(d.has(g))continue;d.add(g);let P=_.src.startsWith("data:")?void 0:m?.(_.src),A={weight:String(_.weight??400),style:_.style??"normal"},R=$=>{let D=new FontFace(C.family,typeof $=="string"?`url(${$})`:g0($),A);y.add(D),D.load().then(()=>{f(),t?.()},()=>{y.delete(D)})};P===void 0?R(_.src):(v=!0,P.then(R,()=>{}))}return v},invalidate:f,destroy(){f(),d.clear()}}}function x0(e){return(e.faces??[]).flatMap(t=>t.src===void 0?[]:[{...t,src:t.src}])}function g0(e){return e instanceof Uint8Array?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):e}var hi={x:0,y:0,zoom:1},Um=.02,zm=64;function $r(e){return Number.isFinite(e)?Math.min(Math.max(e,Um),zm):1}function xi(e,t){return{x:(t.x-e.x)/e.zoom,y:(t.y-e.y)/e.zoom}}function Al(e,t){return{x:t.x*e.zoom+e.x,y:t.y*e.zoom+e.y}}function Vo(e,t,n){let r=$r(e.zoom*n),o=xi(e,t);return{zoom:r,x:t.x-o.x*r,y:t.y-o.y*r}}function It(e,t,n){return{...e,x:e.x+t,y:e.y+n}}function $l(e){return`translate(${e.x} ${e.y}) scale(${e.zoom})`}function vn(e,t,n){let r={width:Math.max(1,t.width-n*2),height:Math.max(1,t.height-n*2)};if(e.width<=0||e.height<=0)return hi;let o=$r(Math.min(r.width/e.width,r.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 ve="http://www.w3.org/2000/svg",jm="vd-viewer-styles",Km=`
39
+ `}async function Hl(e){let t=await crypto.subtle.digest("SHA-256",e),n=[...new Uint8Array(t)].map(r=>r.toString(16).padStart(2,"0"));return`${fy}${n.join("")}`}function Ul(e,t){return`data:${e};base64,${t}`}function zl(e){let t=e.toBase64;if(typeof t=="function")return t.call(e);let n="";for(let r=0;r<e.length;r+=32768)n+=String.fromCharCode(...e.subarray(r,r+32768));return btoa(n)}function jl(e){let t=Uint8Array.fromBase64;if(typeof t=="function")return t(e);let n=atob(e),r=new Uint8Array(n.length);for(let o=0;o<n.length;o+=1)r[o]=n.charCodeAt(o);return r}function ZS(e){if(e.startsWith(Kr))return 0;let t=e.indexOf(`
40
+ ${Kr}`);return t===-1?-1:t+1}function QS(e){let t=new Set;for(let n of e.matchAll(/sha256-[0-9a-f]{64}/g))t.add(n[0]);return t}function Kl(e){return(t,n,r,o)=>{e.push({severity:"error",code:n,message:`Line ${t}: ${r}`,...o===void 0?{}:{nodeId:o}})}}function Gl(e){let t=[],n=e.split(`
41
+ `);for(let r=0;r<n.length;r+=1){let o=n[r],s=o.trim();if(s===Kr)break;if(s===""||s.startsWith("```"))continue;let i=o.length-o.trimStart().length;t.push({number:r+1,indent:Math.floor(i/2),text:s,words:Qg(s)})}return t}function ql(e){let t=[],n=[],r,o=()=>{r&&r.runs.length>0&&(r.props.content=gy(r.runs)),r=void 0},s=i=>{for(o();t.length>0&&t[t.length-1].indent>=i;)n_(t.pop())};return{push(i){let a=i.words[0];if(a.startsWith('"')&&r&&i.indent>r.indent){let p=xy(i,e);return p!==void 0&&r.runs.push(p),!0}if(a===Za){s(i.indent);let p=t[t.length-1];return!p||p.type!=="instance"?(e(i.number,"invalid-override","An override line must sit inside an instance"),!0):(r=t_(p,i,e),!0)}if(a.startsWith('"')){let p=t[t.length-1];if(!p||p.type!=="text")return e(i.number,"invalid-content","A quoted line must sit inside a text node"),!0;let m=xy(i,e);return m!==void 0&&p.runs.push(m),!0}if(!Ya(a))return!1;s(i.indent);let d=i.words[1];if(d===void 0||d.includes("="))return e(i.number,"missing-id",`A ${a} needs an id`),!0;let c=e_(a,d,i.words.slice(2),i,e),l=t[t.length-1];return l?.type==="instance"?e(i.number,"invalid-override",`${l.record.id} takes its contents from its component \u2014 change the component, or write an override line`,d):l?l.children.push(c.record):n.push(c.record),t.push(c),!0},finish(){return s(0),n}}}function e_(e,t,n,r,o){let s={type:e,id:t},i=[];for(let a=0;a<n.length;a+=1){let{key:d,value:c}=ot(n[a]),l=zo(e,d);if(l===void 0){let g=ed(n,a,n[a-1]);g?(o(r.number,"invalid-value",g.message,t),a=g.end-1):o(r.number,"invalid-value",`${e} has no property "${d}"`,t);continue}let p=Qa(d,c??"");if(p!==void 0){if("error"in p)o(r.number,"invalid-value",`${d}: ${p.error}`,t);else for(let[g,b]of p.cells)s[g]=b;continue}let m=Qe(c??"",l);"error"in m?o(r.number,"invalid-value",`${d}: ${m.error}`,t):s[d]=m.value}return $a(e)&&(s.children=i),e==="text"&&(s.content=""),{indent:r.indent,type:e,record:s,children:i,runs:[]}}function t_(e,t,n){let r=e.record.id,o=t.words[1];if(o===void 0||o.includes("=")){n(t.number,"invalid-override","An override names the part it changes, e.g. override item.title fill=accent",r);return}let s=e.record.overrides??={},i=s[o]??={},a=t.words.slice(2);for(let d=0;d<a.length;d+=1){let{key:c,value:l}=ot(a[d]),p=nr(c)?Ja(c):void 0;if(p===void 0){let b=ed(a,d,a[d-1]);b?(n(t.number,"invalid-value",b.message,r),d=b.end-1):c==="content"?n(t.number,"invalid-value","Write the text as quoted lines under the override",r):n(t.number,"invalid-value",`An override cannot set "${c}"`,r);continue}let m=Qa(c,l??"");if(m!==void 0){if("error"in m)n(t.number,"invalid-value",`${c}: ${m.error}`,r);else for(let[b,w]of m.cells)i[b]=w;continue}let g=Qe(l??"",p);"error"in g?n(t.number,"invalid-value",`${c}: ${g.error}`,r):i[c]=g.value}return{indent:t.indent,props:i,runs:[]}}function n_(e){if(e.type==="text"&&(e.record.content=gy(e.runs)),e.type==="instance"){let t=e.record.overrides;for(let[n,r]of Object.entries(t??{}))Object.keys(r).length===0&&delete t?.[n];t&&Object.keys(t).length===0&&delete e.record.overrides}}function gy(e){if(e.length===0)return"";let t=e[0];return e.length===1&&typeof t=="string"?t:[...e]}function xy(e,t){let n=hn(e.words[0]);if(n===void 0){t(e.number,"invalid-run","Malformed quoted string");return}if(e.words.length===1)return n;let r={text:n};for(let o of e.words.slice(1)){let{key:s,value:i}=ot(o),a=hi.find(([c])=>c===s);if(!a){t(e.number,"invalid-run",`A run has no mark "${s}"`);continue}let d=Qe(i??"",a[1]);"error"in d?t(e.number,"invalid-run",`${s}: ${d.error}`):r[s]=d.value}return r}function gi(e){let t=[],n=Kl(t),r=rr,o,s=!1,i={},a={},d={},c=ql(n),l=Tl(n,t),p,m={},g=!1,b=!1,w={},k=new Map,_,M=!1,R=()=>{if(!_)return;let C=_;_=void 0;let G=k.get(C.page);if(G!==void 0){n(C.number,"invalid-motion",`motion ${C.page} is written twice \u2014 put its lines in the block on line ${G}`,C.page);return}k.set(C.page,C.number);for(let[fe,oe]of C.where)k.set(`${C.page} ${fe}`,oe);let ee=Nl(C);ee&&(w[C.page]=ee)};for(let C of Gl(e)){let G=C.words[0];if(_&&C.indent>0){Dl(_,C,n);continue}if(!(M&&C.indent>0)){if(M=!1,R(),G==="motion"&&C.indent===0){p=void 0,_=Pl(C,n),M=_===void 0;continue}if(l.take(C)){p=void 0;continue}if(G==="version"){s=!0,s_(C,t);continue}if(G==="kind"&&C.indent===0){r=i_(C,t);continue}if(G==="title"&&C.indent===0){o=yy(C,n);continue}if(G==="theme"&&C.indent===0){p=void 0,g=!0,b&&n(C.number,"invalid-theme","theme dark is written twice \u2014 keep one block"),b=!0,(C.words[1]!=="dark"||C.words.length>2)&&n(C.number,"invalid-theme","Expected theme dark on its own line, with the tokens that differ indented under it");continue}if(G.startsWith("$")){if(p=void 0,g&&C.indent>0){Wl(C,m,n);continue}g=!1,Wl(C,i,n);continue}if(C.indent===0)g=!1;else if(g){n(C.number,"invalid-theme","A theme block holds only $name = value lines");continue}if(G==="asset"&&C.indent===0){p=void 0,a_(C,d,n);continue}if(G==="font"&&C.indent===0){p=u_(C,a,n);continue}if((G==="fallback"||G==="face")&&p){l_(G,C,p,n);continue}p=void 0,!c.push(C)&&n(C.number,"unknown-node-type",`Unknown statement "${G}"`)}}R();let B=o_(l.finish(),r,t),D=un({dark:m}),V={...B===void 0?{}:{brand:B},...D===void 0?{}:{themes:D}},T=r_(c.finish(),t),O=Object.keys(w).length===0?{}:{motion:w},j=(C,G)=>k.get(G===void 0?C:`${C} ${G}`);if(!T){s||t.push({severity:"error",code:"invalid-document",message:"No nodes found"});let C=Oo({id:dn,children:[]}),G=Js({kind:r,...o===void 0?{}:{title:o},tokens:i,fonts:a,assets:d,...O,...V,root:C});return t.push(...Io(G,j)),{document:G,problems:t}}let $=$n(T),P={version:Et({kind:r,fonts:a,...V,root:$}),kind:r,...o===void 0?{}:{title:o},tokens:i,fonts:a,assets:d,...O,...V,root:$};return t.push(...Io(P,j)),{document:P,problems:t}}function r_(e,t){let n=e[0];if(n!==void 0){if(e.length===1&&n.type==="canvas")return n;for(let r of e){if(r.type!=="canvas")continue;let o=r.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:dn,children:[...e]}}}function o_(e,t,n){let r=e.brand;if(!r)return;e.header||n.push({severity:"error",code:"invalid-brand",message:"A brand needs its brand line first, e.g. brand ember@1"});let o=Object.entries(r.guides).filter(([i,a])=>i!=="voice"||a.entries.some(d=>d.kind!=="banned")),s=Object.keys(r.roles).length+Object.keys(r.logos).length+o.length+r.review.length;return t!=="brand"&&s>0&&n.push({severity:"warning",code:"brand-only",message:"Roles, logos, guides and review define a brand, and are read in a kind brand document"}),r}function s_(e,t){Xs.includes(Number(e.words[1]))||t.push({severity:"warning",code:"version-mismatch",message:`Line ${e.number}: expected version ${Ys} or older, got ${e.words[1]??"nothing"}`})}function i_(e,t){let n=e.words[1];return n!==void 0&&Tr.includes(n)?n:(t.push({severity:"error",code:"unknown-kind",message:`Line ${e.number}: unknown kind "${n??"nothing"}" \u2014 this build reads ${Tr.join(", ")}`}),rr)}function yy(e,t){let n=e.words.slice(1).join(" ").trim();if(n===""){t(e.number,"invalid-value",'title needs a name, e.g. title "Pitch deck"');return}let r=n.startsWith('"')?hn(n):n;if(r===void 0){t(e.number,"invalid-value",`Could not read the title ${n}`);return}return r.trim()===""?void 0:r}function Wl(e,t,n){let{name:r,value:o}=Xl(e.words);if(r===void 0||o===void 0){n(e.number,"invalid-token","Expected $name = value");return}if(!o.startsWith('"')&&/\s/.test(o)){n(e.number,"invalid-token",`$${r}: expected one value, got "${o}". Quote it if the value has spaces; there are no comments.`);return}let s=Qe(o,"stringValue");if("error"in s){n(e.number,"invalid-token",`$${r}: ${s.error}`);return}if(typeof s.value!="string"){n(e.number,"invalid-token",`$${r} may not be an expression`);return}t[r]=by(s.value,o)}function by(e,t){let n=Number(e);return t.startsWith('"')||!Number.isFinite(n)||e.trim()===""?e:n}function Xl(e){let t=e[0],n=s=>s.startsWith("$")?s.slice(1):s;if(e[1]==="=")return{name:n(t),value:e.slice(2).join(" ")||void 0};let{key:r,value:o}=ot(t);return o!==void 0?{name:n(r),value:o}:{name:n(t)}}function a_(e,t,n){let r=e.words.slice(1),o=r[0],s=r[1]==="=",i=o===void 0?void 0:ot(o),a=i?.key,d=s?r[2]:i?.value,c=r.slice(s?3:1);if(a===void 0||a===""||d===void 0){n(e.number,"invalid-asset","Expected asset <name> = <type> hash=\u2026 bytes=\u2026");return}let l={};for(let b of c){let{key:w,value:k}=ot(b);if(k===void 0){n(e.number,"invalid-asset",`Asset "${a}" has a stray word "${b}"`);continue}l[w]=d_(k)}let p=l.hash,m=Number(l.bytes);if(p===void 0||!Number.isFinite(m)){n(e.number,"invalid-asset",`Asset "${a}" needs a hash and a bytes count`);return}let g=l.ms===void 0?void 0:Number(l.ms);if(g!==void 0&&!(Number.isFinite(g)&&g>=0)){n(e.number,"invalid-asset",`Asset "${a}": ms is the track's length, in milliseconds`);return}t[a]={type:d,hash:p,bytes:m,...g===void 0?{}:{ms:g},...l.credit===void 0?{}:{credit:l.credit},...l.source===void 0?{}:{source:l.source},...l.license===void 0?{}:{license:l.license}}}function d_(e){return e.startsWith('"')?hn(e)??e:e}function u_(e,t,n){let{name:r,value:o}=Xl(e.words.slice(1));if(r===void 0||o===void 0){n(e.number,"invalid-font","Expected font <name> = <family>");return}let s=Qe(o,"string"),i={family:"error"in s?o:s.value};return t[r]=i,{family:i,faces:[]}}var c_=/^[A-Za-z_][\w-]*$/;function l_(e,t,n,r){if(e==="fallback"){let a=Qe(t.words.slice(1).join(" "),"string");"error"in a?r(t.number,"invalid-font",`fallback: ${a.error}`):n.family.fallback=a.value;return}let o=t.words[1];if(o===void 0){r(t.number,"invalid-font-face","A face needs a src, or asset=");return}let s=o.startsWith("asset=")?o.slice(6):void 0,i={};if(s!==void 0){if(!c_.test(s)){r(t.number,"invalid-font-face",`asset=${s}: not an asset name`);return}i.asset=s}else{let a=Qe(o,"string");i.src="error"in a?o:a.value}for(let a of t.words.slice(2)){let{key:d,value:c}=ot(a);if(d!=="weight"&&d!=="style"){r(t.number,"invalid-font-face",`A face has no property "${d}"`);continue}let l=Qe(c??"",d==="weight"?"number":"fontStyle");"error"in l?r(t.number,"invalid-font-face",`${d}: ${l.error}`):i[d]=l.value}n.faces.push(i),n.family.faces=n.faces}var Yl=["rect","ellipse","vector","image","text","video"];function Re(e){return{x:e.x+e.w/2,y:e.y+e.h/2}}function je(e,t,n){if(n===0)return e;let r=n*Math.PI/180,o=Math.cos(r),s=Math.sin(r),i=e.x-t.x,a=e.y-t.y;return{x:t.x+i*o-a*s,y:t.y+i*s+a*o}}function lr(e,t,n=Re(e)){if(t%360===0)return e;let r=[{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=>je(d,n,t)),o=r.map(d=>d.x),s=r.map(d=>d.y),i=Math.min(...o),a=Math.min(...s);return{x:i,y:a,w:Math.max(...o)-i,h:Math.max(...s)-a}}function Wo(e){let t=(e%360+360)%360,n=Math.round(t*100)/100;return n===360?0:n}var vy=["image","video"],wy=["rect","ellipse","vector"];function st(e){return vy.includes(e.type)}function yi(e){return wy.includes(e.type)}function Ye(e){let t=new Map,n=[],r=(i,a,d)=>{let c={node:i,page:a,instance:d};t.has(i.id)||t.set(i.id,c),st(i)&&i.mask!==void 0&&n.push(c);let l=i.type==="instance"?i.id:d;for(let p of te(i)){let m=i===e&&p.type==="frame"?p.id:a;r(p,m,l)}};r(e,e.id,void 0);let o=new Map,s=[];for(let i of n){let a=i.node,d=a.mask,c=i.instance===void 0?void 0:Ht(i.instance,d),l=(c===void 0?void 0:t.get(c))??t.get(d);if(!l){s.push({severity:"error",code:"unknown-reference",message:`${a.id}: mask=${d} names nothing in the document, so it is drawn unmasked \u2014 point mask= at a rect, ellipse or vector on its page`,nodeId:a.id,prop:"mask"});continue}if(!yi(l.node)){s.push({severity:"error",code:"mask-not-a-shape",message:l.node.id===a.id?`${a.id} cannot be its own mask, so it is drawn unmasked \u2014 point mask= at a rect, ellipse or vector`:`${a.id}: mask=${d} is ${f_(l.node.type)} ${l.node.type}, so it is drawn unmasked \u2014 a mask is a rect, ellipse or vector`,nodeId:a.id,prop:"mask"});continue}if(l.page!==i.page){s.push({severity:"error",code:"mask-wrong-page",message:`${a.id}: mask=${d} is on ${l.page}, not ${i.page}, so it is drawn unmasked \u2014 move the shape onto the image's page`,nodeId:a.id,prop:"mask"});continue}o.set(a.id,l.node.id)}return{links:o,shapes:new Set(o.values()),problems:s}}function Jl(e){return[...Ye(e).problems]}function fr(e,t){if(t===e.id)return e.id;for(let n of te(e))if(Sy(n,t))return n.type==="frame"?n.id:e.id}function nd(e,t){let n=new Set,r=a=>{n.add(a.id);for(let d of te(a))r(d)};for(let a of t){let d=ky(e,a);d&&r(d)}let o=Ye(e).links,s=[],i=a=>{if(st(a)&&a.mask!==void 0&&!n.has(a.id)){let d=o.get(a.id);(n.has(a.mask)||d!==void 0&&n.has(d))&&s.push(a.id)}for(let d of te(a))i(d)};return i(e),s}function ky(e,t){if(e.id===t)return e;for(let n of te(e)){let r=ky(n,t);if(r)return r}}function Sy(e,t){return e.id===t||te(e).some(n=>Sy(n,t))}function f_(e){return/^[aeiou]/.test(e)?"an":"a"}function bi(e,t,n){let r={x:t.x,y:t.y,w:Math.max(0,t.w),h:Math.max(0,t.h)},o=d=>({x:d.x+r.x,y:d.y+r.y}),s,i="nonzero";switch(e.type){case"rect":s=Be(Dn(r.w,r.h,Zn(n)),o);break;case"ellipse":s=Be(Vr(r.w,r.h),o);break;case"vector":s=Be(ar(e.d).contours,Fr(Ir(e.view,r.w,r.h),r)),i=e.rule??"nonzero";break;case"canvas":case"connector":case"frame":case"group":case"image":case"instance":case"text":case"video":return}let a=n.rotation??0;if(a%360!==0){let d=Re(r);s=Be(s,c=>je(c,d,a))}return{contours:s,rule:i}}var p_=/^[A-Za-z_][\w-]*$/;function mn(e){return Ql(e).map(t=>t.trim())}function vi(e){return/^\s*image\s*\(/i.test(e)}function Xo(e){let t=e.trim();if(t==="")return{error:"A paint list has an empty layer"};if(!vi(t))return wi(t);let n=/^image\s*\(([\s\S]*)\)$/i.exec(t);if(!n)return{error:'An image paint needs its closing ")"'};let r=Ql(n[1]).map(i=>i.trim()),o=r[0]??"";if(!p_.test(o))return{error:`image() names an asset, like image(photo, cover), not ${JSON.stringify(o)}`};if(r.length>2)return{error:"image() takes an asset and a fit: image(photo, cover)"};let s=(r[1]??"cover").toLowerCase();return Zt.includes(s)?{kind:"image",asset:o,fit:s}:{error:`An image paint's fit is cover, contain or fill, not ${JSON.stringify(s)}`}}function rd(e){return/^\s*(linear|radial|conic|repeating-[a-z]+)-gradient\s*\(/i.test(e)}function wi(e){let t=e.trim(),n=/^([a-z-]+)-gradient\s*\(([\s\S]*)\)$/i.exec(t);if(!n)return rd(t)?{error:'A gradient needs its closing ")"'}:{kind:"solid",colour:t};let r=n[1].toLowerCase(),o=Ql(n[2]).map(s=>s.trim());if(o.some(s=>s===""))return{error:"A gradient has an empty argument"};if(r==="linear"){let s=m_(o[0]),i=Ey(s===void 0?o:o.slice(1));return"error"in i?i:{kind:"linear",angle:s??180,stops:i.stops}}if(r==="radial"){let s=g_(o[0]);if(s&&"error"in s)return s;let i=Ey(s?o.slice(1):o);return"error"in i?i:{kind:"radial",shape:s?.shape??"ellipse",cx:s?.cx??.5,cy:s?.cy??.5,stops:i.stops}}return{error:`${r}-gradient is not supported; use linear-gradient or radial-gradient`}}function Zl(e){let t=e.map(r=>r.at);t[0]===void 0&&(t[0]=0),t[t.length-1]===void 0&&(t[t.length-1]=1);let n=0;for(let r=0;r<t.length;r+=1){let o=t[r];o!==void 0&&(n=Math.max(n,o),t[r]=n)}for(let r=1;r<t.length;r+=1){if(t[r]!==void 0)continue;let o=r-1,s=r;for(;t[s]===void 0;)s+=1;let i=t[o],a=t[s];for(let d=r;d<s;d+=1)t[d]=i+(a-i)*(d-o)/(s-o);r=s}return e.map((r,o)=>({colour:r.colour,at:t[o]}))}function Ql(e){let t=[],n=0,r=0;for(let o=0;o<e.length;o+=1){let s=e[o];s==="("?n+=1:s===")"?n=Math.max(0,n-1):s===","&&n===0&&(t.push(e.slice(r,o)),r=o+1)}return t.push(e.slice(r)),t}var h_={top:[0,-1],bottom:[0,1],left:[-1,0],right:[1,0]};function m_(e){let t=/^(-?\d*\.?\d+)(deg|turn|rad)$/i.exec(e);if(t){let s=Number(t[1]),i=t[2].toLowerCase();return i==="turn"?s*360:i==="rad"?s*180/Math.PI:s}let n=/^to\s+([a-z]+)(?:\s+([a-z]+))?$/i.exec(e);if(!n)return;let r=0,o=0;for(let s of[n[1],n[2]]){if(s===void 0)continue;let i=h_[s.toLowerCase()];if(!i)return;r+=i[0],o+=i[1]}return(Math.atan2(r,-o)*180/Math.PI+360)%360}var x_={left:0,top:0,center:.5,right:1,bottom:1};function g_(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 n=t[1]?.toLowerCase();if(t[2]===void 0)return n?{shape:n}:void 0;let r=_y(t[2]),o=t[3]===void 0?.5:_y(t[3]);return r===void 0||o===void 0?{error:`A radial centre is two percentages or keywords, not "${e}"`}:{...n?{shape:n}:{},cx:r,cy:o}}function _y(e){let t=x_[e.toLowerCase()];if(t!==void 0)return t;let n=/^(-?\d*\.?\d+)%$/.exec(e);return n?Number(n[1])/100:void 0}function Ey(e){if(e.length<2)return{error:"A gradient needs at least two colours"};let t=[];for(let n of e){let r=/^([\s\S]*?\S)\s+(-?\d*\.?\d+)%$/.exec(n);if(r&&y_(r[1]))t.push({colour:r[1],at:Number(r[2])/100});else{if(/\s/.test(n.replace(/\([^)]*\)/g,"")))return{error:`"${n}" is not a colour with an optional percentage`};t.push({colour:n})}}return{stops:t}}function y_(e){let t=0;for(let n of e)if(n==="("&&(t+=1),n===")"&&(t-=1),t<0)return!1;return t===0}function od(e){return mn(e).flatMap(t=>{let n=Xo(t);return"error"in n||n.kind==="image"?[]:n.kind==="solid"?[n.colour]:n.stops.map(r=>r.colour)})}function My(e,t={}){if(typeof e!="string")return[];let n=o=>{let s=t[o];return typeof s=="string"?s:o},r=[];for(let o of mn(n(e.trim())))for(let s of mn(n(o))){let i=Xo(s);!("error"in i)&&i.kind==="image"&&!r.includes(i.asset)&&r.push(i.asset)}return r}function sd(e,t={}){let n=e,r=[];(e.type==="image"||e.type==="video")&&typeof n.src=="string"&&r.push(n.src);for(let o of["fill","background"])for(let s of My(n[o],t))r.includes(s)||r.push(s);return r}var Yo={union:"Union",subtract:"Subtract",intersect:"Intersect",exclude:"Exclude"};var $y=["rect","ellipse","vector"];function b_(e,t){let n=[],r,o=s=>{if(s.id===t)return r={node:s,path:[...n]},!0;if(!me(s))return!1;n.push(s);for(let i of s.children)if(o(i))return!0;return n.pop(),!1};return o(e),r}function Cy(e){for(let t=e.path.length-1;t>=0;t-=1){let n=e.path[t];if(!Ne(n))return n}}function Jo(e,t,n){let r=[...new Set(t)];if(r.length<2)return{code:"merge-too-few",message:`merge needs two or more shapes, got ${r.length===0?"none":"one"}`};let o=[];for(let i of r){let a=b_(e.root,i);if(!a)return{code:"unknown-reference",message:`No node ${i}`,nodeId:i};let d=a.node.type;if(d==="text")return{code:"merge-not-a-shape",message:`${i} is text, which cannot be merged: there is no outline-text operation yet. Merge rects, ellipses and vectors`,nodeId:i};if(!$y.includes(d))return{code:"merge-not-a-shape",message:`${i} is ${/^[aeiou]/.test(d)?"an":"a"} ${d}; only rects, ellipses and vectors can be merged${d==="group"?" (name the shapes inside it)":""}`,nodeId:i};if(!Ay(e,a.node,"fill"))return{code:"merge-stroke-only",message:Ay(e,a.node,"stroke")?`Merge works on filled areas; ${i} is only a stroke`:`Merge works on filled areas; ${i} paints nothing`,nodeId:i};if([a.node,...a.path].some(c=>c.hidden===!0))return{code:"merge-hidden",message:`${i} is hidden; show it before merging it`,nodeId:i};if(a.path.some(c=>c.type==="instance"))return{code:"merge-in-instance",message:`${i} is part of an instance, which its component decides; merge the shapes in the component`,nodeId:i};o.push(a)}let s=Cy(o[0]);for(let i of o.slice(1))if(Cy(i)!==s)return{code:"merge-across-frames",message:`${o[0].node.id} and ${i.node.id} are in different frames; merge shapes that share a page or frame`,nodeId:i.node.id};if(n!==void 0&&!r.includes(n)&&z(e.root,n))return{code:"duplicate-id",message:`${n} already names a node`,nodeId:n}}function Zo(e){return{code:"merge-failed",message:`The shapes could not be merged (${e instanceof Error?e.message:String(e)}); nothing was changed`}}function Ay(e,t,n){let r=t[n];if(r===void 0)return n==="fill";if(typeof r!="string")return!0;let o=Ze(e),s=o[r];return mn(typeof s=="string"?s:r).some(i=>{let a=o[i];return v_(typeof a=="string"?a:i)})}function v_(e){let t=e.trim().toLowerCase();if(t==="none"||t==="transparent")return!1;let n=/^#([0-9a-f]{4}|[0-9a-f]{8})$/.exec(t);if(n){let o=n[1];return o.length===4?o[3]!=="0":o.slice(6)!=="00"}let r=/^(?:rgba?|hsla?)\((.*)\)$/.exec(t);if(r){let o=r[1].split(/[\s,/]+/).filter(s=>s!=="");if(o.length===4)return parseFloat(o[3])!==0}return!0}function ef(e,t){let n=new Set(t),r=[],o=s=>{if(n.has(s.id)&&r.push(s.id),me(s))for(let i of s.children)o(i)};return o(e.root),r}var Ly="https://getv.design/ns/vd",pL=`<metadata><vd:document xmlns:vd="${Ly}" version="1"><![CDATA[
42
+ `;var S_=/<vd:document\b[^>]*>([\s\S]*?)<\/vd:document\s*>/;function tf(e){let t=S_.exec(e);if(!t)return;let n=t[1]??"",r="",o=n;for(;;){let s=o.indexOf("<![CDATA[");if(s===-1){r+=Ty(o);break}r+=Ty(o.slice(0,s));let i=o.indexOf("]]>",s);if(i===-1){r+=o.slice(s+9);break}r+=o.slice(s+9,i),o=o.slice(i+3)}return`${r.replace(/^\n/,"").replace(/\n$/,"")}
43
+ `}function nf(e){return/^\uFEFF?\s*</.test(e)}function Ty(e){return e.replace(/&(lt|gt|quot|apos|amp|#\d+|#x[0-9a-fA-F]+);/g,(t,n)=>{switch(n){case"lt":return"<";case"gt":return">";case"quot":return'"';case"apos":return"'";case"amp":return"&";default:{let r=n.startsWith("#x")?parseInt(n.slice(2),16):parseInt(n.slice(1),10);return Number.isFinite(r)&&r<=1114111?String.fromCodePoint(r):t}}})}function sf(e){let t=[],n=et(e);if(!n)return t.push({severity:"error",code:"invalid-document",message:"Expected an object"}),{document:Js(),problems:t};Xs.includes(n.version)||t.push({severity:"warning",code:"version-mismatch",message:`Expected version ${Ys} or older, got ${JSON.stringify(n.version)}`});let r=Ny(n.root,t);r&&q_(r,t);let o=r&&$n(r),s=__(n.motion,t),i=$_(n.kind,t),a=n.brand===void 0?void 0:Gc(n.brand,g=>{t.push({severity:"error",code:"invalid-brand",message:g})}),d=et(et(n.themes)?.dark),c=d===void 0?void 0:un({dark:Py(d,t)}),l={...a===void 0?{}:{brand:a},...c===void 0?{}:{themes:c}},p=T_(n.fonts,t),m={version:Et({kind:i,fonts:p,...l,...o?{root:o}:{}}),kind:i,...typeof n.title=="string"&&n.title.trim()!==""?{title:n.title}:{},tokens:Py(n.tokens,t),fonts:p,assets:O_(n.assets,t),...s===void 0?{}:{motion:s},...l,root:o??Oo({id:dn,children:[]})};return t.push(...Io(m)),{document:m,problems:t}}function __(e,t){if(e===void 0)return;let n=et(e),r=s=>{t.push({severity:"error",code:"invalid-motion",message:s})};if(!n){r("`motion` must be an object");return}let o={};for(let[s,i]of Object.entries(n)){let a=et(i);if(!a||!Array.isArray(a.lines)){r(`motion ${s} must be an object with a lines array`);continue}let d=a.enter,c=a.duration;if(d!==void 0&&!Do.includes(d)){r(`motion ${s}: enter must be one of ${Do.join(", ")}`);continue}if(c!==void 0&&!A_(c)){r(`motion ${s}: duration must be 0 to ${cn} milliseconds`);continue}let l=a.scroll;if(l!==void 0&&typeof l!="boolean"){r(`motion ${s}: scroll must be true or false`);continue}let p=a.bpm,m=a.meter;if(p!==void 0&&!(typeof p=="number"&&p>=20&&p<=300)){r(`motion ${s}: bpm must be ${20} to ${300}`);continue}if(m!==void 0&&!(typeof m=="number"&&Number.isInteger(m)&&m>=1&&m<=16)){r(`motion ${s}: meter must be a whole number from 1 to ${16}`);continue}let g=en({...p===void 0?{}:{bpm:p},...m===void 0?{}:{meter:m},lines:[]}),b=C_(a.music,g);if(b===null){r(`motion ${s}: music must be { asset, from?, volume?, fadein?, fadeout?, loop? }`);continue}let w=a.length;if(w!==void 0&&!af(w,sr,g)){r(`motion ${s}: length must be 0 to ${sr} milliseconds, or beats with a bpm`);continue}let k=R=>R===void 0||typeof R=="number"&&R>=16&&R<=ln;if(!k(a.w)||!k(a.h)){r(`motion ${s}: w and h must be 16 to ${ln} pixels`);continue}let _=a.lines.flatMap(R=>{let B=E_(R,g);return B===void 0&&r(`motion ${s}: a line that is not one: ${JSON.stringify(R)}`),B===void 0?[]:[B]}),M={...d===void 0?{}:{enter:d},...c===void 0?{}:{duration:c},...l===!0?{scroll:!0}:{},...w===void 0?{}:{length:w},...a.w===void 0?{}:{w:a.w},...a.h===void 0?{}:{h:a.h},...p===void 0?{}:{bpm:p},...m===void 0?{}:{meter:m},...b===void 0?{}:{music:b},lines:_};Tn(M)||(o[s]=M)}return Object.keys(o).length===0?void 0:o}function E_(e,t){let n=et(e);if(!n||typeof n.id!="string")return;let r={id:n.id};if(n.camera!==void 0){if(n.camera!==!0)return;r.camera=!0}for(let[p,m]of jr){let g=n[p];if(g!==void 0){if(!M_(p,m,g,t))return;r[p]=g}}if(r.on!==void 0&&(!t||r.with!==void 0||r.together))return;let{enter:o,exit:s,emphasis:i,step:a,together:d}=r;if(o!==void 0&&s!==void 0||i!==void 0&&(o!==void 0||s!==void 0)||a===!0&&d===!0||["at","after","with","together","step"].filter(p=>r[p]!==void 0).length>1||r.camera===!0&&(o??s??i??r.go)!==void 0)return;let l=r;return No(l)?l:void 0}function M_(e,t,n,r){switch(t){case"time":return af(n,e==="at"?sr:cn,r);case"on":return Zs.includes(n);case"boolean":return n===!0;case"number":return typeof n!="number"||!Number.isFinite(n)||n<0?!1:e==="at"?n<=sr:e==="pad"?n<=ln:n<=cn;case"string":return typeof n=="string"&&(e!=="go"||On(n)!==void 0);case"nodeEffect":return ti.includes(n);case"emphasisEffect":return ni.includes(n);case"ease":return ri.includes(n);case"piece":return oi.includes(n);case"from":return typeof n=="number"&&Number.isFinite(n)||or.includes(n);default:return!1}}function C_(e,t){if(e===void 0)return;let n=et(e);if(!n||typeof n.asset!="string"||n.asset==="")return null;let r={asset:n.asset};for(let i of Object.keys(n))if(i!=="asset"&&!ei.includes(i))return null;let o=n.from;if(o!==void 0&&!(typeof o=="number"&&o>=0&&o<=Lo))return null;let s=n.volume;if(s!==void 0&&!(typeof s=="number"&&s>=0&&s<=1))return null;for(let i of["fadein","fadeout"])if(n[i]!==void 0&&!af(n[i],cn,t))return null;if(n.loop!==void 0&&n.loop!==!0)return null;for(let i of ei)n[i]!==void 0&&(r[i]=n[i]);return r}function af(e,t,n){if(typeof e=="number")return Number.isFinite(e)&&e>=0&&e<=t;if(!Dr(e)||!n)return!1;let r=Lr(e);if(!r||Pr(r.count,r.unit)!==e)return!1;let o=ft(e,n);return o!==void 0&&o<=t}function A_(e){return typeof e=="number"&&e>=0&&e<=cn}function $_(e,t){return e==null?rr:typeof e=="string"&&Tr.includes(e)?e:(t.push({severity:"error",code:"unknown-kind",message:`Unknown kind ${JSON.stringify(e)} \u2014 this build reads ${Tr.join(", ")}`}),rr)}function Py(e,t){let n={};if(e===void 0)return n;let r=et(e);if(!r)return t.push({severity:"error",code:"invalid-tokens",message:"`tokens` must be an object"}),n;for(let[o,s]of Object.entries(r))typeof s=="number"||typeof s=="string"?n[o]=s:t.push({severity:"error",code:"invalid-token",message:`Token $${o} must be a number or string`});return n}function O_(e,t){let n={};if(e===void 0)return n;let r=et(e);if(!r)return t.push({severity:"error",code:"invalid-assets",message:"`assets` must be an object"}),n;for(let[o,s]of Object.entries(r)){let i=et(s);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}n[o]={type:i.type,hash:i.hash,bytes:i.bytes,...typeof i.ms=="number"&&i.ms>=0?{ms:i.ms}:{},...yt(i.credit,"credit"),...yt(i.source,"source"),...yt(i.license,"license")}}return n}function T_(e,t){let n={};if(e===void 0)return n;let r=et(e);if(!r)return t.push({severity:"error",code:"invalid-fonts",message:"`fonts` must be an object"}),n;for(let[o,s]of Object.entries(r)){let i=et(s);if(!i||typeof i.family!="string"){t.push({severity:"error",code:"invalid-font",message:`Font "${o}" must be an object with a "family"`});continue}n[o]={family:i.family,...typeof i.fallback=="string"?{fallback:i.fallback}:{},...L_(i.faces,o,t)}}return n}function L_(e,t,n){if(e===void 0)return{};if(!Array.isArray(e))return n.push({severity:"error",code:"invalid-font",message:`Font "${t}" has a "faces" that is not an array`}),{};let r=[];for(let o of e){let s=et(o),i=s?.src,a=s?.asset;if(!s||typeof i=="string"==(typeof a=="string")){n.push({severity:"error",code:"invalid-font-face",message:`A face of font "${t}" needs a "src" or an "asset", and not both`});continue}let d=s.style;r.push({...typeof i=="string"?{src:i}:{asset:a},...typeof s.weight=="number"?{weight:s.weight}:{},...d==="italic"||d==="normal"?{style:d}:{}})}return r.length>0?{faces:r}:{}}function P_(e,t){let n=et(e);if(!n){t.push({severity:"error",code:"invalid-node",message:"Expected a node object"});return}switch(n.type){case"canvas":return Ny(e,t);case"connector":return j_(n,t);case"ellipse":return U_(n,t);case"frame":return D_(n,t);case"group":return N_(n,t);case"image":return V_(n,t);case"instance":return R_(n,t);case"rect":return H_(n,t);case"text":return K_(n,t);case"vector":return z_(n,t);case"video":return B_(n,t);default:t.push({severity:"error",code:"unknown-node-type",message:`Unknown node type ${JSON.stringify(n.type)}`,...typeof n.id=="string"?{nodeId:n.id}:{}});return}}function Ny(e,t){let n=et(e);if(!n){t.push({severity:"error",code:"invalid-node",message:"`root` must be a canvas node"});return}let r=rn(n,dn,t);return{type:"canvas",id:r,...yt(n.name,"name"),...Dy(n,"w",1280,r,t),...Dy(n,"h",720,r,t),...nn(n.background,r,"background",t),children:df(n.children,r,t)}}function Dy(e,t,n,r,o){return e[t]===void 0?{}:{[t]:Ee(e[t],r,t,n,o)}}function D_(e,t){let n=rn(e,"frame",t);return{type:"frame",id:n,...yt(e.name,"name"),x:Ee(e.x,n,"x",0,t),y:Ee(e.y,n,"y",0,t),w:Ee(e.w,n,"w",0,t),h:Ee(e.h,n,"h",0,t),...nn(e.background,n,"background",t),...hr(e,n,t,{align:!0,cap:!0}),...id(e,n,t),...Qo(e.clip,"clip"),...Qo(e.skip,"skip"),...Qo(e.component,"component"),...pr(e,n,t),...xn(e),children:df(e.children,n,t)}}function N_(e,t){let n=rn(e,"group",t);return{type:"group",id:n,...yt(e.name,"name"),...xn(e),children:df(e.children,n,t)}}function R_(e,t){let n=rn(e,"instance",t),r=e.component;(typeof r!="string"||r==="")&&t.push({severity:"error",code:"invalid-value",message:"An instance needs the id of the component it places",nodeId:n,prop:"component"});let o=I_(e.overrides,n,t);return{type:"instance",id:n,...yt(e.name,"name"),component:typeof r=="string"?r:"",x:Ee(e.x,n,"x",0,t),y:Ee(e.y,n,"y",0,t),...Ie(e.w,n,"w",t),...Ie(e.h,n,"h",t),...o===void 0?{}:{overrides:o},...xn(e),children:[]}}function I_(e,t,n){if(e===void 0)return;let r=et(e);if(!r){n.push({severity:"error",code:"invalid-value",message:"`overrides` must be an object of inner id to properties",nodeId:t,prop:"overrides"});return}let o={};for(let[s,i]of Object.entries(r)){let a=et(i);if(!a)continue;let d={};for(let[c,l]of Object.entries(a)){let p=F_(c,l,t,n);p!==void 0&&(d[c]=p)}Object.keys(d).length>0&&(o[s]=d)}return Object.keys(o).length===0?void 0:o}function F_(e,t,n,r){let o=()=>{r.push({severity:"error",code:"invalid-value",message:`${n} overrides ${e} with ${JSON.stringify(t)}, which it cannot hold`,nodeId:n,prop:e})};if(!nr(e))return o();if(e==="content")return typeof t=="string"||Array.isArray(t)&&t.every(d=>typeof d=="string"||typeof d=="object"&&d!==null&&typeof d.text=="string")?Iy(t,n,r):o();let s=Ja(e);if(s===void 0)return o();if(s==="numberValue")return Fy(t)??o();if(s==="stringValue")return typeof t!="string"?o():t.startsWith("=")?_t(t.slice(1)):t;if(s==="boolean")return typeof t=="boolean"?t:o();if(s==="number")return typeof t=="number"&&Number.isFinite(t)?t:o();if(typeof t!="string")return o();let i=Qe(JSON.stringify(t),s);return"error"in i?o():i.value}function df(e,t,n){let r=[];if(Array.isArray(e))for(let o of e){let s=P_(o,n);s&&r.push(s)}else e!==void 0&&n.push({severity:"error",code:"invalid-children",message:"`children` must be an array",nodeId:t});return r}function B_(e,t){let n=rn(e,"video",t),r=e.fit,o=nn(e.src,n,"src",t);return{type:"video",id:n,...yt(e.name,"name"),x:Ee(e.x,n,"x",0,t),y:Ee(e.y,n,"y",0,t),w:Ee(e.w,n,"w",160,t),h:Ee(e.h,n,"h",90,t),...Ie(e.rotation,n,"rotation",t),src:o.src??"",...Zt.includes(r)?{fit:r}:{},...rf(e.start,n,"start",t),...rf(e.end,n,"end",t),...rf(e.poster,n,"poster",t),...Qo(e.muted,"muted"),...Qo(e.loop,"loop"),...Ry(e,n,t),...hr(e,n,t,{align:!0,cap:!0}),...id(e,n,t),...Ie(e.opacity,n,"opacity",t),...pr(e,n,t),...xn(e)}}function V_(e,t){let n=rn(e,"image",t),r=e.fit,o=nn(e.src,n,"src",t);return{type:"image",id:n,...yt(e.name,"name"),x:Ee(e.x,n,"x",0,t),y:Ee(e.y,n,"y",0,t),w:Ee(e.w,n,"w",100,t),h:Ee(e.h,n,"h",100,t),...Ie(e.rotation,n,"rotation",t),src:o.src??"",...Zt.includes(r)?{fit:r}:{},...Ry(e,n,t),...hr(e,n,t,{align:!0,cap:!0}),...id(e,n,t),...Ie(e.opacity,n,"opacity",t),...pr(e,n,t),...xn(e)}}function Ry(e,t,n){let r=e.mask;return r===void 0?{}:typeof r=="string"&&r!==""?{mask:r}:(n.push({severity:"error",code:"invalid-value",message:`${t}: mask must be the id of a rect, ellipse or vector`,nodeId:t,prop:"mask"}),{})}function H_(e,t){let n=rn(e,"rect",t);return{type:"rect",id:n,...yt(e.name,"name"),x:Ee(e.x,n,"x",0,t),y:Ee(e.y,n,"y",0,t),w:Ee(e.w,n,"w",100,t),h:Ee(e.h,n,"h",100,t),...Ie(e.rotation,n,"rotation",t),...nn(e.fill,n,"fill",t),...hr(e,n,t,{align:!0,cap:!0}),...id(e,n,t),...Ie(e.opacity,n,"opacity",t),...pr(e,n,t),...xn(e)}}function U_(e,t){let n=rn(e,"ellipse",t);return{type:"ellipse",id:n,...yt(e.name,"name"),x:Ee(e.x,n,"x",0,t),y:Ee(e.y,n,"y",0,t),w:Ee(e.w,n,"w",100,t),h:Ee(e.h,n,"h",100,t),...Ie(e.rotation,n,"rotation",t),...nn(e.fill,n,"fill",t),...hr(e,n,t,{align:!0,cap:!0}),...Ie(e.opacity,n,"opacity",t),...pr(e,n,t),...xn(e)}}function z_(e,t){let n=rn(e,"vector",t);return{type:"vector",id:n,...yt(e.name,"name"),x:Ee(e.x,n,"x",0,t),y:Ee(e.y,n,"y",0,t),w:Ee(e.w,n,"w",100,t),h:Ee(e.h,n,"h",100,t),...Ie(e.rotation,n,"rotation",t),...yt(e.view,"view"),d:typeof e.d=="string"?e.d:"",...nn(e.fill,n,"fill",t),...hr(e,n,t,{align:!0,cap:!1}),...Ie(e.opacity,n,"opacity",t),...tn(e.rule,Ar,n,"rule",t),...tn(e.cap,tr,n,"cap",t),...tn(e.join,$r,n,"join",t),...pr(e,n,t),...xn(e)}}function j_(e,t){let n=rn(e,"connector",t);return{type:"connector",id:n,...yt(e.name,"name"),x1:Ee(e.x1??0,n,"x1",0,t),y1:Ee(e.y1??0,n,"y1",0,t),x2:Ee(e.x2??0,n,"x2",0,t),y2:Ee(e.y2??0,n,"y2",0,t),...tn(e.route,Hr,n,"route",t),...tn(e.start,ur,n,"start",t),...tn(e.end,ur,n,"end",t),...hr(e,n,t,{align:!1,cap:!0}),...Ie(e.opacity,n,"opacity",t),...pr(e,n,t),...xn(e)}}function K_(e,t){let n=rn(e,"text",t);return{type:"text",id:n,...yt(e.name,"name"),x:Ee(e.x,n,"x",0,t),y:Ee(e.y,n,"y",0,t),w:Ee(e.w,n,"w",200,t),h:Ee(e.h,n,"h",40,t),...Ie(e.rotation,n,"rotation",t),content:Iy(e.content,n,t),...nn(e.font,n,"font",t),...Ie(e.size,n,"size",t),...Ie(e.weight,n,"weight",t),...Ie(e.lineHeight,n,"lineHeight",t),...Ie(e.letterSpacing,n,"letterSpacing",t),...tn(e.align,Qn,n,"align",t),...tn(e.valign,er,n,"valign",t),...Qo(e.italic,"italic"),...nn(e.fill,n,"fill",t),...hr(e,n,t,{align:!1,cap:!1}),...Ie(e.opacity,n,"opacity",t),...pr(e,n,t),...xn(e)}}function Iy(e,t,n){if(e===void 0)return"";if(typeof e=="string")return e;if(!Array.isArray(e))return n.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 r=[];for(let o of e){if(typeof o=="string"){r.push(o);continue}let s=et(o);if(!s||typeof s.text!="string"){n.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}r.push({text:s.text,...Rn(s,"font","string"),...Rn(s,"size","number"),...Rn(s,"weight","number"),...Rn(s,"italic","boolean"),...Rn(s,"underline","boolean"),...Rn(s,"strike","boolean"),...Rn(s,"fill","string"),...Rn(s,"letterSpacing","number"),...Rn(s,"link","string")})}return r}function Rn(e,t,n){let r=e[t];return typeof r!==n?{}:n==="number"&&!Number.isFinite(r)?{}:{[t]:r}}function pr(e,t,n){return{...tn(e.blend,Cr,t,"blend",n),...nn(e.shadow,t,"shadow",n),...Ie(e.blur,t,"blur",n),...Aa(e.type)?Ie(e.backdrop,t,"backdrop",n):of(e,"backdrop",t,n)}}function hr(e,t,n,r){return{...nn(e.stroke,t,"stroke",n),...Ie(e.strokeWidth,t,"strokeWidth",n),...G_(e.dash,t,n),...r.align?tn(e.strokeAlign,Ur,t,"strokeAlign",n):of(e,"strokeAlign",t,n),...r.cap?tn(e.cap,tr,t,"cap",n):e.type==="vector"?{}:of(e,"cap",t,n)}}function of(e,t,n,r){return e[t]===void 0?{}:(r.push({severity:"error",code:"invalid-value",message:`${n}: ${String(e.type)} has no property "${t}"`,nodeId:n,prop:t}),{})}function G_(e,t,n){if(e===void 0)return{};let r=typeof e=="string"?zr(e):{error:'expected text like "6 4"'};return"dash"in r?{dash:Ho(r.dash)}:(n.push({severity:"error",code:"invalid-value",message:`${t}: dash \u2014 ${r.error}`,nodeId:t,prop:"dash"}),{})}function id(e,t,n){return Object.assign({},...Cn.map(r=>Ie(e[r],t,r,n)))}function xn(e){return{...e.hidden===!0?{hidden:!0}:{},...e.locked===!0?{locked:!0}:{}}}function Qo(e,t){return typeof e=="boolean"?{[t]:e}:{}}function rf(e,t,n,r){return e===void 0?{}:typeof e=="number"&&Number.isFinite(e)&&e>=0?{[n]:e}:(r.push({severity:"error",code:"invalid-value",message:`Expected milliseconds into the clip (0 or more) for ${n}, got ${JSON.stringify(e)}`,nodeId:t,prop:n}),{})}function tn(e,t,n,r,o){return e===void 0?{}:typeof e=="string"&&t.includes(e)?{[r]:e}:(o.push({severity:"error",code:"invalid-value",message:`Expected one of ${t.join(", ")} for ${r}, got ${JSON.stringify(e)}`,nodeId:n,prop:r}),{})}function rn(e,t,n){let r=e.id;return typeof r=="string"&&r.length>0?r:(n.push({severity:"error",code:"missing-id",message:`Node is missing an id; using "${t}"`}),t)}function Ee(e,t,n,r,o){let s=Fy(e);return s!==void 0?s:(o.push({severity:"error",code:"invalid-value",message:`Expected a number or expression for ${n}, got ${JSON.stringify(e)}`,nodeId:t,prop:n}),r)}function Fy(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e.startsWith("="))return _t(e.slice(1))}function Ie(e,t,n,r){return e===void 0?{}:{[n]:Ee(e,t,n,0,r)}}function nn(e,t,n,r){return e===void 0?{}:typeof e=="string"?{[n]:e.startsWith("=")?_t(e.slice(1)):e}:(r.push({severity:"error",code:"invalid-value",message:`Expected a string for ${n}, got ${JSON.stringify(e)}`,nodeId:t,prop:n}),{})}function yt(e,t){return typeof e=="string"?{[t]:e}:{}}function q_(e,t){let n=new Set,r=o=>{n.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}),n.add(o.id),me(o)&&o.children.forEach(r)};r(e)}function et(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:void 0}var By=1500,uf=5e3,Vy=1200,Hy=800,Uy=600,zy=800,jy={letter:30,word:80,children:100},ki=.04,Si=.85,cf=1.06,ad=[.2,0,0,1],dd=[.4,0,1,1],ud=[.4,0,.2,1],Ky=[.34,1.56,.64,1],W_={out:ad,in:dd,inout:ud,linear:null,spring:Ky};function lf(e,t){let n=e.motion?.[t],r=n?.w!==void 0||n?.h!==void 0?X_(e,t,n):void 0,o=en(n),s=o?{tempo:o}:{},i=fl(n,e.assets);if(!n||!Ln(e).has(t))return{page:t,length:ft(n?.length,o,uf),beats:[],camera:!1,steps:[],...r?{size:r}:{},...s,clips:i};let a=Ut(e),d=[],c=[],l,p=new Map;for(let[b,w]of n.lines.entries()){if(a.get(w.id)!==t||w.camera!==!0&&w.enter===void 0&&w.exit===void 0&&w.emphasis===void 0)continue;let k=z(e.root,w.id);if(!k)continue;let _=G=>G===void 0?void 0:p.get(G),M;w.at!==void 0?M=ft(w.at,o,0):w.with!==void 0&&_(w.with)?M=_(w.with).start:w.after!==void 0&&_(w.after)?M=_(w.after).end:w.together===!0?M=l?.start??0:M=l?.end??0,M+=ft(w.delay,o,0);let R;if(w.on!==void 0&&o){let G=al(M,w.on,o);G!==M&&(R=M),M=G}w.step===!0&&c.push(M);let B=w.camera===!0?"camera":w.enter!==void 0?"enter":w.exit!==void 0?"exit":"emphasis",D=w.enter??w.exit??w.emphasis,V=Y_(w,D,o),T=B==="camera"||B==="emphasis"?void 0:J_(w,k),O=T===void 0?1:Math.max(1,Gy(k,T)),j=O>1&&T!==void 0?ft(w.stagger,o,jy[T]):0,$=M+(O-1)*j+V,P=w.ease??(B==="enter"?"out":B==="exit"?"in":"inout");d.push({index:b,line:w,kind:B,...R===void 0?{}:{asked:R},...D===void 0?{}:{effect:D},start:M,end:$,duration:V,ease:P,pieces:O,stagger:j,...T===void 0||O===1?{}:{split:T}});let C=$;if(B==="enter"&&w.hold!==void 0&&w.enter!=="count"){let G=$+ft(w.hold,o,0);C=G+V,d.push({index:b,line:w,kind:"exit",...D===void 0?{}:{effect:D},start:G,end:C,duration:V,ease:"in",pieces:1,stagger:0})}l={start:M,end:C},w.camera!==!0&&p.set(w.id,l)}let m=Math.max(0,...d.map(b=>b.end)),g=ft(n.length,o,d.length===0?uf:m+By);return{page:t,length:g,beats:d,camera:d.some(b=>b.kind==="camera"),steps:c,...r?{size:r}:{},...s,clips:i}}function X_(e,t,n){let r=n.w,o=n.h;if(r!==void 0&&o!==void 0)return{w:r,h:o};let s=z(e.root,t),i=s&&"w"in s&&typeof s.w=="number"?s.w:void 0,a=s&&"h"in s&&typeof s.h=="number"?s.h:void 0;if(r!==void 0)return{w:r,h:i&&a?Math.round(r*a/i):r};if(o!==void 0)return{w:i&&a?Math.round(o*i/a):o,h:o}}function Y_(e,t,n){return t==="cut"?0:e.duration!==void 0?ft(e.duration,n,si):e.camera===!0?zy:e.emphasis!==void 0?Uy:t==="count"?Vy:t==="draw"?Hy:si}function J_(e,t){if(e.by!==void 0){if(t.type!=="text")return;let n=t.rotation;return n!==void 0&&n!==0?void 0:e.by}if(e.stagger!==void 0&&te(t).length>0)return"children"}function Gy(e,t){return t==="children"?te(e).length:e.type!=="text"?1:t==="word"?ff(ir(e.content)).length:qy(ir(e.content)).length}function ff(e){return e.split(/\s+/).filter(t=>t!=="")}function qy(e){return[...new Intl.Segmenter(void 0,{granularity:"grapheme"}).segment(e)].map(n=>n.segment).filter(n=>n.trim()!=="")}function cd(e,t){if(t<=0)return 0;if(t>=1)return 1;let n=W_[e];return n===null?t:Z_(n,t)}function Z_(e,t){let[n,r,o,s]=e,i=(l,p,m)=>3*l*m*(1-m)**2+3*p*m*m*(1-m)+m**3,a=0,d=1,c=t;for(let l=0;l<40;l++){c=(a+d)/2;let p=i(n,o,c);if(Math.abs(p-t)<1e-7)break;p<t?a=c:d=c}return i(r,s,c)}function pf(e){let t=/-?\d{1,3}(?:,\d{3})+(?:\.\d+)?|-?\d+(?:\.\d+)?/.exec(e);if(!t)return;let n=t[0],r=n.includes(",")?",":"",o=n.replaceAll(",",""),s=o.includes(".")?o.split(".")[1].length:0;return{before:e.slice(0,t.index),value:Number(o),decimals:s,grouping:r,after:e.slice(t.index+n.length)}}function hf(e,t){let n=Math.abs(t).toFixed(e.decimals),[r,o]=n.split("."),s=e.grouping===""?r:r.replace(/\B(?=(\d{3})+(?!\d))/g,e.grouping),i=t<0&&Number(n)!==0?"-":"";return`${e.before}${i}${s}${o===void 0?"":`.${o}`}${e.after}`}var Wy=1200,Xy=3.5;function Yy(e){return Math.max(Wy,Math.round(ff(e).length/Xy*1e3))}function mf(e){let t=[];for(let n of Object.keys(e.motion??{})){let r=e.motion?.[n];if(!Nr(r)||!Ln(e).has(n))continue;let o=lf(e,n);t.push(...Q_(e,n,o));for(let i of o.beats)i.start>o.length&&t.push({severity:"warning",code:"motion-after-length",message:`motion ${n}: ${i.line.camera===!0?"camera ":""}${i.line.id} starts at ${Qs(i.start)}, after the video ends at ${Qs(o.length)}`,nodeId:i.line.id});let s=new Map;for(let i of o.beats)if(i.kind==="enter"&&!s.has(i.line.id))s.set(i.line.id,{from:i.start,to:o.length});else if(i.kind==="exit"){let a=s.get(i.line.id);s.set(i.line.id,{from:a?.from??0,to:i.start})}for(let[i,{from:a,to:d}]of s){let c=z(e.root,i);if(c?.type!=="text")continue;let l=ir(c.content),p=Yy(l);d-a<p&&t.push({severity:"warning",code:"video-text-brief",message:`motion ${n}: ${i} is on screen for ${Qs(d-a)}; "${eE(l)}" takes about ${p} ms to read`,nodeId:i})}}return t}function Q_(e,t,n){let r=e.motion?.[t]?.music,o=n.clips[0];if(!r||!o)return[];let s=(m,g)=>({severity:"warning",code:m,message:`motion ${t}: ${g}`,nodeId:t}),i=m=>`${(m/1e3).toFixed(2)} s`,a=e.assets[r.asset];if(!a)return[s("music-missing",`${r.asset} has no file yet, so the video is silent. Add it with vd_add_asset (a URL), or the person drops a track on the canvas`)];if(!a.type.startsWith("audio/"))return[s("music-not-audio",`music ${r.asset} is ${a.type}, not a sound`)];let d=[],c=o.from;a.ms!==void 0&&c>=a.ms?d.push(s("music-from-past-end",`from=${c} is past the end of ${r.asset}, which is ${i(a.ms)} long`)):a.ms!==void 0&&!o.loop&&a.ms-c<n.length-dl&&d.push(s("music-short",`${r.asset} runs out at ${i(a.ms-c)} and the video at ${i(n.length)}: add loop, or set length=`));let l=a.ms!==void 0&&a.ms>0?a.bytes*8/a.ms:void 0,p=2*(n.length+c)*ul/1e3;return l!==void 0&&l>cl?d.push(s("audio-heavy",`${r.asset} is ${Math.round(l)} kbps: re-encode it as a 128 kbps MP3 or M4A, about 1 MB a minute`)):a.bytes>p&&d.push(s("audio-heavy",`${r.asset} is ${(a.bytes/1e6).toFixed(1)} MB for ${i(n.length)} of video: trim it to the part the video uses, as a 128 kbps MP3 or M4A`)),d}function eE(e){return e.length>40?`${e.slice(0,37)}\u2026`:e}function es(e){let t=e.trim();if(t===""||t==="none")return{shadows:[]};let n=[];for(let r of tE(t)){let o=nE(r.trim()),s=o.filter(b=>b.toLowerCase()==="inset").length;if(s>1)return{error:`"${r.trim()}" says inset more than once`};let i=o[0]?.toLowerCase()==="inset",a=o[o.length-1]?.toLowerCase()==="inset";if(s===1&&!i&&!a)return{error:`"${r.trim()}" needs inset first or last, as CSS writes it`};s===1&&(o=i?o.slice(1):o.slice(0,-1));let d=[],c=[];for(let b of o){let w=/^(-?\d*\.?\d+)(px)?$/.exec(b);w&&c.length===0?d.push(Number(w[1])):c.push(b)}if(d.length<2||d.length>4)return{error:`"${r.trim()}" needs x, y, then optional blur and spread`};if(c.length!==1)return{error:`"${r.trim()}" needs one colour after its numbers`};let[l=0,p=0,m=0,g=0]=d;if(m<0)return{error:"A shadow cannot have a negative blur"};n.push({x:l,y:p,blur:m,spread:g,colour:c[0],...s?{inset:!0}:{}})}return{shadows:n}}function tE(e){let t=[],n=0,r=0;for(let o=0;o<e.length;o+=1){let s=e[o];s==="("?n+=1:s===")"?n=Math.max(0,n-1):s===","&&n===0&&(t.push(e.slice(r,o)),r=o+1)}return t.push(e.slice(r)),t}function nE(e){let t=[],n=0,r="";for(let o of e){if(o==="("&&(n+=1),o===")"&&(n=Math.max(0,n-1)),/\s/.test(o)&&n===0){r!==""&&t.push(r),r="";continue}r+=o}return r!==""&&t.push(r),t}var ld=["video/mp4","video/webm"];function xf(e){return ld.includes(e.type)}function gf(e,t){return e.end===void 0?t:t===void 0?e.end:Math.min(e.end,t)}function yf(e,t){let n=e.start??0,r=gf(e,t),o=e.poster??n;return r===void 0?Math.max(o,n):rE(o,n,Jy(n,r))}function bf(e,t,n){let r=e.start??0,o=gf(e,t),s=Math.max(n,0);if(o===void 0||o<=r)return r+s;let i=o-r;return s<i?r+s:e.loop===!0?r+s%i:Jy(r,o)}function Jy(e,t){return Math.max(e,t-1)}function rE(e,t,n){return Math.min(Math.max(e,t),n)}var vf=["x","y","w","h","left","right","top","bottom","cx","cy"];function Gr(e){return vf.includes(e)}var wf=["parent","prev","next","self","root"];function kf(e){return wf.includes(e)}var pt=class extends Error{position;constructor(t,n){super(t),this.position=n,this.name="ExprSyntaxError"}},e0=/[A-Za-z_]/,Sf=/[A-Za-z0-9_]/;function _f(e){let t=[],n=0,r=()=>{if(!e0.test(e[n]??""))throw new pt(`Expected a name at position ${n}`,n);let i=n;for(;n<e.length&&Sf.test(e[n]??"");)n++;return e.slice(i,n)},o=()=>{if(!Sf.test(e[n]??""))throw new pt(`Expected a name at position ${n}`,n);let i=n;for(;n<e.length&&Sf.test(e[n]??"");)n++;return e.slice(i,n)},s=()=>{let i=[r()];for(;e[n]===".";)n++,i.push(o());return i};for(;n<e.length;){let i=e[n]??"";if(/\s/.test(i)){n++;continue}if(/[0-9]/.test(i)){let a=n;for(;n<e.length&&/[0-9]/.test(e[n]??"");)n++;if(e[n]==="."&&/[0-9]/.test(e[n+1]??""))for(n++;n<e.length&&/[0-9]/.test(e[n]??"");)n++;let d=e.slice(a,n),c=Number(d);if(!Number.isFinite(c))throw new pt(`Bad number "${d}"`,a);e[n]==="%"?(n++,t.push({type:"percent",value:c})):t.push({type:"number",value:c});continue}if(i==="$"){n++,t.push({type:"token",name:r()});continue}if(i==="@"){n++,t.push({type:"ref",path:s()});continue}if(e0.test(i)){t.push({type:"word",path:s()});continue}if("+-*/()".includes(i)){n++,t.push({type:"op",value:i});continue}throw new pt(`Unexpected character "${i}" at position ${n}`,n)}return t.push({type:"eof"}),t}var lE={"+":1,"-":1,"*":2,"/":2};function tt(e){try{let t=_f(e),n=new Ef(t),r=n.parseBinary(0);return n.expectEof(),{ok:!0,ast:r}}catch(t){if(t instanceof pt)return{ok:!1,message:t.message};throw t}}var Ef=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 pt("Unexpected trailing input",this.index)}parseBinary(t){let n=this.parseUnary();for(;;){let r=this.peek();if(r.type!=="op"||!fE(r.value))break;let o=lE[r.value];if(o<t)break;this.next();let s=this.parseBinary(o+1);n={kind:"binary",op:r.value,left:n,right:s}}return n}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 pt(`@${t.path.join(".")} needs an edge, for example @${t.path.join(".")}.right`,this.index);return{kind:"nodeRef",path:t.path}}case"word":{let[n,r,...o]=t.path;if(n===void 0||!kf(n))throw new pt(`Unknown name "${t.path.join(".")}". Use $token for a token or @id.edge for a node.`,this.index);if(r===void 0||!Gr(r)||o.length>0)throw new pt(`${n} needs an edge, for example ${n}.w`,this.index);return{kind:"relRef",word:n,edge:r}}case"op":{if(t.value==="("){let n=this.parseBinary(0),r=this.next();if(r.type!=="op"||r.value!==")")throw new pt("Missing closing parenthesis",this.index);return n}throw new pt(`Unexpected "${t.value}"`,this.index)}case"eof":throw new pt("Unexpected end of expression",this.index)}}};function fE(e){return e==="+"||e==="-"||e==="*"||e==="/"}var t0={"+":1,"-":1,"*":2,"/":2},n0=3,pE=4;function hE(e){return e.kind==="binary"?t0[e.op]??1:e.kind==="unary"?n0:pE}function qr(e){return fd(e,0)}function fd(e,t){let n=mE(e);return hE(e)<t?`(${n})`:n}function mE(e){switch(e.kind){case"number":return K(e.value);case"percent":return`${K(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}${fd(e.operand,n0)}`;case"binary":{let t=t0[e.op]??1;return`${fd(e.left,t)} ${e.op} ${fd(e.right,t+1)}`}}}function Mf(e){return e.slice(0,-1).join(".")}function gn(e,t){switch(e.kind){case"nodeRef":{let n=e.path[e.path.length-1],r=t(Mf(e.path));return n===void 0||r===void 0?e:{kind:"nodeRef",path:[...r.split("."),n]}}case"unary":return{...e,operand:gn(e.operand,t)};case"binary":return{...e,left:gn(e.left,t),right:gn(e.right,t)};default:return e}}function on(e){let t=new Set,n=new Set,r=o=>{switch(o.kind){case"nodeRef":t.add(Mf(o.path));return;case"token":n.add(o.name);return;case"unary":r(o.operand);return;case"binary":r(o.left),r(o.right);return;default:return}};return r(e),{nodes:[...t],tokens:[...n]}}function nt(e,t){return`${e} ${t}`}function Cf(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 pd(e,t,n,r,o){switch(e){case"x":case"left":return t;case"y":case"top":return n;case"w":return r;case"h":return o;case"right":return t+r;case"bottom":return n+o;case"cx":return t+r/2;case"cy":return n+o/2}}function Af(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 $f(e,t,n){let r=p=>{let m=[];for(let g=n.parentOf.get(p);g!==void 0;g=n.parentOf.get(g))m.push(g);return m},o=r(e),s=r(t),i=new Set(s),a=o.find(p=>i.has(p)),d=p=>a===void 0?p:p.slice(0,p.indexOf(a)),c=new Map([[e,1]]),l=(p,m)=>{let g=(c.get(p)??0)+m;g===0?c.delete(p):c.set(p,g)};for(let p of d(o))l(p,1);for(let p of d(s))l(p,-1);return c}function Of(e){switch(e){case"right":case"bottom":return 1;case"cx":case"cy":return .5;default:return 0}}function hd(e){if(e==="x"||e==="w"||e==="x1"||e==="x2")return"w";if(e==="y"||e==="h"||e==="y1"||e==="y2")return"h"}function Wr(e){let t=new Map,n=new Map,r=new Map,o=new Map,s=new Map,i=[];de(e.root,(p,m)=>{if(t.has(p.id)||t.set(p.id,p),i.push(p),m){n.set(p.id,m.id);let g=s.get(m.id)??[],b=m.type==="instance"?[m.id,...g]:g;b.length>0&&s.set(p.id,b)}me(p)&&p.children.forEach((g,b)=>{let w=p.children[b-1],k=p.children[b+1];w&&r.set(g.id,w.id),k&&o.set(g.id,k.id)})});let a=new Map;for(let p of i){let m=n.get(p.id);for(;m!==void 0;){let g=t.get(m);if(!g||!Ne(g))break;m=n.get(m)}m!==void 0&&a.set(p.id,m)}let d=new Map,c=new Map,l=p=>{if(me(p)){if(!Ne(p)){let m=r0(p);m.forEach((g,b)=>{let w=m[b-1],k=m[b+1];w&&d.set(g.id,w.id),k&&c.set(g.id,k.id)})}for(let m of p.children)l(m)}};return l(e.root),{rootId:e.root.id,byId:t,parentOf:n,prevOf:r,nextOf:o,layoutParentOf:a,layoutPrevOf:d,layoutNextOf:c,scopeOf:s,order:i}}function r0(e){let t=[];for(let n of e.children)me(n)&&Ne(n)?t.push(...r0(n)):t.push(n);return t}function ts(e,t,n){if(e.kind==="relRef"){let s=xE(e.word,t,n);return s===void 0?{ok:!1,message:`${t} has no ${e.word}`}:{ok:!0,nodeId:s,edge:e.edge}}let r=e.path[e.path.length-1]??"",o=e.path.slice(0,-1).join(".");if(!Gr(r))return{ok:!1,message:`"${r}" is not an edge of @${o}`};for(let s of n.scopeOf.get(t)??[]){let i=`${s}.${o}`;if(n.byId.has(i))return{ok:!0,nodeId:i,edge:r};let a=n.byId.get(s);if(a?.type==="instance"&&a.component===o)return{ok:!0,nodeId:s,edge:r}}return n.byId.has(o)?{ok:!0,nodeId:o,edge:r}:{ok:!1,message:`No node @${o}`}}function xE(e,t,n){switch(e){case"self":return t;case"root":return n.rootId;case"parent":return n.layoutParentOf.get(t);case"prev":return n.layoutPrevOf.get(t);case"next":return n.layoutNextOf.get(t)}}var i0=[["start","x1","y1"],["end","x2","y2"]];function In(e){return gE(Wr(e))}function gE(e){let t=new Map;for(let n of e.order){if(n.type!=="connector")continue;let r={},o={},s={};for(let[i,a,d]of i0){let c=Tf(n[a],n.id,e),l=Tf(n[d],n.id,e),p=new Set([...c,...l]),[m]=p;if(p.size===1&&c.length>0&&l.length>0&&m!==void 0){r[i]=m;let g=o0(n[a]),b=o0(n[d]),w=yE(g,b);w!==void 0&&(o[i]=w);let k=w==="x"?g:w==="y"?b:void 0;(k==="left"||k==="right"||k==="top"||k==="bottom")&&(s[i]=k)}}(r.start!==void 0||r.end!==void 0)&&t.set(n.id,{...r,sides:o,named:s})}return t}function a0(e){let t=[];for(let n of e.order){if(n.type!=="connector")continue;let r=s0(n.id,e),o=new Set;for(let[,s,i]of i0)for(let a of[s,i])for(let d of Tf(n[a],n.id,e)){if(d===n.id||o.has(d))continue;let c=e.byId.get(d)?.type;if(c==="group"||c==="canvas"){o.add(d),t.push({severity:"warning",code:"connector-no-box",message:`${n.id} follows @${d}, a ${c} with no box of its own, which reads as 0 \u2014 attach to a shape inside it`,nodeId:n.id,prop:a});continue}s0(d,e)!==r&&(o.add(d),t.push({severity:"warning",code:"connector-other-page",message:`${n.id} follows @${d}, which is on another page, so the line leaves its own \u2014 attach to a node on the same page`,nodeId:n.id,prop:a}))}}return t}function o0(e){if(!ve(e))return;let t=tt(e.expr);if(!t.ok)return;let n=r=>{switch(r.kind){case"nodeRef":{let o=r.path[r.path.length-1];return o!==void 0&&Gr(o)?o:void 0}case"relRef":return r.edge;case"unary":return n(r.operand);case"binary":return n(r.left)??n(r.right);case"number":case"token":case"percent":return}};return n(t.ast)}function yE(e,t){let n=e==="left"||e==="right",r=t==="top"||t==="bottom";if(n&&!r)return"x";if(r&&!n)return"y"}function Tf(e,t,n){if(!ve(e))return[];let r=tt(e.expr);if(!r.ok)return[];let o=[],s=i=>{switch(i.kind){case"nodeRef":case"relRef":{if(i.kind==="relRef"&&(i.word==="self"||i.word==="parent"))return;let a=ts(i,t,n);a.ok&&!o.includes(a.nodeId)&&o.push(a.nodeId);return}case"unary":s(i.operand);return;case"binary":s(i.left),s(i.right);return;case"number":case"token":case"percent":return}};return s(r.ast),o}function s0(e,t){let n=e;for(;n!==void 0;){let r=t.parentOf.get(n);if(r===t.rootId)return t.byId.get(n)?.type==="frame"?n:void 0;n=r}}function Pe(e){let t=[...Gs(e.root),...Jl(e.root)],n=Wr(e),r=d0(n),o=new Set;u0(r,t),c0(r,e,n,o,t),t.push(...a0(n));let s=wE(r);kE(r,s,t);let i=SE(r,s,e,n,o,t);return{nodes:EE(e.root,i,r,t),problems:t}}function Xr(e){let t=Wr(e),n=d0(t),r=[];u0(n,r),c0(n,e,t,new Set,r);let o=new Map;for(let s of n.values())for(let i of s.deps){let a=o.get(i),d={nodeId:s.nodeId,prop:s.prop};a?a.push(d):o.set(i,[d])}return o}function d0(e){let t=new Map;for(let n of e.order){n.type==="connector"&&bE(n.id,t);let r=n;for(let o of Vt(n)){let s=r[o]??vE(n,o,e);s!==void 0&&t.set(nt(n.id,o),{nodeId:n.id,prop:o,value:s,deps:[]})}}return t}function bE(e,t){let n={x:["x1","x2",Math.min],y:["y1","y2",Math.min],w:["x1","x2",(r,o)=>Math.abs(o-r)],h:["y1","y2",(r,o)=>Math.abs(o-r)]};for(let[r,[o,s,i]]of Object.entries(n))t.set(nt(e,r),{nodeId:e,prop:r,value:0,deps:[nt(e,o),nt(e,s)],derive:a=>i(a(o),a(s))})}function vE(e,t,n){if(!(e.type!=="instance"||t!=="w"&&t!=="h")&&n.byId.get(e.component)?.type==="frame")return _t(`@${e.component}.${t}`)}function u0(e,t){for(let n of e.values()){if(!ve(n.value))continue;let r=tt(n.value.expr);if(r.ok){n.ast=r.ast;continue}t.push({severity:"error",code:"expression-syntax",message:r.message,nodeId:n.nodeId,prop:n.prop})}}function c0(e,t,n,r,o){for(let s of e.values()){if(!s.ast||s.derive)continue;let i=new Set,a=d=>{switch(d.kind){case"number":return;case"token":{let c=Ze(t)[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:s.nodeId,prop:s.prop});return}case"percent":{let c=hd(s.prop);if(!c)return;let l=n.layoutParentOf.get(s.nodeId),p=l===void 0?void 0:nt(l,c);if(p===void 0||!e.has(p)){o.push({severity:"error",code:"percent-without-parent",message:`${s.nodeId}.${s.prop} uses a percentage but has no parent to measure against`,nodeId:s.nodeId,prop:s.prop});return}i.add(p);return}case"nodeRef":case"relRef":{let c=ts(d,s.nodeId,n);if(!c.ok){r.add(d),o.push({severity:"error",code:"unknown-reference",message:c.message,nodeId:s.nodeId,prop:s.prop});return}let l=m=>{e.has(m)&&i.add(m)},p=Af(c.edge);if(!p){for(let m of Cf(c.edge))l(nt(c.nodeId,m));return}for(let m of $f(c.nodeId,s.nodeId,n).keys())l(nt(m,p));Of(c.edge)!==0&&l(nt(c.nodeId,p==="x"?"w":"h"));return}case"unary":a(d.operand);return;case"binary":a(d.left),a(d.right);return}};a(s.ast),s.deps=[...i]}}function wE(e){let t=new Map,n=new Map;for(let[s,i]of e){t.set(s,i.deps.length);for(let a of i.deps){let d=n.get(a);d?d.push(s):n.set(a,[s])}}let r=[];for(let[s,i]of t)i===0&&r.push(s);let o=[];for(let s=0;s<r.length;s++){let i=r[s];o.push(i);for(let a of n.get(i)??[]){let d=(t.get(a)??0)-1;t.set(a,d),d===0&&r.push(a)}}return o}function kE(e,t,n){if(t.length===e.size)return;let r=new Set(t);for(let[o,s]of e)r.has(o)||n.push({severity:"error",code:"cycle",message:`${s.nodeId}.${s.prop} is part of a dependency cycle`,nodeId:s.nodeId,prop:s.prop})}function SE(e,t,n,r,o,s){let i=new Map,a=(d,c)=>i.get(nt(d,c))??0;for(let d of t){let c=e.get(d);if(c){if(c.derive){i.set(d,c.derive(l=>a(c.nodeId,l)));continue}if(!ve(c.value)){i.set(d,c.value);continue}if(!c.ast){i.set(d,0);continue}i.set(d,l0(c.ast,c,n,r,o,s,a))}}return i}function l0(e,t,n,r,o,s,i){let a=d=>l0(d,t,n,r,o,s,i);switch(e.kind){case"number":return e.value;case"token":{let d=Ze(n)[e.name];return typeof d=="number"?d:0}case"percent":{let d=hd(t.prop);if(!d)return e.value/100;let c=r.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=ts(e,t.nodeId,r);if(!d.ok)return 0;let c=Af(d.edge);if(!c)return pd(d.edge,i(d.nodeId,"x"),i(d.nodeId,"y"),i(d.nodeId,"w"),i(d.nodeId,"h"));let l=Of(d.edge)*i(d.nodeId,c==="x"?"w":"h");for(let[p,m]of $f(d.nodeId,t.nodeId,r))l+=m*i(p,c);return l}case"unary":{let d=a(e.operand);return e.op==="-"?-d:d}case"binary":{let d=a(e.left),c=a(e.right);if(e.op==="/"&&c===0)return s.push({severity:"error",code:"divide-by-zero",message:`${t.nodeId}.${t.prop} divides by zero`,nodeId:t.nodeId,prop:t.prop}),0;let l=_E(e.op,d,c);return Number.isFinite(l)?l:(s.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 _E(e,t,n){switch(e){case"+":return t+n;case"-":return t-n;case"*":return t*n;case"/":return t/n}}function EE(e,t,n,r){let o=new Map,s=(a,d)=>t.get(nt(a,d))??0,i=(a,d,c)=>{let l=s(a.id,"x"),p=s(a.id,"y"),m=s(a.id,"w"),g=s(a.id,"h"),b={};for(let _ of Vt(a)){let M=nt(a.id,_);n.has(M)&&(b[_]=t.get(M)??0)}(m<0||g<0)&&r.push({severity:"warning",code:"negative-size",message:`${a.id} resolved to a negative size`,nodeId:a.id});let w=d+l,k=c+p;if(o.set(a.id,{id:a.id,type:a.type,x:l,y:p,w:m,h:g,left:l,top:p,right:l+m,bottom:p+g,cx:l+m/2,cy:p+g/2,absX:w,absY:k,values:b}),me(a))for(let _ of a.children)i(_,w,k)};return i(e,0,0),o}function md(e){if(!ve(e))return{kind:"literal",value:e};let t=tt(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 f0="round";function Pt(e){if(e.kind==="frame")return;let t=e.stroke,n=e.strokeWidth??0;if(t===void 0||!(n>0))return;let r=e.dash??[];return e.kind==="text"?{paint:t,width:n,dash:r,align:"center",cap:"butt",join:f0}:{paint:t,width:n,dash:r,align:e.kind==="connector"?"center":e.strokeAlign??"center",cap:e.cap??"butt",join:e.kind==="vector"?e.join:"miter"}}function Lf(e){if(e.mask!==void 0)return{contours:e.mask.contours,rule:e.mask.rule};let t=n=>Be(n,r=>({x:e.x+r.x,y:e.y+r.y}));switch(e.kind){case"text":case"connector":return;case"vector":return{contours:e.contours,rule:e.rule};case"ellipse":return e.w>0&&e.h>0?{contours:t(Vr(e.w,e.h)),rule:"nonzero"}:void 0;case"rect":case"image":case"border":case"frame":return e.w>0&&e.h>0?{contours:t(Dn(e.w,e.h,e.radii)),rule:"nonzero"}:void 0}}function gd(e,t){if(t.align==="center"||e.mask!==void 0||e.kind!=="rect"&&e.kind!=="ellipse"&&e.kind!=="image"&&e.kind!=="border")return;let n=(t.align==="inside"?-t.width:t.width)/2,r=e.w+n*2,o=e.h+n*2;if(!(r>0&&o>0))return;let s=e.kind==="ellipse"?{tl:0,tr:0,br:0,bl:0}:{tl:xd(e.radii.tl,n),tr:xd(e.radii.tr,n),br:xd(e.radii.br,n),bl:xd(e.radii.bl,n)};return{x:e.x-n,y:e.y-n,w:r,h:o,radii:s}}function xd(e,t){return e<=0?0:Math.max(0,e+t)}function Pf(e,t){return t.align!=="center"&&t.dash.length>0&&gd(e,t)===void 0}function Df(e){let t=[];for(let n of e)for(let r=0;r<zt(n);r+=1){let o=dr(jt(n,r),1);for(let s=1;s<o.length;s+=1)if(t.push([o[s-1],o[s]]),t.length>ME)return!1}for(let n=0;n<t.length;n+=1)for(let r=n+1;r<t.length;r+=1)if(CE(t[n],t[r]))return!0;return!1}var ME=600;function CE(e,t){let n=(d,c,l)=>(c.x-d.x)*(l.y-d.y)-(c.y-d.y)*(l.x-d.x),r=n(t[0],t[1],e[0]),o=n(t[0],t[1],e[1]),s=n(e[0],e[1],t[0]),i=n(e[0],e[1],t[1]),a=1e-9;return(r>a&&o<-a||r<-a&&o>a)&&(s>a&&i<-a||s<-a&&i>a)}function Nf(e){return e.width*2*4+1}function _i(e,t,n){let r=t+1,o=e.reduce((d,c)=>d+c,0);if(e.length===0||!(o>0)||t*n/o>AE)return{array:[r,r],offset:r*(1-n)};let s=t*n,i=[],a=0;for(let d=0;a<s;d+=1){let c=e[d%e.length],l=Math.min(c,s-a);i.push(l),a+=l}return i.length%2===1?i.push(r):i.length>0?i[i.length-1]=i[i.length-1]+r:i.push(0,r),{array:i,offset:0}}var AE=2e3;var h0="system-ui, -apple-system, Segoe UI, Roboto, sans-serif",yd=16,bd=400,m0=1.2,vd="#0F172A";function Fn(){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 Rf(e,t){if(e===void 0)return h0;let n=t[e];return n?n.fallback?`${p0(n.family)}, ${n.fallback}`:p0(n.family):e}function p0(e){return/^[A-Za-z][A-Za-z0-9 -]*$/.test(e)?e:JSON.stringify(e)}function If(e,t,n,r){let o={family:Rf(t.font,n),size:t.size,weight:t.weight,italic:t.italic,underline:!1,strike:!1,fill:r(t.fill),letterSpacing:t.letterSpacing},s=typeof e=="string"?[e]:e,i=[];for(let a of s){if(typeof a=="string"){a.length>0&&i.push({text:a,style:o});continue}let d=a;d.text.length!==0&&i.push({text:d.text,style:{family:d.font===void 0?o.family:Rf(d.font,n),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:r(d.fill),letterSpacing:d.letterSpacing??o.letterSpacing,...d.link!==void 0&&Qt(d.link)?{link:d.link}:{}}})}return i}function $E(e,t){let n=[];for(let r of e)for(let o of r.text.split(/(\n)/))if(o!==""){if(o===`
44
+ `){let s=n[n.length-1];s&&!s.hardBreak?n[n.length-1]={...s,hardBreak:!0}:n.push({text:"",style:r.style,w:0,hardBreak:!0,glued:!1});continue}for(let s of o.match(/\S+\s*|\s+/g)??[]){let i=n[n.length-1];n.push({text:s,style:r.style,w:t.advance(s,r.style),hardBreak:!1,glued:i!==void 0&&!i.hardBreak&&/\S$/.test(i.text)&&/^\S/.test(s)})}}return n}function OE(e,t,n){let r=[...e.text],o=[],s="";for(let i of r){let a=s+i;if(s!==""&&n.advance(a,e.style)>t){o.push({text:s,style:e.style,w:n.advance(s,e.style),hardBreak:!1,glued:o.length===0&&e.glued}),s=i;continue}s=a}return s!==""&&o.push({text:s,style:e.style,w:n.advance(s,e.style),hardBreak:e.hardBreak,glued:o.length===0&&e.glued}),o.length>0?o:[e]}function x0(e,t){let{width:n,measure:r}=t,o=$E(r.itemize?e.flatMap(c=>r.itemize?.(c)??[c]):e,r);if(o.length===0){let c=e[0]?.style,l=c?t.lineHeight*c.size:0;return{lines:c?[LE(c,t.lineHeight)]:[],width:0,height:l}}let s=[],i=[],a=0,d=()=>{s.push(i),i=[],a=0};for(let c=0;c<o.length;){let l=c+1;for(;o[l]?.glued;)l+=1;let p=o.slice(c,l);c=l,p.length>1&&i.length>0&&a+TE(p,r)>n&&d();for(let m of p){let g=i.length===0&&m.w>n&&n>0?OE(m,n,r):[m];for(let b of g){let w=b.text.trimEnd(),k=w===b.text?b.w:r.advance(w,b.style);i.length>0&&a+k>n&&d(),i.push(b),a+=b.w,b.hardBreak&&d()}}}return i.length>0&&s.push(i),PE(s,t)}function TE(e,t){let n=e[e.length-1],r=n.text.trimEnd(),o=r===n.text?n.w:t.advance(r,n.style);return e.slice(0,-1).reduce((s,i)=>s+i.w,0)+o}function LE(e,t){let n=t*e.size;return{y:0,h:n,baseline:n*.8,w:0,spans:[],style:e}}function PE(e,t){let n=[],r=0,o=0;return e.forEach((s,i)=>{let a=s.map(O=>O.style.size),d=Math.max(...a,0),c=t.lineHeight*d,l=s.map(O=>t.measure.metrics(O.style)),p=Math.max(...l.map(O=>O.ascent),0),m=Math.max(...l.map(O=>O.descent),0),g=r+(c-(p+m))/2+p,b=DE(s,t.measure),w=b.reduce((O,j)=>O+j.w,0);o=Math.max(o,w);let k=i===e.length-1||(s[s.length-1]?.hardBreak??!1),_=b.filter((O,j)=>j>0&&!O.glued).length,M=t.align==="justify"&&!k&&_>0,R=Math.max(0,t.width-w),B=t.align==="center"?R/2:t.align==="right"?R:0,D=M?R/_:0,V=[],T=B;b.forEach((O,j)=>{V.push({text:O.text,style:O.style,x:T,w:O.w});let $=b[j+1];T+=O.w+($&&!$.glued?D:0)}),n.push({y:r,h:c,baseline:g,w,spans:NE(V,M)}),r+=c}),{lines:n,width:o,height:r}}function DE(e,t){let n=[...e];for(;n.length>0;){let r=n[n.length-1],o=r.text.trimEnd();if(o===r.text)break;if(o===""){n.pop();continue}n[n.length-1]={...r,text:o,w:t.advance(o,r.style)};break}return n}function NE(e,t){if(t)return[...e];let n=[];for(let r of e){let o=n[n.length-1];if(o&&g0(o.style,r.style)&&Math.abs(o.x+o.w-r.x)<.01){n[n.length-1]={...o,text:o.text+r.text,w:o.w+r.w};continue}n.push(r)}return n}function g0(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 Ff(e,t,n,r,o,s){let i={size:t.size??yd,weight:t.weight??bd,lineHeight:t.lineHeight??m0,letterSpacing:t.letterSpacing??0,italic:e.italic??!1,font:typeof e.font=="string"?e.font:void 0,fill:typeof e.fill=="string"?e.fill:vd},a=If(e.content,i,r,o),d=If(" ",i,r,o).map(c=>({...c,text:""}));return x0(a.length>0?a:d,{width:n,align:e.align??"left",lineHeight:i.lineHeight,measure:s})}function Bf(e,t,n){let r=t-n;return e.valign==="middle"?r/2:e.valign==="bottom"?r:0}function Hf(e){let t=lr({x:e.x,y:e.y,w:e.w,h:e.h},e.rotation),n=Kt(e.mask.contours);if(!n)return t;let r=Vf(t,n),o={...r,w:Math.max(0,r.w),h:Math.max(0,r.h)},s=Zr(e);if(!(s>0))return o;let i=Math.min(o.w>0?o.x:1/0,n.x-s),a=Math.min(o.h>0?o.y:1/0,n.y-s),d=Math.max(o.x+o.w,n.x+n.w+s),c=Math.max(o.y+o.h,n.y+n.h+s);return{x:i,y:a,w:d-i,h:c-a}}var Mi=250;function ns(e){return e!==void 0&&e>0?Math.ceil(e*1.5):0}function Uf(e,t){let n=e.indexOf(t);if(n<=0||t.backdrop===void 0)return[];let r=t.backdrop.page,o=0;if(r!==void 0)for(let s=n-1;s>=0;s-=1){let i=e[s];if(i.id===r&&i.kind==="frame"){o=s;break}}return e.slice(o,n).map(s=>{if(s.backdrop===void 0)return s;let{backdrop:i,...a}=s;return a})}function zf(e){return e.lines.filter(t=>t.spans.length>0)}function rs(e){switch(e.kind){case"text":{let t=zf(e),n=Math.max(e.w,...t.map(s=>s.w)),r=Math.max(e.y+e.h,...t.map(s=>s.y+s.h)),o=Zr(e);return{x:e.x-o,y:e.y-o,w:n+o*2,h:r-e.y+o*2}}case"connector":{let t=Ga(e.strokeWidth)/2+e.strokeWidth;return{x:e.x-t,y:e.y-t,w:e.w+t*2,h:e.h+t*2}}case"vector":{let t=Kt(e.contours)??{x:e.x,y:e.y,w:e.w,h:e.h},n=e.stroke!==void 0?e.strokeWidth*2:0;return{x:t.x-n,y:t.y-n,w:t.w+n*2,h:t.h+n*2}}case"rect":case"ellipse":case"image":case"border":{let t=Zr(e);return{x:e.x-t,y:e.y-t,w:e.w+t*2,h:e.h+t*2}}case"frame":return{x:e.x,y:e.y,w:e.w,h:e.h}}}function Zr(e){if(e.kind==="frame"||e.stroke===void 0)return 0;let t=e.strokeWidth??0;if(!(t>0))return 0;let n=e.kind==="text"||e.kind==="connector"?void 0:e.strokeAlign;return n==="inside"?0:n==="outside"?t:t/2}function Sd(e,t,n){let r=e.x,o=e.y,s=e.x+e.w,i=e.y+e.h;for(let d of t){if(d.inset)continue;let c=d.spread+d.blur;r=Math.min(r,e.x+d.x-c),o=Math.min(o,e.y+d.y-c),s=Math.max(s,e.x+e.w+d.x+c),i=Math.max(i,e.y+e.h+d.y+c)}let a=ns(n);return{x:r-a,y:o-a,w:s-r+a*2,h:i-o+a*2}}var w0="vd-paint-";var Ci="#CBD5E1",k0="#FFFFFF";function Ai(e,t,n={}){let r=[...t.problems],o=[],s=[],i=n.measure??Fn(),a=E0(Ze(e),r,e,n.resolveAsset),d=a.paint,c=new Map,l=lt(e.root),p=Ye(e.root),m=T=>{if(!st(T))return{};let O=p.links.get(T.id);if(O===void 0)return{};let j=VE(e,t,O);return j?{mask:j}:(r.push({severity:"warning",code:"mask-empty",message:`${T.id}: its mask ${O} has no area, so it is drawn unmasked \u2014 give the shape a size`,nodeId:T.id,prop:"mask"}),{})},g,b=new Map,w=new Map,k=new Map,_=new Map;de(e.root,(T,O)=>{if(O&&w.set(T.id,O.id),"hidden"in T&&T.hidden===!0)return!1;let j=O?c.get(O.id):void 0,$=t.nodes.get(T.id);if(!$||p.shapes.has(T.id)){c.set(T.id,j);return}let P=T.type==="frame"?T:T.type==="instance"?l.get(T.component):void 0;if(T.type==="instance"&&!P){c.set(T.id,j);return}let C=P&&T.type==="instance"?t.nodes.get(P.id):$,G=b0(C?.values.blur,T.id,"blur",r);G>0&&k.set(T.id,G);let ee=b0(C?.values.backdrop,T.id,"backdrop",r);if(ee>0&&_.set(T.id,ee),P){T.type==="frame"&&T.skip===!0&&O!==e.root&&r.push({severity:"warning",code:"skip-not-a-page",message:`${T.id}: skip only applies to a page, a frame at the top level`,nodeId:T.id,prop:"skip"});let oe={x:$.absX,y:$.absY,w:Math.max(0,$.w),h:Math.max(0,$.h)},Se=T.type==="frame"?$:t.nodes.get(P.id),be=$o(Se?.values??{},oe.w,oe.h);c.set(T.id,P.clip===!0?T.id:j),P.clip===!0&&s.push({id:T.id,...oe,...Jt(be)?{}:{radii:be},parent:j}),o.push({kind:"frame",id:T.id,...oe,background:d(P.background,T.id,"background",oe,oe),radii:be,clip:j,blend:P.blend??"normal",shadows:mr(P.shadow,T.id,Ze(e),r),rotation:0});let v=d(P.stroke,T.id,"stroke",oe),N=Se?.values.strokeWidth??0;v!==void 0&&N>0&&b.set(T.id,{kind:"border",id:T.id,...oe,radii:be,stroke:v,strokeWidth:N,...Jr(P,T.id,r,!0),...P.cap===void 0?{}:{cap:P.cap},clip:j,blend:"normal",shadows:[],rotation:0});return}if(c.set(T.id,j),T.type==="text"){o.push(S0(T,$,e,i,r,j,d));return}if(T.type==="video"){let oe=wd($),Se=JE(T,e,n,r);o.push({kind:"image",id:T.id,...oe,href:Se.href,fit:T.fit??"fill",radii:$o($.values,oe.w,oe.h),opacity:Yr($.values.opacity??1),...y0(T,$.values,oe,d,r),clip:j,blend:T.blend??"normal",shadows:mr(T.shadow,T.id,Ze(e),r),rotation:$.values.rotation??0,...Se.video===void 0?{}:{video:Se.video},...Se.href===void 0&&Se.video?.clip===void 0?{}:m(T)});return}if(T.type==="image"){let oe=wd($),Se=ZE(T,e,n.resolveAsset,r);o.push({kind:"image",id:T.id,...oe,href:Se,fit:T.fit??"fill",radii:$o($.values,oe.w,oe.h),opacity:Yr($.values.opacity??1),...y0(T,$.values,oe,d,r),clip:j,blend:T.blend??"normal",shadows:mr(T.shadow,T.id,Ze(e),r),rotation:$.values.rotation??0,...Se===void 0?{}:m(T)});return}if(T.type==="ellipse"){let oe=wd($);o.push({kind:"ellipse",id:T.id,...oe,fill:d(T.fill,T.id,"fill",oe,oe)??Ci,stroke:d(T.stroke,T.id,"stroke",oe),strokeWidth:$.values.strokeWidth??0,...Jr(T,T.id,r,!0),...T.cap===void 0?{}:{cap:T.cap},opacity:Yr($.values.opacity??1),clip:j,blend:T.blend??"normal",shadows:mr(T.shadow,T.id,Ze(e),r),rotation:$.values.rotation??0});return}if(T.type==="connector"){g??=In(e),o.push(qE(T,$,g.get(T.id)?.sides??{},r,j,d,mr(T.shadow,T.id,Ze(e),r)));return}if(T.type==="vector"){o.push(GE(T,$,r,j,d,mr(T.shadow,T.id,Ze(e),r)));return}if(T.type!=="rect")return;let fe=wd($);o.push({kind:"rect",id:T.id,...fe,fill:d(T.fill,T.id,"fill",fe,fe)??Ci,stroke:d(T.stroke,T.id,"stroke",fe),strokeWidth:$.values.strokeWidth??0,...Jr(T,T.id,r,!0),...T.cap===void 0?{}:{cap:T.cap},radii:$o($.values,fe.w,fe.h),opacity:Yr($.values.opacity??1),clip:j,blend:T.blend??"normal",shadows:mr(T.shadow,T.id,Ze(e),r),rotation:$.values.rotation??0})}),b.size>0&&FE(o,b,w),(k.size>0||_.size>0)&&BE(o,{blurs:k,backdrops:_,parents:w,root:e.root.id}),IE(o,T=>w.get(T)===e.root.id,r);let M=t.nodes.get(e.root.id),R=e.root.w!==void 0&&e.root.h!==void 0,B=R?{x:0,y:0,width:Math.max(0,M?.w??0),height:Math.max(0,M?.h??0)}:HE(o,s),D={x:B.x,y:B.y,w:B.width,h:B.height},V=d(e.root.background,e.root.id,"background",D,D);return{...B,background:R?V??k0:V,items:o,clips:s,gradients:a.gradients,problems:r}}function Jr(e,t,n,r){let o=Al(e.dash);e.dash!==void 0&&o.length===0&&n.push({severity:"error",code:"invalid-dash",message:`${t}: dash ${JSON.stringify(e.dash)} is not a dash array like "6 4", so the stroke is solid`,nodeId:t,prop:"dash"});let s=e.strokeAlign,i;return(s==="inside"||s==="outside")&&(r?i=s:e.stroke!==void 0&&n.push({severity:"warning",code:"stroke-align-open",message:`${t}: an ${s} stroke needs a closed path, so it is drawn centred \u2014 close every contour with Z, or set strokeAlign=center`,nodeId:t,prop:"strokeAlign"})),{...o.length===0?{}:{dash:o},...i===void 0?{}:{strokeAlign:i}}}function y0(e,t,n,r,o){let s=r(e.stroke,e.id,"stroke",n),i=t.strokeWidth??0;return s===void 0||!(i>0)?{}:{stroke:s,strokeWidth:i,...Jr(e,e.id,o,!0),...e.cap===void 0?{}:{cap:e.cap}}}function RE(e,t,n,r,o){let s=r(e.stroke,e.id,"stroke",n),i=t.strokeWidth??0;if(s===void 0||!(i>0))return{};let{dash:a}=Jr(e,e.id,o,!1);return{stroke:s,strokeWidth:i,...a===void 0?{}:{dash:a}}}function IE(e,t,n){let r=(o,s,i)=>{n.push({severity:"warning",code:s,message:`${o}: ${i}`,nodeId:o,prop:"strokeAlign"})};for(let o of e){let s=Pt(o);if(!s||(o.kind==="border"&&s.align!=="inside"&&t(o.id)&&r(o.id,"stroke-page-edge",`the page's own edge cuts off its ${s.align==="outside"?"outside":"centred"} border in every export \u2014 use strokeAlign=inside`),s.align==="center"))continue;Pf(o,s)&&r(o.id,"stroke-align-dash",`a dashed ${s.align} stroke on a path or a mask is cut along the outline, so its dashes' ends are not exact \u2014 use strokeAlign=center for exact dashes`);let i=o.mask?.contours??(o.kind==="vector"?o.contours:void 0);i&&Df(i)&&r(o.id,"stroke-align-overlap",`its outline crosses itself, so an ${s.align} stroke draws across the fill \u2014 make a clean outline with merge union first, or use strokeAlign=center`)}}function FE(e,t,n){let r=new Map;e.forEach((i,a)=>{for(let d=i.id;d!==void 0;d=n.get(d))t.has(d)&&r.set(d,a)});let o=i=>{let a=0;for(let d=n.get(i);d!==void 0;d=n.get(d))a+=1;return a},s=[...t.values()].map(i=>({border:i,after:r.get(i.id)??-1,depth:o(i.id)})).filter(i=>i.after>=0).sort((i,a)=>a.after-i.after||i.depth-a.depth);for(let{border:i,after:a}of s)e.splice(a+1,0,i)}function b0(e,t,n,r){return e===void 0||e===0?0:e>0?e>Mi?(r.push({severity:"warning",code:"invalid-blur",message:`${t}: ${n} ${String(e)} is more than ${Mi}, so it is drawn at ${Mi}`,nodeId:t,prop:n}),Mi):e:(r.push({severity:"warning",code:"invalid-blur",message:`${t}: ${n} ${String(e)} is not a blur, so it is drawn unblurred \u2014 write 0 or more`,nodeId:t,prop:n}),0)}function v0(e){return Math.sqrt(e.reduce((t,n)=>t+n*n,0))}function BE(e,t){let{blurs:n,backdrops:r,parents:o,root:s}=t,i=new Map;for(let a of e)a.kind==="frame"&&i.set(a.id,a);e.forEach((a,d)=>{let c=a.kind==="frame"||a.kind==="border",l=c?0:n.get(a.id)??0,p=[];for(let R=c?a.id:o.get(a.id);R!==void 0;R=o.get(R)){let B=i.get(R);B&&(n.get(R)??0)>0&&p.push(B)}let m=p.every(R=>R.clip===a.clip),g=v0(m?[l,...p.map(R=>n.get(R.id)??0)]:[l]),b=p[p.length-1],w=m||b===void 0?void 0:{id:b.id,blur:v0(p.map(R=>n.get(R.id)??0)),clip:b.clip,x:b.x,y:b.y,w:b.w,h:b.h},k=r.get(a.id)??0,_=k>0&&(a.kind==="rect"||a.kind==="ellipse"||a.kind==="vector"||a.kind==="frame");if(!(g>0)&&!w&&!_)return;let M;for(let R=a.id;R!==void 0;R=o.get(R))o.get(R)===s&&i.has(R)&&(M=R);e[d]={...a,...g>0?{blur:g}:{},...w?{veil:w}:{},..._?{backdrop:{blur:k,page:M}}:{}}})}function VE(e,t,n){let r=z(e.root,n),o=t.nodes.get(n);if(!r||!o)return;let s=bi(r,{x:o.absX,y:o.absY,w:o.w,h:o.h},o.values),i=s?Kt(s.contours):void 0;if(!(!s||!i||!(i.w>0)||!(i.h>0)))return{id:n,d:ze(s.contours),contours:s.contours,rule:s.rule}}function jf(e,t,n,r,o={}){let s=z(e.root,n.id),i=t.nodes.get(n.id);if(s?.type!=="text"||!i)return;let a=[],d=E0(Ze(e),a,e,o.resolveAsset);return{...S0({...s,content:r},i,e,o.measure??Fn(),a,n.clip,d.paint),...n.blur===void 0?{}:{blur:n.blur},...n.veil===void 0?{}:{veil:n.veil}}}function HE(e,t){let n=new Map;for(let a of t){let d=a.parent===void 0?void 0:n.get(a.parent);n.set(a.id,d?Vf(a,d):a)}let r=1/0,o=1/0,s=-1/0,i=-1/0;for(let a of e){let d=a.kind==="text"&&zf(a).length>0?Math.max(a.h,a.height):a.h,c=a.clip===void 0?void 0:n.get(a.clip),l=a.kind==="connector"?rs(a):{x:a.x,y:a.y,w:a.w,h:d},p=lr(Sd(l,a.shadows,a.blur),a.rotation,Re(a)),m=c?Vf(p,c):p;m.w<=0||m.h<=0||(r=Math.min(r,m.x),o=Math.min(o,m.y),s=Math.max(s,m.x+m.w),i=Math.max(i,m.y+m.h))}return Number.isFinite(r)?{x:r,y:o,width:s-r,height:i-o}:{x:0,y:0,width:0,height:0}}function Vf(e,t){let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y);return{x:n,y:r,w:Math.min(e.x+e.w,t.x+t.w)-n,h:Math.min(e.y+e.h,t.y+t.h)-r}}function S0(e,t,n,r,o,s,i){let a=Math.max(0,t.w),d=Math.max(0,t.h),c={x:t.absX,y:t.absY,w:a,h:d},l=Ff(e,t.values,a,n.fonts,g=>i(g,e.id,"fill",c)??vd,r);!l.lines.every(g=>g.spans.length===0)&&l.height>d+.5&&o.push({severity:"warning",code:"text-overflow",message:`${e.id} needs ${Math.ceil(l.height)}px but its height is ${Math.round(d)}px`,nodeId:e.id,prop:"h"}),UE(e,n,o);let m=t.absY+Bf(e,d,l.height);return{kind:"text",id:e.id,x:t.absX,y:t.absY,w:a,h:d,clip:s,blend:e.blend??"normal",shadows:mr(e.shadow,e.id,Ze(n),o),rotation:t.values.rotation??0,opacity:Yr(t.values.opacity??1),...RE(e,t.values,c,i,o),height:l.height,lines:l.lines.map(g=>({y:m+g.y,h:g.h,baseline:m+g.baseline,w:g.w,spans:g.spans.map(b=>({text:b.text,x:t.absX+b.x,y:m+g.baseline,w:b.w,style:b.style})),...g.style?{style:g.style}:{}}))}}function UE(e,t,n){if(typeof e.content!="string")for(let r of e.content){if(typeof r=="string"||r.link===void 0)continue;let o=Qt(r.link);if(!o){n.push({severity:"warning",code:"invalid-link",message:`${e.id}: links go to https:, mailto: or #<frame>, not ${JSON.stringify(r.link)}`,nodeId:e.id,prop:"content"});continue}o.kind==="frame"&&!zE(t,o.id)&&n.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 zE(e,t){let n=!1;return de(e.root,r=>{if(n)return!1;r.id===t&&r.type==="frame"&&(n=!0)}),n}var Ei=new Map,jE=512;function KE(e){let t=Ei.get(e);if(t)return t;let n=ar(e);return Ei.size>=jE&&Ei.delete(Ei.keys().next().value),Ei.set(e,n),n}function GE(e,t,n,r,o,s){let i=Math.max(0,t.w),a=Math.max(0,t.h),d={x:t.absX,y:t.absY,w:i,h:a},{contours:c,error:l}=KE(e.d);l!==void 0&&n.push({severity:"error",code:"bad-path",message:`${e.id}: ${l}`,nodeId:e.id,prop:"d"}),e.view!==void 0&&Ka(e.view)===void 0&&n.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 p=Be(c,Fr(Ir(e.view,i,a),d));return{kind:"vector",id:e.id,...d,d:ze(p),contours:p,fill:o(e.fill,e.id,"fill",d,WE(d,Kt(p)))??Ci,stroke:o(e.stroke,e.id,"stroke",d),strokeWidth:t.values.strokeWidth??0,...Jr(e,e.id,n,c.length>0&&c.every(m=>m.closed)),opacity:Yr(t.values.opacity??1),rule:e.rule??"nonzero",cap:e.cap??"butt",join:e.join??"miter",clip:r,blend:e.blend??"normal",shadows:s,rotation:t.values.rotation??0}}function qE(e,t,n,r,o,s,i){let a=t.absX-t.x,d=t.absY-t.y,c={x1:a+(t.values.x1??0),y1:d+(t.values.y1??0),x2:a+(t.values.x2??0),y2:d+(t.values.y2??0)},l=fi(c),p=Math.max(0,t.values.strokeWidth??li),m=e.route??"straight",g=e.start??"none",b=e.end??"none",w=_l(c,m,g,b,p,n),k=[w.route],{dash:_}=Jr(e,e.id,r,!1);return{kind:"connector",id:e.id,...l,...c,route:m,sides:n,start:g,end:b,d:ze(k),contours:k,filled:{d:ze(w.filled),contours:w.filled},lined:{d:ze(w.lined),contours:w.lined},stroke:s(e.stroke,e.id,"stroke",l)??ci,strokeWidth:p,..._===void 0?{}:{dash:_},opacity:Yr(t.values.opacity??1),cap:e.cap??"butt",clip:o,blend:e.blend??"normal",shadows:i,rotation:0}}function _0(e,t,n,r,o){if(e===void 0)return;if(ve(e)){o.push({severity:"warning",code:"expression-not-supported",message:`Expressions are not supported for ${r} yet; grammar v0 is numeric only`,nodeId:n,prop:r});return}let s=t[e];if(s===void 0)return e;if(typeof s=="string")return s;o.push({severity:"error",code:"token-not-a-colour",message:`Token $${e} is a number, not a colour`,nodeId:n,prop:r})}function WE(e,t){if(!t)return e;let n=Math.min(e.x,t.x),r=Math.min(e.y,t.y);return{x:n,y:r,w:Math.max(e.x+e.w,t.x+t.w)-n,h:Math.max(e.y+e.h,t.y+t.h)-r}}function wd(e){return{x:e.absX,y:e.absY,w:Math.max(0,e.w),h:Math.max(0,e.h)}}function E0(e,t,n,r){let o=[],s=[],i=new Map,a=(m,g,b)=>{let w=[...i.keys()].filter(_=>_.startsWith(`${g}\0${b}\0`)).length,k=`${w0}${g}-${b}${w===0?"":`-${w+1}`}`;return i.set(m,k),k},d=(m,g,b)=>{t.some(k=>k.code==="invalid-paint"&&k.nodeId===m&&k.message===b)||t.push({severity:"error",code:"invalid-paint",message:b,nodeId:m,prop:g})},c=(m,g,b,w)=>{let k=wi(m);if("error"in k)return d(g,b,`${g}: ${k.error}`);if(k.kind==="solid")return m;let _=`${g}\0${b}\0${m}`,M=i.get(_);if(M!==void 0)return`url(#${M})`;let R=a(_,g,b),B=Zl(k.stops).map(D=>({offset:D.at,colour:M0(D.colour,e,g,b,t)}));return o.push(YE(k,R,w,XE(B))),`url(#${R})`},l=(m,g,b,w)=>{let k=n.assets[m.asset];if(!k){t.push({severity:"warning",code:"fill-asset-missing",message:`${g}: ${b} names image ${JSON.stringify(m.asset)}, which is not one of the document's assets, so that layer is not drawn \u2014 add the picture with vd_add_asset, or take the layer out`,nodeId:g,prop:b});return}let _=r?.(k,m.asset);if(_===void 0){t.push({severity:"warning",code:"unresolved-asset",message:`The bytes for asset "${m.asset}" are not available here`,nodeId:g,prop:b});return}return{kind:"image",href:_,fit:m.fit,...w}};return{paint:(m,g,b,w,k)=>{let _=_0(m,e,g,b,t);if(_===void 0)return;if(/url\(/i.test(_))return d(g,b,`${g}: a paint is a colour or a gradient, not ${JSON.stringify(_)}`);let M=mn(_);if(M.length===1&&!vi(_))return c(_,g,b,w);if(k===void 0)return d(g,b,`${g}: ${b} takes one colour or gradient, not ${M.length>1?"a list of paints":"a picture"}; only a shape's fill and a frame's background take layers`);let R=[];for(let O of M){let j=e[O],$=typeof j=="string"?j:O;if(/url\(/i.test($)){d(g,b,`${g}: a paint is a colour or a gradient, not ${JSON.stringify($)}`);continue}for(let P of mn($)){let C=Xo(P);if("error"in C){d(g,b,`${g}: ${C.error}`);continue}let G=C.kind==="image"?l(C,g,b,w):(ee=>ee===void 0?void 0:{kind:"paint",paint:ee})(c(P,g,b,w));G&&R.push(G)}}if(R.length===0)return;let B=R[0];if(R.length===1&&B.kind==="paint")return B.paint;let D=`${g}\0${b}\0${_}\0layers`,V=i.get(D);if(V!==void 0)return`url(#${V})`;let T=a(D,g,b);return s.push({id:T,kind:"layers",...k,layers:[...R].reverse()}),`url(#${T})`},get gradients(){return[...o,...s]}}}function mr(e,t,n,r){let o=_0(e,n,t,"shadow",r);if(o===void 0)return[];let s=es(o);return"error"in s?(r.push({severity:"error",code:"invalid-shadow",message:`${t}: ${s.error}`,nodeId:t,prop:"shadow"}),[]):s.shadows.map(i=>({...i,colour:M0(i.colour,n,t,"shadow",r)}))}function XE(e){return e.map((t,n)=>{if(t.colour.trim().toLowerCase()!=="transparent")return t;let r=[e[n-1],e[n+1]].find(o=>o!==void 0&&o.colour.trim().toLowerCase()!=="transparent");return r===void 0?t:{offset:t.offset,colour:r.colour,opacity:0}})}function M0(e,t,n,r,o){let s=t[e];return s===void 0?e:typeof s=="string"&&!rd(s)?s:(o.push({severity:"error",code:"invalid-paint",message:`${n}: a gradient stop names $${e}, which is not a colour`,nodeId:n,prop:r}),"transparent")}function YE(e,t,n,r){if(e.kind==="linear"){let c=e.angle*Math.PI/180,l=Math.sin(c),p=-Math.cos(c),m=(Math.abs(n.w*l)+Math.abs(n.h*p))/2,g=n.x+n.w/2,b=n.y+n.h/2;return{id:t,kind:"linear",x1:kd(g-l*m),y1:kd(b-p*m),x2:kd(g+l*m),y2:kd(b+p*m),stops:r}}let o=n.x+n.w*e.cx,s=n.y+n.h*e.cy,i={x:Math.max(o-n.x,n.x+n.w-o),y:Math.max(s-n.y,n.y+n.h-s)};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:s,rx:c,ry:c,stops:r}}let a=i.x/i.y,d=Math.hypot(i.x/a,i.y);return{id:t,kind:"radial",cx:o,cy:s,rx:d*a,ry:d,stops:r}}function kd(e){return Math.round(e*1e6)/1e6}function Yr(e){return Math.min(Math.max(e,0),1)}function JE(e,t,n,r){let o=ve(e.src)?void 0:e.src,s=o===void 0?void 0:t.assets[o];if(!s||o===void 0)return r.push({severity:"warning",code:"missing-asset",message:`No clip for ${JSON.stringify(o??e.src)} yet: a video slot waiting for one`,nodeId:e.id,prop:"src"}),{href:void 0};if(!xf(s))return r.push({severity:"error",code:"not-a-video",message:`${e.id}: src=${o} is ${s.type}, not a clip \u2014 a video plays ${ld.join(" or ")}; use an image for a picture`,nodeId:e.id,prop:"src"}),{href:void 0};s.bytes>26214400&&r.push({severity:"warning",code:"large-video",message:`${e.id}: clip ${o} is ${Math.round(s.bytes/1048576)} MB, and every save and every read of this document carries it \u2014 trim it, or keep it under 25 MB`,nodeId:e.id,prop:"src"});let i={...e.start===void 0?{}:{start:e.start},...e.end===void 0?{}:{end:e.end},...e.poster===void 0?{}:{poster:e.poster},...e.loop===void 0?{}:{loop:e.loop}},a=yf(i,s.ms),d=n.resolveAsset?.(s,o),c=n.resolveFrame?.(s,o,a);return d===void 0&&c===void 0&&r.push({severity:"warning",code:"unresolved-clip",message:`The frames of clip "${o}" are not available here, so it draws as a placeholder`,nodeId:e.id,prop:"src"}),{href:c,video:{asset:o,clip:d,at:a,...e.start===void 0?{}:{start:e.start},...e.end===void 0?{}:{end:e.end},loop:e.loop===!0,muted:e.muted===!0,...s.ms===void 0?{}:{ms:s.ms}}}}function ZE(e,t,n,r){let o=ve(e.src)?void 0:e.src,s=o===void 0?void 0:t.assets[o];if(!s){r.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=n?.(s,o);return i===void 0&&r.push({severity:"warning",code:"unresolved-asset",message:`The bytes for asset "${o}" are not available here`,nodeId:e.id,prop:"src"}),i}function QE(e,t){let n=new Map,r=(o,s)=>{n.set(o,[...n.get(o)??[],s])};for(let o of e.beats){if(o.kind==="camera")continue;let s=o.kind;if(o.split==="children"){let i=z(t.root,o.line.id);(i&&"children"in i?i.children:[]).forEach((d,c)=>{r(d.id,{beat:o,kind:s,start:o.start+c*o.stagger})})}else if(o.split!==void 0)for(let i=0;i<o.pieces;i+=1)r(o.line.id,{beat:o,kind:s,start:o.start+i*o.stagger,piece:i});else r(o.line.id,{beat:o,kind:s,start:o.start})}for(let o of n.values())o.sort((s,i)=>s.start-i.start);return n}function eM(e,t){let n=t.nodes.get(e.page);return n?Math.min(n.w,n.h):1e3}function C0(e,t,n,r,o){let s=e[0]?.kind==="enter",i,a,d;for(let c of e){if(c.start>t)break;let l=c.beat.effect,p=c.beat.duration,m=p<=0?1:Math.min(1,(t-c.start)/p),g=m>=1;if(c.kind==="emphasis"){if(s||g){i=void 0;continue}let M=1+(cf-1)*Math.sin(Math.PI*cd(c.beat.ease,m));i=_d(n,M,M,"centre",1);continue}if(g){s=c.kind==="exit",i=void 0,a=void 0,d=void 0;continue}let b=cd(c.beat.ease,m),w=c.kind==="enter"?b:1-b,k=O0(c.kind==="enter"?b:1-b);s=!1,a=void 0,d=void 0;let _=c.beat.line.from;switch(l){case"cut":i=void 0;break;case"fade":i=A0(k);break;case"rise":case"drop":{let M=l==="rise"?1:-1;i={sx:1,sy:1,tx:0,ty:c.kind==="enter"?M*r*(1-b):-M*r*b,opacity:k};break}case"pop":{let M=Si+(1-Si)*w;i=_d(n,M,M,"centre",k);break}case"grow":{let M=typeof _=="string"?_:"bottom",R=Math.max(0,w);i=M==="left"||M==="right"?_d(n,R,1,M,1):_d(n,1,R,M,1);break}case"wipe":{let M=typeof _=="string"?_:"left";a=c.kind==="enter"?T0(n,M,w):tM(n,M,b),i=void 0;break}case"count":{let M=o.text===void 0?void 0:pf(o.text);if(!M){i=A0(k);break}let R=typeof _=="number"?_:0;d=hf(M,R+(M.value-R)*b),i=void 0;break}case"draw":i={sx:1,sy:1,tx:0,ty:0,opacity:1,trace:w,fillOpacity:O0((w-.75)/.25)};break;case"pulse":case void 0:i=void 0;break}}return{hidden:s,pose:i,...a?{reveal:a}:{},...d===void 0?{}:{text:d}}}function A0(e){return{sx:1,sy:1,tx:0,ty:0,opacity:e}}function _d(e,t,n,r,o){let s=r==="left"?e.x:r==="right"?e.x+e.w:e.x+e.w/2,i=r==="top"?e.y:r==="bottom"?e.y+e.h:e.y+e.h/2;return{sx:t,sy:n,tx:s*(1-t),ty:i*(1-n),opacity:o}}function T0(e,t,n){let r=e.w*n,o=e.h*n;switch(t){case"left":return{x:e.x,y:e.y,w:r,h:e.h};case"right":return{x:e.x+e.w-r,y:e.y,w:r,h:e.h};case"top":return{x:e.x,y:e.y,w:e.w,h:o};case"bottom":return{x:e.x,y:e.y+e.h-o,w:e.w,h:o}}}function tM(e,t,n){return T0(e,{left:"right",right:"left",top:"bottom",bottom:"top"}[t],1-n)}function $0(e,t){let n=t.trace??e.trace,r=t.fillOpacity??e.fillOpacity;return{sx:e.sx*t.sx,sy:e.sy*t.sy,tx:e.sx*t.tx+e.tx,ty:e.sy*t.ty+e.ty,opacity:e.opacity*t.opacity,...n===void 0?{}:{trace:n},...r===void 0?{}:{fillOpacity:r}}}function O0(e){return e<0?0:e>1?1:e}function nM(e,t){let n=new Map;de(t.root,(o,s)=>{s&&n.set(o.id,s.id)});let r=new Map;for(let o of e.items){let s=o.kind==="frame"?{x:o.x,y:o.y,w:o.w,h:o.h}:rs(o);for(let i=o.id;i!==void 0;i=n.get(i)){let a=r.get(i);if(r.set(i,a?rM(a,s):s),i===t.root.id)break}}return{parents:n,boxes:r}}function rM(e,t){let n=Math.min(e.x,t.x),r=Math.min(e.y,t.y);return{x:n,y:r,w:Math.max(e.x+e.w,t.x+t.w)-n,h:Math.max(e.y+e.h,t.y+t.h)-r}}function Kf(e,t,n,r){let o=oM(e,t,n,r),s=QE(t,r.doc);if(s.size===0)return o;let{parents:i,boxes:a}=nM(o,r.doc),d=ki*eM(t,r.resolution),c=r.options?.measure??Fn(),l=new Map,p=new Map;for(let[b,w]of s){let k=a.get(b)??{x:0,y:0,w:0,h:0},_=z(r.doc.root,b),M=_?.type==="text"?ir(_.content):void 0,R=w.filter(D=>D.piece===void 0),B=w.find(D=>D.piece!==void 0);if(R.length>0&&l.set(b,C0(R,n,k,d,{...M===void 0?{}:{text:M}})),B&&(B.beat.split==="word"||B.beat.split==="letter")){let D=[];for(let V=0;V<B.beat.pieces;V+=1){let T=w.filter(O=>O.piece===V);D.push(C0(T,n,k,d,{}))}D.some(V=>V.hidden||V.pose!==void 0)&&p.set(b,{split:B.beat.split,moments:D})}}let m=[...o.clips],g=[];for(let b of o.items){let w=[],k;for(let D=b.id;D!==void 0;D=i.get(D)){let V=l.get(D);V&&(w.unshift(V),V.reveal&&!k&&(k={id:D,box:V.reveal}))}if(w.some(D=>D.hidden))continue;let _;for(let D of w)D.pose&&(_=_?$0(_,D.pose):D.pose);let M=b,R=l.get(b.id)?.text;if(R!==void 0&&b.kind==="text"&&(M=jf(r.doc,r.resolution,b,R,r.options)??b),k){let D=`${k.id}~wipe${b.clip===void 0?"":`~${b.clip}`}`;m.some(V=>V.id===D)||m.push({id:D,...k.box,parent:b.clip}),M={...M,clip:D}}let B=p.get(b.id);if(B&&M.kind==="text"){L0(M,B.split,c).forEach((D,V)=>{let T=B.moments[V];if(!T||T.hidden)return;let O=T.pose&&_?$0(_,T.pose):T.pose??_;g.push({...D,part:V,...O?{pose:O}:{}})});continue}g.push(_&&!sM(_)?{...M,pose:_}:M)}return{...o,items:g,clips:m}}function oM(e,t,n,r){if(!e.items.some(d=>d.kind==="image"&&d.video!==void 0))return e;let o=z(r.doc.root,t.page);if(!o)return e;let s=new Set;de(o,d=>{d.type==="video"&&s.add(d.id)});let i=r.options?.resolveFrame,a=e.items.map(d=>{if(d.kind!=="image"||d.video===void 0||!s.has(d.id))return d;let c=d.video,l=bf(c,c.ms,n);if(l===c.at)return d;let p=r.doc.assets[c.asset],m=p===void 0?void 0:i?.(p,c.asset,l);return{...d,href:m??d.href,video:{...c,at:l}}});return{...e,items:a}}function sM(e){return e.sx===1&&e.sy===1&&e.tx===0&&e.ty===0&&e.opacity===1&&e.trace===void 0&&e.fillOpacity===void 0}function L0(e,t,n=Fn()){let r=[],o=new Intl.Segmenter(void 0,{granularity:"grapheme"}),s=!1;for(let i of e.lines){s=!1;for(let a of i.spans){let d=0,c=t==="word"?a.text.split(/(\s+)/).filter(l=>l!==""):[...o.segment(a.text)].map(l=>l.segment);for(let l of c){if(l.trim()==="")s=!1;else{(t==="letter"||!s)&&r.push([]);let m=a.x+n.advance(a.text.slice(0,d),a.style);r.at(-1).push({...a,text:l,x:m,w:n.advance(l,a.style)}),s=!0}d+=l.length}}}return r.map(i=>({...e,lines:e.lines.map(a=>({...a,spans:i.filter(d=>d.y===a.baseline)})).filter(a=>a.spans.length>0)}))}var gr="vd-clip-";function Gf(e){return aM(e,"")}function aM(e,t){let n=e.parent===void 0?"":` clip-path="url(#${ne(t+gr+e.parent)})"`;return`<clipPath id="${ne(t+gr+e.id)}"${n}>${qt(e,e.radii)}</clipPath>`}function qt(e,t,n=[],r=[]){let o=r.map(i=>`${i} `).join(""),s=n.length===0?"":` ${n.join(" ")}`;if(t===void 0||!Ad(t)){let i=t!==void 0&&!Jt(t)?` rx="${K(t.tl)}"`:"";return`<rect ${o}x="${K(e.x)}" y="${K(e.y)}" width="${K(e.w)}" height="${K(e.h)}"${i}${s}/>`}return`<path ${o}d="${Cd(e,t)}"${s}/>`}function Cd(e,t){return ze(Be(Dn(e.w,e.h,t),n=>({x:e.x+n.x,y:e.y+n.y})))}function Ad(e){return!Jt(e)&&!Vc(e)}function qf(e){return dM(e,"")}function dM(e,t){if(e.kind==="layers")return uM(e,t);let n=e.stops.map(o=>`<stop offset="${K(o.offset)}" stop-color="${ne(o.colour)}"${o.opacity===void 0?"":` stop-opacity="${K(o.opacity)}"`}/>`).join(""),r=ne(t+e.id);return e.kind==="linear"?`<linearGradient id="${r}" gradientUnits="userSpaceOnUse" x1="${K(e.x1)}" y1="${K(e.y1)}" x2="${K(e.x2)}" y2="${K(e.y2)}">${n}</linearGradient>`:`<radialGradient id="${r}" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="matrix(${K(e.rx)} 0 0 ${K(e.ry)} ${K(e.cx)} ${K(e.cy)})">${n}</radialGradient>`}function uM(e,t){let n=`x="${K(e.x)}" y="${K(e.y)}" width="${K(e.w)}" height="${K(e.h)}"`,r=e.layers.map(o=>{if(o.kind==="paint"){let s=sn(o.paint,{ids:!1,prefix:t});return`<rect ${n} fill="${ne(s)}"/>`}return`<image href="${ne(o.href)}" x="${K(o.x)}" y="${K(o.y)}" width="${K(o.w)}" height="${K(o.h)}" preserveAspectRatio="${P0[o.fit]}"/>`}).join("");return`<pattern id="${ne(t+e.id)}" patternUnits="userSpaceOnUse" ${n} viewBox="${K(e.x)} ${K(e.y)} ${K(e.w)} ${K(e.h)}">${r}</pattern>`}var P0={cover:"xMidYMid slice",contain:"xMidYMid meet",fill:"none"},cM="#94A3B8";function Bn(e,t){let n=e.clip===void 0?[]:[`clip-path="url(#${ne(t+gr+e.clip)})"`];return e.rotation!==0&&n.push(`transform="${os(e)}"`),eo(e)&&n.push(`filter="url(#${ne(t+Qr+e.id)})"`),e.blend!=="normal"&&n.push(`style="mix-blend-mode:${e.blend}"`),n}var Qr="vd-shadow-";function eo(e){return e.shadows.length>0||(e.blur??0)>0}function Wf(e,t="all"){return fM(e,t,"")}var lM=20;function fM(e,t,n){let r=e.mask===void 0?rs(e):Hf({...e,mask:e.mask}),o=t==="insets"?[]:e.shadows.filter(m=>!m.inset),s=t==="drops"?[]:e.shadows.filter(m=>m.inset),i=t==="all"?e.blur??0:0,a=Sd(r,o,i);for(let m of s){let g=Math.abs(m.x)+Math.abs(m.y)+ns(m.blur)+Math.abs(m.spread);a=pM(a,{x:r.x-g,y:r.y-g,w:r.w+g*2,h:r.h+g*2})}let d=2,c=[];o.forEach((m,g)=>{let b=`s${g}`,w="SourceAlpha";m.spread!==0&&(c.push(`<feMorphology in="${w}" operator="${m.spread>0?"dilate":"erode"}" radius="${K(Math.abs(m.spread))}" result="${b}m"/>`),w=`${b}m`),m.blur>0&&(c.push(`<feGaussianBlur in="${w}" stdDeviation="${K(m.blur/2)}" result="${b}b"/>`),w=`${b}b`),c.push(`<feOffset in="${w}" dx="${K(m.x)}" dy="${K(m.y)}" result="${b}o"/>`,`<feFlood flood-color="${ne(m.colour)}" result="${b}c"/>`,`<feComposite in="${b}c" in2="${b}o" operator="in" result="${b}"/>`)}),s.length>0&&c.push(`<feComponentTransfer in="SourceAlpha" result="solid"><feFuncA type="linear" slope="${lM}"/></feComponentTransfer>`),s.forEach((m,g)=>{let b=`i${g}`,w="solid";m.spread!==0&&(c.push(`<feMorphology in="${w}" operator="${m.spread>0?"erode":"dilate"}" radius="${K(Math.abs(m.spread))}" result="${b}m"/>`),w=`${b}m`),c.push(`<feComponentTransfer in="${w}" result="${b}n"><feFuncA type="table" tableValues="1 0"/></feComponentTransfer>`),w=`${b}n`,m.blur>0&&(c.push(`<feGaussianBlur in="${w}" stdDeviation="${K(m.blur/2)}" result="${b}b"/>`),w=`${b}b`),c.push(`<feOffset in="${w}" dx="${K(m.x)}" dy="${K(m.y)}" result="${b}o"/>`,`<feFlood flood-color="${ne(m.colour)}" result="${b}c"/>`,`<feComposite in="${b}c" in2="${b}o" operator="in" result="${b}k"/>`,`<feComposite in="${b}k" in2="solid" operator="in" result="${b}"/>`)});let l=[...o.map((m,g)=>`<feMergeNode in="s${o.length-1-g}"/>`),...t==="all"?['<feMergeNode in="SourceGraphic"/>']:[],...s.map((m,g)=>`<feMergeNode in="i${s.length-1-g}"/>`)].join(""),p=i>0?`<feMerge result="layer">${l}</feMerge><feGaussianBlur in="layer" stdDeviation="${K(i/2)}"/>`:`<feMerge>${l}</feMerge>`;return`<filter id="${ne(n+Qr+e.id)}" filterUnits="userSpaceOnUse" x="${K(a.x-d)}" y="${K(a.y-d)}" width="${K(a.w+d*2)}" height="${K(a.h+d*2)}" color-interpolation-filters="sRGB">`+c.join("")+p+"</filter>"}function pM(e,t){let n=Math.min(e.x,t.x),r=Math.min(e.y,t.y);return{x:n,y:r,w:Math.max(e.x+e.w,t.x+t.w)-n,h:Math.max(e.y+e.h,t.y+t.h)-r}}var $i="vd-veil-";function Xf(e){let t=new Map;for(let n of e)n.veil&&t.set(n.veil.id,n.veil);return[...t.values()]}function Yf(e){return hM(e,"")}function hM(e,t){let n=ns(e.blur)+2;return`<filter id="${ne(t+$i+e.id)}" filterUnits="userSpaceOnUse" x="${K(e.x-n)}" y="${K(e.y-n)}" width="${K(e.w+n*2)}" height="${K(e.h+n*2)}" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="${K(e.blur/2)}"/></filter>`}var D0="vd-backdrop-";function Jf(e,t){return mM(e,t,{ids:!1,prefix:""})}function mM(e,t,n){let r=t.backdrop;if(r===void 0)return"";let o={ids:!1,prefix:n.prefix},s=Uf(e.items,t).map(w=>N0(w,o)).filter(w=>w!=="");if(r.page===void 0&&e.background!==void 0&&s.unshift(`<rect x="${K(e.x)}" y="${K(e.y)}" width="${K(e.width)}" height="${K(e.height)}" fill="${ne(sn(e.background,n))}"/>`),s.length===0)return"";let i=xM(t);if(i==="")return"";let a=ne(n.prefix+D0+t.id),d=t.pose,c=lr({x:t.x,y:t.y,w:t.w,h:t.h},t.rotation,Re({x:t.x,y:t.y,w:t.w,h:t.h})),l=d?{x:d.sx*c.x+d.tx,y:d.sy*c.y+d.ty,w:d.sx*c.w,h:d.sy*c.h}:c,p=ns(r.blur)+2,m=`<filter id="${a}-blur" filterUnits="userSpaceOnUse" x="${K(l.x-p)}" y="${K(l.y-p)}" width="${K(l.w+p*2)}" height="${K(l.h+p*2)}" color-interpolation-filters="sRGB"><feGaussianBlur stdDeviation="${K(r.blur/2)}"/></filter>`,g=[];t.clip!==void 0&&g.push(`clip-path="url(#${ne(n.prefix+gr+t.clip)})"`);let b=("opacity"in t?t.opacity:1)*(d?.opacity??1);return b<1&&g.push(`opacity="${K(b)}"`),`<g${g.length===0?"":` ${g.join(" ")}`}><defs><clipPath id="${a}">${i}</clipPath>${m}</defs><g clip-path="url(#${a})" filter="url(#${a}-blur)">${s.join("")}</g></g>`}function xM(e){let t=e.rotation===0?"":os(e),r=[e.pose?Oi(e.pose):"",t].filter(s=>s!=="").join(" "),o=r===""?[]:[`transform="${r}"`];switch(e.kind){case"rect":case"frame":return qt(e,e.radii,o);case"ellipse":return Ed(e,o);case"vector":return e.d===""?"":`<path d="${ne(e.d)}"${e.rule==="evenodd"?' clip-rule="evenodd"':""}${o.length===0?"":` ${o.join(" ")}`}/>`;case"image":case"text":case"border":case"connector":return""}}function os(e){return`rotate(${K(e.rotation)} ${K(e.x+e.w/2)} ${K(e.y+e.h/2)})`}function $d(e){return e.rotation!==0&&e.clip!==void 0&&e.mask===void 0}function N0(e,t){if(e.veil!==void 0){let{veil:n,...r}=e,o=N0(r,t);if(o==="")return"";let s=[`filter="url(#${ne(t.prefix+$i+n.id)})"`];return n.clip!==void 0&&s.push(`clip-path="url(#${ne(t.prefix+gr+n.clip)})"`),`<g ${s.join(" ")}>${o}</g>`}if(e.pose!==void 0)return gM(e,e.pose,t);if(e.mask!==void 0)return R0(e,t);if($d(e)){let n=[`clip-path="url(#${ne(t.prefix+gr+e.clip)})"`];e.blend!=="normal"&&n.push(`style="mix-blend-mode:${e.blend}"`);let r=Md({...e,clip:void 0,blend:"normal"},t);return r===""?"":`<g ${n.join(" ")}>${r}</g>`}return Md(e,t)}function gM(e,t,n){let r=Md({...e,clip:void 0,blend:"normal",shadows:e.shadows},n);if(r==="")return"";let o=[];e.clip!==void 0&&o.push(`clip-path="url(#${ne(n.prefix+gr+e.clip)})"`),t.opacity<1&&o.push(`opacity="${K(t.opacity)}"`),e.blend!=="normal"&&o.push(`style="mix-blend-mode:${e.blend}"`);let s=t.sx===1&&t.sy===1&&t.tx===0&&t.ty===0?r:`<g transform="${Oi(t)}">${r}</g>`;return o.length===0?s:`<g ${o.join(" ")}>${s}</g>`}function Oi(e){return`matrix(${K(e.sx)} 0 0 ${K(e.sy)} ${K(e.tx)} ${K(e.ty)})`}var ss="vd-mask-";function R0(e,t){let n=Md(Od(e),{...t,ids:!1});if(n==="")return"";let r=[];t.ids&&r.push(`id="${ne(e.id)}"`),e.clip!==void 0&&r.push(`clip-path="url(#${ne(t.prefix+gr+e.clip)})"`),eo(e)&&r.push(`filter="url(#${ne(t.prefix+Qr+e.id)})"`),"opacity"in e&&e.opacity<1&&r.push(`opacity="${K(e.opacity)}"`),e.blend!=="normal"&&r.push(`style="mix-blend-mode:${e.blend}"`);let o=r.length===0?"<g>":`<g ${r.join(" ")}>`,s=I0(e,t.prefix);return`${o}<g clip-path="url(#${ne(t.prefix+ss+e.id)})">${n}</g>${s===""?"":`<g>${s}</g>`}</g>`}function Od(e){let t=F0(e),n={..."opacity"in t?{...t,opacity:1}:t,clip:void 0,blend:"normal",shadows:[]};if(n.kind!=="image")return n;let{stroke:r,strokeWidth:o,...s}=n;return r===void 0&&o===void 0?n:s}function Zf(e){return I0(e,"")}function I0(e,t){let n=Pt(e),r=e.mask;if(!n||r===void 0)return"";let o=ne(r.d);if(n.align==="center")return`<path d="${o}" fill="none" ${xr(e,n,t,!1).join(" ")}/>`;let s=xr(e,n,t,!0).join(" ");if(n.align==="inside")return`<path d="${o}" fill="none" ${s} clip-path="url(#${ne(t+ss+e.id)})"/>`;let i=ne(t+rp+e.id);return`<clipPath id="${i}">${z0(r.contours,n)}</clipPath><path d="${o}" fill="none" ${s} clip-path="url(#${i})"/>`}function Qf(e){return yM(e,"")}function yM(e,t){let n=e.mask;if(n===void 0)return"";let r=n.rule==="evenodd"?' clip-rule="evenodd"':"";return`<clipPath id="${ne(t+ss+e.id)}"><path d="${ne(n.d)}"${r}/></clipPath>`}function F0(e){let{mask:t,...n}=e;return t===void 0?e:n}function Md(e,t){if(e.mask!==void 0)return R0(e,t);if(as(e))return MM(e,t);switch(e.kind){case"border":return kM(e,t);case"connector":return EM(e,t);case"ellipse":return SM(e,t);case"frame":return bM(e,t);case"image":return B0(e,t);case"rect":return wM(e,t);case"text":return AM(e,t);case"vector":return _M(e,t)}}function sn(e,t){return/url\(/i.test(e)&&!e.startsWith("url(#")?"none":t.prefix!==""&&e.startsWith("url(#")?`url(#${t.prefix}${e.slice(5)}`:e}function bM(e,t){return qt(e,e.radii,[`fill="${e.background===void 0?"none":ne(sn(e.background,t))}"`,...Bn(e,t.prefix)],t.ids?[`id="${ne(e.id)}"`]:[])}function B0(e,t,n=!1){let r=t.ids?[`id="${ne(e.id)}"`]:[],o=n?[]:Bn(e,t.prefix);if(e.href===void 0&&e.video?.clip!==void 0){let d=e.opacity<1?[`opacity="${K(e.opacity)}"`]:[],c=[...r,...d,...o];return`<g${c.length===0?"":` ${c.join(" ")}`}>${Td(e,t.prefix)}</g>`}if(e.href===void 0)return qt(e,e.radii,['fill="none"',`stroke="${ne(cM)}"`,'stroke-width="1"','stroke-dasharray="4 4"',...o],r);let s=[`x="${K(e.x)}"`,`y="${K(e.y)}"`,`width="${K(e.w)}"`,`height="${K(e.h)}"`,`href="${ne(e.href)}"`,`preserveAspectRatio="${P0[e.fit]}"`],i=e.opacity<1?[`opacity="${K(e.opacity)}"`]:[];if(Jt(e.radii))return`<image ${[...r,...s,...i,...o].join(" ")}/>`;let a=ne(t.prefix+is+e.id);return`${n?"<g>":`<g ${[...r,...i,...o].join(" ")}>`}<clipPath id="${a}">${qt(e,e.radii)}</clipPath><image ${[...s,`clip-path="url(#${a})"`].join(" ")}/></g>`}function Td(e,t=""){let n=[`x="${K(e.x)}"`,`y="${K(e.y)}"`,`width="${K(e.w)}"`,`height="${K(e.h)}"`],r=ne(t+is+e.id),o=Jt(e.radii),s=`width:100%;height:100%;display:block;object-fit:${vM[e.fit]}`;return(o?"":`<clipPath id="${r}">${qt(e,e.radii)}</clipPath>`)+`<foreignObject ${[...n,...o?[]:[`clip-path="url(#${r})"`]].join(" ")}><video xmlns="http://www.w3.org/1999/xhtml" data-vd-video="${ne(e.id)}" src="${ne(e.video?.clip??"")}" muted="" playsinline="" preload="auto" style="${s}"></video></foreignObject>`}var vM={cover:"cover",contain:"contain",fill:"fill"},is="vd-round-";function wM(e,t){return qt(e,e.radii,[...ep(e,t),...V0(e,t),...Bn(e,t.prefix)],t.ids?[`id="${ne(e.id)}"`]:[])}function kM(e,t){let n=Pt(e);return n?qt(e,e.radii,['fill="none"',...xr(e,n,t.prefix,!1),...Bn(e,t.prefix)]):""}function V0(e,t){let n=Pt(e);return n?xr(e,n,t.prefix,!1).slice(2):[]}function ep(e,t){let n=[`fill="${ne(sn(e.fill,t))}"`];return e.stroke!==void 0&&e.strokeWidth>0&&n.push(`stroke="${ne(sn(e.stroke,t))}"`,`stroke-width="${K(e.strokeWidth)}"`),e.opacity<1&&n.push(`opacity="${K(e.opacity)}"`),n}function SM(e,t){let n=[];return t.ids&&n.push(`id="${ne(e.id)}"`),n.push(`cx="${K(e.x+e.w/2)}"`,`cy="${K(e.y+e.h/2)}"`,`rx="${K(e.w/2)}"`,`ry="${K(e.h/2)}"`,...ep(e,t),...V0(e,t),...Bn(e,t.prefix)),`<ellipse ${n.join(" ")}/>`}function _M(e,t){if(e.d==="")return"";let n=[];t.ids&&n.push(`id="${ne(e.id)}"`),n.push(`d="${ne(e.d)}"`,...ep(e,t)),n.push(...np(e,e.dash??[]));let r=e.pose?.fillOpacity;return r!==void 0&&r<1&&n.push(`fill-opacity="${K(r)}"`),e.rule!=="nonzero"&&n.push(`fill-rule="${e.rule}"`),e.cap!=="butt"&&n.push(`stroke-linecap="${e.cap}"`),e.join!=="miter"&&n.push(`stroke-linejoin="${e.join}"`),e.paintOrder!==void 0&&n.push(`paint-order="${e.paintOrder}"`),n.push(...Bn(e,t.prefix)),`<path ${n.join(" ")}/>`}function EM(e,t){let n=H0(e,t.prefix);if(n==="")return"";let r=[];return t.ids&&r.push(`id="${ne(e.id)}"`),e.opacity<1&&r.push(`opacity="${K(e.opacity)}"`),r.push(...Bn(e,t.prefix)),`<g ${r.join(" ")}>${n}</g>`}function tp(e){return H0(e,"")}function H0(e,t){if(!(e.strokeWidth>0))return"";let n=ne(sn(e.stroke,{ids:!1,prefix:t})),r=K(e.strokeWidth),o=e.pose?.trace,s=[`d="${ne(e.d)}"`,'fill="none"',`stroke="${n}"`,`stroke-width="${r}"`,...np(e,e.dash??[])];e.cap!=="butt"&&s.push(`stroke-linecap="${e.cap}"`);let i=[`<path ${s.join(" ")}/>`];return(d=>{d&&(e.filled.d!==""&&i.push(`<path d="${ne(e.filled.d)}" fill="${n}"/>`),e.lined.d!==""&&i.push(`<path d="${ne(e.lined.d)}" fill="none" stroke="${n}" stroke-width="${r}"/>`))})(o===void 0||o>=1),i.join("")}function np(e,t){let n=e.kind==="vector"||e.kind==="connector",r=n?e.pose?.trace:void 0;if(r!==void 0&&n&&e.stroke!==void 0){let o=_i(t,ui(e.contours),r),s=[`stroke-dasharray="${o.array.map(K).join(" ")}"`];return(o.offset!==0||t.length===0)&&s.push(`stroke-dashoffset="${K(o.offset)}"`),s}return t.length===0?[]:[`stroke-dasharray="${t.map(K).join(" ")}"`]}function xr(e,t,n,r){let o=[`stroke="${ne(sn(t.paint,{ids:!1,prefix:n}))}"`,`stroke-width="${K(t.width*(r?2:1))}"`,...np(e,t.dash)];return t.cap!=="butt"&&o.push(`stroke-linecap="${t.cap}"`),t.join!=="miter"&&o.push(`stroke-linejoin="${t.join}"`),o}var rp="vd-stroke-";function as(e){if(e.mask!==void 0)return!1;let t=Pt(e);return!t||e.kind==="text"?!1:e.kind==="image"||t.align!=="center"}function MM(e,t){let n=[];return t.ids&&e.kind!=="border"&&n.push(`id="${ne(e.id)}"`),"opacity"in e&&e.opacity<1&&n.push(`opacity="${K(e.opacity)}"`),n.push(...Bn(e,t.prefix)),`${n.length===0?"<g>":`<g ${n.join(" ")}>`}${U0(e,t.prefix)}</g>`}function op(e){return U0(e,"")}function U0(e,t){let n=Pt(e),r={ids:!1,prefix:t},o="",s="",i=p=>{switch(e.kind){case"ellipse":s=Ed(e,p);return;case"vector":s=e.d===""?"":`<path d="${ne(e.d)}" ${p.join(" ")}/>`;return;case"rect":case"image":case"border":s=qt(e,e.radii,p);return;case"frame":case"text":return}};switch(e.kind){case"rect":o=qt(e,e.radii,[`fill="${ne(sn(e.fill,r))}"`]);break;case"ellipse":o=Ed(e,[`fill="${ne(sn(e.fill,r))}"`]);break;case"vector":{let p=[`fill="${ne(sn(e.fill,r))}"`],m=e.pose?.fillOpacity;m!==void 0&&m<1&&p.push(`fill-opacity="${K(m)}"`),e.rule!=="nonzero"&&p.push(`fill-rule="${e.rule}"`),o=e.d===""?"":`<path d="${ne(e.d)}" ${p.join(" ")}/>`;break}case"image":o=B0({...e,opacity:1,clip:void 0,rotation:0,shadows:[],blend:"normal"},r,!0);break;case"border":case"frame":case"text":break}if(!n)return o;if(n.align==="center")return i(['fill="none"',...xr(e,n,t,!1)]),o+s;let a=gd(e,n);if(a){let p=['fill="none"',...xr(e,n,t,!1)],m=e.kind==="ellipse"?Ed(a,p):qt(a,a.radii,p);return o+m}let d=Lf(e);if(!d)return o;let c=ne(t+rp+e.id);i(['fill="none"',...xr(e,n,t,!0),`clip-path="url(#${c})"`]);let l=n.align==="inside"?`<path d="${ne(ze(d.contours))}"${d.rule==="evenodd"?' clip-rule="evenodd"':""}/>`:z0(d.contours,n);return`${o}<clipPath id="${c}">${l}</clipPath>${s}`}function z0(e,t){let n=CM(e),r=Nf(t),o=n.x-r,s=n.y-r,i=n.x+n.w+r,a=n.y+n.h+r,d=`M${K(o)} ${K(s)}H${K(i)}V${K(a)}H${K(o)}Z`;return`<path d="${ne(d+ze(e))}" clip-rule="evenodd"/>`}function CM(e){let t=1/0,n=1/0,r=-1/0,o=-1/0;for(let s of e)for(let i of s.anchors)for(let a of[i,i.in,i.out])a&&(t=Math.min(t,a.x),n=Math.min(n,a.y),r=Math.max(r,a.x),o=Math.max(o,a.y));return Number.isFinite(t)?{x:t,y:n,w:r-t,h:o-n}:{x:0,y:0,w:0,h:0}}function Ed(e,t){return`<ellipse cx="${K(e.x+e.w/2)}" cy="${K(e.y+e.h/2)}" rx="${K(e.w/2)}" ry="${K(e.h/2)}" ${t.join(" ")}/>`}function AM(e,t){if(e.lines.every(s=>s.spans.length===0))return"";let n=[];t.ids&&n.push(`id="${ne(e.id)}"`),n.push('xml:space="preserve"'),e.opacity<1&&n.push(`opacity="${K(e.opacity)}"`);let r=Pt(e);r&&n.push(...xr(e,r,t.prefix,!1),'paint-order="stroke"'),n.push(...Bn(e,t.prefix));let o=[];for(let s of e.lines)for(let i of s.spans)i.text!==""&&o.push($M(i,t));return`<text ${n.join(" ")}>${o.join("")}</text>`}function $M(e,t){let r=`<tspan ${[`x="${K(e.x)}"`,`y="${K(e.y)}"`,...OM(e.style,t)].join(" ")}>${TM(e.text)}</tspan>`;return e.style.link===void 0?r:`<a href="${ne(e.style.link)}">${r}</a>`}function OM(e,t){let n=[`font-family="${ne(e.family)}"`,`font-size="${K(e.size)}"`,`fill="${ne(sn(e.fill,t))}"`];e.weight!==400&&n.push(`font-weight="${K(e.weight)}"`),e.italic&&n.push('font-style="italic"'),e.letterSpacing!==0&&n.push(`letter-spacing="${K(e.letterSpacing)}"`);let r=[e.underline?"underline":"",e.strike?"line-through":""].filter(Boolean).join(" ");return r&&n.push(`text-decoration="${r}"`),n}function TM(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function ne(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}var NM=.8,RM=.2;function sp(e,t){let r=e.createElement("canvas").getContext("2d"),o=Fn(),s=new Map,i=new Map,a=new Set;function d(l){return`${l.italic?"italic ":""}${l.weight} ${l.size}px ${l.family}`}function c(){s.clear(),i.clear()}return{advance(l,p){if(!r)return o.advance(l,p);let m=d(p),g=`${m}\0${p.letterSpacing}\0${l}`,b=s.get(g);if(b!==void 0)return b;r.font=m;let w=r.measureText(l).width+p.letterSpacing*[...l].length;return s.set(g,w),w},metrics(l){if(!r)return o.metrics(l);let p=d(l),m=i.get(p);if(m)return m;r.font=p;let g=r.measureText("Hxg"),b=g.fontBoundingBoxAscent??l.size*NM,w=g.fontBoundingBoxDescent??l.size*RM,k={ascent:b,descent:w,lineGap:0};return i.set(p,k),k},load(l,p){let m=e.fonts;if(!m||typeof FontFace!="function")return!1;let g=!1;for(let b of Object.values(l.fonts))for(let w of IM(b)){let k=`${b.family}\0${w.src}\0${w.weight??400}\0${w.style??"normal"}`;if(a.has(k))continue;a.add(k);let _=w.src.startsWith("data:")?void 0:p?.(w.src),M={weight:String(w.weight??400),style:w.style??"normal"},R=B=>{let D=new FontFace(b.family,typeof B=="string"?`url(${B})`:FM(B),M);m.add(D),D.load().then(()=>{c(),t?.()},()=>{m.delete(D)})};_===void 0?R(w.src):(g=!0,_.then(R,()=>{}))}return g},invalidate:c,destroy(){c(),a.clear()}}}function IM(e){return(e.faces??[]).flatMap(t=>t.src===void 0?[]:[{...t,src:t.src}])}function FM(e){return e instanceof Uint8Array?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):e}var Ld={x:0,y:0,zoom:1},K0=.02,G0=64;function ds(e){return Number.isFinite(e)?Math.min(Math.max(e,K0),G0):1}function Pd(e,t){return{x:(t.x-e.x)/e.zoom,y:(t.y-e.y)/e.zoom}}function ip(e,t){return{x:t.x*e.zoom+e.x,y:t.y*e.zoom+e.y}}function Ti(e,t,n){let r=ds(e.zoom*n),o=Pd(e,t);return{zoom:r,x:t.x-o.x*r,y:t.y-o.y*r}}function yn(e,t,n){return{...e,x:e.x+t,y:e.y+n}}function ap(e){return`translate(${e.x} ${e.y}) scale(${e.zoom})`}function bn(e,t,n){let r={width:Math.max(1,t.width-n*2),height:Math.max(1,t.height-n*2)};if(e.width<=0||e.height<=0)return Ld;let o=ds(Math.min(r.width/e.width,r.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 le="http://www.w3.org/2000/svg",q0="vd-viewer-styles",W0=`
45
45
  .vd-viewer {
46
46
  position: relative;
47
47
  overflow: hidden;
@@ -140,7 +140,7 @@ ${jn}`);return t===-1?-1:t+1}function Av(e){let t=new Set;for(let n of e.matchAl
140
140
  .vd-viewer--interacting .vd-viewer__page {
141
141
  filter: none;
142
142
  }
143
- `;function Gm(e){if(e.getElementById(jm))return;let t=e.createElement("style");t.id=jm,t.textContent=Km,e.head.appendChild(t)}function Wm(e){if(!(e===void 0||typeof fetch!="function"))return async(t,n)=>{let r=e(t,n);if(r===void 0)return;let o=await fetch(r);return o.ok?new Uint8Array(await o.arrayBuffer()):void 0}}function Xm(e,t,n,r,o){return t?v0(e,t,n,r,o):y0(e,n,r)}function y0(e,t,n){let r=Ml(e,n);return{measurer:r,update:o=>{r.load(o,t)},afterPaint:()=>{},destroy:()=>r.destroy()}}var qm=new WeakMap;function v0(e,t,n,r,o){let s,i,d,l=()=>{if(!s)throw new Error("canvasFonts: update() before measuring");return s};return{measurer:{advance:(p,m)=>l().measurer.advance(p,m),metrics:p=>l().measurer.metrics(p),itemize:p=>l().measurer.itemize(p)},update(p){s&&p.fonts===i||(d?.(),s?.dispose(),s=t.forDocument(p,{...n?{loader:n}:{},...o?{asset:o}:{}}),i=p.fonts,d=s.onChange(r))},afterPaint(){let p=e.fonts;if(!s||!p||typeof FontFace!="function")return;let m=qm.get(e);m||qm.set(e,m=new Set);for(let y of s.usedFaces()){if(m.has(y.id))continue;m.add(y.id);let v=new FontFace(y.id,b0(y.bytes),{weight:String(y.weight),style:y.style});p.add(v),v.load().catch(()=>p.delete(v))}},destroy(){d?.(),s?.dispose(),s=void 0}}}function b0(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}var w0=.01,k0=.004,Ym=40,_0=16;function gi(e,t){Gm(e.ownerDocument);let n=t.document,r=B=>Xm(e.ownerDocument,B,t.loadFont,()=>{V(n)},Wm(t.resolveAsset)),o=r(t.fonts),s={advance:(B,q)=>o.measurer.advance(B,q),metrics:B=>o.measurer.metrics(B),itemize:B=>o.measurer.itemize?.(B)??[B]};o.update(n);let i=Ie(n),d=()=>t.resolveAsset?{measure:s,resolveAsset:t.resolveAsset}:{measure:s},l=Ho(n,i,d()),f=t.camera??hi,p=t.interactive??!0,m=t.wheel??"always";e.classList.add("vd-viewer"),t.surface&&(e.style.background=t.surface);let y=e.ownerDocument.createElementNS(ve,"svg");y.setAttribute("class","vd-viewer__surface"),y.setAttribute("width","100%"),y.setAttribute("height","100%");let v=e.ownerDocument.createElementNS(ve,"g");v.setAttribute("class","vd-viewer__camera"),v.style.isolation="isolate",y.appendChild(v);let C=e.ownerDocument.createElementNS(ve,"defs");v.appendChild(C);let _=e.ownerDocument.createElementNS(ve,"rect");_.setAttribute("class","vd-viewer__page"),v.appendChild(_),e.appendChild(y);let g=new Map,P=null;function A(){let B=t.sample;return P&&B?B(l,P.timeline,P.t,{doc:n,resolution:i,options:d()}):l}function R(){v.setAttribute("transform",$l(f))}function $(B=!0){let q=A();T(q);let xe=l.background!==void 0;pe(_,"x",String(l.x)),pe(_,"y",String(l.y)),pe(_,"width",String(xe?l.width:0)),pe(_,"height",String(xe?l.height:0)),Me(_,"fill",l.background??null);let ge=new Set,De=_;for(let me of q.items){let We=me.part===void 0?me.id:`${me.id}\0${me.part}`;ge.add(We);let Oe=g.get(We);(!Oe||Oe.tagName!==Jm(me))&&(Oe?.remove(),Oe=e.ownerDocument.createElementNS(ve,Jm(me)),Oe.setAttribute("data-vd-id",me.id),g.set(We,Oe)),C0(Oe,me),De.nextSibling!==Oe&&v.insertBefore(Oe,De.nextSibling),De=Oe}for(let[me,We]of g)ge.has(me)||(We.remove(),g.delete(me));o.afterPaint(),B&&t.onSceneChange?.(l,n)}let D=new Map;function T(B){let q=[...B.gradients.map(_l),...[...new Map(B.items.filter(me=>me.shadows.length>0).map(me=>[me.id,me])).values()].map(me=>Sl(me)),...B.clips.map(kl)],xe=new Set(q);for(let[me,We]of D)xe.has(me)||(We.remove(),D.delete(me));let ge=q.filter(me=>!D.has(me));if(ge.length===0)return;[...new DOMParser().parseFromString(`<svg xmlns="${ve}">${ge.join("")}</svg>`,"image/svg+xml").documentElement.children].forEach((me,We)=>{let Oe=e.ownerDocument.importNode(me,!0);C.appendChild(Oe),D.set(ge[We],Oe)})}function V(B){n=B,o.update(n),i=Ie(n),l=Ho(n,i,d()),$()}function O(B){let q=e.getBoundingClientRect();return{x:B.clientX-q.left,y:B.clientY-q.top}}let j=0,M=0;function G(){e.classList.add("vd-viewer--interacting"),M&&clearTimeout(M),M=setTimeout(()=>{M=0,e.classList.remove("vd-viewer--interacting")},180)}function z(){j&&(cancelAnimationFrame(j),j=0),R(),t.onCameraChange?.(f)}function X(B){f=B,z()}function ae(B){f=B,G(),!j&&(j=requestAnimationFrame(()=>{j=0,R(),t.onCameraChange?.(f)}))}let de=null,S=null,w=!1,L=p&&m==="always",I=new Map,K=null,J=()=>{let[B,q]=[...I.values()];return!B||!q?null:{mid:{x:(B.x+q.x)/2,y:(B.y+q.y)/2},distance:Math.hypot(B.x-q.x,B.y-q.y)}},U=B=>{let q=I.get(B.pointerId);if(!q)return;let xe=O(B);if(I.set(B.pointerId,xe),I.size===1){ae(It(f,xe.x-q.x,xe.y-q.y));return}let ge=J();if(K&&ge){let De=It(f,ge.mid.x-K.mid.x,ge.mid.y-K.mid.y);ae(K.distance>0?Vo(De,ge.mid,ge.distance/K.distance):De)}K=ge},ue=B=>{I.delete(B.pointerId)&&(e.hasPointerCapture(B.pointerId)&&e.releasePointerCapture(B.pointerId),K=J())},Ee=B=>{if(m==="modifier"&&!B.ctrlKey&&!B.metaKey)return;B.preventDefault();let q=O(B),xe=B.deltaMode===1?_0:B.deltaMode===2?e.clientHeight||800:1,ge=B.deltaX*xe,De=B.deltaY*xe;if(B.ctrlKey||B.metaKey){let me=B.ctrlKey?w0:k0,We=Math.max(-Ym,Math.min(Ym,De));ae(Vo(f,q,Math.exp(-We*me)));return}if(B.shiftKey&&ge===0){ae(It(f,-De,0));return}ae(It(f,-ge,-De))},Ae=B=>{if(B.pointerType==="touch"){if(!L)return;B.preventDefault(),I.set(B.pointerId,O(B)),e.setPointerCapture(B.pointerId),K=J();return}(B.button===1||B.button===0&&w)&&(B.preventDefault(),de=B.pointerId,S=O(B),e.setPointerCapture(B.pointerId))},Ce=B=>{if(B.pointerType==="touch"){U(B);return}if(de!==B.pointerId||!S)return;let q=O(B);ae(It(f,q.x-S.x,q.y-S.y)),S=q},rt=B=>{if(B.pointerType==="touch"){ue(B);return}de===B.pointerId&&(de=null,S=null,e.hasPointerCapture(B.pointerId)&&e.releasePointerCapture(B.pointerId))},ee=B=>{B.code==="Space"&&(w=!0)},se=B=>{B.code==="Space"&&(w=!1)};L&&(e.style.touchAction="none"),p&&(e.addEventListener("wheel",Ee,{passive:!1}),e.addEventListener("pointerdown",Ae),e.addEventListener("pointermove",Ce),e.addEventListener("pointerup",rt),e.addEventListener("pointercancel",rt),e.ownerDocument.addEventListener("keydown",ee),e.ownerDocument.addEventListener("keyup",se)),R(),$();let oe={element:e,surface:y,update:V,getDocument:()=>n,getScene:()=>l,setTime(B){B===null&&P===null||(P=B,$(!1))},getTime:()=>P,getResolution:()=>i,getMeasurer:()=>s,setFonts(B){o.destroy(),o=r(B),V(n)},getCamera:()=>f,setCamera:X,zoomBy(B,q){let xe=e.getBoundingClientRect(),ge=q??{x:xe.width/2,y:xe.height/2};X(Vo(f,ge,B))},fitToContent(B=32){let q=e.getBoundingClientRect();X(vn({x:l.x,y:l.y,width:l.width,height:l.height},{width:q.width||l.width,height:q.height||l.height},B))},screenToDocument:B=>xi(f,B),documentToScreen:B=>Al(f,B),pointerPoint:O,hitTest(B,q){for(let xe=l.items.length-1;xe>=0;xe--){let ge=l.items[xe];if(ge&&I0(ge,B,N0/f.zoom)&&(!q||q(ge.id)))return ge.id}return null},linkAt(B,q){for(let xe=l.items.length-1;xe>=0;xe--){let ge=l.items[xe];if(ge?.kind!=="text"||q&&!q(ge.id))continue;let De=ge.rotation===0?B:it(B,{x:ge.x+ge.w/2,y:ge.y+ge.h/2},-ge.rotation);for(let me of ge.lines){if(De.y<me.y||De.y>me.y+me.h)continue;let We=me.spans.find(Oe=>De.x>=Oe.x&&De.x<=Oe.x+Oe.w);if(We)return We.style.link}}},itemOf:B=>l.items.find(q=>q.id===B),elementOf:B=>g.get(B),destroy(){p&&(e.removeEventListener("wheel",Ee),e.removeEventListener("pointerdown",Ae),e.removeEventListener("pointermove",Ce),e.removeEventListener("pointerup",rt),e.removeEventListener("pointercancel",rt),e.ownerDocument.removeEventListener("keydown",ee),e.ownerDocument.removeEventListener("keyup",se)),j&&cancelAnimationFrame(j),M&&clearTimeout(M),j=0,M=0,o.destroy(),e.classList.remove("vd-viewer--interacting"),y.remove(),g.clear(),e.classList.remove("vd-viewer")}};return t.autoFit&&oe.fitToContent(),oe}var S0="vd-clip-";function E0(e){return S0+e}function Qm(e){return`url(#${E0(e)})`}function Jm(e){return El(e)||e.pose!==void 0?"g":Ol(e)}function Ol(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 C0(e,t){if(e.tagName!=="g"){Zm(e,t);return}Me(e,"clip-path",t.clip===void 0?null:Qm(t.clip)),e.style.mixBlendMode=t.blend==="normal"?"":t.blend;let n=t.pose;Me(e,"opacity",n&&n.opacity<1?String(n.opacity):null);let r=e.firstElementChild;if((!r||r.tagName!==Ol(t))&&(r?.remove(),r=e.ownerDocument.createElementNS(ve,Ol(t)),e.appendChild(r)),Zm(r,{...t,clip:void 0,blend:"normal"}),n){let o=t.rotation===0?"":` ${mi(t)}`;pe(r,"transform",`${Cl(n)}${o}`),t.kind==="vector"&&M0(r,t)}}function M0(e,t){let n=t.pose?.trace;if(n!==void 0&&t.stroke!==void 0){let o=Bs(t.contours)+1;pe(e,"stroke-dasharray",`${o} ${o}`),pe(e,"stroke-dashoffset",String(o*(1-n)))}let r=t.pose?.fillOpacity;Me(e,"fill-opacity",r!==void 0&&r<1?String(r):null)}function Zm(e,t){switch(Me(e,"clip-path",t.clip===void 0?null:Qm(t.clip)),Me(e,"transform",t.rotation===0?null:mi(t)),e.style.mixBlendMode=t.blend==="normal"?"":t.blend,e.style.filter=t.shadows.length>0?`url(#${pi}${t.id})`:"",t.kind){case"ellipse":D0(e,t);return;case"frame":A0(e,t);return;case"image":$0(e,t);return;case"rect":L0(e,t);return;case"text":T0(e,t);return;case"vector":P0(e,t);return}}function A0(e,t){pe(e,"class","vd-viewer__page"),pe(e,"x",String(t.x)),pe(e,"y",String(t.y)),pe(e,"width",String(t.w)),pe(e,"height",String(t.h)),Me(e,"fill",t.background??null)}function $0(e,t){if(pe(e,"x",String(t.x)),pe(e,"y",String(t.y)),pe(e,"width",String(t.w)),pe(e,"height",String(t.h)),Me(e,"opacity",t.opacity<1?String(t.opacity):null),t.href===void 0){pe(e,"class","vd-viewer__missing"),Me(e,"rx",t.radius>0?String(t.radius):null);return}pe(e,"href",t.href),pe(e,"preserveAspectRatio",O0[t.fit])}var O0={cover:"xMidYMid slice",contain:"xMidYMid meet",fill:"none"};function T0(e,t){Me(e,"opacity",t.opacity<1?String(t.opacity):null),pe(e,"xml:space","preserve");let n=t.lines.flatMap(o=>o.spans).filter(o=>o.text!==""),r=e.ownerDocument;for(;e.childNodes.length>n.length;)e.lastChild?.remove();for(;e.childNodes.length<n.length;)e.appendChild(r.createElementNS(ve,"tspan"));n.forEach((o,s)=>{let i=e.childNodes[s];i.textContent!==o.text&&(i.textContent=o.text),pe(i,"x",String(o.x)),pe(i,"y",String(o.y)),pe(i,"font-family",o.style.family),pe(i,"font-size",String(o.style.size)),pe(i,"fill",o.style.fill),Me(i,"font-weight",o.style.weight===400?null:String(o.style.weight)),Me(i,"font-style",o.style.italic?"italic":null),Me(i,"letter-spacing",o.style.letterSpacing===0?null:String(o.style.letterSpacing)),Me(i,"data-vd-link",o.style.link??null);let d=[o.style.underline?"underline":"",o.style.strike?"line-through":""].filter(Boolean).join(" ");Me(i,"text-decoration",d===""?null:d)})}function L0(e,t){Me(e,"class",null),pe(e,"x",String(t.x)),pe(e,"y",String(t.y)),pe(e,"width",String(t.w)),pe(e,"height",String(t.h)),pe(e,"fill",t.fill),Me(e,"rx",t.radius>0?String(t.radius):null),Me(e,"stroke",t.stroke??null),Me(e,"stroke-width",t.stroke&&t.strokeWidth>0?String(t.strokeWidth):null),Me(e,"opacity",t.opacity<1?String(t.opacity):null)}function eh(e,t){pe(e,"fill",t.fill),Me(e,"stroke",t.stroke??null),Me(e,"stroke-width",t.stroke&&t.strokeWidth>0?String(t.strokeWidth):null),Me(e,"opacity",t.opacity<1?String(t.opacity):null)}function D0(e,t){pe(e,"cx",String(t.x+t.w/2)),pe(e,"cy",String(t.y+t.h/2)),pe(e,"rx",String(t.w/2)),pe(e,"ry",String(t.h/2)),eh(e,t)}function P0(e,t){pe(e,"d",t.d),eh(e,t),Me(e,"fill-rule",t.rule==="nonzero"?null:t.rule),Me(e,"stroke-linecap",t.cap==="butt"?null:t.cap),Me(e,"stroke-linejoin",t.join==="miter"?null:t.join)}function pe(e,t,n){e.getAttribute(t)!==n&&e.setAttribute(t,n)}function Me(e,t,n){n===null?e.hasAttribute(t)&&e.removeAttribute(t):pe(e,t,n)}var N0=4;function I0(e,t,n){let r=e.rotation===0?t:it(t,{x:e.x+e.w/2,y:e.y+e.h/2},-e.rotation),o=r.x>=e.x&&r.x<=e.x+e.w&&r.y>=e.y&&r.y<=e.y+e.h;if(e.kind==="ellipse"){let s=e.stroke!==void 0?e.strokeWidth/2:0,i=e.w/2+s,d=e.h/2+s;if(i<=0||d<=0)return!1;let l=(r.x-(e.x+e.w/2))/i,f=(r.y-(e.y+e.h/2))/d;return l*l+f*f<=1}if(e.kind==="vector"){let s=e.stroke!==void 0&&e.strokeWidth>0;return hd(e.contours,r,{fill:e.fill!=="none",rule:e.rule,reach:(s?e.strokeWidth/2:0)+n})}return o}var tC=Tl(Js),nC=Tl(Zs),R0=Tl(Qs);function Tl(e){return`cubic-bezier(${e.join(", ")})`}function Ll(e,t){let n=e.root.id;if(n===t)return e;let r=o=>{if(!ye(o))return o;let s=ct(o.expr);return!s.ok||!Xt(s.ast).nodes.includes(n)?o:{expr:Kn(Nt(s.ast,i=>i===n?t:void 0))}};return{...e,root:{...th(e.root,r),id:t}}}function th(e,t){let n=e,r={};for(let[o,s]of Object.entries(n)){if(o==="children"&&Array.isArray(s)){r[o]=s.map(i=>th(i,t));continue}r[o]=t(s)}return r}var Pl=["nw","n","ne","e","se","s","sw","w"],jo=["nw","ne","se","sw"];function yi(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 Or(e){let t=e.includes("w")?0:e.includes("e")?1:.5,n=e.includes("n")?0:e.includes("s")?1:.5;return{u:t,v:n}}function Nl(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 zo=1;function Jt(e,t,n,r){let{x:o,y:s,w:i,h:d}=e;if(t.includes("w")){let l=o+i;o=Math.min(o+n,l-zo),i=l-o}if(t.includes("e")&&(i=Math.max(zo,i+n)),t.includes("n")){let l=s+d;s=Math.min(s+r,l-zo),d=l-s}return t.includes("s")&&(d=Math.max(zo,d+r)),{x:o,y:s,w:i,h:d}}function Gn(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 vi(e,t){let n=[];return t.x!==e.x&&n.push("x"),t.y!==e.y&&n.push("y"),t.w!==e.w&&n.push("w"),t.h!==e.h&&n.push("h"),n}function St(e){if(e.length===0)return null;let t=1/0,n=1/0,r=-1/0,o=-1/0;for(let s of e)t=Math.min(t,s.x),n=Math.min(n,s.y),r=Math.max(r,s.x+s.w),o=Math.max(o,s.y+s.h);return{x:t,y:n,w:r-t,h:o-n}}function Il(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,n){return t>=e.x&&t<=e.x+e.w&&n>=e.y&&n<=e.y+e.h}var Tr=7,Dl=15,Uo=9;function Rl(e){let t=[],n=Dl/2;for(let d of jo){let{u:l,v:f}=Or(d);t.push({handle:d,rect:{x:e.x+e.w*l-n,y:e.y+e.h*f-n,w:Dl,h:Dl}})}let r=n,o=Math.max(0,e.w-r*2),s=Math.max(0,e.h-r*2),i=Uo/2;return t.push({handle:"n",rect:{x:e.x+r,y:e.y-i,w:o,h:Uo}},{handle:"s",rect:{x:e.x+r,y:e.y+e.h-i,w:o,h:Uo}},{handle:"w",rect:{x:e.x-i,y:e.y+r,w:Uo,h:s}},{handle:"e",rect:{x:e.x+e.w-i,y:e.y+r,w:Uo,h:s}}),t}function Re(e,t){let n=[],r=o=>{if(n.push(o.id),o.id===t)return!0;for(let s of te(o))if(r(s))return!0;return n.pop(),!1};return r(e)?n:[]}function bi(e,t,n){let r=Re(t.root,e);if(r.length===0)return e;let o=n!==null&&r.includes(n)?n:V0(r,t),s=r.indexOf(o);if(s===-1)return e;let i=r.indexOf(n??"")+1;for(let d=Math.max(i,1);d<s+1;d+=1)if(F(t.root,r[d])?.type==="instance")return r[d];return r[s+1]??e}function V0(e,t){for(let n=e.length-2;n>=0;n-=1){let r=e[n];if(F(t.root,r)?.type==="frame")return r}return t.root.id}function nh(e,t){let n=e.map(o=>Re(t.root,o)).filter(o=>o.length>0);if(n.length===0)return t.root.id;let r=t.root.id;for(let o=0;;o+=1){let s=n[0]?.[o];if(s===void 0||n.some(i=>i[o]!==s||o===i.length-1))break;r=s}return r}function qn(e,t){let n=F(t.root,e);if(!n)return[];let r=[],o=s=>{if($e(s)){for(let i of te(s))o(i);return}r.push(s.id)};return o(n),r}function Wn(e,t,n){let r=F(t.root,e);if(!r)return;if(!$e(r)){let i=n.nodes.get(e);return i?Ko(i):void 0}let o=[],s=i=>{if(!(i.id!==e&&"hidden"in i&&i.hidden===!0)){if(i.id!==e&&!$e(i)){let d=Wn(i.id,t,n);d&&o.push(d);return}for(let d of te(i))s(d)}};return s(r),St(o)??void 0}function Ko(e){let t={x:e.absX,y:e.absY,w:e.w,h:e.h},n=e.values.rotation??0;return n===0?t:Do(t,n)}function Go(e,t,n){return t.flatMap(r=>{let o=Wn(r,e,n);return o?[{id:r,frame:o}]:[]})}function Fl(e,t){let n=t.filter(m=>m!==e.root.id&&F(e.root,m));if(n.length<2)return null;let r=nh(n,e),o=F(e.root,r);if(!o)return null;let s=te(o),i=new Set(n.map(m=>bi(m,e,r))),d=s.filter(m=>i.has(m.id));if(d.length<2)return null;let l=s.findIndex(m=>m.id===d[d.length-1]?.id),f=mn(e.root,"group"),p=[{op:"insert",parent:r,index:l+1,node:Ja({id:f,children:[]})}];return d.forEach((m,y)=>{p.push({op:"move",id:m.id,parent:f,index:y})}),{ops:p,groupId:f}}function Bl(e,t){let n=F(e.root,t);if(!n||!$e(n))return[];let r=Re(e.root,t),o=r[r.length-2];if(o===void 0)return[];let s=F(e.root,o);if(!s)return[];let i=te(s).findIndex(l=>l.id===t);if(i===-1)return[];let d=te(n).map((l,f)=>({op:"move",id:l.id,parent:o,index:i+f}));return d.push({op:"remove",id:t}),d}function Hl(e,t,n){let r=new Map;for(let s of t){let i=Re(e.root,s),d=i[i.length-2];if(d===void 0)continue;let l=r.get(d)??new Set;l.add(s),r.set(d,l)}let o=[];for(let[s,i]of r){let d=F(e.root,s);if(!d)continue;let l=te(d).map(f=>f.id);o.push(...z0(s,l,U0(l,i,n)))}return o}function U0(e,t,n){if(n==="front"||n==="back"){let i=e.filter(l=>t.has(l)),d=e.filter(l=>!t.has(l));return n==="front"?[...d,...i]:[...i,...d]}let r=n==="forward"?1:-1,o=[...e],s=o.flatMap((i,d)=>t.has(i)?[d]:[]);r===1&&s.reverse();for(let i of s){let d=i+r,l=o[d];l===void 0||t.has(l)||(o[d]=o[i],o[i]=l)}return o}function z0(e,t,n){let r=[...t],o=[];for(let s=0;s<n.length;s+=1){let i=n[s];i===void 0||r[s]===i||(r.splice(r.indexOf(i),1),r.splice(s,0,i),o.push({op:"move",id:i,parent:e,index:s}))}return o}function Vl(e,t,n){let r=t.w===0?1:n.w/t.w,o=t.h===0?1:n.h/t.h,s=new Map;for(let[i,d]of e)s.set(i,{x:n.x+(d.x-t.x)*r,y:n.y+(d.y-t.y)*o,w:d.w*r,h:d.h*o});return s}function Lr(e,t){let n=[];for(let r of t){if(!F(e.root,r.nodeId))continue;let o=Q(r.to);Q(r.from)!==o&&n.push({op:"set",id:r.nodeId,prop:r.prop,value:o})}return n}function Q(e){return Math.round(e*100)/100}function Dr(e,t,n,r){let o=new Set,s=[];for(let l of t)l.op==="set"&&(o.add(tt(l.id,l.prop)),s.push({nodeId:l.id,prop:l.prop}));if(s.length===0)return[];let i=[],d=new Set;for(let l of s)for(let f of n.get(tt(l.nodeId,l.prop))??[]){let p=tt(f.nodeId,f.prop);if(o.has(p)||d.has(p)||!F(e.root,f.nodeId))continue;let m=r.nodes.get(f.nodeId)?.values[f.prop];m!==void 0&&(d.add(p),i.push({op:"set",id:f.nodeId,prop:f.prop,value:Q(m)}))}return i}function Ul(e,t,n,r={x:0,y:0}){let o=[],s=new Set,i=e;for(;;){let d=[],l=Ie(i);for(let[f,p]of t){let m=n.get(f),y=F(i.root,p),v=l.nodes.get(p);if(!(!m||!y||!v))for(let C of Ct(y)){let _=tt(p,C);if(s.has(_))continue;let g=m[C],P=v.values[C];if(g===void 0||P===void 0)continue;let A=g+(C==="x"?r.x:C==="y"?r.y:0);Q(A)!==Q(P)&&(s.add(_),d.push({op:"set",id:p,prop:C,value:Q(A)}))}}if(d.length===0)return o;o.push(...d),i=_e(i,d).document}}function Pr(e,t,n=new Set){let r=Ie(e),o=Ie(t),s=[],i=j0(t.root);for(let[d,l]of o.nodes){if(n.has(d)||i.has(d))continue;let f=r.nodes.get(d),p=F(t.root,d);if(!(!f||!p))for(let m of Ct(p)){let y=f.values[m],v=l.values[m];y===void 0||v===void 0||Q(y)!==Q(v)&&s.push({op:"set",id:d,prop:m,value:Q(y)})}}return s}function j0(e){let t=new Set;return ne(e,n=>{if(n.type==="instance"){for(let r of n.children)ne(r,o=>{t.add(o.id)});return!1}}),t}function wi(e,t,n){let r=new Set,o=[];for(let s of t)s.op==="set"&&s.prop==="view"&&r.add(s.id);for(let s of t){if(s.op!=="set"||s.prop!=="w"&&s.prop!=="h"||r.has(s.id))continue;let i=F(e.root,s.id);if(i?.type!=="vector"||i.view!==void 0)continue;let d=n(s.id);d&&(r.add(s.id),o.push({op:"set",id:s.id,prop:"view",value:Un({x:0,y:0,w:d.w,h:d.h})}))}return o.length===0?[...t]:[...o,...t]}var K0=200,G0=100,q0=3,W0=.5;function He(e,t){return At(e.root,t)!==void 0}function Zt(e,t){let n=F(e.root,t);return n?.type==="frame"&&n.component===!0}function qo(e,t){if(t.length===0)return!1;let n=new Set;for(let r of t){if(r===e.root.id||He(e,r))return!1;let o=F(e.root,r);if(!o)return!1;let s=Ue(e.root,r);if(o.type==="frame"&&(o.component===!0||s?.id===e.root.id))return!1;n.add(s?.id)}return n.size===1}function zl(e,t,n){if(!qo(e,t))return null;let r=Ue(e.root,t[0]);if(!r)return null;let o=r.children.filter(A=>t.includes(A.id)),s=o.length===1?o[0]:void 0,i=pn(e.root),d,l,f;if(s?.type==="frame"){let A=n.nodes.get(s.id);rh(s.id,s.children,i);let{name:R,hidden:$,locked:D}=s,T={...s};for(let O of["x","y","w","h","name","hidden","locked"])delete T[O];d={...T,id:Nr(`${s.id}.main`,i),x:0,y:0,w:Q(A?.w??0),h:Q(A?.h??0),component:!0},l={type:"instance",id:s.id,...R===void 0?{}:{name:R},component:d.id,x:s.x,y:s.y,...s.w===d.w?{}:{w:s.w},...s.h===d.h?{}:{h:s.h},...$===void 0?{}:{hidden:$},...D===void 0?{}:{locked:D},children:[]};let V=O=>O===s.id?d.id:void 0;d={...d,children:d.children.map(O=>ih(O,V))},f=s.children}else{let A=X0(o,n);if(!A)return null;let R=Y0(e,r.id,n),$=Q(A.x-R.x),D=Q(A.y-R.y),T=s&&$e(s)?s:void 0,V=T?T.id:Nr("component",i),O=T?te(T):o;rh(V,O,i),d={type:"frame",id:Nr(`${V}.main`,i),x:0,y:0,w:Q(A.w),h:Q(A.h),component:!0,children:O.map(j=>ah(j,$,D))},l={type:"instance",id:V,...T?.name===void 0?{}:{name:T.name},component:d.id,x:$,y:D,...T?.type==="group"&&T.hidden!==void 0?{hidden:T.hidden}:{},...T?.type==="group"&&T.locked!==void 0?{locked:T.locked}:{},children:[]},f=O}let p=Wo(e,n);d={...d,x:p.x,y:p.y};let m=new Set;for(let A of f)ne(A,R=>{m.add(R.id)});let y=new Set(o.map(A=>A.id));for(let A of o)ne(A,R=>{y.add(R.id)});let v=Math.min(...o.map(A=>r.children.indexOf(A))),C=[...o.map(A=>({op:"remove",id:A.id})),{op:"insert",parent:r.id,index:v,node:l},{op:"insert",parent:e.root.id,index:e.root.children.length,node:d}],_=A=>m.has(A)&&A!==l.id?Mt(l.id,A):void 0;C.push(...J0(e,A=>!y.has(A.id),_)),C.push(...Z0(e,_));let g=[],P=_e(e,C).document;for(let A=0;A<q0;A+=1){let R=Ie(P),$=[];for(let D of m){let T=n.nodes.get(D),V=R.nodes.get(Mt(l.id,D)),O=F(P.root,D);if(!T||!V||!O||$e(O))continue;let j=O,M={x:T.absX-V.absX,y:T.absY-V.absY,w:T.w-V.w,h:T.h-V.h};for(let G of["x","y","w","h"]){if(Math.abs(M[G])<W0||j[G]===void 0)continue;let z=G==="x"?V.x:G==="y"?V.y:V[G];$.push({op:"set",id:D,prop:G,value:Q(z+M[G])}),g.includes(`${D}.${G}`)||g.push(`${D}.${G}`)}}if($.length===0)break;C.push(...$),P=_e(P,$).document}return{ops:C,componentId:d.id,instanceId:l.id,flattened:g}}function ki(e,t,n){let r=F(e.root,t);if(r?.type!=="instance"||He(e,t))return null;let o=Ue(e.root,t);if(!o)return null;let s=Ye(e.root).get(r.component),i=n.nodes.get(t),d=new Set;for(let m of r.children)ne(m,y=>{d.add(y.id)});let l=m=>m===r.component?t:d.has(Mt(t,m))?Mt(t,m):void 0,f={type:"frame",id:t,...r.name===void 0?{}:{name:r.name},x:r.x,y:r.y,w:r.w??Q(i?.w??0),h:r.h??Q(i?.h??0),...s?.background===void 0?{}:{background:s.background},...s?.clip===void 0?{}:{clip:s.clip},...s?.blend===void 0?{}:{blend:s.blend},...s?.shadow===void 0?{}:{shadow:s.shadow},...r.hidden===void 0?{}:{hidden:r.hidden},...r.locked===void 0?{}:{locked:r.locked},children:r.children.map(m=>oh(m,r,l))},p=o.children.findIndex(m=>m.id===t);return[{op:"remove",id:t},{op:"insert",parent:o.id,index:p,node:f}]}function oh(e,t,n){let r={...e};for(let[o,s]of Object.entries(r))ye(s)&&(r[o]=Si(s.expr,n)??s);if(e.type==="instance"){let o=e.id.slice(t.id.length+1),s={...e.overrides};for(let[d,l]of Object.entries(t.overrides??{})){if(!d.startsWith(`${o}.`))continue;let f=d.slice(o.length+1);s[f]={...s[f],...l}}let i={...r};return delete i.overrides,{...i,...Object.keys(s).length===0?{}:{overrides:s},children:[]}}return le(e)&&(r.children=e.children.map(o=>oh(o,t,n))),r}function jl(e,t,n){let r=F(e.root,t);if(r?.type!=="instance"||r.overrides===void 0)return[];if(n===void 0)return[{op:"set",id:t,prop:"overrides",value:void 0}];let o=n.startsWith(`${t}.`)?n.slice(t.length+1):n;if(r.overrides[o]===void 0)return[];let s={...r.overrides};return delete s[o],[{op:"set",id:t,prop:"overrides",value:Object.keys(s).length===0?void 0:s}]}function sh(e,t,n){let r=Wa(e.root,t);return r===void 0||!qa(e.root,n,r)}function Kl(e,t,n){let r=F(e.root,t),o=Ye(e.root),s=r?.type==="instance"?o.get(r.component):void 0,i=o.get(n);if(r?.type!=="instance"||!i||r.component===n)return[];if(!sh(e,t,n))return[];let d=new Map;s&&Gl(s.children,i.children,d);let l={};for(let[f,p]of Object.entries(r.overrides??{})){let m=F(i,f)?f:uh(f,d);F(i,m)&&(l[m]=p)}return[{op:"set",id:t,prop:"component",value:n},{op:"set",id:t,prop:"overrides",value:Object.keys(l).length===0?void 0:l}]}function Gl(e,t,n){e.forEach((r,o)=>{let s=t[o];!s||s.type!==r.type||(n.set(r.id,s.id),!(r.type==="instance"||s.type==="instance")&&Gl(te(r),te(s),n))})}function ql(e,t,n,r){if(!Zt(e,t))return null;let o=F(e.root,n);if(!o||!le(o)||o.type==="instance"||He(e,n))return null;let s=Nr(t.replace(/\.main$/,""),pn(e.root)),i={type:"instance",id:s,component:t,x:Q(r.x),y:Q(r.y),children:[]};return{ops:[{op:"insert",parent:n,index:o.children.length,node:i}],id:s}}function _i(e,t){return t.reduce((n,r)=>n+Ft(e.root,r).length,0)}function Wl(e,t,n){let r=[],o=e,s=new Set(t);for(let i=0;i<t.length+1;i+=1){let d=Ft(o.root).filter(l=>s.has(l.component)&&!Re(o.root,l.id).some(f=>s.has(f)));if(d.length===0)break;for(let l of d){let f=ki(o,l.id,n);f&&(r.push(...f),o=_e(o,f).document)}}for(let i of t)r.push({op:"remove",id:i});return r}function Wo(e,t){let n=e.root.children.flatMap(i=>{let d=t.nodes.get(i.id);return!d||$e(i)?[]:[{node:i,x:d.absX,y:d.absY,w:d.w,h:d.h}]}),r=n.filter(i=>i.node.type==="frame"&&i.node.component===!0);if(r.length>0){let i=Math.max(...r.map(l=>l.x+l.w)),d=Math.min(...r.map(l=>l.y));return{x:Q(i+G0),y:Q(d)}}if(n.length===0)return{x:0,y:0};let o=Math.min(...n.map(i=>i.x)),s=Math.max(...n.map(i=>i.y+i.h));return{x:Q(o),y:Q(s+K0)}}function rh(e,t,n){for(let r of t)ne(r,o=>{n.add(Mt(e,o.id))})}function ih(e,t){let n={...e};for(let[r,o]of Object.entries(e))ye(o)&&(n[r]=Si(o.expr,t)??o);return e.type==="instance"||!le(e)?n:{...n,children:e.children.map(r=>ih(r,t))}}function Nr(e,t){let n=e;for(let r=2;t.has(n);r+=1)n=`${e}.${r}`;return t.add(n),n}function X0(e,t){let n=1/0,r=1/0,o=-1/0,s=-1/0;for(let i of e)ne(i,d=>{if("hidden"in d&&d.hidden===!0)return!1;if($e(d))return;let l=t.nodes.get(d.id);return l&&(n=Math.min(n,l.absX),r=Math.min(r,l.absY),o=Math.max(o,l.absX+l.w),s=Math.max(s,l.absY+l.h)),!1});return Number.isFinite(n)?{x:n,y:r,w:o-n,h:s-r}:null}function Y0(e,t,n){let r=Re(e.root,t);for(let o=r.length-1;o>=0;o-=1){let s=F(e.root,r[o]);if(!s||$e(s))continue;let i=n.nodes.get(s.id);return i?{x:i.absX,y:i.absY}:{x:0,y:0}}return{x:0,y:0}}function ah(e,t,n){if($e(e))return{...e,children:te(e).map(o=>ah(o,t,n))};let r={...e};return typeof r.x=="number"&&(r.x=Q(r.x-t)),typeof r.y=="number"&&(r.y=Q(r.y-n)),r}function J0(e,t,n){let r=[];return ne(e.root,o=>{if(o.type==="instance"||!t(o))return!1;for(let[s,i]of Object.entries(o)){if(!ye(i))continue;let d=Si(i.expr,n);d&&r.push({op:"set",id:o.id,prop:s,value:d})}}),r}function Si(e,t){let n=ct(e);if(n.ok&&Xt(n.ast).nodes.some(r=>t(r)!==void 0))return{expr:Kn(Nt(n.ast,t))}}function Z0(e,t){let n=[];for(let[r,o]of Object.entries(e.motion??{})){let s=!1,i=o.lines.map(d=>{let l=t(d.id),f=d.after===void 0?void 0:t(d.after),p=d.with===void 0?void 0:t(d.with);return l===void 0&&f===void 0&&p===void 0?d:(s=!0,{...d,...l===void 0?{}:{id:l},...f===void 0?{}:{after:f},...p===void 0?{}:{with:p}})});if(s){let d={...o,lines:i};n.push({op:"setMotion",page:r,value:d})}}return n}function dh(e,t,n){let r=Ye(e.root),o=pn(e.root),s=new Map,i=new Map,d=new Map,l=[];for(let m of t){let y=r.get(m.id);if(y&&Q0(y,m)){s.set(m.id,m.id);continue}if(y&&n(m.id)){s.set(m.id,m.id);let _=new Map;Gl(m.children,y.children,_);let g=new Set;for(let P of y.children)ne(P,A=>{g.add(A.id)});for(let[P,A]of[..._])(g.has(P)||P===A)&&_.delete(P);i.set(m.id,_),d.set(m.id,g);continue}let v=o.has(m.id)?Nr(m.id,o):m.id;o.add(v),s.set(m.id,v);let C=new Map;for(let _ of m.children)ne(_,g=>(o.has(g.id)?C.set(g.id,Nr(g.id,o)):o.add(g.id),g.type==="instance"?!1:void 0));i.set(m.id,C),l.push(m)}let f=[],p=e;for(let m of l){let y={...lh(m,i.get(m.id)??new Map,s,i),id:s.get(m.id)??m.id,component:!0},v=Wo(p,Ie(p)),C={op:"insert",parent:p.root.id,index:p.root.children.length,node:{...y,x:v.x,y:v.y}};f.push(C),p=_e(p,[C]).document}return{ops:f,component:s,keys:i,parts:d}}function Ei(e,t){if(e.type==="instance"){let n=t.keys.get(e.component),r=t.parts?.get(e.component),o=Object.entries(e.overrides??{}).map(([i,d])=>[n===void 0?i:uh(i,n),d]).filter(([i])=>r===void 0||r.has(i)),s={...e,component:t.component.get(e.component)??e.component,overrides:Object.fromEntries(o),children:[]};return o.length===0&&delete s.overrides,s}return le(e)?{...e,children:e.children.map(n=>Ei(n,t))}:e}function lh(e,t,n,r){let o={...e,id:t.get(e.id)??e.id};if(t.size>0)for(let[i,d]of Object.entries(e)){if(!ye(d))continue;let l=Si(d.expr,f=>t.get(f));l&&(o[i]=l)}let s=o;return s.type==="instance"?Ei(s,{component:n,keys:r}):le(s)?{...s,children:s.children.map(i=>lh(i,t,n,r))}:s}function uh(e,t){let n=t.get(e);if(n!==void 0)return n;for(let[r,o]of t)if(e.startsWith(`${r}.`))return`${o}${e.slice(r.length)}`;return e}function Q0(e,t){return Ns({...e,x:0,y:0})===Ns({...t,x:0,y:0})}function ch(e,t,n,r,o){if(o===0)return Jt(e,t,n,r);let s=it({x:n,y:r},{x:0,y:0},-o),i=Jt(e,t,s.x,s.y),d=ft(e),l=ft(i),f={x:d.x-l.x,y:d.y-l.y},p=it(f,{x:0,y:0},o);return{...i,x:i.x+f.x-p.x,y:i.y+f.y-p.y}}function fh(e,t){return Math.atan2(t.y-e.y,t.x-e.x)*180/Math.PI}function ph(e,t,n,r,o){let s=fh(e,n)-fh(e,t);return o?Math.round((r+s)/o)*o-r:s}function mh(e,t,n){return e.map(r=>{let o=ft(r.frame),s=it(o,t,n);return{id:r.id,frame:{...r.frame,x:s.x-r.frame.w/2,y:s.y-r.frame.h/2},rotation:Po(r.rotation+n)}})}function hh(e,t,n,r){let o=n.w===0?1:r.w/n.w,s=n.h===0?1:r.h/n.h,i=t*Math.PI/180,d=Math.cos(i),l=Math.sin(i),f=e.w*Math.hypot(o*d,s*l),p=e.h*Math.hypot(o*l,s*d),m=ft(e),y=r.x+(m.x-n.x)*o,v=r.y+(m.y-n.y)*s;return{x:y-f/2,y:v-p/2,w:f,h:p}}function Ge(e,t){return`${e}:${t}`}function Ai(e){let[t,n]=e.split(":").map(Number);if(!(t===void 0||n===void 0||!Number.isInteger(t)||!Number.isInteger(n)))return{contour:t,index:n}}function xh(e){let t=e.split(":"),n=t[2],r=Ai(t.slice(0,2).join(":"));if(!(!r||n!=="in"&&n!=="out"))return{...r,side:n}}function Yl(e,t){let n=Ai(t);return n?e[n.contour]?.anchors[n.index]:void 0}function Jl(e,t){let n=[];for(let r of t){let o=Ai(r);o&&e[o.contour]?.anchors[o.index]&&n.push(Ge(o.contour,o.index))}return n}function Zl(e){return e.flatMap((t,n)=>t.anchors.map((r,o)=>Ge(n,o)))}function Xl(e,t,n,r){return e.map((o,s)=>s===t?{...o,anchors:o.anchors.map((i,d)=>d===n?r:i)}:o)}var Xo=(e,t,n)=>({x:e.x+t,y:e.y+n});function $i(e,t,n,r){return e.map((o,s)=>({...o,anchors:o.anchors.map((i,d)=>t.has(Ge(s,d))?Dt(Xo(i,n,r),i.in&&Xo(i.in,n,r),i.out&&Xo(i.out,n,r)):i)}))}function Ci(e){if(!e.in||!e.out)return!1;let t=e.in.x-e.x,n=e.in.y-e.y,r=e.out.x-e.x,o=e.out.y-e.y,s=Math.hypot(t,n),i=Math.hypot(r,o);return s===0||i===0?!1:(t*r+n*o)/(s*i)<-.995}function Mi(e,t,n,r,o,s){let i=e[t]?.anchors[n];if(!i)return[...e];let l=i[r==="in"?"out":"in"];if(s.smooth&&!s.breakSmooth&&l){let p=Math.hypot(l.x-i.x,l.y-i.y),m=o.x-i.x,y=o.y-i.y,v=Math.hypot(m,y);v>0&&(l={x:i.x-m/v*p,y:i.y-y/v*p})}let f=r==="in"?Dt(i,o,l):Dt(i,l,o);return Xl(e,t,n,f)}function gh(e,t){let n=Ai(t),r=n?e[n.contour]:void 0,o=r?.anchors[n?.index??-1];if(!n||!r||!o)return[...e];if(o.in||o.out)return Xl(e,n.contour,n.index,Dt(o));let s=r.anchors.length,i=n.index>0?r.anchors[n.index-1]:r.closed?r.anchors[s-1]:void 0,d=n.index<s-1?r.anchors[n.index+1]:r.closed?r.anchors[0]:void 0;if(!i&&!d)return[...e];let l=i??o,f=d??o,p=f.x-l.x,m=f.y-l.y,y=Math.hypot(p,m);if(y===0)return[...e];p/=y,m/=y;let v=i?Math.hypot(o.x-i.x,o.y-i.y)/3:0,C=d?Math.hypot(d.x-o.x,d.y-o.y)/3:0,_=i?{x:o.x-p*v,y:o.y-m*v}:void 0,g=d?{x:o.x+p*C,y:o.y+m*C}:void 0;return Xl(e,n.contour,n.index,Dt(o,_,g))}function yh(e,t){let n=[];return e.forEach((r,o)=>{let s=r.anchors.filter((i,d)=>!t.has(Ge(o,d)));s.length>=2&&n.push({closed:r.closed,anchors:s})}),n}function vh(e,t,n,r,o,s,i){let d=e[t];if(!d)return[...e];let l=d.anchors.length,f=(n+1)%l;if(i)return $i(e,new Set([Ge(t,n),Ge(t,f)]),o,s);let p=Math.min(.85,Math.max(.15,r)),m=1/(3*(1-p)*p),y=d.anchors[n],v=d.anchors[f],C=Xo(y.out??y,o*m,s*m),_=Xo(v.in??v,o*m,s*m),g=Mi(e,t,n,"out",C,{smooth:Ci(y),breakSmooth:!1});return g=Mi(g,t,f,"in",_,{smooth:Ci(v),breakSmooth:!1}),g}function bh(e,t){return e.map((n,r)=>n.closed||n.anchors.length<2?n:t.size===0||t.has(Ge(r,0))&&t.has(Ge(r,n.anchors.length-1))?{...n,closed:!0}:n)}function Ql(e,t){let n=[],r=new Set,o=(s,i,d)=>{let l=e[s]?.anchors[i],f=l?.[d],p=`${Ge(s,i)}:${d}`;!l||!f||r.has(p)||(r.add(p),n.push({key:p,at:f,anchor:l}))};return e.forEach((s,i)=>{let d=s.anchors.length;s.anchors.forEach((l,f)=>{if(!t.has(Ge(i,f)))return;o(i,f,"in"),o(i,f,"out");let p=f>0?f-1:s.closed?d-1:-1,m=f<d-1?f+1:s.closed?0:-1;p>=0&&o(i,p,"out"),m>=0&&o(i,m,"in")})}),n}function Yo(e,t){let n=t.x-e.x,r=t.y-e.y,o=Math.round(Math.atan2(r,n)/(Math.PI/4))*(Math.PI/4),s=n*Math.cos(o)+r*Math.sin(o);return{x:e.x+Math.cos(o)*s,y:e.y+Math.sin(o)*s}}function wh(e){return{closed:e.closed,anchors:[...e.anchors].reverse().map(t=>Dt(t,t.out,t.in))}}function eu(e){if(!e)return null;for(let t of e.items){if(t.kind!=="file"||!t.type.startsWith("image/"))continue;let n=t.getAsFile();if(n)return n}return null}async function Oi(e,t){if(_h(e))return nw(e,t);let n;try{n=await createImageBitmap(e)}catch{return null}try{let r=Math.min(1,t/Math.max(n.width,n.height));return r>=1?{bytes:new Uint8Array(await e.arrayBuffer()),type:e.type||"image/png",width:n.width,height:n.height}:await ew(n,r,e.type)}finally{n.close()}}async function ew(e,t,n){let r=Math.max(1,Math.round(e.width*t)),o=Math.max(1,Math.round(e.height*t)),s=document.createElement("canvas");s.width=r,s.height=o;let i=s.getContext("2d");if(!i)return null;i.drawImage(e,0,0,r,o);let d=n==="image/png"?"image/png":"image/webp",l=await new Promise(f=>{s.toBlob(f,d,.9)});return l?{bytes:new Uint8Array(await l.arrayBuffer()),type:l.type||d,width:r,height:o}:null}function kh(e,t,n,r){let o=Math.min(1,n/e,r/t);return{w:Math.round(e*o),h:Math.round(t*o)}}function _h(e){return e.type==="image/svg+xml"||/\.svg$/i.test(e.name??"")}var tw=1024;function Sh(e){let t=/<svg\b[^>]*>/i.exec(e)?.[0];if(t===void 0)return null;let n=f=>new RegExp(`\\s${f}\\s*=\\s*["']([^"']*)["']`,"i").exec(t)?.[1],r=f=>{let p=/^\s*([\d.]+)\s*(px)?\s*$/i.exec(f??""),m=p===null?NaN:Number(p[1]);return m>0?m:void 0},o=r(n("width")),s=r(n("height"));if(o!==void 0&&s!==void 0)return{width:o,height:s};let i=(n("viewBox")??"").trim().split(/[\s,]+/).map(Number),[,,d=NaN,l=NaN]=i;return i.length===4&&d>0&&l>0?o!==void 0?{width:o,height:o*l/d}:s!==void 0?{width:s*d/l,height:s}:{width:d,height:l}:null}async function nw(e,t){let n=await e.text(),r=Sh(n);if(r===null)return null;let o=Math.min(t,tw)/Math.max(r.width,r.height),s=Math.max(1,Math.round(r.width*o)),i=Math.max(1,Math.round(r.height*o)),d=n.replace(/<svg\b[^>]*>/i,f=>f.replace(/\s(width|height)\s*=\s*["'][^"']*["']/gi,"").replace(/^<svg/i,`<svg width="${s}" height="${i}"`)),l=URL.createObjectURL(new Blob([d],{type:"image/svg+xml"}));try{let f=new Image;f.src=l,await f.decode();let p=document.createElement("canvas");p.width=s,p.height=i;let m=p.getContext("2d");if(!m)return null;m.drawImage(f,0,0,s,i);let y=await new Promise(v=>{p.toBlob(v,"image/png")});return y?{bytes:new Uint8Array(await y.arrayBuffer()),type:"image/png",width:s,height:i}:null}catch{return null}finally{URL.revokeObjectURL(l)}}function Ti(e){let t=Ut(e);return e.root.children.filter(n=>t.has(n.id)&&Bn(e.motion?.[n.id])).map(n=>n.id)}function Li(e,t,n){let r=Ti(e);if(r.length===0)return null;let o=gt(e);for(let s of t){let i=o.get(s);if(i!==void 0&&r.includes(i))return i}return n!==null&&r.includes(n)?n:r[0]??null}var rw=1e3/30;var ow=/\.(?:mp3|m4a|aac|wav|ogg|oga|opus|flac|webm)$/i;function Eh(e){return e.type.startsWith("audio/")||e.type===""&&ow.test(e.name)}var sw=new Set(["loop","step","together"]);function Ch(e,t,n){let r=e.motion?.[t]?.music?.asset;if(r!==void 0&&e.assets[r]===void 0)return r;let o=n.replace(/\.[^.]+$/,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"music";if((!/^[a-z]/.test(o)||sw.has(o))&&(o=`track-${o}`),e.assets[o]===void 0)return o;for(let s=2;;s+=1)if(e.assets[`${o}-${s}`]===void 0)return`${o}-${s}`}function Mh(e,t,n,r){let o=e.motion?.[t]??{lines:[]},s=o.music,i={asset:n};if(s&&s.asset===n)i=s;else if(s){let d={...s,asset:n};delete d.from,i=d}return[{op:"setAsset",name:n,value:r},{op:"setMotion",page:t,value:{...o,music:i}}]}var iw={left:"x",hcenter:"x",right:"x",top:"y",vcenter:"y",bottom:"y"};function Di(e){return iw[e]}function aw(e,t,n){switch(e){case"left":return t.x;case"hcenter":return t.x+(t.w-n)/2;case"right":return t.x+t.w-n;case"top":return t.y;case"vcenter":return t.y+(t.h-n)/2;case"bottom":return t.y+t.h-n}}function tu(e,t,n){let r=Di(n),o=new Map;for(let s of e){let i=r==="x"?s.frame.w:s.frame.h,d=r==="x"?s.frame.x:s.frame.y;o.set(s.id,aw(n,t,i)-d)}return o}var Ah=[{key:"nw",sx:0,sy:0},{key:"ne",sx:1,sy:0},{key:"se",sx:1,sy:1},{key:"sw",sx:0,sy:1}],dw={id:"radius",prop:"radius",handles(e,t,n){let r=this.max(e),o=Math.min(Math.max(t,n),Math.max(r,n));return Ah.map(({key:s,sx:i,sy:d})=>({id:`radius:${s}`,at:{x:e.x+(i===0?o:e.w-o),y:e.y+(d===0?o:e.h-o)}}))},valueAt(e,t,n){let r=uw(t);if(!r)return 0;let o=e.x+(r.sx===0?0:e.w),s=e.y+(r.sy===0?0:e.h),i=Math.max(0,r.sx===0?n.x-o:o-n.x),d=Math.max(0,r.sy===0?n.y-s:s-n.y);return Math.min((i+d)/2,this.max(e))},max(e){return Math.max(0,Math.min(e.w,e.h)/2)}},lw={canvas:[],frame:[],group:[],rect:[dw]};function Jo(e){return lw[e.type]??[]}function Pi(e,t){let n=t.split(":")[0];return Jo(e).find(r=>r.id===n)}function uw(e){let t=e.split(":")[1];return Ah.find(n=>n.key===t)}var nu=[["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 ru=[["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 ou=[["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 su=[["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 iu=[["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 au=[["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 du=[["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 lu=[["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 uu=[["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 fu=[["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 cu=[["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 pu=[["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 mu=[["circle",{cx:"15",cy:"9",r:"7"}],["circle",{cx:"9",cy:"15",r:"7"}]];var hu=[["path",{d:"M20 6 9 17l-5-5"}]];var xu=[["path",{d:"m6 9 6 6 6-6"}]];var gu=[["path",{d:"m9 18 6-6-6-6"}]];var yu=[["circle",{cx:"12",cy:"12",r:"10"}]];var vu=[["path",{d:"M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z"}],["path",{d:"M2.297 11.293a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0z"}],["path",{d:"M8.916 17.912a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0z"}],["path",{d:"M8.916 4.674a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z"}]];var bu=[["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z"}]];var wu=[["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 ku=[["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 _u=[["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 Su=[["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 Eu=[["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 Cu=[["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 Mu=[["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 Au=[["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 Ni=[["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 $u=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4"}]];var Ou=[["path",{d:"M12 11.4V9.1"}],["path",{d:"m12 17 6.59-6.59"}],["path",{d:"m15.05 5.7-.218-.691a3 3 0 0 0-5.663 0L4.418 19.695A1 1 0 0 0 5.37 21h13.253a1 1 0 0 0 .951-1.31L18.45 16.2"}],["circle",{cx:"20",cy:"9",r:"2"}]];var Tu=[["path",{d:"M5 12h14"}]];var Lu=[["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 Du=[["path",{d:"m18 8 4 4-4 4"}],["path",{d:"M2 12h20"}],["path",{d:"m6 8-4 4 4 4"}]];var Pu=[["path",{d:"M12 2v20"}],["path",{d:"m8 18 4 4 4-4"}],["path",{d:"m8 6 4-4 4 4"}]];var Nu=[["path",{d:"M9 18V5l12-2v13"}],["circle",{cx:"6",cy:"18",r:"3"}],["circle",{cx:"18",cy:"16",r:"3"}]];var Iu=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1"}]];var Ru=[["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 Fu=[["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 Bu=[["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 Hu=[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]];var Vu=[["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 Uu=[["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 zu=[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2"}],["circle",{cx:"12",cy:"12",r:"1"}],["path",{d:"M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0"}]];var ju=[["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 Ku=[["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 Gu=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}]];var Ii=[["path",{d:"M21 5H3"}],["path",{d:"M21 12H9"}],["path",{d:"M21 19H7"}]];var Ri=[["path",{d:"M21 5H3"}],["path",{d:"M17 12H7"}],["path",{d:"M19 19H5"}]];var Fi=[["path",{d:"M3 5h18"}],["path",{d:"M3 12h18"}],["path",{d:"M3 19h18"}]];var Zo=[["path",{d:"M21 5H3"}],["path",{d:"M15 12H3"}],["path",{d:"M17 19H3"}]];var qu=[["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 Wu=[["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 Xu=[["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 Yu=[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"}],["path",{d:"M16 9a5 5 0 0 1 0 6"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728"}]];var Ju=[["path",{d:"M11 4.702a.7.7 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.7.7 0 0 0 11 19.298z"}],["path",{d:"m16.5 14.5 5-5"}],["path",{d:"m16.5 9.5 5 5"}]];var Zu=[["path",{d:"M18 6 6 18"}],["path",{d:"m6 6 12 12"}]];var Qo=e=>e.replace(/\b(?:CmdOrCtrl|CommandOrControl)\b/g,"Ctrl");function $h(e,t){let r=e.ownerDocument.createElement("div");r.className="vd-chrome",r.setAttribute("role","toolbar"),r.setAttribute("aria-label","Canvas tools"),r.innerHTML=fw(t),e.appendChild(r);let o=new Map;for(let p of r.querySelectorAll("[data-tool]"))o.set(p.dataset.tool,p);let s=r.querySelector('[data-act="undo"]'),i=r.querySelector('[data-act="redo"]'),d=r.querySelector('[data-act="zoom"]'),l=p=>{let m=p.target?.closest("button");if(!m)return;p.stopPropagation();let y=m.dataset.tool;if(y){t.onTool(y);return}switch(m.dataset.act){case"undo":t.onUndo();return;case"redo":t.onRedo();return;case"zoom":t.onZoomReset();return;case"play":t.onPlay?.();return}},f=p=>p.stopPropagation();return r.addEventListener("click",l),r.addEventListener("pointerdown",f),{element:r,setTool(p){for(let[m,y]of o)y.setAttribute("aria-pressed",String(m===p))},setHistory(p,m){s&&(s.disabled=!p),i&&(i.disabled=!m)},setZoom(p){d&&(d.textContent=`${Math.round(p*100)}%`)},destroy(){r.removeEventListener("click",l),r.removeEventListener("pointerdown",f),r.remove()}}}function fw(e){let t=e.formatKeys??Qo;return[Qt({tool:"select",label:"Select",hint:"V",icon:"select"}),Qt({tool:"frame",label:"Frame",hint:"F",icon:"frame"}),Qt({tool:"rect",label:"Rectangle",hint:"R",icon:"rect"}),Qt({tool:"ellipse",label:"Ellipse",hint:"O",icon:"ellipse"}),Qt({tool:"pen",label:"Pen",hint:"P",icon:"pen"}),Qt({tool:"text",label:"Text",hint:"T",icon:"text"}),'<span class="vd-chrome__divider"></span>',Qt({act:"undo",label:"Undo",hint:t("CmdOrCtrl+Z"),icon:"undo"}),Qt({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>',Qt({act:"play",label:"Play",hint:e.playHint,icon:"play"})]:[]].join("")}function Qt(e){let t=e.tool?`data-tool="${e.tool}"`:`data-act="${e.act??""}"`,n=e.tool?' aria-pressed="false"':"";return`<button type="button" class="vd-chrome__tool" ${t}${n} title="${e.hint?`${e.label} \xB7 ${e.hint}`:e.label}" aria-label="${e.label}">`+nt(e.icon)+"</button>"}var cw={select:Lu,frame:Eu,rect:Gu,ellipse:yu,pen:Ru,vector:ju,text:qu,undo:Wu,redo:Vu,"align-left":lu,"align-hcenter":ou,"align-right":iu,"align-top":du,"align-vcenter":ru,"align-bottom":su,"distribute-h":au,"distribute-v":uu,group:Cu,component:vu,instance:bu,image:Mu,eye:ku,"eye-off":_u,lock:$u,unlock:Ni,chevron:gu,"text-left":Zo,"text-center":Ri,"text-right":Ii,"text-justify":Fi,"text-top":pu,"text-middle":fu,"text-bottom":cu,unlink:Xu,rotate:Uu,opacity:wu,radius:Ku,blend:mu,plus:Hu,minus:Tu,close:Zu,"chevron-down":xu,check:hu,link:Au,"font-size":nu,"line-height":Pu,"letter-spacing":Du,eyedropper:Fu,document:Su,play:Bu,pause:Iu,scan:zu,music:Nu,metronome:Ou,sound:Yu,"sound-off":Ju};function nt(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">${cw[e].map(([n,r])=>{let o=Object.entries(r).filter(([s])=>s!=="key").map(([s,i])=>` ${s}="${String(i)}"`).join("");return`<${n}${o} vector-effect="non-scaling-stroke"/>`}).join("")}</svg>`}var Qu="clipboard";function es(e,t){let n=new Set(t),r=[];return ne(e.root,o=>{if(o.id!==e.root.id&&n.has(o.id))return r.push(o),!1}),r}function Oh(e,t){let n={};for(let s of e)ne(s,i=>{for(let[d,l]of Object.entries(i)){if(ye(l)){let f=ct(l.expr);if(!f.ok)continue;for(let p of Xt(f.ast).tokens){let m=t[p];m!==void 0&&(n[p]=m)}continue}typeof l=="string"&&o(l),d==="shadow"&&typeof l=="string"&&r(l)}for(let d of Lh(i.content))o(d)});return n;function r(s){let i=t[s],l=Er(typeof i=="string"?i:s);if(!("error"in l))for(let f of l.shadows)o(f.colour)}function o(s){for(let i of ni(s)){let d=t[i];if(d!==void 0&&(n[i]=d,!(typeof d!="string"||d===s)))for(let l of ni(d)){let f=t[l];f!==void 0&&l!==i&&(n[l]=f)}}}}function pw(e,t){let n={};for(let r of e)ne(r,o=>{if(o.type!=="image"||typeof o.src!="string")return;let s=t[o.src];s!==void 0&&(n[o.src]=s)});return n}function Th(e,t){let n={},r=o=>{if(typeof o!="string")return;let s=t[o];s!==void 0&&(n[o]=s)};for(let o of e)ne(o,s=>{let i=s;r(i.font);for(let d of Lh(i.content,"font"))r(d)});return n}function Lh(e,t="fill"){if(!Array.isArray(e))return[];let n=[];for(let r of e){if(typeof r=="string")continue;let o=r[t];o!==void 0&&n.push(o)}return n}function ef(e,t,n){let r=es(e,t);if(r.length===0)return null;let o=mw(e,r),s=[...r,...o],i={};for(let f of r)ne(f,p=>{let m=n.nodes.get(p.id)?.values;m&&Object.keys(m).length>0&&(i[p.id]=m)});let d={version:e.version,kind:e.kind,tokens:Oh(s,e.tokens),fonts:Th(s,e.fonts),assets:pw(s,e.assets),root:{...e.root,children:s}},l=JSON.parse(ud(d));return l[Qu]={resolved:i,...o.length===0?{}:{components:o.map(f=>f.id)}},JSON.stringify(l,null,2)}function mw(e,t){let n=Ye(e.root),r=new Set(t.map(i=>i.id)),o=new Map,s=i=>{ne(i,d=>{if(d.type!=="instance")return;let l=n.get(d.component);return l&&!r.has(l.id)&&!o.has(l.id)&&(o.set(l.id,l),s(l)),!1})};return t.forEach(s),[...o.values()]}function tf(e){let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!="object"||t===null)return null;let n=t;if(typeof n.root!="object"||n.root===null)return null;let{document:r}=Gd(t),o=n[Qu],s=typeof o=="object"&&o!==null?o:{},i=s.resolved??{},d=Array.isArray(s.components)?new Set(s.components.filter(p=>typeof p=="string")):new Set,l=r.root.children.filter(p=>p.type==="frame"&&d.has(p.id)),f=r.root.children.filter(p=>!d.has(p.id));return f.length===0?null:{nodes:f,...l.length===0?{}:{components:l},tokens:r.tokens,fonts:r.fonts,resolved:typeof i=="object"&&i!==null?i:{}}}function nf(e,t){let n=pn(t.root),r=new Map;for(let i of e.nodes)ne(i,d=>{let l=hw(d.id,n);return n.add(l),r.set(d.id,l),d.type==="instance"?!1:void 0});let o=i=>n.has(i),s={...e.tokens,...t.tokens};return{nodes:e.nodes.map(i=>Dh(i,{payload:e,remap:r,exists:o,tokens:s})),remap:r}}function hw(e,t){let n=e.lastIndexOf("."),r=n===-1?"":e.slice(n+1),o=/^[0-9]+$/.test(r)?e.slice(0,n):e,s=1;for(let i of t){if(!i.startsWith(`${o}.`))continue;let d=Number(i.slice(o.length+1));Number.isInteger(d)&&d>=s&&(s=d+1)}return`${o}.${s}`}function Dh(e,t){let n=e,r={};for(let[o,s]of Object.entries(n))o==="id"||o==="children"||(r[o]=ye(s)?xw(s.expr,e.id,o,t):s);return r.id=t.remap.get(e.id)??e.id,e.type==="instance"?r.children=[]:le(e)&&(r.children=te(e).map(o=>Dh(o,t))),r}function xw(e,t,n,r){let o={expr:e},s=ct(e);if(!s.ok)return o;let i=Xt(s.ast).nodes.some(p=>r.remap.has(p)),d=i?Nt(s.ast,p=>r.remap.get(p)):s.ast,l=Xt(d);if(l.nodes.some(p=>!r.exists(p))||l.tokens.some(p=>r.tokens[p]===void 0)){let p=r.payload.resolved[t]?.[n];return p===void 0?o:p}return i?{expr:Kn(d)}:o}var en="#ffffff",bn="#0b0d0c",Fh="#c6ff3d",gw="#ffb224";var Ph=new Map;function qe(e,t={}){let n=t.badge??"none",r=e==="resize"?Bh(t.angle??0):e==="rotate"?vw(t.angle??0):0,o=`${e}:${r}:${n}`,s=Ph.get(o);if(s!==void 0)return s;let{at:i,fallback:d}=yw[e],l=kw(bw(e,r,n),i[0],i[1],d);return Ph.set(o,l),l}var Nh=[2,2],Ir=[12,12],yw={arrow:{at:Nh,fallback:"default"},radius:{at:Nh,fallback:"default"},resize:{at:Ir,fallback:"ew-resize"},rotate:{at:Ir,fallback:"crosshair"},crosshair:{at:Ir,fallback:"crosshair"},grab:{at:Ir,fallback:"grab"},grabbing:{at:Ir,fallback:"grabbing"},text:{at:Ir,fallback:"text"}};function vw(e){let t=(e%360+360)%360;return Math.round(t/15)*15%360}function Bh(e){let t=(e%180+180)%180;return Math.round(t/15)*15%180}function bw(e,t,n){switch(e){case"arrow":return Hh(n);case"resize":return _w(t,n);case"rotate":return Sw(t);case"crosshair":return Cw();case"grab":return Rh(!1);case"grabbing":return Rh(!0);case"radius":return Mw(n);case"text":return Ew()}}function ww(e){return`<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">${e}</svg>`}function kw(e,t,n,r){return`url("data:image/svg+xml,${encodeURIComponent(ww(e))}") ${t} ${n}, ${r}`}var Ih="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 Hh(e){return`<path d="${Ih}" fill="${en}" stroke="${en}" stroke-width="3" stroke-linejoin="round"/><path d="${Ih}" fill="${bn}"/>`+Vh(e)}function _w(e,t){let n=["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"],r=(o,s)=>n.map(i=>`<path d="${i}" stroke="${s}" stroke-width="${o}"/>`).join("");return`<g transform="rotate(${e} 12 12)" fill="none" stroke-linecap="round" stroke-linejoin="round">`+r(3.6,en)+r(1.6,bn)+"</g>"+Vh(t)}function Sw(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"],n=(r,o)=>t.map(s=>`<path d="${s}" stroke="${o}" stroke-width="${r}"/>`).join("");return`<g transform="rotate(${e} 12 12)" fill="none" stroke-linecap="round" stroke-linejoin="round">`+n(3.6,en)+n(1.6,bn)+"</g>"}function Ew(){let e=["M12 4.5 V19.5","M9 4.5 H15","M9 19.5 H15"],t=(n,r)=>e.map(o=>`<path d="${o}" stroke="${r}" stroke-width="${n}"/>`).join("");return'<g fill="none" stroke-linecap="round">'+t(3.4,en)+t(1.5,bn)+"</g>"}function Cw(){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="${en}" stroke-width="3"/><path d="${e}" stroke="${bn}" stroke-width="1.2"/></g>`}function Rh(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="${en}" stroke-width="3.4"/><path d="${t}" stroke="${bn}" stroke-width="1.5"/></g>`}function Mw(e){return Hh("none")+Aw(e)}function Aw(e){return`<g><rect x="17.5" y="17.5" width="14" height="14" rx="4.5" fill="${en}"/><rect x="18.7" y="18.7" width="11.6" height="11.6" rx="3.4" fill="${e==="none"?Fh:gw}"/><path d="M21.6 27.9 V25.4 A3.8 3.8 0 0 1 25.4 21.6 H27.9" fill="none" stroke="${bn}" stroke-width="1.5" stroke-linecap="round"/></g>`}function Vh(e){return e==="none"?"":`<g><rect x="18.5" y="18.5" width="13" height="13" rx="4" fill="${en}"/><rect x="19.6" y="19.6" width="10.8" height="10.8" rx="3" fill="${Fh}"/><text x="25" y="28.4" text-anchor="middle" fill="${bn}" font-family="ui-sans-serif, system-ui, -apple-system, Helvetica, sans-serif" font-size="10" font-weight="700">${e==="token"?"$":"\u0192"}</text></g>`}var rf=6,tn=.01,pt={dx:0,dy:0,guides:[],measures:[]},Bi=["lo","mid","hi"];function of(e,t,n){let r=[],o=(s,i)=>{let d=t.nodes.get(s);d&&r.push({id:s,frame:Ko(d),isPage:i})};return e.root.w!==void 0&&e.root.h!==void 0&&o(e.root.id,!0),ne(e.root,s=>{if(n.has(s.id)||"hidden"in s&&s.hidden===!0)return!1;if(s.id!==e.root.id){if(s.type==="instance"){o(s.id,!1);return}if(s.type==="frame"){o(s.id,!0);return}le(s)||o(s.id,!1)}}),r}function sf(e,t,n){if(n<=0||t.length===0)return pt;let r=Rr("x",e,t,n,Bi,!0),o=Rr("y",e,t,n,Bi,!0);return df(e,t,r,o)}function Hi(e,t,n,r){if(r<=0||n.length===0)return pt;let o=t.includes("w")?["lo"]:t.includes("e")?["hi"]:[],s=t.includes("n")?["lo"]:t.includes("s")?["hi"]:[],i=Rr("x",e,n,r,o,!1),d=Rr("y",e,n,r,s,!1);return df(e,n,i,d)}function af(e,t,n){let r={x:e.x,y:e.y,w:0,h:0};if(n<=0||t.length===0)return pt;let o=Rr("x",r,t,n,["lo"],!1),s=Rr("y",r,t,n,["lo"],!1);return df(r,t,o,s)}function Rr(e,t,n,r,o,s){let i={axis:e,delta:0,kind:"none"};if(o.length===0)return i;let d=$w(e,t,n,r,o),l=s?Tw(e,t,n,r):null;return d&&l?Math.abs(l.delta)<Math.abs(d.delta)-tn?{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 $w(e,t,n,r,o){let s=null;for(let i of n)for(let d of Bi){let l=ke(i.frame,e,d);for(let f of o){let p=l-ke(t,e,f);if(Math.abs(p)>r)continue;let m=f==="mid"&&d==="mid";(s===null||Ow(p,m,s))&&(s={at:l,delta:p,centred:m})}}return s?{at:s.at,delta:s.delta}:null}function Ow(e,t,n){let r=Math.abs(e),o=Math.abs(n.delta);return r<o-tn?!0:r>o+tn?!1:t&&!n.centred}function Tw(e,t,n,r){let o=Uh(e,t,n);if(o.length<2)return null;let s=zh(t,e),i=ke(t,e,"lo"),d=[];for(let f of Lw(o,e))for(let p of o)d.push({delta:ke(p,e,"hi")+f-i,gap:f}),d.push({delta:ke(p,e,"lo")-f-s-i,gap:f});for(let f=0;f+1<o.length;f+=1){let p=o[f],m=o[f+1];if(!p||!m)continue;let y=ke(m,e,"lo")-ke(p,e,"hi")-s;y<=tn||d.push({delta:ke(p,e,"hi")+y/2-i,gap:y/2})}let l=null;for(let f of d)Math.abs(f.delta)>r||(l===null||Math.abs(f.delta)<Math.abs(l.delta)-tn)&&(l=f);return l}function Uh(e,t,n){let r=lf(e);return n.filter(o=>!o.isPage&&Nw(o.frame,t,r)).map(o=>o.frame).sort((o,s)=>ke(o,e,"lo")-ke(s,e,"lo"))}function Lw(e,t){let n=[];for(let r=0;r+1<e.length;r+=1){let o=e[r],s=e[r+1];if(!o||!s)continue;let i=ke(s,t,"lo")-ke(o,t,"hi");i<=tn||n.some(d=>Math.abs(d-i)<tn)||n.push(i)}return n}function df(e,t,n,r){let o={...e,x:e.x+n.delta,y:e.y+r.delta},s=[],i=[];for(let d of[n,r]){if(d.kind==="align"&&d.at!==void 0){let l=Dw(d.axis,d.at,o,t);l&&s.push(l)}d.kind==="space"&&d.gap!==void 0&&i.push(...Pw(d.axis,d.gap,o,t))}return{dx:n.delta,dy:r.delta,guides:s,measures:i}}function Dw(e,t,n,r){let o=lf(e),s=ke(n,o,"lo"),i=ke(n,o,"hi"),d=!1;for(let l of r)Bi.some(f=>Iw(ke(l.frame,e,f),t))&&(d=!0,s=Math.min(s,ke(l.frame,o,"lo")),i=Math.max(i,ke(l.frame,o,"hi")));return d?{axis:e,at:t,from:s,to:i}:null}function Pw(e,t,n,r){let o=lf(e),s=[...Uh(e,n,r),n].sort((d,l)=>ke(d,e,"lo")-ke(l,e,"lo")),i=[];for(let d=0;d+1<s.length;d+=1){let l=s[d],f=s[d+1];if(!l||!f)continue;let p=ke(f,e,"lo")-ke(l,e,"hi");if(Math.abs(p-t)>tn)continue;let m=Math.max(ke(l,o,"lo"),ke(f,o,"lo")),y=Math.min(ke(l,o,"hi"),ke(f,o,"hi"));i.push({axis:e,at:(m+y)/2,from:ke(l,e,"hi"),to:ke(f,e,"lo"),label:Rw(p)})}return i}function lf(e){return e==="x"?"y":"x"}function zh(e,t){return t==="x"?e.w:e.h}function ke(e,t,n){let r=t==="x"?e.x:e.y,o=zh(e,t);return n==="lo"?r:n==="hi"?r+o:r+o/2}function Nw(e,t,n){return ke(e,n,"lo")<ke(t,n,"hi")&&ke(e,n,"hi")>ke(t,n,"lo")}function Iw(e,t){return Math.abs(e-t)<tn}function Rw(e){return String(Math.round(e*100)/100)}var ts=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 n=this.past[this.past.length-1];return n?(this.past[this.past.length-1]={label:t.label,ops:[...n.ops,...t.ops],inverse:[...t.inverse,...n.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 n=this.past.length-t.length;return t.every((r,o)=>this.past[n+o]===r)}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 jh=1,Fw=48,Bw=.06,Hw=.5;function Kh(e){return Math.max(Fw,Math.min(e.width,e.height)*Bw)}function uf(e,t){let n=new Set(t),r=[];for(let o of e.root.children)(n.has(o.id)||Gh(o,n))&&r.push(o.id);return r}function Gh(e,t){for(let n of te(e))if(t.has(n.id)||Gh(n,t))return!0;return!1}function Vi(e){let t=e.filter(i=>i.w>0&&i.h>0);if(t.length===0)return null;let n=Math.min(...t.map(i=>i.x)),r=Math.min(...t.map(i=>i.y)),o=Math.max(...t.map(i=>i.x+i.w)),s=Math.max(...t.map(i=>i.y+i.h));return{x:n,y:r,w:o-n,h:s-r}}function Ui(e,t){let n=Kh(t),r={width:Math.max(1,t.width-n*2),height:Math.max(1,t.height-n*2)},o=$r(Math.min(r.width/e.w,r.height/e.h,jh));return{zoom:o,x:t.width/2-(e.x+e.w/2)*o,y:t.height/2-(e.y+e.h/2)*o}}function ff(e,t,n){let r=Ui(e,t);return Vw(e,t,n)&&n.zoom>=r.zoom*Hw?null:r}function Vw(e,t,n){let r=e.x*n.zoom+n.x,o=e.y*n.zoom+n.y,s=(e.x+e.w)*n.zoom+n.x,i=(e.y+e.h)*n.zoom+n.y;return r>=0&&o>=0&&s<=t.width&&i<=t.height}function qh(e,t,n,r){let o=Math.exp(Math.log(e.zoom)+(Math.log(t.zoom)-Math.log(e.zoom))*n),s={x:r.width/2,y:r.height/2},i={x:(s.x-e.x)/e.zoom,y:(s.y-e.y)/e.zoom},d={x:(s.x-t.x)/t.zoom,y:(s.y-t.y)/t.zoom},l={x:i.x+(d.x-i.x)*n,y:i.y+(d.y-i.y)*n};return{zoom:o,x:s.x-l.x*o,y:s.y-l.y*o}}function Wh(e){return 1-(1-e)**3}function Uw(e){return!("separator"in e)}function cf(e,t=[]){let n=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"},...Xh(e),{separator:!0},{id:"fit",label:"Fit to screen",keys:"Shift+1"},{id:"zoom100",label:"Zoom to 100%",keys:"CmdOrCtrl+0"},...n];let r=[];e.isText&&e.count===1&&r.push({id:"editText",label:"Edit text",keys:"Enter"},{separator:!0}),e.isVector&&e.count===1&&r.push({id:"editPoints",label:"Edit points",keys:"Enter"},{separator:!0}),(e.convertible??0)>0&&r.push({id:"toVector",label:"Convert to vector",keys:"CmdOrCtrl+Shift+O"},{separator:!0}),r.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}),r.push(...zw(e.components));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&&r.push({separator:!0},...o),r.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){r.push({separator:!0});for(let s of e.bound)r.push({id:`detach:${s.prop}`,label:`Detach ${s.prop}`,hint:s.source})}return r.push(...Xh(e)),r.push(...n),r.push({separator:!0},{id:"delete",label:jw(e),keys:"Delete"}),r}function zw(e){if(!e)return[];let t=[];return e.create&&t.push({id:"createComponent",label:"Create component",keys:"CmdOrCtrl+Alt+K"}),e.instance&&t.push({id:"goToComponent",label:"Go to component"},{id:"resetOverrides",label:"Reset overrides",disabled:e.overrides===0},{id:"detachInstance",label:"Detach instance",keys:"CmdOrCtrl+Alt+B"}),e.part&&t.push({id:"goToComponent",label:"Go to component"},{id:"resetOverrides",label:"Reset this part",disabled:e.overrides===0}),e.component&&t.push({id:"placeInstance",label:"Place instance"}),t.length===0?[]:[{separator:!0},...t]}function jw(e){let t=e.components;return t?.part?"Hide on this instance":t&&t.uses>0?`Delete and detach ${t.uses} ${t.uses===1?"use":"uses"}`:"Delete"}var Kw=4;function Xh(e){let t=(e.locksHere??[]).slice(0,Kw).map(r=>({id:`unlock:${r}`,label:`Unlock ${r}`}));e.anyLocked&&t.push({id:"unlockAll",label:"Unlock all"});let n=e.hiddenCount??0;return n>0&&t.push({id:"showAll",label:`Show all hidden (${n})`}),t.length===0?[]:[{separator:!0},...t]}function zi(e,t){let n=e.ownerDocument,r=t.formatKeys??Qo,o=n.createElement("div");o.className="vd-menu",o.setAttribute("role","menu"),o.hidden=!0,e.appendChild(o);let s=!1,i=[],d=-1;function l(g){o.replaceChildren(),i=[];for(let P of g){if(!Uw(P)){let D=n.createElement("div");D.className="vd-menu__separator",o.appendChild(D);continue}let A=n.createElement("button");A.type="button",A.className="vd-menu__item",A.dataset.command=P.id,A.disabled=P.disabled===!0,A.setAttribute("role","menuitem");let R=n.createElement("span");R.textContent=P.label,A.appendChild(R);let $=P.hint??(P.keys===void 0?void 0:r(P.keys));if($!==void 0){let D=n.createElement("span");D.className="vd-menu__hint",D.textContent=$,A.appendChild(D)}o.appendChild(A),A.disabled||i.push(A)}}function f(g){o.style.left=`${g.x}px`,o.style.top=`${g.y}px`;let P=e.getBoundingClientRect(),A=t.bounds?.()??P,R=o.getBoundingClientRect();if(R.width===0&&R.height===0)return;let $=P.left+g.x+R.width-A.right,D=P.top+g.y+R.height-A.bottom;$>0&&(o.style.left=`${Math.max(A.left-P.left,g.x-R.width)}px`),D>0&&(o.style.top=`${Math.max(A.top-P.top,g.y-R.height)}px`)}function p(g){i.length!==0&&(d=(g+i.length)%i.length,i[d]?.focus())}let m=g=>{let P=g.target?.closest("button");if(!P||P.disabled)return;g.stopPropagation();let A=P.dataset.command;_(),A&&t.onCommand(A)},y=g=>g.stopPropagation(),v=g=>{g.key==="ArrowDown"?(g.preventDefault(),p(d+1)):g.key==="ArrowUp"?(g.preventDefault(),p(d-1)):g.key==="Escape"&&(g.preventDefault(),g.stopPropagation(),_(),t.returnFocus?t.returnFocus():e.focus())},C=g=>{s&&(g.target instanceof Node&&o.contains(g.target)||_())};function _(){s&&(s=!1,d=-1,o.hidden=!0,n.removeEventListener("pointerdown",C,!0),n.removeEventListener("wheel",C,!0))}return o.addEventListener("click",m),o.addEventListener("pointerdown",y),o.addEventListener("keydown",v),{element:o,get isOpen(){return s},open(g,P){l(P),o.hidden=!1,s=!0,f(g),n.addEventListener("pointerdown",C,!0),n.addEventListener("wheel",C,!0),p(0)},close:_,destroy(){_(),o.removeEventListener("click",m),o.removeEventListener("pointerdown",y),o.removeEventListener("keydown",v),o.remove()}}}var Fr=2,Yh=1.5,Jh=1.5,Zh=1.5,ax={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},Qh=3.6,Gw=22,ji=14,Ki=15,pf=4,ex=15,tx=23,ns=7,qw=3.5,Gi=12,Ww=4.5,qi=16,mt=18,mf=9,hf=6.1,nx="Drop or double-click",Xw=6.4,rx=16,wn=3,ox=5,Yw=11,sx=6,ix=6.4;function dx(e,t){let n=e.ownerDocument,r=n.createElementNS(ve,"svg");r.setAttribute("class","vd-editor__overlay"),e.appendChild(r);let o=[],s=[],i=[],d=[],l=[],f=null,p=null,m=[],y=[];function v(S){let w=t({x:S.x,y:S.y}),L=t({x:S.x+S.w,y:S.y+S.h});return{x:w.x,y:w.y,w:L.x-w.x,h:L.y-w.y}}function C(S){for(;r.firstChild;)r.removeChild(r.firstChild);o=[],s=[],i=[],d=[],l=[],f=null,p=null,m=[],y=(S.pageLabels??[]).flatMap(L=>M(L));let w=S.turn&&S.turn.angle!==0?{angle:S.turn.angle,centre:t(S.turn.centre)}:null;for(let L of S.slots??[])z(L);S.presence&&X(S.presence);for(let L of S.highlight)ae("vd-editor__highlight",Hr(v(L),Fr),Fr);S.lockHint&&G(S.lockHint),S.hover&&ae("vd-editor__hover",Br(v(S.hover)),Jh);for(let L of S.parked)ae("vd-editor__parked",Br(v(L)),Jh);for(let L of S.members)ae("vd-editor__member",Hr(v(L),Yh),Yh);S.lead&&ae("vd-editor__lead",Br(v(S.lead)),Fr);for(let L of S.guides)V(L);for(let L of S.measures)O(L);if(_(w,()=>{for(let L of S.textSelection)r.appendChild(de("vd-editor__text-selection",v(L)))}),S.box&&D(S.box),S.caret&&_(w,()=>A(S.caret)),d=S.rings.map(R),i=S.spacers.map($),S.badge&&S.box){let L=v(S.box.frame),I=f?Math.max(...[{x:L.x,y:L.y},{x:L.x+L.w,y:L.y},{x:L.x,y:L.y+L.h},{x:L.x+L.w,y:L.y+L.h}].map(K=>it(K,f.centre,f.angle).y)):L.y+L.h;j(S.badge,{x:L.x+L.w/2,y:I+mf+mt/2})}if(S.draft){let L=v(S.draft);if(S.draftEllipse){let I=n.createElementNS(ve,"ellipse");I.setAttribute("class","vd-editor__draft"),I.setAttribute("cx",String(L.x+L.w/2)),I.setAttribute("cy",String(L.y+L.h/2)),I.setAttribute("rx",String(Math.abs(L.w)/2)),I.setAttribute("ry",String(Math.abs(L.h)/2)),r.appendChild(I)}else r.appendChild(de("vd-editor__draft",L))}S.marquee&&r.appendChild(de("vd-editor__marquee",v(S.marquee))),S.path&&(p=w,_(w,()=>P(S.path)))}function _(S,w){if(!S){w();return}let L=r.childNodes.length;w();let I=n.createElementNS(ve,"g");for(I.setAttribute("transform",`rotate(${S.angle} ${S.centre.x} ${S.centre.y})`);r.childNodes.length>L;)I.insertBefore(r.childNodes[r.childNodes.length-1],I.firstChild);r.appendChild(I)}function g(S,w){return w?it(S,w.centre,-w.angle):S}function P(S){let w=n.createElementNS(ve,"path");if(w.setAttribute("class","vd-editor__path"),w.setAttribute("d",zt(jt(S.contours,t))),r.appendChild(w),S.pending){let I=t(S.pending.from),K=t(S.pending.to),J=S.pending.c1?t(S.pending.c1):I,U=n.createElementNS(ve,"path");U.setAttribute("class","vd-editor__pending"),U.setAttribute("d",`M${I.x} ${I.y} C${J.x} ${J.y} ${K.x} ${K.y} ${K.x} ${K.y}`),r.appendChild(U)}for(let I of S.handles){let K=t(I.at),J=t(I.anchor),U=n.createElementNS(ve,"line");U.setAttribute("class","vd-editor__arm"),U.setAttribute("x1",String(J.x)),U.setAttribute("y1",String(J.y)),U.setAttribute("x2",String(K.x)),U.setAttribute("y2",String(K.y)),r.appendChild(U)}for(let I of S.handles){let K=t(I.at),J=n.createElementNS(ve,"circle");J.setAttribute("class","vd-editor__knob"),J.setAttribute("cx",String(K.x)),J.setAttribute("cy",String(K.y)),J.setAttribute("r",String(qw)),r.appendChild(J)}for(let I of S.anchors){let K=t(I.at),J=de(I.selected?"vd-editor__anchor vd-editor__anchor--on":"vd-editor__anchor",{x:Math.round(K.x-ns/2)+.5,y:Math.round(K.y-ns/2)+.5,w:ns,h:ns});J.setAttribute("data-key",I.key),r.appendChild(J)}if(S.closeAt){let I=t(S.closeAt),K=n.createElementNS(ve,"circle");K.setAttribute("class","vd-editor__close"),K.setAttribute("cx",String(I.x)),K.setAttribute("cy",String(I.y)),K.setAttribute("r",String(ns)),r.appendChild(K)}let L=I=>({x:I.x-Gi/2,y:I.y-Gi/2,w:Gi,h:Gi});l=[...[...S.handles].reverse().map(I=>({kind:"handle",key:I.key,rect:L(t(I.at))})),...[...S.anchors].reverse().map(I=>({kind:"anchor",key:I.key,rect:L(t(I.at))}))]}function A(S){let w=t({x:S.x,y:S.y}),L=t({x:S.x,y:S.y+S.h}),I=n.createElementNS(ve,"line");I.setAttribute("class","vd-editor__caret");let K=Math.round(w.x)+.5;I.setAttribute("x1",String(K)),I.setAttribute("y1",String(w.y)),I.setAttribute("x2",String(K)),I.setAttribute("y2",String(L.y)),S.fill!==void 0&&!S.fill.startsWith("url(")&&(I.style.stroke=S.fill),r.appendChild(I)}function R(S){let w=t(S.at),L=n.createElementNS(ve,"circle");return L.setAttribute("class","vd-editor__ring"),L.setAttribute("cx",String(w.x)),L.setAttribute("cy",String(w.y)),L.setAttribute("r",String(Ww)),r.appendChild(L),{id:S.id,rect:{x:w.x-qi/2,y:w.y-qi/2,w:qi,h:qi}}}function $(S){let w=t(S.at),L=S.axis==="x"?pf:Ki,I=S.axis==="x"?Ki:pf,K=de("vd-editor__spacer",{x:w.x-L/2,y:w.y-I/2,w:L,h:I});K.setAttribute("rx",String(pf/2)),r.appendChild(K),S.label!==null&&j(S.label,S.axis==="x"?{x:w.x,y:w.y-Ki/2-mf-mt/2}:{x:w.x+Ki/2+mf+mt,y:w.y});let J=S.axis==="x"?ex:tx,U=S.axis==="x"?tx:ex;return{id:S.id,rect:{x:w.x-J/2,y:w.y-U/2,w:J,h:U}}}function D(S){let w=v(S.frame),L=S.rotation??0;f=L===0?null:{angle:L,centre:{x:w.x+w.w/2,y:w.y+w.h/2}},_(f,()=>T(S,w)),S.handles&&S.rotatable&&(m=jo.map(I=>{let{u:K,v:J}=Or(I);return{handle:I,at:{x:w.x+w.w*K,y:w.y+w.h*J}}}))}function T(S,w){if(ae("vd-editor__outline",Hr(w,Fr),Fr),!!S.handles){o=Rl(w).map(L=>({...L,bound:S.boundHandles.has(L.handle)}));for(let L of jo){let{u:I,v:K}=Or(L),J={x:w.x+w.w*I-Tr/2,y:w.y+w.h*K-Tr/2,w:Tr,h:Tr};r.appendChild(de("vd-editor__halo",Hr(J,Zh+1))),r.appendChild(de("vd-editor__handle",J))}s=S.adjusters.map(L=>{let I=t(L.at),K=n.createElementNS(ve,"circle");K.setAttribute("class","vd-editor__halo"),K.setAttribute("cx",String(I.x)),K.setAttribute("cy",String(I.y)),K.setAttribute("r",String(Qh+Zh/2+.5)),r.appendChild(K);let J=n.createElementNS(ve,"circle");return J.setAttribute("class","vd-editor__adjuster"),J.setAttribute("cx",String(I.x)),J.setAttribute("cy",String(I.y)),J.setAttribute("r",String(Qh)),r.appendChild(J),{id:L.id,bound:L.bound,rect:{x:I.x-ji/2,y:I.y-ji/2,w:ji,h:ji}}})}}function V(S){let w=t(S.axis==="x"?{x:S.at,y:S.from}:{x:S.from,y:S.at}),L=t(S.axis==="x"?{x:S.at,y:S.to}:{x:S.to,y:S.at}),I=n.createElementNS(ve,"line");I.setAttribute("class","vd-editor__guide"),I.setAttribute("x1",String(Le(w.x))),I.setAttribute("y1",String(Le(w.y))),I.setAttribute("x2",String(Le(L.x))),I.setAttribute("y2",String(Le(L.y))),r.appendChild(I)}function O(S){let w=t(S.axis==="x"?{x:S.from,y:S.at}:{x:S.at,y:S.from}),L=t(S.axis==="x"?{x:S.to,y:S.at}:{x:S.at,y:S.to}),I=n.createElementNS(ve,"path");I.setAttribute("class","vd-editor__measure"),I.setAttribute("d",S.axis==="x"?`M${Le(w.x)} ${Le(w.y)-wn} V${Le(w.y)+wn} M${Le(w.x)} ${Le(w.y)} H${Le(L.x)} M${Le(L.x)} ${Le(L.y)-wn} V${Le(L.y)+wn}`:`M${Le(w.x)-wn} ${Le(w.y)} H${Le(w.x)+wn} M${Le(w.x)} ${Le(w.y)} V${Le(L.y)} M${Le(L.x)-wn} ${Le(L.y)} H${Le(L.x)+wn}`),r.appendChild(I);let K=n.createElementNS(ve,"text");K.setAttribute("class","vd-editor__measure-text"),K.setAttribute("x",String((w.x+L.x)/2)),K.setAttribute("y",String((w.y+L.y)/2-(S.axis==="x"?ox:0))),S.axis==="y"&&K.setAttribute("dx",String(ox)),K.textContent=S.label,r.appendChild(K)}function j(S,w){let L=Math.max(34,S.length*hf+14),I=w.x-L/2,K=w.y-mt/2,J=de("vd-editor__badge",{x:I,y:K,w:L,h:mt});J.setAttribute("rx",String(mt/2)),r.appendChild(J);let U=n.createElementNS(ve,"text");U.setAttribute("class","vd-editor__badge-text"),U.setAttribute("x",String(I+L/2)),U.setAttribute("y",String(K+mt/2)),U.textContent=S,r.appendChild(U)}function M(S){let w=v(S.frame),L=Math.floor(w.w/ix);if(L<3)return[];let I=S.label.length>L?`${S.label.slice(0,L-1)}\u2026`:S.label;S.component&&r.appendChild(de("vd-editor__component-outline",Br(w)));let K=n.createElementNS(ve,"text");K.setAttribute("class",`vd-editor__page-label vd-editor__page-label--${S.state}${S.component?" vd-editor__page-label--component":""}`),K.setAttribute("x",String(w.x)),K.setAttribute("y",String(w.y-sx)),K.textContent=I,r.appendChild(K);let J=Math.min(w.w,I.length*ix+4),U=Yw+6;return[{id:S.id,rect:{x:w.x,y:w.y-sx-U+3,w:J,h:U}}]}function G(S){let w=Br(v(S.frame));r.appendChild(de("vd-editor__lock",w));let L=`${S.label} \xB7 locked`,I=L.length*hf+14,K=w.y+4,J=de("vd-editor__lock-tag",{x:w.x+4,y:K,w:I,h:mt});J.setAttribute("rx","4"),r.appendChild(J);let U=n.createElementNS(ve,"text");U.setAttribute("class","vd-editor__lock-text"),U.setAttribute("x",String(w.x+4+I/2)),U.setAttribute("y",String(K+mt/2)),U.textContent=L,r.appendChild(U)}function z(S){let w=Br(v(S.frame)),L=de(S.target?"vd-editor__slot vd-editor__slot--target":"vd-editor__slot",w);L.setAttribute("rx","3"),r.appendChild(L);let I=U=>U.length*Xw+16<=w.w,K=[];w.h>=20&&I(S.label)&&K.push([S.label,"vd-editor__slot-label"]),K.length>0&&w.h>=48&&I(nx)&&K.push([nx,"vd-editor__slot-hint"]);let J=w.y+w.h/2-(K.length-1)*rx/2;K.forEach(([U,ue],Ee)=>{let Ae=n.createElementNS(ve,"text");Ae.setAttribute("class",ue),Ae.setAttribute("x",String(w.x+w.w/2)),Ae.setAttribute("y",String(J+Ee*rx)),Ae.textContent=U,r.appendChild(Ae)})}function X(S){let w=S.frames.map(ue=>Hr(v(ue),Fr));for(let ue of w)r.appendChild(de("vd-editor__presence",ue));let L=w[0];if(!L||!S.label)return;let I=Math.max(34,S.label.length*hf+14),K=L.y-mt-3<0?L.y+3:L.y-mt-3,J=de("vd-editor__presence-tag",{x:L.x,y:K,w:I,h:mt});J.setAttribute("rx","4"),r.appendChild(J);let U=n.createElementNS(ve,"text");U.setAttribute("class","vd-editor__presence-text"),U.setAttribute("x",String(L.x+I/2)),U.setAttribute("y",String(K+mt/2)),U.textContent=S.label,r.appendChild(U)}function ae(S,w,L){let K=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";r.appendChild(de(K,Hr(w,L+1))),r.appendChild(de(S,w))}function de(S,w){let L=n.createElementNS(ve,"rect");return L.setAttribute("class",S),L.setAttribute("x",String(w.x)),L.setAttribute("y",String(w.y)),L.setAttribute("width",String(Math.max(0,w.w))),L.setAttribute("height",String(Math.max(0,w.h))),L}return{element:r,render:C,hitHandle(S){let w=g(S,f);for(let L of o)if(Et(L.rect,w.x,w.y))return{handle:L.handle,bound:L.bound};return null},hitAdjuster(S){let w=g(S,f);for(let L of s)if(Et(L.rect,w.x,w.y))return{id:L.id,bound:L.bound};return null},hitSpacer(S){return xf(i,S)},hitPath(S){let w=g(S,p),L=l.find(I=>Et(I.rect,w.x,w.y));return L?{kind:L.kind,key:L.key}:null},hitRotate(S){let w=g(S,f),L=o.length===0?null:m;if(!L)return null;for(let I of L){let K=Math.hypot(w.x-I.at.x,w.y-I.at.y);if(K<Tr/2+2||K>Gw)continue;let{u:J,v:U}=Or(I.handle);if((w.x-I.at.x)*(J*2-1)+(w.y-I.at.y)*(U*2-1)>0)return I.handle}return null},hitRing(S){return xf(d,S)},hitPageLabel(S){return xf(y,S)},pageLabelRect(S){return y.find(w=>w.id===S)?.rect??null},destroy(){r.remove(),o=[],s=[],i=[],d=[]}}}function xf(e,t){for(let n of e)if(Et(n.rect,t.x,t.y))return n.id;return null}function Le(e){return Math.round(e)+.5}function Br(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 Hr(e,t){let n=t/2;return{x:e.x-n,y:e.y-n,w:e.w+t,h:e.h+t}}function lx(e,t){let n=[];return ne(e.root,r=>{if(t.has(r.id))return!1;r.type!=="image"||ye(r.src)||e.assets[r.src]===void 0&&n.push({id:r.id,src:r.src,label:r.name??r.src})}),n}function yf(e){if(e.length<2)return null;let t=gf("x",e),n=gf("y",e);return n.length===1&&t.length===e.length?ux("x",e,t):t.length===1&&n.length===e.length?ux("y",e,n):n.length>=2&&t.length>=2?Jw(e,t,n):null}function gf(e,t){let n=[...t].sort((o,s)=>Vr(o.frame,e)-Vr(s.frame,e)),r=[];for(let o of n){let s=r[r.length-1];if(s&&Vr(o.frame,e)<s.hi-.01){r[r.length-1]={lo:s.lo,hi:Math.max(s.hi,Xi(o.frame,e)),from:Math.min(s.from,Vr(o.frame,Wi(e))),to:Math.max(s.to,Xi(o.frame,Wi(e))),members:[...s.members,o.id]};continue}r.push({lo:Vr(o.frame,e),hi:Xi(o.frame,e),from:Vr(o.frame,Wi(e)),to:Xi(o.frame,Wi(e)),members:[o.id]})}return r}function ux(e,t,n){return{kind:"run",items:t,series:[Yi(e,n)],order:n.flatMap(r=>r.members)}}function Jw(e,t,n){if(t.length*n.length!==e.length)return null;let r=[];for(let o of n)for(let s of t){let i=o.members.filter(d=>s.members.includes(d));if(i.length!==1||i[0]===void 0)return null;r.push(i[0])}return{kind:"grid",items:e,series:[Yi("x",t),Yi("y",n)],order:r}}function Yi(e,t){let n=[];for(let r=0;r+1<t.length;r+=1){let o=t[r],s=t[r+1];!o||!s||n.push(s.lo-o.hi)}return{axis:e,tracks:t,gaps:n}}function Rt(e,t){return e.series.find(n=>n.axis===t)}function vf(e){let t=e[0];return t===void 0?!1:e.every(n=>Math.abs(n-t)<.01)}function bf(e){let t=[];for(let n of e.series){let r=e.series.find(o=>o.axis!==n.axis);for(let o=0;o<n.gaps.length;o+=1){let s=n.tracks[o],i=n.tracks[o+1],d=n.gaps[o];if(!s||!i||d===void 0)continue;let l=(s.hi+i.lo)/2,f=r?r.tracks.map(p=>(p.lo+p.hi)/2):[(Math.max(s.from,i.from)+Math.min(s.to,i.to))/2];for(let p of f)t.push({id:fx(n.axis,o),axis:n.axis,index:o,gap:d,at:n.axis==="x"?{x:l,y:p}:{x:p,y:l}})}}return t}function fx(e,t){return`${e}:${t}`}function Ji(e){let[t,n]=e.split(":");if(t!=="x"&&t!=="y"||n===void 0)return null;let r=Number(n);return Number.isInteger(r)&&r>=0?{axis:t,index:r}:null}function wf(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 Zi(e,t,n){let r=Rt(e,t);return r?Qi(r,n):new Map}function Qi(e,t){let n=new Map,r=e.tracks[0];if(!r)return n;let o=r.hi;for(let s=1;s<e.tracks.length;s+=1){let i=e.tracks[s];if(!i)continue;let d=o+t;for(let l of i.members)n.set(l,d-i.lo);o=d+(i.hi-i.lo)}return n}function kf(e,t){return Yi(t,gf(t,e))}function _f(e){let t=e.tracks,n=t[0],r=t[t.length-1];if(!n||!r||t.length<3)return null;let o=t.reduce((s,i)=>s+(i.hi-i.lo),0);return(r.hi-n.lo-o)/(t.length-1)}function Sf(e,t){let n=Zw(e),r=0,o=1/0;for(let s=0;s<n.length;s+=1){let i=n[s];if(!i)continue;let d=Math.hypot(i.x-t.x,i.y-t.y);d<o&&(o=d,r=s)}return r}function Zw(e){if(e.kind==="grid"){let n=Rt(e,"x")?.tracks??[];return(Rt(e,"y")?.tracks??[]).flatMap(o=>n.map(s=>({x:(s.lo+s.hi)/2,y:(o.lo+o.hi)/2})))}let t=e.series[0];return t?t.tracks.map(n=>t.axis==="x"?{x:(n.lo+n.hi)/2,y:(n.from+n.to)/2}:{x:(n.from+n.to)/2,y:(n.lo+n.hi)/2}):[]}function Ef(e,t,n){let r=[...e],[o]=r.splice(t,1);return o===void 0?[...e]:(r.splice(Math.max(0,Math.min(n,r.length)),0,o),r)}function Cf(e,t){let n=new Map(e.items.map(d=>[d.id,d.frame])),r=new Map;if(e.kind==="grid"){let d=Rt(e,"x")?.tracks??[],l=Rt(e,"y")?.tracks??[];return t.forEach((f,p)=>{let m=d[p%d.length],y=l[Math.floor(p/d.length)];m&&y&&r.set(f,{x:m.lo,y:y.lo})}),r}let o=e.series[0],s=o?.tracks[0];if(!o||!s)return r;let i=s.lo;return t.forEach((d,l)=>{let f=n.get(d);if(!f)return;let p=o.axis==="x"?f.w:f.h;r.set(d,o.axis==="x"?{x:i,y:f.y}:{x:f.x,y:i}),i+=p+(o.gaps[l]??0)}),r}function Mf(e,t,n){let r=new Map,o=e.items.find(l=>l.id===t),s=e.items.find(l=>l.id===n);if(!o||!s||t===n)return r;let i=e.kind==="grid"?["x","y"]:[e.series[0]?.axis??"x"],d=(l,f)=>({x:i.includes("x")?f.frame.x:l.frame.x,y:i.includes("y")?f.frame.y:l.frame.y});return r.set(t,d(o,s)),r.set(n,d(s,o)),r}function Wi(e){return e==="x"?"y":"x"}function Vr(e,t){return t==="x"?e.x:e.y}function Xi(e,t){return t==="x"?e.x+e.w:e.y+e.h}var cx="vd-editor-styles",px=`
143
+ `;function X0(e){if(e.getElementById(q0))return;let t=e.createElement("style");t.id=q0,t.textContent=W0,e.head.appendChild(t)}function J0(e){if(!(e===void 0||typeof fetch!="function"))return async(t,n)=>{let r=e(t,n);if(r===void 0)return;let o=await fetch(r);return o.ok?new Uint8Array(await o.arrayBuffer()):void 0}}function Z0(e,t,n,r,o){return t?VM(e,t,n,r,o):BM(e,n,r)}function BM(e,t,n){let r=sp(e,n);return{measurer:r,update:o=>{r.load(o,t)},afterPaint:()=>{},destroy:()=>r.destroy()}}var Y0=new WeakMap;function VM(e,t,n,r,o){let s,i,a,d=()=>{if(!s)throw new Error("canvasFonts: update() before measuring");return s};return{measurer:{advance:(l,p)=>d().measurer.advance(l,p),metrics:l=>d().measurer.metrics(l),itemize:l=>d().measurer.itemize(l)},update(l){s&&l.fonts===i||(a?.(),s?.dispose(),s=t.forDocument(l,{...n?{loader:n}:{},...o?{asset:o}:{}}),i=l.fonts,a=s.onChange(r))},afterPaint(){let l=e.fonts;if(!s||!l||typeof FontFace!="function")return;let p=Y0.get(e);p||Y0.set(e,p=new Set);for(let m of s.usedFaces()){if(p.has(m.id))continue;p.add(m.id);let g=new FontFace(m.id,HM(m.bytes),{weight:String(m.weight),style:m.style});l.add(g),g.load().catch(()=>l.delete(g))}},destroy(){a?.(),s?.dispose(),s=void 0}}}function HM(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}var UM=.01,zM=.004,Q0=40,jM=16;function Rd(e,t){X0(e.ownerDocument);let n=t.document,r=H=>Z0(e.ownerDocument,H,t.loadFont,()=>{T(n)},J0(t.resolveAsset)),o=r(t.fonts),s={advance:(H,J)=>o.measurer.advance(H,J),metrics:H=>o.measurer.metrics(H),itemize:H=>o.measurer.itemize?.(H)??[H]};o.update(n);let i=Pe(n),a=()=>t.resolveAsset?{measure:s,resolveAsset:t.resolveAsset}:{measure:s},d=Ai(n,i,a()),c=t.camera??Ld,l=t.interactive??!0,p=t.wheel??"always";e.classList.add("vd-viewer"),t.surface&&(e.style.background=t.surface);let m=e.ownerDocument.createElementNS(le,"svg");m.setAttribute("class","vd-viewer__surface"),m.setAttribute("width","100%"),m.setAttribute("height","100%");let g=e.ownerDocument.createElementNS(le,"g");g.setAttribute("class","vd-viewer__camera"),g.style.isolation="isolate",m.appendChild(g);let b=e.ownerDocument.createElementNS(le,"defs");g.appendChild(b);let w=e.ownerDocument.createElementNS(le,"rect");w.setAttribute("class","vd-viewer__page"),g.appendChild(w),e.appendChild(m);let k=new Map,_=null;function M(){let H=t.sample;return _&&H?H(d,_.timeline,_.t,{doc:n,resolution:i,options:a()}):d}function R(){g.setAttribute("transform",ap(c))}function B(H=!0){let J=M();V(J);let Oe=d.background!==void 0;Me(w,"x",String(d.x)),Me(w,"y",String(d.y)),Me(w,"width",String(Oe?d.width:0)),Me(w,"height",String(Oe?d.height:0)),we(w,"fill",d.background??null);let se=new Set,ke=w;for(let ye of J.items){if(ye.backdrop!==void 0){let Os=tb(ye.id);se.add(Os);let At=k.get(Os);At||(At=e.ownerDocument.createElementNS(le,"g"),At.setAttribute("data-vd-id",ye.id),k.set(Os,At)),Pi(At,Jf(J,ye)),ke.nextSibling!==At&&g.insertBefore(At,ke.nextSibling),ke=At}let Ge=ye.kind==="border"?eb(ye.id):ye.part===void 0?ye.id:`${ye.id}\0${ye.part}`;se.add(Ge);let Ue=k.get(Ge);(!Ue||Ue.tagName!==Nd(ye))&&(Ue?.remove(),Ue=e.ownerDocument.createElementNS(le,Nd(ye)),Ue.setAttribute("data-vd-id",ye.id),k.set(Ge,Ue)),sb(Ue,ye),ke.nextSibling!==Ue&&g.insertBefore(Ue,ke.nextSibling),ke=Ue}for(let[ye,Ge]of k)se.has(ye)||(Ge.remove(),k.delete(ye));YM(g,J),o.afterPaint(),H&&t.onSceneChange?.(d,n)}let D=new Map;function V(H){let J=[...H.gradients.map(qf),...[...new Map(H.items.filter(eo).map(ye=>[ye.id,ye])).values()].map(ye=>Wf(ye)),...Xf(H.items).map(Yf),...H.clips.map(Gf),...H.items.filter(ye=>ye.mask!==void 0).map(Qf)],Oe=new Set(J);for(let[ye,Ge]of D)Oe.has(ye)||(Ge.remove(),D.delete(ye));let se=J.filter(ye=>!D.has(ye));if(se.length===0)return;[...new DOMParser().parseFromString(`<svg xmlns="${le}">${se.join("")}</svg>`,"image/svg+xml").documentElement.children].forEach((ye,Ge)=>{let Ue=e.ownerDocument.importNode(ye,!0);b.appendChild(Ue),D.set(se[Ge],Ue)})}function T(H){n=H,o.update(n),i=Pe(n),d=Ai(n,i,a()),B()}function O(H){let J=e.getBoundingClientRect();return{x:H.clientX-J.left,y:H.clientY-J.top}}let j=0,$=0;function P(){e.classList.add("vd-viewer--interacting"),$&&clearTimeout($),$=setTimeout(()=>{$=0,e.classList.remove("vd-viewer--interacting")},180)}function C(){j&&(cancelAnimationFrame(j),j=0),R(),t.onCameraChange?.(c)}function G(H){c=H,C()}function ee(H){c=H,P(),!j&&(j=requestAnimationFrame(()=>{j=0,R(),t.onCameraChange?.(c)}))}let fe=null,oe=null,Se=!1,be=l&&p==="always",v=new Map,N=null,I=()=>{let[H,J]=[...v.values()];return!H||!J?null:{mid:{x:(H.x+J.x)/2,y:(H.y+J.y)/2},distance:Math.hypot(H.x-J.x,H.y-J.y)}},F=H=>{let J=v.get(H.pointerId);if(!J)return;let Oe=O(H);if(v.set(H.pointerId,Oe),v.size===1){ee(yn(c,Oe.x-J.x,Oe.y-J.y));return}let se=I();if(N&&se){let ke=yn(c,se.mid.x-N.mid.x,se.mid.y-N.mid.y);ee(N.distance>0?Ti(ke,se.mid,se.distance/N.distance):ke)}N=se},q=H=>{v.delete(H.pointerId)&&(e.hasPointerCapture(H.pointerId)&&e.releasePointerCapture(H.pointerId),N=I())},Y=H=>{if(p==="modifier"&&!H.ctrlKey&&!H.metaKey)return;H.preventDefault();let J=O(H),Oe=H.deltaMode===1?jM:H.deltaMode===2?e.clientHeight||800:1,se=H.deltaX*Oe,ke=H.deltaY*Oe;if(H.ctrlKey||H.metaKey){let ye=H.ctrlKey?UM:zM,Ge=Math.max(-Q0,Math.min(Q0,ke));ee(Ti(c,J,Math.exp(-Ge*ye)));return}if(H.shiftKey&&se===0){ee(yn(c,-ke,0));return}ee(yn(c,-se,-ke))},Q=H=>{if(H.pointerType==="touch"){if(!be)return;H.preventDefault(),v.set(H.pointerId,O(H)),e.setPointerCapture(H.pointerId),N=I();return}(H.button===1||H.button===0&&Se)&&(H.preventDefault(),fe=H.pointerId,oe=O(H),e.setPointerCapture(H.pointerId))},Te=H=>{if(H.pointerType==="touch"){F(H);return}if(fe!==H.pointerId||!oe)return;let J=O(H);ee(yn(c,J.x-oe.x,J.y-oe.y)),oe=J},Ct=H=>{if(H.pointerType==="touch"){q(H);return}fe===H.pointerId&&(fe=null,oe=null,e.hasPointerCapture(H.pointerId)&&e.releasePointerCapture(H.pointerId))},_e=H=>{H.code==="Space"&&(Se=!0)},Rt=H=>{H.code==="Space"&&(Se=!1)};be&&(e.style.touchAction="none"),l&&(e.addEventListener("wheel",Y,{passive:!1}),e.addEventListener("pointerdown",Q),e.addEventListener("pointermove",Te),e.addEventListener("pointerup",Ct),e.addEventListener("pointercancel",Ct),e.ownerDocument.addEventListener("keydown",_e),e.ownerDocument.addEventListener("keyup",Rt)),R(),B();let ae={element:e,surface:m,update:T,getDocument:()=>n,getScene:()=>d,setTime(H){H===null&&_===null||(_=H,B(!1))},getTime:()=>_,getResolution:()=>i,getMeasurer:()=>s,setFonts(H){o.destroy(),o=r(H),T(n)},getCamera:()=>c,setCamera:G,zoomBy(H,J){let Oe=e.getBoundingClientRect(),se=J??{x:Oe.width/2,y:Oe.height/2};G(Ti(c,se,H))},fitToContent(H=32){let J=e.getBoundingClientRect();G(bn({x:d.x,y:d.y,width:d.width,height:d.height},{width:J.width||d.width,height:J.height||d.height},H))},screenToDocument:H=>Pd(c,H),documentToScreen:H=>ip(c,H),pointerPoint:O,hitTest(H,J){for(let Oe=d.items.length-1;Oe>=0;Oe--){let se=d.items[Oe];if(se&&iC(se,H,sC/c.zoom)&&(!J||J(se.id)))return se.id}return null},linkAt(H,J){for(let Oe=d.items.length-1;Oe>=0;Oe--){let se=d.items[Oe];if(se?.kind!=="text"||J&&!J(se.id))continue;let ke=se.rotation===0?H:je(H,{x:se.x+se.w/2,y:se.y+se.h/2},-se.rotation);for(let ye of se.lines){if(ke.y<ye.y||ke.y>ye.y+ye.h)continue;let Ge=ye.spans.find(Ue=>ke.x>=Ue.x&&ke.x<=Ue.x+Ue.w);if(Ge)return Ge.style.link}}},itemOf:H=>d.items.find(J=>J.id===H),elementOf:H=>k.get(H),elementsOf:H=>[k.get(tb(H)),k.get(H),k.get(eb(H))].filter(J=>J!==void 0),destroy(){l&&(e.removeEventListener("wheel",Y),e.removeEventListener("pointerdown",Q),e.removeEventListener("pointermove",Te),e.removeEventListener("pointerup",Ct),e.removeEventListener("pointercancel",Ct),e.ownerDocument.removeEventListener("keydown",_e),e.ownerDocument.removeEventListener("keyup",Rt)),j&&cancelAnimationFrame(j),$&&clearTimeout($),j=0,$=0,o.destroy(),e.classList.remove("vd-viewer--interacting"),m.remove(),k.clear(),e.classList.remove("vd-viewer")}};return t.autoFit&&ae.fitToContent(),ae}function eb(e){return`${e}\0border`}function tb(e){return`${e}\0backdrop`}var KM="vd-clip-";function GM(e){return KM+e}function Dd(e){return`url(#${GM(e)})`}function Nd(e){return e.veil!==void 0||ob(e)?"g":Li(e)}function qM(e){let{veil:t,...n}=e;return t===void 0?e:n}function ob(e){return $d(e)||e.pose!==void 0}function us(e){return Ad(e)?"path":"rect"}function Li(e){if(e.mask!==void 0||as(e))return"g";switch(e.kind){case"border":return us(e.radii);case"connector":return"g";case"ellipse":return"ellipse";case"frame":return us(e.radii);case"image":return e.href===void 0&&e.video?.clip!==void 0?"g":e.href===void 0?us(e.radii):Jt(e.radii)?"image":"g";case"rect":return us(e.radii);case"text":return"text";case"vector":return"path"}}function sb(e,t){if(t.veil!==void 0){we(e,"clip-path",t.veil.clip===void 0?null:Dd(t.veil.clip)),e.style.filter=`url(#${$i}${t.veil.id})`;let o=qM(t),s=e.firstElementChild;(!s||s.tagName!==Nd(o)||e.childElementCount!==1)&&(e.replaceChildren(),s=e.ownerDocument.createElementNS(le,Nd(o)),e.appendChild(s)),sb(s,o);return}if(!ob(t)){dp(e,t);return}we(e,"clip-path",t.clip===void 0?null:Dd(t.clip)),e.style.mixBlendMode=t.blend==="normal"?"":t.blend;let n=t.pose;we(e,"opacity",n&&n.opacity<1?String(n.opacity):null);let r=e.firstElementChild;if((!r||r.tagName!==Li(t))&&(r?.remove(),r=e.ownerDocument.createElementNS(le,Li(t)),e.appendChild(r)),dp(r,{...t,clip:void 0,blend:"normal"}),n){let o=t.rotation===0||t.mask!==void 0?"":` ${os(t)}`;Me(r,"transform",`${Oi(n)}${o}`),t.kind==="vector"&&WM(r,t)}}function WM(e,t){if(as(t))return;let n=t.pose?.trace;if(n!==void 0&&t.stroke!==void 0){let o=t.dash??[],s=_i(o,ui(t.contours),n);Me(e,"stroke-dasharray",s.array.join(" ")),we(e,"stroke-dashoffset",s.offset!==0||o.length===0?String(s.offset):null)}let r=t.pose?.fillOpacity;we(e,"fill-opacity",r!==void 0&&r<1?String(r):null)}function dp(e,t){if(t.mask!==void 0){XM(e,t);return}if(we(e,"clip-path",t.clip===void 0?null:Dd(t.clip)),we(e,"transform",t.rotation===0?null:os(t)),e.style.mixBlendMode=t.blend==="normal"?"":t.blend,e.style.filter=eo(t)?`url(#${Qr}${t.id})`:"",as(t)){let n="opacity"in t?t.opacity:1;we(e,"opacity",n<1?String(n):null),Pi(e,op(t));return}switch(t.kind){case"border":JM(e,t);return;case"connector":we(e,"opacity",t.opacity<1?String(t.opacity):null),Pi(e,tp(t));return;case"ellipse":rC(e,t);return;case"frame":ZM(e,t);return;case"image":QM(e,t);return;case"rect":nC(e,t);return;case"text":tC(e,t);return;case"vector":oC(e,t);return}}function XM(e,t){we(e,"clip-path",t.clip===void 0?null:Dd(t.clip)),we(e,"transform",null),e.style.mixBlendMode=t.blend==="normal"?"":t.blend,e.style.filter=eo(t)?`url(#${Qr}${t.id})`:"";let n="opacity"in t?t.opacity:1;we(e,"opacity",n<1?String(n):null);let r=e.ownerDocument,o=e.firstElementChild;(o?.tagName!=="g"||e.childElementCount!==1)&&(e.replaceChildren(),o=r.createElementNS(le,"g"),e.appendChild(o)),Me(o,"clip-path",`url(#${ss}${t.id})`);let s=Od(t),i=o.firstElementChild;i?.tagName!==Li(s)&&(i?.remove(),i=r.createElementNS(le,Li(s)),o.appendChild(i)),dp(i,s);let a=Zf(t),d=o.nextElementSibling;if(a===""){d?.remove();return}d||(d=r.createElementNS(le,"g"),e.appendChild(d)),Pi(d,a)}var nb=new WeakMap;function YM(e,t){let n=new Map;for(let r of t.items)r.kind==="image"&&r.video?.clip!==void 0&&r.href===void 0&&n.set(r.id,r.video.at/1e3);if(n.size!==0)for(let r of e.querySelectorAll("video[data-vd-video]")){let o=n.get(r.getAttribute("data-vd-video")??"");if(o===void 0)continue;let s=r;if(s.muted=!0,!(Math.abs(s.currentTime-o)<1/60))try{s.currentTime=o}catch{}}}function Pi(e,t){let n=nb.get(e);if(n?.markup===t&&n.first===e.firstChild&&n.last===e.lastChild)return;let r=new DOMParser().parseFromString(`<svg xmlns="${le}">${t}</svg>`,"image/svg+xml"),o=e.ownerDocument;e.replaceChildren(...[...r.documentElement.children].map(s=>o.importNode(s,!0))),nb.set(e,{markup:t,first:e.firstChild,last:e.lastChild})}function JM(e,t){we(e,"class",null),Di(e,t,t.radii),Me(e,"fill","none"),up(e,t)}function up(e,t){let n=Pt(t);we(e,"stroke",n?.paint??null),we(e,"stroke-width",n?String(n.width):null),t.kind==="vector"&&t.pose?.trace!==void 0||(we(e,"stroke-dasharray",n&&n.dash.length>0?n.dash.join(" "):null),we(e,"stroke-dashoffset",null)),we(e,"stroke-linecap",n&&n.cap!=="butt"?n.cap:null),we(e,"stroke-linejoin",n&&n.join!=="miter"?n.join:null)}function ZM(e,t){Me(e,"class","vd-viewer__page"),Di(e,t,t.radii),we(e,"fill",t.background??null)}function QM(e,t){if(we(e,"opacity",t.opacity<1?String(t.opacity):null),t.href===void 0&&t.video?.clip!==void 0){Pi(e,Td(t));return}if(t.href===void 0){Me(e,"class","vd-viewer__missing"),Di(e,t,t.radii);return}if(e.tagName!=="g"){rb(e,t);return}let n=e.ownerDocument,r=e.firstElementChild;r?.tagName!=="clipPath"&&(e.replaceChildren(),r=n.createElementNS(le,"clipPath"),e.appendChild(r)),Me(r,"id",is+t.id);let o=r.firstElementChild;o?.tagName!==us(t.radii)&&(o?.remove(),o=n.createElementNS(le,us(t.radii)),r.appendChild(o)),Di(o,t,t.radii);let s=r.nextElementSibling;s?.tagName!=="image"&&(s?.remove(),s=n.createElementNS(le,"image"),e.appendChild(s)),rb(s,t),Me(s,"clip-path",`url(#${is}${t.id})`)}function rb(e,t){Me(e,"x",String(t.x)),Me(e,"y",String(t.y)),Me(e,"width",String(t.w)),Me(e,"height",String(t.h)),Me(e,"href",t.href??""),Me(e,"preserveAspectRatio",eC[t.fit])}function Di(e,t,n){if(e.tagName==="path"){Me(e,"d",Cd(t,n));return}Me(e,"x",String(t.x)),Me(e,"y",String(t.y)),Me(e,"width",String(t.w)),Me(e,"height",String(t.h)),we(e,"rx",Jt(n)?null:String(n.tl))}var eC={cover:"xMidYMid slice",contain:"xMidYMid meet",fill:"none"};function tC(e,t){we(e,"opacity",t.opacity<1?String(t.opacity):null),Me(e,"xml:space","preserve"),up(e,t),we(e,"paint-order",Pt(t)?"stroke":null);let n=t.lines.flatMap(o=>o.spans).filter(o=>o.text!==""),r=e.ownerDocument;for(;e.childNodes.length>n.length;)e.lastChild?.remove();for(;e.childNodes.length<n.length;)e.appendChild(r.createElementNS(le,"tspan"));n.forEach((o,s)=>{let i=e.childNodes[s];i.textContent!==o.text&&(i.textContent=o.text),Me(i,"x",String(o.x)),Me(i,"y",String(o.y)),Me(i,"font-family",o.style.family),Me(i,"font-size",String(o.style.size)),Me(i,"fill",o.style.fill),we(i,"font-weight",o.style.weight===400?null:String(o.style.weight)),we(i,"font-style",o.style.italic?"italic":null),we(i,"letter-spacing",o.style.letterSpacing===0?null:String(o.style.letterSpacing)),we(i,"data-vd-link",o.style.link??null);let a=[o.style.underline?"underline":"",o.style.strike?"line-through":""].filter(Boolean).join(" ");we(i,"text-decoration",a===""?null:a)})}function nC(e,t){we(e,"class",null),Di(e,t,t.radii),cp(e,t)}function cp(e,t){if(Me(e,"fill",t.fill),we(e,"stroke",t.stroke??null),we(e,"stroke-width",t.stroke&&t.strokeWidth>0?String(t.strokeWidth):null),we(e,"opacity",t.opacity<1?String(t.opacity):null),t.kind==="vector"){if(t.pose?.trace===void 0){let n=t.stroke!==void 0?t.dash??[]:[];we(e,"stroke-dasharray",n.length>0?n.join(" "):null),we(e,"stroke-dashoffset",null)}return}up(e,t)}function rC(e,t){Me(e,"cx",String(t.x+t.w/2)),Me(e,"cy",String(t.y+t.h/2)),Me(e,"rx",String(t.w/2)),Me(e,"ry",String(t.h/2)),cp(e,t)}function oC(e,t){Me(e,"d",t.d),cp(e,t),we(e,"fill-rule",t.rule==="nonzero"?null:t.rule),we(e,"stroke-linecap",t.cap==="butt"?null:t.cap),we(e,"stroke-linejoin",t.join==="miter"?null:t.join)}function Me(e,t,n){e.getAttribute(t)!==n&&e.setAttribute(t,n)}function we(e,t,n){n===null?e.hasAttribute(t)&&e.removeAttribute(t):Me(e,t,n)}var sC=4;function iC(e,t,n){if(e.mask!==void 0&&!Br(e.mask.contours,t,{fill:!0,rule:e.mask.rule,reach:n}))return!1;let r=e.rotation===0?t:je(t,{x:e.x+e.w/2,y:e.y+e.h/2},-e.rotation),o=r.x>=e.x&&r.x<=e.x+e.w&&r.y>=e.y&&r.y<=e.y+e.h;if(e.kind==="border")return!1;if(e.kind==="ellipse"){let s=Zr(e),i=e.w/2+s,a=e.h/2+s;if(i<=0||a<=0)return!1;let d=(r.x-(e.x+e.w/2))/i,c=(r.y-(e.y+e.h/2))/a;return d*d+c*c<=1}if(e.kind==="connector"){let s=e.strokeWidth/2+n;return Br(e.contours,r,{fill:!1,rule:"nonzero",reach:s})||Br(e.filled.contours,r,{fill:!0,rule:"nonzero",reach:n})||Br(e.lined.contours,r,{fill:!1,rule:"nonzero",reach:s})}if(e.kind==="vector"){let s=e.stroke!==void 0&&e.strokeWidth>0;return Br(e.contours,r,{fill:e.fill!=="none",rule:e.rule,reach:(s?Zr(e):0)+n})}return o}var MN=lp(ad),CN=lp(dd),aC=lp(ud);function lp(e){return`cubic-bezier(${e.join(", ")})`}function fp(e,t){let n=e.root.id;if(n===t)return e;let r=o=>{if(!ve(o))return o;let s=tt(o.expr);return!s.ok||!on(s.ast).nodes.includes(n)?o:{expr:qr(gn(s.ast,i=>i===n?t:void 0))}};return{...e,root:{...ib(e.root,r),id:t}}}function ib(e,t){let n=e,r={};for(let[o,s]of Object.entries(n)){if(o==="children"&&Array.isArray(s)){r[o]=s.map(i=>ib(i,t));continue}r[o]=t(s)}return r}var hp=["nw","n","ne","e","se","s","sw","w"],Ii=["nw","ne","se","sw"];function Id(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 cs(e){let t=e.includes("w")?0:e.includes("e")?1:.5,n=e.includes("n")?0:e.includes("s")?1:.5;return{u:t,v:n}}function mp(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 Ri=1;function Vn(e,t,n,r){let{x:o,y:s,w:i,h:a}=e;if(t.includes("w")){let d=o+i;o=Math.min(o+n,d-Ri),i=d-o}if(t.includes("e")&&(i=Math.max(Ri,i+n)),t.includes("n")){let d=s+a;s=Math.min(s+r,d-Ri),a=d-s}return t.includes("s")&&(a=Math.max(Ri,a+r)),{x:o,y:s,w:i,h:a}}function to(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 Fd(e,t){let n=[];return t.x!==e.x&&n.push("x"),t.y!==e.y&&n.push("y"),t.w!==e.w&&n.push("w"),t.h!==e.h&&n.push("h"),n}function Wt(e){if(e.length===0)return null;let t=1/0,n=1/0,r=-1/0,o=-1/0;for(let s of e)t=Math.min(t,s.x),n=Math.min(n,s.y),r=Math.max(r,s.x+s.w),o=Math.max(o,s.y+s.h);return{x:t,y:n,w:r-t,h:o-n}}function xp(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 Mt(e,t,n){return t>=e.x&&t<=e.x+e.w&&n>=e.y&&n<=e.y+e.h}var ls=7,pp=15,Ni=9;function gp(e){let t=[],n=pp/2;for(let a of Ii){let{u:d,v:c}=cs(a);t.push({handle:a,rect:{x:e.x+e.w*d-n,y:e.y+e.h*c-n,w:pp,h:pp}})}let r=n,o=Math.max(0,e.w-r*2),s=Math.max(0,e.h-r*2),i=Ni/2;return t.push({handle:"n",rect:{x:e.x+r,y:e.y-i,w:o,h:Ni}},{handle:"s",rect:{x:e.x+r,y:e.y+e.h-i,w:o,h:Ni}},{handle:"w",rect:{x:e.x-i,y:e.y+r,w:Ni,h:s}},{handle:"e",rect:{x:e.x+e.w-i,y:e.y+r,w:Ni,h:s}}),t}function Ke(e,t){let n=[],r=o=>{if(n.push(o.id),o.id===t)return!0;for(let s of te(o))if(r(s))return!0;return n.pop(),!1};return r(e)?n:[]}function Bd(e,t,n){let r=Ke(t.root,e);if(r.length===0)return e;let o=n!==null&&r.includes(n)?n:lC(r,t),s=r.indexOf(o);if(s===-1)return e;let i=r.indexOf(n??"")+1;for(let a=Math.max(i,1);a<s+1;a+=1)if(z(t.root,r[a])?.type==="instance")return r[a];return r[s+1]??e}function lC(e,t){for(let n=e.length-2;n>=0;n-=1){let r=e[n];if(z(t.root,r)?.type==="frame")return r}return t.root.id}function ab(e,t){let n=e.map(o=>Ke(t.root,o)).filter(o=>o.length>0);if(n.length===0)return t.root.id;let r=t.root.id;for(let o=0;;o+=1){let s=n[0]?.[o];if(s===void 0||n.some(i=>i[o]!==s||o===i.length-1))break;r=s}return r}function no(e,t){let n=z(t.root,e);if(!n)return[];let r=[],o=s=>{if(Ne(s)){for(let i of te(s))o(i);return}r.push(s.id)};return o(n),r}function ro(e,t,n){let r=z(t.root,e);if(!r)return;if(!Ne(r)){let i=n.nodes.get(e);return i?Fi(i):void 0}let o=[],s=i=>{if(!(i.id!==e&&"hidden"in i&&i.hidden===!0)){if(i.id!==e&&!Ne(i)){let a=ro(i.id,t,n);a&&o.push(a);return}for(let a of te(i))s(a)}};return s(r),Wt(o)??void 0}function Fi(e){let t={x:e.absX,y:e.absY,w:e.w,h:e.h},n=e.values.rotation??0;return n===0?t:lr(t,n)}function Bi(e,t,n){return t.flatMap(r=>{let o=ro(r,e,n);return o?[{id:r,frame:o}]:[]})}function yp(e,t){let n=t.filter(p=>p!==e.root.id&&z(e.root,p));if(n.length<2)return null;let r=ab(n,e),o=z(e.root,r);if(!o)return null;let s=te(o),i=new Set(n.map(p=>Bd(p,e,r))),a=s.filter(p=>i.has(p.id));if(a.length<2)return null;let d=s.findIndex(p=>p.id===a[a.length-1]?.id),c=pn(e.root,"group"),l=[{op:"insert",parent:r,index:d+1,node:nl({id:c,children:[]})}];return a.forEach((p,m)=>{l.push({op:"move",id:p.id,parent:c,index:m})}),{ops:l,groupId:c}}function bp(e,t){let n=z(e.root,t);if(!n||!Ne(n))return[];let r=Ke(e.root,t),o=r[r.length-2];if(o===void 0)return[];let s=z(e.root,o);if(!s)return[];let i=te(s).findIndex(d=>d.id===t);if(i===-1)return[];let a=te(n).map((d,c)=>({op:"move",id:d.id,parent:o,index:i+c}));return a.push({op:"remove",id:t}),a}function vp(e,t,n){let r=new Map;for(let s of t){let i=Ke(e.root,s),a=i[i.length-2];if(a===void 0)continue;let d=r.get(a)??new Set;d.add(s),r.set(a,d)}let o=[];for(let[s,i]of r){let a=z(e.root,s);if(!a)continue;let d=te(a).map(c=>c.id);o.push(...pC(s,d,fC(d,i,n)))}return o}function fC(e,t,n){if(n==="front"||n==="back"){let i=e.filter(d=>t.has(d)),a=e.filter(d=>!t.has(d));return n==="front"?[...a,...i]:[...i,...a]}let r=n==="forward"?1:-1,o=[...e],s=o.flatMap((i,a)=>t.has(i)?[a]:[]);r===1&&s.reverse();for(let i of s){let a=i+r,d=o[a];d===void 0||t.has(d)||(o[a]=o[i],o[i]=d)}return o}function pC(e,t,n){let r=[...t],o=[];for(let s=0;s<n.length;s+=1){let i=n[s];i===void 0||r[s]===i||(r.splice(r.indexOf(i),1),r.splice(s,0,i),o.push({op:"move",id:i,parent:e,index:s}))}return o}function wp(e,t,n){let r=t.w===0?1:n.w/t.w,o=t.h===0?1:n.h/t.h,s=new Map;for(let[i,a]of e)s.set(i,{x:n.x+(a.x-t.x)*r,y:n.y+(a.y-t.y)*o,w:a.w*r,h:a.h*o});return s}function oo(e,t){let n=[];for(let r of gC(e,t)){if(!z(e.root,r.nodeId))continue;let o=Z(r.to);Z(r.from)===o&&r.whole!==!0||n.push({op:"set",id:r.nodeId,prop:r.prop,value:o})}return n}var hC=new Set(["x","y","w","h"]),mC=new WeakMap,xC=new WeakMap;function db(e,t,n){let r=e.get(t);if(r!==void 0)return r;let o=n(t);return e.set(t,o),o}function gC(e,t){let n=t.filter(a=>hC.has(a.prop)&&z(e.root,a.nodeId)?.type==="connector");if(n.length===0)return t;let r=db(mC,e,Pe),o=db(xC,e,In),s=new Set(t.map(a=>a.nodeId)),i=t.filter(a=>!n.includes(a));for(let a of new Set(n.map(d=>d.nodeId))){let d=r.nodes.get(a);if(!d)continue;let c=(w,k)=>n.find(_=>_.nodeId===a&&_.prop===w)?.to??k,l=c("x",d.x),p=c("y",d.y),m=d.w===0?1:c("w",d.w)/d.w,g=d.h===0?1:c("h",d.h)/d.h,b=o.get(a);for(let[w,k,_]of[["start","x1","y1"],["end","x2","y2"]]){let M=b?.[w];if(M!==void 0&&s.has(M))continue;let R=d.values[k]??0,B=d.values[_]??0,D=l+(R-d.x)*m,V=p+(B-d.y)*g;Z(D)===Z(R)&&Z(V)===Z(B)||i.push({nodeId:a,prop:k,from:R,to:D,whole:!0},{nodeId:a,prop:_,from:B,to:V,whole:!0})}}return i}function ub(e,t,n){return Sl.includes(n)&&z(e.root,t)?.type==="connector"}function Z(e){return Math.round(e*100)/100}function fs(e,t,n,r){let o=new Set,s=[];for(let d of t)d.op==="set"&&(o.add(nt(d.id,d.prop)),s.push({nodeId:d.id,prop:d.prop}));if(s.length===0)return[];let i=[],a=new Set;for(let d of s)for(let c of n.get(nt(d.nodeId,d.prop))??[]){let l=nt(c.nodeId,c.prop);if(o.has(l)||a.has(l)||!z(e.root,c.nodeId)||ub(e,c.nodeId,c.prop))continue;let p=r.nodes.get(c.nodeId)?.values[c.prop];p!==void 0&&(a.add(l),i.push({op:"set",id:c.nodeId,prop:c.prop,value:Z(p)}))}return i}function kp(e,t,n,r={x:0,y:0}){let o=[],s=new Set,i=e;for(;;){let a=[],d=Pe(i);for(let[c,l]of t){let p=n.get(c),m=z(i.root,l),g=d.nodes.get(l);if(!(!p||!m||!g))for(let b of Vt(m)){let w=nt(l,b);if(s.has(w))continue;let k=p[b],_=g.values[b];if(k===void 0||_===void 0)continue;let M=b==="x"||b==="x1"||b==="x2"?r.x:0,R=b==="y"||b==="y1"||b==="y2"?r.y:0,B=k+M+R;Z(B)!==Z(_)&&(s.add(w),a.push({op:"set",id:l,prop:b,value:Z(B)}))}}if(a.length===0)return o;o.push(...a),i=Ae(i,a).document}}function ps(e,t,n=new Set){let r=Pe(e),o=Pe(t),s=[],i=yC(t.root);for(let[a,d]of o.nodes){if(n.has(a)||i.has(a))continue;let c=r.nodes.get(a),l=z(t.root,a);if(!(!c||!l))for(let p of Vt(l)){if(ub(t,a,p))continue;let m=c.values[p],g=d.values[p];m===void 0||g===void 0||Z(m)!==Z(g)&&s.push({op:"set",id:a,prop:p,value:Z(m)})}}return s}function yC(e){let t=new Set;return de(e,n=>{if(n.type==="instance"){for(let r of n.children)de(r,o=>{t.add(o.id)});return!1}}),t}function Vd(e,t,n){let r=new Set,o=[];for(let s of t)s.op==="set"&&s.prop==="view"&&r.add(s.id);for(let s of t){if(s.op!=="set"||s.prop!=="w"&&s.prop!=="h"||r.has(s.id))continue;let i=z(e.root,s.id);if(i?.type!=="vector"||i.view!==void 0)continue;let a=n(s.id);a&&(r.add(s.id),o.push({op:"set",id:s.id,prop:"view",value:Pn({x:0,y:0,w:a.w,h:a.h})}))}return o.length===0?[...t]:[...o,...t]}var bC=200,vC=100,wC=3,kC=.5;function Je(e,t){return Lt(e.root,t)!==void 0}function Hn(e,t){let n=z(e.root,t);return n?.type==="frame"&&n.component===!0}function Vi(e,t){if(t.length===0)return!1;let n=new Set;for(let r of t){if(r===e.root.id||Je(e,r))return!1;let o=z(e.root,r);if(!o)return!1;let s=Le(e.root,r);if(o.type==="frame"&&(o.component===!0||s?.id===e.root.id))return!1;n.add(s?.id)}return n.size===1}function Sp(e,t,n){if(!Vi(e,t))return null;let r=Le(e.root,t[0]);if(!r)return null;let o=r.children.filter(M=>t.includes(M.id)),s=o.length===1?o[0]:void 0,i=cr(e.root),a,d,c;if(s?.type==="frame"){let M=n.nodes.get(s.id);cb(s.id,s.children,i);let{name:R,hidden:B,locked:D}=s,V={...s};for(let O of["x","y","w","h","name","hidden","locked"])delete V[O];a={...V,id:hs(`${s.id}.main`,i),x:0,y:0,w:Z(M?.w??0),h:Z(M?.h??0),component:!0},d={type:"instance",id:s.id,...R===void 0?{}:{name:R},component:a.id,x:s.x,y:s.y,...s.w===a.w?{}:{w:s.w},...s.h===a.h?{}:{h:s.h},...B===void 0?{}:{hidden:B},...D===void 0?{}:{locked:D},children:[]};let T=O=>O===s.id?a.id:void 0;a={...a,children:a.children.map(O=>pb(O,T))},c=s.children}else{let M=SC(o,n);if(!M)return null;let R=_C(e,r.id,n),B=Z(M.x-R.x),D=Z(M.y-R.y),V=s&&Ne(s)?s:void 0,T=V?V.id:hs("component",i),O=V?te(V):o;cb(T,O,i),a={type:"frame",id:hs(`${T}.main`,i),x:0,y:0,w:Z(M.w),h:Z(M.h),component:!0,children:O.map(j=>hb(j,B,D))},d={type:"instance",id:T,...V?.name===void 0?{}:{name:V.name},component:a.id,x:B,y:D,...V?.type==="group"&&V.hidden!==void 0?{hidden:V.hidden}:{},...V?.type==="group"&&V.locked!==void 0?{locked:V.locked}:{},children:[]},c=O}let l=Hi(e,n);a={...a,x:l.x,y:l.y};let p=new Set;for(let M of c)de(M,R=>{p.add(R.id)});let m=new Set(o.map(M=>M.id));for(let M of o)de(M,R=>{m.add(R.id)});let g=Math.min(...o.map(M=>r.children.indexOf(M))),b=[...o.map(M=>({op:"remove",id:M.id})),{op:"insert",parent:r.id,index:g,node:d},{op:"insert",parent:e.root.id,index:e.root.children.length,node:a}],w=M=>p.has(M)&&M!==d.id?Ht(d.id,M):void 0;b.push(...EC(e,M=>!m.has(M.id),w)),b.push(...MC(e,w));let k=[],_=Ae(e,b).document;for(let M=0;M<wC;M+=1){let R=Pe(_),B=[];for(let D of p){let V=n.nodes.get(D),T=R.nodes.get(Ht(d.id,D)),O=z(_.root,D);if(!V||!T||!O||Ne(O))continue;let j=O,$={x:V.absX-T.absX,y:V.absY-T.absY,w:V.w-T.w,h:V.h-T.h};for(let P of["x","y","w","h"]){if(Math.abs($[P])<kC||j[P]===void 0)continue;let C=P==="x"?T.x:P==="y"?T.y:T[P];B.push({op:"set",id:D,prop:P,value:Z(C+$[P])}),k.includes(`${D}.${P}`)||k.push(`${D}.${P}`)}}if(B.length===0)break;b.push(...B),_=Ae(_,B).document}return{ops:b,componentId:a.id,instanceId:d.id,flattened:k}}function Hd(e,t,n){let r=z(e.root,t);if(r?.type!=="instance"||Je(e,t))return null;let o=Le(e.root,t);if(!o)return null;let s=lt(e.root).get(r.component),i=n.nodes.get(t),a=new Set;for(let p of r.children)de(p,m=>{a.add(m.id)});let d=p=>p===r.component?t:a.has(Ht(t,p))?Ht(t,p):void 0,c={type:"frame",id:t,...r.name===void 0?{}:{name:r.name},x:r.x,y:r.y,w:r.w??Z(i?.w??0),h:r.h??Z(i?.h??0),...s?.background===void 0?{}:{background:s.background},...s?.clip===void 0?{}:{clip:s.clip},...s?.blend===void 0?{}:{blend:s.blend},...s?.shadow===void 0?{}:{shadow:s.shadow},...s?.blur===void 0?{}:{blur:s.blur},...s?.backdrop===void 0?{}:{backdrop:s.backdrop},...r.hidden===void 0?{}:{hidden:r.hidden},...r.locked===void 0?{}:{locked:r.locked},children:r.children.map(p=>lb(p,r,d))},l=o.children.findIndex(p=>p.id===t);return[{op:"remove",id:t},{op:"insert",parent:o.id,index:l,node:c}]}function lb(e,t,n){let r={...e};for(let[o,s]of Object.entries(r))ve(s)&&(r[o]=zd(s.expr,n)??s);if(e.type==="instance"){let o=e.id.slice(t.id.length+1),s={...e.overrides};for(let[a,d]of Object.entries(t.overrides??{})){if(!a.startsWith(`${o}.`))continue;let c=a.slice(o.length+1);s[c]={...s[c],...d}}let i={...r};return delete i.overrides,{...i,...Object.keys(s).length===0?{}:{overrides:s},children:[]}}return me(e)&&(r.children=e.children.map(o=>lb(o,t,n))),r}function _p(e,t,n){let r=z(e.root,t);if(r?.type!=="instance"||r.overrides===void 0)return[];if(n===void 0)return[{op:"set",id:t,prop:"overrides",value:void 0}];let o=n.startsWith(`${t}.`)?n.slice(t.length+1):n;if(r.overrides[o]===void 0)return[];let s={...r.overrides};return delete s[o],[{op:"set",id:t,prop:"overrides",value:Object.keys(s).length===0?void 0:s}]}function fb(e,t,n){let r=Zc(e.root,t);return r===void 0||!Jc(e.root,n,r)}function Ep(e,t,n){let r=z(e.root,t),o=lt(e.root),s=r?.type==="instance"?o.get(r.component):void 0,i=o.get(n);if(r?.type!=="instance"||!i||r.component===n)return[];if(!fb(e,t,n))return[];let a=new Map;s&&Mp(s.children,i.children,a);let d={};for(let[c,l]of Object.entries(r.overrides??{})){let p=z(i,c)?c:gb(c,a);z(i,p)&&(d[p]=l)}return[{op:"set",id:t,prop:"component",value:n},{op:"set",id:t,prop:"overrides",value:Object.keys(d).length===0?void 0:d}]}function Mp(e,t,n){e.forEach((r,o)=>{let s=t[o];!s||s.type!==r.type||(n.set(r.id,s.id),!(r.type==="instance"||s.type==="instance")&&Mp(te(r),te(s),n))})}function Cp(e,t,n,r){if(!Hn(e,t))return null;let o=z(e.root,n);if(!o||!me(o)||o.type==="instance"||Je(e,n))return null;let s=hs(t.replace(/\.main$/,""),cr(e.root)),i={type:"instance",id:s,component:t,x:Z(r.x),y:Z(r.y),children:[]};return{ops:[{op:"insert",parent:n,index:o.children.length,node:i}],id:s}}function Ud(e,t){return t.reduce((n,r)=>n+An(e.root,r).length,0)}function Ap(e,t,n){let r=[],o=e,s=new Set(t);for(let i=0;i<t.length+1;i+=1){let a=An(o.root).filter(d=>s.has(d.component)&&!Ke(o.root,d.id).some(c=>s.has(c)));if(a.length===0)break;for(let d of a){let c=Hd(o,d.id,n);c&&(r.push(...c),o=Ae(o,c).document)}}for(let i of t)r.push({op:"remove",id:i});return r}function Hi(e,t){let n=e.root.children.flatMap(i=>{let a=t.nodes.get(i.id);return!a||Ne(i)?[]:[{node:i,x:a.absX,y:a.absY,w:a.w,h:a.h}]}),r=n.filter(i=>i.node.type==="frame"&&i.node.component===!0);if(r.length>0){let i=Math.max(...r.map(d=>d.x+d.w)),a=Math.min(...r.map(d=>d.y));return{x:Z(i+vC),y:Z(a)}}if(n.length===0)return{x:0,y:0};let o=Math.min(...n.map(i=>i.x)),s=Math.max(...n.map(i=>i.y+i.h));return{x:Z(o),y:Z(s+bC)}}function cb(e,t,n){for(let r of t)de(r,o=>{n.add(Ht(e,o.id))})}function pb(e,t){let n={...e};for(let[r,o]of Object.entries(e))ve(o)&&(n[r]=zd(o.expr,t)??o);return e.type==="instance"||!me(e)?n:{...n,children:e.children.map(r=>pb(r,t))}}function hs(e,t){let n=e;for(let r=2;t.has(n);r+=1)n=`${e}.${r}`;return t.add(n),n}function SC(e,t){let n=1/0,r=1/0,o=-1/0,s=-1/0;for(let i of e)de(i,a=>{if("hidden"in a&&a.hidden===!0)return!1;if(Ne(a))return;let d=t.nodes.get(a.id);return d&&(n=Math.min(n,d.absX),r=Math.min(r,d.absY),o=Math.max(o,d.absX+d.w),s=Math.max(s,d.absY+d.h)),!1});return Number.isFinite(n)?{x:n,y:r,w:o-n,h:s-r}:null}function _C(e,t,n){let r=Ke(e.root,t);for(let o=r.length-1;o>=0;o-=1){let s=z(e.root,r[o]);if(!s||Ne(s))continue;let i=n.nodes.get(s.id);return i?{x:i.absX,y:i.absY}:{x:0,y:0}}return{x:0,y:0}}function hb(e,t,n){if(Ne(e))return{...e,children:te(e).map(o=>hb(o,t,n))};let r={...e};return typeof r.x=="number"&&(r.x=Z(r.x-t)),typeof r.y=="number"&&(r.y=Z(r.y-n)),r}function EC(e,t,n){let r=[];return de(e.root,o=>{if(o.type==="instance"||!t(o))return!1;for(let[s,i]of Object.entries(o)){if(!ve(i))continue;let a=zd(i.expr,n);a&&r.push({op:"set",id:o.id,prop:s,value:a})}}),r}function zd(e,t){let n=tt(e);if(n.ok&&on(n.ast).nodes.some(r=>t(r)!==void 0))return{expr:qr(gn(n.ast,t))}}function MC(e,t){let n=[];for(let[r,o]of Object.entries(e.motion??{})){let s=!1,i=o.lines.map(a=>{let d=t(a.id),c=a.after===void 0?void 0:t(a.after),l=a.with===void 0?void 0:t(a.with);return d===void 0&&c===void 0&&l===void 0?a:(s=!0,{...a,...d===void 0?{}:{id:d},...c===void 0?{}:{after:c},...l===void 0?{}:{with:l}})});if(s){let a={...o,lines:i};n.push({op:"setMotion",page:r,value:a})}}return n}function mb(e,t,n){let r=lt(e.root),o=cr(e.root),s=new Map,i=new Map,a=new Map,d=[];for(let p of t){let m=r.get(p.id);if(m&&CC(m,p)){s.set(p.id,p.id);continue}if(m&&n(p.id)){s.set(p.id,p.id);let w=new Map;Mp(p.children,m.children,w);let k=new Set;for(let _ of m.children)de(_,M=>{k.add(M.id)});for(let[_,M]of[...w])(k.has(_)||_===M)&&w.delete(_);i.set(p.id,w),a.set(p.id,k);continue}let g=o.has(p.id)?hs(p.id,o):p.id;o.add(g),s.set(p.id,g);let b=new Map;for(let w of p.children)de(w,k=>(o.has(k.id)?b.set(k.id,hs(k.id,o)):o.add(k.id),k.type==="instance"?!1:void 0));i.set(p.id,b),d.push(p)}let c=[],l=e;for(let p of d){let m={...xb(p,i.get(p.id)??new Map,s,i),id:s.get(p.id)??p.id,component:!0},g=Hi(l,Pe(l)),b={op:"insert",parent:l.root.id,index:l.root.children.length,node:{...m,x:g.x,y:g.y}};c.push(b),l=Ae(l,[b]).document}return{ops:c,component:s,keys:i,parts:a}}function jd(e,t){if(e.type==="instance"){let n=t.keys.get(e.component),r=t.parts?.get(e.component),o=Object.entries(e.overrides??{}).map(([i,a])=>[n===void 0?i:gb(i,n),a]).filter(([i])=>r===void 0||r.has(i)),s={...e,component:t.component.get(e.component)??e.component,overrides:Object.fromEntries(o),children:[]};return o.length===0&&delete s.overrides,s}return me(e)?{...e,children:e.children.map(n=>jd(n,t))}:e}function xb(e,t,n,r){let o={...e,id:t.get(e.id)??e.id};if(t.size>0)for(let[i,a]of Object.entries(e)){if(!ve(a))continue;let d=zd(a.expr,c=>t.get(c));d&&(o[i]=d)}let s=o;return s.type==="instance"?jd(s,{component:n,keys:r}):me(s)?{...s,children:s.children.map(i=>xb(i,t,n,r))}:s}function gb(e,t){let n=t.get(e);if(n!==void 0)return n;for(let[r,o]of t)if(e.startsWith(`${r}.`))return`${o}${e.slice(r.length)}`;return e}function CC(e,t){return Ua({...e,x:0,y:0})===Ua({...t,x:0,y:0})}function bb(e,t,n,r,o){if(o===0)return Vn(e,t,n,r);let s=je({x:n,y:r},{x:0,y:0},-o),i=Vn(e,t,s.x,s.y),a=Re(e),d=Re(i),c={x:a.x-d.x,y:a.y-d.y},l=je(c,{x:0,y:0},o);return{...i,x:i.x+c.x-l.x,y:i.y+c.y-l.y}}function yb(e,t){return Math.atan2(t.y-e.y,t.x-e.x)*180/Math.PI}function vb(e,t,n,r,o){let s=yb(e,n)-yb(e,t);return o?Math.round((r+s)/o)*o-r:s}function wb(e,t,n){return e.map(r=>{let o=Re(r.frame),s=je(o,t,n);return{id:r.id,frame:{...r.frame,x:s.x-r.frame.w/2,y:s.y-r.frame.h/2},rotation:Wo(r.rotation+n)}})}function Kd(e,t,n,r){let o=n.w===0?1:r.w/n.w,s=n.h===0?1:r.h/n.h,i=t*Math.PI/180,a=Math.cos(i),d=Math.sin(i),c=e.w*Math.hypot(o*a,s*d),l=e.h*Math.hypot(o*d,s*a),p=Re(e),m=r.x+(p.x-n.x)*o,g=r.y+(p.y-n.y)*s;return{x:m-c/2,y:g-l/2,w:c,h:l}}function it(e,t){return`${e}:${t}`}function Wd(e){let[t,n]=e.split(":").map(Number);if(!(t===void 0||n===void 0||!Number.isInteger(t)||!Number.isInteger(n)))return{contour:t,index:n}}function kb(e){let t=e.split(":"),n=t[2],r=Wd(t.slice(0,2).join(":"));if(!(!r||n!=="in"&&n!=="out"))return{...r,side:n}}function Op(e,t){let n=Wd(t);return n?e[n.contour]?.anchors[n.index]:void 0}function Tp(e,t){let n=[];for(let r of t){let o=Wd(r);o&&e[o.contour]?.anchors[o.index]&&n.push(it(o.contour,o.index))}return n}function Lp(e){return e.flatMap((t,n)=>t.anchors.map((r,o)=>it(n,o)))}function $p(e,t,n,r){return e.map((o,s)=>s===t?{...o,anchors:o.anchors.map((i,a)=>a===n?r:i)}:o)}var Ui=(e,t,n)=>({x:e.x+t,y:e.y+n});function Xd(e,t,n,r){return e.map((o,s)=>({...o,anchors:o.anchors.map((i,a)=>t.has(it(s,a))?fn(Ui(i,n,r),i.in&&Ui(i.in,n,r),i.out&&Ui(i.out,n,r)):i)}))}function Gd(e){if(!e.in||!e.out)return!1;let t=e.in.x-e.x,n=e.in.y-e.y,r=e.out.x-e.x,o=e.out.y-e.y,s=Math.hypot(t,n),i=Math.hypot(r,o);return s===0||i===0?!1:(t*r+n*o)/(s*i)<-.995}function qd(e,t,n,r,o,s){let i=e[t]?.anchors[n];if(!i)return[...e];let d=i[r==="in"?"out":"in"];if(s.smooth&&!s.breakSmooth&&d){let l=Math.hypot(d.x-i.x,d.y-i.y),p=o.x-i.x,m=o.y-i.y,g=Math.hypot(p,m);g>0&&(d={x:i.x-p/g*l,y:i.y-m/g*l})}let c=r==="in"?fn(i,o,d):fn(i,d,o);return $p(e,t,n,c)}function Sb(e,t){let n=Wd(t),r=n?e[n.contour]:void 0,o=r?.anchors[n?.index??-1];if(!n||!r||!o)return[...e];if(o.in||o.out)return $p(e,n.contour,n.index,fn(o));let s=r.anchors.length,i=n.index>0?r.anchors[n.index-1]:r.closed?r.anchors[s-1]:void 0,a=n.index<s-1?r.anchors[n.index+1]:r.closed?r.anchors[0]:void 0;if(!i&&!a)return[...e];let d=i??o,c=a??o,l=c.x-d.x,p=c.y-d.y,m=Math.hypot(l,p);if(m===0)return[...e];l/=m,p/=m;let g=i?Math.hypot(o.x-i.x,o.y-i.y)/3:0,b=a?Math.hypot(a.x-o.x,a.y-o.y)/3:0,w=i?{x:o.x-l*g,y:o.y-p*g}:void 0,k=a?{x:o.x+l*b,y:o.y+p*b}:void 0;return $p(e,n.contour,n.index,fn(o,w,k))}function _b(e,t){let n=[];return e.forEach((r,o)=>{let s=r.anchors.filter((i,a)=>!t.has(it(o,a)));s.length>=2&&n.push({closed:r.closed,anchors:s})}),n}function Eb(e,t,n,r,o,s,i){let a=e[t];if(!a)return[...e];let d=a.anchors.length,c=(n+1)%d;if(i)return Xd(e,new Set([it(t,n),it(t,c)]),o,s);let l=Math.min(.85,Math.max(.15,r)),p=1/(3*(1-l)*l),m=a.anchors[n],g=a.anchors[c],b=Ui(m.out??m,o*p,s*p),w=Ui(g.in??g,o*p,s*p),k=qd(e,t,n,"out",b,{smooth:Gd(m),breakSmooth:!1});return k=qd(k,t,c,"in",w,{smooth:Gd(g),breakSmooth:!1}),k}function Mb(e,t){return e.map((n,r)=>n.closed||n.anchors.length<2?n:t.size===0||t.has(it(r,0))&&t.has(it(r,n.anchors.length-1))?{...n,closed:!0}:n)}function Pp(e,t){let n=[],r=new Set,o=(s,i,a)=>{let d=e[s]?.anchors[i],c=d?.[a],l=`${it(s,i)}:${a}`;!d||!c||r.has(l)||(r.add(l),n.push({key:l,at:c,anchor:d}))};return e.forEach((s,i)=>{let a=s.anchors.length;s.anchors.forEach((d,c)=>{if(!t.has(it(i,c)))return;o(i,c,"in"),o(i,c,"out");let l=c>0?c-1:s.closed?a-1:-1,p=c<a-1?c+1:s.closed?0:-1;l>=0&&o(i,l,"out"),p>=0&&o(i,p,"in")})}),n}function zi(e,t){let n=t.x-e.x,r=t.y-e.y,o=Math.round(Math.atan2(r,n)/(Math.PI/4))*(Math.PI/4),s=n*Math.cos(o)+r*Math.sin(o);return{x:e.x+Math.cos(o)*s,y:e.y+Math.sin(o)*s}}function Cb(e){return{closed:e.closed,anchors:[...e.anchors].reverse().map(t=>fn(t,t.out,t.in))}}var Ab=new Set(["video/mp4","video/webm"]),AC=/\.(mp4|m4v|webm)$/i;function $b(e){return Ab.has(e.type)||e.type===""&&AC.test(e.name)}function Ob(e){return Ab.has(e.type)?e.type:/\.webm$/i.test(e.name)?"video/webm":"video/mp4"}function Tb(e,t=5e3){let n=URL.createObjectURL(e),r=document.createElement("video");return r.muted=!0,r.preload="metadata",new Promise(o=>{let s=a=>{clearTimeout(i),r.removeAttribute("src"),r.load(),URL.revokeObjectURL(n),o(a)},i=setTimeout(()=>s(null),t);r.addEventListener("loadedmetadata",()=>{if(!(r.videoWidth>0&&r.videoHeight>0)){s(null);return}let a=Number.isFinite(r.duration)?Math.round(r.duration*1e3):void 0;s({width:r.videoWidth,height:r.videoHeight,...a===void 0||a<=0?{}:{ms:a}})}),r.addEventListener("error",()=>s(null)),r.src=n})}function Dp(e){if(!e)return null;for(let t of e.items){if(t.kind!=="file"||!t.type.startsWith("image/"))continue;let n=t.getAsFile();if(n)return n}return null}async function Yd(e,t){if(Lb(e))return TC(e,t);let n;try{n=await createImageBitmap(e)}catch{return null}try{let r=Math.min(1,t/Math.max(n.width,n.height));return r>=1?{bytes:new Uint8Array(await e.arrayBuffer()),type:e.type||"image/png",width:n.width,height:n.height}:await $C(n,r,e.type)}finally{n.close()}}async function $C(e,t,n){let r=Math.max(1,Math.round(e.width*t)),o=Math.max(1,Math.round(e.height*t)),s=document.createElement("canvas");s.width=r,s.height=o;let i=s.getContext("2d");if(!i)return null;i.drawImage(e,0,0,r,o);let a=n==="image/png"?"image/png":"image/webp",d=await new Promise(c=>{s.toBlob(c,a,.9)});return d?{bytes:new Uint8Array(await d.arrayBuffer()),type:d.type||a,width:r,height:o}:null}function Np(e,t,n,r){let o=Math.min(1,n/e,r/t);return{w:Math.round(e*o),h:Math.round(t*o)}}function Lb(e){return e.type==="image/svg+xml"||/\.svg$/i.test(e.name??"")}var OC=1024;function Pb(e){let t=/<svg\b[^>]*>/i.exec(e)?.[0];if(t===void 0)return null;let n=c=>new RegExp(`\\s${c}\\s*=\\s*["']([^"']*)["']`,"i").exec(t)?.[1],r=c=>{let l=/^\s*([\d.]+)\s*(px)?\s*$/i.exec(c??""),p=l===null?NaN:Number(l[1]);return p>0?p:void 0},o=r(n("width")),s=r(n("height"));if(o!==void 0&&s!==void 0)return{width:o,height:s};let i=(n("viewBox")??"").trim().split(/[\s,]+/).map(Number),[,,a=NaN,d=NaN]=i;return i.length===4&&a>0&&d>0?o!==void 0?{width:o,height:o*d/a}:s!==void 0?{width:s*a/d,height:s}:{width:a,height:d}:null}async function TC(e,t){let n=await e.text(),r=Pb(n);if(r===null)return null;let o=Math.min(t,OC)/Math.max(r.width,r.height),s=Math.max(1,Math.round(r.width*o)),i=Math.max(1,Math.round(r.height*o)),a=n.replace(/<svg\b[^>]*>/i,c=>c.replace(/\s(width|height)\s*=\s*["'][^"']*["']/gi,"").replace(/^<svg/i,`<svg width="${s}" height="${i}"`)),d=URL.createObjectURL(new Blob([a],{type:"image/svg+xml"}));try{let c=new Image;c.src=d,await c.decode();let l=document.createElement("canvas");l.width=s,l.height=i;let p=l.getContext("2d");if(!p)return null;p.drawImage(c,0,0,s,i);let m=await new Promise(g=>{l.toBlob(g,"image/png")});return m?{bytes:new Uint8Array(await m.arrayBuffer()),type:"image/png",width:s,height:i}:null}catch{return null}finally{URL.revokeObjectURL(d)}}function Jd(e){let t=Ln(e);return e.root.children.filter(n=>t.has(n.id)&&Nr(e.motion?.[n.id])).map(n=>n.id)}function Zd(e,t,n){let r=Jd(e);if(r.length===0)return null;let o=Ut(e);for(let s of t){let i=o.get(s);if(i!==void 0&&r.includes(i))return i}return n!==null&&r.includes(n)?n:r[0]??null}var LC=1e3/30;var PC=/\.(?:mp3|m4a|aac|wav|ogg|oga|opus|flac|webm)$/i;function Db(e){return e.type.startsWith("audio/")||e.type===""&&PC.test(e.name)}var DC=new Set(["loop","step","together"]);function Nb(e,t,n){let r=e.motion?.[t]?.music?.asset;if(r!==void 0&&e.assets[r]===void 0)return r;let o=n.replace(/\.[^.]+$/,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"music";if((!/^[a-z]/.test(o)||DC.has(o))&&(o=`track-${o}`),e.assets[o]===void 0)return o;for(let s=2;;s+=1)if(e.assets[`${o}-${s}`]===void 0)return`${o}-${s}`}function Rb(e,t,n,r){let o=e.motion?.[t]??{lines:[]},s=o.music,i={asset:n};if(s&&s.asset===n)i=s;else if(s){let a={...s,asset:n};delete a.from,i=a}return[{op:"setAsset",name:n,value:r},{op:"setMotion",page:t,value:{...o,music:i}}]}var NC={left:"x",hcenter:"x",right:"x",top:"y",vcenter:"y",bottom:"y"};function Qd(e){return NC[e]}function RC(e,t,n){switch(e){case"left":return t.x;case"hcenter":return t.x+(t.w-n)/2;case"right":return t.x+t.w-n;case"top":return t.y;case"vcenter":return t.y+(t.h-n)/2;case"bottom":return t.y+t.h-n}}function Rp(e,t,n){let r=Qd(n),o=new Map;for(let s of e){let i=r==="x"?s.frame.w:s.frame.h,a=r==="x"?s.frame.x:s.frame.y;o.set(s.id,RC(n,t,i)-a)}return o}var Ip=24,Fb=[{key:"nw",sx:0,sy:0,prop:"radiusTL"},{key:"ne",sx:1,sy:0,prop:"radiusTR"},{key:"se",sx:1,sy:1,prop:"radiusBR"},{key:"sw",sx:0,sy:1,prop:"radiusBL"}],IC={id:"radius",props:["radius",...Bt],handles(e,t,n,r){let o=this.max(t),s=Ao(Zn(n),t.w,t.h),i=zs(e);return Fb.map(({key:a,sx:d,sy:c,prop:l})=>{let p=Hc(s,l),m=Math.min(Math.max(p,r),Math.max(o,r));return{id:`radius:${a}`,prop:i?l:"radius",at:{x:t.x+(d===0?m:t.w-m),y:t.y+(c===0?m:t.h-m)}}})},propOf(e,t,n){let r=Ib(t);return r&&(n||zs(e))?r.prop:"radius"},valueAt(e,t,n){let r=Ib(t);if(!r)return 0;let o=e.x+(r.sx===0?0:e.w),s=e.y+(r.sy===0?0:e.h),i=Math.max(0,r.sx===0?n.x-o:o-n.x),a=Math.max(0,r.sy===0?n.y-s:s-n.y);return Math.min((i+a)/2,this.max(e))},max(e){return Math.max(0,Math.min(e.w,e.h)/2)}},FC={canvas:[],frame:[],group:[],rect:[IC]};function ji(e){return FC[e.type]??[]}function eu(e,t){let n=t.split(":")[0];return ji(e).find(r=>r.id===n)}function Ib(e){let t=e.split(":")[1];return Fb.find(n=>n.key===t)}var Fp=[["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 Bp=[["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 Vp=[["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 Hp=[["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 Up=[["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 zp=[["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 jp=[["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 Kp=[["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 Gp=[["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 qp=[["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 Wp=[["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 Xp=[["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 Yp=[["circle",{cx:"15",cy:"9",r:"7"}],["circle",{cx:"9",cy:"15",r:"7"}]];var Jp=[["path",{d:"M20 6 9 17l-5-5"}]];var Zp=[["path",{d:"m6 9 6 6 6-6"}]];var Qp=[["path",{d:"m9 18 6-6-6-6"}]];var eh=[["path",{d:"m18 15-6-6-6 6"}]];var th=[["path",{d:"M10.1 2.182a10 10 0 0 1 3.8 0"}],["path",{d:"M13.9 21.818a10 10 0 0 1-3.8 0"}],["path",{d:"M17.609 3.721a10 10 0 0 1 2.69 2.7"}],["path",{d:"M2.182 13.9a10 10 0 0 1 0-3.8"}],["path",{d:"M20.279 17.609a10 10 0 0 1-2.7 2.69"}],["path",{d:"M21.818 10.1a10 10 0 0 1 0 3.8"}],["path",{d:"M3.721 6.391a10 10 0 0 1 2.7-2.69"}],["path",{d:"M6.391 20.279a10 10 0 0 1-2.69-2.7"}]];var nh=[["circle",{cx:"12",cy:"12",r:"10"}]];var rh=[["path",{d:"M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z"}],["path",{d:"M2.297 11.293a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0z"}],["path",{d:"M8.916 17.912a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0z"}],["path",{d:"M8.916 4.674a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z"}]];var oh=[["path",{d:"M6 2v14a2 2 0 0 0 2 2h14"}],["path",{d:"M18 22V8a2 2 0 0 0-2-2H2"}]];var sh=[["path",{d:"M2.7 10.3a2.41 2.41 0 0 0 0 3.41l7.59 7.59a2.41 2.41 0 0 0 3.41 0l7.59-7.59a2.41 2.41 0 0 0 0-3.41l-7.59-7.59a2.41 2.41 0 0 0-3.41 0Z"}]];var ih=[["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 ah=[["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 dh=[["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 uh=[["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 ch=[["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 lh=[["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 fh=[["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 ph=[["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 tu=[["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 hh=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4"}]];var mh=[["path",{d:"M12 11.4V9.1"}],["path",{d:"m12 17 6.59-6.59"}],["path",{d:"m15.05 5.7-.218-.691a3 3 0 0 0-5.663 0L4.418 19.695A1 1 0 0 0 5.37 21h13.253a1 1 0 0 0 .951-1.31L18.45 16.2"}],["circle",{cx:"20",cy:"9",r:"2"}]];var xh=[["path",{d:"M5 12h14"}]];var gh=[["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 yh=[["path",{d:"m18 8 4 4-4 4"}],["path",{d:"M2 12h20"}],["path",{d:"m6 8-4 4 4 4"}]];var bh=[["path",{d:"M13 5H19V11"}],["path",{d:"M19 5L5 19"}]];var vh=[["path",{d:"M12 2v20"}],["path",{d:"m8 18 4 4 4-4"}],["path",{d:"m8 6 4-4 4 4"}]];var wh=[["path",{d:"M9 18V5l12-2v13"}],["circle",{cx:"6",cy:"18",r:"3"}],["circle",{cx:"18",cy:"16",r:"3"}]];var kh=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1"}]];var Sh=[["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 _h=[["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 Eh=[["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 Mh=[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]];var Ch=[["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 Ah=[["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 $h=[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2"}],["circle",{cx:"12",cy:"12",r:"1"}],["path",{d:"M18.944 12.33a1 1 0 0 0 0-.66 7.5 7.5 0 0 0-13.888 0 1 1 0 0 0 0 .66 7.5 7.5 0 0 0 13.888 0"}]];var Oh=[["path",{d:"M3 7V5a2 2 0 0 1 2-2h2"}],["path",{d:"M17 3h2a2 2 0 0 1 2 2v2"}],["path",{d:"M21 17v2a2 2 0 0 1-2 2h-2"}],["path",{d:"M7 21H5a2 2 0 0 1-2-2v-2"}]];var Th=[["path",{d:"M22 2 2 22"}]];var Lh=[["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 Ph=[["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 Dh=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2"}]];var Nh=[["path",{d:"M16 12v2a2 2 0 0 1-2 2H9a1 1 0 0 0-1 1v3a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2h0"}],["path",{d:"M4 16a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v3a1 1 0 0 1-1 1h-5a2 2 0 0 0-2 2v2"}]];var Rh=[["path",{d:"M10 22a2 2 0 0 1-2-2"}],["path",{d:"M14 2a2 2 0 0 1 2 2"}],["path",{d:"M16 22h-2"}],["path",{d:"M2 10V8"}],["path",{d:"M2 4a2 2 0 0 1 2-2"}],["path",{d:"M20 8a2 2 0 0 1 2 2"}],["path",{d:"M22 14v2"}],["path",{d:"M22 20a2 2 0 0 1-2 2"}],["path",{d:"M4 16a2 2 0 0 1-2-2"}],["path",{d:"M8 10a2 2 0 0 1 2-2h5a1 1 0 0 1 1 1v5a2 2 0 0 1-2 2H9a1 1 0 0 1-1-1z"}],["path",{d:"M8 2h2"}]];var Ih=[["path",{d:"M10 22a2 2 0 0 1-2-2"}],["path",{d:"M16 22h-2"}],["path",{d:"M16 4a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h3a1 1 0 0 0 1-1v-5a2 2 0 0 1 2-2h5a1 1 0 0 0 1-1z"}],["path",{d:"M20 8a2 2 0 0 1 2 2"}],["path",{d:"M22 14v2"}],["path",{d:"M22 20a2 2 0 0 1-2 2"}]];var Fh=[["path",{d:"M4 16a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v3a1 1 0 0 0 1 1h3a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H10a2 2 0 0 1-2-2v-3a1 1 0 0 0-1-1z"}]];var nu=[["path",{d:"M21 5H3"}],["path",{d:"M21 12H9"}],["path",{d:"M21 19H7"}]];var ru=[["path",{d:"M21 5H3"}],["path",{d:"M17 12H7"}],["path",{d:"M19 19H5"}]];var ou=[["path",{d:"M3 5h18"}],["path",{d:"M3 12h18"}],["path",{d:"M3 19h18"}]];var Ki=[["path",{d:"M21 5H3"}],["path",{d:"M15 12H3"}],["path",{d:"M17 19H3"}]];var su=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"}],["path",{d:"M12 9v4"}],["path",{d:"M12 17h.01"}]];var Bh=[["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 Vh=[["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 Hh=[["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 Uh=[["path",{d:"m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5"}],["rect",{x:"2",y:"6",width:"14",height:"12",rx:"2"}]];var zh=[["path",{d:"M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z"}],["path",{d:"M16 9a5 5 0 0 1 0 6"}],["path",{d:"M19.364 18.364a9 9 0 0 0 0-12.728"}]];var jh=[["path",{d:"M11 4.702a.7.7 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.7.7 0 0 0 11 19.298z"}],["path",{d:"m16.5 14.5 5-5"}],["path",{d:"m16.5 9.5 5 5"}]];var Kh=[["path",{d:"M18 6 6 18"}],["path",{d:"m6 6 12 12"}]];var so=e=>e.replace(/\b(?:CmdOrCtrl|CommandOrControl)\b/g,"Ctrl");function Bb(e,t){let r=e.ownerDocument.createElement("div");r.className="vd-chrome",r.setAttribute("role","toolbar"),r.setAttribute("aria-label","Canvas tools"),r.innerHTML=BC(t),e.appendChild(r);let o=new Map;for(let l of r.querySelectorAll("[data-tool]"))o.set(l.dataset.tool,l);let s=r.querySelector('[data-act="undo"]'),i=r.querySelector('[data-act="redo"]'),a=r.querySelector('[data-act="zoom"]'),d=l=>{let p=l.target?.closest("button");if(!p)return;l.stopPropagation();let m=p.dataset.tool;if(m){t.onTool(m);return}switch(p.dataset.act){case"undo":t.onUndo();return;case"redo":t.onRedo();return;case"zoom":t.onZoomReset();return;case"play":t.onPlay?.();return}},c=l=>l.stopPropagation();return r.addEventListener("click",d),r.addEventListener("pointerdown",c),{element:r,setTool(l){for(let[p,m]of o)m.setAttribute("aria-pressed",String(p===l))},setHistory(l,p){s&&(s.disabled=!l),i&&(i.disabled=!p)},setZoom(l){a&&(a.textContent=`${Math.round(l*100)}%`)},destroy(){r.removeEventListener("click",d),r.removeEventListener("pointerdown",c),r.remove()}}}function BC(e){let t=e.formatKeys??so;return[vn({tool:"select",label:"Select",hint:"V",icon:"select"}),vn({tool:"frame",label:"Frame",hint:"F",icon:"frame"}),vn({tool:"rect",label:"Rectangle",hint:"R",icon:"rect"}),vn({tool:"ellipse",label:"Ellipse",hint:"O",icon:"ellipse"}),vn({tool:"line",label:"Line",hint:"L",icon:"line"}),vn({tool:"pen",label:"Pen",hint:"P",icon:"pen"}),vn({tool:"text",label:"Text",hint:"T",icon:"text"}),'<span class="vd-chrome__divider"></span>',vn({act:"undo",label:"Undo",hint:t("CmdOrCtrl+Z"),icon:"undo"}),vn({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>',vn({act:"play",label:"Play",hint:e.playHint,icon:"play"})]:[]].join("")}function vn(e){let t=e.tool?`data-tool="${e.tool}"`:`data-act="${e.act??""}"`,n=e.tool?' aria-pressed="false"':"";return`<button type="button" class="vd-chrome__tool" ${t}${n} title="${e.hint?`${e.label} \xB7 ${e.hint}`:e.label}" aria-label="${e.label}">`+bt(e.icon)+"</button>"}var VC={select:gh,frame:ch,rect:Dh,ellipse:nh,pen:Sh,line:Th,connector:bh,vector:Lh,text:Bh,undo:Vh,redo:Ch,"align-left":Kp,"align-hcenter":Vp,"align-right":Up,"align-top":jp,"align-vcenter":Bp,"align-bottom":Hp,"distribute-h":zp,"distribute-v":Gp,group:lh,component:rh,instance:sh,image:fh,video:Uh,eye:ah,"eye-off":dh,lock:hh,unlock:tu,chevron:Qp,"text-left":Ki,"text-center":ru,"text-right":nu,"text-justify":ou,"text-top":Xp,"text-middle":qp,"text-bottom":Wp,unlink:Hh,rotate:Ah,opacity:ih,radius:Ph,corners:Oh,blend:Yp,plus:Mh,minus:xh,close:Kh,"chevron-down":Zp,"chevron-up":eh,alert:su,check:Jp,link:ph,"font-size":Fp,"line-height":vh,"letter-spacing":yh,eyedropper:_h,document:uh,play:Eh,pause:kh,scan:$h,music:wh,metronome:mh,sound:zh,"sound-off":jh,union:Fh,subtract:Ih,intersect:Rh,exclude:Nh,mask:th,crop:oh};function bt(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">${VC[e].map(([n,r])=>{let o=Object.entries(r).filter(([s])=>s!=="key").map(([s,i])=>` ${s}="${String(i)}"`).join("");return`<${n}${o} vector-effect="non-scaling-stroke"/>`}).join("")}</svg>`}function Vb(e,t){let n=t.filter(a=>a!==e.root.id).flatMap(a=>z(e.root,a)??[]),r=n.filter(st),o=n.filter(yi);if(n.length!==2||r.length!==1||o.length!==1)return{ok:!1,why:"Select one image or video and one rect, ellipse or vector to mask it."};let s=r[0],i=o[0];return Lt(e.root,s.id)||Lt(e.root,i.id)?{ok:!1,why:"Parts of an instance cannot be masked here. Mask them in the component."}:fr(e.root,s.id)!==fr(e.root,i.id)?{ok:!1,why:"The image and the shape are on different pages. Move one across first."}:{ok:!0,pair:{image:s.id,shape:i.id}}}function Hb(e){return[{op:"set",id:e.image,prop:"mask",value:e.shape}]}function Ub(e,t){let n=Ye(e.root).links,r=new Set,o=s=>{st(s)&&s.mask!==void 0&&r.add(s.id);for(let[i,a]of n)a===s.id&&r.add(i);for(let i of te(s))o(i)};for(let s of t){let i=z(e.root,s);i&&s!==e.root.id&&o(i)}return[...r]}function Gh(e){return e.map(t=>({op:"set",id:t,prop:"mask",value:void 0}))}function qh(e,t,n=null){let r=Ye(e.root).links,o=new Set(t),s=[];for(let i of t){if(i===n)continue;let a=r.get(i);a===void 0||o.has(a)||(o.add(a),s.push(a))}return s}function ms(e,t){let n=Ye(e.root).links,r=new Set,o=[],s=a=>{r.add(a.id),n.has(a.id)&&o.push(a.id);for(let d of te(a))s(d)};for(let a of t){let d=z(e.root,a);d&&a!==e.root.id&&s(d)}let i=[];for(let a of o){let d=n.get(a);r.has(d)||i.includes(d)||i.push(d)}return i}function zb(e,t){return nd(e.root,t)}var Wh="clipboard";function Gi(e,t){let n=new Set(t),r=[];return de(e.root,o=>{if(o.id!==e.root.id&&n.has(o.id))return r.push(o),!1}),r}function jb(e,t){let n={};for(let s of e)de(s,i=>{for(let[a,d]of Object.entries(i)){if(ve(d)){let c=tt(d.expr);if(!c.ok)continue;for(let l of on(c.ast).tokens){let p=t[l];p!==void 0&&(n[l]=p)}continue}typeof d=="string"&&o(d),a==="shadow"&&typeof d=="string"&&r(d)}for(let a of Gb(i.content))o(a)});return n;function r(s){let i=t[s],d=es(typeof i=="string"?i:s);if(!("error"in d))for(let c of d.shadows)o(c.colour)}function o(s){for(let i of od(s)){let a=t[i];if(a!==void 0&&(n[i]=a,!(typeof a!="string"||a===s)))for(let d of od(a)){let c=t[d];c!==void 0&&d!==i&&(n[d]=c)}}}}function HC(e,t,n={}){let r={};for(let o of e)de(o,s=>{for(let i of sd(s,n)){let a=t[i];a!==void 0&&(r[i]=a)}});return r}function Kb(e,t){let n={},r=o=>{if(typeof o!="string")return;let s=t[o];s!==void 0&&(n[o]=s)};for(let o of e)de(o,s=>{let i=s;r(i.font);for(let a of Gb(i.content,"font"))r(a)});return n}function Gb(e,t="fill"){if(!Array.isArray(e))return[];let n=[];for(let r of e){if(typeof r=="string")continue;let o=r[t];o!==void 0&&n.push(o)}return n}function Xh(e,t,n){let r=Gi(e,[...t,...ms(e,t)]);if(r.length===0)return null;let o=UC(e,r),s=[...r,...o],i={};for(let c of r)de(c,l=>{let p=n.nodes.get(l.id)?.values;p&&Object.keys(p).length>0&&(i[l.id]=p)});let a={version:e.version,kind:e.kind,tokens:jb(s,e.tokens),fonts:Kb(s,e.fonts),assets:HC(s,e.assets,e.tokens),root:{...e.root,children:s}},d=JSON.parse(xl(a));return d[Wh]={resolved:i,...o.length===0?{}:{components:o.map(c=>c.id)}},JSON.stringify(d,null,2)}function UC(e,t){let n=lt(e.root),r=new Set(t.map(i=>i.id)),o=new Map,s=i=>{de(i,a=>{if(a.type!=="instance")return;let d=n.get(a.component);return d&&!r.has(d.id)&&!o.has(d.id)&&(o.set(d.id,d),s(d)),!1})};return t.forEach(s),[...o.values()]}function Yh(e){let t;try{t=JSON.parse(e)}catch{return null}if(typeof t!="object"||t===null)return null;let n=t;if(typeof n.root!="object"||n.root===null)return null;let{document:r}=sf(t),o=n[Wh],s=typeof o=="object"&&o!==null?o:{},i=s.resolved??{},a=Array.isArray(s.components)?new Set(s.components.filter(l=>typeof l=="string")):new Set,d=r.root.children.filter(l=>l.type==="frame"&&a.has(l.id)),c=r.root.children.filter(l=>!a.has(l.id));return c.length===0?null:{nodes:c,...d.length===0?{}:{components:d},tokens:r.tokens,fonts:r.fonts,resolved:typeof i=="object"&&i!==null?i:{}}}function Jh(e,t){let n=cr(t.root),r=new Map;for(let i of e.nodes)de(i,a=>{let d=zC(a.id,n);return n.add(d),r.set(a.id,d),a.type==="instance"?!1:void 0});let o=i=>n.has(i),s={...e.tokens,...t.tokens};return{nodes:e.nodes.map(i=>qb(i,{payload:e,remap:r,exists:o,tokens:s})),remap:r}}function zC(e,t){let n=e.lastIndexOf("."),r=n===-1?"":e.slice(n+1),o=/^[0-9]+$/.test(r)?e.slice(0,n):e,s=1;for(let i of t){if(!i.startsWith(`${o}.`))continue;let a=Number(i.slice(o.length+1));Number.isInteger(a)&&a>=s&&(s=a+1)}return`${o}.${s}`}function qb(e,t){let n=e,r={};for(let[o,s]of Object.entries(n))o==="id"||o==="children"||(r[o]=ve(s)?jC(s.expr,e.id,o,t):s);if(st(e)&&typeof e.mask=="string"){let o=t.remap.get(e.mask)??e.mask;t.remap.has(e.mask)||t.exists(o)?r.mask=o:delete r.mask}return r.id=t.remap.get(e.id)??e.id,e.type==="instance"?r.children=[]:me(e)&&(r.children=te(e).map(o=>qb(o,t))),r}function jC(e,t,n,r){let o={expr:e},s=tt(e);if(!s.ok)return o;let i=on(s.ast).nodes.some(l=>r.remap.has(l)),a=i?gn(s.ast,l=>r.remap.get(l)):s.ast,d=on(a);if(d.nodes.some(l=>!r.exists(l))||d.tokens.some(l=>r.tokens[l]===void 0)){let l=r.payload.resolved[t]?.[n];return l===void 0?o:l}return i?{expr:qr(a)}:o}var Un="#ffffff",yr="#0b0d0c",Zb="#c6ff3d",KC="#ffb224";var Wb=new Map;function at(e,t={}){let n=t.badge??"none",r=e==="resize"?Qb(t.angle??0):e==="rotate"?qC(t.angle??0):0,o=`${e}:${r}:${n}`,s=Wb.get(o);if(s!==void 0)return s;let{at:i,fallback:a}=GC[e],d=YC(WC(e,r,n),i[0],i[1],a);return Wb.set(o,d),d}var Xb=[2,2],xs=[12,12],GC={arrow:{at:Xb,fallback:"default"},radius:{at:Xb,fallback:"default"},resize:{at:xs,fallback:"ew-resize"},rotate:{at:xs,fallback:"crosshair"},crosshair:{at:xs,fallback:"crosshair"},grab:{at:xs,fallback:"grab"},grabbing:{at:xs,fallback:"grabbing"},text:{at:xs,fallback:"text"}};function qC(e){let t=(e%360+360)%360;return Math.round(t/15)*15%360}function Qb(e){let t=(e%180+180)%180;return Math.round(t/15)*15%180}function WC(e,t,n){switch(e){case"arrow":return ev(n);case"resize":return JC(t,n);case"rotate":return ZC(t);case"crosshair":return e2();case"grab":return Jb(!1);case"grabbing":return Jb(!0);case"radius":return t2(n);case"text":return QC()}}function XC(e){return`<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">${e}</svg>`}function YC(e,t,n,r){return`url("data:image/svg+xml,${encodeURIComponent(XC(e))}") ${t} ${n}, ${r}`}var Yb="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 ev(e){return`<path d="${Yb}" fill="${Un}" stroke="${Un}" stroke-width="3" stroke-linejoin="round"/><path d="${Yb}" fill="${yr}"/>`+tv(e)}function JC(e,t){let n=["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"],r=(o,s)=>n.map(i=>`<path d="${i}" stroke="${s}" stroke-width="${o}"/>`).join("");return`<g transform="rotate(${e} 12 12)" fill="none" stroke-linecap="round" stroke-linejoin="round">`+r(3.6,Un)+r(1.6,yr)+"</g>"+tv(t)}function ZC(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"],n=(r,o)=>t.map(s=>`<path d="${s}" stroke="${o}" stroke-width="${r}"/>`).join("");return`<g transform="rotate(${e} 12 12)" fill="none" stroke-linecap="round" stroke-linejoin="round">`+n(3.6,Un)+n(1.6,yr)+"</g>"}function QC(){let e=["M12 4.5 V19.5","M9 4.5 H15","M9 19.5 H15"],t=(n,r)=>e.map(o=>`<path d="${o}" stroke="${r}" stroke-width="${n}"/>`).join("");return'<g fill="none" stroke-linecap="round">'+t(3.4,Un)+t(1.5,yr)+"</g>"}function e2(){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="${Un}" stroke-width="3"/><path d="${e}" stroke="${yr}" stroke-width="1.2"/></g>`}function Jb(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="${Un}" stroke-width="3.4"/><path d="${t}" stroke="${yr}" stroke-width="1.5"/></g>`}function t2(e){return ev("none")+n2(e)}function n2(e){return`<g><rect x="17.5" y="17.5" width="14" height="14" rx="4.5" fill="${Un}"/><rect x="18.7" y="18.7" width="11.6" height="11.6" rx="3.4" fill="${e==="none"?Zb:KC}"/><path d="M21.6 27.9 V25.4 A3.8 3.8 0 0 1 25.4 21.6 H27.9" fill="none" stroke="${yr}" stroke-width="1.5" stroke-linecap="round"/></g>`}function tv(e){return e==="none"?"":`<g><rect x="18.5" y="18.5" width="13" height="13" rx="4" fill="${Un}"/><rect x="19.6" y="19.6" width="10.8" height="10.8" rx="3" fill="${Zb}"/><text x="25" y="28.4" text-anchor="middle" fill="${yr}" font-family="ui-sans-serif, system-ui, -apple-system, Helvetica, sans-serif" font-size="10" font-weight="700">${e==="token"?"$":"\u0192"}</text></g>`}var Zh=6,zn=.01,dt={dx:0,dy:0,guides:[],measures:[]},iu=["lo","mid","hi"];function Qh(e,t,n){let r=[],o=(s,i)=>{let a=t.nodes.get(s);a&&r.push({id:s,frame:Fi(a),isPage:i})};return e.root.w!==void 0&&e.root.h!==void 0&&o(e.root.id,!0),de(e.root,s=>{if(n.has(s.id)||"hidden"in s&&s.hidden===!0)return!1;if(s.id!==e.root.id){if(s.type==="instance"){o(s.id,!1);return}if(s.type==="frame"){o(s.id,!0);return}me(s)||o(s.id,!1)}}),r}function em(e,t,n){if(n<=0||t.length===0)return dt;let r=gs("x",e,t,n,iu,!0),o=gs("y",e,t,n,iu,!0);return tm(e,t,r,o)}function au(e,t,n,r){if(r<=0||n.length===0)return dt;let o=t.includes("w")?["lo"]:t.includes("e")?["hi"]:[],s=t.includes("n")?["lo"]:t.includes("s")?["hi"]:[],i=gs("x",e,n,r,o,!1),a=gs("y",e,n,r,s,!1);return tm(e,n,i,a)}function du(e,t,n){let r={x:e.x,y:e.y,w:0,h:0};if(n<=0||t.length===0)return dt;let o=gs("x",r,t,n,["lo"],!1),s=gs("y",r,t,n,["lo"],!1);return tm(r,t,o,s)}function gs(e,t,n,r,o,s){let i={axis:e,delta:0,kind:"none"};if(o.length===0)return i;let a=r2(e,t,n,r,o),d=s?s2(e,t,n,r):null;return a&&d?Math.abs(d.delta)<Math.abs(a.delta)-zn?{axis:e,delta:d.delta,kind:"space",gap:d.gap}:{axis:e,delta:a.delta,kind:"align",at:a.at}:a?{axis:e,delta:a.delta,kind:"align",at:a.at}:d?{axis:e,delta:d.delta,kind:"space",gap:d.gap}:i}function r2(e,t,n,r,o){let s=null;for(let i of n)for(let a of iu){let d=$e(i.frame,e,a);for(let c of o){let l=d-$e(t,e,c);if(Math.abs(l)>r)continue;let p=c==="mid"&&a==="mid";(s===null||o2(l,p,s))&&(s={at:d,delta:l,centred:p})}}return s?{at:s.at,delta:s.delta}:null}function o2(e,t,n){let r=Math.abs(e),o=Math.abs(n.delta);return r<o-zn?!0:r>o+zn?!1:t&&!n.centred}function s2(e,t,n,r){let o=nv(e,t,n);if(o.length<2)return null;let s=rv(t,e),i=$e(t,e,"lo"),a=[];for(let c of i2(o,e))for(let l of o)a.push({delta:$e(l,e,"hi")+c-i,gap:c}),a.push({delta:$e(l,e,"lo")-c-s-i,gap:c});for(let c=0;c+1<o.length;c+=1){let l=o[c],p=o[c+1];if(!l||!p)continue;let m=$e(p,e,"lo")-$e(l,e,"hi")-s;m<=zn||a.push({delta:$e(l,e,"hi")+m/2-i,gap:m/2})}let d=null;for(let c of a)Math.abs(c.delta)>r||(d===null||Math.abs(c.delta)<Math.abs(d.delta)-zn)&&(d=c);return d}function nv(e,t,n){let r=nm(e);return n.filter(o=>!o.isPage&&u2(o.frame,t,r)).map(o=>o.frame).sort((o,s)=>$e(o,e,"lo")-$e(s,e,"lo"))}function i2(e,t){let n=[];for(let r=0;r+1<e.length;r+=1){let o=e[r],s=e[r+1];if(!o||!s)continue;let i=$e(s,t,"lo")-$e(o,t,"hi");i<=zn||n.some(a=>Math.abs(a-i)<zn)||n.push(i)}return n}function tm(e,t,n,r){let o={...e,x:e.x+n.delta,y:e.y+r.delta},s=[],i=[];for(let a of[n,r]){if(a.kind==="align"&&a.at!==void 0){let d=a2(a.axis,a.at,o,t);d&&s.push(d)}a.kind==="space"&&a.gap!==void 0&&i.push(...d2(a.axis,a.gap,o,t))}return{dx:n.delta,dy:r.delta,guides:s,measures:i}}function a2(e,t,n,r){let o=nm(e),s=$e(n,o,"lo"),i=$e(n,o,"hi"),a=!1;for(let d of r)iu.some(c=>c2($e(d.frame,e,c),t))&&(a=!0,s=Math.min(s,$e(d.frame,o,"lo")),i=Math.max(i,$e(d.frame,o,"hi")));return a?{axis:e,at:t,from:s,to:i}:null}function d2(e,t,n,r){let o=nm(e),s=[...nv(e,n,r),n].sort((a,d)=>$e(a,e,"lo")-$e(d,e,"lo")),i=[];for(let a=0;a+1<s.length;a+=1){let d=s[a],c=s[a+1];if(!d||!c)continue;let l=$e(c,e,"lo")-$e(d,e,"hi");if(Math.abs(l-t)>zn)continue;let p=Math.max($e(d,o,"lo"),$e(c,o,"lo")),m=Math.min($e(d,o,"hi"),$e(c,o,"hi"));i.push({axis:e,at:(p+m)/2,from:$e(d,e,"hi"),to:$e(c,e,"lo"),label:l2(l)})}return i}function nm(e){return e==="x"?"y":"x"}function rv(e,t){return t==="x"?e.w:e.h}function $e(e,t,n){let r=t==="x"?e.x:e.y,o=rv(e,t);return n==="lo"?r:n==="hi"?r+o:r+o/2}function u2(e,t,n){return $e(e,n,"lo")<$e(t,n,"hi")&&$e(e,n,"hi")>$e(t,n,"lo")}function c2(e,t){return Math.abs(e-t)<zn}function l2(e){return String(Math.round(e*100)/100)}var qi=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 n=this.past[this.past.length-1];return n?(this.past[this.past.length-1]={label:t.label,ops:[...n.ops,...t.ops],inverse:[...t.inverse,...n.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 n=this.past.length-t.length;return t.every((r,o)=>this.past[n+o]===r)}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 ov=1,f2=48,p2=.06,h2=.5;function sv(e){return Math.max(f2,Math.min(e.width,e.height)*p2)}function rm(e,t){let n=new Set(t),r=[];for(let o of e.root.children)(n.has(o.id)||iv(o,n))&&r.push(o.id);return r}function iv(e,t){for(let n of te(e))if(t.has(n.id)||iv(n,t))return!0;return!1}function uu(e){let t=e.filter(i=>i.w>0&&i.h>0);if(t.length===0)return null;let n=Math.min(...t.map(i=>i.x)),r=Math.min(...t.map(i=>i.y)),o=Math.max(...t.map(i=>i.x+i.w)),s=Math.max(...t.map(i=>i.y+i.h));return{x:n,y:r,w:o-n,h:s-r}}function cu(e,t){let n=sv(t),r={width:Math.max(1,t.width-n*2),height:Math.max(1,t.height-n*2)},o=ds(Math.min(r.width/e.w,r.height/e.h,ov));return{zoom:o,x:t.width/2-(e.x+e.w/2)*o,y:t.height/2-(e.y+e.h/2)*o}}function om(e,t,n){let r=cu(e,t);return m2(e,t,n)&&n.zoom>=r.zoom*h2?null:r}function m2(e,t,n){let r=e.x*n.zoom+n.x,o=e.y*n.zoom+n.y,s=(e.x+e.w)*n.zoom+n.x,i=(e.y+e.h)*n.zoom+n.y;return r>=0&&o>=0&&s<=t.width&&i<=t.height}function av(e,t,n,r){let o=Math.exp(Math.log(e.zoom)+(Math.log(t.zoom)-Math.log(e.zoom))*n),s={x:r.width/2,y:r.height/2},i={x:(s.x-e.x)/e.zoom,y:(s.y-e.y)/e.zoom},a={x:(s.x-t.x)/t.zoom,y:(s.y-t.y)/t.zoom},d={x:i.x+(a.x-i.x)*n,y:i.y+(a.y-i.y)*n};return{zoom:o,x:s.x-d.x*o,y:s.y-d.y*o}}function dv(e){return 1-(1-e)**3}function lu(e){let t=e.nodeId??"A shape";switch(e.code){case"merge-too-few":return"Select two or more shapes to merge them.";case"merge-not-a-shape":return e.message.includes(" is text")?`${t} is text. Only rects, ellipses and vectors merge.`:`${t} is not a shape. Only rects, ellipses and vectors merge.`;case"merge-stroke-only":return e.message.includes("paints nothing")?`${t} paints nothing. Merge works on filled areas.`:`${t} is only a stroke. Merge works on filled areas.`;case"merge-hidden":return`${t} is hidden. Show it to merge it.`;case"merge-in-instance":return"Parts of an instance cannot merge. Merge them in the component.";case"merge-across-frames":return"These are on different pages or frames, so they cannot merge.";case"unknown-reference":return`${t} is no longer in the document.`;default:return`${e.message}.`}}function x2(e){return!("separator"in e)}function sm(e,t=[]){let n=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"},...uv(e),{separator:!0},{id:"fit",label:"Fit to screen",keys:"Shift+1"},{id:"zoom100",label:"Zoom to 100%",keys:"CmdOrCtrl+0"},...n];let r=[];e.isText&&e.count===1&&r.push({id:"editText",label:"Edit text",keys:"Enter"},{separator:!0}),e.isVector&&e.count===1&&r.push({id:"editPoints",label:"Edit points",keys:"Enter"},{separator:!0}),e.mask?.crop&&e.count===1&&r.push({id:"crop",label:"Crop image",keys:"Enter"},{separator:!0}),(e.convertible??0)>0&&r.push({id:"toVector",label:"Convert to vector",keys:"CmdOrCtrl+Shift+O"},{separator:!0}),r.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}),r.push(...y2(e)),r.push(...g2(e)),r.push(...b2(e.components));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&&r.push({separator:!0},...o),r.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){r.push({separator:!0});for(let s of e.bound)r.push({id:`detach:${s.prop}`,label:`Detach ${s.prop}`,hint:s.source})}return r.push(...uv(e)),r.push(...n),r.push({separator:!0},{id:"delete",label:v2(e),keys:"Delete"}),r}function g2(e){let t=e.mask;if(!t)return[];let n=[];return t.offer&&n.push({id:"mask",label:"Mask with shape",keys:"CmdOrCtrl+Alt+M",disabled:!t.can}),t.release&&n.push({id:"releaseMask",label:"Release mask",keys:"CmdOrCtrl+Alt+M"}),n.length===0?[]:[...n,{separator:!0}]}function y2(e){if(e.mergeable===void 0||e.count<2)return[];let t=!e.mergeable;return[{separator:!0},{id:"merge:union",label:"Union selection",keys:"Alt+Shift+U",disabled:t},{id:"merge:subtract",label:"Subtract selection",keys:"Alt+Shift+S",disabled:t},{id:"merge:intersect",label:"Intersect selection",keys:"Alt+Shift+I",disabled:t},{id:"merge:exclude",label:"Exclude selection",keys:"Alt+Shift+X",disabled:t}]}function b2(e){if(!e)return[];let t=[];return e.create&&t.push({id:"createComponent",label:"Create component",keys:"CmdOrCtrl+Alt+K"}),e.instance&&t.push({id:"goToComponent",label:"Go to component"},{id:"resetOverrides",label:"Reset overrides",disabled:e.overrides===0},{id:"detachInstance",label:"Detach instance",keys:"CmdOrCtrl+Alt+B"}),e.part&&t.push({id:"goToComponent",label:"Go to component"},{id:"resetOverrides",label:"Reset this part",disabled:e.overrides===0}),e.component&&t.push({id:"placeInstance",label:"Place instance"}),t.length===0?[]:[{separator:!0},...t]}function v2(e){let t=e.components;return t?.part?"Hide on this instance":t&&t.uses>0?`Delete and detach ${t.uses} ${t.uses===1?"use":"uses"}`:"Delete"}var w2=4;function uv(e){let t=(e.locksHere??[]).slice(0,w2).map(r=>({id:`unlock:${r}`,label:`Unlock ${r}`}));e.anyLocked&&t.push({id:"unlockAll",label:"Unlock all"});let n=e.hiddenCount??0;return n>0&&t.push({id:"showAll",label:`Show all hidden (${n})`}),t.length===0?[]:[{separator:!0},...t]}function fu(e,t){let n=e.ownerDocument,r=t.formatKeys??so,o=n.createElement("div");o.className="vd-menu",o.setAttribute("role","menu"),o.hidden=!0,e.appendChild(o);let s=!1,i=[],a=-1;function d(k){o.replaceChildren(),i=[];for(let _ of k){if(!x2(_)){let D=n.createElement("div");D.className="vd-menu__separator",o.appendChild(D);continue}let M=n.createElement("button");M.type="button",M.className="vd-menu__item",M.dataset.command=_.id,M.disabled=_.disabled===!0,M.setAttribute("role","menuitem");let R=n.createElement("span");R.textContent=_.label,M.appendChild(R);let B=_.hint??(_.keys===void 0?void 0:r(_.keys));if(B!==void 0){let D=n.createElement("span");D.className="vd-menu__hint",D.textContent=B,M.appendChild(D)}o.appendChild(M),M.disabled||i.push(M)}}function c(k){o.style.left=`${k.x}px`,o.style.top=`${k.y}px`;let _=e.getBoundingClientRect(),M=t.bounds?.()??_,R=o.getBoundingClientRect();if(R.width===0&&R.height===0)return;let B=_.left+k.x+R.width-M.right,D=_.top+k.y+R.height-M.bottom;B>0&&(o.style.left=`${Math.max(M.left-_.left,k.x-R.width)}px`),D>0&&(o.style.top=`${Math.max(M.top-_.top,k.y-R.height)}px`)}function l(k){i.length!==0&&(a=(k+i.length)%i.length,i[a]?.focus())}let p=k=>{let _=k.target?.closest("button");if(!_||_.disabled)return;k.stopPropagation();let M=_.dataset.command;w(),M&&t.onCommand(M)},m=k=>k.stopPropagation(),g=k=>{k.key==="ArrowDown"?(k.preventDefault(),l(a+1)):k.key==="ArrowUp"?(k.preventDefault(),l(a-1)):k.key==="Escape"&&(k.preventDefault(),k.stopPropagation(),w(),t.returnFocus?t.returnFocus():e.focus())},b=k=>{s&&(k.target instanceof Node&&o.contains(k.target)||w())};function w(){s&&(s=!1,a=-1,o.hidden=!0,n.removeEventListener("pointerdown",b,!0),n.removeEventListener("wheel",b,!0))}return o.addEventListener("click",p),o.addEventListener("pointerdown",m),o.addEventListener("keydown",g),{element:o,get isOpen(){return s},open(k,_){d(_),o.hidden=!1,s=!0,c(k),n.addEventListener("pointerdown",b,!0),n.addEventListener("wheel",b,!0),l(0)},close:w,destroy(){w(),o.removeEventListener("click",p),o.removeEventListener("pointerdown",m),o.removeEventListener("keydown",g),o.remove()}}}var ys=2,cv=1.5,im=1.5,lv=1.5,wv={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},fv=3.6,k2=22,pu=14,hu=15,am=4,pv=15,hv=23,io=7,mv=3.5,br=12,S2=4.5,mu=16,Dt=18,dm=9,um=6.1,xv="Drop or double-click",_2=6.4,gv=16,vr=3,yv=5,E2=11,bv=6,vv=6.4;function kv(e,t){let n=e.ownerDocument,r=n.createElementNS(le,"svg");r.setAttribute("class","vd-editor__overlay"),e.appendChild(r);let o=[],s=[],i=[],a=[],d=[],c=[],l=null,p=null,m=[],g=[];function b(v){let N=t({x:v.x,y:v.y}),I=t({x:v.x+v.w,y:v.y+v.h});return{x:N.x,y:N.y,w:I.x-N.x,h:I.y-N.y}}function w(v){for(;r.firstChild;)r.removeChild(r.firstChild);o=[],s=[],i=[],a=[],d=[],c=[],l=null,p=null,m=[],g=(v.pageLabels??[]).flatMap(I=>G(I));let N=v.turn&&v.turn.angle!==0?{angle:v.turn.angle,centre:t(v.turn.centre)}:null;for(let I of v.slots??[])fe(I);v.presence&&oe(v.presence);for(let I of v.highlight)Se("vd-editor__highlight",bs(b(I),ys),ys);if(v.lockHint&&ee(v.lockHint),v.hover&&Se("vd-editor__hover",ao(b(v.hover)),im),v.hoverLine){let I=n.createElementNS(le,"path");I.setAttribute("class","vd-editor__hover"),I.setAttribute("d",ze(Be(v.hoverLine,t))),r.appendChild(I)}for(let I of v.parked)Se("vd-editor__parked",ao(b(I)),im);for(let I of v.members)Se("vd-editor__member",bs(b(I),cv),cv);v.lead&&Se("vd-editor__lead",ao(b(v.lead)),ys);for(let I of v.guides)$(I);for(let I of v.measures)P(I);_(N,()=>{for(let I of v.textSelection)r.appendChild(be("vd-editor__text-selection",b(I)))});for(let I of v.masks??[])R(I);if(v.box&&O(v.box),v.caret&&_(N,()=>D(v.caret)),a=v.rings.map(V),i=v.spacers.map(T),v.badge&&v.box){let I=b(v.box.frame),F=l?Math.max(...[{x:I.x,y:I.y},{x:I.x+I.w,y:I.y},{x:I.x,y:I.y+I.h},{x:I.x+I.w,y:I.y+I.h}].map(q=>je(q,l.centre,l.angle).y)):I.y+I.h;C(v.badge,{x:I.x+I.w/2,y:F+dm+Dt/2})}if(v.draft){let I=b(v.draft);if(v.draftEllipse){let F=n.createElementNS(le,"ellipse");F.setAttribute("class","vd-editor__draft"),F.setAttribute("cx",String(I.x+I.w/2)),F.setAttribute("cy",String(I.y+I.h/2)),F.setAttribute("rx",String(Math.abs(I.w)/2)),F.setAttribute("ry",String(Math.abs(I.h)/2)),r.appendChild(F)}else r.appendChild(be("vd-editor__draft",I))}v.marquee&&r.appendChild(be("vd-editor__marquee",b(v.marquee))),v.path&&(p=N,_(N,()=>B(v.path))),v.line&&k(v.line)}function k(v){v.target&&Se("vd-editor__hover",ao(b(v.target)),im);let N=t(v.from),I=t(v.to);if(v.draft){let q=n.createElementNS(le,"line");q.setAttribute("class","vd-editor__path"),q.setAttribute("x1",String(N.x)),q.setAttribute("y1",String(N.y)),q.setAttribute("x2",String(I.x)),q.setAttribute("y2",String(I.y)),r.appendChild(q)}for(let q of v.anchors){let Y=t(q),Q=n.createElementNS(le,"circle");Q.setAttribute("class","vd-editor__anchor"),Q.setAttribute("cx",String(Y.x)),Q.setAttribute("cy",String(Y.y)),Q.setAttribute("r",String(mv)),r.appendChild(Q)}if(v.chosen){let q=t(v.chosen),Y=n.createElementNS(le,"circle");Y.setAttribute("class","vd-editor__close"),Y.setAttribute("cx",String(q.x)),Y.setAttribute("cy",String(q.y)),Y.setAttribute("r",String(io)),r.appendChild(Y)}let F=[["start",N,v.attached.start],["end",I,v.attached.end]];for(let[q,Y,Q]of F){let Te=n.createElementNS(le,"circle");Te.setAttribute("class",Q?"vd-editor__anchor vd-editor__anchor--on":"vd-editor__anchor"),Te.setAttribute("cx",String(Y.x)),Te.setAttribute("cy",String(Y.y)),Te.setAttribute("r",String(io/2+1)),Te.setAttribute("data-end",q),r.appendChild(Te)}c=F.map(([q,Y])=>({end:q,rect:{x:Y.x-br/2,y:Y.y-br/2,w:br,h:br}})).reverse()}function _(v,N){if(!v){N();return}let I=r.childNodes.length;N();let F=n.createElementNS(le,"g");for(F.setAttribute("transform",`rotate(${v.angle} ${v.centre.x} ${v.centre.y})`);r.childNodes.length>I;)F.insertBefore(r.childNodes[r.childNodes.length-1],F.firstChild);r.appendChild(F)}function M(v,N){return N?je(v,N.centre,-N.angle):v}function R(v){if(v.ghost){let q=b(v.ghost.frame),Y=n.createElementNS(le,"image");Y.setAttribute("class","vd-editor__ghost"),Y.setAttribute("x",String(q.x)),Y.setAttribute("y",String(q.y)),Y.setAttribute("width",String(Math.max(0,q.w))),Y.setAttribute("height",String(Math.max(0,q.h))),Y.setAttribute("href",v.ghost.href),Y.setAttribute("preserveAspectRatio",v.ghost.aspect),v.ghost.rotation!==0&&Y.setAttribute("transform",`rotate(${v.ghost.rotation} ${q.x+q.w/2} ${q.y+q.h/2})`),r.appendChild(Y)}let N=ze(Be(v.contours,t)),I=n.createElementNS(le,"path");I.setAttribute("class","vd-editor__mask-halo"),I.setAttribute("d",N),r.appendChild(I);let F=n.createElementNS(le,"path");F.setAttribute("class",v.cropping?"vd-editor__mask vd-editor__mask--crop":"vd-editor__mask"),F.setAttribute("d",N),r.appendChild(F)}function B(v){let N=n.createElementNS(le,"path");if(N.setAttribute("class","vd-editor__path"),N.setAttribute("d",ze(Be(v.contours,t))),r.appendChild(N),v.pending){let F=t(v.pending.from),q=t(v.pending.to),Y=v.pending.c1?t(v.pending.c1):F,Q=n.createElementNS(le,"path");Q.setAttribute("class","vd-editor__pending"),Q.setAttribute("d",`M${F.x} ${F.y} C${Y.x} ${Y.y} ${q.x} ${q.y} ${q.x} ${q.y}`),r.appendChild(Q)}for(let F of v.handles){let q=t(F.at),Y=t(F.anchor),Q=n.createElementNS(le,"line");Q.setAttribute("class","vd-editor__arm"),Q.setAttribute("x1",String(Y.x)),Q.setAttribute("y1",String(Y.y)),Q.setAttribute("x2",String(q.x)),Q.setAttribute("y2",String(q.y)),r.appendChild(Q)}for(let F of v.handles){let q=t(F.at),Y=n.createElementNS(le,"circle");Y.setAttribute("class","vd-editor__knob"),Y.setAttribute("cx",String(q.x)),Y.setAttribute("cy",String(q.y)),Y.setAttribute("r",String(mv)),r.appendChild(Y)}for(let F of v.anchors){let q=t(F.at),Y=be(F.selected?"vd-editor__anchor vd-editor__anchor--on":"vd-editor__anchor",{x:Math.round(q.x-io/2)+.5,y:Math.round(q.y-io/2)+.5,w:io,h:io});Y.setAttribute("data-key",F.key),r.appendChild(Y)}if(v.closeAt){let F=t(v.closeAt),q=n.createElementNS(le,"circle");q.setAttribute("class","vd-editor__close"),q.setAttribute("cx",String(F.x)),q.setAttribute("cy",String(F.y)),q.setAttribute("r",String(io)),r.appendChild(q)}let I=F=>({x:F.x-br/2,y:F.y-br/2,w:br,h:br});d=[...[...v.handles].reverse().map(F=>({kind:"handle",key:F.key,rect:I(t(F.at))})),...[...v.anchors].reverse().map(F=>({kind:"anchor",key:F.key,rect:I(t(F.at))}))]}function D(v){let N=t({x:v.x,y:v.y}),I=t({x:v.x,y:v.y+v.h}),F=n.createElementNS(le,"line");F.setAttribute("class","vd-editor__caret");let q=Math.round(N.x)+.5;F.setAttribute("x1",String(q)),F.setAttribute("y1",String(N.y)),F.setAttribute("x2",String(q)),F.setAttribute("y2",String(I.y)),v.fill!==void 0&&!v.fill.startsWith("url(")&&(F.style.stroke=v.fill),r.appendChild(F)}function V(v){let N=t(v.at),I=n.createElementNS(le,"circle");return I.setAttribute("class","vd-editor__ring"),I.setAttribute("cx",String(N.x)),I.setAttribute("cy",String(N.y)),I.setAttribute("r",String(S2)),r.appendChild(I),{id:v.id,rect:{x:N.x-mu/2,y:N.y-mu/2,w:mu,h:mu}}}function T(v){let N=t(v.at),I=v.axis==="x"?am:hu,F=v.axis==="x"?hu:am,q=be("vd-editor__spacer",{x:N.x-I/2,y:N.y-F/2,w:I,h:F});q.setAttribute("rx",String(am/2)),r.appendChild(q),v.label!==null&&C(v.label,v.axis==="x"?{x:N.x,y:N.y-hu/2-dm-Dt/2}:{x:N.x+hu/2+dm+Dt,y:N.y});let Y=v.axis==="x"?pv:hv,Q=v.axis==="x"?hv:pv;return{id:v.id,rect:{x:N.x-Y/2,y:N.y-Q/2,w:Y,h:Q}}}function O(v){let N=b(v.frame),I=v.rotation??0;l=I===0?null:{angle:I,centre:{x:N.x+N.w/2,y:N.y+N.h/2}},_(l,()=>j(v,N)),v.handles&&v.rotatable&&(m=Ii.map(F=>{let{u:q,v:Y}=cs(F);return{handle:F,at:{x:N.x+N.w*q,y:N.y+N.h*Y}}}))}function j(v,N){if(Se("vd-editor__outline",bs(N,ys),ys),!!v.handles){o=gp(N).map(I=>({...I,bound:v.boundHandles.has(I.handle)}));for(let I of Ii){let{u:F,v:q}=cs(I),Y={x:N.x+N.w*F-ls/2,y:N.y+N.h*q-ls/2,w:ls,h:ls};r.appendChild(be("vd-editor__halo",bs(Y,lv+1))),r.appendChild(be("vd-editor__handle",Y))}s=v.adjusters.map(I=>{let F=t(I.at),q=n.createElementNS(le,"circle");q.setAttribute("class","vd-editor__halo"),q.setAttribute("cx",String(F.x)),q.setAttribute("cy",String(F.y)),q.setAttribute("r",String(fv+lv/2+.5)),r.appendChild(q);let Y=n.createElementNS(le,"circle");return Y.setAttribute("class","vd-editor__adjuster"),Y.setAttribute("cx",String(F.x)),Y.setAttribute("cy",String(F.y)),Y.setAttribute("r",String(fv)),r.appendChild(Y),{id:I.id,bound:I.bound,rect:{x:F.x-pu/2,y:F.y-pu/2,w:pu,h:pu}}})}}function $(v){let N=t(v.axis==="x"?{x:v.at,y:v.from}:{x:v.from,y:v.at}),I=t(v.axis==="x"?{x:v.at,y:v.to}:{x:v.to,y:v.at}),F=n.createElementNS(le,"line");F.setAttribute("class","vd-editor__guide"),F.setAttribute("x1",String(Ve(N.x))),F.setAttribute("y1",String(Ve(N.y))),F.setAttribute("x2",String(Ve(I.x))),F.setAttribute("y2",String(Ve(I.y))),r.appendChild(F)}function P(v){let N=t(v.axis==="x"?{x:v.from,y:v.at}:{x:v.at,y:v.from}),I=t(v.axis==="x"?{x:v.to,y:v.at}:{x:v.at,y:v.to}),F=n.createElementNS(le,"path");F.setAttribute("class","vd-editor__measure"),F.setAttribute("d",v.axis==="x"?`M${Ve(N.x)} ${Ve(N.y)-vr} V${Ve(N.y)+vr} M${Ve(N.x)} ${Ve(N.y)} H${Ve(I.x)} M${Ve(I.x)} ${Ve(I.y)-vr} V${Ve(I.y)+vr}`:`M${Ve(N.x)-vr} ${Ve(N.y)} H${Ve(N.x)+vr} M${Ve(N.x)} ${Ve(N.y)} V${Ve(I.y)} M${Ve(I.x)-vr} ${Ve(I.y)} H${Ve(I.x)+vr}`),r.appendChild(F);let q=n.createElementNS(le,"text");q.setAttribute("class","vd-editor__measure-text"),q.setAttribute("x",String((N.x+I.x)/2)),q.setAttribute("y",String((N.y+I.y)/2-(v.axis==="x"?yv:0))),v.axis==="y"&&q.setAttribute("dx",String(yv)),q.textContent=v.label,r.appendChild(q)}function C(v,N){let I=Math.max(34,v.length*um+14),F=N.x-I/2,q=N.y-Dt/2,Y=be("vd-editor__badge",{x:F,y:q,w:I,h:Dt});Y.setAttribute("rx",String(Dt/2)),r.appendChild(Y);let Q=n.createElementNS(le,"text");Q.setAttribute("class","vd-editor__badge-text"),Q.setAttribute("x",String(F+I/2)),Q.setAttribute("y",String(q+Dt/2)),Q.textContent=v,r.appendChild(Q)}function G(v){let N=b(v.frame),I=Math.floor(N.w/vv);if(I<3)return[];let F=v.label.length>I?`${v.label.slice(0,I-1)}\u2026`:v.label;v.component&&r.appendChild(be("vd-editor__component-outline",ao(N)));let q=n.createElementNS(le,"text");q.setAttribute("class",`vd-editor__page-label vd-editor__page-label--${v.state}${v.component?" vd-editor__page-label--component":""}`),q.setAttribute("x",String(N.x)),q.setAttribute("y",String(N.y-bv)),q.textContent=F,r.appendChild(q);let Y=Math.min(N.w,F.length*vv+4),Q=E2+6;return[{id:v.id,rect:{x:N.x,y:N.y-bv-Q+3,w:Y,h:Q}}]}function ee(v){let N=ao(b(v.frame));r.appendChild(be("vd-editor__lock",N));let I=`${v.label} \xB7 locked`,F=I.length*um+14,q=N.y+4,Y=be("vd-editor__lock-tag",{x:N.x+4,y:q,w:F,h:Dt});Y.setAttribute("rx","4"),r.appendChild(Y);let Q=n.createElementNS(le,"text");Q.setAttribute("class","vd-editor__lock-text"),Q.setAttribute("x",String(N.x+4+F/2)),Q.setAttribute("y",String(q+Dt/2)),Q.textContent=I,r.appendChild(Q)}function fe(v){let N=ao(b(v.frame)),I=be(v.target?"vd-editor__slot vd-editor__slot--target":"vd-editor__slot",N);I.setAttribute("rx","3"),r.appendChild(I);let F=Q=>Q.length*_2+16<=N.w,q=[];N.h>=20&&F(v.label)&&q.push([v.label,"vd-editor__slot-label"]),q.length>0&&N.h>=48&&F(xv)&&q.push([xv,"vd-editor__slot-hint"]);let Y=N.y+N.h/2-(q.length-1)*gv/2;q.forEach(([Q,Te],Ct)=>{let _e=n.createElementNS(le,"text");_e.setAttribute("class",Te),_e.setAttribute("x",String(N.x+N.w/2)),_e.setAttribute("y",String(Y+Ct*gv)),_e.textContent=Q,r.appendChild(_e)})}function oe(v){let N=v.frames.map(Te=>bs(b(Te),ys));for(let Te of N)r.appendChild(be("vd-editor__presence",Te));let I=N[0];if(!I||!v.label)return;let F=Math.max(34,v.label.length*um+14),q=I.y-Dt-3<0?I.y+3:I.y-Dt-3,Y=be("vd-editor__presence-tag",{x:I.x,y:q,w:F,h:Dt});Y.setAttribute("rx","4"),r.appendChild(Y);let Q=n.createElementNS(le,"text");Q.setAttribute("class","vd-editor__presence-text"),Q.setAttribute("x",String(I.x+F/2)),Q.setAttribute("y",String(q+Dt/2)),Q.textContent=v.label,r.appendChild(Q)}function Se(v,N,I){let q=v==="vd-editor__highlight"?"vd-editor__halo vd-editor__halo--highlight":v==="vd-editor__hover"||v==="vd-editor__member"?"vd-editor__halo vd-editor__halo--quiet":"vd-editor__halo";r.appendChild(be(q,bs(N,I+1))),r.appendChild(be(v,N))}function be(v,N){let I=n.createElementNS(le,"rect");return I.setAttribute("class",v),I.setAttribute("x",String(N.x)),I.setAttribute("y",String(N.y)),I.setAttribute("width",String(Math.max(0,N.w))),I.setAttribute("height",String(Math.max(0,N.h))),I}return{element:r,render:w,hitHandle(v){let N=M(v,l);for(let I of o)if(Mt(I.rect,N.x,N.y))return{handle:I.handle,bound:I.bound};return null},hitAdjuster(v){let N=M(v,l);for(let I of s)if(Mt(I.rect,N.x,N.y))return{id:I.id,bound:I.bound};return null},hitSpacer(v){return cm(i,v)},hitPath(v){let N=M(v,p),I=d.find(F=>Mt(F.rect,N.x,N.y));return I?{kind:I.kind,key:I.key}:null},hitLineEnd(v){return c.find(N=>Mt(N.rect,v.x,v.y))?.end??null},hitRotate(v){let N=M(v,l),I=o.length===0?null:m;if(!I)return null;for(let F of I){let q=Math.hypot(N.x-F.at.x,N.y-F.at.y);if(q<ls/2+2||q>k2)continue;let{u:Y,v:Q}=cs(F.handle);if((N.x-F.at.x)*(Y*2-1)+(N.y-F.at.y)*(Q*2-1)>0)return F.handle}return null},hitRing(v){return cm(a,v)},hitPageLabel(v){return cm(g,v)},pageLabelRect(v){return g.find(N=>N.id===v)?.rect??null},destroy(){r.remove(),o=[],s=[],i=[],a=[]}}}function cm(e,t){for(let n of e)if(Mt(n.rect,t.x,t.y))return n.id;return null}function Ve(e){return Math.round(e)+.5}function ao(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 bs(e,t){let n=t/2;return{x:e.x-n,y:e.y-n,w:e.w+t,h:e.h+t}}function Sv(e,t){let n=[];return de(e.root,r=>{if(t.has(r.id))return!1;r.type!=="image"||ve(r.src)||e.assets[r.src]===void 0&&n.push({id:r.id,src:r.src,label:r.name??r.src})}),n}function fm(e){if(e.length<2)return null;let t=lm("x",e),n=lm("y",e);return n.length===1&&t.length===e.length?_v("x",e,t):t.length===1&&n.length===e.length?_v("y",e,n):n.length>=2&&t.length>=2?M2(e,t,n):null}function lm(e,t){let n=[...t].sort((o,s)=>vs(o.frame,e)-vs(s.frame,e)),r=[];for(let o of n){let s=r[r.length-1];if(s&&vs(o.frame,e)<s.hi-.01){r[r.length-1]={lo:s.lo,hi:Math.max(s.hi,gu(o.frame,e)),from:Math.min(s.from,vs(o.frame,xu(e))),to:Math.max(s.to,gu(o.frame,xu(e))),members:[...s.members,o.id]};continue}r.push({lo:vs(o.frame,e),hi:gu(o.frame,e),from:vs(o.frame,xu(e)),to:gu(o.frame,xu(e)),members:[o.id]})}return r}function _v(e,t,n){return{kind:"run",items:t,series:[yu(e,n)],order:n.flatMap(r=>r.members)}}function M2(e,t,n){if(t.length*n.length!==e.length)return null;let r=[];for(let o of n)for(let s of t){let i=o.members.filter(a=>s.members.includes(a));if(i.length!==1||i[0]===void 0)return null;r.push(i[0])}return{kind:"grid",items:e,series:[yu("x",t),yu("y",n)],order:r}}function yu(e,t){let n=[];for(let r=0;r+1<t.length;r+=1){let o=t[r],s=t[r+1];!o||!s||n.push(s.lo-o.hi)}return{axis:e,tracks:t,gaps:n}}function wn(e,t){return e.series.find(n=>n.axis===t)}function pm(e){let t=e[0];return t===void 0?!1:e.every(n=>Math.abs(n-t)<.01)}function hm(e){let t=[];for(let n of e.series){let r=e.series.find(o=>o.axis!==n.axis);for(let o=0;o<n.gaps.length;o+=1){let s=n.tracks[o],i=n.tracks[o+1],a=n.gaps[o];if(!s||!i||a===void 0)continue;let d=(s.hi+i.lo)/2,c=r?r.tracks.map(l=>(l.lo+l.hi)/2):[(Math.max(s.from,i.from)+Math.min(s.to,i.to))/2];for(let l of c)t.push({id:Ev(n.axis,o),axis:n.axis,index:o,gap:a,at:n.axis==="x"?{x:d,y:l}:{x:l,y:d}})}}return t}function Ev(e,t){return`${e}:${t}`}function bu(e){let[t,n]=e.split(":");if(t!=="x"&&t!=="y"||n===void 0)return null;let r=Number(n);return Number.isInteger(r)&&r>=0?{axis:t,index:r}:null}function mm(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 vu(e,t,n){let r=wn(e,t);return r?wu(r,n):new Map}function wu(e,t){let n=new Map,r=e.tracks[0];if(!r)return n;let o=r.hi;for(let s=1;s<e.tracks.length;s+=1){let i=e.tracks[s];if(!i)continue;let a=o+t;for(let d of i.members)n.set(d,a-i.lo);o=a+(i.hi-i.lo)}return n}function xm(e,t){return yu(t,lm(t,e))}function gm(e){let t=e.tracks,n=t[0],r=t[t.length-1];if(!n||!r||t.length<3)return null;let o=t.reduce((s,i)=>s+(i.hi-i.lo),0);return(r.hi-n.lo-o)/(t.length-1)}function ym(e,t){let n=C2(e),r=0,o=1/0;for(let s=0;s<n.length;s+=1){let i=n[s];if(!i)continue;let a=Math.hypot(i.x-t.x,i.y-t.y);a<o&&(o=a,r=s)}return r}function C2(e){if(e.kind==="grid"){let n=wn(e,"x")?.tracks??[];return(wn(e,"y")?.tracks??[]).flatMap(o=>n.map(s=>({x:(s.lo+s.hi)/2,y:(o.lo+o.hi)/2})))}let t=e.series[0];return t?t.tracks.map(n=>t.axis==="x"?{x:(n.lo+n.hi)/2,y:(n.from+n.to)/2}:{x:(n.from+n.to)/2,y:(n.lo+n.hi)/2}):[]}function bm(e,t,n){let r=[...e],[o]=r.splice(t,1);return o===void 0?[...e]:(r.splice(Math.max(0,Math.min(n,r.length)),0,o),r)}function vm(e,t){let n=new Map(e.items.map(a=>[a.id,a.frame])),r=new Map;if(e.kind==="grid"){let a=wn(e,"x")?.tracks??[],d=wn(e,"y")?.tracks??[];return t.forEach((c,l)=>{let p=a[l%a.length],m=d[Math.floor(l/a.length)];p&&m&&r.set(c,{x:p.lo,y:m.lo})}),r}let o=e.series[0],s=o?.tracks[0];if(!o||!s)return r;let i=s.lo;return t.forEach((a,d)=>{let c=n.get(a);if(!c)return;let l=o.axis==="x"?c.w:c.h;r.set(a,o.axis==="x"?{x:i,y:c.y}:{x:c.x,y:i}),i+=l+(o.gaps[d]??0)}),r}function wm(e,t,n){let r=new Map,o=e.items.find(d=>d.id===t),s=e.items.find(d=>d.id===n);if(!o||!s||t===n)return r;let i=e.kind==="grid"?["x","y"]:[e.series[0]?.axis??"x"],a=(d,c)=>({x:i.includes("x")?c.frame.x:d.frame.x,y:i.includes("y")?c.frame.y:d.frame.y});return r.set(t,a(o,s)),r.set(n,a(s,o)),r}function xu(e){return e==="x"?"y":"x"}function vs(e,t){return t==="x"?e.x:e.y}function gu(e,t){return t==="x"?e.x+e.w:e.y+e.h}var Mv="vd-editor-styles",Cv=`
144
144
  .vd-editor {
145
145
  position: relative;
146
146
  width: 100%;
@@ -255,6 +255,37 @@ ${jn}`);return t===-1?-1:t+1}function Av(e){let t=new Set;for(let n of e.matchAl
255
255
  shape-rendering: crispEdges;
256
256
  }
257
257
 
258
+ /* --- masks ---------------------------------------------------------------- */
259
+
260
+ /* The shape cutting a selected image (ROADMAP.md G2). It draws nothing, so
261
+ this outline is the only sight of it: dashed, as a parked node is, because
262
+ it is not what the handles act on. Solid while cropping, when the picture
263
+ is being framed against it. */
264
+ .vd-editor__mask {
265
+ fill: none;
266
+ stroke: var(--vd-selection, var(--vd-accent, #3b82f6));
267
+ stroke-width: 1.5;
268
+ stroke-dasharray: 4 3;
269
+ }
270
+
271
+ /* Under the dashes, in the halo's colour, so the outline reads on a white page
272
+ in the dark theme and a dark page in the light one. */
273
+ .vd-editor__mask-halo {
274
+ fill: none;
275
+ stroke: var(--vd-selection-halo, #fff);
276
+ stroke-width: 3.5;
277
+ }
278
+
279
+ .vd-editor__mask--crop {
280
+ stroke-width: 2;
281
+ stroke-dasharray: none;
282
+ }
283
+
284
+ /* The rest of the picture while cropping: there to place, not to read. */
285
+ .vd-editor__ghost {
286
+ opacity: 0.35;
287
+ }
288
+
258
289
  /* --- paths: point mode and the pen ---------------------------------------- */
259
290
 
260
291
  .vd-editor__path {
@@ -675,6 +706,12 @@ ${jn}`);return t===-1?-1:t+1}function Av(e){let t=new Set;for(let n of e.matchAl
675
706
  opacity: 0.55;
676
707
  }
677
708
 
709
+ /* A mask (ROADMAP.md G2): listed under the image it cuts, and quieter than a
710
+ layer that draws, since it draws nothing. */
711
+ .vd-layers__row[data-mask='true'] .vd-layers__label {
712
+ opacity: 0.7;
713
+ }
714
+
678
715
  /* A part this instance changes: a small dot, the way Figma marks an override. */
679
716
  .vd-layers__dot {
680
717
  flex: 0 0 6px;
@@ -1475,6 +1512,17 @@ ${jn}`);return t===-1?-1:t+1}function Av(e){let t=new Set;for(let n of e.matchAl
1475
1512
  outline-offset: 1px;
1476
1513
  }
1477
1514
 
1515
+ /* A multi-selection's effects that differ (G9): said, not a button, so it does not take hover. */
1516
+ .vd-inspector__empty.vd-effect__mixed:hover {
1517
+ border-style: dashed;
1518
+ color: var(--vd-muted, rgb(0 0 0 / 0.55));
1519
+ }
1520
+
1521
+ /* An effect's type sits closer to its values than to the effect above it (G9). */
1522
+ .vd-inspector__list > .vd-effect__type:not(:first-child) {
1523
+ margin-top: 6px;
1524
+ }
1525
+
1478
1526
  /* A list inside a section \u2014 shadows, stops \u2014 under a line naming it. */
1479
1527
  .vd-inspector__list {
1480
1528
  display: flex;
@@ -1510,6 +1558,56 @@ ${jn}`);return t===-1?-1:t+1}function Av(e){let t=new Set;for(let n of e.matchAl
1510
1558
  height: 14px;
1511
1559
  }
1512
1560
 
1561
+ /*
1562
+ * The corners: the one Radius field across the row, and when the corners are
1563
+ * independent a field per corner beneath it, on the panel's own two columns so
1564
+ * every edge lines up with the rows above.
1565
+ */
1566
+ .vd-inspector__corners {
1567
+ display: grid;
1568
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
1569
+ gap: 8px;
1570
+ min-width: 0;
1571
+ }
1572
+
1573
+ /* Independent corners: a button inside the field at its end, pressed while open. */
1574
+ .vd-inspector__icon-button.vd-field__toggle {
1575
+ width: 20px;
1576
+ height: 20px;
1577
+ margin-right: -4px;
1578
+ border-radius: 4px;
1579
+ }
1580
+
1581
+ .vd-field__toggle svg {
1582
+ width: 14px;
1583
+ height: 14px;
1584
+ }
1585
+
1586
+ .vd-inspector__icon-button.vd-field__toggle:hover:not(:disabled) {
1587
+ background: var(--vd-rule, rgb(0 0 0 / 0.08));
1588
+ color: var(--vd-ink, #1a1a1f);
1589
+ }
1590
+
1591
+ /* Pressed is chosen, as a switch that is on is: Ink in light, lime in dark. */
1592
+ .vd-inspector__icon-button.vd-field__toggle[aria-pressed='true'],
1593
+ .vd-inspector__icon-button.vd-field__toggle[aria-pressed='true']:hover:not(:disabled) {
1594
+ background: var(--vd-chosen, var(--vd-ink, #1a1a1f));
1595
+ color: var(--vd-on-chosen, #ffffff);
1596
+ }
1597
+
1598
+ /* Each corner's mark is the radius mark turned to its corner; Lucide draws it top-right. */
1599
+ .vd-inspector__corner--tl .vd-field__prefix--icon svg {
1600
+ transform: rotate(-90deg);
1601
+ }
1602
+
1603
+ .vd-inspector__corner--br .vd-field__prefix--icon svg {
1604
+ transform: rotate(90deg);
1605
+ }
1606
+
1607
+ .vd-inspector__corner--bl .vd-field__prefix--icon svg {
1608
+ transform: rotate(180deg);
1609
+ }
1610
+
1513
1611
  .vd-inspector__note {
1514
1612
  margin: 0 0 8px;
1515
1613
  line-height: 1.5;
@@ -1742,10 +1840,14 @@ p.vd-inspector__subhead {
1742
1840
  cursor: default;
1743
1841
  }
1744
1842
 
1745
- .vd-inspector__button:hover {
1843
+ .vd-inspector__button:hover:not(:disabled) {
1746
1844
  background: var(--vd-input-bg, rgb(0 0 0 / 0.06));
1747
1845
  }
1748
1846
 
1847
+ .vd-inspector__button:disabled {
1848
+ opacity: 0.35;
1849
+ }
1850
+
1749
1851
  /*
1750
1852
  * Six alignments spread across the row. With three or more selected, the two
1751
1853
  * distributions follow after a gap, because "even out the gaps" is a
@@ -1766,6 +1868,19 @@ p.vd-inspector__subhead {
1766
1868
  margin-left: 8px;
1767
1869
  }
1768
1870
 
1871
+ /*
1872
+ * Merge's four marks across the whole row, each centred in a quarter, as the
1873
+ * Align row fills its width: no half of the row is left empty. Group and
1874
+ * Delete are the panel's ordinary 8px below.
1875
+ */
1876
+ .vd-inspector__merge {
1877
+ display: grid;
1878
+ grid-template-columns: repeat(4, minmax(0, 1fr));
1879
+ justify-items: center;
1880
+ gap: 8px;
1881
+ margin-bottom: 8px;
1882
+ }
1883
+
1769
1884
  .vd-inspector__icon-button {
1770
1885
  display: inline-flex;
1771
1886
  align-items: center;
@@ -1803,6 +1918,9 @@ p.vd-inspector__subhead {
1803
1918
  display: flex;
1804
1919
  flex-wrap: wrap;
1805
1920
  align-items: center;
1921
+ /* Lines pack to the top: a row grown by its neighbour's error message
1922
+ stretches this field too, and centring its one line would drop the box. */
1923
+ align-content: flex-start;
1806
1924
  min-width: 0;
1807
1925
  margin: 0;
1808
1926
  }
@@ -1966,6 +2084,21 @@ p.vd-inspector__subhead {
1966
2084
  display: inline-flex;
1967
2085
  }
1968
2086
 
2087
+ /* An attached connector end (G5): Detach is the row's one control, always shown. */
2088
+ .vd-field__detach--shown {
2089
+ display: inline-flex;
2090
+ }
2091
+
2092
+ /* What an attached end follows, read rather than typed: the input's type, ellipsed. */
2093
+ .vd-field__value {
2094
+ flex: 1 1 0;
2095
+ min-width: 0;
2096
+ overflow: hidden;
2097
+ font-size: 11.5px;
2098
+ text-overflow: ellipsis;
2099
+ white-space: nowrap;
2100
+ }
2101
+
1969
2102
  .vd-field__detach:hover {
1970
2103
  background: var(--vd-rule, rgb(0 0 0 / 0.06));
1971
2104
  color: var(--vd-ink, #1a1a1f);
@@ -1992,6 +2125,81 @@ p.vd-inspector__subhead {
1992
2125
  line-height: 1.4;
1993
2126
  }
1994
2127
 
2128
+ /*
2129
+ * A picture layer's fit, inside its row after the name: "photo \xB7 Cover". The
2130
+ * dropdown sheds its own box, so the row reads as one entry, as a gradient's
2131
+ * summary does; it keeps its focus ring, being its own Tab stop.
2132
+ */
2133
+ .vd-layer__fit {
2134
+ position: relative;
2135
+ flex: 0 0 auto;
2136
+ display: flex;
2137
+ flex-wrap: nowrap;
2138
+ align-items: center;
2139
+ font-family: var(--vd-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
2140
+ font-size: 11.5px;
2141
+ }
2142
+
2143
+ .vd-layer__fit::before {
2144
+ content: '\xB7';
2145
+ margin-right: 6px;
2146
+ color: var(--vd-muted, rgb(0 0 0 / 0.55));
2147
+ }
2148
+
2149
+ .vd-layer__fit > .vd-select {
2150
+ flex: 0 0 auto;
2151
+ width: auto;
2152
+ height: 20px;
2153
+ gap: 2px;
2154
+ padding: 0 2px 0 4px;
2155
+ border-color: transparent;
2156
+ border-radius: 4px;
2157
+ background: transparent;
2158
+ }
2159
+
2160
+ .vd-layer__fit > .vd-select:hover {
2161
+ background: var(--vd-input-bg, rgb(0 0 0 / 0.05));
2162
+ }
2163
+
2164
+ .vd-layer__fit > .vd-select:focus-visible {
2165
+ border-color: var(--vd-accent, #3b82f6);
2166
+ }
2167
+
2168
+ .vd-layer__fit > .vd-listbox {
2169
+ left: auto;
2170
+ right: 0;
2171
+ min-width: 96px;
2172
+ }
2173
+
2174
+ /*
2175
+ * A picture layer naming a picture the document lacks (\`fill-asset-missing\`):
2176
+ * a warning mark where the swatch was, and the name muted, since the layer is
2177
+ * not drawn. The row's tooltip says why and what to do.
2178
+ */
2179
+ .vd-layer__missing {
2180
+ display: none;
2181
+ flex: 0 0 auto;
2182
+ color: var(--vd-warning, #b7791f);
2183
+ }
2184
+
2185
+ .vd-layer__missing svg {
2186
+ width: 16px;
2187
+ height: 16px;
2188
+ }
2189
+
2190
+ .vd-field--missing .vd-layer__missing {
2191
+ display: inline-flex;
2192
+ }
2193
+
2194
+ .vd-field--missing .vd-field__swatch {
2195
+ display: none;
2196
+ }
2197
+
2198
+ .vd-field--missing .vd-field__input {
2199
+ color: var(--vd-muted, rgb(0 0 0 / 0.55));
2200
+ text-decoration: line-through;
2201
+ }
2202
+
1995
2203
  /* A dropdown: our button and list, not the operating system's menu. */
1996
2204
  .vd-select {
1997
2205
  width: 100%;
@@ -2883,13 +3091,15 @@ button.vd-field__swatch:focus-visible {
2883
3091
  background: rgb(255 255 255 / 0.09);
2884
3092
  color: #fff;
2885
3093
  }
2886
- `;function Xn(e){if(e.getElementById(cx))return;let t=e.createElement("style");t.id=cx,t.textContent=px,e.head.appendChild(t)}var kn=["font","size","weight","italic","underline","strike","fill","letterSpacing","link"];function Jn(e){return typeof e=="string"?e===""?[]:[{text:e}]:e.flatMap(t=>typeof t=="string"?t===""?[]:[{text:t}]:t.text===""?[]:[t])}function Zn(e){return typeof e=="string"?e:e.map(t=>typeof t=="string"?t:t.text).join("")}function Qn(e){return Zn(e).length}function Yn(e){let t={};for(let n of kn){let r=e[n];r!==void 0&&(t[n]=r)}return t}function xx(e,t){return kn.every(n=>e[n]===t[n])}function Qw(e,t){let n={text:e};for(let r of kn){let o=t[r];o!==void 0&&(n[r]=o)}return n}function rs(e){let t=Jn(e),n=[];for(let o of t){let s=n[n.length-1];if(s&&xx(Yn(s),Yn(o))){n[n.length-1]={...s,text:s.text+o.text};continue}n.push(o)}if(n.length===0)return"";let r=n[0];return n.length===1&&mx(r)?r.text:n.map(o=>mx(o)?o.text:o)}function mx(e){return kn.every(t=>e[t]===void 0)}function Af(e,t,n){let[r,o]=ea(t,n,Qn(e)),s=[],i=0;for(let d of Jn(e)){let l=i+d.text.length,f=Math.max(r,i),p=Math.min(o,l);p>f&&s.push({...d,text:d.text.slice(f-i,p-i)}),i=l}return rs(s)}function Ur(e,t,n,r,o){let s=Qn(e),[i,d]=ea(t,n,s),l=o??os(e,i),f=[],p=0,m=!1,y=()=>{m||r===""||(f.push(Qw(r,l)),m=!0)};for(let v of Jn(e)){let C=p+v.text.length,_=Math.min(i,C);_>p&&f.push({...v,text:v.text.slice(0,_-p)}),i>=p&&i<=C&&y();let g=Math.max(d,p);C>g&&f.push({...v,text:v.text.slice(g-p)}),p=C}return y(),rs(f)}function os(e,t){let n=Jn(e);if(n.length===0)return{};let r=0,o=n[0];for(let s of n){let i=r+s.text.length;if(t>r&&t<=i)return Yn(s);if(t<=r)return Yn(o);o=s,r=i}return Yn(o)}function $f(e,t,n,r){let[o,s]=ea(t,n,Qn(e));if(o===s)return rs(e);let i=Object.keys(r),d=[],l=0;for(let f of Jn(e)){let p=l+f.text.length;for(let[m,y,v]of ek(l,p,o,s)){if(y<=m)continue;let C=f.text.slice(m-l,y-l);if(!v){d.push({...f,text:C});continue}let _={...f,text:C};for(let g of i)r[g]===void 0?delete _[g]:_[g]=r[g];d.push(_)}l=p}return rs(d)}function ek(e,t,n,r){return[[e,Math.min(t,n),!1],[Math.max(e,n),Math.min(t,r),!0],[Math.max(e,r),t,!1]]}function Of(e,t,n){let[r,o]=ea(t,n,Qn(e));if(r===o)return os(e,r);let s,i=0;for(let d of Jn(e)){let l=i+d.text.length;if(Math.min(l,o)>Math.max(i,r)){let f=Yn(d);if(!s)s=f;else{let p={};for(let m of kn)s[m]===f[m]&&s[m]!==void 0&&(p[m]=s[m]);s=p}}i=l}return s??{}}function ea(e,t,n){let r=hx(Math.min(e,t),n),o=hx(Math.max(e,t),n);return[r,o]}function hx(e,t){return Math.max(0,Math.min(Math.round(e),t))}function zr(e,t){let n=[],r=0;return e.lines.forEach((o,s)=>{let i=o.spans.map(p=>p.text).join(""),d=i===""?r:tk(t,i,r),l=d+i.length,f=s===e.lines.length-1;n.push({start:d,end:f?t.length:l}),r=l}),n.length===0&&n.push({start:0,end:t.length}),n}function tk(e,t,n){let r=e.indexOf(t,n);return r===-1?n:r}function ta(e,t){for(let n=0;n<e.length;n+=1){let r=e[n];if(t<=r.end)return n}return Math.max(0,e.length-1)}function na(e,t,n,r){let o=zr(e,t),s=ta(o,n),i=e.lines[s],d=o[s];if(!i||!d)return{x:0,y:0,h:0,line:0};let l=Math.max(0,Math.min(n-d.start,yx(i))),f=(nk(i,l)??i.style)?.fill;return{x:Tf(i,l,r),y:i.y,h:i.h,line:s,...f!==void 0?{fill:f}:{}}}function nk(e,t){let n=0;for(let r of e.spans)if(n+=[...r.text].length,t<=n)return r.style;return e.spans[e.spans.length-1]?.style}function ss(e,t,n,r){let o=zr(e,t);if(e.lines.length===0)return 0;let s=e.lines.findIndex(l=>n.y<l.y+l.h);s===-1&&(s=e.lines.length-1);let i=e.lines[s];return o[s].start+gx(i,n.x,r)}function gx(e,t,n){let r=0,o=1/0,s=0,i=(d,l)=>{let f=Math.abs(l-t);f<o&&(o=f,r=d)};i(0,e.spans[0]?.x??0);for(let d of e.spans){let l=[...d.text],f=0;l.forEach((p,m)=>{f=n.advance(l.slice(0,m+1).join(""),d.style),i(s+m+1,d.x+f)}),s+=l.length}return r}function Tf(e,t,n){let r=0,o=e.spans[0]?.x??0;for(let s of e.spans){let i=[...s.text];if(t<=r)return s.x;if(t>=r+i.length){o=s.x+s.w,r+=i.length;continue}let d=i.slice(0,t-r).join("");return s.x+n.advance(d,s.style)}return o}function yx(e){return e.spans.reduce((t,n)=>t+[...n.text].length,0)}function Lf(e,t,n,r,o){let s=Math.min(n,r),i=Math.max(n,r);if(s===i)return[];let d=zr(e,t),l=[];return e.lines.forEach((f,p)=>{let m=d[p];if(!m)return;let y=Math.max(s,m.start),v=Math.min(i,m.end);if(v<=y)return;let C=yx(f),_=Tf(f,Math.min(y-m.start,C),o),g=Tf(f,Math.min(v-m.start,C),o),P=Math.max(g-_,v>m.end-1&&v>y?4:0);P>0&&l.push({x:_,y:f.y,w:P,h:f.h})}),l}function Df(e,t,n,r,o){let s=zr(e,t),d=ta(s,n)+r,l=e.lines[d],f=s[d];if(!l||!f)return r===-1?0:t.length;let p=na(e,t,n,o);return Math.min(f.start+gx(l,p.x,o),f.end)}var rk=/[\p{L}\p{N}_]/u;function Pf(e,t){let n=Math.max(0,Math.min(t,e.length)),r=d=>rk.test(e[d]??""),o=n;if(!r(o)&&o>0&&r(o-1)&&(o-=1),!r(o))return{from:n,to:n};let s=o,i=o;for(;s>0&&r(s-1);)s-=1;for(;i<e.length&&r(i);)i+=1;return{from:s,to:i}}function ra(e,t,n){let r=zr(e,t),o=r[ta(r,n)];return o?{from:o.start,to:o.end}:{from:0,to:t.length}}var kx=700;function Nf(e){let t=0,n=0,r=null,o=!1,s=0,i=!1,d=0,l=0;function f(){return Zn(e.content())}function p($){return Math.max(0,Math.min(Math.round($),f().length))}function m(){return{from:Math.min(t,n),to:Math.max(t,n)}}function y($,D=$){let T=t!==$||n!==D;t=p($),n=p(D),T&&v(),r=null,e.invalidate()}function v(){o=!1,s&&(clearTimeout(s),s=0)}function C(){s&&clearTimeout(s),s=setTimeout(v,kx)}function _($,D){e.write($,o,D),o=!0,C()}function g($,D){let{from:T,to:V}=m(),O=r??void 0;_(Ur(e.content(),T,V,$,O),D),t=n=T+$.length,r=null,e.invalidate()}function P($,D){$!==D&&(_(Ur(e.content(),$,D,""),"Delete text"),t=n=Math.min($,D),e.invalidate())}function A($,D){let{from:T,to:V}=m();if(T!==V){P(T,V);return}let O=f();if($===-1){if(T===0)return;let M=D?bx(O,T):T-1;P(M,T);return}if(T>=O.length)return;let j=D?wx(O,T):T+1;P(T,j)}function R($,D){let T=f();return D?$===-1?bx(T,n):wx(T,n):p(n+$)}return{id:e.id,getSelection:()=>({anchor:t,head:n}),setSelection($,D){y($,D??$)},caret(){return na(e.layout(),f(),n,e.measure())},highlight(){let{from:$,to:D}=m();return Lf(e.layout(),f(),$,D,e.measure())},pointTo($,D){let T=ss(e.layout(),f(),$,e.measure());y(D?t:T,T)},selectWordAt($){let D=ss(e.layout(),f(),$,e.measure()),T=Pf(f(),D);y(T.from,T.to)},selectLineAt($){let D=ss(e.layout(),f(),$,e.measure()),T=ra(e.layout(),f(),D);y(T.from,T.to)},selectAll(){y(0,f().length)},format($){let{from:D,to:T}=m();if(D===T){r={...os(e.content(),D),...$},e.invalidate();return}v(),_($f(e.content(),D,T,$),"Format text"),v(),e.invalidate()},activeMark(){if(r)return r;let{from:$,to:D}=m();return Of(e.content(),$,D)},composing:()=>i,handleKey($){if(i)return!1;let D=$.metaKey||$.ctrlKey,T=$.altKey||$.ctrlKey&&!$.metaKey;switch($.key){case"Escape":return e.close("escape"),!0;case"ArrowLeft":case"ArrowRight":{let V=$.key==="ArrowLeft"?-1:1,{from:O,to:j}=m();if(!$.shiftKey&&O!==j)y(V===-1?O:j);else{let M=D?vx(e,f(),n,V):R(V,T);y($.shiftKey?t:M,M)}return!0}case"ArrowUp":case"ArrowDown":{let V=$.key==="ArrowUp"?-1:1,O=D?V===-1?0:f().length:Df(e.layout(),f(),n,V,e.measure());return y($.shiftKey?t:O,O),!0}case"Home":case"End":{let V=vx(e,f(),n,$.key==="Home"?-1:1);return y($.shiftKey?t:V,V),!0}case"Backspace":return A(-1,T||D),!0;case"Delete":return A(1,T||D),!0;case"Enter":return D?e.close("done"):g(`
2887
- `,"Type text"),!0;case"Tab":return!1;case"a":case"A":return D?(y(0,f().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($){if(!i)switch($.inputType){case"insertText":case"insertReplacementText":case"insertFromPaste":case"insertFromDrop":case"insertFromYank":g(ok($),"Type text");return;case"insertParagraph":case"insertLineBreak":g(`
2888
- `,"Type text");return;case"deleteContentBackward":case"deleteWordBackward":A(-1,$.inputType==="deleteWordBackward");return;case"deleteContentForward":case"deleteWordForward":A(1,$.inputType==="deleteWordForward");return;case"deleteByCut":case"deleteByDrag":{let{from:D,to:T}=m();P(D,T);return}default:return}},handleCompositionStart(){i=!0;let{from:$,to:D}=m();d=$,l=D,v()},handleCompositionUpdate($){_(Ur(e.content(),d,l,$),"Type text"),l=d+$.length,t=n=l,e.invalidate()},handleCompositionEnd($){_(Ur(e.content(),d,l,$),"Type text"),i=!1,l=d+$.length,t=n=l,v(),e.invalidate()},breakBurst:v,destroy(){v()}}}function ok(e){return typeof e.data=="string"?e.data:e.dataTransfer?.getData("text/plain")??""}function vx(e,t,n,r){let o=ra(e.layout(),t,n);return r===-1?o.from:o.to}var oa=/[\p{L}\p{N}_]/u;function bx(e,t){let n=t;for(;n>0&&!oa.test(e[n-1]??"");)n-=1;for(;n>0&&oa.test(e[n-1]??"");)n-=1;return n}function wx(e,t){let n=t;for(;n<e.length&&!oa.test(e[n]??"");)n+=1;for(;n<e.length&&oa.test(e[n]??"");)n+=1;return n}function If(e){return Qn(e)===0}var Rf={v:"select",f:"frame",r:"rect",o:"ellipse",p:"pen",t:"text"};var Ff="host:",_x="#ffffff",Sx={w:1920,h:1080},sk=100,sa=20,ik=15,ak={ne:0,se:90,sw:180,nw:270,n:0,e:90,s:180,w:270},Ex={w:240,h:28},dk={text:"Add text",frame:"Add page",rect:"Draw rectangle",ellipse:"Draw ellipse"};function lk(e,t){let n=t.x-e.x,r=t.y-e.y,o=Math.max(Math.abs(n),Math.abs(r));return{x:e.x+Math.sign(n||1)*o,y:e.y+Math.sign(r||1)*o}}var uk={KeyA:"left",KeyD:"right",KeyW:"top",KeyS:"bottom",KeyH:"hcenter",KeyV:"vcenter"},fk={KeyH:"x",KeyV:"y"},ck={left:"Align left",hcenter:"Align horizontal centres",right:"Align right",top:"Align top",vcenter:"Align vertical centres",bottom:"Align bottom"},Bf=null,pk=220,Cx={lock:!0,hide:!0},aa="application/x-vdesign-component",mk=["x","y","w","h"],hk={front:"Bring to front",forward:"Bring forward",backward:"Send backward",back:"Send to back"},xk=11,_n=2,gk=10;function Vf(e,t){Xn(e.ownerDocument),e.classList.add("vd-editor"),e.hasAttribute("tabindex")||(e.tabIndex=0);let n=t.document,r=[],o=t.tool??"select",s=null,i=null,d=null,l={ids:[],label:null},f=null,p=[],m=!1,y=new Set,v=null,C=!1,_=!1,g=null,P={...Cx,...t.features},A=null,R=new ts,$=0,D=null,T={dx:0,dy:0},V=null,O=new Map,j=e.ownerDocument.createElement("div");j.style.position="absolute",j.style.inset="0",e.appendChild(j),e.style.touchAction="none";let M=gi(j,{sample:wl,document:n,...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:(a,u)=>{u===n&&xe("scene",{scene:a,document:u})},onCameraChange:a=>{z?.setZoom(a.zoom),ie(),xe("camera",a),!($>0)&&(me(),xe("navigate",a))}}),G=dx(e,a=>M.documentToScreen(a)),z=t.chrome===!1?null:$h(e,{onTool:an,onUndo:to,onRedo:ws,onZoomReset:()=>M.fitToContent(),onPlay:t.onPlay,playHint:t.playHint,formatKeys:t.formatKeys}),X=t.chrome===!1?null:zi(e,{onCommand:Ug,...t.formatKeys?{formatKeys:t.formatKeys}:{}}),ae=n,de=n,S=[],w=null,L=[],I=null,K=null,J=new Map,U=null,ue=null,Ee=null,Ae=[],Ce=pt,rt=null,ee=null,se=null,oe=null,B=!1,q=e.ownerDocument.createElement("textarea");q.className="vd-editor__input",q.setAttribute("aria-hidden","true"),q.tabIndex=-1,q.autocapitalize="off",q.autocomplete="off",q.spellcheck=!1,e.appendChild(q);function xe(a,u){let c=O.get(a);if(c)for(let h of c)h(u)}function ge(a,u){let c=O.get(a)??new Set;return c.add(u),O.set(a,c),()=>c.delete(u)}function De(a){$+=1;try{a()}finally{$-=1}}function me(){D!==null&&(e.ownerDocument.defaultView?.cancelAnimationFrame(D),D=null)}function We(a){let u=M.linkAt(a),c=u===void 0?void 0:kt(u);return c?c.kind==="url"?t.onOpenLink?(t.onOpenLink(c.url),!0):!1:F(n.root,c.id)?(ce([c.id]),Oe([c.id]),!0):!1:!1}function Oe(a,u={}){if(w!==null)return V={target:a,options:u},!1;let c=Yx(a);if(!c)return!1;let h=e.getBoundingClientRect(),x=h.width>0&&h.height>0,b=x?{width:h.width,height:h.height-Wx(h)}:{width:c.w+96,height:c.h+96},k=u.fit==="always"?Ui(c,b):ff(c,b,M.getCamera());if(!k)return!1;me(),u.by==="person"&&xe("navigate",k);let E=e.ownerDocument.defaultView,N=E?.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1;if(u.animate===!1||N||!x||!E?.requestAnimationFrame)return De(()=>M.setCamera(k)),!0;let H=M.getCamera(),W=E.performance.now();T={dx:0,dy:0};let Y=be=>{let Z=Math.min(1,Math.max(0,(be-W)/pk)),we=Z===1?k:qh(H,k,Wh(Z),b);De(()=>M.setCamera(It(we,T.dx,T.dy))),D=Z===1?null:E.requestAnimationFrame(Y)};return D=E.requestAnimationFrame(Y),!0}function Wx(a){let u=z?.element.getBoundingClientRect();return!u||u.height===0?0:Math.max(0,a.bottom-u.top)}function Xx(a,u){D!==null&&(T={dx:T.dx+a,dy:T.dy+u}),De(()=>M.setCamera(It(M.getCamera(),a,u)))}function ds(){if(V===null||w!==null)return;let{target:a,options:u}=V;V=null,Oe(a,u)}function Yx(a){if(a==="content"){let c=M.getScene();return Vi([{x:c.x,y:c.y,w:c.width,h:c.height}])}let u=[];for(let c of uf(n,a)){let h=Ve(c);h&&u.push(h)}return Vi(u)}function vt(a){return M.getResolution().nodes.get(a)}function nn(a){let u=vt(a);return u?{x:u.x,y:u.y,w:u.w,h:u.h}:void 0}function Ve(a){return Wn(a,n,M.getResolution())}function Sn(a){let u=vt(a);return u?{x:u.absX,y:u.absY,w:u.w,h:u.h}:void 0}function En(a){return vt(a)?.values.rotation??0}function Yf(){let a=qr();if(a.length===0)return null;for(let u of a){let c=F(n.root,u);if(!c||!rl.includes(c.type))return null}return a}function er(a,u=new Set){let c=M.getResolution(),h=null;return ne(n.root,x=>{if(u.has(x.id)||!Cn(x.id)||x.type==="instance")return!1;if(x.type!=="frame")return;let b=c.nodes.get(x.id);if(!b)return!1;let k={x:b.absX,y:b.absY,w:b.w,h:b.h};if(!Et(k,a.x,a.y))return!1;h=x.id}),h}function rn(a){let u=vt(a);return u?{x:u.absX,y:u.absY}:{x:0,y:0}}function at(){return A?.of!==n&&(A={of:n,hidden:_s(n.root),locked:Ss(n.root)}),A}function Cn(a){let{hidden:u,locked:c}=at();return!u.has(a)&&!c.has(a)}function he(){return r.filter(Cn)}function Kr(a){let u=M.hitTest(a,h=>!at().locked.has(h));if(u===null)return null;let c=g===null||Re(n.root,u).includes(g);return bi(u,n,c?g:null)}function Jx(){return Go(n,he(),M.getResolution())}function Gr(){return he().length<2?null:yf(Jx())}function ls(a){let u=[];for(let c of a)for(let h of qn(c,n)){let x=nn(h);x&&u.push({member:c,node:h,frame:x})}return u}function us(a,u){let c=F(n.root,a);if(!c)return"literal";let h=c[u];return h===void 0?"literal":ai(h).kind}function Zx(a){let u=F(n.root,a),c={};if(!u)return c;let h=[...mk,...Jo(u).map(x=>x.prop)];for(let x of h)c[x]=us(a,x);return c}function Jf(a,u){let c="none";for(let h of a){let x=pa(h,u);if(x==="expression")return"expression";x==="token"&&(c="token")}return c}function pa(a,u){let c="none";for(let h of u){let x=us(a,h);if(x==="complex")return"expression";x==="token"&&(c="token")}return c}let dt=null;function fe(a,u){if(a.length===0)return;let c=Us(n,wi(n,a,nn)),h=_e(n,c);n=h.document,dt?(ga(dt.started,dt.label,c,h.inverse),dt.started=!0):R.push({label:u,ops:c,inverse:h.inverse}),fs(c,u)}function Qx(a){dt={label:a,started:!1}}function eg(){dt=null}function Zf(a,u){a.length!==0&&(n=_e(n,a).document,fs(a,u))}function fs(a,u){s=null,ue=null,Ee=null,M.update(n),z?.setHistory(R.canUndo,R.canRedo),ie(),xe("change",{document:n,ops:a,label:u}),xe("problems",ma())}function ma(){return[...M.getScene().problems,...tl(n)]}function ce(a){let u=a.filter(h=>h!==n.root.id&&F(n.root,h)),c=u.length!==r.length||u.some((h,x)=>r[x]!==h);r=[...u],se&&(u.length!==1||u[0]!==se.id)&&(se=null),c&&(X?.close(),Ee=null,xe("selection",r)),ie()}function tg(a,u){let c=F(n.root,a);if(!c)return[];let h=M.getCamera().zoom;if(Math.min(u.w,u.h)*h<24)return[];let x=xk/h,b=vt(a);return Jo(c).flatMap(k=>{let E=b?.values[k.prop]??0,N=us(a,k.prop)!=="literal";return k.handles(u,E,x).map(H=>({id:H.id,at:H.at,bound:N}))})}function ng(){let a=[];for(let H of he()){let W=Ve(H);W&&a.push(W)}let u=St(a);if(!u)return null;let c=he().length===1?he()[0]:void 0,h=c===void 0?void 0:F(n.root,c),x=c===void 0||!h||le(h),b=new Set,k=qr();for(let H of Pl){let W=yi(H);k.some(Y=>W.some(be=>us(Y,be)!=="literal"))&&b.add(H)}let E=!x&&c!==void 0?En(c):0,N=E!==0&&c!==void 0?Sn(c):void 0;return{frame:N??u,...N?{rotation:E}:{},rotatable:Yf()!==null,handles:ee===null,boundHandles:b,adjusters:ee!==null||x||c===void 0||N?[]:tg(c,u)}}function qr(){return[...new Set(he().flatMap(a=>qn(a,n)))]}function rg(a){if(!a)return null;if(w?.kind==="adjust")return`r ${Q(I??w.from)}`;if(w?.kind==="rotate")return`${Q(K??0)}\xB0`;if(!w&&ue&&he().length===1){let u=vt(he()[0])?.values[ue.prop]??0;return`r ${Q(u)}`}return w?.kind==="move"?`${Q(a.frame.x)}, ${Q(a.frame.y)}`:`${Q(a.frame.w)} \xD7 ${Q(a.frame.h)}`}function og(){let u=w!==null&&w.kind!=="space"&&w.kind!=="reorder"?null:Gr();if(!u)return{spacers:[],rings:[],lead:null};let c=w?.kind==="space"?w.spacer:null;return{spacers:bf(u).map(h=>({id:h.id,axis:h.axis,at:h.at,label:h.id===(c??Ee)?String(Q(h.gap)):null})),rings:wf(u).map(h=>({id:h.id,at:h.at})),lead:w?.kind==="reorder"?Ve(w.id)??null:null}}function ie(){if(!_)return;let a=Cg(),u=a?null:ng(),c=s!==null&&!r.includes(s)&&!w?Ve(s)??null:null,h={...ax,...og(),hover:c,members:he().length>1?he().flatMap(x=>Ve(x)??[]):[],box:u,badge:rg(u),caret:Qf(),textSelection:ec(),draft:w?.kind==="create"?Gn(w.origin,w.current):null,draftEllipse:w?.kind==="create"&&o==="ellipse",marquee:w?.kind==="marquee"?Gn(w.origin,w.current):null,guides:w?Ce.guides:[],measures:w?Ce.measures:[],presence:l.ids.length===0?null:{frames:l.ids.flatMap(x=>Ve(x)??[]),label:l.label},highlight:es(n,p).flatMap(x=>Ve(x.id)??[]),slots:ey(),parked:r.filter(x=>!Cn(x)).flatMap(x=>Ve(x)??[]),lockHint:dg(),path:a,turn:lg(),pageLabels:ig()};G.render(h)}let cs=null;function sg(a){cs?.of!==n&&(cs={of:n,counts:new Map});let u=cs.counts.get(a);return u===void 0&&(u=_i(n,[a]),cs.counts.set(a,u)),u}function ig(){if(i)return[];let a=M.getResolution().nodes;return n.root.children.flatMap(u=>{if(u.type!=="frame")return[];let c=a.get(u.id);if(!c)return[];let h=Ko(c),x=u.name,b=typeof x=="string"&&x!==""?x:u.id,k=r.includes(u.id)?"selected":s===u.id?"hover":"idle";if(u.component!==!0)return[{id:u.id,frame:h,label:b,state:k}];let E=sg(u.id);return[{id:u.id,frame:h,label:`\u25C6 ${b} \xB7 ${E} ${E===1?"use":"uses"}`,state:k,component:!0}]})}function ag(a){let u=G.pageLabelRect(a),c=F(n.root,a);if(!u||!c)return;let h=c.name,x=e.ownerDocument.createElement("input");x.className="vd-editor__rename",x.type="text",x.spellcheck=!1,x.value=typeof h=="string"&&h!==""?h:"",x.placeholder=a,x.setAttribute("aria-label",`Name of ${a}`),x.style.left=`${u.x-4}px`,x.style.top=`${u.y-2}px`,x.style.width=`${Math.max(120,u.w+40)}px`;let b=!1,k=E=>{if(b)return;b=!0;let N=x.value.trim();x.remove(),i=null,E&&N!==(typeof h=="string"?h:"")&&qc(a,"name",N===""?void 0:N,"Rename"),ie(),e.focus({preventScroll:!0})};x.addEventListener("keydown",E=>{E.stopPropagation(),E.key==="Enter"?(E.preventDefault(),k(!0)):E.key==="Escape"&&(E.preventDefault(),k(!1))}),x.addEventListener("pointerdown",E=>E.stopPropagation()),x.addEventListener("blur",()=>k(!0)),i=x,e.appendChild(x),ie(),x.focus(),x.select()}function dg(){if(d===null||w||!at().locked.has(d))return null;let a=Ve(d);return a?{frame:a,label:d}:null}function ps(a){let u=M.itemOf(a);if(u?.kind!=="text")return null;let c=u.lines[0]?.y??u.y,h={lines:u.lines.map(x=>({y:x.y-c,h:x.h,baseline:x.baseline-c,w:x.w,spans:x.spans.map(b=>({text:b.text,style:b.style,x:b.x-u.x,w:b.w})),...x.style?{style:x.style}:{}})),width:Math.max(0,...u.lines.map(x=>x.w)),height:u.height};return{item:u,layout:h,top:c}}function ha(){return o==="text"?"text":o!=="select"?"crosshair":"arrow"}function Qf(){if(!ee)return null;let a=ps(ee.id);if(!a)return null;let u=ee.caret();return{x:a.item.x+u.x,y:a.top+u.y,h:u.h,...u.fill!==void 0?{fill:u.fill}:{}}}function ec(){if(!ee)return[];let a=ps(ee.id);return a?ee.highlight().map(u=>({x:a.item.x+u.x,y:a.top+u.y,w:u.w,h:u.h})):[]}function xa(a){if(!ee)return null;let u=ps(ee.id);if(!u)return null;let c=Wr(ee.id,a);return{x:c.x-u.item.x,y:c.y-u.top}}function Wr(a,u){let c=En(a),h=c===0?void 0:Sn(a);return h?it(u,ft(h),-c):u}function lg(){let a=ee?.id??se?.id;if(a===void 0)return null;let u=En(a),c=u===0?void 0:Sn(a);return c?{angle:u,centre:ft(c)}:null}function ug(a){let u=F(n.root,a);if(!u||u.type!=="text"||typeof u.h!="number")return[];let c=M.itemOf(a);if(c?.kind!=="text")return[];let h=Q(Math.ceil(c.height));return h>u.h?[{op:"set",id:a,prop:"h",value:h}]:[]}function fg(a,u,c,h){let x=dt?dt.started:c,b=dt?.label??h;dt&&(dt.started=!0);let k=[{op:"set",id:a,prop:"content",value:u}],E=_e(n,k);n=E.document,M.update(n);let N=ug(a);if(N.length===0){ga(x,b,k,E.inverse),fs(k,b);return}let H=_e(n,N);n=H.document,M.update(n);let W=[...k,...N];ga(x,b,W,[...H.inverse,...E.inverse]),fs(W,b)}function ga(a,u,c,h){let x={label:u,ops:c,inverse:h};a&&R.amend(x)||R.push(x)}function Xr(a,u){let c=F(n.root,a);if(!c||c.type!=="text"||ee?.id===a)return;Mn("done"),an("select"),ce([a]),ee=Nf({id:a,content:()=>{let x=F(n.root,a);return x?.type==="text"?x.content:""},layout:()=>ps(a)?.layout??{lines:[],width:0,height:0},measure:()=>M.getMeasurer(),write:(x,b,k)=>fg(a,x,b,k),invalidate:()=>{ie(),tc(),xe("selection",r)},close:x=>Mn(x)});let h=u?xa(u):null;h?ee.pointTo(h,!1):ee.selectAll(),e.classList.add("vd-editor--editing"),q.value="",q.focus({preventScroll:!0}),ie(),tc()}function Mn(a){let u=ee;if(!u)return;ee=null,B=!1,u.destroy(),e.classList.remove("vd-editor--editing","vd-editor--typing"),xe("selection",r);let c=F(n.root,u.id);c?.type==="text"&&If(c.content)&&!He(n,u.id)&&(fe([{op:"remove",id:u.id}],"Remove empty text"),ce([])),e.ownerDocument.activeElement===q&&e.focus({preventScroll:!0}),ie()}function tc(){let a=Qf();if(!a)return;let u=M.documentToScreen({x:a.x,y:a.y});q.style.left=`${Math.round(u.x)}px`,q.style.top=`${Math.round(u.y)}px`}let tr=0;function nc(){e.classList.add("vd-editor--typing"),tr&&clearTimeout(tr),tr=setTimeout(()=>{tr=0,e.classList.remove("vd-editor--typing")},520)}function ya(a){let u=Lr(ae,a);return u.length>0&&U?[...u,...Dr(ae,u,J,U)]:u}function An(a){va(ya(a))}function va(a,u=a){let c=x=>{let b=U?.nodes.get(x);return b?{x:0,y:0,w:b.w,h:b.h}:void 0},h=wi(ae,a,c);L=wi(ae,u,c),M.update(h.length>0?_e(ae,h).document:ae),ie()}function rc(){let a=St(he().flatMap(h=>Ve(h)??[]));if(!a)return null;let u=new Map,c=new Map;for(let h of qr()){let x=Sn(h),b=nn(h);!x||!b||(u.set(h,x),c.set(h,{x:x.x-b.x,y:x.y-b.y}))}return u.size===0?null:{bounds:a,frames:u,offsets:c}}function oc(a,u){let c=Vl(a.frames,a.bounds,u),h=[];for(let[x,b]of c){let k=a.frames.get(x),E=a.offsets.get(x);if(!k||!E)continue;let N=En(x),H=N===0?b:hh(k,N,a.bounds,u);h.push({nodeId:x,prop:"x",from:k.x-E.x,to:H.x-E.x},{nodeId:x,prop:"y",from:k.y-E.y,to:H.y-E.y},{nodeId:x,prop:"w",from:k.w,to:H.w},{nodeId:x,prop:"h",from:k.h,to:H.h})}return h}function cg(a,u){let c=Yf();if(!c)return!1;let h=he().length===1&&c.length===1?c[0]:void 0,x=St(he().flatMap(E=>Ve(E)??[])),b=h!==void 0?Sn(h):x;if(!b)return!1;let k=c.flatMap(E=>{let N=Sn(E),H=nn(E);return!N||!H?[]:[{id:E,frame:N,rotation:En(E),offset:{x:N.x-H.x,y:N.y-H.y}}]});return k.length===0?!1:(xt(u),lt({kind:"rotate",pointerId:u,origin:a,centre:ft(b),targets:k}),!0)}function pg(a,u,c){let h=rc();return h?(xt(c),lt({kind:"scale",pointerId:c,origin:a,handle:u,...h}),!0):!1}function mg(a){let u=rc();if(!u)return;let c=Lr(n,oc(u,a));if(c.length===0)return;let h=a.w!==u.bounds.w||a.h!==u.bounds.h;fe([...c,...Dr(n,c,Cr(n),Ie(n))],h?"Resize":"Move")}function hg(a,u,c){let h=Ji(a),x=Gr();if(!h||!x)return!1;let b=Rt(x,h.axis)?.gaps[h.index],k=ls(he());return b===void 0||k.length===0?!1:(xt(c),lt({kind:"space",pointerId:c,origin:u,axis:h.axis,spacer:a,layout:x,gap:b,parts:k}),!0)}function xg(a,u){let c=a.axis==="x"?u.x-a.origin.x:u.y-a.origin.y,h=Math.max(0,a.gap+c);An(ba(a.parts,a.axis,Zi(a.layout,a.axis,h)))}function gg(a,u){let c=Gr(),h=c?Rt(c,a):void 0;if(!c||!h||h.gaps.length===0)return;let x=Lr(n,ba(ls(he()),a,Zi(c,a,Math.max(0,u))));x.length!==0&&fe([...x,...Dr(n,x,Cr(n),Ie(n))],"Spacing")}function yg(a){let u=Gr(),c=u?Rt(u,a)?.gaps:void 0;return!c||c.length===0?null:vf(c)?c[0]??null:"mixed"}function ba(a,u,c){return a.map(h=>{let x=u==="x"?h.frame.x:h.frame.y;return{nodeId:h.node,prop:u,from:x,to:x+(c.get(h.member)??0)}})}function vg(a,u,c){let h=Gr();if(!h||!h.order.includes(a))return!1;let x=ls(he()),b=h.items.find(k=>k.id===a)?.frame;return x.length===0||!b?!1:(xt(c),lt({kind:"reorder",pointerId:c,id:a,layout:h,parts:x,grab:{x:u.x-b.x,y:u.y-b.y},to:h.order.indexOf(a),swap:!1}),!0)}function bg(a,u,c){a.to=Sf(a.layout,u),a.swap=c;let h=wg(a),x=new Map(h);x.set(a.id,{x:u.x-a.grab.x,y:u.y-a.grab.y}),va(ya(sc(a,x)),ya(sc(a,h)))}function wg(a){let u=a.layout.order.indexOf(a.id);if(u===-1||a.to===u)return new Map;if(a.swap){let c=a.layout.order[a.to];return c===void 0?new Map:Mf(a.layout,a.id,c)}return Cf(a.layout,Ef(a.layout.order,u,a.to))}function sc(a,u){let c=new Map(a.layout.items.map(x=>[x.id,x.frame])),h=[];for(let x of a.parts){let b=u.get(x.member),k=c.get(x.member);!b||!k||h.push({nodeId:x.node,prop:"x",from:x.frame.x,to:x.frame.x+(b.x-k.x)},{nodeId:x.node,prop:"y",from:x.frame.y,to:x.frame.y+(b.y-k.y)})}return h}function lt(a,u=[],c=n){de=c,S=u,ae=n,w=a,L=[],J=Cr(n),U=Ie(n),Ce=pt,Ae=kg(a)?of(n,U,_g(a)):[]}function kg(a){return a.kind==="move"||a.kind==="resize"||a.kind==="scale"||a.kind==="create"}function _g(a){return a.kind==="move"||a.kind==="scale"?new Set(he()):a.kind==="resize"?new Set([a.id]):new Set}function Yr(a){return a.metaKey||a.ctrlKey?0:rf/M.getCamera().zoom}function on(a){let u=[...S,...L];w=null,L=[],S=[],I=null,K=null,Ce=pt,n=de,M.update(n),fe(u,a),ie()}function Sg(){let a=L.length>0?_e(ae,L).document:ae,u=new Set(he().flatMap(x=>ic(x,a))),c=[];for(let x of he()){if(He(a,x)||Zt(a,x))continue;let b=F(a.root,x),k=Ue(a.root,x);if(!b||!k)continue;let E=Ve(x);if(!E)continue;let N={x:E.x+E.w/2,y:E.y+E.h/2},H=er(N,u)??n.root.id;if(H===k.id)continue;let W=F(a.root,H);if(!W||!le(W))continue;c.push({op:"move",id:x,parent:H,index:te(W).length});let Y={x:rn(k.id).x-rn(H).x,y:rn(k.id).y-rn(H).y};if(!(Y.x===0&&Y.y===0))for(let be of qn(x,a)){let Z=nn(be);Z&&(c.push({op:"set",id:be,prop:"x",value:Q(Z.x+Y.x)}),c.push({op:"set",id:be,prop:"y",value:Q(Z.y+Y.y)}))}}if(c.length===0)return[];let h=_e(a,c).document;return[...c,...Pr(a,h,u)]}function ic(a,u){let c=F(u.root,a);if(!c)return[];let h=[];return ne(c,x=>{h.push(x.id)}),h}function wa(){if(!w)return;w=null,L=[],I=null,K=null,Ce=pt;let a=S.length>0;n=de,S=[],a&&ce(r.filter(u=>F(n.root,u))),M.update(n),ie()}let Eg=5,ms=8;function ac(a,u=n,c=M.getResolution()){let h=F(u.root,a),x=c.nodes.get(a);if(h?.type!=="vector"||!x)return;let b={x:x.absX,y:x.absY,w:Math.max(0,x.w),h:Math.max(0,x.h)};return{node:h,view:_o(h.view,b.w,b.h),box:b}}function Jr(a,u=n,c=M.getResolution()){let h=ac(a,u,c);if(h)return jt(ko(h.node.d).contours,So(h.view,h.box))}function sn(a,u,c,h=n,x=M.getResolution()){let b=ac(a,h,x);if(!b)return[];let{node:k,view:E,box:N}=b,H=jt(u,pd(E,N)),W=[],Y=(bt,ar,xy)=>{ar!==xy&&W.push({op:"set",id:a,prop:bt,value:ar})};Y("d",zt(H),k.d);let be=[k.x,k.y,k.w,k.h].every(bt=>typeof bt=="number"),Z=Vn(H),we=Vn(u);if(!c||!be||!Z||!we)return W;let Ne=N.x-k.x,Xe=N.y-k.y;return Y("view",Un(Z),k.view),Y("x",Q(we.x-Ne),k.x),Y("y",Q(we.y-Xe),k.y),Y("w",Q(we.w),k.w),Y("h",Q(we.h),k.h),W}function $n(a){return F(n.root,a)?.type!=="vector"||!Cn(a)?!1:(ee&&Mn("done"),oe&&hs(),ce([a]),se={id:a,picked:new Set},o!=="select"&&an("select"),ht(null),ie(),!0)}function Zr(){se&&(se=null,ie())}function Cg(){if(oe){let c=oe.contours[oe.contour],h=c?.anchors??[],x=h[h.length-1],b=h[0],k=oe.hover,E=k!==null&&b!==void 0&&h.length>=2&&!c?.closed&&Qr(b,k)<=ms;return{contours:oe.contours,anchors:h.map((N,H)=>({key:Ge(oe?.contour??0,H),at:N,selected:H===h.length-1})),handles:x?Ql(oe.contours,new Set([Ge(oe.contour,h.length-1)])):[],pending:x&&k&&!oe.dragging&&!c?.closed?{from:x,...x.out?{c1:x.out}:{},to:k}:null,closeAt:E?b:null}}if(!se)return null;let a=Jr(se.id);if(!a)return null;let u=new Set(Jl(a,se.picked));return{contours:a,anchors:a.flatMap((c,h)=>c.anchors.map((x,b)=>({key:Ge(h,b),at:x,selected:u.has(Ge(h,b))}))),handles:Ql(a,u)}}function Qr(a,u){return Math.hypot(a.x-u.x,a.y-u.y)*M.getCamera().zoom}function Mg(a,u,c,h){if(!se)return!1;let x=se.id,b=Jr(x);if(!b)return se=null,!1;a.preventDefault(),xt(a.pointerId);let k=G.hitPath(u);if(k?.kind==="handle"){let N=xh(k.key),H=N?b[N.contour]?.anchors[N.index]:void 0;if(N&&H)return lt({kind:"pathHandle",pointerId:a.pointerId,id:x,start:b,contour:N.contour,index:N.index,side:N.side,smooth:Ci(H),last:b}),!0}if(k?.kind==="anchor")return a.altKey?(se.picked=new Set([k.key]),fe(sn(x,gh(b,k.key),!1),"Convert point"),!0):(a.shiftKey?se.picked.has(k.key)?se.picked.delete(k.key):se.picked.add(k.key):se.picked.has(k.key)||(se.picked=new Set([k.key])),lt({kind:"points",pointerId:a.pointerId,id:x,origin:c,start:b,keys:new Set(se.picked),lead:k.key,moved:!1,last:b}),ie(),!0);let E=xd(b,c);if(E&&E.distance*M.getCamera().zoom<=Eg){if(h>=2){let Y=gd(b,E.contour,E.segment,E.t);return se.picked=new Set([Ge(E.contour,E.segment+1)]),fe(sn(x,Y,!1),"Add point"),!0}let N=b[E.contour],H=N.anchors[E.segment],W=N.anchors[(E.segment+1)%N.anchors.length];return lt({kind:"segment",pointerId:a.pointerId,id:x,origin:c,start:b,contour:E.contour,segment:E.segment,t:E.t,straight:!H?.out&&!W?.in,last:b}),!0}return lt({kind:"pointMarquee",pointerId:a.pointerId,origin:c,current:c,additive:a.shiftKey}),!0}function Ag(a,u,c,h){let x=Yl(a.start,a.lead);if(!x||h===0)return{dx:u,dy:c};let b=x.x+u,k=x.y+c,E=h,N=h,H=u,W=c;return a.start.forEach((Y,be)=>Y.anchors.forEach((Z,we)=>{a.keys.has(Ge(be,we))||(Math.abs(Z.x-b)<E&&(E=Math.abs(Z.x-b),H=Z.x-x.x),Math.abs(Z.y-k)<N&&(N=Math.abs(Z.y-k),W=Z.y-x.y))})),{dx:H,dy:W}}function $g(a,u){if(!w)return!1;let c=(h,x)=>{U&&va(sn(x,h,!1,ae,U))};switch(w.kind){case"points":{let h=u;a.shiftKey&&(h=Yo(w.origin,u));let x={dx:h.x-w.origin.x,dy:h.y-w.origin.y};if(!w.moved&&Math.hypot(x.dx,x.dy)*M.getCamera().zoom<_n)return!0;w.moved=!0;let{dx:b,dy:k}=a.shiftKey?x:Ag(w,x.dx,x.dy,Yr(a));return w.last=$i(w.start,w.keys,b,k),c(w.last,w.id),!0}case"pathHandle":{let h=w.start[w.contour]?.anchors[w.index],x=a.shiftKey&&h?Yo(h,u):u;return w.last=Mi(w.start,w.contour,w.index,w.side,x,{smooth:w.smooth,breakSmooth:a.altKey}),c(w.last,w.id),!0}case"segment":return w.last=vh(w.start,w.contour,w.segment,w.t,u.x-w.origin.x,u.y-w.origin.y,w.straight),c(w.last,w.id),!0;case"pointMarquee":return w.current=u,ie(),!0;default:return!1}}function Og(a){if(!w)return!1;switch(w.kind){case"points":case"pathHandle":case"segment":{let u=w.kind!=="points"||w.moved,c=w.kind==="points"?w.keys.size===1?"Move point":"Move points":w.kind==="pathHandle"?"Adjust curve":"Reshape";return L=u&&U?sn(w.id,w.last,!0,ae,U):[],on(c),!0}case"pointMarquee":{let u=Gn(w.origin,w.current),c=w.additive;if(w=null,Ce=pt,!se)return!0;let h=M.getCamera().zoom;if(u.w*h<_n&&u.h*h<_n){if(M.hitTest(a)===se.id)se.picked=new Set;else{Zr();let k=Kr(a);ce(k===null?[]:[k])}return ie(),!0}let x=Jr(se.id)??[],b=Zl(x).filter(k=>{let E=Yl(x,k);return E!==void 0&&Et(u,E.x,E.y)});return se.picked=new Set(c?[...se.picked,...b]:b),ie(),!0}default:return!1}}function Tg(a){if(!se)return!1;let u=se.id,c=a.metaKey||a.ctrlKey;if(a.key==="Escape"||a.key==="Enter"&&!c)return a.preventDefault(),w?wa():Zr(),!0;let h=Jr(u);if(!h)return!1;let x=new Set(Jl(h,se.picked));if(a.key==="Delete"||a.key==="Backspace"){if(a.preventDefault(),x.size===0)return!0;let N=yh(h,x);return se.picked=new Set,N.length===0?(Zr(),sr(),!0):(fe(sn(u,N,!0),x.size===1?"Delete point":"Delete points"),!0)}let b=a.shiftKey?10:1,E={ArrowLeft:[-b,0],ArrowRight:[b,0],ArrowUp:[0,-b],ArrowDown:[0,b]}[a.key];return E&&!c?(a.preventDefault(),x.size>0&&fe(sn(u,$i(h,x,E[0],E[1]),!0),"Nudge points"),!0):c&&a.key.toLowerCase()==="a"?(a.preventDefault(),se.picked=new Set(Zl(h)),ie(),!0):c&&!a.shiftKey&&a.code==="KeyJ"?(a.preventDefault(),fe(sn(u,bh(h,x),!0),"Close path"),!0):!1}function Lg(a,u){if(a.preventDefault(),xt(a.pointerId),!oe){oe=Dg(u)??{contours:[{closed:!1,anchors:[{x:u.x,y:u.y}]}],contour:0,target:null,hover:null,dragging:null};let k=oe.contours[oe.contour];oe.dragging={pointerId:a.pointerId,index:k.anchors.length-1,origin:u},ie();return}let c=oe.contours[oe.contour],h=c.anchors[0],x=c.anchors[c.anchors.length-1];if(h&&c.anchors.length>=2&&Qr(h,u)<=ms){oe.contours[oe.contour]={...c,closed:!0},oe.dragging={pointerId:a.pointerId,index:0,origin:h},ie();return}let b=a.shiftKey&&x?Yo(x,u):u;oe.contours[oe.contour]={...c,anchors:[...c.anchors,{x:b.x,y:b.y}]},oe.dragging={pointerId:a.pointerId,index:c.anchors.length,origin:b},ie()}function Dg(a){let u=r.length===1?r[0]:null;if(u===null||!Cn(u))return null;let c=Jr(u);if(!c)return null;for(let h=0;h<c.length;h+=1){let x=c[h];if(x.closed||x.anchors.length<1)continue;let b=x.anchors[0],k=x.anchors[x.anchors.length-1],E=Qr(k,a)<=ms,N=!E&&Qr(b,a)<=ms;if(!E&&!N)continue;let H=[...c];return N&&(H[h]=wh(x)),{contours:H,contour:h,target:u,hover:null,dragging:null}}return null}function Pg(a,u){if(!oe)return;let c=oe.dragging;if(!c||c.pointerId!==a.pointerId){let N=oe.contours[oe.contour],H=N?.anchors[N.anchors.length-1];oe.hover=a.shiftKey&&H?Yo(H,u):u,ie();return}if(Qr(c.origin,u)<_n)return;let h=oe.contours[oe.contour],x=h.anchors[c.index];if(!x)return;let b={x:2*x.x-u.x,y:2*x.y-u.y},k=a.altKey?x.in:b,E=[...h.anchors];E[c.index]={x:x.x,y:x.y,...k?{in:k}:{},out:u},oe.contours[oe.contour]={...h,anchors:E},ie()}function Ng(a){!oe?.dragging||oe.dragging.pointerId!==a.pointerId||(Ra(a.pointerId),oe.dragging=null,oe.contours[oe.contour]?.closed?hs():ie())}function hs(){if(!oe)return;let a=oe;oe=null;let u=a.contours[a.contour];if(!u||u.anchors.length<2){ie();return}if(a.target!==null){fe(sn(a.target,a.contours,!0),"Extend path"),an("select"),$n(a.target);return}let c=Vn(a.contours),h=u.anchors[0];if(!c)return;let x=ir(er(h)??g??n.root.id),b=F(n.root,x)??n.root,k=rn(x),E=jt(a.contours,H=>({x:H.x-c.x,y:H.y-c.y})),N=mn(n.root,"path");fe([{op:"insert",parent:x,index:te(b).length,node:Ds({id:N,x:Q(c.x-k.x),y:Q(c.y-k.y),w:Q(c.w),h:Q(c.h),view:Un({x:0,y:0,w:c.w,h:c.h}),d:zt(E),fill:"none",stroke:t.defaultStroke??"#1f2937",strokeWidth:2,cap:"round",join:"round"})}],"Draw path"),an("select"),$n(N)}function ka(a=he()){let u=[],c=[];for(let h of a){let x=F(n.root,h),b=Ue(n.root,h),k=vt(h);if(!x||!b||!k||x.type!=="rect"&&x.type!=="ellipse"||He(n,h))continue;let E=Math.max(0,k.w),N=Math.max(0,k.h),H=x.type==="rect"?yd(E,N,k.values.radius??0):vd(E,N),W=Ds({id:h,...x.name===void 0?{}:{name:x.name},x:x.x,y:x.y,w:x.w,h:x.h,view:Un({x:0,y:0,w:E,h:N}),d:zt(H),...x.fill===void 0?{}:{fill:x.fill},...x.stroke===void 0?{}:{stroke:x.stroke},...x.strokeWidth===void 0?{}:{strokeWidth:x.strokeWidth},...x.opacity===void 0?{}:{opacity:x.opacity},...x.hidden?{hidden:!0}:{},...x.locked?{locked:!0}:{}}),Y=b.children.findIndex(be=>be.id===h);u.push({op:"remove",id:h},{op:"insert",parent:b.id,index:Y,node:W}),c.push(h)}c.length!==0&&(fe(u,c.length===1?"Convert to vector":`Convert ${c.length} to vector`),ce(c),c.length===1&&$n(c[0]))}function dc(){return he().filter(a=>{let u=F(n.root,a)?.type;return u==="rect"||u==="ellipse"}).length}let Ig=450,lc=4,eo={x:0,y:0,at:0,count:0};function Rg(a){let u=Date.now(),h=Math.abs(a.x-eo.x)<=lc&&Math.abs(a.y-eo.y)<=lc&&u-eo.at<=Ig?eo.count+1:1;return eo={x:a.x,y:a.y,at:u,count:h},h}let uc=a=>{if(C=a.pointerType==="touch",C){y.add(a.pointerId),v=y.size===1?{pointerId:a.pointerId,screen:M.pointerPoint(a)}:null;return}if(a.button!==0||m)return;let u=M.pointerPoint(a),c=M.screenToDocument(u);rt=c;let h=Rg(u);if(ee){let N=xa(c),H=M.itemOf(ee.id),W=Wr(ee.id,c);if(N&&H&&Et(H,W.x,W.y)){a.preventDefault(),xt(a.pointerId),B=!0,h>=3?ee.selectLineAt(N):h===2?ee.selectWordAt(N):ee.pointTo(N,a.shiftKey),q.focus({preventScroll:!0}),ie();return}Mn("blur")}if(e.focus({preventScroll:!0}),o==="select"&&(a.metaKey||a.ctrlKey)&&We(c)){a.preventDefault();return}if(o==="pen"){Lg(a,c);return}if(se&&o==="select"&&Mg(a,u,Wr(se.id,c),h))return;if(o!=="select"){a.preventDefault(),xt(a.pointerId),lt({kind:"create",pointerId:a.pointerId,origin:c,current:c}),ie();return}let x=he().length===1?he()[0]:null;if(x!==null){let N=F(n.root,x),H=G.hitAdjuster(u),W=N&&H?Pi(N,H.id):void 0,Y=W?Ve(x):void 0;if(W&&Y&&H){a.preventDefault(),xt(a.pointerId),lt({kind:"adjust",pointerId:a.pointerId,id:x,adjuster:W,handleId:H.id,frame:Y,from:vt(x)?.values[W.prop]??0});return}let be=N&&!le(N)?G.hitHandle(u):null,Z=be?nn(x):void 0,we=Z?Sn(x):void 0;if(be&&Z&&we){a.preventDefault(),xt(a.pointerId),lt({kind:"resize",pointerId:a.pointerId,origin:c,id:x,handle:be.handle,frame:Z,offset:{x:we.x-Z.x,y:we.y-Z.y},rotation:En(x)});return}}let b=he().length>0?G.hitHandle(u):null;if(b&&pg(c,b.handle,a.pointerId)){a.preventDefault();return}let k=G.hitPageLabel(u);if(k!==null){if(a.preventDefault(),g=null,a.shiftKey){ce(r.includes(k)?r.filter(N=>N!==k):[...r,k]);return}if(r.includes(k)||ce([k]),h===2){ag(k);return}fc(c,a.pointerId,a.altKey);return}if(he().length>0&&G.hitRotate(u)!==null&&cg(c,a.pointerId)){a.preventDefault();return}if(he().length>1){let N=G.hitRing(u);if(N!==null&&vg(N,c,a.pointerId)){a.preventDefault();return}let H=G.hitSpacer(u);if(H!==null&&hg(H,c,a.pointerId)){a.preventDefault();return}}let E=Kr(c);if(E===null){a.preventDefault(),xt(a.pointerId),g=null,a.shiftKey||ce([]),lt({kind:"marquee",pointerId:a.pointerId,origin:c,current:c});return}g!==null&&!Re(n.root,E).includes(g)&&(g=null),a.shiftKey?ce(r.includes(E)?r.filter(N=>N!==E):[...r,E]):r.includes(E)||ce([E]),fc(c,a.pointerId,a.altKey)&&a.preventDefault()};function Fg(a){ee&&Mn("blur");let u=Kr(M.screenToDocument(a));u!==null&&g!==null&&!Re(n.root,u).includes(g)&&(g=null),u===null&&(g=null),ce(u===null?[]:[u])}function fc(a,u,c){let h=n,x=[];if(c){let k=Pc({x:0,y:0});k&&(x=k.ops,n=_e(n,x).document,M.update(n),ce(k.ids))}let b=new Map;for(let k of he())for(let E of qn(k,n)){let N=nn(E);N&&b.set(E,N)}return b.size===0?(n=h,M.update(n),!1):(xt(u),lt({kind:"move",pointerId:u,origin:a,frames:b,bounds:St(he().flatMap(k=>Ve(k)??[]))},x,h),!0)}let cc=a=>{let u=M.pointerPoint(a);if(a.pointerType==="touch"){v?.pointerId===a.pointerId&&Math.hypot(v.screen.x-u.x,v.screen.y-u.y)>gk&&(v=null);return}if(rt=M.screenToDocument(u),B&&ee){let h=xa(rt);h&&ee.pointTo(h,!0);return}if(oe&&o==="pen"){Pg(a,rt);return}if(!w){zg(u);return}if(w.pointerId!==a.pointerId)return;let c=rt;if(!$g(a,se?Wr(se.id,c):c))switch(w.kind){case"move":{let h=c.x-w.origin.x,x=c.y-w.origin.y;if(w.bounds){let k={...w.bounds,x:w.bounds.x+h,y:w.bounds.y+x};Ce=sf(k,Ae,Yr(a)),h+=Ce.dx,x+=Ce.dy}let b=[];for(let[k,E]of w.frames)b.push({nodeId:k,prop:"x",from:E.x,to:E.x+h}),b.push({nodeId:k,prop:"y",from:E.y,to:E.y+x});An(b);return}case"resize":{let{id:h,handle:x,frame:b,origin:k,offset:E,rotation:N}=w,H=c.x-k.x,W=c.y-k.y;if(N!==0){Ce=pt;let Z=ch(b,x,H,W,N);An(vi(b,Z).map(we=>({nodeId:h,prop:we,from:b[we],to:Z[we]})));return}let Y=Jt(b,x,H,W);Ce=Hi({...Y,x:Y.x+E.x,y:Y.y+E.y},x,Ae,Yr(a)),H+=Ce.dx,W+=Ce.dy;let be=Jt(b,x,H,W);An(vi(b,be).map(Z=>({nodeId:h,prop:Z,from:b[Z],to:be[Z]})));return}case"scale":{let{handle:h,bounds:x,origin:b,frames:k,offsets:E}=w,N=c.x-b.x,H=c.y-b.y,W=Jt(x,h,N,H);Ce=Hi(W,h,Ae,Yr(a)),N+=Ce.dx,H+=Ce.dy,An(oc({bounds:x,frames:k,offsets:E},Jt(x,h,N,H)));return}case"space":xg(w,c);return;case"reorder":bg(w,c,a.metaKey||a.ctrlKey);return;case"rotate":{let{centre:h,origin:x,targets:b}=w,k=b[0],E=ph(h,x,c,k?.rotation??0,a.shiftKey?ik:void 0);K=Po((k?.rotation??0)+E);let N=[],H=b.length===1;for(let W of mh(b,h,E)){let Y=b.find(be=>be.id===W.id);Y&&(N.push({nodeId:W.id,prop:"rotation",from:Y.rotation,to:W.rotation}),!H&&N.push({nodeId:W.id,prop:"x",from:Y.frame.x-Y.offset.x,to:Q(W.frame.x-Y.offset.x)},{nodeId:W.id,prop:"y",from:Y.frame.y-Y.offset.y,to:Q(W.frame.y-Y.offset.y)}))}An(N);return}case"adjust":{let h=w.adjuster.valueAt(w.frame,w.handleId,c);I=h,An([{nodeId:w.id,prop:w.adjuster.prop,from:w.from,to:h}]);return}case"create":{Ce=af(c,Ae,Yr(a));let h={x:c.x+Ce.dx,y:c.y+Ce.dy};w.current=a.shiftKey&&o!=="text"?lk(w.origin,h):h,ie();return}case"marquee":{w.current=c,ie();return}}},xs=a=>{if(a.pointerType==="touch"){if(y.delete(a.pointerId),v?.pointerId!==a.pointerId)return;v=null,a.type==="pointerup"&&Fg(M.pointerPoint(a));return}if(B){B=!1,Ra(a.pointerId),q.focus({preventScroll:!0});return}if(oe){Ng(a);return}if(!w||w.pointerId!==a.pointerId)return;Ra(a.pointerId);let u=M.screenToDocument(M.pointerPoint(a));if(!Og(se?Wr(se.id,u):u))switch(w.kind){case"create":{let c=Gn(w.origin,w.current),h=o==="text"?"text":o==="frame"?"frame":o==="ellipse"?"ellipse":"rect";w=null,Ce=pt,ie();let x=c.w<_n||c.h<_n;if(x&&h!=="text")return;let b=x?{x:c.x,y:c.y,w:Ex.w,h:Ex.h}:c,k=ir(er({x:b.x,y:b.y})??g??n.root.id),E=F(n.root,k)??n.root,N=rn(k),H={x:Math.round(b.x-N.x),y:Math.round(b.y-N.y),w:Math.round(b.w),h:Math.round(b.h)},W=mn(n.root,h);fe([{op:"insert",parent:k,index:te(E).length,node:h==="text"?ed({...H,id:W,content:""}):h==="frame"?Ls({...H,id:W,background:_x,children:[]}):h==="ellipse"?Ya({...H,id:W,fill:t.defaultFill??"#3b82f6"}):Qa({...H,id:W,fill:t.defaultFill??"#3b82f6"})}],dk[h]),ce([W]),an("select"),h==="text"&&Xr(W);return}case"marquee":{let c=Gn(w.origin,w.current),h=a.shiftKey;if(w=null,Ce=pt,c.w>=_n||c.h>=_n){let x=hy(c);ce(h?[...new Set([...r,...x])]:x)}ie();return}case"move":{let c=Sg();c.length>0&&(L=[...L,...c]),on(S.length>0?"Duplicate":"Move");return}case"resize":on("Resize");return;case"scale":on(r.length===1?"Resize group":`Resize ${r.length} elements`);return;case"space":on("Spacing");return;case"reorder":on(w.swap?"Swap":"Reorder");return;case"adjust":on("Corner radius");return;case"rotate":on("Rotate");return}},pc=a=>{if(ia(a.target))return;if(ee){if(!((a.metaKey||a.ctrlKey)&&a.key.toLowerCase()==="z"))return;a.preventDefault(),ee.breakBurst(),a.shiftKey?ws():to();return}if(oe&&(a.key==="Enter"||a.key==="Escape")){a.preventDefault(),hs();return}if(Tg(a))return;if((a.metaKey||a.ctrlKey)&&a.shiftKey&&a.code==="KeyO"){if(dc()===0)return;a.preventDefault(),ka();return}if(a.key==="Enter"&&!Mx(a)&&r.length===1){let h=r[0];if(F(n.root,h)?.type==="vector"&&$n(h)){a.preventDefault();return}}if(a.key==="Enter"&&!Mx(a)&&r.length===1){let h=r[0];if(F(n.root,h)?.type==="text"){a.preventDefault(),Xr(h);return}}if(a.code==="Space"&&!m){m=!0,Qe(qe("grab"));return}let u=a.metaKey||a.ctrlKey;if(u&&a.key.toLowerCase()==="z"){a.preventDefault(),a.shiftKey?ws():to();return}if(u&&a.shiftKey&&!a.altKey&&a.code==="KeyL"){if(!P.lock||r.length===0)return;a.preventDefault(),or(r,"locked");return}if(u&&a.shiftKey&&!a.altKey&&a.code==="KeyH"){if(!P.hide||r.length===0)return;a.preventDefault(),or(r,"hidden");return}if(u&&a.altKey&&!a.shiftKey&&a.code==="KeyK"){if(!qo(n,r))return;a.preventDefault(),Pa();return}if(u&&a.altKey&&!a.shiftKey&&a.code==="KeyB"){if(!r.some(h=>F(n.root,h)?.type==="instance"))return;a.preventDefault(),Na();return}if(u&&a.key.toLowerCase()==="g"){a.preventDefault(),a.shiftKey?$a():Aa();return}if(u&&a.key.toLowerCase()==="a"){a.preventDefault(),Ta();return}if(u&&!a.altKey&&a.key.toLowerCase()==="d"){a.preventDefault(),Ca();return}if(a.altKey){let h=uk[a.code];if(h&&!u){a.preventDefault(),Oc(h);return}let x=fk[a.code];if(x&&a.ctrlKey){a.preventDefault(),Lc(x);return}}if(a.key==="]"||a.key==="["){if(r.length===0)return;a.preventDefault();let h=a.key==="]";Oa(u?h?"front":"back":h?"forward":"backward");return}if(a.key==="Escape"){w?wa():g!==null?Vc():ce([]);return}if(a.key==="Delete"||a.key==="Backspace"){if(r.length===0)return;a.preventDefault(),sr();return}let c=u||a.altKey?void 0:Rf[a.key.toLowerCase()];c&&an(c)};function mc(){if(!ee)return null;let a=F(n.root,ee.id);if(a?.type!=="text")return null;let{anchor:u,head:c}=ee.getSelection();return u===c?null:Zn(Af(a.content,u,c))}let hc=a=>{if(ia(a.target))return;let u=mc()??nr();u!==null&&(a.preventDefault(),a.clipboardData?.setData("text/plain",u))},xc=a=>{if(ia(a.target))return;let u=mc();if(u!==null&&ee){a.preventDefault(),a.clipboardData?.setData("text/plain",u);let{anchor:h,head:x}=ee.getSelection();ee.breakBurst(),ee.setSelection(h,x),ee.handleInput({inputType:"deleteByCut",data:null});return}let c=nr();c!==null&&(a.preventDefault(),a.clipboardData?.setData("text/plain",c),sr())},gc=a=>{if(ia(a.target))return;a.preventDefault();let u=eu(a.clipboardData);if(u&&!ee){let h=ty();h?Ea(h,u):Ic(u,rt??void 0);return}let c=a.clipboardData?.getData("text/plain")||void 0;if(ee&&c!==void 0){ee.handleInput({inputType:"insertFromPaste",data:c});return}Sa(c)},yc=a=>{a.code==="Space"&&(m=!1,Qe(qe(ha())))},vc=a=>{if(!X)return;a.preventDefault(),w&&wa();let u=M.pointerPoint(a),c=M.screenToDocument(u),h=Kr(c),x=Bg(c),b=M.hitTest(c),k=b!==null&&r.some(N=>Re(n.root,b).includes(N));h===null?k||ce([]):r.includes(h)||ce([h]);let E=(t.menuExtras?.(r)??[]).map(N=>"separator"in N?N:{...N,id:`${Ff}${N.id}`});X.open(u,cf(Hg(x),E))};function Bg(a){let{locked:u}=at(),c=[];for(let h of[...M.getScene().items].reverse()){if(!u.has(h.id)||!M.hitTest(a,b=>b===h.id))continue;let x=no(n.root,h.id,"locked");x!==void 0&&!c.includes(x)&&c.push(x)}return c}function Hg(a=[]){let u=r.length===1?F(n.root,r[0]):void 0,c=[];if(u){let h=u;for(let x of Ct(u)){let b=h[x];b===void 0||!ye(b)||ai(b).kind!=="literal"&&c.push({prop:x,source:`=${b.expr}`})}}return{count:r.length,hasGroup:r.some(h=>{let x=F(n.root,h);return x!==void 0&&$e(x)}),canPaste:Bf!==null,isText:r.length===1&&F(n.root,r[0])?.type==="text",isVector:he().length===1&&F(n.root,he()[0])?.type==="vector",convertible:dc(),bound:c,lock:P.lock?r.every(h=>at().locked.has(h))?"unlock":"lock":null,hide:P.hide?r.every(h=>at().hidden.has(h))?"show":"hide":null,locksHere:a,anyLocked:La("locked").length>0,hiddenCount:La("hidden").length,components:Vg()}}function Vg(){let a=r.length===1?r[0]:void 0,u=a===void 0?void 0:jc(a),c=u===void 0?void 0:F(n.root,u),h=0;if(a!==void 0&&u!==void 0&&c?.type==="instance"){let x=c.overrides??{};h=a===u?Object.keys(x).length:x[a.slice(u.length+1)]===void 0?0:1}return{create:qo(n,r),instance:c?.type==="instance"&&a===u,part:u!==void 0&&a!==u,component:a!==void 0&&Zt(n,a),overrides:h,uses:_i(n,r.filter(x=>Zt(n,x)))}}function Ug(a){if(e.focus({preventScroll:!0}),a.startsWith(Ff)){t.onMenuCommand?.(a.slice(Ff.length),[...r]);return}if(a.startsWith("unlock:")){rr([a.slice(7)],"locked",!1);return}if(a.startsWith("detach:")){let u=a.slice(7),c=r[0];c!==void 0&&Wc(c,u);return}switch(a){case"copy":nr();return;case"cut":Nc();return;case"editText":{let u=r[0];u!==void 0&&Xr(u);return}case"editPoints":{let u=r[0];u!==void 0&&$n(u);return}case"toVector":return ka();case"duplicate":return Ca();case"paste":return Sa();case"group":return Aa();case"ungroup":return $a();case"createComponent":Pa();return;case"detachInstance":return Na();case"goToComponent":{let u=r[0];u!==void 0&&Gc(u);return}case"resetOverrides":{let u=r[0];u!==void 0&&Kc(u);return}case"placeInstance":{let u=r[0];u!==void 0&&Ia(u);return}case"front":case"forward":case"backward":case"back":return Oa(a);case"delete":return sr();case"selectAll":return Ta();case"toggleLock":return or(r,"locked");case"toggleHidden":return or(r,"hidden");case"unlockAll":return bs("locked");case"showAll":return bs("hidden");case"fit":return M.fitToContent();case"zoom100":return M.setCamera({...M.getCamera(),zoom:1})}}let bc=a=>{if(C||o!=="select"||m||se)return;let u=M.screenToDocument(M.pointerPoint(a)),c=M.hitTest(u,E=>!at().locked.has(E));if(c===null)return;let h=vs().find(E=>E.id===c);if(h){a.preventDefault(),ny(h);return}let x=F(n.root,c);if(x?.type==="text"){a.preventDefault(),Xr(c,u);return}if(x?.type==="vector"){a.preventDefault(),$n(c);return}let b=Re(n.root,c),k=g===null?1:b.indexOf(g)+1;for(let E=Math.max(k,1);E<b.length;E+=1){let N=b[E];if(N===void 0)break;let H=F(n.root,N);if(!(!H||!Da(H))){a.preventDefault(),Hc(N),ce([b[E+1]??N]);return}}},wc=a=>Array.from(a.dataTransfer?.types??[]).includes("Files"),kc=()=>t.importImage!==void 0||t.importAudio!==void 0,_c=a=>Array.from(a.dataTransfer?.types??[]).includes(aa),Sc=a=>{if(_c(a)){a.preventDefault(),a.dataTransfer&&(a.dataTransfer.dropEffect="copy");return}if(!wc(a)||!kc())return;a.preventDefault(),a.dataTransfer&&(a.dataTransfer.dropEffect="copy");let u=M.screenToDocument(M.pointerPoint(a)),c=Fc(u)?.id??null;c!==f&&(f=c,ie())},Ec=a=>{a.relatedTarget instanceof Node&&e.contains(a.relatedTarget)||f!==null&&(f=null,ie())},Cc=a=>{if(_c(a)){a.preventDefault();let k=a.dataTransfer?.getData(aa)??"";e.focus({preventScroll:!0}),Ia(k,M.screenToDocument(M.pointerPoint(a)));return}if(!wc(a)||!kc())return;a.preventDefault();let u=M.screenToDocument(M.pointerPoint(a)),c=Fc(u);f=null,ie();let h=Array.from(a.dataTransfer?.files??[]),x=h.find(Eh);if(x&&t.importAudio){let k=er(u),E=k===null?void 0:gt(n).get(k),N=Ti(n),H=E!==void 0&&N.includes(E)?E:Li(n,r,null)??E??null;H!==null&&Rc(x,H);return}if(!t.importImage)return;let b=h.find(k=>k.type.startsWith("image/"));b&&(c?Ea(c,b):Ic(b,u))},Mc=()=>{rt=null,d=null,!w&&(s===null&&ue===null&&Ee===null||(s=null,ue=null,Ee=null,ie()))};function Ac(){let a=he().length===1?he()[0]:void 0,u=a===void 0?void 0:F(n.root,a);return a!==void 0&&u&&!le(u)?En(a):0}function zg(a){if(m){Qe(qe("grab"));return}if(se){ht(null),Qe(qe("arrow"));return}if(o!=="select"){ht(null),_a(null),gs(null),Qe(qe(o==="text"?"text":"crosshair"));return}let u=he().length===1?he()[0]:null;if(u!==null){let b=G.hitAdjuster(a);if(b){let k=F(n.root,u),E=k?Pi(k,b.id):void 0;ht(null),_a(E?{id:b.id,prop:E.prop}:null),Qe(qe("radius",{badge:E?pa(u,[E.prop]):"none"}));return}_a(null)}if(he().length>0){let b=G.hitHandle(a);if(b){ht(null);let N=yi(b.handle);Qe(qe("resize",{angle:Nl(b.handle)+Ac(),badge:Jf(qr(),N)}));return}let k=G.hitPageLabel(a);if(k!==null){ht(k),Qe(qe("arrow"));return}let E=G.hitRotate(a);if(E!==null){ht(null),Qe(qe("rotate",{angle:ak[E]+Ac()}));return}}let c=G.hitPageLabel(a);if(c!==null){d=null,ht(c),Qe(qe("arrow"));return}if(he().length>1){if(G.hitRing(a)!==null){ht(null),gs(null),Qe(qe("grab"));return}let k=G.hitSpacer(a),E=k===null?null:Ji(k);if(k!==null&&E){ht(null),gs(k),Qe(qe("resize",{angle:E.axis==="x"?0:90,badge:Jf(qr(),[E.axis])}));return}gs(null)}let h=M.screenToDocument(a),x=Kr(h);d=jg(h,x),ht(x),ie(),Qe(qe("arrow",{badge:x===null?"none":pa(x,["x","y"])}))}function jg(a,u){let c=M.hitTest(a);if(c===null||!at().locked.has(c))return null;let h=no(n.root,c,"locked");return h===void 0?null:u===null||Re(n.root,h).includes(u)?h:null}function ht(a){s!==a&&(s=a,ie())}function _a(a){ue?.id!==a?.id&&(ue=a,ie())}function gs(a){Ee!==a&&(Ee=a,ie())}function Qe(a){e.style.cursor!==a&&(e.style.cursor=a)}function an(a){o!==a&&(o=a,oe&&a!=="pen"&&hs(),a!=="select"&&Zr(),z?.setTool(o),a!=="select"&&ht(null),Qe(qe(ha())),xe("tool",o))}function Kg(a){if(a.length===0)return null;if(a.length>1)return St(a.map(h=>h.frame))??null;let u=a[0],c=Ue(n.root,u.id);return c?Wn(c.id,n,M.getResolution())??null:null}function $c(a,u,c){let h=Lr(n,ba(ls(r),a,u));h.length!==0&&fe([...h,...Dr(n,h,Cr(n),Ie(n))],c)}function Oc(a){let u=Go(n,r,M.getResolution()),c=Kg(u);c&&$c(Di(a),tu(u,c,a),ck[a])}function Tc(a){let u=Go(n,r,M.getResolution());if(u.length<3)return null;let c=kf(u,a),h=_f(c);return h===null?null:{gap:h,series:c}}function Lc(a){let u=Tc(a);u&&$c(a,Qi(u.series,u.gap),a==="x"?"Distribute horizontally":"Distribute vertically")}function Gg(){let a=es(n,r);if(a.length===0)return null;let u=M.getResolution(),c={};for(let h of a)ne(h,x=>{let b=u.nodes.get(x.id)?.values;b&&(c[x.id]=b)});return{nodes:a,tokens:n.tokens,fonts:n.fonts,resolved:c}}function qg(a){return new Map(Object.entries(a.resolved))}function Wg(a){let u=Object.entries(a.tokens).filter(([c])=>n.tokens[c]===void 0).map(([c,h])=>({op:"setToken",name:c,value:h}));for(let[c,h]of Object.entries(a.fonts))n.fonts[c]===void 0&&u.push({op:"setFont",name:c,family:h});return u}function Dc(a,u,c){let h=Wg(a),x=h.length>0?_e(n,h).document:n,b=dh(x,a.components??[],Y=>zc(`This file already has a component called ${Y}, and it is not the same as the one you copied. Use the one in this file? Cancel brings yours in beside it as a separate component.`));b.ops.length>0&&(h.push(...b.ops),x=_e(x,b.ops).document);let k=nf(a,x),E=k.remap,N=k.nodes.map(Y=>Ei(Y,b));if(N.length===0)return null;N.forEach((Y,be)=>{let Z=a.nodes[be];if(!Z)return;let we=u(Z,be,x),Ne={op:"insert",parent:we.parent,index:we.index,node:Y};h.push(Ne),x=_e(x,[Ne]).document});let H=Ul(x,E,qg(a),c);H.length>0&&(x=_e(x,H).document);let W=Xg(N);return{ops:[...h,...H,...Pr(n,x)],ids:[...E.values()].filter(Y=>W.has(Y))}}function Xg(a){let u=new Set;for(let c of a)u.add(c.id);return u}function Pc(a){let u=Gg();return u?Dc(u,(c,h,x)=>{let b=Ue(x.root,c.id)??x.root,k=te(b).findIndex(E=>E.id===c.id);return{parent:b.id,index:k===-1?te(b).length:k+1}},a):null}function nr(){let a=ef(n,r,M.getResolution());return a!==null&&(Bf=a),a}function Nc(){if(r.some(u=>He(n,u)))return nr();let a=nr();return a!==null&&sr(),a}function Yg(a){let u=[];for(let c of a.nodes){let h=a.resolved[c.id];if(!h)continue;let{x,y:b,w:k,h:E}=h;x===void 0||b===void 0||k===void 0||E===void 0||u.push({x,y:b,w:k,h:E})}return St(u)??null}function Sa(a,u){let c=tf(a??Bf??"");if(!c)return;let h=u??rt,x=Yg(c),b=Jg(c),k=N=>Dc(c,(H,W,Y)=>({parent:N,index:te(F(Y.root,N)??Y.root).length}),Zg(c,N,x,h)),E=k(b);E&&b!==ys()&&Qg(E.ops)&&(E=k(ys())),E&&(fe(E.ops,E.ids.length===1?"Paste":`Paste ${E.ids.length} elements`),ce(E.ids))}function ys(){return ir(g??n.root.id)}function Jg(a){if(a.nodes.some(x=>x.type==="frame"&&x.component===!0))return n.root.id;if(g!==null||r.length===0)return ys();let u=new Set(a.nodes.map(x=>x.id)),c=r.length===1?F(n.root,r[0]):void 0;if(c?.type==="frame"&&!u.has(c.id))return ir(c.id);let h=new Set(r.map(x=>Ue(n.root,x)?.id??n.root.id));return h.size!==1?ys():ir([...h][0])}function Zg(a,u,c,h){let x={x:sa,y:sa};if(!c)return x;let b={x:c.x+c.w/2,y:c.y+c.h/2},k=u===n.root.id?void 0:vt(u);return k?h!==null&&h.x>=k.absX&&h.x<=k.absX+k.w&&h.y>=k.absY&&h.y<=k.absY+k.h?{x:h.x-k.absX-b.x,y:h.y-k.absY-b.y}:a.nodes.some(W=>Ue(n.root,W.id)?.id===u)?x:c.x>=0&&c.y>=0&&c.x+c.w<=k.w&&c.y+c.h<=k.h?{x:0,y:0}:{x:k.w/2-b.x,y:k.h/2-b.y}:h?{x:h.x-b.x,y:h.y-b.y}:x}function Qg(a){let u=c=>oo(c).filter(h=>h.code==="component-cycle").length;return u(_e(n,a).document.root)>u(n.root)}async function Ic(a,u){let c=t.importImage;if(!c)return;let h=await Oi(a,t.maxImageEdge??2560);if(!h)return;let x=await c(new File([h.bytes],a.name,{type:h.type}));if(!x)return;let b=ir((u?er(u):void 0)??g??n.root.id),k=F(n.root,b)??n.root,E=rn(b),N=M.getResolution().nodes.get(b),{w:H,h:W}=kh(h.width,h.height,N?.w&&N.w>0?N.w:h.width,N?.h&&N.h>0?N.h:h.height),Y=u??rt,be=Math.round((Y?Y.x-H/2:E.x)-E.x),Z=Math.round((Y?Y.y-W/2:E.y)-E.y),we=ry(n,a.name),Ne=mn(n.root,"image");fe([{op:"setAsset",name:we,value:x},{op:"insert",parent:b,index:te(k).length,node:Za({id:Ne,x:be,y:Z,w:H,h:W,src:we,fit:"cover"})}],"Place image"),ce([Ne])}async function Rc(a,u){let c=t.importAudio;if(!c)return!1;let h=await c(a);return h?(fe(Mh(n,u,Ch(n,u,a.name),h),"Add music"),!0):!1}function vs(){return t.importImage?lx(n,at().hidden):[]}function ey(){return vs().flatMap(a=>{let u=Ve(a.id);return u?[{frame:u,label:a.label,target:a.id===f}]:[]})}function Fc(a){return vs().filter(c=>{let h=Ve(c.id);return h!==void 0&&Et(h,a.x,a.y)}).at(-1)??null}function ty(){return r.length!==1?null:vs().find(a=>a.id===r[0])??null}async function Ea(a,u){let c=t.importImage;if(!c)return;let h=await Oi(u,t.maxImageEdge??2560);if(!h)return;let x=await c(new File([h.bytes],u.name,{type:h.type}));!x||n.assets[a.src]!==void 0||(fe([{op:"setAsset",name:a.src,value:x}],"Add image"),ce([a.id]))}function ny(a){let u=e.ownerDocument.createElement("input");u.type="file",u.accept="image/*",u.addEventListener("change",()=>{let c=u.files?.[0];c&&Ea(a,c)}),u.click()}function ry(a,u){let c=u.replace(/\.[^.]+$/,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"image";if(a.assets[c]===void 0)return c;for(let h=2;;h+=1){let x=`${c}-${h}`;if(a.assets[x]===void 0)return x}}function Ca(){if(r.some(u=>He(n,u)))return;let a=Pc(oy());a&&(fe(a.ops,a.ids.length===1?"Duplicate":`Duplicate ${a.ids.length} elements`),ce(a.ids))}function oy(){let a={x:sa,y:sa},u=r.length===1?r[0]:void 0;if(u===void 0||!Zt(n,u))return a;let c=M.getResolution(),h=c.nodes.get(u);if(!h)return a;let x=Wo(n,c);return{x:x.x-h.absX,y:x.y-h.absY}}function Ma(a,u){if(a.length===0)return;let c=_e(n,a).document;fe([...a,...Pr(n,c)],u)}function Aa(){if(r.some(u=>He(n,u)))return;let a=Fl(n,r);a&&(Ma(a.ops,"Group"),ce([a.groupId]))}function $a(){let a=r.filter(x=>{let b=F(n.root,x);return b!==void 0&&$e(b)&&!He(n,x)});if(a.length===0)return;let u=n,c=[],h=[];for(let x of a){let b=F(u.root,x);b&&h.push(...te(b).map(E=>E.id));let k=Bl(u,x);k.length!==0&&(c.push(...k),u=_e(u,k).document)}g!==null&&a.includes(g)&&(g=null),Ma(c,a.length===1?"Ungroup":`Ungroup ${a.length} groups`),ce(h)}function Oa(a){r.some(u=>He(n,u))||Ma(Hl(n,r,a),hk[a])}function sy(a,u,c){let h=F(n.root,u);if(!h||!le(h))return;let x=new Set(Re(n.root,u));if(h.type==="instance"||He(n,u)||u!==n.root.id&&a.some(Z=>Zt(n,Z)))return;let b=a.filter(Z=>Z!==n.root.id&&F(n.root,Z)&&!x.has(Z)&&!He(n,Z));if(b.length===0)return;let k=new Set(b),E=te(h).filter(Z=>!k.has(Z.id))[c]?.id,N=[],H=n;for(let Z of b){let we=te(F(H.root,u)??H.root).filter(bt=>bt.id!==Z),Ne=E===void 0?-1:we.findIndex(bt=>bt.id===E),Xe={op:"move",id:Z,parent:u,index:Ne===-1?we.length:Ne};N.push(Xe),H=_e(H,[Xe]).document}if(b.every(Z=>ay(n,H,Z)))return;let W=new Set(b.filter(Z=>Ue(n.root,Z)?.id!==u).flatMap(Z=>ic(Z,H))),Y=[];for(let Z of b){let we=Bc(n,Z),Ne=Bc(H,Z),Xe={x:we.x-Ne.x,y:we.y-Ne.y};if(!(Xe.x===0&&Xe.y===0))for(let bt of qn(Z,H)){let ar=nn(bt);ar&&(Y.push({op:"set",id:bt,prop:"x",value:Q(ar.x+Xe.x)}),Y.push({op:"set",id:bt,prop:"y",value:Q(ar.y+Xe.y)}))}}let be=_e(H,Y).document;fe([...N,...Y,...Pr(n,be,W)],b.length===1?`Move ${b[0]}`:`Move ${b.length} layers`)}function iy(a={}){let u=n.root.children,c=u.filter(Ne=>Ne.type==="frame"&&Ne.component!==!0),h=c.find(Ne=>Ne.id===a.after),x=M.getResolution(),b=h?x.nodes.get(h.id):void 0,k=b&&b.w>0?b.w:Sx.w,E=b&&b.h>0?b.h:Sx.h,N=null,H=-1/0;for(let Ne of c.length>0?c:u){let Xe=x.nodes.get(Ne.id);!Xe||Xe.absX+Xe.w<=H||(H=Xe.absX+Xe.w,N={x:H+sk,y:Xe.absY})}let W=N??{x:0,y:0},Y=h??c[c.length-1],be=Y?u.indexOf(Y)+1:u.length,Z=mn(n.root,"frame"),we=h?.type==="frame"?h.background:void 0;return fe([{op:"insert",parent:n.root.id,index:be,node:Ls({id:Z,x:Q(W.x),y:Q(W.y),w:Q(k),h:Q(E),background:we??_x,children:[]})}],"Add frame"),ce([Z]),Z}function ay(a,u,c){let h=Ue(a.root,c),x=Ue(u.root,c);return h?.id===x?.id&&h?.children.findIndex(b=>b.id===c)===x?.children.findIndex(b=>b.id===c)}function Bc(a,u){let c=Re(a.root,u).slice(0,-1).reverse(),h=Ie(a);for(let x of c){let b=F(a.root,x);if(!b||$e(b))continue;let k=h.nodes.get(x);return k?{x:k.absX,y:k.absY}:{x:0,y:0}}return{x:0,y:0}}function Hc(a){let u=F(n.root,a);!u||!Da(u)||(g=a,ie())}function Vc(){if(g===null)return;let a=g;g=Re(n.root,a).slice(0,-1).reverse().find(c=>{let h=F(n.root,c);return h!==void 0&&Da(h)})??null,ce([a])}function Ta(){let a=F(n.root,g??n.root.id)??n.root;ce(te(a).map(u=>u.id).filter(Cn))}let dy={locked:["Lock","Unlock"],hidden:["Hide","Show"]};function Uc(a){return a==="locked"?at().locked:at().hidden}function rr(a,u,c){let h=a.filter(k=>k!==n.root.id&&F(n.root,k)),x=c?h.filter(k=>!Uc(u).has(k)):[...new Set(h.flatMap(k=>{let E=no(n.root,k,u);return E===void 0?[]:[E]}))];if(x.length===0)return;let b=dy[u][c?0:1];fe(x.map(k=>({op:"set",id:k,prop:u,value:c?!0:void 0})),x.length===1?`${b} ${x[0]}`:`${b} ${x.length} layers`)}function or(a,u){a.length!==0&&rr(a,u,!a.every(c=>Uc(u).has(c)))}function La(a){let u=[];return ne(n.root,c=>{c[a]===!0&&u.push(c.id)}),u}function bs(a){let u=La(a);if(u.length===0)return;let c=a==="locked"?"Unlock all":"Show all";fe(u.map(h=>({op:"set",id:h,prop:a,value:void 0})),c)}function ly(a){P={...Cx,...a},X?.close()}function sr(){let a=r.filter(E=>E!==n.root.id),u=a.filter(E=>He(n,E)),c=a.filter(E=>!He(n,E)),h=c.filter(E=>Zt(n,E)),x=_i(n,h);if(x>0){let N=`${h.length===1?h[0]:`${h.length} components`} is used in ${x} ${x===1?"place":"places"}. Delete it and detach ${x===1?"that instance":"those instances"}? Each keeps what it shows.`;if(!zc(N))return}let b=[...u.map(E=>({op:"set",id:E,prop:"hidden",value:!0})),...h.length>0?Wl(n,h,M.getResolution()):[],...c.filter(E=>!h.includes(E)).map(E=>({op:"remove",id:E}))];if(b.length===0)return;let k=a.length;ce([]),fe(b,k===1?"Delete element":`Delete ${k} elements`)}function zc(a){if(t.confirm)return t.confirm(a);let u=e.ownerDocument.defaultView;return typeof u?.confirm=="function"?u.confirm(a):!0}function Da(a){return $e(a)||a.type==="instance"}function ir(a){let u=Re(n.root,a),c=u.findIndex(h=>F(n.root,h)?.type==="instance");return c<=0?a:u[c-1]}function Pa(a=r){let u=zl(n,a,M.getResolution());return u?(g=null,fe(u.ops,"Create component"),ce([u.instanceId]),u.flattened.length>0&&xe("notice",{message:`Made ${u.componentId}. ${u.flattened.length===1?"One position":`${u.flattened.length} positions`} measured from the page became numbers so the page looks the same: ${u.flattened.join(", ")}.`}),u.instanceId):null}function Na(a=r){let u=a.filter(b=>F(n.root,b)?.type==="instance"),c=[],h=n,x=M.getResolution();for(let b of u){let k=ki(h,b,x);k&&(c.push(...k),h=_e(h,k).document)}c.length!==0&&(g!==null&&u.includes(g)&&(g=null),fe(c,u.length===1?"Detach instance":`Detach ${u.length} instances`),ce(u.filter(b=>F(n.root,b)!==void 0)))}function jc(a){return F(n.root,a)?.type==="instance"&&!He(n,a)?a:At(n.root,a)?.instance.id}function Kc(a,u){let c=jc(a);if(c===void 0)return;let h=u??(c===a?void 0:a);fe(jl(n,c,h),h===void 0?"Reset overrides":"Reset part")}function uy(a,u){fe(Kl(n,a,u),`Swap to ${u}`)}function Gc(a){let u=F(n.root,a),c=u?.type==="instance"?u:ja(n.root,a);if(c?.type!=="instance")return;let h=F(n.root,c.component);h&&(g=null,ce([h.id]),Oe([h.id]))}function Ia(a,u){let c=F(n.root,a);if(c?.type!=="frame"||c.component!==!0)return null;let h=u??fy(),x=er(h)??n.root.id,b=rn(x),k=vt(a),E=ql(n,a,x,{x:Math.round(h.x-b.x-(k?.w??0)/2),y:Math.round(h.y-b.y-(k?.h??0)/2)});return E?(fe(E.ops,`Place ${a}`),ce([E.id]),E.id):null}function fy(){let a=e.getBoundingClientRect();return M.screenToDocument({x:a.width/2,y:a.height/2})}function to(){dt=null;let a=R.undo();a&&Zf(a.ops,`Undo ${a.entry.label}`)}function ws(){dt=null;let a=R.redo();a&&Zf(a.ops,`Redo ${a.entry.label}`)}function cy(a){if(!R.isTail(a))return!1;for(let u=a.length;u>0;u-=1)to();return!0}function qc(a,u,c,h){let x=F(n.root,a);if(!x)return;let b=x[u];yk(b,c)||fe([{op:"set",id:a,prop:u,value:c}],h??`Set ${u}`)}function py(a,u){let c=n.brand?.theme==="dark"?n.themes?.dark:void 0;if(c!==void 0&&a in c){if(c[a]===u)return;fe([{op:"setTheme",value:{...n.themes,dark:{...c,[a]:u}}}],`Set $${a} in dark`);return}n.tokens[a]!==u&&fe([{op:"setToken",name:a,value:u}],`Set $${a}`)}function my(a){a in n.tokens&&fe([{op:"setToken",name:a,value:void 0}],`Remove $${a}`)}function Wc(a,u){let c=vt(a)?.values[u];c!==void 0&&fe([{op:"set",id:a,prop:u,value:Q(c)}],`Detach ${u}`)}function hy(a){let u=F(n.root,g??n.root.id)??n.root,c=[];for(let h of te(u)){if(!Cn(h.id))continue;let x=Ve(h.id);x&&Il(x,a)&&c.push(h.id)}return c}function xt(a){typeof e.setPointerCapture=="function"&&e.setPointerCapture(a)}function Ra(a){e.hasPointerCapture?.(a)&&e.releasePointerCapture(a)}let Xc=a=>{ee&&(nc(),ee.handleKey(a)&&(a.preventDefault(),a.stopPropagation()))},Yc=a=>{ee&&(a.preventDefault(),nc(),ee.handleInput(a))},Jc=()=>ee?.handleCompositionStart(),Zc=a=>ee?.handleCompositionUpdate(a.data??""),Qc=a=>ee?.handleCompositionEnd(a.data??""),ep=a=>{if(!e.ownerDocument.hasFocus())return;let u=a.relatedTarget;u instanceof Element&&u.closest("[data-vd-keeps-text]")||Mn("blur")};return q.addEventListener("keydown",Xc),q.addEventListener("beforeinput",Yc),q.addEventListener("compositionstart",Jc),q.addEventListener("compositionupdate",Zc),q.addEventListener("compositionend",Qc),q.addEventListener("blur",ep),e.addEventListener("pointerdown",uc),e.addEventListener("pointermove",cc),e.addEventListener("pointerup",xs),e.addEventListener("pointercancel",xs),e.addEventListener("pointerup",ds),e.addEventListener("pointercancel",ds),e.addEventListener("pointerleave",Mc),e.addEventListener("dblclick",bc),e.addEventListener("contextmenu",vc),e.addEventListener("keydown",pc),e.addEventListener("keyup",yc),e.addEventListener("copy",hc),e.addEventListener("cut",xc),e.addEventListener("paste",gc),e.addEventListener("dragover",Sc),e.addEventListener("dragleave",Ec),e.addEventListener("drop",Cc),_=!0,z?.setTool(o),z?.setHistory(!1,!1),z?.setZoom(M.getCamera().zoom),Qe(qe(ha())),t.autoFit&&!t.camera&&De(()=>M.fitToContent()),t.history&&(R.restore(t.history),z?.setHistory(R.canUndo,R.canRedo)),t.selection&&t.selection.length>0&&ce(t.selection),ie(),{element:e,viewer:M,getDocument:()=>n,update(a){n=a,M.update(n),ce(r),ie(),xe("problems",ma())},applyOps:(a,u)=>fe(a,u??"Apply changes"),setDocument:(a,u)=>fe(kd(n,Ll(a,n.root.id)),u??"Replace document"),getSelection:()=>r,setSelection:ce,selectAll:Ta,deleteSelection:sr,lock:a=>rr(a??r,"locked",!0),unlock:a=>rr(a??r,"locked",!1),toggleLock:a=>or(a??r,"locked"),unlockAll:()=>bs("locked"),hide:a=>rr(a??r,"hidden",!0),show:a=>rr(a??r,"hidden",!1),toggleHidden:a=>or(a??r,"hidden"),showAll:()=>bs("hidden"),isLocked:a=>at().locked.has(a),isHidden:a=>at().hidden.has(a),setFeatures:ly,getFeatures:()=>P,moveLayers:sy,addFrame:iy,copy:nr,cut:Nc,paste:Sa,duplicate:Ca,group:Aa,ungroup:$a,reorder:Oa,scaleSelection:mg,getSpacing:yg,setSpacing:gg,align:Oc,distribute:Lc,canDistribute:a=>Tc(a)!==null,editText:Xr,endTextEditing:()=>Mn("done"),getEditingText:()=>ee?.id??null,formatText:a=>ee?.format(a),getTextFormat:()=>ee?.activeMark()??{},getTextSelectionRects:ec,getTextRange:()=>{if(!ee)return null;let{anchor:a,head:u}=ee.getSelection();return{from:Math.min(a,u),to:Math.max(a,u)}},createComponent:Pa,detachInstance:Na,resetOverrides:Kc,swapComponent:uy,goToComponent:Gc,placeInstance:Ia,getEnteredGroup:()=>g,enterGroup:Hc,exitGroup:Vc,getTool:()=>o,editPoints:$n,stopEditingPoints:Zr,getPointEditing:()=>se?.id??null,convertToVector:a=>ka(a),setTool:an,beginEdit:Qx,endEdit:eg,undo:to,redo:ws,canUndo:()=>R.canUndo,canRedo:()=>R.canRedo,getHistory:()=>R.snapshot(),setProperty:qc,fontFamilies:()=>{let a=new Map;for(let u of t.fonts?.faces()??[]){let c=a.get(u.family)??{weights:new Set,italic:!1};c.weights.add(u.weight),u.style==="italic"?c.italic=!0:(c.css===void 0||u.weight===400)&&(c.css=u.id),a.set(u.family,c)}return[...a.entries()].sort(([u],[c])=>u.localeCompare(c)).map(([u,c])=>({family:u,weights:[...c.weights].sort((h,x)=>h-x),italic:c.italic,...c.css===void 0?{}:{css:c.css}}))},assetUrl:a=>{let u=n.assets[a];return u?t.resolveAsset?.(u,a):void 0},addMusic:Rc,canAddMusic:()=>t.importAudio!==void 0,setToken:py,removeToken:my,bindingsOf:Zx,unbind:Wc,getResolution:()=>M.getResolution(),getCamera:()=>M.getCamera(),getProblems:ma,on:ge,reveal:Oe,panBy:Xx,setPresence(a,u){l={ids:[...a],label:u??null},ie()},setHighlight(a){a.length===0&&p.length===0||(p=[...a],ie())},isHistoryTail:a=>R.isTail(a),undoTail:cy,historyTop:()=>R.top,destroy(){me(),e.removeEventListener("pointerup",ds),e.removeEventListener("pointercancel",ds),e.removeEventListener("pointerdown",uc),e.removeEventListener("pointermove",cc),e.removeEventListener("pointerup",xs),e.removeEventListener("pointercancel",xs),e.removeEventListener("pointerleave",Mc),q.removeEventListener("keydown",Xc),q.removeEventListener("beforeinput",Yc),q.removeEventListener("compositionstart",Jc),q.removeEventListener("compositionupdate",Zc),q.removeEventListener("compositionend",Qc),q.removeEventListener("blur",ep),q.remove(),tr&&clearTimeout(tr),e.removeEventListener("dblclick",bc),e.removeEventListener("contextmenu",vc),e.removeEventListener("copy",hc),e.removeEventListener("cut",xc),e.removeEventListener("paste",gc),e.removeEventListener("dragover",Sc),e.removeEventListener("dragleave",Ec),e.removeEventListener("drop",Cc),e.removeEventListener("keydown",pc),e.removeEventListener("keyup",yc),X?.destroy(),z?.destroy(),G.destroy(),M.destroy(),j.remove(),O.clear(),e.style.cursor="",e.classList.remove("vd-editor")}}}function yk(e,t){return e===t?!0:ye(e)&&ye(t)?e.expr===t.expr:!1}function Mx(e){return e.metaKey||e.ctrlKey||e.altKey}function ia(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 oO=new Set(kn);function jf(e){return e.map(t=>({value:t,label:`${t.charAt(0).toUpperCase()}${t.slice(1)}`}))}var kk=[{value:"nonzero",label:"Non-zero"},{value:"evenodd",label:"Even-odd"}].filter(e=>Tn.includes(e.value)),_k=jf(Ln),Sk=jf(un),Ek=jf(Dn),Ck=[{value:"left",label:"Left",icon:nt("text-left")},{value:"center",label:"Centre",icon:nt("text-center")},{value:"right",label:"Right",icon:nt("text-right")},{value:"justify",label:"Justify",icon:nt("text-justify")}].filter(e=>dn.includes(e.value)),Mk=[{value:"top",label:"Top",icon:nt("text-top")},{value:"middle",label:"Middle",icon:nt("text-middle")},{value:"bottom",label:"Bottom",icon:nt("text-bottom")}].filter(e=>ln.includes(e.value)),Uf={prop:"x",label:"X",kind:"number",prefix:"X"},zf={prop:"y",label:"Y",kind:"number",prefix:"Y"},la={prop:"w",label:"W",kind:"number",prefix:"W"},ua={prop:"h",label:"H",kind:"number",prefix:"H"},Ak={prop:"rotation",label:"Rotation",kind:"number",icon:"rotate",fallback:"0"},$k={prop:"opacity",label:"Opacity",kind:"number",icon:"opacity",percent:!0,fallback:"100%"},$x={prop:"radius",label:"Radius",kind:"number",icon:"radius",span:"wide",fallback:"0"},is={heading:"Position",props:[Uf,zf,la,ua,Ak,$k]},da={prop:"fill",label:"Fill",kind:"colour"},Tx={prop:"stroke",label:"Stroke",kind:"colour",span:"half"},Lx={prop:"strokeWidth",label:"Stroke width",kind:"number",prefix:"Width",fallback:"1"},Dx={present:"stroke",empty:"No stroke",add:{stroke:"#000000",strokeWidth:1},clear:["stroke","strokeWidth","cap","join"]},Ox={heading:"Stroke",props:[Tx,Lx],optional:Dx},sO={instance:[{heading:"Instance",props:[Uf,zf,la,ua]}],frame:[{heading:"Frame",props:[Uf,zf,la,ua,{prop:"clip",label:"Clip content",kind:"toggle"}]},{heading:"Fill",props:[{prop:"background",label:"Fill",kind:"colour"}]}],canvas:[{heading:"Canvas",props:[la,ua,{prop:"background",label:"Fill",kind:"colour"}]}],text:[is,{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:Ck,span:"half"},{prop:"valign",label:"Vertical",kind:"segmented",options:Mk,span:"half"}]},{heading:"Fill",props:[da]},{heading:"Link",props:[{prop:"content",label:"Link",kind:"link",icon:"link"}]}],rect:[{heading:"Position",props:[...is.props,$x]},{heading:"Fill",props:[da]},Ox],ellipse:[is,{heading:"Fill",props:[da]},Ox],image:[{heading:"Position",props:[...is.props,$x]},{heading:"Image",props:[{prop:"fit",label:"Fit",kind:"select",options:Sk,prefix:"Fit"}]}],vector:[is,{heading:"Fill",props:[{...da,span:"half"},{prop:"rule",label:"Fill rule",kind:"select",options:kk,prefix:"Rule",span:"half"}]},{heading:"Stroke",props:[Tx,Lx,{prop:"cap",label:"Cap",kind:"select",options:_k,prefix:"Cap",span:"half"},{prop:"join",label:"Join",kind:"select",options:Ek,prefix:"Join",span:"half"}],optional:Dx}]};var iO=On.map(e=>({value:e,label:e.split("-").map((t,n)=>n===0?t.charAt(0).toUpperCase()+t.slice(1):t).join(" ")}));function Px(e){let t=e,n=new Map,r=typeof URL.createObjectURL=="function"&&typeof URL.revokeObjectURL=="function";return{resolve(o){let s=n.get(o.hash);if(s!==void 0)return s;let i=t.get(o.hash);if(i===void 0)return;if(!r)return Id(o.type,i);let d;try{d=Fd(i)}catch{return}let l=URL.createObjectURL(new Blob([d],{type:o.type}));return n.set(o.hash,l),l},replace(o){t=o;for(let[s,i]of n)o.has(s)||(URL.revokeObjectURL(i),n.delete(s))},destroy(){for(let o of n.values())URL.revokeObjectURL(o);n.clear(),t=new Map}}}var Kf="0.5.2",Nx="https://cdn.jsdelivr.net/npm/@getv.design/embed@0.5.2/fonts/";var Bk=Symbol.for(`vdesign.embed.documents@${Kf}`),Ix=globalThis[Bk]??=new WeakMap,Hk=/^Line (\d+): /;function qf(e){let t=Hk.exec(e.message);return{...t?{line:Number(t[1])}:{},code:e.code,message:e.message,severity:e.severity}}function Gf(e){if(typeof e!="string")return ca($o("").document,new Map,[{code:"not-text",message:`parse() takes .vd text, not ${e===null?"null":typeof e}.`,severity:"error"}]);let t=Vk(e);if(t.vd===void 0)return ca($o("").document,new Map,[{code:"not-vd",message:"This SVG carries no vDesign document: only a .vd.svg exported from vDesign does.",severity:"error"}]);let{head:n,blocks:r}=Dd(t.vd),o=$o(n),s=o.problems.map(qf).map(i=>i.line===void 0?i:{...i,line:i.line+t.offset});return ca(o.document,r,s)}function Vk(e){if(!Kd(e))return{vd:e,offset:0};let t=jd(e);if(t===void 0)return{vd:void 0,offset:0};let n=e.indexOf("<vd:document"),r=e.indexOf("</vd:document",n),o=e.indexOf("<![CDATA[",n);if(o===-1||r!==-1&&o>r){let d=e.indexOf(">",n)+1,l=e.slice(0,d).split(`
2889
- `).length-1;return{vd:t,offset:l+(e[d]===`
3094
+ `;function uo(e){if(e.getElementById(Mv))return;let t=e.createElement("style");t.id=Mv,t.textContent=Cv,e.head.appendChild(t)}var wr=["font","size","weight","italic","underline","strike","fill","letterSpacing","link"];function kn(e){return typeof e=="string"?e===""?[]:[{text:e}]:e.flatMap(t=>typeof t=="string"?t===""?[]:[{text:t}]:t.text===""?[]:[t])}function lo(e){return typeof e=="string"?e:e.map(t=>typeof t=="string"?t:t.text).join("")}function fo(e){return lo(e).length}function co(e){let t={};for(let n of wr){let r=e[n];r!==void 0&&(t[n]=r)}return t}function Ov(e,t){return wr.every(n=>e[n]===t[n])}function A2(e,t){let n={text:e};for(let r of wr){let o=t[r];o!==void 0&&(n[r]=o)}return n}function Wi(e){let t=kn(e),n=[];for(let o of t){let s=n[n.length-1];if(s&&Ov(co(s),co(o))){n[n.length-1]={...s,text:s.text+o.text};continue}n.push(o)}if(n.length===0)return"";let r=n[0];return n.length===1&&Av(r)?r.text:n.map(o=>Av(o)?o.text:o)}function Av(e){return wr.every(t=>e[t]===void 0)}function km(e,t,n){let[r,o]=Su(t,n,fo(e)),s=[],i=0;for(let a of kn(e)){let d=i+a.text.length,c=Math.max(r,i),l=Math.min(o,d);l>c&&s.push({...a,text:a.text.slice(c-i,l-i)}),i=d}return Wi(s)}function ws(e,t,n,r,o){let s=fo(e),[i,a]=Su(t,n,s),d=o??po(e,i),c=[],l=0,p=!1,m=()=>{p||r===""||(c.push(A2(r,d)),p=!0)};for(let g of kn(e)){let b=l+g.text.length,w=Math.min(i,b);w>l&&c.push({...g,text:g.text.slice(0,w-l)}),i>=l&&i<=b&&m();let k=Math.max(a,l);b>k&&c.push({...g,text:g.text.slice(k-l)}),l=b}return m(),Wi(c)}function po(e,t){let n=kn(e);if(n.length===0)return{};let r=0,o=n[0];for(let s of n){let i=r+s.text.length;if(t>r&&t<=i)return co(s);if(t<=r)return co(o);o=s,r=i}return co(o)}function ku(e,t,n,r){let[o,s]=Su(t,n,fo(e));if(o===s)return Wi(e);let i=Object.keys(r),a=[],d=0;for(let c of kn(e)){let l=d+c.text.length;for(let[p,m,g]of $2(d,l,o,s)){if(m<=p)continue;let b=c.text.slice(p-d,m-d);if(!g){a.push({...c,text:b});continue}let w={...c,text:b};for(let k of i)r[k]===void 0?delete w[k]:w[k]=r[k];a.push(w)}d=l}return Wi(a)}function $2(e,t,n,r){return[[e,Math.min(t,n),!1],[Math.max(e,n),Math.min(t,r),!0],[Math.max(e,r),t,!1]]}function Sm(e,t,n){let[r,o]=Su(t,n,fo(e));if(r===o)return po(e,r);let s,i=0;for(let a of kn(e)){let d=i+a.text.length;if(Math.min(d,o)>Math.max(i,r)){let c=co(a);if(!s)s=c;else{let l={};for(let p of wr)s[p]===c[p]&&s[p]!==void 0&&(l[p]=s[p]);s=l}}i=d}return s??{}}function Su(e,t,n){let r=$v(Math.min(e,t),n),o=$v(Math.max(e,t),n);return[r,o]}function $v(e,t){return Math.max(0,Math.min(Math.round(e),t))}function ks(e,t){let n=[],r=0;return e.lines.forEach((o,s)=>{let i=o.spans.map(l=>l.text).join(""),a=i===""?s===0?r:O2(t,r):T2(t,i,r),d=a+i.length,c=s===e.lines.length-1;n.push({start:a,end:c?t.length:d}),r=d}),n.length===0&&n.push({start:0,end:t.length}),n}function O2(e,t){let n=e.indexOf(`
3095
+ `,t);return n===-1?t:n+1}function T2(e,t,n){let r=e.indexOf(t,n);return r===-1?n:r}function _u(e,t){for(let n=0;n<e.length;n+=1){let r=e[n];if(t<=r.end)return n}return Math.max(0,e.length-1)}function Eu(e,t,n,r){let o=ks(e,t),s=_u(o,n),i=e.lines[s],a=o[s];if(!i||!a)return{x:0,y:0,h:0,line:0};let d=Math.max(0,Math.min(n-a.start,Lv(i))),c=(L2(i,d)??i.style)?.fill;return{x:_m(i,d,r),y:i.y,h:i.h,line:s,...c!==void 0?{fill:c}:{}}}function L2(e,t){let n=0;for(let r of e.spans)if(n+=r.text.length,t<=n)return r.style;return e.spans[e.spans.length-1]?.style}function Xi(e,t,n,r){let o=ks(e,t);if(e.lines.length===0)return 0;let s=e.lines.findIndex(d=>n.y<d.y+d.h);s===-1&&(s=e.lines.length-1);let i=e.lines[s];return o[s].start+Tv(i,n.x,r)}function Tv(e,t,n){let r=0,o=1/0,s=0,i=(a,d)=>{let c=Math.abs(d-t);c<o&&(o=c,r=a)};i(0,e.spans[0]?.x??0);for(let a of e.spans){for(let d of Cm(a.text))d!==0&&i(s+d,a.x+n.advance(a.text.slice(0,d),a.style));s+=a.text.length}return r}function _m(e,t,n){let r=0,o=e.spans[0]?.x??0;for(let s of e.spans){if(t<=r)return s.x;if(t>=r+s.text.length){o=s.x+s.w,r+=s.text.length;continue}return s.x+n.advance(s.text.slice(0,t-r),s.style)}return o}function Lv(e){return e.spans.reduce((t,n)=>t+n.text.length,0)}function Em(e,t,n,r,o){let s=Math.min(n,r),i=Math.max(n,r);if(s===i)return[];let a=ks(e,t),d=[];return e.lines.forEach((c,l)=>{let p=a[l];if(!p)return;let m=Math.max(s,p.start),g=Math.min(i,p.end);if(g<=m)return;let b=Lv(c),w=_m(c,Math.min(m-p.start,b),o),k=_m(c,Math.min(g-p.start,b),o),_=Math.max(k-w,g>p.end-1&&g>m?4:0);_>0&&d.push({x:w,y:c.y,w:_,h:c.h})}),d}function Mm(e,t,n,r,o){let s=ks(e,t),a=_u(s,n)+r,d=e.lines[a],c=s[a];if(!d||!c)return r===-1?0:t.length;let l=Eu(e,t,n,o);return Math.min(c.start+Tv(d,l.x,o),c.end)}function Cm(e){let t=[0];for(let{index:n,segment:r}of P2.segment(e))t.push(n+r.length);return t}var P2=new Intl.Segmenter(void 0,{granularity:"grapheme"});function Mu(e,t){let n=0;for(let r of Cm(e)){if(r>=t)break;n=r}return n}function Am(e,t){for(let n of Cm(e))if(n>t)return n;return e.length}function Pv(e,t){return t>=e.length?e.length:Mu(e,t+1)}var D2=/[\p{L}\p{N}_]/u;function $m(e,t){let n=Math.max(0,Math.min(t,e.length)),r=a=>D2.test(e[a]??""),o=n;if(!r(o)&&o>0&&r(o-1)&&(o-=1),!r(o))return{from:n,to:n};let s=o,i=o;for(;s>0&&r(s-1);)s-=1;for(;i<e.length&&r(i);)i+=1;return{from:s,to:i}}function Cu(e,t,n){let r=ks(e,t),o=r[_u(r,n)];return o?{from:o.start,to:o.end}:{from:0,to:t.length}}var N2=700,R2=400,I2=600,Dv=1,F2=1,Fv=700;function Om(e){let t=0,n=0,r=null,o=!1,s=0,i=!1,a=0,d=0;function c(){return lo(e.content())}function l($){let P=c();return Pv(P,Math.max(0,Math.min(Math.round($),P.length)))}function p(){return{from:Math.min(t,n),to:Math.max(t,n)}}function m($,P=$){let C=t!==$||n!==P;t=l($),n=l(P),C&&g(),r=null,e.invalidate()}function g(){o=!1,s&&(clearTimeout(s),s=0)}function b(){s&&clearTimeout(s),s=setTimeout(g,Fv)}function w($,P){e.write($,o,P),o=!0,b()}function k($,P){let{from:C,to:G}=p(),ee=r??void 0;w(ws(e.content(),C,G,$,ee),P),t=n=C+$.length,r=null,e.invalidate()}function _($,P){$!==P&&(w(ws(e.content(),$,P,""),"Delete text"),t=n=Math.min($,P),e.invalidate())}function M($,P){let{from:C,to:G}=p();if(C!==G){_(C,G);return}let ee=c();if($===-1){if(C===0)return;let oe=P?Rv(ee,C):Mu(ee,C);_(oe,C);return}if(C>=ee.length)return;let fe=P?Iv(ee,C):Am(ee,C);_(C,fe)}function R($,P){let C=c();return P?$===-1?Rv(C,n):Iv(C,n):$===-1?Mu(C,n):Am(C,n)}let B=$=>$.weight??e.base().weight,D=$=>$.italic??e.base().italic,V=$=>B($)>=I2;function T($){let{from:P,to:C}=p();if(r||P===C)return $(r??po(e.content(),P));let G=0;for(let ee of kn(e.content())){let fe=G+ee.text.length;if(Math.min(fe,C)>Math.max(G,P)&&!$(ee))return!1;G=fe}return!0}function O($,P,C,G){let ee=P({});return T(P)?{[$]:ee?G:void 0}:{[$]:ee?void 0:C}}function j($,P){let C=Se=>Math.max(F2,(Se.size??e.base().size)+$),{from:G,to:ee}=p();if(G===ee){P({size:C(r??po(e.content(),G))});return}let fe=e.content(),oe=0;for(let Se of kn(e.content())){let be=oe+Se.text.length,v=Math.max(oe,G),N=Math.min(be,ee);N>v&&(fe=ku(fe,v,N,{size:C(Se)})),oe=be}g(),w(fe,"Format text"),g(),e.invalidate()}return{id:e.id,getSelection:()=>({anchor:t,head:n}),setSelection($,P){m($,P??$)},caret(){return Eu(e.layout(),c(),n,e.measure())},highlight(){let{from:$,to:P}=p();return Em(e.layout(),c(),$,P,e.measure())},pointTo($,P){let C=Xi(e.layout(),c(),$,e.measure());m(P?t:C,C)},selectWordAt($){let P=Xi(e.layout(),c(),$,e.measure()),C=$m(c(),P);m(C.from,C.to)},selectLineAt($){let P=Xi(e.layout(),c(),$,e.measure()),C=Cu(e.layout(),c(),P);m(C.from,C.to)},selectAll(){m(0,c().length)},format($){let{from:P,to:C}=p();if(P===C){r={...po(e.content(),P),...$},e.invalidate();return}g(),w(ku(e.content(),P,C,$),"Format text"),g(),e.invalidate()},activeMark(){if(r)return r;let{from:$,to:P}=p();return Sm(e.content(),$,P)},composing:()=>i,handleKey($){if(i)return!1;let P=$.metaKey||$.ctrlKey,C=$.altKey||$.ctrlKey&&!$.metaKey;if(P&&$.shiftKey&&!$.altKey&&($.code==="Period"||$.code==="Comma"))return j($.code==="Period"?Dv:-Dv,G=>this.format(G)),!0;switch($.key){case"Escape":return e.close("escape"),!0;case"ArrowLeft":case"ArrowRight":{let G=$.key==="ArrowLeft"?-1:1,{from:ee,to:fe}=p();if(!$.shiftKey&&ee!==fe)m(G===-1?ee:fe);else{let oe=$.metaKey?Nv(e,c(),n,G):R(G,C);m($.shiftKey?t:oe,oe)}return!0}case"ArrowUp":case"ArrowDown":{let G=$.key==="ArrowUp"?-1:1,ee=P?G===-1?0:c().length:Mm(e.layout(),c(),n,G,e.measure());return m($.shiftKey?t:ee,ee),!0}case"PageUp":case"PageDown":{let G=$.key==="PageUp"?0:c().length;return m($.shiftKey?t:G,G),!0}case"Home":case"End":{let G=Nv(e,c(),n,$.key==="Home"?-1:1);return m($.shiftKey?t:G,G),!0}case"Backspace":return M(-1,C||P),!0;case"Delete":return M(1,C||P),!0;case"Enter":return P?e.close("done"):k(`
3096
+ `,"Type text"),!0;case"Tab":return!1;case"a":case"A":return P?(m(0,c().length),!0):!1;case"b":case"B":return P?(this.format(O("weight",V,N2,R2)),!0):!1;case"i":case"I":return P?(this.format(O("italic",D,!0,!1)),!0):!1;case"u":case"U":return P?(this.format({underline:this.activeMark().underline===!0?void 0:!0}),!0):!1;case"x":case"X":return!P||!$.shiftKey||$.altKey?!1:(this.format({strike:this.activeMark().strike===!0?void 0:!0}),!0);default:return!1}},handleInput($){if(!i)switch($.inputType){case"insertText":case"insertReplacementText":case"insertFromPaste":case"insertFromDrop":case"insertFromYank":k(B2($),"Type text");return;case"insertParagraph":case"insertLineBreak":k(`
3097
+ `,"Type text");return;case"deleteContentBackward":case"deleteWordBackward":M(-1,$.inputType==="deleteWordBackward");return;case"deleteContentForward":case"deleteWordForward":M(1,$.inputType==="deleteWordForward");return;case"deleteByCut":case"deleteByDrag":{let{from:P,to:C}=p();_(P,C);return}default:return}},handleCompositionStart(){i=!0;let{from:$,to:P}=p();a=$,d=P,g()},handleCompositionUpdate($){w(ws(e.content(),a,d,$),"Type text"),d=a+$.length,t=n=d,e.invalidate()},handleCompositionEnd($){w(ws(e.content(),a,d,$),"Type text"),i=!1,d=a+$.length,t=n=d,g(),e.invalidate()},breakBurst:g,destroy(){g()}}}function B2(e){return typeof e.data=="string"?e.data:e.dataTransfer?.getData("text/plain")??""}function Nv(e,t,n,r){let o=Cu(e.layout(),t,n);return r===-1?o.from:o.to}var Au=/[\p{L}\p{N}_]/u;function Rv(e,t){let n=t;for(;n>0&&!Au.test(e[n-1]??"");)n-=1;for(;n>0&&Au.test(e[n-1]??"");)n-=1;return n}function Iv(e,t){let n=t;for(;n<e.length&&!Au.test(e[n]??"");)n+=1;for(;n<e.length&&Au.test(e[n]??"");)n+=1;return n}function Tm(e){return fo(e)===0}var Bv=10;function $u(e,t){let n=t.x+t.w/2,r=t.y+t.h/2;return[{id:e,side:"left",at:{x:t.x,y:r}},{id:e,side:"right",at:{x:t.x+t.w,y:r}},{id:e,side:"top",at:{x:n,y:t.y}},{id:e,side:"bottom",at:{x:n,y:t.y+t.h}}]}function Vv(e,t,n,r){let o=a=>Math.hypot(a.at.x-e.x,a.at.y-e.y),s=a=>a.reduce((d,c)=>d===null||o(c)<o(d)?c:d,null);if(t)return s($u(t.id,t.box));let i=n.flatMap(({id:a,box:d})=>$u(a,d).filter(c=>o(c)<=r));return s(i)}function V2(e){switch(e){case"left":return["left","cy"];case"right":return["right","cy"];case"top":return["cx","top"];case"bottom":return["cx","bottom"]}}function Ou(e,t,n,r){let[o,s]=e==="start"?["x1","y1"]:["x2","y2"];if(t){let[i,a]=V2(t.side);return{[o]:_t(`@${t.id}.${i}`),[s]:_t(`@${t.id}.${a}`)}}return{[o]:Math.round((n.x-r.x)*100)/100,[s]:Math.round((n.y-r.y)*100)/100}}function Hv(e,t){let n=t.x-e.x,r=t.y-e.y,o=Math.hypot(n,r);if(o===0)return t;let s=Math.PI/4,i=Math.round(Math.atan2(r,n)/s)*s;return{x:e.x+Math.cos(i)*o,y:e.y+Math.sin(i)*o}}var Lm={v:"select",f:"frame",r:"rect",o:"ellipse",l:"line",p:"pen",t:"text"};var Pm="host:",Uv="#ffffff",zv={w:1920,h:1080},H2=100,Tu=20,U2=15,jv=1,Kv=10,Gv=2,z2=32,j2={ne:0,se:90,sw:180,nw:270,n:0,e:90,s:180,w:270},qv={w:240,h:28},K2={text:"Add text",frame:"Add page",rect:"Draw rectangle",ellipse:"Draw ellipse"};function G2(e,t){let n=t.x-e.x,r=t.y-e.y,o=Math.max(Math.abs(n),Math.abs(r));return{x:e.x+Math.sign(n||1)*o,y:e.y+Math.sign(r||1)*o}}var q2={KeyA:"left",KeyD:"right",KeyW:"top",KeyS:"bottom",KeyH:"hcenter",KeyV:"vcenter"},W2={KeyH:"x",KeyV:"y"},X2={KeyU:"union",KeyS:"subtract",KeyI:"intersect",KeyX:"exclude"},Wv={ArrowLeft:[-1,0],ArrowRight:[1,0],ArrowUp:[0,-1],ArrowDown:[0,1]},Y2={left:"Align left",hcenter:"Align horizontal centres",right:"Align right",top:"Align top",vcenter:"Align vertical centres",bottom:"Align bottom"},Dm=null,J2=220,Xv={lock:!0,hide:!0},Pu="application/x-vdesign-component",Z2=new Set(["x","y","w","h","rotation"]),Q2={cover:"xMidYMid slice",contain:"xMidYMid meet",fill:"none"},eA=["x","y","w","h"],tA={front:"Bring to front",forward:"Bring forward",backward:"Send backward",back:"Send to back"},nA=11,jn=2,rA={metaKey:!1,ctrlKey:!1},oA=10;function Rm(e,t){uo(e.ownerDocument),e.classList.add("vd-editor"),e.hasAttribute("tabindex")||(e.tabIndex=0);let n=t.document,r=[],o=t.tool??"select",s=null,i=null,a=null,d=null,c={ids:[],label:null},l=null,p=[],m=!1,g=new Set,b=null,w=!1,k=!1,_=null,M=null,R={...Xv,...t.features},B=null,D=new qi,V=0,T=null,O={dx:0,dy:0},j=null,$=new Map,P=e.ownerDocument.createElement("div");P.style.position="absolute",P.style.inset="0",e.appendChild(P),e.style.touchAction="none";let C=Rd(P,{sample:Kf,document:n,...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:(u,f)=>{f===n&&ke("scene",{scene:u,document:f})},onCameraChange:u=>{ee?.setZoom(u.zoom),ce(),ke("camera",u),!(V>0)&&(Ue(),ke("navigate",u))}}),G=kv(e,u=>C.documentToScreen(u)),ee=t.chrome===!1?null:Bb(e,{onTool:Mn,onUndo:Vs,onRedo:Hs,onZoomReset:()=>C.fitToContent(),onPlay:t.onPlay,playHint:t.playHint,formatKeys:t.formatKeys}),fe=t.chrome===!1?null:fu(e,{onCommand:i1,...t.formatKeys?{formatKeys:t.formatKeys}:{}}),oe=n,Se=n,be=[],v=null,N=[],I=null,F=null,q=new Map,Y=null,Q=null,Te=null,Ct=[],_e=dt,Rt=null,ae=null,H=null,J=null,Oe=!1,se=e.ownerDocument.createElement("textarea");se.className="vd-editor__input",se.setAttribute("aria-hidden","true"),se.tabIndex=-1,se.autocapitalize="off",se.autocomplete="off",se.spellcheck=!1,e.appendChild(se);function ke(u,f){let h=$.get(u);if(h)for(let x of h)x(f)}function ye(u,f){let h=$.get(u)??new Set;return h.add(f),$.set(u,h),()=>h.delete(f)}function Ge(u){V+=1;try{u()}finally{V-=1}}function Ue(){T!==null&&(e.ownerDocument.defaultView?.cancelAnimationFrame(T),T=null)}function Os(u){let f=C.linkAt(u),h=f===void 0?void 0:Qt(f);return h?h.kind==="url"?t.onOpenLink?(t.onOpenLink(h.url),!0):!1:z(n.root,h.id)?(he([h.id]),At([h.id]),!0):!1:!1}function At(u,f={}){if(v!==null)return j={target:u,options:f},!1;let h=ek(u);if(!h)return!1;let x=e.getBoundingClientRect(),y=x.width>0&&x.height>0,S=y?{width:x.width,height:x.height-Zw(x)}:{width:h.w+96,height:h.h+96},E=f.fit==="always"?cu(h,S):om(h,S,C.getCamera());if(!E)return!1;Ue(),f.by==="person"&&ke("navigate",E);let A=e.ownerDocument.defaultView,L=A?.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1;if(f.animate===!1||L||!y||!A?.requestAnimationFrame)return Ge(()=>C.setCamera(E)),!0;let U=C.getCamera(),W=A.performance.now();O={dx:0,dy:0};let X=ie=>{let re=Math.min(1,Math.max(0,(ie-W)/J2)),xe=re===1?E:av(U,E,dv(re),S);Ge(()=>C.setCamera(yn(xe,O.dx,O.dy))),T=re===1?null:A.requestAnimationFrame(X)};return T=A.requestAnimationFrame(X),!0}function Zw(u){let f=ee?.element.getBoundingClientRect();return!f||f.height===0?0:Math.max(0,u.bottom-f.top)}function Qw(u,f){T!==null&&(O={dx:O.dx+u,dy:O.dy+f}),Ge(()=>C.setCamera(yn(C.getCamera(),u,f)))}function da(){if(j===null||v!==null)return;let{target:u,options:f}=j;j=null,At(u,f)}function ek(u){if(u==="content"){let h=C.getScene();return uu([{x:h.x,y:h.y,w:h.width,h:h.height}])}let f=[];for(let h of rm(n,u)){let x=qe(h);x&&f.push(x)}return uu(f)}function wt(u){return C.getResolution().nodes.get(u)}function an(u){let f=wt(u);return f?{x:f.x,y:f.y,w:f.w,h:f.h}:void 0}function qe(u){return ro(u,n,C.getResolution())}function kt(u){let f=wt(u);return f?{x:f.absX,y:f.absY,w:f.w,h:f.h}:void 0}function Wn(u){return wt(u)?.values.rotation??0}function ox(){let u=Ls();if(u.length===0)return null;for(let f of u){let h=z(n.root,f);if(!h||!Yl.includes(h.type))return null}return u}function Xn(u,f=new Set){let h=C.getResolution(),x=null;return de(n.root,y=>{if(f.has(y.id)||!It(y.id)||y.type==="instance")return!1;if(y.type!=="frame")return;let S=h.nodes.get(y.id);if(!S)return!1;let E={x:S.absX,y:S.absY,w:S.w,h:S.h};if(!Mt(E,u.x,u.y))return!1;x=y.id}),x}function Yt(u){let f=wt(u);return f?{x:f.absX,y:f.absY}:{x:0,y:0}}function $t(){return B?.of!==n&&(B={of:n,hidden:Oa(n.root),locked:Ta(n.root)}),B}function It(u){let{hidden:f,locked:h}=$t();return!f.has(u)&&!h.has(u)}function ge(){return r.filter(It)}function yo(u){let f=C.hitTest(u,x=>!$t().locked.has(x));if(f===null)return null;let h=_===null||Ke(n.root,f).includes(_);return Bd(f,n,h?_:null)}function tk(){return Bi(n,ge(),C.getResolution())}function Ts(){return ge().length<2?null:fm(tk())}function ua(u){let f=[];for(let h of u)for(let x of no(h,n)){let y=an(x);y&&f.push({member:h,node:x,frame:y})}return f}function ca(u,f){let h=z(n.root,u);if(!h)return"literal";let x=h[f];return x===void 0?"literal":md(x).kind}function nk(u){let f=z(n.root,u),h={};if(!f)return h;let x=[...eA,...ji(f).flatMap(y=>y.props)];for(let y of x)h[y]=ca(u,y);return h}function sx(u,f){let h="none";for(let x of u){let y=ac(x,f);if(y==="expression")return"expression";y==="token"&&(h="token")}return h}function ac(u,f){let h="none";for(let x of f){let y=ca(u,x);if(y==="complex")return"expression";y==="token"&&(h="token")}return h}let ht=null;function pe(u,f){if(u.length===0)return;let h=Vo(n,Vd(n,u,an)),x=Ae(n,h);n=x.document,ht?(fc(ht.started,ht.label,h,x.inverse),ht.started=!0):D.push({label:f,ops:h,inverse:x.inverse}),la(h,f)}function rk(u){ht={label:u,started:!1}}function ix(){ht=null}function ax(u,f){u.length!==0&&(n=Ae(n,u).document,la(u,f))}function la(u,f){s=null,Q=null,Te=null,C.update(n),ee?.setHistory(D.canUndo,D.canRedo),ce(),ke("change",{document:n,ops:u,label:f}),ke("problems",dc())}function dc(){return[...C.getScene().problems,...mf(n)]}function he(u){let f=u.filter(x=>x!==n.root.id&&z(n.root,x)),h=f.length!==r.length||f.some((x,y)=>r[y]!==x);r=[...f],H&&(f.length!==1||f[0]!==H.id)&&(H=null),M!==null&&(f.length!==1||f[0]!==M)&&(M=null),h&&(fe?.close(),Te=null,ke("selection",r)),ce()}function ok(u,f){let h=z(n.root,u);if(!h)return[];let x=C.getCamera().zoom;if(Math.min(f.w,f.h)*x<Ip)return[];let y=nA/x,S=wt(u);return ji(h).flatMap(E=>E.handles(h,f,S?.values??{},y).map(A=>({id:A.id,at:A.at,bound:ca(u,A.prop)!=="literal"})))}function dx(u,f){let h=wt(u)?.values??{};return h[f]??(f==="radius"?0:h.radius??0)}function sk(){let u=[];for(let U of ge()){let W=qe(U);W&&u.push(W)}let f=Wt(u);if(!f)return null;let h=ge().length===1?ge()[0]:void 0,x=h===void 0?void 0:z(n.root,h),y=h===void 0||!x||me(x),S=new Set,E=Ls();for(let U of hp){let W=Id(U);E.some(X=>W.some(ie=>ca(X,ie)!=="literal"))&&S.add(U)}let A=!y&&h!==void 0?Wn(h):0,L=A!==0&&h!==void 0?kt(h):void 0;return{frame:L??f,...L?{rotation:A}:{},rotatable:ox()!==null,handles:ae===null&&x?.type!=="connector",boundHandles:S,adjusters:ae!==null||y||h===void 0||L?[]:ok(h,f)}}function Ls(){return[...new Set(ge().flatMap(u=>no(u,n)))]}function ik(u){return u?v?.kind==="adjust"?`r ${Z(I??v.from)}`:v?.kind==="rotate"?`${Z(F??0)}\xB0`:!v&&Q&&ge().length===1?`r ${Z(dx(ge()[0],Q.prop))}`:v?.kind==="move"?`${Z(u.frame.x)}, ${Z(u.frame.y)}`:`${Z(u.frame.w)} \xD7 ${Z(u.frame.h)}`:null}function ak(){let f=v!==null&&v.kind!=="space"&&v.kind!=="reorder"?null:Ts();if(!f)return{spacers:[],rings:[],lead:null};let h=v?.kind==="space"?v.spacer:null;return{spacers:hm(f).map(x=>({id:x.id,axis:x.axis,at:x.at,label:x.id===(h??Te)?String(Z(x.gap)):null})),rings:mm(f).map(x=>({id:x.id,at:x.at})),lead:v?.kind==="reorder"?qe(v.id)??null:null}}function dk(u){let f=[];return de(n.root,(h,x)=>{if(h.id===u||!It(h.id))return!1;if(h.type==="canvas"||h.type==="group"||h.type==="connector"||h.type==="frame"&&x?.id===n.root.id)return;let y=kt(h.id);return y&&f.push({id:h.id,box:y}),h.type==="instance"?!1:void 0}),f}function fa(u,f,h){if(h.metaKey||h.ctrlKey)return null;let x=dk(f),y=C.hitTest(u,A=>A!==f&&It(A)),S=y===null?null:uk(y,x),E=S===null?null:x.find(A=>A.id===S)??null;return Vv(u,E,x,Bv/C.getCamera().zoom)}function uk(u,f){if(f.some(x=>x.id===u))return u;let h=Ba(n.root,u);return h!==void 0&&f.some(x=>x.id===h.id)?h.id:null}function ux(u,f,h){return h.shiftKey?(_e=dt,Hv(f,u)):(_e=du(u,Ct,wo(h)),{x:u.x+_e.dx,y:u.y+_e.dy})}function ck(u,f,h,x){let y=Le(oe.root,u),S=y?Yt(y.id):{x:0,y:0};return Object.entries(Ou(f,h,x,S)).map(([E,A])=>({op:"set",id:u,prop:E,value:A}))}function lk(u,f,h){if(z(n.root,u)?.type!=="connector"||Je(n,u))return!1;let y=G.hitLineEnd(f),S=C.itemOf(u);if(y===null||S?.kind!=="connector")return!1;let E=y==="start"?{x:S.x1,y:S.y1}:{x:S.x2,y:S.y2},A=y==="start"?{x:S.x2,y:S.y2}:{x:S.x1,y:S.y1};return St(h),mt({kind:"end",pointerId:h,id:u,end:y,fixed:A,current:E,anchor:null}),ce(),!0}function fk(u,f,h,x){if(ko(u,f)<jn*2||h!==null&&x!==null&&h.id===x.id&&h.side===x.side)return;let y=Jn(Xn(u)??_??n.root.id),S=z(n.root,y)??n.root,E=Yt(y),A=pn(n.root,"line");pe([{op:"insert",parent:y,index:te(S).length,node:el({id:A,...Ou("start",h,u,E),...Ou("end",x,f,E),...t.defaultStroke===void 0?{}:{stroke:t.defaultStroke}})}],"Draw line"),he([A]),Mn("select")}function pk(){if(v?.kind==="line"){let y=v.to??null;return{from:v.origin,to:v.current,draft:!0,attached:{start:v.from!==null,end:v.to!==null},anchors:y?uc(y.id):[],chosen:y?.at??null,target:y?kt(y.id)??null:null}}if(o==="line"&&!v&&i)return{from:i.at,to:i.at,draft:!1,attached:{start:!1,end:!1},anchors:uc(i.id),chosen:i.at,target:kt(i.id)??null};let u=ge().length===1?ge()[0]:void 0;if(u===void 0||ae)return null;let f=C.itemOf(u);if(f?.kind!=="connector")return null;let h=v?.kind==="end"?v.anchor:null,x=In(n).get(u);return{from:{x:f.x1,y:f.y1},to:{x:f.x2,y:f.y2},draft:!1,attached:{start:x?.start!==void 0,end:x?.end!==void 0},anchors:h?uc(h.id):[],chosen:h?.at??null,target:h?kt(h.id)??null:null}}function hk(){let u=ge().length===1?ge()[0]:void 0;return u!==void 0&&z(n.root,u)?.type==="connector"}function uc(u){let f=kt(u);return f?$u(u,f).map(h=>h.at):[]}function ce(){if(!k)return;let u=Rk(),f=u||hk()?null:sk(),h=s!==null&&!r.includes(s)&&!v?s:null,x=h===null?void 0:C.itemOf(h),y=x?.kind==="connector"?x.contours:null,S=h!==null&&y===null?qe(h)??null:null,E={...wv,...ak(),hover:S,members:ge().length>1?ge().flatMap(A=>qe(A)??[]):[],box:f,badge:ik(f),caret:cx(),textSelection:lx(),draft:v?.kind==="create"?to(v.origin,v.current):null,draftEllipse:v?.kind==="create"&&o==="ellipse",marquee:v?.kind==="marquee"?to(v.origin,v.current):null,guides:v?_e.guides:[],measures:v?_e.measures:[],presence:c.ids.length===0?null:{frames:c.ids.flatMap(A=>qe(A)??[]),label:c.label},highlight:Gi(n,p).flatMap(A=>qe(A.id)??[]),slots:b1(),masks:Wk(),parked:r.filter(A=>!It(A)).flatMap(A=>qe(A)??[]),lockHint:yk(),path:u,turn:bk(),pageLabels:xk(),line:pk(),hoverLine:y};G.render(E)}let pa=null;function mk(u){pa?.of!==n&&(pa={of:n,counts:new Map});let f=pa.counts.get(u);return f===void 0&&(f=Ud(n,[u]),pa.counts.set(u,f)),f}function xk(){if(a)return[];let u=C.getResolution().nodes;return n.root.children.flatMap(f=>{if(f.type!=="frame")return[];let h=u.get(f.id);if(!h)return[];let x=Fi(h),y=f.name,S=typeof y=="string"&&y!==""?y:f.id,E=r.includes(f.id)?"selected":s===f.id?"hover":"idle";if(f.component!==!0)return[{id:f.id,frame:x,label:S,state:E}];let A=mk(f.id);return[{id:f.id,frame:x,label:`\u25C6 ${S} \xB7 ${A} ${A===1?"use":"uses"}`,state:E,component:!0}]})}function gk(u){let f=G.pageLabelRect(u),h=z(n.root,u);if(!f||!h)return;let x=h.name,y=e.ownerDocument.createElement("input");y.className="vd-editor__rename",y.type="text",y.spellcheck=!1,y.value=typeof x=="string"&&x!==""?x:"",y.placeholder=u,y.setAttribute("aria-label",`Name of ${u}`),y.style.left=`${f.x-4}px`,y.style.top=`${f.y-2}px`,y.style.width=`${Math.max(120,f.w+40)}px`;let S=!1,E=A=>{if(S)return;S=!0;let L=y.value.trim();y.remove(),a=null,A&&L!==(typeof x=="string"?x:"")&&pg(u,"name",L===""?void 0:L,"Rename"),ce(),e.focus({preventScroll:!0})};y.addEventListener("keydown",A=>{A.stopPropagation(),A.key==="Enter"?(A.preventDefault(),E(!0)):A.key==="Escape"&&(A.preventDefault(),E(!1))}),y.addEventListener("pointerdown",A=>A.stopPropagation()),y.addEventListener("blur",()=>E(!0)),a=y,e.appendChild(y),ce(),y.focus(),y.select()}function yk(){if(d===null||v||!$t().locked.has(d))return null;let u=qe(d);return u?{frame:u,label:d}:null}function ha(u){let f=C.itemOf(u);if(f?.kind!=="text")return null;let h=f.lines[0]?.y??f.y,x={lines:f.lines.map(y=>({y:y.y-h,h:y.h,baseline:y.baseline-h,w:y.w,spans:y.spans.map(S=>({text:S.text,style:S.style,x:S.x-f.x,w:S.w})),...y.style?{style:y.style}:{}})),width:Math.max(0,...f.lines.map(y=>y.w)),height:f.height};return{item:f,layout:x,top:h}}function cc(){return o==="text"?"text":o!=="select"?"crosshair":"arrow"}function cx(){if(!ae)return null;let u=ha(ae.id);if(!u)return null;let f=ae.caret();return{x:u.item.x+f.x,y:u.top+f.y,h:f.h,...f.fill!==void 0?{fill:f.fill}:{}}}function lx(){if(!ae)return[];let u=ha(ae.id);return u?ae.highlight().map(f=>({x:u.item.x+f.x,y:u.top+f.y,w:f.w,h:f.h})):[]}function lc(u){if(!ae)return null;let f=ha(ae.id);if(!f)return null;let h=bo(ae.id,u);return{x:h.x-f.item.x,y:h.y-f.top}}function bo(u,f){let h=Wn(u),x=h===0?void 0:kt(u);return x?je(f,Re(x),-h):f}function bk(){let u=ae?.id??H?.id;if(u===void 0)return null;let f=Wn(u),h=f===0?void 0:kt(u);return h?{angle:f,centre:Re(h)}:null}function vk(u){let f=z(n.root,u);if(!f||f.type!=="text"||typeof f.h!="number")return[];let h=C.itemOf(u);if(h?.kind!=="text")return[];let x=Z(Math.ceil(h.height));return x>f.h?[{op:"set",id:u,prop:"h",value:x}]:[]}function wk(u,f,h,x){let y=ht?ht.started:h,S=ht?.label??x;ht&&(ht.started=!0);let E=[{op:"set",id:u,prop:"content",value:f}],A=Ae(n,E);n=A.document,C.update(n);let L=vk(u);if(L.length===0){fc(y,S,E,A.inverse),la(E,S);return}let U=Ae(n,L);n=U.document,C.update(n);let W=[...E,...L];fc(y,S,W,[...U.inverse,...A.inverse]),la(W,S)}function fc(u,f,h,x){let y={label:f,ops:h,inverse:x};u&&D.amend(y)||D.push(y)}function Ps(u,f){let h=z(n.root,u);if(!h||h.type!=="text"||ae?.id===u)return;_r("done"),Mn("select"),he([u]),ae=Om({id:u,content:()=>{let y=z(n.root,u);return y?.type==="text"?y.content:""},base:()=>{let y=z(n.root,u);return{weight:wt(u)?.values.weight??bd,italic:y?.type==="text"&&y.italic===!0,size:wt(u)?.values.size??yd}},layout:()=>ha(u)?.layout??{lines:[],width:0,height:0},measure:()=>C.getMeasurer(),write:(y,S,E)=>wk(u,y,S,E),invalidate:()=>{ce(),fx(),ke("selection",r)},close:y=>_r(y)});let x=f?lc(f):null;x?ae.pointTo(x,!1):ae.selectAll(),e.classList.add("vd-editor--editing"),se.value="",se.focus({preventScroll:!0}),ce(),fx()}function _r(u){let f=ae;if(!f)return;ae=null,Oe=!1,f.destroy(),e.classList.remove("vd-editor--editing","vd-editor--typing"),ke("selection",r);let h=z(n.root,f.id);h?.type==="text"&&Tm(h.content)&&!Je(n,f.id)&&(pe([{op:"remove",id:f.id}],"Remove empty text"),he([])),e.ownerDocument.activeElement===se&&e.focus({preventScroll:!0}),ce()}function fx(){let u=cx();if(!u)return;let f=C.documentToScreen({x:u.x,y:u.y});se.style.left=`${Math.round(f.x)}px`,se.style.top=`${Math.round(f.y)}px`}let vo=0;function px(){e.classList.add("vd-editor--typing"),vo&&clearTimeout(vo),vo=setTimeout(()=>{vo=0,e.classList.remove("vd-editor--typing")},520)}function pc(u){return hx(oe,u,q,Y)}function hx(u,f,h,x){let y=oo(u,f);return y.length>0&&x?[...y,...fs(u,y,h,x)]:y}function mx(){let u=new Map;for(let f of ge())for(let h of no(f,n)){let x=an(h);x&&u.set(h,x)}for(let f of Ds([...u.keys()])){let h=an(f);h&&u.set(f,h)}return u}function xx(u,f,h,x,y){if(u.length===0)return[];let S={...f,x:f.x+x.x,y:f.y+x.y},E={...h,x:h.x+x.x,y:h.y+x.y},A=Re(S),L=Re(E);return u.flatMap(U=>{let W=je(Re(U.page),A,-y),X={x:W.x-U.page.w/2,y:W.y-U.page.h/2,w:U.page.w,h:U.page.h},ie=Kd(X,U.rotation-y,S,E),re=je(Re(ie),L,y),xe=re.x-ie.w/2-U.offset.x,ue=re.y-ie.h/2-U.offset.y;return[{nodeId:U.id,prop:"x",from:U.page.x-U.offset.x,to:Z(xe)},{nodeId:U.id,prop:"y",from:U.page.y-U.offset.y,to:Z(ue)},{nodeId:U.id,prop:"w",from:U.page.w,to:Z(ie.w)},{nodeId:U.id,prop:"h",from:U.page.h,to:Z(ie.h)}]})}function Ds(u){return qh(n,u,M)}function gx(u,f,h){let x=[];for(let[y,S]of u)x.push({nodeId:y,prop:"x",from:S.x,to:S.x+f}),x.push({nodeId:y,prop:"y",from:S.y,to:S.y+h});return x}function Er(u){ma(Sa(pc(u),oe))}function ma(u,f=u){let h=y=>{let S=Y?.nodes.get(y);return S?{x:0,y:0,w:S.w,h:S.h}:void 0},x=Vd(oe,u,h);N=Vd(oe,f,h),C.update(x.length>0?Ae(oe,x).document:oe),ce()}function yx(){let u=Wt(ge().flatMap(y=>qe(y)??[]));if(!u)return null;let f=new Map,h=new Map,x=Ls();for(let y of[...x,...Ds(x)]){let S=kt(y),E=an(y);!S||!E||(f.set(y,S),h.set(y,{x:S.x-E.x,y:S.y-E.y}))}return f.size===0?null:{bounds:u,frames:f,offsets:h}}function bx(u,f){let h=wp(u.frames,u.bounds,f),x=[];for(let[y,S]of h){let E=u.frames.get(y),A=u.offsets.get(y);if(!E||!A)continue;let L=Wn(y),U=L===0?S:Kd(E,L,u.bounds,f);x.push({nodeId:y,prop:"x",from:E.x-A.x,to:U.x-A.x},{nodeId:y,prop:"y",from:E.y-A.y,to:U.y-A.y},{nodeId:y,prop:"w",from:E.w,to:U.w},{nodeId:y,prop:"h",from:E.h,to:U.h})}return x}function kk(u,f){let h=ox();if(!h)return!1;let x=ge().length===1&&h.length===1?h[0]:void 0,y=Wt(ge().flatMap(L=>qe(L)??[])),S=x!==void 0?kt(x):y;if(!S)return!1;let E=new Set(Ds(h)),A=[...h,...E].flatMap(L=>{let U=kt(L),W=an(L);return!U||!W?[]:[{id:L,frame:U,rotation:Wn(L),offset:{x:U.x-W.x,y:U.y-W.y},...E.has(L)?{follower:!0}:{}}]});return A.length===0?!1:(St(f),mt({kind:"rotate",pointerId:f,origin:u,centre:Re(S),targets:A}),!0)}function Sk(u,f,h){let x=yx();return x?(St(h),mt({kind:"scale",pointerId:h,origin:u,handle:f,...x}),!0):!1}function _k(u){let f=yx();if(!f)return;let h=oo(n,bx(f,u));if(h.length===0)return;let x=u.w!==f.bounds.w||u.h!==f.bounds.h;pe([...h,...fs(n,h,Xr(n),Pe(n))],x?"Resize":"Move")}function Ek(u,f,h){let x=bu(u),y=Ts();if(!x||!y)return!1;let S=wn(y,x.axis)?.gaps[x.index],E=ua(ge());return S===void 0||E.length===0?!1:(St(h),mt({kind:"space",pointerId:h,origin:f,axis:x.axis,spacer:u,layout:y,gap:S,parts:E}),!0)}function Mk(u,f){let h=u.axis==="x"?f.x-u.origin.x:f.y-u.origin.y,x=Math.max(0,u.gap+h);Er(hc(u.parts,u.axis,vu(u.layout,u.axis,x)))}function Ck(u,f){let h=Ts(),x=h?wn(h,u):void 0;if(!h||!x||x.gaps.length===0)return;let y=Sa(oo(n,hc(ua(ge()),u,vu(h,u,Math.max(0,f)))));y.length!==0&&pe([...y,...fs(n,y,Xr(n),Pe(n))],"Spacing")}function Ak(u){let f=Ts(),h=f?wn(f,u)?.gaps:void 0;return!h||h.length===0?null:pm(h)?h[0]??null:"mixed"}function hc(u,f,h){return u.map(x=>{let y=f==="x"?x.frame.x:x.frame.y;return{nodeId:x.node,prop:f,from:y,to:y+(h.get(x.member)??0)}})}function $k(u,f,h){let x=Ts();if(!x||!x.order.includes(u))return!1;let y=ua(ge()),S=x.items.find(E=>E.id===u)?.frame;return y.length===0||!S?!1:(St(h),mt({kind:"reorder",pointerId:h,id:u,layout:x,parts:y,grab:{x:f.x-S.x,y:f.y-S.y},to:x.order.indexOf(u),swap:!1}),!0)}function Ok(u,f,h){u.to=ym(u.layout,f),u.swap=h;let x=Tk(u),y=new Map(x);y.set(u.id,{x:f.x-u.grab.x,y:f.y-u.grab.y}),ma(pc(vx(u,y)),pc(vx(u,x)))}function Tk(u){let f=u.layout.order.indexOf(u.id);if(f===-1||u.to===f)return new Map;if(u.swap){let h=u.layout.order[u.to];return h===void 0?new Map:wm(u.layout,u.id,h)}return vm(u.layout,bm(u.layout.order,f,u.to))}function vx(u,f){let h=new Map(u.layout.items.map(y=>[y.id,y.frame])),x=[];for(let y of u.parts){let S=f.get(y.member),E=h.get(y.member);!S||!E||x.push({nodeId:y.node,prop:"x",from:y.frame.x,to:y.frame.x+(S.x-E.x)},{nodeId:y.node,prop:"y",from:y.frame.y,to:y.frame.y+(S.y-E.y)})}return x}function mt(u,f=[],h=n){Se=h,be=f,oe=n,v=u,N=[],q=Xr(n),Y=Pe(n),_e=dt,Ct=Lk(u)?Qh(n,Y,Pk(u)):[]}function Lk(u){return u.kind==="move"||u.kind==="resize"||u.kind==="scale"||u.kind==="create"||u.kind==="line"||u.kind==="end"}function Pk(u){return u.kind==="move"||u.kind==="scale"?new Set(ge()):u.kind==="resize"||u.kind==="end"?new Set([u.id]):new Set}function wo(u){return u.metaKey||u.ctrlKey?0:Zh/C.getCamera().zoom}function En(u){let f=[...be,...N];v=null,N=[],be=[],I=null,F=null,_e=dt,n=Se,C.update(n),pe(f,u),ce()}function Dk(){let u=N.length>0?Ae(oe,N).document:oe,f=Ds(ge()),h=new Set([...ge(),...f].flatMap(L=>wx(L,u))),x=[],y=new Map,S=(L,U,W)=>{let X=z(u.root,U);if(!X||!me(X))return;y.set(L,U),x.push({op:"move",id:L,parent:U,index:te(X).length});let ie={x:Yt(W).x-Yt(U).x,y:Yt(W).y-Yt(U).y};if(!(ie.x===0&&ie.y===0))for(let re of no(L,u)){let xe=an(re);xe&&(x.push({op:"set",id:re,prop:"x",value:Z(xe.x+ie.x)}),x.push({op:"set",id:re,prop:"y",value:Z(xe.y+ie.y)}))}};for(let L of ge()){if(Je(u,L)||Hn(u,L))continue;let U=z(u.root,L),W=Le(u.root,L);if(!U||!W)continue;let X=qe(L);if(!X)continue;let ie={x:X.x+X.w/2,y:X.y+X.h/2},re=Xn(ie,h)??n.root.id;re!==W.id&&S(L,re,W.id)}let E=Ye(u.root).links;for(let L of f){let U=[...E].find(([ie,re])=>re===L&&y.has(ie))?.[0],W=U===void 0?void 0:y.get(U),X=Le(u.root,L);W===void 0||!X||X.id===W||S(L,W,X.id)}if(x.length===0)return[];let A=Ae(u,x).document;return[...x,...ps(u,A,h)]}function wx(u,f){let h=z(f.root,u);if(!h)return[];let x=[];return de(h,y=>{x.push(y.id)}),x}function mc(){if(!v)return;v=null,N=[],I=null,F=null,_e=dt;let u=be.length>0;n=Se,be=[],u&&he(r.filter(f=>z(n.root,f))),C.update(n),ce()}let Nk=5,xa=8;function kx(u,f=n,h=C.getResolution()){let x=z(f.root,u),y=h.nodes.get(u);if(x?.type!=="vector"||!y)return;let S={x:y.absX,y:y.absY,w:Math.max(0,y.w),h:Math.max(0,y.h)};return{node:x,view:Ir(x.view,S.w,S.h),box:S}}function Ns(u,f=n,h=C.getResolution()){let x=kx(u,f,h);if(x)return Be(ar(x.node.d).contours,Fr(x.view,x.box))}function Yn(u,f,h,x=n,y=C.getResolution()){let S=kx(u,x,y);if(!S)return[];let{node:E,view:A,box:L}=S,U=Be(f,bl(A,L)),W=[],X=(We,Ot,Tt)=>{Ot!==Tt&&W.push({op:"set",id:u,prop:We,value:Ot})};X("d",ze(U),E.d);let ie=[E.x,E.y,E.w,E.h].every(We=>typeof We=="number"),re=Kt(U),xe=Kt(f);if(!h||!ie||!re||!xe)return W;let ue=L.x-E.x,De=L.y-E.y;return X("view",Pn(re),E.view),X("x",Z(xe.x-ue),E.x),X("y",Z(xe.y-De),E.y),X("w",Z(xe.w),E.w),X("h",Z(xe.h),E.h),W}function Mr(u){return z(n.root,u)?.type!=="vector"||!It(u)?!1:(ae&&_r("done"),J&&ga(),he([u]),H={id:u,picked:new Set},o!=="select"&&Mn("select"),Ft(null),ce(),!0)}function Rs(){H&&(H=null,ce())}function Rk(){if(J){let h=J.contours[J.contour],x=h?.anchors??[],y=x[x.length-1],S=x[0],E=J.hover,A=E!==null&&S!==void 0&&x.length>=2&&!h?.closed&&ko(S,E)<=xa;return{contours:J.contours,anchors:x.map((L,U)=>({key:it(J?.contour??0,U),at:L,selected:U===x.length-1})),handles:y?Pp(J.contours,new Set([it(J.contour,x.length-1)])):[],pending:y&&E&&!J.dragging&&!h?.closed?{from:y,...y.out?{c1:y.out}:{},to:E}:null,closeAt:A?S:null}}if(!H)return null;let u=Ns(H.id);if(!u)return null;let f=new Set(Tp(u,H.picked));return{contours:u,anchors:u.flatMap((h,x)=>h.anchors.map((y,S)=>({key:it(x,S),at:y,selected:f.has(it(x,S))}))),handles:Pp(u,f)}}function ko(u,f){return Math.hypot(u.x-f.x,u.y-f.y)*C.getCamera().zoom}function Ik(u,f,h,x){if(!H)return!1;let y=H.id,S=Ns(y);if(!S)return H=null,!1;u.preventDefault(),St(u.pointerId);let E=G.hitPath(f);if(E?.kind==="handle"){let L=kb(E.key),U=L?S[L.contour]?.anchors[L.index]:void 0;if(L&&U)return mt({kind:"pathHandle",pointerId:u.pointerId,id:y,start:S,contour:L.contour,index:L.index,side:L.side,smooth:Gd(U),last:S}),!0}if(E?.kind==="anchor")return u.altKey?(H.picked=new Set([E.key]),pe(Yn(y,Sb(S,E.key),!1),"Convert point"),!0):(u.shiftKey?H.picked.has(E.key)?H.picked.delete(E.key):H.picked.add(E.key):H.picked.has(E.key)||(H.picked=new Set([E.key])),mt({kind:"points",pointerId:u.pointerId,id:y,origin:h,start:S,keys:new Set(H.picked),lead:E.key,moved:!1,last:S}),ce(),!0);let A=vl(S,h);if(A&&A.distance*C.getCamera().zoom<=Nk){if(x>=2){let X=wl(S,A.contour,A.segment,A.t);return H.picked=new Set([it(A.contour,A.segment+1)]),pe(Yn(y,X,!1),"Add point"),!0}let L=S[A.contour],U=L.anchors[A.segment],W=L.anchors[(A.segment+1)%L.anchors.length];return mt({kind:"segment",pointerId:u.pointerId,id:y,origin:h,start:S,contour:A.contour,segment:A.segment,t:A.t,straight:!U?.out&&!W?.in,last:S}),!0}return mt({kind:"pointMarquee",pointerId:u.pointerId,origin:h,current:h,additive:u.shiftKey}),!0}function Fk(u,f,h,x){let y=Op(u.start,u.lead);if(!y||x===0)return{dx:f,dy:h};let S=y.x+f,E=y.y+h,A=x,L=x,U=f,W=h;return u.start.forEach((X,ie)=>X.anchors.forEach((re,xe)=>{u.keys.has(it(ie,xe))||(Math.abs(re.x-S)<A&&(A=Math.abs(re.x-S),U=re.x-y.x),Math.abs(re.y-E)<L&&(L=Math.abs(re.y-E),W=re.y-y.y))})),{dx:U,dy:W}}function Bk(u,f){if(!v)return!1;let h=(x,y)=>{Y&&ma(Yn(y,x,!1,oe,Y))};switch(v.kind){case"points":{let x=f;u.shiftKey&&(x=zi(v.origin,f));let y={dx:x.x-v.origin.x,dy:x.y-v.origin.y};if(!v.moved&&Math.hypot(y.dx,y.dy)*C.getCamera().zoom<jn)return!0;v.moved=!0;let{dx:S,dy:E}=u.shiftKey?y:Fk(v,y.dx,y.dy,wo(u));return v.last=Xd(v.start,v.keys,S,E),h(v.last,v.id),!0}case"pathHandle":{let x=v.start[v.contour]?.anchors[v.index],y=u.shiftKey&&x?zi(x,f):f;return v.last=qd(v.start,v.contour,v.index,v.side,y,{smooth:v.smooth,breakSmooth:u.altKey}),h(v.last,v.id),!0}case"segment":return v.last=Eb(v.start,v.contour,v.segment,v.t,f.x-v.origin.x,f.y-v.origin.y,v.straight),h(v.last,v.id),!0;case"pointMarquee":return v.current=f,ce(),!0;default:return!1}}function Vk(u){if(!v)return!1;switch(v.kind){case"points":case"pathHandle":case"segment":{let f=v.kind!=="points"||v.moved,h=v.kind==="points"?v.keys.size===1?"Move point":"Move points":v.kind==="pathHandle"?"Adjust curve":"Reshape";return N=f&&Y?Yn(v.id,v.last,!0,oe,Y):[],En(h),!0}case"pointMarquee":{let f=to(v.origin,v.current),h=v.additive;if(v=null,_e=dt,!H)return!0;let x=C.getCamera().zoom;if(f.w*x<jn&&f.h*x<jn){if(C.hitTest(u)===H.id)H.picked=new Set;else{Rs();let E=yo(u);he(E===null?[]:[E])}return ce(),!0}let y=Ns(H.id)??[],S=Lp(y).filter(E=>{let A=Op(y,E);return A!==void 0&&Mt(f,A.x,A.y)});return H.picked=new Set(h?[...H.picked,...S]:S),ce(),!0}default:return!1}}function Hk(u){if(!H)return!1;let f=H.id,h=u.metaKey||u.ctrlKey;if(u.key==="Escape"||u.key==="Enter"&&!h)return u.preventDefault(),v?mc():Rs(),!0;let x=Ns(f);if(!x)return!1;let y=new Set(Tp(x,H.picked));if(u.key==="Delete"||u.key==="Backspace"){if(u.preventDefault(),y.size===0)return!0;let A=_b(x,y);return H.picked=new Set,A.length===0?(Rs(),Mo(),!0):(pe(Yn(f,A,!0),y.size===1?"Delete point":"Delete points"),!0)}let S=u.shiftKey?Kv:jv,E=Wv[u.key];return E&&!h?(u.preventDefault(),y.size>0&&pe(Yn(f,Xd(x,y,E[0]*S,E[1]*S),!0),"Nudge points"),!0):h&&u.key.toLowerCase()==="a"?(u.preventDefault(),H.picked=new Set(Lp(x)),ce(),!0):h&&!u.shiftKey&&u.code==="KeyJ"?(u.preventDefault(),pe(Yn(f,Mb(x,y),!0),"Close path"),!0):!1}function Uk(u,f){if(u.preventDefault(),St(u.pointerId),!J){J=zk(f)??{contours:[{closed:!1,anchors:[{x:f.x,y:f.y}]}],contour:0,target:null,hover:null,dragging:null};let E=J.contours[J.contour];J.dragging={pointerId:u.pointerId,index:E.anchors.length-1,origin:f},ce();return}let h=J.contours[J.contour],x=h.anchors[0],y=h.anchors[h.anchors.length-1];if(x&&h.anchors.length>=2&&ko(x,f)<=xa){J.contours[J.contour]={...h,closed:!0},J.dragging={pointerId:u.pointerId,index:0,origin:x},ce();return}let S=u.shiftKey&&y?zi(y,f):f;J.contours[J.contour]={...h,anchors:[...h.anchors,{x:S.x,y:S.y}]},J.dragging={pointerId:u.pointerId,index:h.anchors.length,origin:S},ce()}function zk(u){let f=r.length===1?r[0]:null;if(f===null||!It(f))return null;let h=Ns(f);if(!h)return null;for(let x=0;x<h.length;x+=1){let y=h[x];if(y.closed||y.anchors.length<1)continue;let S=y.anchors[0],E=y.anchors[y.anchors.length-1],A=ko(E,u)<=xa,L=!A&&ko(S,u)<=xa;if(!A&&!L)continue;let U=[...h];return L&&(U[x]=Cb(y)),{contours:U,contour:x,target:f,hover:null,dragging:null}}return null}function jk(u,f){if(!J)return;let h=J.dragging;if(!h||h.pointerId!==u.pointerId){let L=J.contours[J.contour],U=L?.anchors[L.anchors.length-1];J.hover=u.shiftKey&&U?zi(U,f):f,ce();return}if(ko(h.origin,f)<jn)return;let x=J.contours[J.contour],y=x.anchors[h.index];if(!y)return;let S={x:2*y.x-f.x,y:2*y.y-f.y},E=u.altKey?y.in:S,A=[...x.anchors];A[h.index]={x:y.x,y:y.y,...E?{in:E}:{},out:f},J.contours[J.contour]={...x,anchors:A},ce()}function Kk(u){!J?.dragging||J.dragging.pointerId!==u.pointerId||(Bc(u.pointerId),J.dragging=null,J.contours[J.contour]?.closed?ga():ce())}function ga(){if(!J)return;let u=J;J=null;let f=u.contours[u.contour];if(!f||f.anchors.length<2){ce();return}if(u.target!==null){pe(Yn(u.target,u.contours,!0),"Extend path"),Mn("select"),Mr(u.target);return}let h=Kt(u.contours),x=f.anchors[0];if(!h)return;let y=Jn(Xn(x)??_??n.root.id),S=z(n.root,y)??n.root,E=Yt(y),A=Be(u.contours,U=>({x:U.x-h.x,y:U.y-h.y})),L=pn(n.root,"path");pe([{op:"insert",parent:y,index:te(S).length,node:To({id:L,x:Z(h.x-E.x),y:Z(h.y-E.y),w:Z(h.w),h:Z(h.h),view:Pn({x:0,y:0,w:h.w,h:h.h}),d:ze(A),fill:"none",stroke:t.defaultStroke??"#1f2937",strokeWidth:2,cap:"round",join:"round"})}],"Draw path"),Mn("select"),Mr(L)}function xc(u=ge()){let f=[],h=[];for(let x of u){let y=z(n.root,x),S=Le(n.root,x),E=wt(x);if(!y||!S||!E||y.type!=="rect"&&y.type!=="ellipse"||Je(n,x))continue;let A=Math.max(0,E.w),L=Math.max(0,E.h),U=y.type==="rect"?Dn(A,L,Zn(E.values)):Vr(A,L),W=To({id:x,...y.name===void 0?{}:{name:y.name},x:y.x,y:y.y,w:y.w,h:y.h,view:Pn({x:0,y:0,w:A,h:L}),d:ze(U),...y.fill===void 0?{}:{fill:y.fill},...y.stroke===void 0?{}:{stroke:y.stroke},...y.strokeWidth===void 0?{}:{strokeWidth:y.strokeWidth},...y.dash===void 0?{}:{dash:y.dash},...y.strokeAlign===void 0?{}:{strokeAlign:y.strokeAlign},...y.cap===void 0?{}:{cap:y.cap},...y.opacity===void 0?{}:{opacity:y.opacity},...y.hidden?{hidden:!0}:{},...y.locked?{locked:!0}:{}}),X=S.children.findIndex(ie=>ie.id===x);f.push({op:"remove",id:x},{op:"insert",parent:S.id,index:X,node:W}),h.push(x)}h.length!==0&&(pe(f,h.length===1?"Convert to vector":`Convert ${h.length} to vector`),he(h),h.length===1&&Mr(h[0]))}function gc(){return r.filter(u=>u!==n.root.id)}function yc(u=gc()){return Jo(n,u)}function Sx(u=gc()){return t.merge!==void 0&&yc(u)===void 0}function bc(u,f=gc()){if(!t.merge)return null;let h;try{h=t.merge(n,{verb:u,ids:f})}catch(x){h={ok:!1,...Zo(x)}}return h.ok?(_=null,pe(h.ops,`${Yo[u]} ${f.length} shapes`),he([h.id]),h.id):(ke("notice",{message:lu(h)}),null)}function Is(u=r){return Vb(n,u)}function vc(u=r){let f=Is(u);return f.ok?(pe(Hb(f.pair),"Mask with shape"),he([f.pair.image]),!0):(ke("notice",{message:f.why}),!1)}function ya(u=r){return Ub(n,u)}function wc(u=r){let f=ya(u);return f.length===0?!1:(M!==null&&f.includes(M)&&(M=null),pe(Gh(f),f.length===1?"Release mask":"Release masks"),!0)}function ba(u){return!Ye(n.root).links.has(u)||!It(u)?!1:(he([u]),M=u,ce(),ke("selection",r),!0)}function kc(){return M===null?!1:(M=null,ce(),ke("selection",r),!0)}function Gk(){let u=r.flatMap(y=>z(n.root,y)??[]),f=u.length===2&&u.some(st),h=ya(),x=r.length===1?r[0]:null;return{offer:f&&!(h.length>0&&!Is().ok),can:Is().ok,release:h.length>0,crop:x!==null&&M!==x&&Ye(n.root).links.has(x)}}function qk(){let u=Is(),f=ya(),h=u.ok?z(n.root,u.pair.image):void 0,x=u.ok&&h!==void 0&&st(h)&&h.mask===u.pair.shape;u.ok&&!x?vc():f.length>0?wc():u.ok||ke("notice",{message:u.why})}function Wk(){let u=C.getScene(),f=[],h=new Set;for(let x of u.items){let y=x.mask;if(y===void 0||!r.includes(x.id)&&!r.includes(y.id))continue;let S=`${x.id}\0${y.id}`;if(h.has(S))continue;h.add(S);let E=M===x.id,A=E&&x.kind==="image"&&x.href!==void 0?{href:x.href,frame:{x:x.x,y:x.y,w:x.w,h:x.h},rotation:x.rotation,aspect:Q2[x.fit]}:void 0;f.push({contours:y.contours,cropping:E,...A===void 0?{}:{ghost:A}})}return f}function _x(){return ge().filter(u=>{let f=z(n.root,u)?.type;return f==="rect"||f==="ellipse"}).length}let Xk=450,Ex=4,Fs={x:0,y:0,at:0,count:0};function Yk(u){let f=Date.now(),x=Math.abs(u.x-Fs.x)<=Ex&&Math.abs(u.y-Fs.y)<=Ex&&f-Fs.at<=Xk?Fs.count+1:1;return Fs={x:u.x,y:u.y,at:f,count:x},x}let Mx=u=>{if(w=u.pointerType==="touch",w){g.add(u.pointerId),b=g.size===1?{pointerId:u.pointerId,screen:C.pointerPoint(u)}:null;return}if(u.button!==0||m)return;let f=C.pointerPoint(u),h=C.screenToDocument(f);Rt=h;let x=Yk(f);if(ae){let L=lc(h),U=C.itemOf(ae.id),W=bo(ae.id,h);if(L&&U&&Mt(U,W.x,W.y)){u.preventDefault(),St(u.pointerId),Oe=!0,x>=3?ae.selectLineAt(L):x===2?ae.selectWordAt(L):ae.pointTo(L,u.shiftKey),se.focus({preventScroll:!0}),ce();return}_r("blur")}if(e.focus({preventScroll:!0}),o==="select"&&(u.metaKey||u.ctrlKey)&&Os(h)){u.preventDefault();return}if(o==="pen"){Uk(u,h);return}if(H&&o==="select"&&Ik(u,f,bo(H.id,h),x))return;if(o==="line"){u.preventDefault(),St(u.pointerId);let L=fa(h,null,u),U=L?.at??h;mt({kind:"line",pointerId:u.pointerId,origin:U,from:L,current:U,to:null}),ce();return}if(o!=="select"){u.preventDefault(),St(u.pointerId),mt({kind:"create",pointerId:u.pointerId,origin:h,current:h}),ce();return}let y=ge().length===1?ge()[0]:null;if(y!==null&&lk(y,f,u.pointerId)){u.preventDefault();return}if(y!==null){let L=z(n.root,y),U=G.hitAdjuster(f),W=L&&U?eu(L,U.id):void 0,X=W?qe(y):void 0;if(L&&W&&X&&U){u.preventDefault(),St(u.pointerId);let ue=W.propOf(L,U.id,u.altKey);mt({kind:"adjust",pointerId:u.pointerId,id:y,adjuster:W,handleId:U.id,prop:ue,frame:X,from:dx(y,ue)});return}let ie=L&&!me(L)?G.hitHandle(f):null,re=ie?an(y):void 0,xe=re?kt(y):void 0;if(ie&&re&&xe){u.preventDefault(),St(u.pointerId),mt({kind:"resize",pointerId:u.pointerId,origin:h,id:y,handle:ie.handle,frame:re,offset:{x:xe.x-re.x,y:xe.y-re.y},rotation:Wn(y),riders:Ds([y]).flatMap(ue=>{let De=kt(ue),We=an(ue);return!De||!We?[]:[{id:ue,page:De,offset:{x:De.x-We.x,y:De.y-We.y},rotation:Wn(ue)}]})});return}}let S=ge().length>0?G.hitHandle(f):null;if(S&&Sk(h,S.handle,u.pointerId)){u.preventDefault();return}let E=G.hitPageLabel(f);if(E!==null){if(u.preventDefault(),_=null,u.shiftKey){he(r.includes(E)?r.filter(L=>L!==E):[...r,E]);return}if(r.includes(E)||he([E]),x===2){gk(E);return}Sc(h,u.pointerId,u.altKey);return}if(ge().length>0&&G.hitRotate(f)!==null&&kk(h,u.pointerId)){u.preventDefault();return}if(ge().length>1){let L=G.hitRing(f);if(L!==null&&$k(L,h,u.pointerId)){u.preventDefault();return}let U=G.hitSpacer(f);if(U!==null&&Ek(U,h,u.pointerId)){u.preventDefault();return}}if(M!==null&&!u.shiftKey){let L=kt(M),U=bo(M,h);if(L&&Mt(L,U.x,U.y)){Sc(h,u.pointerId,!1)&&u.preventDefault();return}}let A=yo(h);if(A===null){u.preventDefault(),St(u.pointerId),_=null,u.shiftKey||he([]),mt({kind:"marquee",pointerId:u.pointerId,origin:h,current:h});return}_!==null&&!Ke(n.root,A).includes(_)&&(_=null),u.shiftKey?he(r.includes(A)?r.filter(L=>L!==A):[...r,A]):r.includes(A)||he([A]),Sc(h,u.pointerId,u.altKey)&&u.preventDefault()};function Jk(u){ae&&_r("blur");let f=yo(C.screenToDocument(u));f!==null&&_!==null&&!Ke(n.root,f).includes(_)&&(_=null),f===null&&(_=null),he(f===null?[]:[f])}function Sc(u,f,h){let x=n,y=[];if(h){let E=eg({x:0,y:0});E&&(y=E.ops,n=Ae(n,y).document,C.update(n),he(E.ids))}let S=mx();return S.size===0?(n=x,C.update(n),!1):(St(f),mt({kind:"move",pointerId:f,origin:u,frames:S,bounds:Wt(ge().flatMap(E=>qe(E)??[]))},y,x),!0)}let Cx=u=>{let f=C.pointerPoint(u);if(u.pointerType==="touch"){b?.pointerId===u.pointerId&&Math.hypot(b.screen.x-f.x,b.screen.y-f.y)>oA&&(b=null);return}if(Rt=C.screenToDocument(f),Oe&&ae){let x=lc(Rt);x&&ae.pointTo(x,!0);return}if(J&&o==="pen"){jk(u,Rt);return}if(!v){a1(f);return}if(v.pointerId!==u.pointerId)return;let h=Rt;if(!Bk(u,H?bo(H.id,h):h))switch(v.kind){case"move":{let x=h.x-v.origin.x,y=h.y-v.origin.y;if(v.bounds){let S={...v.bounds,x:v.bounds.x+x,y:v.bounds.y+y};_e=em(S,Ct,wo(u)),x+=_e.dx,y+=_e.dy}Er(gx(v.frames,x,y));return}case"resize":{let{id:x,handle:y,frame:S,origin:E,offset:A,rotation:L}=v,U=h.x-E.x,W=h.y-E.y;if(L!==0){_e=dt;let re=bb(S,y,U,W,L);Er([...Fd(S,re).map(xe=>({nodeId:x,prop:xe,from:S[xe],to:re[xe]})),...xx(v.riders,S,re,A,L)]);return}let X=Vn(S,y,U,W);_e=au({...X,x:X.x+A.x,y:X.y+A.y},y,Ct,wo(u)),U+=_e.dx,W+=_e.dy;let ie=Vn(S,y,U,W);Er([...Fd(S,ie).map(re=>({nodeId:x,prop:re,from:S[re],to:ie[re]})),...xx(v.riders,S,ie,A,0)]);return}case"scale":{let{handle:x,bounds:y,origin:S,frames:E,offsets:A}=v,L=h.x-S.x,U=h.y-S.y,W=Vn(y,x,L,U);_e=au(W,x,Ct,wo(u)),L+=_e.dx,U+=_e.dy,Er(bx({bounds:y,frames:E,offsets:A},Vn(y,x,L,U)));return}case"space":Mk(v,h);return;case"reorder":Ok(v,h,u.metaKey||u.ctrlKey);return;case"rotate":{let{centre:x,origin:y,targets:S}=v,E=S[0],A=vb(x,y,h,E?.rotation??0,u.shiftKey?U2:void 0);F=Wo((E?.rotation??0)+A);let L=[],U=S.filter(W=>W.follower!==!0).length===1;for(let W of wb(S,x,A)){let X=S.find(ie=>ie.id===W.id);X&&(L.push({nodeId:W.id,prop:"rotation",from:X.rotation,to:W.rotation}),!(U&&X.follower!==!0)&&L.push({nodeId:W.id,prop:"x",from:X.frame.x-X.offset.x,to:Z(W.frame.x-X.offset.x)},{nodeId:W.id,prop:"y",from:X.frame.y-X.offset.y,to:Z(W.frame.y-X.offset.y)}))}Er(L);return}case"adjust":{let x=v.adjuster.valueAt(v.frame,v.handleId,h);I=x,Er([{nodeId:v.id,prop:v.prop,from:v.from,to:x}]);return}case"line":{v.to=fa(h,null,u),v.to&&(_e=dt),v.current=v.to?.at??ux(h,v.origin,u),ce();return}case"end":{v.anchor=fa(h,v.id,u),v.anchor&&(_e=dt),v.current=v.anchor?.at??ux(h,v.fixed,u),ma(ck(v.id,v.end,v.anchor,v.current));return}case"create":{_e=du(h,Ct,wo(u));let x={x:h.x+_e.dx,y:h.y+_e.dy};v.current=u.shiftKey&&o!=="text"?G2(v.origin,x):x,ce();return}case"marquee":{v.current=h,ce();return}}},va=u=>{if(u.pointerType==="touch"){if(g.delete(u.pointerId),b?.pointerId!==u.pointerId)return;b=null,u.type==="pointerup"&&Jk(C.pointerPoint(u));return}if(Oe){Oe=!1,Bc(u.pointerId),se.focus({preventScroll:!0});return}if(J){Kk(u);return}if(!v||v.pointerId!==u.pointerId)return;Bc(u.pointerId);let f=C.screenToDocument(C.pointerPoint(u));if(!Vk(H?bo(H.id,f):f))switch(v.kind){case"line":{let{origin:h,current:x,from:y,to:S}=v;v=null,_e=dt,ce(),fk(h,x,y,S);return}case"end":En(v.anchor?"Attach end":"Move end");return;case"create":{let h=to(v.origin,v.current),x=o==="text"?"text":o==="frame"?"frame":o==="ellipse"?"ellipse":"rect";v=null,_e=dt,ce();let y=h.w<jn||h.h<jn;if(y&&x!=="text")return;let S=y?{x:h.x,y:h.y,w:qv.w,h:qv.h}:h,E=Jn(Xn({x:S.x,y:S.y})??_??n.root.id),A=z(n.root,E)??n.root,L=Yt(E),U={x:Math.round(S.x-L.x),y:Math.round(S.y-L.y),w:Math.round(S.w),h:Math.round(S.h)},W=pn(n.root,x);pe([{op:"insert",parent:E,index:te(A).length,node:x==="text"?il({...U,id:W,content:""}):x==="frame"?Va({...U,id:W,background:Uv,children:[]}):x==="ellipse"?tl({...U,id:W,fill:t.defaultFill??"#3b82f6"}):sl({...U,id:W,fill:t.defaultFill??"#3b82f6"})}],K2[x]),he([W]),Mn("select"),x==="text"&&Ps(W);return}case"marquee":{let h=to(v.origin,v.current),x=u.shiftKey;if(v=null,_e=dt,h.w>=jn||h.h>=jn){let y=R1(h);he(x?[...new Set([...r,...y])]:y)}ce();return}case"move":{let h=Dk();h.length>0&&(N=[...N,...h]),En(be.length>0?"Duplicate":"Move");return}case"resize":En("Resize");return;case"scale":En(r.length===1?"Resize group":`Resize ${r.length} elements`);return;case"space":En("Spacing");return;case"reorder":En(v.swap?"Swap":"Reorder");return;case"adjust":En("Corner radius");return;case"rotate":En("Rotate");return}},wa=null;function Zk(u,f,h){let x=mx();if(x.size===0)return;let y=hx(n,gx(x,u,f),Xr(n),Pe(n));if(y.length===0)return;let S="Nudge",E=r.join(`
3098
+ `),A=h&&wa!==null&&wa.selection===E&&D.top===wa.entry;ht===null?(ht={label:S,started:A},pe(y,S),ix()):pe(y,S),wa=D.top?{entry:D.top,selection:E}:null}function Ax(){C.fitToContent()}function $x(){C.setCamera({...C.getCamera(),zoom:1})}function Qk(){let u=Wt(r.flatMap(h=>qe(h)??[]));if(!u)return;let f=e.getBoundingClientRect();C.setCamera(bn({x:u.x,y:u.y,width:u.w,height:u.h},{width:f.width||u.w,height:f.height||u.h},z2))}function Ox(u,f){if((u.metaKey||u.ctrlKey)&&!u.altKey){let x=u.code==="Equal"?Gv:u.code==="Minus"?1/Gv:null;return x!==null?(u.preventDefault(),C.zoomBy(x),!0):u.code==="Digit0"&&!u.shiftKey?(u.preventDefault(),$x(),!0):!1}return f||!u.shiftKey||u.altKey?!1:u.code==="Digit1"?(u.preventDefault(),Ax(),!0):u.code==="Digit2"?r.length===0?!1:(u.preventDefault(),Qk(),!0):!1}function Tx(u){return u.ctrlKey&&!u.metaKey&&!u.altKey&&!u.shiftKey&&u.key.toLowerCase()==="y"}function Lx(u){return Ke(n.root,u).slice(0,-1).reverse().find(h=>{let x=z(n.root,h);return x!==void 0&&Bs(x)})??null}function e1(){if(r.length!==1)return!1;let u=z(n.root,r[0]);if(!u||!(Bs(u)||u.type==="frame"))return!1;let f=te(u).map(h=>h.id).filter(It);return f.length===0?!1:(Bs(u)&&Lc(u.id),he(f),!0)}function t1(){let u=r[0];if(u===void 0)return!1;let f=Le(n.root,u);return!f||f.id===n.root.id?!1:f.id===_?(Pc(),!0):(_=Lx(f.id),he([f.id]),!0)}function n1(u){let f=u===1?r[r.length-1]:r[0];if(f===void 0)return!1;let h=Le(n.root,f);if(!h)return!1;let x=te(h).map(E=>E.id).filter(E=>E===f||It(E)),y=x.indexOf(f),S=x[(y+u+x.length)%x.length];return S!==void 0&&he([S]),!0}let Px=u=>{if(Lu(u.target))return;if(ae){let y=(u.metaKey||u.ctrlKey)&&u.key.toLowerCase()==="z";if(y||Tx(u)){u.preventDefault(),ae.breakBurst(),u.shiftKey||!y?Hs():Vs();return}Ox(u,!0);return}if(J&&(u.key==="Enter"||u.key==="Escape")){u.preventDefault(),ga();return}if(Hk(u))return;if((u.metaKey||u.ctrlKey)&&u.shiftKey&&u.code==="KeyO"){if(_x()===0)return;u.preventDefault(),xc();return}if(u.key==="Enter"&&u.shiftKey&&!Ss(u)){t1()&&u.preventDefault();return}if(u.key==="Enter"&&!Ss(u)&&r.length===1){let y=r[0];if(z(n.root,y)?.type==="vector"&&Mr(y)){u.preventDefault();return}}if(u.key==="Enter"&&!Ss(u)&&r.length===1){let y=r[0];if(z(n.root,y)?.type==="text"){u.preventDefault(),Ps(y);return}}if(u.key==="Enter"&&!Ss(u)){if(kc()){u.preventDefault();return}let y=r.length===1?r[0]:null;if(y!==null&&ba(y)){u.preventDefault();return}}if(u.key==="Enter"&&!Ss(u)){e1()&&u.preventDefault();return}if(u.key==="Tab"&&!Ss(u)){n1(u.shiftKey?-1:1)&&u.preventDefault();return}if(u.code==="Space"&&!m){m=!0,xt(at("grab"));return}let f=u.metaKey||u.ctrlKey;if(f&&u.key.toLowerCase()==="z"){u.preventDefault(),u.shiftKey?Hs():Vs();return}if(Tx(u)){u.preventDefault(),Hs();return}if(Ox(u,!1))return;if(f&&u.shiftKey&&!u.altKey&&u.code==="KeyL"){if(!R.lock||r.length===0)return;u.preventDefault(),Eo(r,"locked");return}if(f&&u.shiftKey&&!u.altKey&&u.code==="KeyH"){if(!R.hide||r.length===0)return;u.preventDefault(),Eo(r,"hidden");return}if(f&&u.altKey&&!u.shiftKey&&u.code==="KeyK"){if(!Vi(n,r))return;u.preventDefault(),Rc();return}if(f&&u.altKey&&!u.shiftKey&&u.code==="KeyM"&&!u.getModifierState("AltGraph")){if(r.length===0)return;u.preventDefault(),qk();return}if(f&&u.altKey&&!u.shiftKey&&u.code==="KeyB"){if(!r.some(y=>z(n.root,y)?.type==="instance"))return;u.preventDefault(),Ic();return}if(f&&u.key.toLowerCase()==="g"){u.preventDefault(),u.shiftKey?Oc():$c();return}if(f&&u.key.toLowerCase()==="a"){u.preventDefault(),Dc();return}if(f&&!u.altKey&&u.key.toLowerCase()==="d"){u.preventDefault(),Cc();return}if(u.altKey){let y=u.shiftKey&&!f?X2[u.code]:void 0;if(y&&t.merge){u.preventDefault();let A=yc();A?ke("notice",{message:lu(A)}):bc(y);return}let S=q2[u.code];if(S&&!f){u.preventDefault(),Yx(S);return}let E=W2[u.code];if(E&&u.ctrlKey){u.preventDefault(),Zx(E);return}}if(u.key==="]"||u.key==="["){if(r.length===0)return;u.preventDefault();let y=u.key==="]";Tc(f?y?"front":"back":y?"forward":"backward");return}if(u.key==="Escape"){if(v)mc();else{if(kc())return;_!==null?Pc():he([])}return}if(u.key==="Delete"||u.key==="Backspace"){if(r.length===0)return;u.preventDefault(),Mo();return}let h=Wv[u.key];if(h&&!f&&!u.altKey){if(r.length===0||(u.preventDefault(),v||J))return;let y=u.shiftKey?Kv:jv;Zk(h[0]*y,h[1]*y,u.repeat);return}let x=f||u.altKey?void 0:Lm[u.key.toLowerCase()];x&&Mn(x)};function Dx(){if(!ae)return null;let u=z(n.root,ae.id);if(u?.type!=="text")return null;let{anchor:f,head:h}=ae.getSelection();return f===h?null:lo(km(u.content,f,h))}let Nx=u=>{if(Lu(u.target))return;let f=Dx()??So();f!==null&&(u.preventDefault(),u.clipboardData?.setData("text/plain",f))},Rx=u=>{if(Lu(u.target))return;let f=Dx();if(f!==null&&ae){u.preventDefault(),u.clipboardData?.setData("text/plain",f);let{anchor:x,head:y}=ae.getSelection();ae.breakBurst(),ae.setSelection(x,y),ae.handleInput({inputType:"deleteByCut",data:null});return}let h=So();h!==null&&(u.preventDefault(),u.clipboardData?.setData("text/plain",h),Mo())},Ix=u=>{if(Lu(u.target))return;u.preventDefault();let f=Dp(u.clipboardData);if(f&&!ae){let x=w1();x?Mc(x,f):ng(f,Rt??void 0);return}let h=u.clipboardData?.getData("text/plain")||void 0;if(ae&&h!==void 0){ae.handleInput({inputType:"insertFromPaste",data:h});return}Ec(h)},Fx=u=>{u.code==="Space"&&(m=!1,xt(at(cc())))},Bx=u=>{if(!fe)return;u.preventDefault(),v&&mc();let f=C.pointerPoint(u),h=C.screenToDocument(f),x=yo(h),y=r1(h),S=C.hitTest(h),E=S!==null&&r.some(L=>Ke(n.root,S).includes(L));x===null?E||he([]):r.includes(x)||he([x]);let A=(t.menuExtras?.(r)??[]).map(L=>"separator"in L?L:{...L,id:`${Pm}${L.id}`});fe.open(f,sm(o1(y),A))};function r1(u){let{locked:f}=$t(),h=[];for(let x of[...C.getScene().items].reverse()){if(!f.has(x.id)||!C.hitTest(u,S=>S===x.id))continue;let y=js(n.root,x.id,"locked");y!==void 0&&!h.includes(y)&&h.push(y)}return h}function o1(u=[]){let f=r.length===1?z(n.root,r[0]):void 0,h=[];if(f){let x=f;for(let y of Vt(f)){let S=x[y];S===void 0||!ve(S)||md(S).kind!=="literal"&&h.push({prop:y,source:`=${S.expr}`})}}return{count:r.length,hasGroup:r.some(x=>{let y=z(n.root,x);return y!==void 0&&Ne(y)}),canPaste:Dm!==null,isText:r.length===1&&z(n.root,r[0])?.type==="text",isVector:ge().length===1&&z(n.root,ge()[0])?.type==="vector",convertible:_x(),...t.merge===void 0?{}:{mergeable:Sx()},mask:Gk(),bound:h,lock:R.lock?r.every(x=>$t().locked.has(x))?"unlock":"lock":null,hide:R.hide?r.every(x=>$t().hidden.has(x))?"show":"hide":null,locksHere:u,anyLocked:Nc("locked").length>0,hiddenCount:Nc("hidden").length,components:s1()}}function s1(){let u=r.length===1?r[0]:void 0,f=u===void 0?void 0:ug(u),h=f===void 0?void 0:z(n.root,f),x=0;if(u!==void 0&&f!==void 0&&h?.type==="instance"){let y=h.overrides??{};x=u===f?Object.keys(y).length:y[u.slice(f.length+1)]===void 0?0:1}return{create:Vi(n,r),instance:h?.type==="instance"&&u===f,part:f!==void 0&&u!==f,component:u!==void 0&&Hn(n,u),overrides:x,uses:Ud(n,r.filter(y=>Hn(n,y)))}}function i1(u){if(e.focus({preventScroll:!0}),u.startsWith(Pm)){t.onMenuCommand?.(u.slice(Pm.length),[...r]);return}if(u.startsWith("unlock:")){_o([u.slice(7)],"locked",!1);return}if(u.startsWith("detach:")){let f=u.slice(7),h=r[0];h!==void 0&&hg(h,f);return}switch(u){case"copy":So();return;case"cut":tg();return;case"editText":{let f=r[0];f!==void 0&&Ps(f);return}case"editPoints":{let f=r[0];f!==void 0&&Mr(f);return}case"toVector":return xc();case"mask":vc();return;case"releaseMask":wc();return;case"crop":r.length===1&&ba(r[0]);return;case"merge:union":case"merge:subtract":case"merge:intersect":case"merge:exclude":bc(u.slice(6));return;case"duplicate":return Cc();case"paste":return Ec();case"group":return $c();case"ungroup":return Oc();case"createComponent":Rc();return;case"detachInstance":return Ic();case"goToComponent":{let f=r[0];f!==void 0&&lg(f);return}case"resetOverrides":{let f=r[0];f!==void 0&&cg(f);return}case"placeInstance":{let f=r[0];f!==void 0&&Fc(f);return}case"front":case"forward":case"backward":case"back":return Tc(u);case"delete":return Mo();case"selectAll":return Dc();case"toggleLock":return Eo(r,"locked");case"toggleHidden":return Eo(r,"hidden");case"unlockAll":return Ma("locked");case"showAll":return Ma("hidden");case"fit":return Ax();case"zoom100":return $x()}}let Vx=u=>{if(w||o!=="select"||m||H)return;let f=C.screenToDocument(C.pointerPoint(u)),h=C.hitTest(f,A=>!$t().locked.has(A));if(h===null)return;let x=Ea().find(A=>A.id===h);if(x){u.preventDefault(),k1(x);return}let y=z(n.root,h);if(y?.type==="text"){u.preventDefault(),Ps(h,f);return}if(y?.type==="vector"){u.preventDefault(),Mr(h);return}if(yo(f)===h&&ba(h)){u.preventDefault();return}let S=Ke(n.root,h),E=_===null?1:S.indexOf(_)+1;for(let A=Math.max(E,1);A<S.length;A+=1){let L=S[A];if(L===void 0)break;let U=z(n.root,L);if(!(!U||!Bs(U))){u.preventDefault(),Lc(L),he([S[A+1]??L]);return}}},Hx=u=>Array.from(u.dataTransfer?.types??[]).includes("Files"),Ux=()=>t.importImage!==void 0||t.importAudio!==void 0||t.importVideo!==void 0,zx=u=>Array.from(u.dataTransfer?.types??[]).includes(Pu),jx=u=>{if(zx(u)){u.preventDefault(),u.dataTransfer&&(u.dataTransfer.dropEffect="copy");return}if(!Hx(u)||!Ux())return;u.preventDefault(),u.dataTransfer&&(u.dataTransfer.dropEffect="copy");let f=C.screenToDocument(C.pointerPoint(u)),h=og(f)?.id??null;h!==l&&(l=h,ce())},Kx=u=>{u.relatedTarget instanceof Node&&e.contains(u.relatedTarget)||l!==null&&(l=null,ce())},Gx=u=>{if(zx(u)){u.preventDefault();let A=u.dataTransfer?.getData(Pu)??"";e.focus({preventScroll:!0}),Fc(A,C.screenToDocument(C.pointerPoint(u)));return}if(!Hx(u)||!Ux())return;u.preventDefault();let f=C.screenToDocument(C.pointerPoint(u)),h=og(f);l=null,ce();let x=Array.from(u.dataTransfer?.files??[]),y=x.find(Db);if(y&&t.importAudio){let A=Xn(f),L=A===null?void 0:Ut(n).get(A),U=Jd(n),W=L!==void 0&&U.includes(L)?L:Zd(n,r,null)??L??null;W!==null&&rg(y,W);return}let S=x.find($b);if(S&&t.importVideo){y1(S,f,v1(f));return}if(!t.importImage)return;let E=x.find(A=>A.type.startsWith("image/"));E&&(h?Mc(h,E):ng(E,f))},qx=()=>{Rt=null,d=null,!v&&(s===null&&Q===null&&Te===null||(s=null,Q=null,Te=null,ce()))};function Wx(){let u=ge().length===1?ge()[0]:void 0,f=u===void 0?void 0:z(n.root,u);return u!==void 0&&f&&!me(f)?Wn(u):0}function a1(u){if(m){xt(at("grab"));return}if(H){Ft(null),xt(at("arrow"));return}if(o!=="select"){if(Ft(null),_c(null),ka(null),xt(at(o==="text"?"text":"crosshair")),o==="line"||i!==null){let S=o==="line"?fa(C.screenToDocument(u),null,rA):null;(S?.at.x!==i?.at.x||S?.at.y!==i?.at.y)&&(i=S,ce())}return}let f=ge().length===1?ge()[0]:null;if(f!==null){let S=G.hitAdjuster(u);if(S){let E=z(n.root,f),A=E?eu(E,S.id):void 0;Ft(null);let L=A&&E?A.propOf(E,S.id,!1):void 0;_c(L===void 0?null:{id:S.id,prop:L}),xt(at("radius",{badge:L===void 0?"none":ac(f,[L])}));return}_c(null)}if(ge().length>0){let S=G.hitHandle(u);if(S){Ft(null);let L=Id(S.handle);xt(at("resize",{angle:mp(S.handle)+Wx(),badge:sx(Ls(),L)}));return}let E=G.hitPageLabel(u);if(E!==null){Ft(E),xt(at("arrow"));return}let A=G.hitRotate(u);if(A!==null){Ft(null),xt(at("rotate",{angle:j2[A]+Wx()}));return}}let h=G.hitPageLabel(u);if(h!==null){d=null,Ft(h),xt(at("arrow"));return}if(ge().length>1){if(G.hitRing(u)!==null){Ft(null),ka(null),xt(at("grab"));return}let E=G.hitSpacer(u),A=E===null?null:bu(E);if(E!==null&&A){Ft(null),ka(E),xt(at("resize",{angle:A.axis==="x"?0:90,badge:sx(Ls(),[A.axis])}));return}ka(null)}let x=C.screenToDocument(u),y=yo(x);d=d1(x,y),Ft(y),ce(),xt(at("arrow",{badge:y===null?"none":ac(y,["x","y"])}))}function d1(u,f){let h=C.hitTest(u);if(h===null||!$t().locked.has(h))return null;let x=js(n.root,h,"locked");return x===void 0?null:f===null||Ke(n.root,x).includes(f)?x:null}function Ft(u){s!==u&&(s=u,ce())}function _c(u){Q?.id!==u?.id&&(Q=u,ce())}function ka(u){Te!==u&&(Te=u,ce())}function xt(u){e.style.cursor!==u&&(e.style.cursor=u)}function Mn(u){o!==u&&(o=u,J&&u!=="pen"&&ga(),u!=="select"&&Rs(),ee?.setTool(o),u!=="select"&&Ft(null),xt(at(cc())),ke("tool",o))}function u1(u){if(u.length===0)return null;if(u.length>1)return Wt(u.map(x=>x.frame))??null;let f=u[0],h=Le(n.root,f.id);return h?ro(h.id,n,C.getResolution())??null:null}function Xx(u,f,h){let x=Sa(oo(n,hc(ua(r),u,f)));x.length!==0&&pe([...x,...fs(n,x,Xr(n),Pe(n))],h)}function Sa(u,f=n){if(u.length===0)return[...u];let h=Ye(f.root).links;if(h.size===0)return[...u];let x=new Set(u.flatMap(A=>A.op==="set"?[A.id]:[])),y=Pe(f),S=Pe(Ae(f,u).document),E=[];for(let[A,L]of h){if(A===M||!x.has(A)||x.has(L))continue;let U=y.nodes.get(A),W=S.nodes.get(A),X=y.nodes.get(L);if(!U||!W||!X)continue;let ie={x:U.absX,y:U.absY,w:U.w,h:U.h},re={x:W.absX,y:W.absY,w:W.w,h:W.h},xe=U.values.rotation??0,ue=W.values.rotation??0;if(ie.x===re.x&&ie.y===re.y&&ie.w===re.w&&ie.h===re.h&&xe===ue)continue;let We={x:X.absX,y:X.absY,w:X.w,h:X.h},Ot={x:X.absX-X.x,y:X.absY-X.y},Tt=X.values.rotation??0,Co=je(Re(We),Re(ie),-xe),I1={x:Co.x-We.w/2,y:Co.y-We.h/2,w:We.w,h:We.h},Us=Kd(I1,Tt-xe,ie,re),wg=je(Re(Us),Re(re),ue);E.push({nodeId:L,prop:"x",from:X.x,to:Z(wg.x-Us.w/2-Ot.x)},{nodeId:L,prop:"y",from:X.y,to:Z(wg.y-Us.h/2-Ot.y)},{nodeId:L,prop:"w",from:X.w,to:Z(Us.w)},{nodeId:L,prop:"h",from:X.h,to:Z(Us.h)}),ue!==xe&&E.push({nodeId:L,prop:"rotation",from:Tt,to:Wo(Tt+ue-xe)})}return E.length===0?[...u]:[...u,...oo(f,E)]}function Yx(u){let f=Bi(n,r,C.getResolution()),h=u1(f);h&&Xx(Qd(u),Rp(f,h,u),Y2[u])}function Jx(u){let f=Bi(n,r,C.getResolution());if(f.length<3)return null;let h=xm(f,u),x=gm(h);return x===null?null:{gap:x,series:h}}function Zx(u){let f=Jx(u);f&&Xx(u,wu(f.series,f.gap),u==="x"?"Distribute horizontally":"Distribute vertically")}function c1(){let u=Gi(n,[...r,...ms(n,r)]);if(u.length===0)return null;let f=C.getResolution(),h={};for(let x of u)de(x,y=>{let S=f.nodes.get(y.id)?.values;S&&(h[y.id]=S)});return{nodes:u,tokens:n.tokens,fonts:n.fonts,resolved:h}}function l1(u){return new Map(Object.entries(u.resolved))}function f1(u){let f=Object.entries(u.tokens).filter(([h])=>n.tokens[h]===void 0).map(([h,x])=>({op:"setToken",name:h,value:x}));for(let[h,x]of Object.entries(u.fonts))n.fonts[h]===void 0&&f.push({op:"setFont",name:h,family:x});return f}function Qx(u,f,h){let x=f1(u),y=x.length>0?Ae(n,x).document:n,S=mb(y,u.components??[],ie=>dg(`This file already has a component called ${ie}, and it is not the same as the one you copied. Use the one in this file? Cancel brings yours in beside it as a separate component.`));S.ops.length>0&&(x.push(...S.ops),y=Ae(y,S.ops).document);let E=Jh(u,y),A=E.remap,L=E.nodes.map(ie=>jd(ie,S));if(L.length===0)return null;L.forEach((ie,re)=>{let xe=u.nodes[re];if(!xe)return;let ue=f(xe,re,y),De={op:"insert",parent:ue.parent,index:ue.index,node:ie};x.push(De),y=Ae(y,[De]).document});let U=kp(y,A,l1(u),h);U.length>0&&(y=Ae(y,U).document);let W=p1(L),X=Ye(y.root).shapes;return{ops:[...x,...U,...ps(n,y)],ids:[...A.values()].filter(ie=>W.has(ie)&&!X.has(ie))}}function p1(u){let f=new Set;for(let h of u)f.add(h.id);return f}function eg(u){let f=c1();return f?Qx(f,(h,x,y)=>{let S=Le(y.root,h.id)??y.root,E=te(S).findIndex(A=>A.id===h.id);return{parent:S.id,index:E===-1?te(S).length:E+1}},u):null}function So(){let u=Xh(n,r,C.getResolution());return u!==null&&(Dm=u),u}function tg(){if(r.some(f=>Je(n,f)))return So();let u=So();return u!==null&&(r=[...r,...ms(n,r)],Mo()),u}function h1(u){let f=[];for(let h of u.nodes){let x=u.resolved[h.id];if(!x)continue;let{x1:y,y1:S,x2:E,y2:A}=x,L=y!==void 0&&S!==void 0&&E!==void 0&&A!==void 0?fi({x1:y,y1:S,x2:E,y2:A}):x,{x:U,y:W,w:X,h:ie}=L;U===void 0||W===void 0||X===void 0||ie===void 0||f.push({x:U,y:W,w:X,h:ie})}return Wt(f)??null}function Ec(u,f){let h=Yh(u??Dm??"");if(!h)return;let x=f??Rt,y=h1(h),S=m1(h),E=L=>Qx(h,(U,W,X)=>({parent:L,index:te(z(X.root,L)??X.root).length}),x1(h,L,y,x)),A=E(S);A&&S!==_a()&&g1(A.ops)&&(A=E(_a())),A&&(pe(A.ops,A.ids.length===1?"Paste":`Paste ${A.ids.length} elements`),he(A.ids))}function _a(){return Jn(_??n.root.id)}function m1(u){if(u.nodes.some(y=>y.type==="frame"&&y.component===!0))return n.root.id;if(_!==null||r.length===0)return _a();let f=new Set(u.nodes.map(y=>y.id)),h=r.length===1?z(n.root,r[0]):void 0;if(h?.type==="frame"&&!f.has(h.id))return Jn(h.id);let x=new Set(r.map(y=>Le(n.root,y)?.id??n.root.id));return x.size!==1?_a():Jn([...x][0])}function x1(u,f,h,x){let y={x:Tu,y:Tu};if(!h)return y;let S={x:h.x+h.w/2,y:h.y+h.h/2},E=f===n.root.id?void 0:wt(f);return E?x!==null&&x.x>=E.absX&&x.x<=E.absX+E.w&&x.y>=E.absY&&x.y<=E.absY+E.h?{x:x.x-E.absX-S.x,y:x.y-E.absY-S.y}:u.nodes.some(W=>Le(n.root,W.id)?.id===f)?y:h.x>=0&&h.y>=0&&h.x+h.w<=E.w&&h.y+h.h<=E.h?{x:0,y:0}:{x:E.w/2-S.x,y:E.h/2-S.y}:x?{x:x.x-S.x,y:x.y-S.y}:y}function g1(u){let f=h=>Gs(h).filter(x=>x.code==="component-cycle").length;return f(Ae(n,u).document.root)>f(n.root)}async function ng(u,f){let h=t.importImage;if(!h)return;let x=await Yd(u,t.maxImageEdge??2560);if(!x)return;let y=await h(new File([x.bytes],u.name,{type:x.type}));if(!y)return;let S=Jn((f?Xn(f):void 0)??_??n.root.id),E=z(n.root,S)??n.root,A=Yt(S),L=C.getResolution().nodes.get(S),{w:U,h:W}=Np(x.width,x.height,L?.w&&L.w>0?L.w:x.width,L?.h&&L.h>0?L.h:x.height),X=f??Rt,ie=Math.round((X?X.x-U/2:A.x)-A.x),re=Math.round((X?X.y-W/2:A.y)-A.y),xe=sg(n,u.name),ue=pn(n.root,"image");pe([{op:"setAsset",name:xe,value:y},{op:"insert",parent:S,index:te(E).length,node:ol({id:ue,x:ie,y:re,w:U,h:W,src:xe,fit:"cover"})}],"Place image"),he([ue])}async function y1(u,f,h){let x=t.importVideo;if(!x)return;let y=await Tb(u),S=u.type===""?new File([u],u.name,{type:Ob(u)}):u,E=await x(S,y?.ms);if(!E)return;if(h){pe([{op:"setAsset",name:h.src,value:E}],"Place video"),he([h.id]);return}let A=sg(n,u.name),L=Jn(Xn(f)??_??n.root.id),U=z(n.root,L)??n.root,W=Yt(L),X=C.getResolution().nodes.get(L),ie=y?.width??1920,re=y?.height??1080,{w:xe,h:ue}=Np(ie,re,X?.w&&X.w>0?X.w:ie,X?.h&&X.h>0?X.h:re),De=pn(n.root,"video");pe([{op:"setAsset",name:A,value:E},{op:"insert",parent:L,index:te(U).length,node:rl({id:De,x:Math.round(f.x-xe/2-W.x),y:Math.round(f.y-ue/2-W.y),w:xe,h:ue,src:A,fit:"cover",muted:!0})}],"Place video"),he([De])}async function rg(u,f){let h=t.importAudio;if(!h)return!1;let x=await h(u);return x?(pe(Rb(n,f,Nb(n,f,u.name),x),"Add music"),!0):!1}function Ea(){return t.importImage?Sv(n,$t().hidden):[]}function b1(){return Ea().flatMap(u=>{let f=qe(u.id);return f?[{frame:f,label:u.label,target:u.id===l}]:[]})}function v1(u){let f=null;return de(n.root,h=>{if(h.type!=="video"||typeof h.src!="string"||h.src===""||n.assets[h.src]!==void 0)return;let x=qe(h.id);x!==void 0&&Mt(x,u.x,u.y)&&(f=h)}),f}function og(u){return Ea().filter(h=>{let x=qe(h.id);return x!==void 0&&Mt(x,u.x,u.y)}).at(-1)??null}function w1(){return r.length!==1?null:Ea().find(u=>u.id===r[0])??null}async function Mc(u,f){let h=t.importImage;if(!h)return;let x=await Yd(f,t.maxImageEdge??2560);if(!x)return;let y=await h(new File([x.bytes],f.name,{type:x.type}));!y||n.assets[u.src]!==void 0||(pe([{op:"setAsset",name:u.src,value:y}],"Add image"),he([u.id]))}function k1(u){let f=e.ownerDocument.createElement("input");f.type="file",f.accept="image/*",f.addEventListener("change",()=>{let h=f.files?.[0];h&&Mc(u,h)}),f.click()}function sg(u,f){let h=f.replace(/\.[^.]+$/,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"image";if(u.assets[h]===void 0)return h;for(let x=2;;x+=1){let y=`${h}-${x}`;if(u.assets[y]===void 0)return y}}function Cc(){if(r.some(f=>Je(n,f)))return;let u=eg(S1());u&&(pe(u.ops,u.ids.length===1?"Duplicate":`Duplicate ${u.ids.length} elements`),he(u.ids))}function S1(){let u={x:Tu,y:Tu},f=r.length===1?r[0]:void 0;if(f===void 0||!Hn(n,f))return u;let h=C.getResolution(),x=h.nodes.get(f);if(!x)return u;let y=Hi(n,h);return{x:y.x-x.absX,y:y.y-x.absY}}function Ac(u,f){if(u.length===0)return;let h=Ae(n,u).document;pe([...u,...ps(n,h)],f)}function $c(){if(r.some(f=>Je(n,f)))return;let u=yp(n,r);u&&(Ac(u.ops,"Group"),he([u.groupId]))}function Oc(){let u=r.filter(y=>{let S=z(n.root,y);return S!==void 0&&Ne(S)&&!Je(n,y)});if(u.length===0)return;let f=n,h=[],x=[];for(let y of u){let S=z(f.root,y);S&&x.push(...te(S).map(A=>A.id));let E=bp(f,y);E.length!==0&&(h.push(...E),f=Ae(f,E).document)}_!==null&&u.includes(_)&&(_=null),Ac(h,u.length===1?"Ungroup":`Ungroup ${u.length} groups`),he(x)}function Tc(u){r.some(f=>Je(n,f))||Ac(vp(n,r,u),tA[u])}function _1(u,f,h){let x=z(n.root,f);if(!x||!me(x))return;let y=new Set(Ke(n.root,f));if(x.type==="instance"||Je(n,f)||f!==n.root.id&&u.some(ue=>Hn(n,ue)))return;let S=u.filter(ue=>ue!==n.root.id&&z(n.root,ue)&&!y.has(ue)&&!Je(n,ue)),E=fr(n.root,f),A=[...S,...qh(n,S).filter(ue=>fr(n.root,ue)!==E&&!y.has(ue))];if(A.length===0)return;let L=new Set(A),U=te(x).filter(ue=>!L.has(ue.id))[h]?.id,W=[],X=n;for(let ue of A){let De=te(z(X.root,f)??X.root).filter(Tt=>Tt.id!==ue),We=U===void 0?-1:De.findIndex(Tt=>Tt.id===U),Ot={op:"move",id:ue,parent:f,index:We===-1?De.length:We};W.push(Ot),X=Ae(X,[Ot]).document}if(A.every(ue=>M1(n,X,ue)))return;let ie=new Set(A.filter(ue=>Le(n.root,ue)?.id!==f).flatMap(ue=>wx(ue,X))),re=[];for(let ue of A){let De=ig(n,ue),We=ig(X,ue),Ot={x:De.x-We.x,y:De.y-We.y};if(!(Ot.x===0&&Ot.y===0))for(let Tt of no(ue,X)){let Co=an(Tt);Co&&(re.push({op:"set",id:Tt,prop:"x",value:Z(Co.x+Ot.x)}),re.push({op:"set",id:Tt,prop:"y",value:Z(Co.y+Ot.y)}))}}let xe=Ae(X,re).document;pe([...W,...re,...ps(n,xe,ie)],A.length===1?`Move ${A[0]}`:`Move ${A.length} layers`)}function E1(u={}){let f=n.root.children,h=f.filter(ue=>ue.type==="frame"&&ue.component!==!0),x=h.find(ue=>ue.id===u.after),y=C.getResolution(),S=x?y.nodes.get(x.id):void 0,E=S&&S.w>0?S.w:zv.w,A=S&&S.h>0?S.h:zv.h,L=null,U=-1/0;for(let ue of h.length>0?h:f){let De=y.nodes.get(ue.id);!De||De.absX+De.w<=U||(U=De.absX+De.w,L={x:U+H2,y:De.absY})}let W=L??{x:0,y:0},X=x??h[h.length-1],ie=X?f.indexOf(X)+1:f.length,re=pn(n.root,"frame"),xe=x?.type==="frame"?x.background:void 0;return pe([{op:"insert",parent:n.root.id,index:ie,node:Va({id:re,x:Z(W.x),y:Z(W.y),w:Z(E),h:Z(A),background:xe??Uv,children:[]})}],"Add frame"),he([re]),re}function M1(u,f,h){let x=Le(u.root,h),y=Le(f.root,h);return x?.id===y?.id&&x?.children.findIndex(S=>S.id===h)===y?.children.findIndex(S=>S.id===h)}function ig(u,f){let h=Ke(u.root,f).slice(0,-1).reverse(),x=Pe(u);for(let y of h){let S=z(u.root,y);if(!S||Ne(S))continue;let E=x.nodes.get(y);return E?{x:E.absX,y:E.absY}:{x:0,y:0}}return{x:0,y:0}}function Lc(u){let f=z(n.root,u);!f||!Bs(f)||(_=u,ce())}function Pc(){if(_===null)return;let u=_;_=Lx(u),he([u])}function Dc(){let u=z(n.root,_??n.root.id)??n.root,f=Ye(n.root).shapes;he(te(u).map(h=>h.id).filter(h=>It(h)&&!f.has(h)))}let C1={locked:["Lock","Unlock"],hidden:["Hide","Show"]};function ag(u){return u==="locked"?$t().locked:$t().hidden}function _o(u,f,h){let x=u.filter(E=>E!==n.root.id&&z(n.root,E)),y=h?x.filter(E=>!ag(f).has(E)):[...new Set(x.flatMap(E=>{let A=js(n.root,E,f);return A===void 0?[]:[A]}))];if(y.length===0)return;let S=C1[f][h?0:1];pe(y.map(E=>({op:"set",id:E,prop:f,value:h?!0:void 0})),y.length===1?`${S} ${y[0]}`:`${S} ${y.length} layers`)}function Eo(u,f){u.length!==0&&_o(u,f,!u.every(h=>ag(f).has(h)))}function Nc(u){let f=[];return de(n.root,h=>{h[u]===!0&&f.push(h.id)}),f}function Ma(u){let f=Nc(u);if(f.length===0)return;let h=u==="locked"?"Unlock all":"Show all";pe(f.map(x=>({op:"set",id:x,prop:u,value:void 0})),h)}function A1(u){R={...Xv,...u},fe?.close()}function Mo(){let u=r.filter(L=>L!==n.root.id),f=u.filter(L=>Je(n,L)),h=u.filter(L=>!Je(n,L)),x=h.filter(L=>Hn(n,L)),y=Ud(n,x);if(y>0){let U=`${x.length===1?x[0]:`${x.length} components`} is used in ${y} ${y===1?"place":"places"}. Delete it and detach ${y===1?"that instance":"those instances"}? Each keeps what it shows.`;if(!dg(U))return}let S=h.filter(L=>!x.includes(L)),E=[...f.map(L=>({op:"set",id:L,prop:"hidden",value:!0})),...x.length>0?Ap(n,x,C.getResolution()):[],...Gh(zb(n,S)),...O1(S),...S.map(L=>({op:"remove",id:L}))];if(E.length===0)return;let A=u.length;he([]),pe(E,A===1?"Delete element":`Delete ${A} elements`)}function $1(u,f){if(z(n.root,u)?.type!=="connector")return;let x=wt(u)?.values??{},[y,S]=f==="start"?["x1","y1"]:["x2","y2"];pe([{op:"set",id:u,prop:y,value:Z(x[y]??0)},{op:"set",id:u,prop:S,value:Z(x[S]??0)}],"Detach end")}function O1(u){let f=new Set;for(let x of u){let y=z(n.root,x);y&&de(y,S=>{f.add(S.id)})}let h=[];for(let[x,y]of In(n)){if(f.has(x))continue;let S=wt(x)?.values??{};for(let[E,A,L]of[["start","x1","y1"],["end","x2","y2"]]){let U=y[E];U===void 0||!f.has(U)||h.push({op:"set",id:x,prop:A,value:Z(S[A]??0)},{op:"set",id:x,prop:L,value:Z(S[L]??0)})}}return h}function dg(u){if(t.confirm)return t.confirm(u);let f=e.ownerDocument.defaultView;return typeof f?.confirm=="function"?f.confirm(u):!0}function Bs(u){return Ne(u)||u.type==="instance"}function Jn(u){let f=Ke(n.root,u),h=f.findIndex(x=>z(n.root,x)?.type==="instance");return h<=0?u:f[h-1]}function Rc(u=r){let f=Sp(n,[...u,...ms(n,u)],C.getResolution());return f?(_=null,pe(f.ops,"Create component"),he([f.instanceId]),f.flattened.length>0&&ke("notice",{message:`Made ${f.componentId}. ${f.flattened.length===1?"One position":`${f.flattened.length} positions`} measured from the page became numbers so the page looks the same: ${f.flattened.join(", ")}.`}),f.instanceId):null}function Ic(u=r){let f=u.filter(S=>z(n.root,S)?.type==="instance"),h=[],x=n,y=C.getResolution();for(let S of f){let E=Hd(x,S,y);E&&(h.push(...E),x=Ae(x,E).document)}h.length!==0&&(_!==null&&f.includes(_)&&(_=null),pe(h,f.length===1?"Detach instance":`Detach ${f.length} instances`),he(f.filter(S=>z(n.root,S)!==void 0)))}function ug(u){return z(n.root,u)?.type==="instance"&&!Je(n,u)?u:Lt(n.root,u)?.instance.id}function cg(u,f){let h=ug(u);if(h===void 0)return;let x=f??(h===u?void 0:u);pe(_p(n,h,x),x===void 0?"Reset overrides":"Reset part")}function T1(u,f){pe(Ep(n,u,f),`Swap to ${f}`)}function lg(u){let f=z(n.root,u),h=f?.type==="instance"?f:Ba(n.root,u);if(h?.type!=="instance")return;let x=z(n.root,h.component);x&&(_=null,he([x.id]),At([x.id]))}function Fc(u,f){let h=z(n.root,u);if(h?.type!=="frame"||h.component!==!0)return null;let x=f??L1(),y=Xn(x)??n.root.id,S=Yt(y),E=wt(u),A=Cp(n,u,y,{x:Math.round(x.x-S.x-(E?.w??0)/2),y:Math.round(x.y-S.y-(E?.h??0)/2)});return A?(pe(A.ops,`Place ${u}`),he([A.id]),A.id):null}function L1(){let u=e.getBoundingClientRect();return C.screenToDocument({x:u.width/2,y:u.height/2})}function Vs(){ht=null;let u=D.undo();u&&ax(u.ops,`Undo ${u.entry.label}`),fg()}function Hs(){ht=null;let u=D.redo();u&&ax(u.ops,`Redo ${u.entry.label}`),fg()}function fg(){if(!ae)return;let{anchor:u,head:f}=ae.getSelection();ae.setSelection(u,f)}function P1(u){if(!D.isTail(u))return!1;for(let f=u.length;f>0;f-=1)Vs();return!0}function pg(u,f,h,x){let y=z(n.root,u);if(!y)return;let S=y[f];if(sA(S,h))return;let E={op:"set",id:u,prop:f,value:h},A=st(y)&&Z2.has(f);pe(A?Sa([E]):[E],x??`Set ${f}`)}function D1(u,f){let h=n.brand?.theme==="dark"?n.themes?.dark:void 0;if(h!==void 0&&u in h){if(h[u]===f)return;pe([{op:"setTheme",value:{...n.themes,dark:{...h,[u]:f}}}],`Set $${u} in dark`);return}n.tokens[u]!==f&&pe([{op:"setToken",name:u,value:f}],`Set $${u}`)}function N1(u){u in n.tokens&&pe([{op:"setToken",name:u,value:void 0}],`Remove $${u}`)}function hg(u,f){let h=wt(u)?.values[f];h!==void 0&&pe([{op:"set",id:u,prop:f,value:Z(h)}],`Detach ${f}`)}function R1(u){let f=z(n.root,_??n.root.id)??n.root,h=[],x=Ye(n.root).shapes;for(let y of te(f)){if(!It(y.id)||x.has(y.id))continue;let S=qe(y.id);S&&xp(S,u)&&h.push(y.id)}return h}function St(u){typeof e.setPointerCapture=="function"&&e.setPointerCapture(u)}function Bc(u){e.hasPointerCapture?.(u)&&e.releasePointerCapture(u)}let mg=u=>{ae&&(px(),ae.handleKey(u)&&(u.preventDefault(),u.stopPropagation()))},xg=u=>{ae&&(u.preventDefault(),px(),ae.handleInput(u))},gg=()=>ae?.handleCompositionStart(),yg=u=>ae?.handleCompositionUpdate(u.data??""),bg=u=>ae?.handleCompositionEnd(u.data??""),vg=u=>{if(!e.ownerDocument.hasFocus())return;let f=u.relatedTarget;f instanceof Element&&f.closest("[data-vd-keeps-text]")||_r("blur")};return se.addEventListener("keydown",mg),se.addEventListener("beforeinput",xg),se.addEventListener("compositionstart",gg),se.addEventListener("compositionupdate",yg),se.addEventListener("compositionend",bg),se.addEventListener("blur",vg),e.addEventListener("pointerdown",Mx),e.addEventListener("pointermove",Cx),e.addEventListener("pointerup",va),e.addEventListener("pointercancel",va),e.addEventListener("pointerup",da),e.addEventListener("pointercancel",da),e.addEventListener("pointerleave",qx),e.addEventListener("dblclick",Vx),e.addEventListener("contextmenu",Bx),e.addEventListener("keydown",Px),e.addEventListener("keyup",Fx),e.addEventListener("copy",Nx),e.addEventListener("cut",Rx),e.addEventListener("paste",Ix),e.addEventListener("dragover",jx),e.addEventListener("dragleave",Kx),e.addEventListener("drop",Gx),k=!0,ee?.setTool(o),ee?.setHistory(!1,!1),ee?.setZoom(C.getCamera().zoom),xt(at(cc())),t.autoFit&&!t.camera&&Ge(()=>C.fitToContent()),t.history&&(D.restore(t.history),ee?.setHistory(D.canUndo,D.canRedo)),t.selection&&t.selection.length>0&&he(t.selection),ce(),{element:e,viewer:C,getDocument:()=>n,update(u){n=u,C.update(n),he(r),ce(),ke("problems",dc())},applyOps:(u,f)=>pe(u,f??"Apply changes"),setDocument:(u,f)=>pe(Cl(n,fp(u,n.root.id)),f??"Replace document"),getSelection:()=>r,setSelection:he,selectAll:Dc,deleteSelection:Mo,detachEnd:$1,lock:u=>_o(u??r,"locked",!0),unlock:u=>_o(u??r,"locked",!1),toggleLock:u=>Eo(u??r,"locked"),unlockAll:()=>Ma("locked"),hide:u=>_o(u??r,"hidden",!0),show:u=>_o(u??r,"hidden",!1),toggleHidden:u=>Eo(u??r,"hidden"),showAll:()=>Ma("hidden"),isLocked:u=>$t().locked.has(u),isHidden:u=>$t().hidden.has(u),setFeatures:A1,getFeatures:()=>R,moveLayers:_1,addFrame:E1,copy:So,cut:tg,paste:Ec,duplicate:Cc,group:$c,ungroup:Oc,reorder:Tc,scaleSelection:_k,getSpacing:Ak,setSpacing:Ck,align:Yx,distribute:Zx,canDistribute:u=>Jx(u)!==null,editText:Ps,endTextEditing:()=>_r("done"),getEditingText:()=>ae?.id??null,formatText:u=>ae?.format(u),getTextFormat:()=>ae?.activeMark()??{},getTextSelectionRects:lx,getTextRange:()=>{if(!ae)return null;let{anchor:u,head:f}=ae.getSelection();return{from:Math.min(u,f),to:Math.max(u,f)}},createComponent:Rc,detachInstance:Ic,resetOverrides:cg,swapComponent:T1,goToComponent:lg,placeInstance:Fc,getEnteredGroup:()=>_,enterGroup:Lc,exitGroup:Pc,getTool:()=>o,editPoints:Mr,stopEditingPoints:Rs,getPointEditing:()=>H?.id??null,convertToVector:u=>xc(u),merge:(u,f)=>bc(u,f),canMerge:u=>Sx(u),offersMerge:()=>t.merge!==void 0,mergeRefusal:()=>yc(),formatKeys:u=>(t.formatKeys??so)(u),mask:u=>vc(u),maskRefusal:u=>{let f=Is(u);return f.ok?void 0:f.why},maskedIn:u=>ya(u),releaseMask:u=>wc(u),crop:u=>ba(u),stopCropping:()=>{kc()},getCropping:()=>M,setTool:Mn,beginEdit:rk,endEdit:ix,undo:Vs,redo:Hs,canUndo:()=>D.canUndo,canRedo:()=>D.canRedo,getHistory:()=>D.snapshot(),setProperty:pg,fontFamilies:()=>{let u=new Map;for(let f of t.fonts?.faces()??[]){let h=u.get(f.family)??{weights:new Set,italic:!1};h.weights.add(f.weight),f.style==="italic"?h.italic=!0:(h.css===void 0||f.weight===400)&&(h.css=f.id),u.set(f.family,h)}return[...u.entries()].sort(([f],[h])=>f.localeCompare(h)).map(([f,h])=>({family:f,weights:[...h.weights].sort((x,y)=>x-y),italic:h.italic,...h.css===void 0?{}:{css:h.css}}))},assetUrl:u=>{let f=n.assets[u];return f?t.resolveAsset?.(f,u):void 0},addMusic:rg,canAddMusic:()=>t.importAudio!==void 0,setToken:D1,removeToken:N1,bindingsOf:nk,unbind:hg,getResolution:()=>C.getResolution(),getCamera:()=>C.getCamera(),getProblems:dc,on:ye,reveal:At,panBy:Qw,setPresence(u,f){c={ids:[...u],label:f??null},ce()},setHighlight(u){u.length===0&&p.length===0||(p=[...u],ce())},isHistoryTail:u=>D.isTail(u),undoTail:P1,historyTop:()=>D.top,destroy(){Ue(),e.removeEventListener("pointerup",da),e.removeEventListener("pointercancel",da),e.removeEventListener("pointerdown",Mx),e.removeEventListener("pointermove",Cx),e.removeEventListener("pointerup",va),e.removeEventListener("pointercancel",va),e.removeEventListener("pointerleave",qx),se.removeEventListener("keydown",mg),se.removeEventListener("beforeinput",xg),se.removeEventListener("compositionstart",gg),se.removeEventListener("compositionupdate",yg),se.removeEventListener("compositionend",bg),se.removeEventListener("blur",vg),se.remove(),vo&&clearTimeout(vo),e.removeEventListener("dblclick",Vx),e.removeEventListener("contextmenu",Bx),e.removeEventListener("copy",Nx),e.removeEventListener("cut",Rx),e.removeEventListener("paste",Ix),e.removeEventListener("dragover",jx),e.removeEventListener("dragleave",Kx),e.removeEventListener("drop",Gx),e.removeEventListener("keydown",Px),e.removeEventListener("keyup",Fx),fe?.destroy(),ee?.destroy(),G.destroy(),C.destroy(),P.remove(),$.clear(),e.style.cursor="",e.classList.remove("vd-editor")}}}function sA(e,t){return e===t?!0:ve(e)&&ve(t)?e.expr===t.expr:!1}function Ss(e){return e.metaKey||e.ctrlKey||e.altKey}function Lu(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 m4=new Set(wr);function Ji(e){return e.map(t=>({value:t,label:`${t.charAt(0).toUpperCase()}${t.slice(1)}`}))}var uA=[{value:"nonzero",label:"Non-zero"},{value:"evenodd",label:"Even-odd"}].filter(e=>Ar.includes(e.value)),cA=Ji(tr),Yv=Ji(Zt),lA=Ji($r),fA=[{value:"left",label:"Left",icon:bt("text-left")},{value:"center",label:"Centre",icon:bt("text-center")},{value:"right",label:"Right",icon:bt("text-right")},{value:"justify",label:"Justify",icon:bt("text-justify")}].filter(e=>Qn.includes(e.value)),pA=[{value:"top",label:"Top",icon:bt("text-top")},{value:"middle",label:"Middle",icon:bt("text-middle")},{value:"bottom",label:"Bottom",icon:bt("text-bottom")}].filter(e=>er.includes(e.value)),Im={prop:"x",label:"X",kind:"number",prefix:"X"},Fm={prop:"y",label:"Y",kind:"number",prefix:"Y"},Ru={prop:"w",label:"W",kind:"number",prefix:"W"},Iu={prop:"h",label:"H",kind:"number",prefix:"H"},hA={prop:"rotation",label:"Rotation",kind:"number",icon:"rotate",fallback:"0"},Zv={prop:"opacity",label:"Opacity",kind:"number",icon:"opacity",percent:!0,fallback:"100%"},Du={prop:"radius",label:"Radius",kind:"radius",icon:"radius",span:"wide",fallback:"0"};var _s={heading:"Position",props:[Im,Fm,Ru,Iu,hA,Zv]},Nu={prop:"fill",label:"Fill",kind:"colour"},Fu={prop:"stroke",label:"Stroke",kind:"colour",span:"half"},Bu={prop:"strokeWidth",label:"Stroke width",kind:"number",prefix:"Width",fallback:"0"},Bm={present:"stroke",empty:"No stroke",add:{stroke:"#000000",strokeWidth:1},clear:["stroke","strokeWidth","dash","strokeAlign","cap","join"]},mA=[{value:"center",label:"Centre"},{value:"inside",label:"Inside"},{value:"outside",label:"Outside"}].filter(e=>Ur.includes(e.value)),Qv={prop:"strokeAlign",label:"Stroke position",kind:"select",options:mA,prefix:"Align",span:"half"},Vu={prop:"dash",label:"Dash",kind:"dash",prefix:"Dash",fallback:"Solid",span:"half"},Vm={prop:"cap",label:"Cap",kind:"select",options:cA,prefix:"Cap",span:"half"},xA={prop:"join",label:"Join",kind:"select",options:lA,prefix:"Join",span:"half"},Yi={heading:"Stroke",props:[Fu,Bu,Qv,Vu,Vm],optional:Bm},Jv=Ji(ur),gA=[{heading:"Line",props:[{prop:"start",label:"From",kind:"attachment",prefix:"From"},{prop:"x1",label:"From X",kind:"number",prefix:"X1"},{prop:"y1",label:"From Y",kind:"number",prefix:"Y1"},{prop:"end",label:"To",kind:"attachment",prefix:"To"},{prop:"x2",label:"To X",kind:"number",prefix:"X2"},{prop:"y2",label:"To Y",kind:"number",prefix:"Y2"},{prop:"route",label:"Route",kind:"select",options:Ji(Hr),prefix:"Route",span:"half"},{...Zv,span:"half"},{prop:"start",label:"Start head",kind:"select",options:Jv,prefix:"Start",span:"half"},{prop:"end",label:"End head",kind:"select",options:Jv,prefix:"End",span:"half"}]},{heading:"Stroke",props:[{...Fu,fallback:ci},{...Bu,fallback:String(li)},Vu,Vm]}],x4={instance:[{heading:"Instance",props:[Im,Fm,Ru,Iu]}],connector:gA,frame:[{heading:"Frame",props:[Im,Fm,Ru,Iu,Du,{prop:"clip",label:"Clip content",kind:"toggle"}]},{heading:"Fill",props:[{prop:"background",label:"Fill",kind:"colour"}]},Yi],canvas:[{heading:"Canvas",props:[Ru,Iu,{prop:"background",label:"Fill",kind:"colour"}]}],text:[_s,{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:fA,span:"half"},{prop:"valign",label:"Vertical",kind:"segmented",options:pA,span:"half"}]},{heading:"Fill",props:[Nu]},{heading:"Stroke",props:[Fu,Bu,Vu],optional:Bm},{heading:"Link",props:[{prop:"content",label:"Link",kind:"link",icon:"link"}]}],rect:[{heading:"Position",props:[..._s.props,Du]},{heading:"Fill",props:[Nu]},Yi],ellipse:[_s,{heading:"Fill",props:[Nu]},Yi],image:[{heading:"Position",props:[..._s.props,Du]},{heading:"Image",props:[{prop:"fit",label:"Fit",kind:"select",options:Yv,prefix:"Fit"}]},Yi],video:[{heading:"Position",props:[..._s.props,Du]},{heading:"Video",props:[{prop:"fit",label:"Fit",kind:"select",options:Yv,prefix:"Fit"},{prop:"poster",label:"Poster frame (ms)",kind:"number",prefix:"Poster",fallback:"Start"},{prop:"start",label:"Trim start (ms)",kind:"number",prefix:"In",fallback:"0"},{prop:"end",label:"Trim end (ms)",kind:"number",prefix:"Out",fallback:"End"},{prop:"muted",label:"Muted",kind:"toggle",span:"half"},{prop:"loop",label:"Loop",kind:"toggle",span:"half"}]},Yi],vector:[_s,{heading:"Fill",props:[{...Nu,span:"half"},{prop:"rule",label:"Fill rule",kind:"select",options:uA,prefix:"Rule",span:"half"}]},{heading:"Stroke",props:[Fu,Bu,Qv,Vu,Vm,xA],optional:Bm}]};var g4=Cr.map(e=>({value:e,label:e.split("-").map((t,n)=>n===0?t.charAt(0).toUpperCase()+t.slice(1):t).join(" ")}));function Hu(e,t,n){let r=0;return e<n.left?r|=1:e>n.right&&(r|=2),t<n.top?r|=4:t>n.bottom&&(r|=8),r}function Yu(e,t){let[[n,r],[o,s]]=e,i=Hu(n,r,t),a=Hu(o,s,t);for(;;)if(i|a){if(i&a)return!1;{let{top:d,right:c,bottom:l,left:p}=t,m,g,b=a>i?a:i;b&8?(m=n+(o-n)*(l-r)/(s-r),g=l):b&4?(m=n+(o-n)*(d-r)/(s-r),g=d):b&2?(g=r+(s-r)*(c-n)/(o-n),m=c):b&1&&(g=r+(s-r)*(p-n)/(o-n),m=p),b==i?(n=m,r=g,i=Hu(n,r,t)):(o=m,s=g,a=Hu(o,s,t))}}else return!0}function Gu(e,t){return e.left<=t.right&&t.left<=e.right&&e.top<=t.bottom&&t.top<=e.bottom}function Cs(e,t){return e?{top:Math.min(e.top,t.top),right:Math.max(e.right,t.right),bottom:Math.max(e.bottom,t.bottom),left:Math.min(e.left,t.left)}:t}function Hm(e,t){return e?{top:Math.min(e.top,t[1]),right:Math.max(e.right,t[0]),bottom:Math.max(e.bottom,t[1]),left:Math.min(e.left,t[0])}:{top:t[1],right:t[0],bottom:t[1],left:t[0]}}function Zi(e){return Math.max(e.right-e.left,e.bottom-e.top)}function Qi(e,t){return{top:e[1]-t,right:e[0]+t,bottom:e[1]+t,left:e[0]-t}}function CA(e,t){return{top:e.top-t,right:e.right+t,bottom:e.bottom+t,left:e.left-t}}var ta=class e{constructor(t,n,r=16){this.boundingBox=t,this.depth=n,this.innerNodeCapacity=r,this.subtrees=null,this.pairs=[]}insert(t,n){if(!Gu(t,this.boundingBox))return!1;if(this.subtrees){for(let r=0;r<this.subtrees.length;r++)this.subtrees[r].insert(t,n);return!0}if(this.depth>0&&this.pairs.length>=this.innerNodeCapacity){this.ensureSubtrees();for(let r=0;r<this.pairs.length;r++){let[o,s]=this.pairs[r];for(let i=0;i<this.subtrees.length;i++)this.subtrees[i].insert(o,s)}this.pairs.length=0;for(let r=0;r<this.subtrees.length;r++)this.subtrees[r].insert(t,n);return!0}return this.pairs.push([t,n]),!0}find(t,n=new Set){if(!Gu(t,this.boundingBox))return n;for(let r=0;r<this.pairs.length;r++){let[o,s]=this.pairs[r];Gu(t,o)&&n.add(s)}if(this.subtrees)for(let r=0;r<this.subtrees.length;r++)this.subtrees[r].find(t,n);return n}findOnLineSegment(t,n=new Set){if(!Yu(t,this.boundingBox))return n;for(let[r,o]of this.pairs)Yu(t,r)&&n.add(o);if(this.subtrees)for(let r of this.subtrees)r.findOnLineSegment(t,n);return n}ensureSubtrees(){if(this.subtrees)return;let{top:t,right:n,bottom:r,left:o}=this.boundingBox,s=(this.boundingBox.left+this.boundingBox.right)/2,i=(this.boundingBox.top+this.boundingBox.bottom)/2;this.subtrees=[new e({top:t,right:s,bottom:i,left:o},this.depth-1,this.innerNodeCapacity),new e({top:t,right:n,bottom:i,left:s},this.depth-1,this.innerNodeCapacity),new e({top:i,right:s,bottom:r,left:o},this.depth-1,this.innerNodeCapacity),new e({top:i,right:n,bottom:r,left:s},this.depth-1,this.innerNodeCapacity)]}},ew=typeof process<"u"&&process.env.PATH_BOOL_DEV_ASSERTS;ew==="1"||ew==="0"||typeof process<"u"&&process.env.NODE_ENV;var bw=128,jm=1024,ea=2e4,AA=6,kr=1e-10,tw=1e-16,$A=1e-12,OA=.001,Xt={point:1e-6,linear:1e-4,param:1e-8,collinear:Number.MIN_VALUE*64},TA=50;function LA(e){let t=Number.isFinite(e)&&e>0?Math.min(1,e/TA):1;return{point:Xt.point*t,linear:Xt.linear*t,param:Xt.param,collinear:Xt.collinear}}var Uu=1e-12;function PA(e){let t=e[1],n=e[2],r=e[3],o=e[4],s=-t[0]+3*n[0]-3*r[0]+o[0],i=-t[1]+3*n[1]-3*r[1]+o[1],a=3*t[0]-6*n[0]+3*r[0],d=3*t[1]-6*n[1]+3*r[1],c=-3*t[0]+3*n[0],l=-3*t[1]+3*n[1],p=i*a-s*d,m=s*l-i*c,g=(-3*s*s*l*l+6*s*i*c*l+4*s*a*d*l-4*s*d*d*c-3*i*i*c*c-4*i*a*a*l+4*i*a*d*c)/(s*s*d*d-2*s*i*a*d+i*i*a*a);if(g<0)return null;let b=(m/p+Math.sqrt(g))/2,w=(m/p-Math.sqrt(g))/2;return Uu<=b&&b<=1-Uu&&Uu<=w&&w<=1-Uu?[b,w]:null}var nw=typeof Float32Array<"u"?Float32Array:Array;function DA(e,t){if(e===t){var n=t[1];e[1]=t[2],e[2]=n}else e[0]=t[0],e[1]=t[2],e[2]=t[1],e[3]=t[3];return e}function vw(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=n,e[2]=-n,e[3]=r,e}function NA(e,t,n){var r=t[0],o=t[1],s=t[2],i=t[3],a=t[4],d=t[5],c=n[0],l=n[1],p=n[2],m=n[3],g=n[4],b=n[5];return e[0]=r*c+s*l,e[1]=o*c+i*l,e[2]=r*p+s*m,e[3]=o*p+i*m,e[4]=r*g+s*b+a,e[5]=o*g+i*b+d,e}function RA(e,t,n){var r=t[0],o=t[1],s=t[2],i=t[3],a=t[4],d=t[5],c=Math.sin(n),l=Math.cos(n);return e[0]=r*l+s*c,e[1]=o*l+i*c,e[2]=r*-c+s*l,e[3]=o*-c+i*l,e[4]=a,e[5]=d,e}function IA(e,t,n){var r=t[0],o=t[1],s=t[2],i=t[3],a=t[4],d=t[5],c=n[0],l=n[1];return e[0]=r*c,e[1]=o*c,e[2]=s*l,e[3]=i*l,e[4]=a,e[5]=d,e}function FA(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=n,e[2]=-n,e[3]=r,e[4]=0,e[5]=0,e}function BA(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=1,e[4]=t[0],e[5]=t[1],e}var VA=NA;function HA(){var e=new nw(2);return nw!=Float32Array&&(e[0]=0,e[1]=0),e}function Km(e,t,n){return e[0]=t,e[1]=n,e}function na(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e}function UA(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e}function Ju(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e}function zA(e){var t=e[0],n=e[1];return t*t+n*n}function rw(e,t){var n=t[0],r=t[1],o=n*n+r*r;return o>0&&(o=1/Math.sqrt(o)),e[0]=t[0]*o,e[1]=t[1]*o,e}function Ms(e,t){return e[0]*t[0]+e[1]*t[1]}function He(e,t,n,r){var o=t[0],s=t[1];return e[0]=o+r*(n[0]-o),e[1]=s+r*(n[1]-s),e}function Zu(e,t,n){var r=t[0],o=t[1];return e[0]=n[0]*r+n[2]*o,e[1]=n[1]*r+n[3]*o,e}function zu(e,t,n){var r=t[0],o=t[1];return e[0]=n[0]*r+n[2]*o+n[4],e[1]=n[1]*r+n[3]*o+n[5],e}function jA(e,t,n,r){var o=t[0]-n[0],s=t[1]-n[1],i=Math.sin(r),a=Math.cos(r);return e[0]=o*a-s*i+n[0],e[1]=o*i+s*a+n[1],e}var Kn=UA,ow=zA;(function(){var e=HA();return function(t,n,r,o,s,i){var a,d;for(n||(n=2),r||(r=0),o?d=Math.min(o*n+r,t.length):d=t.length,a=r;a<d;a+=n)e[0]=t[a],e[1]=t[a+1],s(e,e,i),t[a]=e[0],t[a+1]=e[1];return t}})();var Qu=2*Math.PI;function KA(e,t,n,r,o){return(e-t)/(n-t)*(o-r)+r}function ct(e,t,n){return e+(t-e)*n}function Gn(e){return e/180*Math.PI}function sw(e,t){return Math.atan2(e[0]*t[1]-e[1]*t[0],Ms(e,t))}function Ce(){return[0,0]}function ut(e,t,n=0){return Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n}function ww(){return new Float64Array([1,0,0,1])}function iw(){return new Float64Array([1,0,0,1,0,0])}function ec(e){return Number.isFinite(e)}function aw([e,t]){return Number.isFinite(e)&&Number.isFinite(t)}function kw(e){if(!Number.isFinite(e))return 0;let t=(e%360+360)%360;return t>180&&(t-=360),t}function ho(e,t,n,r){let o=n[0]-t[0],s=n[1]-t[1],i=o*o+s*s;if(i<=r*r){let d=e[0]-t[0],c=e[1]-t[1];return Math.hypot(d,c)}return Math.abs((e[0]-t[0])*s-(e[1]-t[1])*o)/Math.sqrt(i)}function As(e,t=kr){let n=e[1],r=_n(e),o=r[0]-n[0],s=r[1]-n[1],i=o*o+s*s<=t*t;switch(e[0]){case"L":return!0;case"Q":return ho(e[2],n,r,t)<=t;case"C":return ho(e[2],n,r,t)<=t&&ho(e[3],n,r,t)<=t;case"A":return i||!Number.isFinite(e[2])||!Number.isFinite(e[3])||Math.abs(e[2])<=t||Math.abs(e[3])<=t}}function GA(e,t){let n=e[1],r=_n(e);if(e[0]==="A")return!ec(e[2])||!ec(e[3])||Math.abs(e[2])<=kr||Math.abs(e[3])<=kr?["L",n,r]:mo(e);if(e[0]!=="C"&&e[0]!=="Q")return e;let o=r[0]-n[0],s=r[1]-n[1],i=o*o+s*s;if(o===0&&s===0){if(e[0]==="Q")return["L",n,r];let p=b=>(b[0]-n[0])**2+(b[1]-n[1])**2,[m,g]=p(e[2])>=p(e[3])?[e[2],e[3]]:[e[3],e[2]];return ho(g,n,m,kr)<=kr?["L",n,r]:e}if(i<=t*t)return e;let a=p=>((p[0]-n[0])*o+(p[1]-n[1])*s)/i,d=t/Math.sqrt(i);if(e[0]==="Q"){if(ho(e[2],n,r,t)>t)return e;let p=a(e[2]);return p<-d||p>1+d?e:["L",n,r]}if(ho(e[2],n,r,t)>t||ho(e[3],n,r,t)>t)return e;let c=a(e[2]),l=a(e[3]);return c<-d||l-c<-d||l>1+d?e:["L",n,r]}function mo(e){let t=Math.abs(e[2]),n=Math.abs(e[3]),r=e[4];return t<n&&([t,n]=[n,t],r+=90),t===n?r=0:r=(kw(r)%180+180)%180,["A",e[1],t,n,r,e[5],e[6],e[7]]}function tc(e){return e[1]}function _n(e){switch(e[0]){case"L":return e[2];case"C":return e[4];case"Q":return e[3];case"A":return e[7]}}function ra(e){switch(e[0]){case"L":return["L",e[2],e[1]];case"C":return["C",e[4],e[3],e[2],e[1]];case"Q":return["Q",e[3],e[2],e[1]];case"A":return["A",e[7],e[2],e[3],e[4],e[5],!e[6],e[1]]}}var xo=(()=>{let e=Ce(),t=ww(),n=Ce(),r=Ce();return function([s,i,a,d,c,l,p,m]){if(!aw(i)||!aw(m)||(c=kw(c),!ec(a)||!ec(d)||Math.abs(a)<=kr||Math.abs(d)<=kr))return null;vw(t,-Gn(c)),Kn(e,i,m),Ju(e,e,.5),Zu(e,e,t);let g=a*a,b=d*d,w=e[0]*e[0],k=e[1]*e[1];a=Math.abs(a),d=Math.abs(d);let _=w/g+k/b;if(_>1){let C=Math.sqrt(_);a*=C,d*=C;let G=Math.abs(_);g*=G,b*=G}let M=l===p?-1:1,R=g*k+b*w;if(R===0)return null;let B=g*b-g*k-b*w,D=Math.max(0,B/R),V=Math.sqrt(D),T=M*V*(a*e[1]/d),O=M*V*(-d*e[0]/a);DA(t,t),na(n,i,m),Ju(n,n,.5),Zu(r,[T,O],t),na(r,r,n);let j=[(e[0]-T)/a,(e[1]-O)/d],$=sw([1,0],j),P=sw(j,[(-e[0]-T)/a,(-e[1]-O)/d]);return!p&&P>0?P-=Qu:p&&P<0&&(P+=Qu),{center:[r[0],r[1]],theta1:$,deltaTheta:P,rx:a,ry:d,phi:c}}})(),dw=(()=>{let e=Ce(),t=Ce(),n=ww();return function({center:o,theta1:s,deltaTheta:i,rx:a,ry:d,phi:c}){vw(n,Gn(c)),Km(e,a*Math.cos(s),d*Math.sin(s)),Zu(e,e,n),na(e,e,o),Km(t,a*Math.cos(s+i),d*Math.sin(s+i)),Zu(t,t,n),na(t,t,o);let l=Math.abs(i)>Math.PI,p=i>0;return["A",[e[0],e[1]],a,d,c,l,p,[t[0],t[1]]]}})(),nc=(()=>{let e=Ce(),t=Ce(),n=Ce(),r=Ce(),o=Ce(),s=Ce();return function(a,d,c){if(As(a))return He(s,a[1],_n(a),d),c[0]=s[0],c[1]=s[1],c;switch(a[0]){case"L":He(s,a[1],a[2],d);break;case"C":He(e,a[1],a[2],d),He(t,a[2],a[3],d),He(n,a[3],a[4],d),He(r,e,t,d),He(o,t,n,d),He(s,r,o,d);break;case"Q":He(e,a[1],a[2],d),He(t,a[2],a[3],d),He(s,e,t,d);break;case"A":{let l=xo(a);if(!l){He(s,a[1],a[7],d);break}let{deltaTheta:p,phi:m,theta1:g,rx:b,ry:w,center:k}=l,_=g+d*p;Km(s,b*Math.cos(_),w*Math.sin(_)),jA(s,s,[0,0],Gn(m)),na(s,s,k);break}}return c[0]=s[0],c[1]=s[1],c}})(),Sn=(()=>{let e=Ce();return function(n,r){return nc(n,r,e),[e[0],e[1]]}})(),Sw=(()=>{let e=Ce();return function(n,r,o){if(As(n)){let s=n[1],i=_n(n);return o[0]=i[0]-s[0],o[1]=i[1]-s[1],o}switch(n[0]){case"Q":{let s=n[1],i=n[2],a=n[3],d=i[0]-s[0],c=i[1]-s[1],l=a[0]-i[0],p=a[1]-i[1];return o[0]=2*((1-r)*d+r*l),o[1]=2*((1-r)*c+r*p),o}case"C":{let s=n[1],i=n[2],a=n[3],d=n[4],c=i[0]-s[0],l=i[1]-s[1],p=a[0]-i[0],m=a[1]-i[1],g=d[0]-a[0],b=d[1]-a[1],w=1-r;return o[0]=3*(w*w*c+2*w*r*p+r*r*g),o[1]=3*(w*w*l+2*w*r*m+r*r*b),o}case"A":{let s=xo(mo(n));if(!s)return o[0]=n[7][0]-n[1][0],o[1]=n[7][1]-n[1][1],o;let{deltaTheta:i,phi:a,theta1:d,rx:c,ry:l}=s,p=d+r*i,m=Math.cos(Gn(a)),g=Math.sin(Gn(a)),b=-c*Math.sin(p)*i,w=l*Math.cos(p)*i;return e[0]=m*b-g*w,e[1]=g*b+m*w,o[0]=e[0],o[1]=e[1],o}}}})(),Xm=(()=>{let e=iw(),t=iw();return function(r,o=Math.PI/2){let s=xo(mo(r));if(!s)return[["L",r[1],r[7]]];let{center:i,theta1:a,deltaTheta:d,rx:c,ry:l,phi:p}=s,m=Math.ceil(Math.abs(d)/o);BA(e,i),RA(e,e,Gn(p)),IA(e,e,[c,l]);let g=[],b=d/m,w=4/3*Math.tan(b/4),k=Math.sin(b),_=Math.cos(b);for(let M=0;M<m;M++){let R=[1,0],B=[1,w],D=[_+w*k,k-w*_],V=[_,k];FA(t,a+M*b),VA(t,e,t),zu(R,R,t),zu(B,B,t),zu(D,D,t),zu(V,V,t),g.push(["C",R,B,D,V])}return g}})();function qA(e,t,n,r,o){let s=ct(e,t,o),i=ct(t,n,o),a=ct(n,r,o),d=ct(s,i,o),c=ct(i,a,o);return ct(d,c,o)}function uw(e,t,n,r){let o=Math.min(e,r),s=Math.max(e,r);function i(m){if(!(0<m&&m<1))return;let g=qA(e,t,n,r,m);o=Math.min(o,g),s=Math.max(s,g)}let a=3*(-e+3*t-3*n+r),d=6*(e-2*t+n),c=3*(t-e);if(Math.abs(a)<=1e-12*Math.max(Math.abs(d),Math.abs(c)))return d!==0&&i(-c/d),[o,s];let l=d*d-4*a*c;if(l<0)return[o,s];let p=-.5*(d+(d<0?-1:1)*Math.sqrt(l));return i(p/a),p!==0&&i(c/p),[o,s]}function WA(e,t,n,r){let o=ct(e,t,r),s=ct(t,n,r);return ct(o,s,r)}function cw(e,t,n){let r=Math.min(e,n),o=Math.max(e,n),s=e-2*t+n;if(s===0)return[r,o];let i=(e-t)/s;if(0<=i&&i<=1){let a=WA(e,t,n,i);r=Math.min(r,a),o=Math.max(o,a)}return[r,o]}function XA(e,t,n){let r=Math.min(t,n),o=Math.max(t,n);return e+Qu*Math.ceil((r-e)/Qu)<=o}function Nt(e){if(As(e)){let t=e[1],n=_n(e);return{top:Math.min(t[1],n[1]),right:Math.max(t[0],n[0]),bottom:Math.max(t[1],n[1]),left:Math.min(t[0],n[0])}}switch(e[0]){case"L":return{top:Math.min(e[1][1],e[2][1]),right:Math.max(e[1][0],e[2][0]),bottom:Math.max(e[1][1],e[2][1]),left:Math.min(e[1][0],e[2][0])};case"C":{let[t,n]=uw(e[1][0],e[2][0],e[3][0],e[4][0]),[r,o]=uw(e[1][1],e[2][1],e[3][1],e[4][1]);return{top:r,right:n,bottom:o,left:t}}case"Q":{let[t,n]=cw(e[1][0],e[2][0],e[3][0]),[r,o]=cw(e[1][1],e[2][1],e[3][1]);return{top:r,right:n,bottom:o,left:t}}case"A":{let t=xo(mo(e));if(!t)return Hm(Qi(e[1],0),e[7]);let{theta1:n,deltaTheta:r,phi:o,center:s,rx:i,ry:a}=t;if(o===0||i===a){let l=n+r,p=Hm(Qi(e[1],0),e[7]),m=Gn(o),g=[[Math.PI-m,[s[0]-i,s[1]]],[-Math.PI/2-m,[s[0],s[1]-a]],[-m,[s[0]+i,s[1]]],[Math.PI/2-m,[s[0],s[1]+a]]];for(let[b,w]of g)XA(b,n,l)&&(p=Hm(p,w));return CA(p,1e-11)}let d=Xm(e,Math.PI/16),c=null;for(let l of d)c=Cs(c,Nt(l));return c||Qi(e[1],0)}}}function Gm(e,t){let n=e[1],r=e[2],o=He(Ce(),n,r,t);return[["L",n,o],["L",o,r]]}function qu(e,t){let n=e[1],r=e[2],o=e[3],s=e[4],i=He(Ce(),n,r,t),a=He(Ce(),r,o,t),d=He(Ce(),o,s,t),c=He(Ce(),i,a,t),l=He(Ce(),a,d,t),p=He(Ce(),c,l,t);return[["C",n,i,c,p],["C",p,l,d,s]]}function YA(e,t){let n=e[1],r=e[2],o=e[3],s=He(Ce(),n,r,t),i=He(Ce(),r,o,t),a=He(Ce(),s,i,t);return[["Q",n,s,a],["Q",a,i,o]]}function JA(e,t){let n=xo(mo(e));if(!n)return Gm(["L",e[1],e[7]],t);let r=n.deltaTheta*t;return[dw({...n,deltaTheta:r}),dw({...n,theta1:n.theta1+r,deltaTheta:n.deltaTheta-r})]}function Ym(e,t){if(As(e))return Gm(["L",e[1],_n(e)],t);switch(e[0]){case"L":return Gm(e,t);case"C":return qu(e,t);case"Q":return YA(e,t);case"A":return JA(e,t)}}function qm([[e,t],[n,r]],[[o,s],[i,a]],d){let c=n-e,l=o-i,p=o-e,m=r-t,g=s-a,b=s-t,w=c*g-m*l;if(Math.abs(w)<d.collinear)return null;let k=(p*g-b*l)/w,_=(c*b-m*p)/w;return-d.param<=k&&k<=1+d.param&&-d.param<=_&&_<=1+d.param?[k,_]:null}function ZA(e,t,n){return!!qm(e,t,n)}function Es(e){let[t,n]=Ym(e.seg,.5),r=(e.startParam+e.endParam)/2;return[{seg:t,startParam:e.startParam,endParam:r,boundingBox:Nt(t)},{seg:n,startParam:r,endParam:e.endParam,boundingBox:Nt(n)}]}function lw(e){switch(e[0]){case"L":return[e[1],e[2]];case"C":return[e[1],e[4]];case"Q":return[e[1],e[3]];case"A":return[e[1],e[7]]}}function QA({seg:e,boundingBox:t},{seg:n,boundingBox:r},o){return e[0]==="L"?n[0]==="L"?ZA([e[1],e[2]],[n[1],n[2]],o):Yu([e[1],e[2]],r):n[0]==="L"?Yu([n[1],n[2]],t):Gu(t,r)}function rc(e,t,n){let r=e[0];if(t[0]!==r)return!1;switch(r){case"L":return ut(e[1],t[1],n)&&ut(e[2],t[2],n);case"C":return ut(e[1],t[1],n)&&ut(e[2],t[2],n)&&ut(e[3],t[3],n)&&ut(e[4],t[4],n);case"Q":return ut(e[1],t[1],n)&&ut(e[2],t[2],n)&&ut(e[3],t[3],n);case"A":return ut(e[1],t[1],n)&&Math.abs(e[2]-t[2])<n&&Math.abs(e[3]-t[3])<n&&(Math.abs(e[2]-e[3])<n||Math.abs(e[4]-t[4])<n)&&e[5]===t[5]&&e[6]===t[6]&&ut(e[7],t[7],n)}}function e$(e,t,n){let r=Kn([0,0],e[1],e[0]),o=Kn([0,0],t[1],t[0]);rw(r,r),rw(o,o);let s=Math.abs(Ms(r,o));return Math.abs(s-1)<n}var t$=(()=>{let e=Ce(),t=Ce(),n=Ce(),r=Ce(),o=Ce(),s=Ce();return function(a,d){Kn(e,a[1],a[0]),Kn(t,d[1],d[0]),Ju(e,e,1/ow(e)),Ju(t,t,1/ow(t));let c=[];Kn(n,d[0],a[0]);let l=Ms(n,e);l>=0&&l<=1&&c.push([l,0]),Kn(r,d[1],a[0]);let p=Ms(r,e);p>=0&&p<=1&&c.push([p,1]),Kn(o,a[0],d[0]);let m=Ms(o,t);m>=0&&m<=1&&c.push([0,m]),Kn(s,a[1],d[0]);let g=Ms(s,t);return g>=0&&g<=1&&c.push([1,g]),c}})(),fw=8;function n$(e,t,n,r,o){for(let s=1;s<fw;s++){let i=s/fw,a=Sn(e,ct(n.t0,r.t0,i)),d=Sn(t,ct(n.t1,r.t1,i));if(Math.hypot(a[0]-d[0],a[1]-d[1])>o.point)return!1}return!0}var Um=2*Math.PI;function r$(e,t,n){if(e[0]!=="A"||t[0]!=="A")return null;let r=xo(mo(e)),o=xo(mo(t));if(!r||!o||Math.abs(r.center[0]-o.center[0])>n.point||Math.abs(r.center[1]-o.center[1])>n.point||Math.abs(r.rx-o.rx)>n.point||Math.abs(r.ry-o.ry)>n.point)return null;let s=Math.max(r.rx,r.ry);if(!(s>0))return null;let i=n.point/s;if(Math.abs(r.rx-r.ry)>n.point){let M=Math.abs(((r.phi-o.phi)%180+180)%180);if(Math.min(M,180-M)>i*180/Math.PI)return null}if(Math.abs(r.deltaTheta)<i||Math.abs(o.deltaTheta)<i)return null;let a=Gn(r.phi),d=Gn(o.phi),c=(M,R)=>{let B=M.theta1+R,D=M.theta1+M.deltaTheta+R;return B<=D?[B,D]:[D,B]},[l,p]=c(r,a),[m,g]=c(o,d),b=(M,R,B)=>{let D=(B-R-M.theta1)/M.deltaTheta;return D<0?0:D>1?1:D},w=[],k=Math.floor((l-g)/Um),_=Math.ceil((p-m)/Um);for(let M=k;M<=_;M++){let R=M*Um,B=Math.max(l,m+R),D=Math.min(p,g+R);if(!(D<B-i)){if(D-B<=i){let V=(B+D)/2;w.push([b(r,a,V),b(o,d,V-R)]);continue}w.push([b(r,a,B),b(o,d,B-R)]),w.push([b(r,a,D),b(o,d,D-R)])}}return w}function pw(e){switch(e[0]){case"L":return e[2];case"C":return e[4];case"Q":return e[3];case"A":return e[7]}}function o$(e,t,n){return e[0]!==t[0]||!ut(e[1],pw(t),n.point)||!ut(pw(e),t[1],n.point)?!1:rc(e,ra(t),n.point)}var hw=16;function s$(e,t,n,r){if(n.length<2)return null;let o=n[0],s=n[n.length-1],i=s.t0-o.t0,a=s.t1-o.t1;if(Math.abs(i)<r.param||Math.abs(a)<r.param)return null;let d=a/i;if(!Number.isFinite(d))return null;let c=B=>o.t1+(B-o.t0)*d,l=B=>o.t0+(B-o.t1)/d,p=l(0),m=l(1),g=Math.max(0,Math.min(p,m)),b=Math.min(1,Math.max(p,m));if(!(b>g))return null;let w=B=>B<0?0:B>1?1:B,k=B=>B<r.param?0:B>1-r.param?1:B;g=k(g),b=k(b);let _=[[g,k(w(c(g)))],[b,k(w(c(b)))]],M=Sn(e,_[0][0]),R=Sn(e,_[1][0]);if(Math.hypot(M[0]-R[0],M[1]-R[1])<=r.point)return null;for(let B=0;B<=hw;B++){let D=B/hw,V=Sn(e,ct(_[0][0],_[1][0],D)),T=Sn(t,ct(_[0][1],_[1][1],D));if(Math.hypot(V[0]-T[0],V[1]-T[1])>r.point)return null}return _}function i$(e,t,n,r){if(n.length<=1)return n.map(a=>[a.t0,a.t1]);let o=[...n].sort((a,d)=>a.t0-d.t0),s=[[o[0]]];for(let a=1;a<o.length;a++){let d=s[s.length-1],c=d[d.length-1];n$(e,t,c,o[a],r)?d.push(o[a]):s.push([o[a]])}let i=e[0]===t[0];return s.flatMap(a=>{let d=i?s$(e,t,a,r):null;return d||[d$(e,t,a)]})}var a$=40,ju=(Math.sqrt(5)-1)/2;function d$(e,t,n){let r=n[0];for(let b of n)b.gap<r.gap&&(r=b);if(n.length<2)return[r.t0,r.t1];let o=n[0],s=n[n.length-1],i=b=>{let w=ct(o.t0,s.t0,b),k=ct(o.t1,s.t1,b),_=Sn(e,w),M=Sn(t,k);return{t0:w,t1:k,gap:Math.hypot(_[0]-M[0],_[1]-M[1])}},a=0,d=1,c=d-ju*(d-a),l=a+ju*(d-a),p=i(c),m=i(l);for(let b=0;b<a$;b++)p.gap<m.gap?(d=l,l=c,m=p,c=d-ju*(d-a),p=i(c)):(a=c,c=l,p=m,l=a+ju*(d-a),m=i(l));let g=p.gap<m.gap?p:m;return g.gap<r.gap?[g.t0,g.t1]:[r.t0,r.t1]}function u$(e,t,n){let r=e,o=t;if(r[0]==="L"&&o[0]==="L"){let m=[r[1],r[2]],g=[o[1],o[2]];if(e$(m,g,n.collinear))return t$(m,g);let b=qm(m,g,n);return b?[b]:[]}let s=r$(r,o,n);if(s)return s;let i=[[{seg:r,startParam:0,endParam:1,boundingBox:Nt(r)},{seg:o,startParam:0,endParam:1,boundingBox:Nt(o)}]],a=[];function d(m,g){let b=Sn(e,m),w=Sn(t,g);a.push({t0:m,t1:g,gap:Math.hypot(b[0]-w[0],b[1]-w[1])})}function c(m,g){let b=lw(m.seg),w=lw(g.seg),k=qm(b,w,n);k&&d(ct(m.startParam,m.endParam,k[0]),ct(g.startParam,g.endParam,k[1]))}function l(m){return As(m.seg,kr)||Zi(m.boundingBox)<=n.linear||m.endParam-m.startParam<n.param}let p=0;for(;i.length;){if(p++>bw){for(let[b,w]of i)c(b,w);break}let m=[],g=!1;for(let[b,w]of i){if(rc(b.seg,w.seg,n.point)){d(b.startParam,w.startParam),d(b.endParam,w.endParam);continue}if(o$(b.seg,w.seg,n)){d(b.startParam,w.endParam),d(b.endParam,w.startParam);continue}let k=l(b),_=l(w);if(k&&_)c(b,w);else{let M,R;if(!k&&!_){let B=Zi(b.boundingBox),D=Zi(w.boundingBox);B>D?(M=Es(b),R=[w]):D>B?(M=[b],R=Es(w)):(M=Es(b),R=Es(w))}else M=k?[b]:Es(b),R=_?[w]:Es(w);for(let B of M){for(let D of R)if(QA(B,D,n)&&(m.push([B,D]),m.length>=ea)){g=!0;break}if(m.length>=ea)break}}if(m.length>=ea)break}if(g){for(let[b,w]of i)c(b,w);break}i=m}return i$(e,t,a,n)}var mw=Object.hasOwn;function qn(e){let t=new WeakMap;return(n,...r)=>{if(t.has(n))return t.get(n);{let o=e(n,...r);return t.set(n,o),o}}}function*c$(e,t){let n=0;for(let r of e)yield t(r,n++)}var zm=2*Math.PI,l$=8,_w=8,vt;(function(e){e[e.Union=0]="Union",e[e.Difference=1]="Difference",e[e.Intersection=2]="Intersection",e[e.Exclusion=3]="Exclusion",e[e.Division=4]="Division",e[e.Fracture=5]="Fracture"})(vt||(vt={}));var go;(function(e){e[e.NonZero=0]="NonZero",e[e.EvenOdd=1]="EvenOdd"})(go||(go={}));function f$(e){return e.values().next().value}function p$(e,t){let n=new Array(e).fill(!1);return n[t]=!0,n}function h$(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function m$(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Ku(e,t){for(let n=0;n<t.length;n++)t[n]&&(e[n]=!0)}function xw(e,t,n){let[,r,o]=e,s=n?-1:1;for(let i=0;i<t.length;i++)t[i]&&(r.windings[i]+=s,o.windings[i]-=s)}function Ew(){let e=0;return qn(()=>e++)}function x$(e,t){return n=>({seg:n,parents:p$(e,t)})}function g$(e,t){for(let n=0;n<e.length;n++){let r=e[n];if(r.seg[0]!=="C")continue;let o=PA(r.seg);if(!o)continue;o[0]>o[1]&&o.reverse();let[s,i]=o;if(Math.abs(s-i)<Xt.param){let[a,d]=qu(r.seg,s);e[n]={seg:a,parents:r.parents},e.push({seg:d,parents:r.parents})}else{let[a,d]=qu(r.seg,s),[c,l]=qu(d,(i-s)/(1-s));e[n]={seg:a,parents:r.parents},e.push({seg:c,parents:r.parents},{seg:l,parents:r.parents})}}}function y$(e,t){let n=e.map(c=>({...c,boundingBox:Nt(c.seg)})),r=n.reduce((c,{boundingBox:l})=>Cs(c,l),null);if(!r)return{edges:[],totalBoundingBox:null};let o=new ta(r,l$),s={};function i(c,l){mw(s,c)||(s[c]=[]),s[c].push(l)}let a=0;for(let c=0;c<n.length;c++){let l=n[c],p=o.find(l.boundingBox);for(let m of p){if(a>=ea)break;let g=e[m],b=u$(l.seg,g.seg,t);for(let[w,k]of b)i(c,w),i(m,k);a++}if(o.insert(l.boundingBox,c),a>=ea)break}let d=[];for(let c=0;c<n.length;c++){let l=n[c];if(!mw(s,c)){d.push(l);continue}let p=s[c];p.sort((b,w)=>b-w),p.length+1>jm&&(p.length=Math.max(0,jm-1));let m=l.seg,g=0;for(let b=0;b<p.length;b++){let w=p[b];if(w>1-Xt.param)break;let k=(w-g)/(1-g);if(g=w,k<Xt.param||k>1-Xt.param)continue;let[_,M]=Ym(m,k);d.push({seg:_,boundingBox:Nt(_),parents:l.parents}),m=M}d.push({seg:m,boundingBox:Nt(m),parents:l.parents})}return{edges:d,totalBoundingBox:r}}function b$(e,t,n){let r=new ta(t,_w),o=[];function s(g){let b=Qi(g,n.point),w=r.find(b);if(w.size)return f$(w);{let k={point:g,outgoingEdges:[]};return r.insert(b,k),o.push(k),k}}let i=Ew(),a=new Map;function d(g,b){return a.get(g)?.get(b)}function c(g,b){let w=a.get(g);w||(w=new Map,a.set(g,w));let k=w.get(b);return k||(k=[],w.set(b,k)),k}let l=e.flatMap(g=>{let b=tc(g.seg),w=_n(g.seg);if(ut(b,w,n.point))switch(g.seg[0]){case"L":return[];case"C":if(ut(g.seg[1],g.seg[2],n.point)&&ut(g.seg[3],g.seg[4],n.point))return[];break;case"Q":if(ut(g.seg[1],g.seg[2],n.point))return[];break;case"A":return[]}let k=s(b),_=s(w),M=i(k),R=i(_),B=d(M,R);if(B){let O=B.find(j=>rc(j[0].seg,g.seg,n.point));if(O)return xw(O,g.parents,!1),Ku(O[1].parents,g.parents),Ku(O[2].parents,g.parents),[]}let D=d(R,M);if(D){let O=ra(g.seg),j=D.find($=>rc($[0].seg,O,n.point));if(j)return xw(j,g.parents,!0),Ku(j[1].parents,g.parents),Ku(j[2].parents,g.parents),[]}let V={...g,parents:g.parents.slice(),incidentVertices:[k,_],directionFlag:!1,windings:g.parents.map(O=>O?1:0),twin:null},T={...g,parents:g.parents.slice(),incidentVertices:[_,k],directionFlag:!0,windings:g.parents.map(O=>O?-1:0),twin:V};return V.twin=T,k.outgoingEdges.push(V),_.outgoingEdges.push(T),c(M,R).push([g,V,T]),[V,T]});for(let g of l)for(let b=0;b<g.parents.length;b++)g.parents[b]=g.windings[b]!==0;let p=g=>g.windings.some(b=>b!==0),m=l.filter(p);for(let g of o)g.outgoingEdges=g.outgoingEdges.filter(p);return{edges:m,vertices:o.filter(g=>g.outgoingEdges.length)}}function Wu(e){return e.outgoingEdges.length}function v$({vertices:e}){let t=[],n=[],r=0,o=qn(p=>{let m={outgoingEdges:[]};return n.push(m),m}),s=Ew(),i=new Map;function a(p,m){return i.get(p)?.get(m)}function d(p,m,g){let b=i.get(p);b||(b=new Map,i.set(p,b)),b.set(m,g)}let c=new WeakSet;for(let p of e){if(Wu(p)===2)continue;let m=o(p);for(let g of p.outgoingEdges){let b=[],w=g;for(;h$(w.parents,g.parents)&&w.directionFlag===g.directionFlag&&m$(w.windings,g.windings)&&Wu(w.incidentVertices[1])===2;){b.push(w.seg),c.add(w.incidentVertices[1]);let[T,O]=w.incidentVertices[1].outgoingEdges;w=T.twin===w?O:T}b.push(w.seg);let k=o(w.incidentVertices[1]),_=s(g),M=s(w),R=s(w.twin),B=s(g.twin),D=a(R,B)??null,V={segments:b,parents:g.parents,incidentVertices:[m,k],directionFlag:g.directionFlag,windings:g.windings,twin:D,id:r++};D&&(D.twin=V),d(_,M,V),m.outgoingEdges.push(V),t.push(V)}}let l=[];for(let p of e){if(Wu(p)!==2||c.has(p))continue;let m=p.outgoingEdges[0],g={segments:[],parents:m.parents,directionFlag:m.directionFlag,windings:m.windings};do{g.segments.push(m.seg),c.add(m.incidentVertices[0]);let[b,w]=m.incidentVertices[1].outgoingEdges;m=b.twin===m?w:b}while(m.incidentVertices[0]!==p);l.push(g)}return{edges:t,vertices:n,cycles:l}}function w$(e,t){function n(i){let a=new WeakSet,d=new WeakMap;function c(l,p,m){if(d.has(l))return d.get(l);d.set(l,m);let g=1/0;for(let b of l.outgoingEdges)b.parents[i]&&b!==p&&(g=Math.min(g,c(b.incidentVertices[1],b.twin,m+1)));return g<=m&&a.add(l),g}for(let l of e.edges)l.parents[i]&&c(l.incidentVertices[0],null,0);return a}let r=[];for(let i=0;i<t;i++)r.push(n(i));function o(i){return r.some(a=>a.has(i))}function s(i){for(let a=0;a<t;a++)if(i.parents[a]&&r[a].has(i.incidentVertices[0])&&r[a].has(i.incidentVertices[1]))return!0;return!1}e.vertices=e.vertices.filter(o);for(let i of e.vertices)i.outgoingEdges=i.outgoingEdges.filter(s);e.edges=e.edges.filter(s)}var Mw=(()=>{let e=Ce();return function({directionFlag:n,segments:r}){return Sw(r[0],n?1:0,e),Math.hypot(e[0],e[1])}})(),gw=(()=>{let e=Ce(),t=Ce(),n=Ce();return function(o,s=0){let{directionFlag:i,segments:a}=o,d=a[0],l=i?1:0;if(s>0){let _=Mw(o),M=_>0?Math.min(OA,s/_):Xt.param;l=i?1-M:M}if(Sw(d,l,n),i&&(n[0]=-n[0],n[1]=-n[1]),n[0]*n[0]+n[1]*n[1]>=tw)return Math.atan2(n[1],n[0]);nc(d,l,e);let m=Xt.param;for(let _=0;_<AA;_++){let M=i?Math.max(0,l-m):Math.min(1,l+m);nc(d,M,t);let R=t[0]-e[0],B=t[1]-e[1];if(R*R+B*B>=tw)return Math.atan2(B,R);m*=2}let g=tc(d),b=_n(d),w=b[0]-g[0],k=b[1]-g[1];return i&&(w=-w,k=-k),Math.atan2(k,w)}})();function k$({vertices:e}){for(let t of e){if(Wu(t)>2){let n=new WeakMap,r=1/0;for(let i of t.outgoingEdges){let a=Mw(i);a>0&&(r=Math.min(r,a))}let o=Number.isFinite(r)?Xt.param*r:Xt.param,s=new WeakMap;for(let i of t.outgoingEdges){let a=gw(i);n.set(i,a),s.set(i,S$(gw(i,o)-a))}t.outgoingEdges.sort((i,a)=>{let d=s.get(i),c=s.get(a),l=Math.max($A,Math.abs(d),Math.abs(c)),p=n.get(i)-n.get(a);return Math.abs(p)>l?p:d-c})}for(let n=0;n<t.outgoingEdges.length;n++)t.outgoingEdges[n].indexInVertex=n}}function S$(e){return((e+Math.PI)%zm+zm)%zm-Math.PI}function _$(e){let{outgoingEdges:t}=e.incidentVertices[1],n=e.twin?.indexInVertex;return t[(n+1)%t.length]}var Cw=qn(e=>e.incidentEdges.flatMap(t=>{let r=[],o=Ce();for(let s of t.segments)for(let i=0;i<64;i++){let a=i/64,d=t.directionFlag?1-a:a;nc(s,d,o),r.push([o[0],o[1]])}return r}));function Aw(e,t,n){let r=e>=n,o=t<n;return r===o}function Wm(e,t,n){return Aw(e[1],t[1],n[1])?KA(n[1],e[1],t[1],e[0],t[0])>=n[0]:!1}function E$(e,t){if(e.length<=2)return 0;let n=e[e.length-1],r=0;for(let o of e)Wm(n,o,t)&&(r+=o[1]>n[1]?-1:1),n=o;return r}var M$=qn(e=>{let t=Cw(e),n=0;for(let r=0;r<t.length;r++){let o=t[r],s=t[(r+1)%t.length];n+=o[0]*s[1]-s[0]*o[1]}return n/2}),C$=qn(e=>{let t=Cw(e);for(let n=0;n<t.length;n++){let r=t[n],o=t[(n+1)%t.length],s=t[(n+2)%t.length],i=[(r[0]+o[0]+s[0])/3,(r[1]+o[1]+s[1])/3],a=E$(t,i);if(a!==0)return{winding:a,point:i}}});function A$({edges:e,cycles:t}){let n=[],r=new WeakMap;for(let d of e){if(r.has(d))continue;let c={incidentEdges:[],flags:[]},l=d;do{let p=r.get(l.twin)??null,m={segments:l.segments,parents:l.parents,incidentVertex:c,directionFlag:l.directionFlag,windings:l.windings,twin:p};p&&(p.twin=m),r.set(l,m),c.incidentEdges.push(m),l=_$(l)}while(l!==d);n.push(c)}for(let d of t){let c={incidentEdges:[],flags:[]},l={segments:d.segments,parents:d.parents,incidentVertex:c,directionFlag:d.directionFlag,windings:d.windings,twin:null},p={incidentEdges:[],flags:[]},m={segments:[...d.segments].reverse(),parents:d.parents,incidentVertex:p,directionFlag:!d.directionFlag,windings:d.windings.map(g=>-g),twin:l};l.twin=m,c.incidentEdges.push(l),p.incidentEdges.push(m),n.push(c,p)}let o=d=>M$(d)>0,s=[],i=new WeakSet,a=new WeakSet;for(let d of n){if(i.has(d))continue;let c=[],l=[],p=g=>{i.has(g)||c.push(g),i.add(g);for(let b of g.incidentEdges){if(a.has(b))continue;let{twin:w}=b;l.push(b,w),a.add(b),a.add(w),p(w.incidentVertex)}};p(d);let m=c.find(o);s.push({vertices:c,edges:l,outerFace:m})}return s}function Xu(e,t){return Aw(e.top,e.bottom,t[1])&&e.right>=t[0]}function $$(e,t,n,r=Nt(e)){if(!Xu(r,t))return 0;let o=[{boundingBox:r,seg:e}],s=0,i=0;for(;o.length>0;){if(i++>bw||o.length>jm){for(let{seg:d}of o)Wm(tc(d),_n(d),t)&&s++;break}let a=[];for(let{boundingBox:d,seg:c}of o)if(As(c)||Zi(d)<n.linear)Wm(tc(c),_n(c),t)&&s++;else{let l=Ym(c,.5),p=Nt(l[0]);Xu(p,t)&&a.push({boundingBox:p,seg:l[0]});let m=Nt(l[1]);Xu(m,t)&&a.push({boundingBox:m,seg:l[1]})}o=a}return s}var O$=qn(e=>{for(let t of e.vertices)if(t!==e.outerFace)return C$(t).point}),$w=qn(e=>e.incidentEdges.flatMap(t=>t.segments.map(n=>({seg:n,boundingBox:Nt(n)})))),Ow=qn(e=>{let t=null;for(let{boundingBox:n}of $w(e))t=Cs(t,n);return t}),T$=qn(e=>{let t=null;for(let n of e.vertices)n!==e.outerFace&&(t=Cs(t,Ow(n)));return t});function Tw(e,t,n){return t[0]>=e.left-n.point&&t[0]<=e.right+n.point&&t[1]>=e.top-n.point&&t[1]<=e.bottom+n.point}function L$({top:e,right:t,bottom:n,left:r}){return(t-r)*(n-e)}function P$(e,t,n){for(let r of e.vertices){if(r===e.outerFace||!Tw(Ow(r),t,n))continue;let o=0;for(let{seg:s,boundingBox:i}of $w(r))Xu(i,t)&&(o+=$$(s,t,n,i));if(o%2===1)return r}return null}function D$(e,t){if(e.length===0)return[];let n=null,r=e.map((a,d)=>{let c=O$(a),l=T$(a);return n=Cs(n,l),{index:d,component:a,interiorPoint:c,boundingBox:l,area:L$(l)}}),o=new WeakMap;for(let a of e)o.set(a,{component:a,outgoingEdges:new Map});let s=new ta(n,_w);for(let a of r)s.insert(a.boundingBox,a.index);let i=[];for(let a of r){let d=a.interiorPoint,c=Qi(d,t.point),l=s.find(c),p=null,m=null;for(let w of l){if(w===a.index)continue;let k=r[w];if(!Tw(k.boundingBox,d,t))continue;let _=P$(k.component,d,t);_&&(!p||k.area<p.area)&&(p=k,m=_)}let g=o.get(a.component);if(!p||!m){i.push(g);continue}let b=o.get(p.component);b.outgoingEdges.has(m)?b.outgoingEdges.get(m).push(g):b.outgoingEdges.set(m,[g])}return i}function N$(e,t){switch(t){case go.NonZero:return e!==0;case go.EvenOdd:return e%2!==0}}function R$(e,t){let n=t.length;function r(o,s){let i=new WeakSet;function a(d,c){if(!i.has(d)){i.add(d),d.flags=c.map((l,p)=>N$(l,t[p]));for(let l of d.incidentEdges){let p=l.twin,m=c.slice();for(let g=0;g<n;g++)m[g]+=l.windings[g];a(p.incidentVertex,m)}if(o.outgoingEdges.has(d)){let l=o.outgoingEdges.get(d);for(let p of l)r(p,c)}}}a(o.component.outerFace,s)}for(let o of e)r(o,new Array(n).fill(0))}function*I$(e,t){function*n(r){for(let o of r.component.vertices)t(o)&&(yield o);for(let o of r.outgoingEdges.values())for(let s of o)yield*n(s)}for(let r of e)yield*n(r)}function*yw(e){function t(o){return e.has(o.incidentVertex)===e.has(o.twin.incidentVertex)}let n=new WeakMap;for(let o of e){let s=o.incidentEdges[o.incidentEdges.length-1];for(let i of o.incidentEdges)n.set(s,i),s=i}let r=new WeakSet;for(let o of e)for(let s of o.incidentEdges){if(t(s)||r.has(s))continue;let i=s;do for(i.directionFlag?yield*c$(i.segments,ra):yield*i.segments,r.add(i),i=n.get(i);t(i);)i=n.get(i.twin);while(i!==s)}}function Lw(e,t){let n=[],r=[];function o(s){for(let i of s.component.vertices){if(!t(i)||i===s.component.outerFace)continue;let a=[];for(let d of i.incidentEdges)d.directionFlag?a.push(...d.segments.map(ra)):a.push(...d.segments);if(s.outgoingEdges.has(i))for(let d of s.outgoingEdges.get(i)){let{outerFace:c}=d.component;for(let l of c.incidentEdges)l.directionFlag?a.push(...l.segments.map(ra)):a.push(...l.segments)}n.push(i),r.push(a)}for(let i of s.outgoingEdges.values())for(let a of i)o(a)}for(let s of e)o(s);return{faces:n,paths:r}}function F$(e,t){return Lw(e,t).paths}function B$(e,t){function n(r){for(let[o,s]of r.outgoingEdges){if(t.has(o))for(let i of s){let{outerFace:a}=i.component;t.add(a)}for(let i of s)n(i)}}for(let r of e)n(r)}var V$={[vt.Union]:e=>e.some(Boolean),[vt.Difference]:e=>e[0]&&!e.slice(1).some(Boolean),[vt.Intersection]:e=>e.every(Boolean),[vt.Exclusion]:e=>e.reduce((t,n)=>t+(n?1:0),0)%2===1,[vt.Division]:e=>e[0],[vt.Fracture]:e=>e.some(Boolean)},oa=class{constructor(t){let n=t.length,r=t.flatMap(({path:m},g)=>m.map(x$(n,g))),o=null;for(let{seg:m}of r)o=Cs(o,Nt(m));let s=LA(o?Zi(o):0);for(let m of r)m.seg=GA(m.seg,s.point);g$(r);let{edges:i,totalBoundingBox:a}=y$(r,s);if(!a){this.nestingTrees=[];return}let d=b$(i,a,s),c=v$(d);w$(c,n),k$(c);let l=A$(c),p=D$(l,s);R$(p,t.map(({fillRule:m})=>m)),this.nestingTrees=p}get(t){let n=r=>V$[t](r.flags);switch(t){case vt.Division:case vt.Fracture:return F$(this.nestingTrees,n);default:{let r=new Set(I$(this.nestingTrees,n));return[[...yw(r)]]}}}getFaces(){return this.getRegions().paths}buildShape(t){let{faces:n}=this.getRegions(),r=new Set;for(let o of t){let s=n[o];s&&r.add(s)}return B$(this.nestingTrees,r),[...yw(r)]}getRegions(){return this.regions??(this.regions=Lw(this.nestingTrees,t=>t.flags.some(Boolean)))}};var Pw={union:vt.Union,subtract:vt.Difference,intersect:vt.Intersection,exclude:vt.Exclusion},sa=.001,H$=.01;function Dw(e,t){let n=t.map(s=>({path:G$(s.contours.filter(i=>!K$(i))),fillRule:s.evenOdd?go.EvenOdd:go.NonZero})),r=s=>s.path.length===0;if(e==="intersect"&&n.some(r))return[];if(e==="subtract"&&r(n[0]))return[];let o=n.filter(s=>!r(s));return o.length===0?[]:z$(e,o).flatMap(q$).map(W$).filter(X$)}var U$=[.001,.003,.007];function z$(e,t){try{return new oa([...t]).get(Pw[e])}catch(n){for(let r of U$){let o=t.map((s,i)=>({fillRule:s.fillRule,path:i===0?s.path:j$(s.path,r*i,r*i*.618)}));try{return new oa(o).get(Pw[e])}catch{}}throw n}}function j$(e,t,n){let r=o=>[o[0]+t,o[1]+n];return e.map(o=>o[0]==="L"?["L",r(o[1]),r(o[2])]:o[0]==="C"?["C",r(o[1]),r(o[2]),r(o[3]),r(o[4])]:o[0]==="Q"?["Q",r(o[1]),r(o[2]),r(o[3])]:["A",r(o[1]),o[2],o[3],o[4],o[5],o[6],r(o[7])])}function K$(e){let t=[],n=zt(e);for(let i=0;i<n;i+=1)t.push(...dr(jt(e,i),.1));!e.closed&&e.anchors.length>0&&t.push(e.anchors[0]);let r=t[0];if(!r)return!0;let o=r;for(let i of t)Math.hypot(i.x-r.x,i.y-r.y)>Math.hypot(o.x-r.x,o.y-r.y)&&(o=i);let s=Math.hypot(o.x-r.x,o.y-r.y);return s<=sa?!0:t.every(i=>Math.abs((o.x-r.x)*(i.y-r.y)-(o.y-r.y)*(i.x-r.x))/s<=sa)}function G$(e){let t=[];for(let n of e){let r=zt(n);if(r!==0){for(let o=0;o<r;o+=1){let[s,i,a,d]=jt(n,o);ja(n,o)?oc(s,d)||t.push(["L",Sr(s),Sr(d)]):t.push(["C",Sr(s),Sr(i),Sr(a),Sr(d)])}if(!n.closed){let o=n.anchors[0],s=n.anchors[n.anchors.length-1];oc(o,s)||t.push(["L",Sr(s),Sr(o)])}}}return t}function Sr(e){return[e.x,e.y]}function q$(e){let t=[],n,r=()=>{n&&n.anchors.length>1&&t.push({closed:!0,anchors:n.anchors}),n=void 0};for(let o of e)for(let s of Nw(o)){let[i,a,d,c]=s;if(n){let g=n.anchors[n.anchors.length-1];oc(g,i)||r()}n||(n={anchors:[{x:i.x,y:i.y}],start:i});let l=a===void 0||d===void 0,p=n.anchors,m=p[p.length-1];if(l||(p[p.length-1]={...m,out:a}),oc(c,n.start)&&p.length>1){l||(p[0]={...p[0],in:d}),r();continue}p.push(l?{x:c.x,y:c.y}:{x:c.x,y:c.y,in:d})}return r(),t}function Nw(e){let t=n=>({x:n[0],y:n[1]});if(e[0]==="L")return[[t(e[1]),void 0,void 0,t(e[2])]];if(e[0]==="C")return[[t(e[1]),t(e[2]),t(e[3]),t(e[4])]];if(e[0]==="Q"){let[n,r,o]=[t(e[1]),t(e[2]),t(e[3])];return[[n,{x:n.x+(r.x-n.x)*2/3,y:n.y+(r.y-n.y)*2/3},{x:o.x+(r.x-o.x)*2/3,y:o.y+(r.y-o.y)*2/3},o]]}return Xm(e).flatMap(Nw)}function W$(e){let t=[...e.anchors],n=!0;for(;n&&t.length>3;){n=!1;for(let r=0;r<t.length;r+=1){if(!e.closed&&(r===0||r===t.length-1))continue;let o=t[(r-1+t.length)%t.length],s=t[r],i=t[(r+1)%t.length];if(o.out||s.in||s.out||i.in)continue;let a=(s.x-o.x)*(i.y-s.y)-(s.y-o.y)*(i.x-s.x),d=(s.x-o.x)*(i.x-s.x)+(s.y-o.y)*(i.y-s.y),c=Math.hypot(i.x-o.x,i.y-o.y);if(d>=0&&Math.abs(a)<=sa*Math.max(c,1)){t.splice(r,1),n=!0;break}}}return{closed:e.closed,anchors:t}}function X$(e){if(e.anchors.length<2)return!1;let t=[],n=zt(e);for(let o=0;o<n;o+=1)t.push(...dr(jt(e,o),.1));let r=0;for(let o=0;o<t.length;o+=1){let s=t[o],i=t[(o+1)%t.length];r+=s.x*i.y-i.x*s.y}return Math.abs(r/2)>=H$}function oc(e,t){return Math.abs(e.x-t.x)<=sa&&Math.abs(e.y-t.y)<=sa}function Jm(e,t){let n=bi(e,{x:t.x,y:t.y,w:t.w,h:t.h},t.values);return n===void 0?void 0:{contours:n.contours,evenOdd:n.rule==="evenodd"}}var Y$=["name","fill","stroke","strokeWidth","dash","strokeAlign","opacity","cap","join","blend","shadow","blur","backdrop","hidden","locked"];function ia(e){return Math.round(e*100)/100}var Rw=e=>Math.floor(e*100+1e-9)/100,Iw=e=>Math.ceil(e*100-1e-9)/100;function Zm(e,t){let n=Jo(e,t.ids,t.as);if(n)return{ok:!1,...n};try{return J$(e,t)}catch(r){return{ok:!1,...Zo(r)}}}function J$(e,t){let n=Pe(e),r=ef(e,t.ids),o=z(e.root,r[0]),s=Le(e.root,o.id);if(!s)return{ok:!1,code:"unknown-reference",message:`No node ${o.id}`};let i=[];for(let P of r){let C=z(e.root,P),G=n.nodes.get(P),ee=G&&Jm(C,G);if(!ee)return{ok:!1,code:"merge-not-a-shape",message:`${P} has no outline`,nodeId:P};i.push(ee)}let a=Dw(t.verb,i),d=Kt(a);if(a.length===0||!d||d.w<=0||d.h<=0)return{ok:!1,code:"merge-empty",message:`${Yo[t.verb]} of ${r.join(", ")} leaves nothing${t.verb==="intersect"?": the shapes do not all overlap":""}; nothing was changed`};let c=Rw(d.x),l=Rw(d.y),p=Math.max(.01,ia(Iw(d.x+d.w)-c)),m=Math.max(.01,ia(Iw(d.y+d.h)-l)),g=ze(Be(a,P=>({x:P.x-c,y:P.y-l}))),b=o,w={};for(let P of Y$)b[P]!==void 0&&(w[P]=b[P]);let k=r.some(P=>z(e.root,P)?.locked===!0),_=t.as??o.id,M=To({...w,...k?{locked:!0}:{},id:_,x:c,y:l,w:p,h:m,view:Pn({x:0,y:0,w:p,h:m}),d:g,...a.length>1?{rule:"evenodd"}:{}}),R=s.children.findIndex(P=>P.id===o.id),B=Z$(e,r,s.id),D=[...r.map(P=>({op:"remove",id:P})),...B.map(P=>({op:"remove",id:P})),{op:"insert",parent:s.id,index:R,node:M},...Q$(e,o.id,_)],V=[];de(e.root,P=>{st(P)&&P.mask!==void 0&&P.mask!==_&&r.includes(P.mask)&&V.push({op:"set",id:P.id,prop:"mask",value:_})});let T=[...Vo(e,[...D,...V])],O=Ae(e,T).document,j=new Set([...r,_]),$=new Set([...r.filter(P=>P!==_),...B]);return{ok:!0,id:_,ops:[...T,...eO(n,O,j,$)]}}function Z$(e,t,n){let r=new Set(t),o=[],s=i=>{if(r.has(i.id))return!0;if(!me(i))return!1;let a=i.children.length>0;for(let d of i.children)s(d)||(a=!1);return a&&i.type==="group"&&i.id!==n?(o.push(i.id),!0):!1};return s(e.root),o.filter(i=>{let a=Le(e.root,i);for(;a;){if(o.includes(a.id))return!1;a=Le(e.root,a.id)}return!0})}function Q$(e,t,n){if(t===n||!e.motion)return[];let r=[];for(let[o,s]of Object.entries(e.motion)){if(!s.lines.some(a=>a.id===t||a.after===t))continue;let i=s.lines.map(a=>({...a,...a.id===t?{id:n}:{},...a.after===t?{after:n}:{}}));r.push({op:"setMotion",page:o,value:{...s,lines:i}})}return r}function eO(e,t,n,r){let o=Pe(t),s=[];for(let[i,a]of o.nodes){if(n.has(i))continue;let d=e.nodes.get(i),c=z(t.root,i);if(!d||!c||nO(t,i))continue;let l=c;for(let p of Vt(c)){let m=d.values[p],g=a.values[p];m===void 0||g===void 0||ia(m)===ia(g)&&!tO(l[p],r)||s.push({op:"set",id:i,prop:p,value:ia(m)})}}return s}function tO(e,t){if(!ve(e))return!1;let n=tt(e.expr);return n.ok&&on(n.ast).nodes.some(r=>t.has(r))}function nO(e,t){let n=Le(e.root,t);for(;n;){if(n.type==="instance")return!0;n=Le(e.root,n.id)}return!1}function Fw(e){let t=e,n=new Map,r=typeof URL.createObjectURL=="function"&&typeof URL.revokeObjectURL=="function";return{resolve(o){let s=n.get(o.hash);if(s!==void 0)return s;let i=t.get(o.hash);if(i===void 0)return;if(!r)return Ul(o.type,i);let a;try{a=jl(i)}catch{return}let d=URL.createObjectURL(new Blob([a],{type:o.type}));return n.set(o.hash,d),d},replace(o){t=o;for(let[s,i]of n)o.has(s)||(URL.revokeObjectURL(i),n.delete(s))},destroy(){for(let o of n.values())URL.revokeObjectURL(o);n.clear(),t=new Map}}}var Qm="0.6.0",Bw="https://cdn.jsdelivr.net/npm/@getv.design/embed@0.6.0/fonts/";var rO=Symbol.for(`vdesign.embed.documents@${Qm}`),Vw=globalThis[rO]??=new WeakMap,oO=/^Line (\d+): /;function tx(e){let t=oO.exec(e.message);return{...t?{line:Number(t[1])}:{},code:e.code,message:e.message,severity:e.severity}}function ex(e){if(typeof e!="string")return ic(gi("").document,new Map,[{code:"not-text",message:`parse() takes .vd text, not ${e===null?"null":typeof e}.`,severity:"error"}]);let t=sO(e);if(t.vd===void 0)return ic(gi("").document,new Map,[{code:"not-vd",message:"This SVG carries no vDesign document: only a .vd.svg exported from vDesign does.",severity:"error"}]);let{head:n,blocks:r}=Bl(t.vd),o=gi(n),s=o.problems.map(tx).map(i=>i.line===void 0?i:{...i,line:i.line+t.offset});return ic(o.document,r,s)}function sO(e){if(!nf(e))return{vd:e,offset:0};let t=tf(e);if(t===void 0)return{vd:void 0,offset:0};let n=e.indexOf("<vd:document"),r=e.indexOf("</vd:document",n),o=e.indexOf("<![CDATA[",n);if(o===-1||r!==-1&&o>r){let a=e.indexOf(">",n)+1,d=e.slice(0,a).split(`
3099
+ `).length-1;return{vd:t,offset:d+(e[a]===`
2890
3100
  `?1:0)}}let s=o+9,i=e.slice(0,s).split(`
2891
3101
  `).length-1;return{vd:t,offset:i+(e[s]===`
2892
- `?1:0)}}function ca(e,t,n){let r=Object.freeze({});return Ix.set(r,{document:e,blocks:t,problems:n}),{document:r,problems:n}}function Rx(e,t,n){return ca(e,t,[...n]).document}function fa(e){let t=Ix.get(e);if(!t)throw new TypeError("Not a vDesign document: pass .vd text or what parse() returned.");return t}async function Fx(e){if(typeof e=="string")return fa(Gf(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 fa(Gf(await t.text()).document)}return Uk(e)?fa(Gf(await e.text()).document):fa(e)}function Uk(e){let t=e;return typeof t.text=="function"&&typeof t.size=="number"}function jr(e){return e.root.children.filter(t=>t.type==="frame"&&t.hidden!==!0&&t.component!==!0)}function Bx(e,t){let n=jr(e),r=typeof t=="number"?n[t]:n.find(o=>o.id===t);if(!r){let o=n.map(s=>s.id).join(", ")||"none";throw new RangeError(`No page ${JSON.stringify(t)} in this document; its pages: ${o}.`)}return r}var Wf=["page","content","none"],Hx=24;function as(e){let t=e.getBoundingClientRect();return{width:t.width,height:t.height}}function Vx(e,t){let n=t===void 0?void 0:e.itemOf(t);if(!(!n||n.w<=0||n.h<=0))return{x:n.x,y:n.y,width:n.w,height:n.h}}function Ux(e,t,n,r){if(n==="none")return;let o=n==="page"?Vx(e,r):void 0;if(!o){e.fitToContent(Hx);return}let s=as(t);e.setCamera(vn(o,{width:s.width||o.width,height:s.height||o.height},Hx))}function zx(e,t,n){let r=e.getCamera(),o=as(t),s={x:(o.width/2-r.x)/r.zoom,y:(o.height/2-r.y)/r.zoom},i;for(let d of jr(e.getDocument())){let l=Vx(e,d.id);if(!l)continue;let f=Math.max(l.x-s.x,0,s.x-(l.x+l.width)),p=Math.max(l.y-s.y,0,s.y-(l.y+l.height)),m=Math.hypot(f,p);(!i||m<i.distance)&&(i={id:d.id,distance:m})}return i?.id??n}function jx(e,t,n){let r=e===void 0?t:String(e);if(r===void 0)return;let o;try{o=new URL(r,n??globalThis.location?.href)}catch{throw new TypeError(`fontBase must be a URL, or a path on this page; got ${r}.`)}return o.pathname.endsWith("/")||(o.pathname+="/"),o}var Xf=Symbol.for("vdesign.embed.handover");function Kx(e){return e[Xf]}var Gx=["exact","browser"],qx=["change"],zk=250;async function QT(e,t,n={}){let r=n.fit??"page";if(!Wf.includes(r))throw new TypeError(`edit: fit must be one of ${Wf.join(", ")}; got ${String(r)}.`);let o=n.fonts??"exact";if(!Gx.includes(o))throw new TypeError(`edit: fonts must be one of ${Gx.join(", ")}; got ${String(o)}.`);let s=o==="exact"?jx(n.fontBase,Nx,e.ownerDocument.baseURI):void 0,i=Kx(n),d=await Fx(t),l=i?.page!==void 0&&jr(d.document).some(U=>U.id===i.page)?i.page:n.page===void 0?jr(d.document)[0]?.id:Bx(d.document,n.page).id,f=i?.exact&&s?await jk(s,d.document):void 0,p=e.ownerDocument,m=p.defaultView,y=new Map(d.blocks),v=Px(y),C=p.createElement("div");C.className="vd-embed vd-embed--edit",C.style.position="relative",C.style.width="100%",C.style.height="100%",e.appendChild(C);let _=U=>{n.onLink?n.onLink(U):m?.open(U,"_blank","noopener,noreferrer")},g;try{g=Vf(C,{document:d.document,chrome:n.toolbar??!0,interactive:n.interactive??!0,wheel:"modifier",resolveAsset:U=>v.resolve(U),importImage:G,onOpenLink:_,...n.surface?{surface:n.surface}:{},...i?{camera:i.camera}:{},...f?{fonts:f.library}:{}})}catch(U){throw C.remove(),v.destroy(),U}let P=new Set,A=!1,R=!1,$=0,D=i===void 0,T,V,O,j;function M(U){return O?.of!==U&&(O={of:U,text:Pd(Ld(U),y)}),O.text}async function G(U){if(A||!U.type.startsWith("image/"))return null;let ue=new Uint8Array(await U.arrayBuffer()),Ee=await Nd(ue);return A?null:(y.has(Ee)||y.set(Ee,Rd(ue)),{type:U.type,hash:Ee,bytes:ue.length})}function z(){$+=1;try{Ux(g.viewer,C,r,l)}finally{$-=1}}let X=g.on("navigate",()=>{$===0&&(D=!1)}),ae=g.on("change",({document:U})=>{let ue={text:()=>M(U)};for(let Ee of[...P])Ee(ue);f&&I()}),de=as(C),S=m&&"ResizeObserver"in m?new m.ResizeObserver(()=>{let U=as(C);U.width===de.width&&U.height===de.height||(de=U,D&&z())}):void 0;S?.observe(C),i||z(),!f&&o==="exact"&&L();function w(){return V??=(async()=>{if(s)try{let{exactFontsAt:U}=await import("./chunks/fonts.js");return U(s)}catch{return}})(),V}async function L(){let U=await w();if(!(A||!U)){for(;;){let ue=g.getDocument(),Ee=await U.ensure(ue);if(A||Ee.length>0)return;if(g.getDocument()===ue)break}f=U,g.viewer.setFonts(U.library)}}function I(){T!==void 0&&clearTimeout(T),T=setTimeout(()=>{T=void 0;let U=f;A||!U||U.ensure(g.getDocument()).then(ue=>{A||f!==U||ue.length===0||(f=void 0,g.viewer.setFonts(void 0))})},zk)}function K(){A||(A=!0,T!==void 0&&clearTimeout(T),ae(),X(),S?.disconnect(),g.destroy(),v.destroy(),C.remove(),P.clear())}let J={getText:()=>M(g.getDocument()),getDocument(){let U=g.getDocument();return j?.of!==U&&(j={of:U,document:Rx(U,new Map(y),g.getProblems().map(qf))}),j.document},on(U,ue){if(!qx.includes(U))throw new TypeError(`edit: on() takes one of ${qx.join(", ")}; got ${String(U)}.`);return P.add(ue),()=>{P.delete(ue)}},undo(){A||g.undo()},redo(){A||g.redo()},async view(){if(A)throw new Error("edit: this editor was destroyed.");if(R)throw new Error("edit: view() is already opening a view.");R=!0,C.inert=!0;try{g.endTextEditing();let{view:U}=await import("./view.js");if(A)throw new Error("edit: this editor was destroyed.");l=zx(g.viewer,C,l);let ue={camera:g.viewer.getCamera(),page:l,exact:f!==void 0},Ee=g.getDocument(),Ae=await U(e,J.getDocument(),{...Kk(n),[Xf]:ue});if(A)throw Ae.destroy(),new Error("edit: this editor was destroyed.");let Ce=g.getDocument()===Ee?void 0:J.getDocument();return K(),Ce&&await Ae.load(Ce),Ae}finally{R=!1,C.inert=!1}},destroy:K};return J}async function jk(e,t){try{let{exactFontsAt:n}=await import("./chunks/fonts.js"),r=n(e);return(await r.ensure(t)).length===0?r:void 0}catch{return}}function Kk(e){let{toolbar:t,...n}=e;return n}export{QT as edit,Kf as version};
3102
+ `?1:0)}}function ic(e,t,n){let r=Object.freeze({});return Vw.set(r,{document:e,blocks:t,problems:n}),{document:r,problems:n}}function Hw(e,t,n){return ic(e,t,[...n]).document}function sc(e){let t=Vw.get(e);if(!t)throw new TypeError("Not a vDesign document: pass .vd text or what parse() returned.");return t}async function Uw(e){if(typeof e=="string")return sc(ex(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 sc(ex(await t.text()).document)}return iO(e)?sc(ex(await e.text()).document):sc(e)}function iO(e){let t=e;return typeof t.text=="function"&&typeof t.size=="number"}function $s(e){return e.root.children.filter(t=>t.type==="frame"&&t.hidden!==!0&&t.component!==!0)}function zw(e,t){let n=$s(e),r=typeof t=="number"?n[t]:n.find(o=>o.id===t);if(!r){let o=n.map(s=>s.id).join(", ")||"none";throw new RangeError(`No page ${JSON.stringify(t)} in this document; its pages: ${o}.`)}return r}var nx=["page","content","none"],jw=24;function aa(e){let t=e.getBoundingClientRect();return{width:t.width,height:t.height}}function Kw(e,t){let n=t===void 0?void 0:e.itemOf(t);if(!(!n||n.w<=0||n.h<=0))return{x:n.x,y:n.y,width:n.w,height:n.h}}function Gw(e,t,n,r){if(n==="none")return;let o=n==="page"?Kw(e,r):void 0;if(!o){e.fitToContent(jw);return}let s=aa(t);e.setCamera(bn(o,{width:s.width||o.width,height:s.height||o.height},jw))}function qw(e,t,n){let r=e.getCamera(),o=aa(t),s={x:(o.width/2-r.x)/r.zoom,y:(o.height/2-r.y)/r.zoom},i;for(let a of $s(e.getDocument())){let d=Kw(e,a.id);if(!d)continue;let c=Math.max(d.x-s.x,0,s.x-(d.x+d.width)),l=Math.max(d.y-s.y,0,s.y-(d.y+d.height)),p=Math.hypot(c,l);(!i||p<i.distance)&&(i={id:a.id,distance:p})}return i?.id??n}function Ww(e,t,n){let r=e===void 0?t:String(e);if(r===void 0)return;let o;try{o=new URL(r,n??globalThis.location?.href)}catch{throw new TypeError(`fontBase must be a URL, or a path on this page; got ${r}.`)}return o.pathname.endsWith("/")||(o.pathname+="/"),o}var rx=Symbol.for("vdesign.embed.handover");function Xw(e){return e[rx]}var Yw=["exact","browser"],Jw=["change"],aO=250;async function EV(e,t,n={}){let r=n.fit??"page";if(!nx.includes(r))throw new TypeError(`edit: fit must be one of ${nx.join(", ")}; got ${String(r)}.`);let o=n.fonts??"exact";if(!Yw.includes(o))throw new TypeError(`edit: fonts must be one of ${Yw.join(", ")}; got ${String(o)}.`);let s=o==="exact"?Ww(n.fontBase,Bw,e.ownerDocument.baseURI):void 0,i=Xw(n),a=await Uw(t),d=i?.page!==void 0&&$s(a.document).some(F=>F.id===i.page)?i.page:n.page===void 0?$s(a.document)[0]?.id:zw(a.document,n.page).id,c=i?.exact&&s?await dO(s,a.document):void 0,l=e.ownerDocument,p=l.defaultView,m=new Map(a.blocks),g=Fw(m),b=l.createElement("div");b.className="vd-embed vd-embed--edit",b.style.position="relative",b.style.width="100%",b.style.height="100%",e.appendChild(b);let w=F=>{n.onLink?n.onLink(F):p?.open(F,"_blank","noopener,noreferrer")},k;try{k=Rm(b,{document:a.document,chrome:n.toolbar??!0,interactive:n.interactive??!0,wheel:"modifier",resolveAsset:F=>g.resolve(F),importImage:P,merge:Zm,onOpenLink:w,...n.surface?{surface:n.surface}:{},...i?{camera:i.camera}:{},...c?{fonts:c.library}:{}})}catch(F){throw b.remove(),g.destroy(),F}let _=new Set,M=!1,R=!1,B=0,D=i===void 0,V,T,O,j;function $(F){return O?.of!==F&&(O={of:F,text:Vl(Fl(F),m)}),O.text}async function P(F){if(M||!F.type.startsWith("image/"))return null;let q=new Uint8Array(await F.arrayBuffer()),Y=await Hl(q);return M?null:(m.has(Y)||m.set(Y,zl(q)),{type:F.type,hash:Y,bytes:q.length})}function C(){B+=1;try{Gw(k.viewer,b,r,d)}finally{B-=1}}let G=k.on("navigate",()=>{B===0&&(D=!1)}),ee=k.on("change",({document:F})=>{let q={text:()=>$(F)};for(let Y of[..._])Y(q);c&&v()}),fe=aa(b),oe=p&&"ResizeObserver"in p?new p.ResizeObserver(()=>{let F=aa(b);F.width===fe.width&&F.height===fe.height||(fe=F,D&&C())}):void 0;oe?.observe(b),i||C(),!c&&o==="exact"&&be();function Se(){return T??=(async()=>{if(s)try{let{exactFontsAt:F}=await import("./chunks/fonts.js");return F(s)}catch{return}})(),T}async function be(){let F=await Se();if(!(M||!F)){for(;;){let q=k.getDocument(),Y=await F.ensure(q);if(M||Y.length>0)return;if(k.getDocument()===q)break}c=F,k.viewer.setFonts(F.library)}}function v(){V!==void 0&&clearTimeout(V),V=setTimeout(()=>{V=void 0;let F=c;M||!F||F.ensure(k.getDocument()).then(q=>{M||c!==F||q.length===0||(c=void 0,k.viewer.setFonts(void 0))})},aO)}function N(){M||(M=!0,V!==void 0&&clearTimeout(V),ee(),G(),oe?.disconnect(),k.destroy(),g.destroy(),b.remove(),_.clear())}let I={getText:()=>$(k.getDocument()),getDocument(){let F=k.getDocument();return j?.of!==F&&(j={of:F,document:Hw(F,new Map(m),k.getProblems().map(tx))}),j.document},on(F,q){if(!Jw.includes(F))throw new TypeError(`edit: on() takes one of ${Jw.join(", ")}; got ${String(F)}.`);return _.add(q),()=>{_.delete(q)}},undo(){M||k.undo()},redo(){M||k.redo()},async view(){if(M)throw new Error("edit: this editor was destroyed.");if(R)throw new Error("edit: view() is already opening a view.");R=!0,b.inert=!0;try{k.endTextEditing();let{view:F}=await import("./view.js");if(M)throw new Error("edit: this editor was destroyed.");d=qw(k.viewer,b,d);let q={camera:k.viewer.getCamera(),page:d,exact:c!==void 0},Y=k.getDocument(),Q=await F(e,I.getDocument(),{...uO(n),[rx]:q});if(M)throw Q.destroy(),new Error("edit: this editor was destroyed.");let Te=k.getDocument()===Y?void 0:I.getDocument();return N(),Te&&await Q.load(Te),Q}finally{R=!1,b.inert=!1}},destroy:N};return I}async function dO(e,t){try{let{exactFontsAt:n}=await import("./chunks/fonts.js"),r=n(e);return(await r.ensure(t)).length===0?r:void 0}catch{return}}function uO(e){let{toolbar:t,...n}=e;return n}export{EV as edit,Qm as version};
2893
3103
  /*! Bundled license information:
2894
3104
 
2895
3105
  lucide/dist/esm/icons/a-large-small.mjs:
@@ -2908,8 +3118,11 @@ lucide/dist/esm/icons/blend.mjs:
2908
3118
  lucide/dist/esm/icons/check.mjs:
2909
3119
  lucide/dist/esm/icons/chevron-down.mjs:
2910
3120
  lucide/dist/esm/icons/chevron-right.mjs:
3121
+ lucide/dist/esm/icons/chevron-up.mjs:
3122
+ lucide/dist/esm/icons/circle-dashed.mjs:
2911
3123
  lucide/dist/esm/icons/circle.mjs:
2912
3124
  lucide/dist/esm/icons/component.mjs:
3125
+ lucide/dist/esm/icons/crop.mjs:
2913
3126
  lucide/dist/esm/icons/diamond.mjs:
2914
3127
  lucide/dist/esm/icons/droplet.mjs:
2915
3128
  lucide/dist/esm/icons/eye.mjs:
@@ -2925,6 +3138,7 @@ lucide/dist/esm/icons/metronome.mjs:
2925
3138
  lucide/dist/esm/icons/minus.mjs:
2926
3139
  lucide/dist/esm/icons/mouse-pointer-2.mjs:
2927
3140
  lucide/dist/esm/icons/move-horizontal.mjs:
3141
+ lucide/dist/esm/icons/move-up-right.mjs:
2928
3142
  lucide/dist/esm/icons/move-vertical.mjs:
2929
3143
  lucide/dist/esm/icons/music.mjs:
2930
3144
  lucide/dist/esm/icons/pause.mjs:
@@ -2935,16 +3149,24 @@ lucide/dist/esm/icons/plus.mjs:
2935
3149
  lucide/dist/esm/icons/redo-2.mjs:
2936
3150
  lucide/dist/esm/icons/rotate-cw.mjs:
2937
3151
  lucide/dist/esm/icons/scan-eye.mjs:
3152
+ lucide/dist/esm/icons/scan.mjs:
3153
+ lucide/dist/esm/icons/slash.mjs:
2938
3154
  lucide/dist/esm/icons/spline.mjs:
2939
3155
  lucide/dist/esm/icons/square-round-corner.mjs:
2940
3156
  lucide/dist/esm/icons/square.mjs:
3157
+ lucide/dist/esm/icons/squares-exclude.mjs:
3158
+ lucide/dist/esm/icons/squares-intersect.mjs:
3159
+ lucide/dist/esm/icons/squares-subtract.mjs:
3160
+ lucide/dist/esm/icons/squares-unite.mjs:
2941
3161
  lucide/dist/esm/icons/text-align-end.mjs:
2942
3162
  lucide/dist/esm/icons/text-align-center.mjs:
2943
3163
  lucide/dist/esm/icons/text-align-justify.mjs:
2944
3164
  lucide/dist/esm/icons/text-align-start.mjs:
3165
+ lucide/dist/esm/icons/triangle-alert.mjs:
2945
3166
  lucide/dist/esm/icons/type.mjs:
2946
3167
  lucide/dist/esm/icons/undo-2.mjs:
2947
3168
  lucide/dist/esm/icons/unlink.mjs:
3169
+ lucide/dist/esm/icons/video.mjs:
2948
3170
  lucide/dist/esm/icons/volume-2.mjs:
2949
3171
  lucide/dist/esm/icons/volume-x.mjs:
2950
3172
  lucide/dist/esm/icons/x.mjs: