@getv.design/embed 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -2
- package/README.md +3 -3
- package/THIRD_PARTY_NOTICES.txt +1 -1
- package/dist/auto.js +2 -2
- package/dist/chunks/{chunk-H7KHX34X.js → chunk-ACYFDE3D.js} +1 -1
- package/dist/chunks/chunk-JWSC2HIX.js +10 -0
- package/dist/chunks/{chunk-UAVO4POT.js → chunk-RYQFBGKS.js} +2 -2
- package/dist/chunks/{chunk-JWI4TIMM.js → chunk-TQVHSS5W.js} +2 -2
- package/dist/chunks/{chunk-P57LNVS3.js → chunk-WZMAP7VR.js} +2 -2
- package/dist/chunks/chunk-Z7CAMO33.js +2 -0
- package/dist/chunks/fonts.js +4 -4
- package/dist/cli.js +16 -16
- package/dist/edit.js +33 -33
- package/dist/index.js +2 -2
- package/dist/markdown-it.js +2 -2
- package/dist/markdown.js +2 -2
- package/dist/marked.js +2 -2
- package/dist/rehype.js +2 -2
- package/dist/static.js +2 -2
- package/dist/view.js +3 -3
- package/package.json +2 -2
- package/dist/chunks/chunk-ACHGJ7UR.js +0 -2
- package/dist/chunks/chunk-JIHH634P.js +0 -10
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! @getv.design/embed v0.
|
|
2
|
-
import{a as y}from"./chunks/chunk-
|
|
1
|
+
/*! @getv.design/embed v0.4.0. Free to use under the vDesign Embed Licence. © 2026 vDesign. https://getv.design/docs/licence/ */
|
|
2
|
+
import{a as y}from"./chunks/chunk-Z7CAMO33.js";import"./chunks/chunk-ACYFDE3D.js";var d=["view","edit","play"];async function l(a,i,e){let o=e?.mode;if(!d.includes(o))throw new TypeError(`mount: mode must be one of ${d.join(", ")}; got ${String(o)}.`);if(o==="edit"){let{edit:t}=await import("./edit.js");return t(a,i,e)}let{view:s}=await import("./view.js"),n=await s(a,i,e);if(o==="view")return n;let r;try{r=await n.play(e.page===void 0?{}:{page:e.page})}catch(t){throw n.destroy(),t}return{goTo:t=>r.goTo(t),destroy(){r.destroy(),n.destroy()}}}export{l as mount,y as version};
|
package/dist/markdown-it.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! @getv.design/embed v0.
|
|
2
|
-
import{a as f,b as p,d as u}from"./chunks/chunk-
|
|
1
|
+
/*! @getv.design/embed v0.4.0. Free to use under the vDesign Embed Licence. © 2026 vDesign. https://getv.design/docs/licence/ */
|
|
2
|
+
import{a as f,b as p,d as u}from"./chunks/chunk-TQVHSS5W.js";import{e as F}from"./chunks/chunk-WZMAP7VR.js";import"./chunks/chunk-RYQFBGKS.js";import"./chunks/chunk-JWSC2HIX.js";import"./chunks/chunk-Z7CAMO33.js";import"./chunks/chunk-ACYFDE3D.js";function I(l,t={}){let o=l.renderer.rules,s=o.fence,i=new WeakMap;o.fence=(n,c,k,d,g)=>{let e=n[c];if(!e||!p(e.info))return s?s(n,c,k,d,g):"";let r=t.idPrefix;r||(r=i.get(n)??f(),i.set(n,r));let{resolveSrc:a,...w}=t;return u(e.content,e.info,{...w,idPrefix:r,...e.attrs?{attributes:e.attrs}:{},...a?{resolveSrc:m=>a(m,d)}:{}})}}var b=I;export{F as createRenderer,b as default,I as vdesignMarkdownIt};
|
package/dist/markdown.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! @getv.design/embed v0.
|
|
2
|
-
import{a as b,b as c,c as d,d as e}from"./chunks/chunk-
|
|
1
|
+
/*! @getv.design/embed v0.4.0. Free to use under the vDesign Embed Licence. © 2026 vDesign. https://getv.design/docs/licence/ */
|
|
2
|
+
import{a as b,b as c,c as d,d as e}from"./chunks/chunk-TQVHSS5W.js";import{e as a}from"./chunks/chunk-WZMAP7VR.js";import"./chunks/chunk-RYQFBGKS.js";import"./chunks/chunk-JWSC2HIX.js";import"./chunks/chunk-Z7CAMO33.js";import"./chunks/chunk-ACYFDE3D.js";export{b as createFenceIds,a as createRenderer,c as isVdFence,d as parseInfo,e as renderFence};
|
package/dist/marked.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! @getv.design/embed v0.
|
|
2
|
-
import{a as t,b as i,d as o}from"./chunks/chunk-
|
|
1
|
+
/*! @getv.design/embed v0.4.0. Free to use under the vDesign Embed Licence. © 2026 vDesign. https://getv.design/docs/licence/ */
|
|
2
|
+
import{a as t,b as i,d as o}from"./chunks/chunk-TQVHSS5W.js";import{e as f}from"./chunks/chunk-WZMAP7VR.js";import"./chunks/chunk-RYQFBGKS.js";import"./chunks/chunk-JWSC2HIX.js";import"./chunks/chunk-Z7CAMO33.js";import"./chunks/chunk-ACYFDE3D.js";function p(r={}){let s=r.idPrefix??t();return{renderer:{code(e,d){let c=typeof e=="string"?e:e.text,n=typeof e=="string"?d:e.lang;return i(n)?o(c,n??"vd",{...r,idPrefix:s}):!1}}}}var a=p;export{f as createRenderer,a as default,p as vdesignMarked};
|
package/dist/rehype.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! @getv.design/embed v0.
|
|
2
|
-
import{a as h,d as m}from"./chunks/chunk-
|
|
1
|
+
/*! @getv.design/embed v0.4.0. Free to use under the vDesign Embed Licence. © 2026 vDesign. https://getv.design/docs/licence/ */
|
|
2
|
+
import{a as h,d as m}from"./chunks/chunk-TQVHSS5W.js";import{e as g}from"./chunks/chunk-WZMAP7VR.js";import"./chunks/chunk-RYQFBGKS.js";import"./chunks/chunk-JWSC2HIX.js";import"./chunks/chunk-Z7CAMO33.js";import"./chunks/chunk-ACYFDE3D.js";function x(e={}){let n,i=()=>e.renderer?Promise.resolve(e.renderer):n??=g({fonts:e.fonts??"exact",...e.fontBase===void 0?{}:{fontBase:e.fontBase}});return async(t,r)=>{let s=r?.path??r?.history?.at(-1);if(e.include&&!e.include(s))return;let o=[];if(v(t,(d,l,a)=>{if(d.type!=="element"||d.tagName!=="pre"||!l)return;let c=d.children?.find(p=>p.type==="element");c?.tagName!=="code"||!F(c)||o.push({parent:l,index:a,code:c})}),o.length===0)return;let u=await i(),f={...e};for(let d of["resolveSrc","fonts","fontBase","include"])delete f[d];let N=e.idPrefix??h(),R=e.resolveSrc??k;for(let{parent:d,index:l,code:a}of o){let c=typeof a.data?.meta=="string"?a.data.meta:"",p=m(y(a),`vd ${c}`,{...f,renderer:u,idPrefix:N,resolveSrc:H=>R(H,s)});d.children[l]={type:"raw",value:p}}}}var B=x;function F(e){let n=e.properties?.className;return(Array.isArray(n)?n:typeof n=="string"?n.split(/\s+/):[]).some(t=>t==="language-vd"||t==="language-vdesign")}function y(e){return e.type==="text"?e.value??"":(e.children??[]).map(y).join("")}function v(e,n,i,t=0){n(e,i,t),e.children?.forEach((r,s)=>v(r,n,e,s))}function k(e,n){let i=globalThis,t=i.process?.getBuiltinModule?.("node:fs"),r=i.process?.getBuiltinModule?.("node:path"),s=i.process?.cwd?.();if(!t||!r||s===void 0||/^[a-z][a-z0-9+.-]*:/i.test(e)||e.includes("\\")||!/\.vd(\.svg)?$/i.test(e))return;let o=n===void 0?s:r.dirname(r.resolve(s,n));try{let u=t.realpathSync(r.resolve(o,e)),f=t.realpathSync(s);return u.startsWith(f+r.sep)?t.readFileSync(u,"utf8"):void 0}catch{return}}export{B as default,x as rehypeVdesign};
|
package/dist/static.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/*! @getv.design/embed v0.
|
|
2
|
-
import{a as b,b as c,c as d,d as e,e as f,f as g}from"./chunks/chunk-
|
|
1
|
+
/*! @getv.design/embed v0.4.0. Free to use under the vDesign Embed Licence. © 2026 vDesign. https://getv.design/docs/licence/ */
|
|
2
|
+
import{a as b,b as c,c as d,d as e,e as f,f as g}from"./chunks/chunk-WZMAP7VR.js";import"./chunks/chunk-RYQFBGKS.js";import"./chunks/chunk-JWSC2HIX.js";import{a}from"./chunks/chunk-Z7CAMO33.js";import"./chunks/chunk-ACYFDE3D.js";export{g as approximateRenderer,f as createRenderer,d as designOf,e as outline,b as parse,c as renderSvg,a as version};
|
package/dist/view.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/*! @getv.design/embed v0.
|
|
2
|
-
import{c as Ct,e as Ye,f as de,g as Ae,h as It,i as Ne}from"./chunks/chunk-
|
|
1
|
+
/*! @getv.design/embed v0.4.0. Free to use under the vDesign Embed Licence. © 2026 vDesign. https://getv.design/docs/licence/ */
|
|
2
|
+
import{c as Ct,e as Ye,f as de,g as Ae,h as It,i as Ne}from"./chunks/chunk-RYQFBGKS.js";import{A as At,B as Ke,E as Mt,F as Tt,G as Ot,H as _t,I as We,J as Lt,K as Pt,a as lt,b as ut,c as De,d as pt,e as Be,f as He,g as ht,h as Ue,i as mt,j as gt,k as yt,l as wt,n as xt,p as vt,t as je,u as bt,v as Et,w as St,x as kt,y as Ge,z as Fe}from"./chunks/chunk-JWSC2HIX.js";import{a as wn,b as ft}from"./chunks/chunk-Z7CAMO33.js";import"./chunks/chunk-ACYFDE3D.js";var xn=.8,vn=.2;function qe(e,t){let n=e.createElement("canvas").getContext("2d"),o=At(),l=new Map,a=new Map,g=new Set;function u(d){return`${d.italic?"italic ":""}${d.weight} ${d.size}px ${d.family}`}function S(){l.clear(),a.clear()}return{advance(d,y){if(!n)return o.advance(d,y);let w=u(y),E=`${w}\0${y.letterSpacing}\0${d}`,L=l.get(E);if(L!==void 0)return L;n.font=w;let x=n.measureText(d).width+y.letterSpacing*[...d].length;return l.set(E,x),x},metrics(d){if(!n)return o.metrics(d);let y=u(d),w=a.get(y);if(w)return w;n.font=y;let E=n.measureText("Hxg"),L=E.fontBoundingBoxAscent??d.size*xn,x=E.fontBoundingBoxDescent??d.size*vn,V={ascent:L,descent:x,lineGap:0};return a.set(y,V),V},load(d,y){let w=e.fonts;if(!w||typeof FontFace!="function")return!1;let E=!1;for(let L of Object.values(d.fonts))for(let x of bn(L)){let V=`${L.family}\0${x.src}\0${x.weight??400}\0${x.style??"normal"}`;if(g.has(V))continue;g.add(V);let _=x.src.startsWith("data:")?void 0:y?.(x.src),M={weight:String(x.weight??400),style:x.style??"normal"},H=Q=>{let R=new FontFace(L.family,typeof Q=="string"?`url(${Q})`:En(Q),M);w.add(R),R.load().then(()=>{S(),t?.()},()=>{w.delete(R)})};_===void 0?H(x.src):(E=!0,_.then(H,()=>{}))}return E},invalidate:S,destroy(){S(),g.clear()}}}function bn(e){return(e.faces??[]).flatMap(t=>t.src===void 0?[]:[{...t,src:t.src}])}function En(e){return e instanceof Uint8Array?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):e}var ze={x:0,y:0,zoom:1},Dt=.02,Ft=64;function Me(e){return Number.isFinite(e)?Math.min(Math.max(e,Dt),Ft):1}function $e(e,t){return{x:(t.x-e.x)/e.zoom,y:(t.y-e.y)/e.zoom}}function Ze(e,t){return{x:t.x*e.zoom+e.x,y:t.y*e.zoom+e.y}}function Te(e,t,i){let n=Me(e.zoom*i),o=$e(e,t);return{zoom:n,x:t.x-o.x*n,y:t.y-o.y*n}}function ye(e,t,i){return{...e,x:e.x+t,y:e.y+i}}function Xe(e){return`translate(${e.x} ${e.y}) scale(${e.zoom})`}function fe(e,t,i){let n={width:Math.max(1,t.width-i*2),height:Math.max(1,t.height-i*2)};if(e.width<=0||e.height<=0)return ze;let o=Me(Math.min(n.width/e.width,n.height/e.height));return{zoom:o,x:(t.width-e.width*o)/2-(e.x??0)*o,y:(t.height-e.height*o)/2-(e.y??0)*o}}var ne="http://www.w3.org/2000/svg",Nt="vd-viewer-styles",zt=`
|
|
3
3
|
.vd-viewer {
|
|
4
4
|
position: relative;
|
|
5
5
|
overflow: hidden;
|
|
@@ -98,4 +98,4 @@ import{c as Ct,e as Ye,f as de,g as Ae,h as It,i as Ne}from"./chunks/chunk-UAVO4
|
|
|
98
98
|
.vd-viewer--interacting .vd-viewer__page {
|
|
99
99
|
filter: none;
|
|
100
100
|
}
|
|
101
|
-
`;function $t(e){if(e.getElementById(Nt))return;let t=e.createElement("style");t.id=Nt,t.textContent=zt,e.head.appendChild(t)}function Vt(e,t,o,r){return t?Sn(e,t,o,r):En(e,o,r)}function En(e,t,o){let r=qe(e,o);return{measurer:r,update:n=>{r.load(n,t)},afterPaint:()=>{},destroy:()=>r.destroy()}}var Rt=new WeakMap;function Sn(e,t,o,r){let n,p,a,y=()=>{if(!n)throw new Error("canvasFonts: update() before measuring");return n};return{measurer:{advance:(g,l)=>y().measurer.advance(g,l),metrics:g=>y().measurer.metrics(g),itemize:g=>y().measurer.itemize(g)},update(g){n&&g.fonts===p||(a?.(),n?.dispose(),n=t.forDocument(g,o?{loader:o}:{}),p=g.fonts,a=n.onChange(r))},afterPaint(){let g=e.fonts;if(!n||!g||typeof FontFace!="function")return;let l=Rt.get(e);l||Rt.set(e,l=new Set);for(let w of n.usedFaces()){if(l.has(w.id))continue;l.add(w.id);let b=new FontFace(w.id,kn(w.bytes),{weight:String(w.weight),style:w.style});g.add(b),b.load().catch(()=>g.delete(b))}},destroy(){a?.(),n?.dispose(),n=void 0}}}function kn(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}var An=.01,Mn=.004,Bt=40,Tn=16;function Oe(e,t){$t(e.ownerDocument);let o=t.document,r=i=>Vt(e.ownerDocument,i,t.loadFont,()=>{j(o)}),n=r(t.fonts),p={advance:(i,f)=>n.measurer.advance(i,f),metrics:i=>n.measurer.metrics(i),itemize:i=>n.measurer.itemize?.(i)??[i]};n.update(o);let a=Fe(o),y=()=>t.resolveAsset?{measure:p,resolveAsset:t.resolveAsset}:{measure:p},u=Ke(o,a,y()),g=t.camera??ze,l=t.interactive??!0,w=t.wheel??"always";e.classList.add("vd-viewer"),t.surface&&(e.style.background=t.surface);let b=e.ownerDocument.createElementNS(ne,"svg");b.setAttribute("class","vd-viewer__surface"),b.setAttribute("width","100%"),b.setAttribute("height","100%");let A=e.ownerDocument.createElementNS(ne,"g");A.setAttribute("class","vd-viewer__camera"),A.style.isolation="isolate",b.appendChild(A);let L=e.ownerDocument.createElementNS(ne,"defs");A.appendChild(L);let x=e.ownerDocument.createElementNS(ne,"rect");x.setAttribute("class","vd-viewer__page"),A.appendChild(x),e.appendChild(b);let V=new Map,_=null;function M(){let i=t.sample;return _&&i?i(u,_.timeline,_.t,{doc:o,resolution:a,options:y()}):u}function H(){A.setAttribute("transform",Xe(g))}function Q(i=!0){let f=M();ee(f);let O=u.background!==void 0;T(x,"x",String(u.x)),T(x,"y",String(u.y)),T(x,"width",String(O?u.width:0)),T(x,"height",String(O?u.height:0)),F(x,"fill",u.background??null);let E=new Set,I=x;for(let k of f.items){let N=k.part===void 0?k.id:`${k.id}\0${k.part}`;E.add(N);let C=V.get(N);(!C||C.tagName!==Ht(k))&&(C?.remove(),C=e.ownerDocument.createElementNS(ne,Ht(k)),C.setAttribute("data-vd-id",k.id),V.set(N,C)),Ln(C,k),I.nextSibling!==C&&A.insertBefore(C,I.nextSibling),I=C}for(let[k,N]of V)E.has(k)||(N.remove(),V.delete(k));n.afterPaint(),i&&t.onSceneChange?.(u,o)}let R=new Map;function ee(i){let f=[...i.gradients.map(Tt),...[...new Map(i.items.filter(k=>k.shadows.length>0).map(k=>[k.id,k])).values()].map(k=>_t(k)),...i.clips.map(Mt)],O=new Set(f);for(let[k,N]of R)O.has(k)||(N.remove(),R.delete(k));let E=f.filter(k=>!R.has(k));if(E.length===0)return;[...new DOMParser().parseFromString(`<svg xmlns="${ne}">${E.join("")}</svg>`,"image/svg+xml").documentElement.children].forEach((k,N)=>{let C=e.ownerDocument.importNode(k,!0);L.appendChild(C),R.set(E[N],C)})}function j(i){o=i,n.update(o),a=Fe(o),u=Ke(o,a,y()),Q()}function G(i){let f=e.getBoundingClientRect();return{x:i.clientX-f.left,y:i.clientY-f.top}}let B=0,D=0;function ae(){e.classList.add("vd-viewer--interacting"),D&&clearTimeout(D),D=setTimeout(()=>{D=0,e.classList.remove("vd-viewer--interacting")},180)}function U(){B&&(cancelAnimationFrame(B),B=0),H(),t.onCameraChange?.(g)}function h(i){g=i,U()}function X(i){g=i,ae(),!B&&(B=requestAnimationFrame(()=>{B=0,H(),t.onCameraChange?.(g)}))}let se=null,Y=null,fe=!1,ue=l&&w==="always",re=new Map,K=null,ie=()=>{let[i,f]=[...re.values()];return!i||!f?null:{mid:{x:(i.x+f.x)/2,y:(i.y+f.y)/2},distance:Math.hypot(i.x-f.x,i.y-f.y)}},pe=i=>{let f=re.get(i.pointerId);if(!f)return;let O=G(i);if(re.set(i.pointerId,O),re.size===1){X(ye(g,O.x-f.x,O.y-f.y));return}let E=ie();if(K&&E){let I=ye(g,E.mid.x-K.mid.x,E.mid.y-K.mid.y);X(K.distance>0?Te(I,E.mid,E.distance/K.distance):I)}K=E},J=i=>{re.delete(i.pointerId)&&(e.hasPointerCapture(i.pointerId)&&e.releasePointerCapture(i.pointerId),K=ie())},he=i=>{if(w==="modifier"&&!i.ctrlKey&&!i.metaKey)return;i.preventDefault();let f=G(i),O=i.deltaMode===1?Tn:i.deltaMode===2?e.clientHeight||800:1,E=i.deltaX*O,I=i.deltaY*O;if(i.ctrlKey||i.metaKey){let k=i.ctrlKey?An:Mn,N=Math.max(-Bt,Math.min(Bt,I));X(Te(g,f,Math.exp(-N*k)));return}if(i.shiftKey&&E===0){X(ye(g,-I,0));return}X(ye(g,-E,-I))},q=i=>{if(i.pointerType==="touch"){if(!ue)return;i.preventDefault(),re.set(i.pointerId,G(i)),e.setPointerCapture(i.pointerId),K=ie();return}(i.button===1||i.button===0&&fe)&&(i.preventDefault(),se=i.pointerId,Y=G(i),e.setPointerCapture(i.pointerId))},ge=i=>{if(i.pointerType==="touch"){pe(i);return}if(se!==i.pointerId||!Y)return;let f=G(i);X(ye(g,f.x-Y.x,f.y-Y.y)),Y=f},ce=i=>{if(i.pointerType==="touch"){J(i);return}se===i.pointerId&&(se=null,Y=null,e.hasPointerCapture(i.pointerId)&&e.releasePointerCapture(i.pointerId))},me=i=>{i.code==="Space"&&(fe=!0)},d=i=>{i.code==="Space"&&(fe=!1)};ue&&(e.style.touchAction="none"),l&&(e.addEventListener("wheel",he,{passive:!1}),e.addEventListener("pointerdown",q),e.addEventListener("pointermove",ge),e.addEventListener("pointerup",ce),e.addEventListener("pointercancel",ce),e.ownerDocument.addEventListener("keydown",me),e.ownerDocument.addEventListener("keyup",d)),H(),Q();let v={element:e,surface:b,update:j,getDocument:()=>o,getScene:()=>u,setTime(i){i===null&&_===null||(_=i,Q(!1))},getTime:()=>_,getResolution:()=>a,getMeasurer:()=>p,setFonts(i){n.destroy(),n=r(i),j(o)},getCamera:()=>g,setCamera:h,zoomBy(i,f){let O=e.getBoundingClientRect(),E=f??{x:O.width/2,y:O.height/2};h(Te(g,E,i))},fitToContent(i=32){let f=e.getBoundingClientRect();h(le({x:u.x,y:u.y,width:u.width,height:u.height},{width:f.width||u.width,height:f.height||u.height},i))},screenToDocument:i=>$e(g,i),documentToScreen:i=>Ze(g,i),pointerPoint:G,hitTest(i,f){for(let O=u.items.length-1;O>=0;O--){let E=u.items[O];if(E&&Vn(E,i,Rn/g.zoom)&&(!f||f(E.id)))return E.id}return null},linkAt(i,f){for(let O=u.items.length-1;O>=0;O--){let E=u.items[O];if(E?.kind!=="text"||f&&!f(E.id))continue;let I=E.rotation===0?i:Ge(i,{x:E.x+E.w/2,y:E.y+E.h/2},-E.rotation);for(let k of E.lines){if(I.y<k.y||I.y>k.y+k.h)continue;let N=k.spans.find(C=>I.x>=C.x&&I.x<=C.x+C.w);if(N)return N.style.link}}},itemOf:i=>u.items.find(f=>f.id===i),elementOf:i=>V.get(i),destroy(){l&&(e.removeEventListener("wheel",he),e.removeEventListener("pointerdown",q),e.removeEventListener("pointermove",ge),e.removeEventListener("pointerup",ce),e.removeEventListener("pointercancel",ce),e.ownerDocument.removeEventListener("keydown",me),e.ownerDocument.removeEventListener("keyup",d)),B&&cancelAnimationFrame(B),D&&clearTimeout(D),B=0,D=0,n.destroy(),e.classList.remove("vd-viewer--interacting"),b.remove(),V.clear(),e.classList.remove("vd-viewer")}};return t.autoFit&&v.fitToContent(),v}var On="vd-clip-";function _n(e){return On+e}function Ut(e){return`url(#${_n(e)})`}function Ht(e){return Lt(e)||e.pose!==void 0?"g":Je(e)}function Je(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 Ln(e,t){if(e.tagName!=="g"){jt(e,t);return}F(e,"clip-path",t.clip===void 0?null:Ut(t.clip)),e.style.mixBlendMode=t.blend==="normal"?"":t.blend;let o=t.pose;F(e,"opacity",o&&o.opacity<1?String(o.opacity):null);let r=e.firstElementChild;if((!r||r.tagName!==Je(t))&&(r?.remove(),r=e.ownerDocument.createElementNS(ne,Je(t)),e.appendChild(r)),jt(r,{...t,clip:void 0,blend:"normal"}),o){let n=t.rotation===0?"":` ${We(t)}`;T(r,"transform",`${Pt(o)}${n}`),t.kind==="vector"&&Pn(r,t)}}function Pn(e,t){let o=t.pose?.trace;if(o!==void 0&&t.stroke!==void 0){let n=yt(t.contours)+1;T(e,"stroke-dasharray",`${n} ${n}`),T(e,"stroke-dashoffset",String(n*(1-o)))}let r=t.pose?.fillOpacity;F(e,"fill-opacity",r!==void 0&&r<1?String(r):null)}function jt(e,t){switch(F(e,"clip-path",t.clip===void 0?null:Ut(t.clip)),F(e,"transform",t.rotation===0?null:We(t)),e.style.mixBlendMode=t.blend==="normal"?"":t.blend,e.style.filter=t.shadows.length>0?`url(#${Ot}${t.id})`:"",t.kind){case"ellipse":zn(e,t);return;case"frame":Cn(e,t);return;case"image":In(e,t);return;case"rect":Nn(e,t);return;case"text":Fn(e,t);return;case"vector":$n(e,t);return}}function Cn(e,t){T(e,"class","vd-viewer__page"),T(e,"x",String(t.x)),T(e,"y",String(t.y)),T(e,"width",String(t.w)),T(e,"height",String(t.h)),F(e,"fill",t.background??null)}function In(e,t){if(T(e,"x",String(t.x)),T(e,"y",String(t.y)),T(e,"width",String(t.w)),T(e,"height",String(t.h)),F(e,"opacity",t.opacity<1?String(t.opacity):null),t.href===void 0){T(e,"class","vd-viewer__missing"),F(e,"rx",t.radius>0?String(t.radius):null);return}T(e,"href",t.href),T(e,"preserveAspectRatio",Dn[t.fit])}var Dn={cover:"xMidYMid slice",contain:"xMidYMid meet",fill:"none"};function Fn(e,t){F(e,"opacity",t.opacity<1?String(t.opacity):null),T(e,"xml:space","preserve");let o=t.lines.flatMap(n=>n.spans).filter(n=>n.text!==""),r=e.ownerDocument;for(;e.childNodes.length>o.length;)e.lastChild?.remove();for(;e.childNodes.length<o.length;)e.appendChild(r.createElementNS(ne,"tspan"));o.forEach((n,p)=>{let a=e.childNodes[p];a.textContent!==n.text&&(a.textContent=n.text),T(a,"x",String(n.x)),T(a,"y",String(n.y)),T(a,"font-family",n.style.family),T(a,"font-size",String(n.style.size)),T(a,"fill",n.style.fill),F(a,"font-weight",n.style.weight===400?null:String(n.style.weight)),F(a,"font-style",n.style.italic?"italic":null),F(a,"letter-spacing",n.style.letterSpacing===0?null:String(n.style.letterSpacing)),F(a,"data-vd-link",n.style.link??null);let y=[n.style.underline?"underline":"",n.style.strike?"line-through":""].filter(Boolean).join(" ");F(a,"text-decoration",y===""?null:y)})}function Nn(e,t){F(e,"class",null),T(e,"x",String(t.x)),T(e,"y",String(t.y)),T(e,"width",String(t.w)),T(e,"height",String(t.h)),T(e,"fill",t.fill),F(e,"rx",t.radius>0?String(t.radius):null),F(e,"stroke",t.stroke??null),F(e,"stroke-width",t.stroke&&t.strokeWidth>0?String(t.strokeWidth):null),F(e,"opacity",t.opacity<1?String(t.opacity):null)}function Gt(e,t){T(e,"fill",t.fill),F(e,"stroke",t.stroke??null),F(e,"stroke-width",t.stroke&&t.strokeWidth>0?String(t.strokeWidth):null),F(e,"opacity",t.opacity<1?String(t.opacity):null)}function zn(e,t){T(e,"cx",String(t.x+t.w/2)),T(e,"cy",String(t.y+t.h/2)),T(e,"rx",String(t.w/2)),T(e,"ry",String(t.h/2)),Gt(e,t)}function $n(e,t){T(e,"d",t.d),Gt(e,t),F(e,"fill-rule",t.rule==="nonzero"?null:t.rule),F(e,"stroke-linecap",t.cap==="butt"?null:t.cap),F(e,"stroke-linejoin",t.join==="miter"?null:t.join)}function T(e,t,o){e.getAttribute(t)!==o&&e.setAttribute(t,o)}function F(e,t,o){o===null?e.hasAttribute(t)&&e.removeAttribute(t):T(e,t,o)}var Rn=4;function Vn(e,t,o){let r=e.rotation===0?t:Ge(t,{x:e.x+e.w/2,y:e.y+e.h/2},-e.rotation),n=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 p=e.stroke!==void 0?e.strokeWidth/2:0,a=e.w/2+p,y=e.h/2+p;if(a<=0||y<=0)return!1;let u=(r.x-(e.x+e.w/2))/a,g=(r.y-(e.y+e.h/2))/y;return u*u+g*g<=1}if(e.kind==="vector"){let p=e.stroke!==void 0&&e.strokeWidth>0;return wt(e.contours,r,{fill:e.fill!=="none",rule:e.rule,reach:(p?e.strokeWidth/2:0)+o})}return n}function be(e,t){let o=new Map;for(let n of t.items)n.kind==="frame"&&n.w>0&&n.h>0&&o.set(n.id,{id:n.id,x:n.x,y:n.y,w:n.w,h:n.h});let r=e.root.children.flatMap(n=>{let p=n.type==="frame"?o.get(n.id):void 0;return p&&n.type==="frame"?[{...p,skip:n.skip===!0}]:[]});return r.length===0?[{id:null,x:t.x,y:t.y,w:t.width,h:t.height,skip:!1}]:r.every(n=>n.skip)?r.map(n=>({...n,skip:!1})):r}function Kt(e,t){return e.root.children.find(r=>r.type==="frame"&&ut(r,t)!==void 0)?.id}function Wt(e,t){let o=t===void 0?-1:e.findIndex(r=>r.id===t);return o!==-1?o:Math.max(0,e.findIndex(r=>!r.skip))}function Ee(e,t,o){for(let r=t+o;r>=0&&r<e.length;r+=o)if(!e[r]?.skip)return r;return t}function Yt(e){return e.filter(t=>!t.skip).length}function Qe(e,t){return e[t]?.skip!==!1?null:e.slice(0,t+1).filter(o=>!o.skip).length}function qt(e,t){if(!/^\d+$/.test(e))return null;let o=Number(e),r=t.findIndex((n,p)=>Qe(t,p)===o);return r===-1?null:r}function Zt(e,t,o){let r=Kt(e,o),n=t.findIndex(p=>p.id!==null&&p.id===r);return n===-1?null:n}var Bn=et(Et),Hn=et(St),Xt=et(kt);function et(e){return`cubic-bezier(${e.join(", ")})`}function Jt(e,t,o,r,n){let p={opacity:o},a=jn(e,t,r,n);if(e==="cut")return{keyframes:t==="enter"?[{visibility:"hidden"},{visibility:"hidden"}]:[{visibility:"visible"},{visibility:"visible"}],easing:"linear"};if(e==="pop"){let y=`${n.x}px ${n.y}px`;p.scale="1",p.transformOrigin=y}else(e==="rise"||e==="drop")&&(p.translate="0 0");return t==="enter"?{keyframes:[a,p],easing:Bn}:{keyframes:[p,a],easing:Hn}}function jn(e,t,o,r){switch(e){case"rise":return{opacity:0,translate:`0 ${t==="enter"?o:-o}px`};case"drop":return{opacity:0,translate:`0 ${t==="enter"?-o:o}px`};case"pop":return{opacity:0,scale:String(bt),transformOrigin:`${r.x}px ${r.y}px`};case"fade":case"cut":case"wipe":case"grow":case"count":case"draw":return{opacity:0}}}function Qt(e,t){let o=t==="forward"?"-100%":"100%",r=t==="forward"?"100%":"-100%";switch(e){case"cut":return null;case"fade":return{still:[{opacity:1},{opacity:0}],live:null,stillOnTop:!0};case"push":return{still:[{translate:"0 0"},{translate:`${o} 0`}],live:[{translate:`${r} 0`},{translate:"0 0"}],stillOnTop:!1};case"slide":return t==="forward"?{still:null,live:[{translate:"100% 0"},{translate:"0 0"}],stillOnTop:!1}:{still:[{translate:"0 0"},{translate:"100% 0"}],live:null,stillOnTop:!0}}}var Un={enter:"cut",duration:0,steps:[[]],clicks:new Map,scroll:!1};function tt(e){let t=new Map,o=new Map,r=new Map;ft(e.root,(y,u)=>{u&&(o.set(y.id,u.id),r.set(u.id,[...r.get(u.id)??[],y.id]))});let n=gt(e),p=mt(e);for(let[y,u]of Object.entries(e.motion??{})){if(!p.has(y))continue;let g=[[]],l=new Map,w=pt(u);for(let b of u.lines){if(b.id===y||n.get(b.id)!==y)continue;let A=b.go===void 0?void 0:ht(b.go);A&&l.set(b.id,A);let L=b.enter!==void 0?"enter":b.exit!==void 0?"exit":null,x=b.enter??b.exit;L===null||x===void 0||(b.step&&g.push([]),g.at(-1).push({id:b.id,kind:L,effect:x,duration:x==="cut"?0:Be(b.duration,w,He),delay:Be(b.delay,w,0),together:b.together===!0}))}t.set(y,{enter:u.enter??"cut",duration:u.duration??He,steps:g,clicks:l,scroll:u.scroll===!0})}let a=y=>[y,...(r.get(y)??[]).flatMap(u=>a(u))];return{pages:t,parents:o,within:a}}function en(e,t){let o=t?.id;return(o?e.pages.get(o):void 0)??Un}function nt(e){let t=0,o=0;return e.map((r,n)=>(t=(n===0?0:r.together?t:o)+r.delay,o=t+r.duration,{build:r,at:t}))}function tn(e){return Math.max(0,...nt(e).map(({build:t,at:o})=>o+t.duration))}function we(e,t){let o=new Set,r=new Set;for(let n of e.steps.flat())r.has(n.id)||(r.add(n.id),n.kind==="enter"&&o.add(n.id));for(let n of e.steps.slice(0,t).flat())n.kind==="enter"?o.delete(n.id):o.add(n.id);return o}function nn(e,t,o){for(let r=o;r!==void 0;r=e.parents.get(r)){let n=t.clicks.get(r);if(n)return{id:r,target:n}}}function rn(e,t,o){let r=[...e];for(;r.length>0;){let n=r.pop(),p=t.findIndex(a=>a.id!==null&&a.id===n);if(p!==-1&&p!==o)return{index:p,history:r}}return null}function on(e,t,o){let r=Me(t.width/Math.max(1,e.w));if(e.h*r<=t.height)return{camera:le({x:e.x,y:e.y,width:e.w,height:e.h},t,0),top:0,max:0};let n=e.h-t.height/r,p=Math.min(Math.max(0,o),n),a=(t.width-e.w*r)/2-e.x*r;return{camera:{zoom:r,x:a,y:0-(e.y+p)*r},top:p,max:n}}var _e=.9,rt=.1;function sn(e,t){return e.deltaMode===1?e.deltaY*16:e.deltaMode===2?e.deltaY*t.height:e.deltaY}var Gn=1500,Kn=2e3,Wn=200,Yn=50;function it(e,t){let o=e.ownerDocument;e.classList.add("vd-player"),e.tabIndex=-1;let r=new Set,n=new Set,p=!1,a=Oe(e,{document:t.document,...t.timeline?{sample:t.timeline.sample}:{},interactive:!1,surface:"#000",...t.fonts?{fonts:t.fonts}:{},...t.loadFont?{loadFont:t.loadFont}:{},...t.resolveAsset?{resolveAsset:t.resolveAsset}:{},onSceneChange:()=>{p&&q()}}),y=o.createElementNS(ne,"path");y.setAttribute("class","vd-player__mask"),y.setAttribute("fill","#000"),y.setAttribute("fill-rule","evenodd"),a.surface.appendChild(y);let u=o.createElement("div");u.className="vd-player__counter",u.setAttribute("aria-live","polite"),e.appendChild(u);let g=tt(t.document),l=be(t.document,a.getScene()),w=Wt(l,t.start),b=[],A=0,L=[],x,V=0,_="",M=0,H=0,Q=1,R=new Map,ee,j=0,G,B,D=o.defaultView,ae=()=>typeof a.surface.animate=="function"&&!(D?.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1),U=()=>en(g,l[w]),h;function X(){let s=l[w]?.id;if(!t.timeline||!s)return;let c=a.getDocument();return je(c.motion?.[s])?t.timeline.of(c,s):void 0}function se(s,c){return Math.min(s.length,...s.steps.filter(m=>m>c))}function Y(){h&&(a.setTime({timeline:h.timeline,t:h.t}),h.timeline.camera&&J())}function fe(s){if(!h||(h.frame=0,!h.playing))return;let c=h.last===0?0:s-h.last;h.last=s;let m=se(h.timeline,h.t);h.t=Math.min(m,t.sound?.position()??h.t+c),h.t>=m&&(h.playing=!1,t.sound?.stop()),Y(),h.playing&&(h.frame=D?.requestAnimationFrame(fe)??0)}function ue(){if(h){if(!ae()||!D?.requestAnimationFrame){h.t=se(h.timeline,h.t),Y();return}h.playing=!0,h.last=0,t.sound?.play(h.timeline,h.t),h.frame=D.requestAnimationFrame(fe)}}function re(){h?.frame&&D?.cancelAnimationFrame(h.frame),h=void 0,t.sound?.stop(),a.setTime(null)}function K(s,c){h={timeline:s,t:c?0:s.length,playing:!1,last:0,frame:0},t.sound?.prepare(a.getDocument(),s),Y(),c&&ue()}function ie(){let s=X();s?(A=U().steps.length,K(s,!0)):f()}function pe(){let s=e.getBoundingClientRect(),c=l[w];return{width:s.width||c?.w||1,height:s.height||c?.h||1}}function J(){let s=l[w];if(!s)return;let c=pe(),m=h?.timeline.camera&&t.timeline?t.timeline.camera(h.timeline,h.t,a.getScene(),{doc:a.getDocument(),resolution:a.getResolution()}):{x:s.x,y:s.y,w:s.w,h:s.h},S=le({x:m.x,y:m.y,width:m.w,height:m.h},c,0);if(H=0,U().scroll){let P=on(s,c,M);S=P.camera,M=P.top,H=P.max}Q=S.zoom,a.setCamera(S);let z=m.x*S.zoom+S.x,$=m.y*S.zoom+S.y,W=m.w*S.zoom,oe=m.h*S.zoom;y.setAttribute("d",`M0 0H${c.width}V${c.height}H0ZM${z} ${$}h${W}v${oe}h${-W}Z`),y.dataset.slide=s.id??""}function he(){let s=Qe(l,w),c=Yt(l);u.textContent=s===null?"Skipped":`${s} / ${c}`,u.classList.add("vd-player__counter--shown"),G&&clearTimeout(G),G=setTimeout(()=>u.classList.remove("vd-player__counter--shown"),Gn),t.onChange?.(s,c)}function q(){let s=new Set;for(let c of r)for(let m of g.within(c))s.add(m);n=s;for(let c of a.surface.querySelectorAll("[data-vd-hidden]")){let m=c.getAttribute("data-vd-id");(m===null||!s.has(m))&&c.removeAttribute("data-vd-hidden")}for(let c of s)a.elementOf(c)?.setAttribute("data-vd-hidden","")}function ge(s){return g.within(s).flatMap(c=>{let m=a.elementOf(c);return m?[m]:[]})}function ce(s){let c=1/0,m=1/0,S=-1/0,z=-1/0;for(let $ of g.within(s)){let W=a.itemOf($);W&&(c=Math.min(c,W.x),m=Math.min(m,W.y),S=Math.max(S,W.x+W.w),z=Math.max(z,W.y+W.h))}return Number.isFinite(c)?{x:(c+S)/2,y:(m+z)/2}:{x:0,y:0}}function me(){if(!(L.length===0&&!x)){V+=1,A===0&&(A=1),r=we(U(),A),q();for(let s of L)s.cancel();L=[],x?.remove(),x=void 0}}function d(){return L.length===0&&!x?!1:(me(),!0)}function v(s,c){return new Promise(m=>{let S=!1,z=()=>{S||(S=!0,m())};Promise.all(s.map($=>$.finished)).then(z,()=>{S=!0}),setTimeout(()=>{if(!S){for(let $ of s)($.playState==="running"||$.playState==="paused")&&$.finish();z()}},c+Yn)})}function i(s,c,m){if(s===w||!l[s])return;let S=U(),z=l[w]?.id;z&&R.set(z,ee===void 0?M:j),O(),w=s;let $=U(),W=l[s]?.id;M=c||!W?0:R.get(W)??0;let oe=m==="forward"?$:S,P=ae()?Qt(oe.enter,m):null;P&&(x=a.surface.cloneNode(!0),x.classList.add("vd-player__still"),x.setAttribute("aria-hidden","true"),P.stillOnTop?a.surface.after(x):a.surface.before(x)),re();let ke=X();if(J(),ke?(A=$.steps.length,r=new Set,K(ke,!1),c&&h&&(h.t=0),Y()):(A=c?0:$.steps.length,r=we($,A)),q(),he(),!P||!x){c&&ie();return}let Ie={duration:oe.duration,easing:Xt},te=[];P.still&&te.push(x.animate(P.still,{...Ie,fill:"forwards"})),P.live&&te.push(a.surface.animate(P.live,Ie)),L.push(...te);let xe=V;v(te,oe.duration).then(()=>{if(xe===V){L=L.filter(ve=>!te.includes(ve));for(let ve of te)ve.cancel();x?.remove(),x=void 0,c&&ie()}})}function f(){let s=U(),c=s.steps[A];if(c===void 0)return;A+=1;let m=we(s,A);if(c.length===0)return;if(!ae()){r=m,q();return}let S=new Set(c.filter(P=>P.kind==="enter").map(P=>P.id));r=new Set([...we(s,A-1)].filter(P=>!S.has(P))),q();let z=l[w],$=Ue*Math.min(z?.w??0,z?.h??0),W=V,oe=[];for(let{build:P,at:ke}of nt(c)){let Ie=ce(P.id),te=[];for(let xe of ge(P.id)){let ve=Number(xe.getAttribute("opacity")??1),{keyframes:mn,easing:gn}=Jt(P.effect,P.kind,Number.isFinite(ve)?ve:1,$,Ie);te.push(xe.animate(mn,{duration:P.duration,delay:ke,easing:gn,fill:P.kind==="enter"?"backwards":"forwards"}))}oe.push(...te),P.kind==="exit"&&te.length>0&&v(te,ke+P.duration).then(()=>{if(W===V){r.add(P.id),q();for(let xe of te)xe.cancel()}})}L.push(...oe),v(oe,tn(c)).then(()=>{if(W===V){L=L.filter(P=>!oe.includes(P)),r=m,q();for(let P of oe)P.cancel()}})}function O(){ee!==void 0&&D?.cancelAnimationFrame(ee),ee=void 0}function E(s){if(O(),j=Math.min(Math.max(0,s),H),!ae()||!D?.requestAnimationFrame){M=j,J();return}let c=M,m,S=z=>{m??=z;let $=Math.min(1,(z-m)/Wn);M=c+(j-c)*(1-(1-$)**3),J(),ee=$<1?D.requestAnimationFrame(S):void 0};ee=D.requestAnimationFrame(S)}function I(s,c){if(d())return;let m=ee===void 0?M:j;if(!(s>0?M>=H-.5:M<=.5)){E(m+s*pe().height/Q);return}c||(s>0?C():Z())}function k(s){if(!(!U().scroll||H<=0))switch(s.key){case" ":return s.shiftKey?-_e:_e;case"PageDown":return _e;case"PageUp":return-_e;case"ArrowDown":return rt;case"ArrowUp":return-rt;default:return}}function N(s){let c=Math.min(Math.max(0,s),l.length-1);if(c===w)return;let m=l[w]?.id;m&&b.push(m),i(c,!0,"forward")}function C(){if(!d()){if(h){if(h.playing){h.frame&&D?.cancelAnimationFrame(h.frame),h.playing=!1,t.sound?.stop(),h.t=se(h.timeline,h.t),Y();return}if(h.t<h.timeline.length){ue();return}}if(A<U().steps.length){f();return}N(Ee(l,w,1))}}function Z(){if(d())return;let s=rn(b,l,w);if(s){b=s.history,i(s.index,!1,"back");return}i(Ee(l,w,-1),!1,"back")}function Pe(s){switch(s.kind){case"url":t.onLink?.(s.url);return;case"back":Z();return;case"next":N(Ee(l,w,1));return;case"frame":{let c=Zt(a.getDocument(),l,s.id);c===null?C():Re(c,s.id)}}}function Re(s,c){let m=s===w;m||N(s);let S=l[w];if(!S||!U().scroll)return;let z=S.id===c?void 0:a.itemOf(c),$=z?z.y-S.y:0;m?E($):(M=$,J())}function Se(s){let c=l[w];if(!c||s.x<c.x||s.y<c.y||s.x>c.x+c.w||s.y>c.y+c.h)return;let m=W=>!n.has(W),S=a.hitTest(s,m),z=S===null?void 0:nn(g,U(),S);if(z)return z.target;let $=a.linkAt(s,m);return $===void 0?void 0:De($)}let Ce=s=>{if(s.stopPropagation(),s.metaKey||s.ctrlKey||s.altKey)return;let c=s.key,m=k(s);if(m!==void 0){_="",I(m,s.repeat),s.preventDefault();return}if(/^\d$/.test(c))_+=c;else if(c==="Enter"&&_!==""){let S=qt(_,l);_="",!d()&&S!==null&&N(S)}else if(c==="Escape")_!==""?_="":t.onExit?.();else if(["ArrowRight","ArrowDown","PageDown"," ","Enter"].includes(c))_="",C();else if(["ArrowLeft","ArrowUp","PageUp","Backspace"].includes(c))_="",Z();else if(c==="Home")d()||N(Ee(l,-1,1));else if(c==="End")d()||N(Ee(l,l.length,-1));else return;s.preventDefault()},at=s=>{if(d())return;let c=Se(a.screenToDocument(a.pointerPoint(s)));c?Pe(c):C()},ct=s=>{!U().scroll||H<=0||(s.preventDefault(),!(x||s.ctrlKey||s.metaKey)&&(O(),M=Math.min(Math.max(0,M+sn(s,pe())/Q),H),J()))},Ve=s=>{if(e.classList.remove("vd-player--idle"),B&&clearTimeout(B),B=setTimeout(()=>e.classList.add("vd-player--idle"),Kn),!s)return;let c=a.screenToDocument(a.pointerPoint(s));e.classList.toggle("vd-player--link",Se(c)!==void 0)},dt=D&&"ResizeObserver"in D?new D.ResizeObserver(()=>J()):void 0;return dt?.observe(e),e.addEventListener("keydown",Ce),e.addEventListener("click",at),e.addEventListener("pointermove",Ve),e.addEventListener("wheel",ct,{passive:!1}),p=!0,J(),r=X()?new Set:we(U(),0),q(),he(),Ve(),e.focus({preventScroll:!0}),ie(),{viewer:a,index:()=>w,count:()=>l.length,next:C,back:Z,go(s){me(),N(s)},update(s){if(s===a.getDocument())return;me();let c=l[w]?.id;a.update(s),g=tt(s),l=be(s,a.getScene());let m=l.findIndex(z=>z.id===c);w=m===-1?Math.min(w,l.length-1):m,m===-1&&(O(),M=0),re();let S=X();S&&K(S,!1),J(),A=U().steps.length,r=S?new Set:we(U(),A),q()},refit:J,destroy(){V+=1,O(),h?.frame&&D?.cancelAnimationFrame(h.frame),h=void 0,t.sound?.stop();for(let s of L)s.cancel();L=[],x?.remove(),dt?.disconnect(),e.removeEventListener("wheel",ct),e.removeEventListener("keydown",Ce),e.removeEventListener("click",at),e.removeEventListener("pointermove",Ve),G&&clearTimeout(G),B&&clearTimeout(B),y.remove(),u.remove(),a.destroy(),e.classList.remove("vd-player","vd-player--idle","vd-player--link"),e.removeAttribute("tabindex")}}}function an(e){let t=e,o=new Map,r=typeof URL.createObjectURL=="function"&&typeof URL.revokeObjectURL=="function";return{resolve(n){let p=o.get(n.hash);if(p!==void 0)return p;let a=t.get(n.hash);if(a===void 0)return;if(!r)return xt(n.type,a);let y;try{y=vt(a)}catch{return}let u=URL.createObjectURL(new Blob([y],{type:n.type}));return o.set(n.hash,u),u},replace(n){t=n;for(let[p,a]of o)n.has(p)||(URL.revokeObjectURL(a),o.delete(p))},destroy(){for(let n of o.values())URL.revokeObjectURL(n);o.clear(),t=new Map}}}var ot=["page","content","none"],cn=24;function Le(e){let t=e.getBoundingClientRect();return{width:t.width,height:t.height}}function dn(e,t){let o=t===void 0?void 0:e.itemOf(t);if(!(!o||o.w<=0||o.h<=0))return{x:o.x,y:o.y,width:o.w,height:o.h}}function ln(e,t,o,r){if(o==="none")return;let n=o==="page"?dn(e,r):void 0;if(!n){e.fitToContent(cn);return}let p=Le(t);e.setCamera(le(n,{width:p.width||n.width,height:p.height||n.height},cn))}function fn(e,t,o){let r=dn(e,o);if(!r)return;let n=e.getCamera(),p=Le(t),a=p.width||r.width*n.zoom,y=p.height||r.height*n.zoom;e.setCamera({zoom:n.zoom,x:a/2-(r.x+r.width/2)*n.zoom,y:y/2-(r.y+r.height/2)*n.zoom})}var st=Symbol.for("vdesign.embed.handover");function un(e){return e[st]}var pn=["exact","browser"],hn=["ready","problems","page","fonts"];async function qn(e,t){try{let{exactFontsAt:o}=await import("./chunks/fonts.js"),r=o(e);return(await r.ensure(t)).length===0?r:void 0}catch{return}}async function Jr(e,t,o={}){let r=o.fit??"page";if(!ot.includes(r))throw new TypeError(`view: fit must be one of ${ot.join(", ")}; got ${String(r)}.`);let n=o.fonts??"exact";if(!pn.includes(n))throw new TypeError(`view: fonts must be one of ${pn.join(", ")}; got ${String(n)}.`);let p=n==="exact"?It(o.fontBase,lt,e.ownerDocument.baseURI):void 0,a=un(o),y=await Ye(t),u=a?.page!==void 0&&de(y.document).some(d=>d.id===a.page)?a.page:o.page===void 0?de(y.document)[0]?.id:Ae(y.document,o.page).id,g=a?.exact&&p?await qn(p,y.document):void 0,l=e.ownerDocument,w=l.defaultView,b=an(y.blocks),A=y.blocks,L=[...y.problems],x,V=()=>x?[...L,x]:[...L],_=l.createElement("div");_.className="vd-embed",_.style.width="100%",_.style.height="100%",e.appendChild(_);let M=Oe(_,{document:y.document,interactive:o.interactive??!0,wheel:"modifier",resolveAsset:d=>b.resolve(d),...o.surface?{surface:o.surface}:{},...a?{camera:a.camera}:{},...g?{fonts:g.library}:{}}),H={ready:new Set,problems:new Set,page:new Set,fonts:new Set},Q=!1,R=!1,ee=0,j,G,B=g,D=n==="browser"?"browser":void 0,ae;function U(){Q=!0;for(let d of H.ready)d()}function h(){for(let d of H.problems)d(V())}function X(d){D=d;for(let v of H.fonts)v(d)}function se(){return ae??=(async()=>{if(p)try{let{exactFontsAt:d}=await import("./chunks/fonts.js");return d(p)}catch{return}})(),ae}function Y(d){B=void 0,M.setFonts(void 0),j?.fonts(void 0),x=d,h(),X("browser")}async function fe(){let d=await se();if(!R){if(!d){Y(Ne([],p?"the fonts chunk would not load":"no fontBase was given and this build has no default"));return}for(;;){let v=M.getDocument(),i=await d.ensure(v);if(R)return;if(i.length>0){Y(Ne(i));return}if(M.getDocument()===v)break}B=d,M.setFonts(d.library),j?.fonts(d),X("exact")}}function ue(){let d=re(u);if(d)for(let v of H.page)v(d)}function re(d){let v=de(M.getDocument()).find(i=>i.id===d);if(v)return v.name===void 0?{id:v.id}:{id:v.id,name:v.name}}let K=()=>ln(M,_,r,u),ie=()=>fn(M,_,u);function pe(d){if(R)return;let v=Ae(M.getDocument(),d).id,i=v!==u;u=v,r==="page"?K():ie(),i&&ue()}function J(d){o.onLink?o.onLink(d):w?.open(d,"_blank","noopener,noreferrer")}let he=d=>{if(d.button!==0||j)return;let v=M.linkAt(M.screenToDocument(M.pointerPoint(d)));if(v===void 0)return;let i=De(v);if(i){if(d.preventDefault(),i.kind==="frame"){de(M.getDocument()).some(f=>f.id===i.id)&&pe(i.id);return}J(i.url)}};_.addEventListener("click",he);let q=Le(_),ge=w&&"ResizeObserver"in w?new w.ResizeObserver(()=>{let d=Le(_);d.width===q.width&&d.height===q.height||(q=d,K())}):void 0;ge?.observe(_),a||(r==="none"&&u!==void 0&&o.page!==void 0?ie():K()),U(),g?X("exact"):n==="exact"&&fe();let ce={async load(d){if(R)throw new Error("view: this view was destroyed.");let v=++ee,i=await Ye(d),f=B,O=f?await f.ensure(i.document):[];if(G&&await G||R||v!==ee)return;O.length>0&&B===f&&Y(Ne(O)),b.replace(i.blocks),A=i.blocks,M.update(i.document),L=[...i.problems],j?.update(i.document),de(i.document).some(I=>I.id===u)||(u=de(i.document)[0]?.id,r==="page"?K():ie(),ue()),h(),U()},pages:()=>de(M.getDocument()).map(d=>d.name===void 0?{id:d.id}:{id:d.id,name:d.name}),goTo:pe,fit:()=>{R||K()},play(d={}){if(R)return Promise.reject(new Error("view: this view was destroyed."));try{return j?.stop(),Promise.resolve(me(M.getDocument(),d.page))}catch(v){return Promise.reject(v instanceof Error?v:new Error(String(v)))}},async edit(d={}){if(R)throw new Error("view: this view was destroyed.");if(G)throw new Error("view: edit() is already opening an editor.");let v;G=new Promise(f=>v=f);let i=!1;try{let{edit:f}=await import("./edit.js");if(R)throw new Error("view: this view was destroyed.");let O={camera:M.getCamera(),page:u,exact:B!==void 0},E=Ct(M.getDocument(),A,L),I=await f(e,E,{...o,...d,[st]:O});if(R)throw I.destroy(),new Error("view: this view was destroyed.");return i=!0,ce.destroy(),I}finally{G=void 0,v(i)}},on(d,v){if(!hn.includes(d))throw new TypeError(`view: on() takes one of ${hn.join(", ")}; got ${String(d)}.`);let i=H[d];if(i.add(v),d==="ready"&&Q&&queueMicrotask(()=>{i.has(v)&&v()}),d==="problems"&&queueMicrotask(()=>{i.has(v)&&v(V())}),d==="fonts"&&D!==void 0){let f=D;queueMicrotask(()=>{i.has(v)&&v(f)})}return()=>{i.delete(v)}},destroy(){if(!R){R=!0,j?.stop(),_.removeEventListener("click",he),ge?.disconnect(),M.destroy(),b.destroy(),_.remove();for(let d of Object.values(H))d.clear()}}};function me(d,v){let i=v===void 0?u:Ae(d,v).id,f=l.createElement("div");f.className="vd-embed__play",f.style.position="absolute",f.style.inset="0";let O=Z=>Z.stopPropagation();f.addEventListener("wheel",O);let E=l.activeElement;_.appendChild(f);let I=!1,k=()=>{if(I)return;I=!0,j===N&&(j=void 0),C.destroy(),f.removeEventListener("wheel",O);let Z=f.contains(l.activeElement);f.remove(),Z&&E&&"focus"in E&&typeof E.focus=="function"&&E.focus({preventScroll:!0})},N={stop:k,update:Z=>C.update(Z),fonts:Z=>C.viewer.setFonts(Z?.library)},C=it(f,{document:d,resolveAsset:Z=>b.resolve(Z),...B?{fonts:B.library}:{},...i===void 0?{}:{start:i},onExit:k,onLink:J});return j=N,{goTo(Z){if(I)return;let Pe=C.viewer.getDocument(),Re=Ae(Pe,Z).id,Se=be(Pe,C.viewer.getScene()).findIndex(Ce=>Ce.id===Re);Se!==-1&&C.go(Se)},destroy:k}}return ce}export{yn as version,Jr as view};
|
|
101
|
+
`;function $t(e){if(e.getElementById(Nt))return;let t=e.createElement("style");t.id=Nt,t.textContent=zt,e.head.appendChild(t)}function Vt(e){if(!(e===void 0||typeof fetch!="function"))return async(t,i)=>{let n=e(t,i);if(n===void 0)return;let o=await fetch(n);return o.ok?new Uint8Array(await o.arrayBuffer()):void 0}}function Bt(e,t,i,n,o){return t?kn(e,t,i,n,o):Sn(e,i,n)}function Sn(e,t,i){let n=qe(e,i);return{measurer:n,update:o=>{n.load(o,t)},afterPaint:()=>{},destroy:()=>n.destroy()}}var Rt=new WeakMap;function kn(e,t,i,n,o){let l,a,g,u=()=>{if(!l)throw new Error("canvasFonts: update() before measuring");return l};return{measurer:{advance:(d,y)=>u().measurer.advance(d,y),metrics:d=>u().measurer.metrics(d),itemize:d=>u().measurer.itemize(d)},update(d){l&&d.fonts===a||(g?.(),l?.dispose(),l=t.forDocument(d,{...i?{loader:i}:{},...o?{asset:o}:{}}),a=d.fonts,g=l.onChange(n))},afterPaint(){let d=e.fonts;if(!l||!d||typeof FontFace!="function")return;let y=Rt.get(e);y||Rt.set(e,y=new Set);for(let w of l.usedFaces()){if(y.has(w.id))continue;y.add(w.id);let E=new FontFace(w.id,An(w.bytes),{weight:String(w.weight),style:w.style});d.add(E),E.load().catch(()=>d.delete(E))}},destroy(){g?.(),l?.dispose(),l=void 0}}}function An(e){return e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength)}var Mn=.01,Tn=.004,Ht=40,On=16;function Oe(e,t){$t(e.ownerDocument);let i=t.document,n=r=>Bt(e.ownerDocument,r,t.loadFont,()=>{U(i)},Vt(t.resolveAsset)),o=n(t.fonts),l={advance:(r,p)=>o.measurer.advance(r,p),metrics:r=>o.measurer.metrics(r),itemize:r=>o.measurer.itemize?.(r)??[r]};o.update(i);let a=Fe(i),g=()=>t.resolveAsset?{measure:l,resolveAsset:t.resolveAsset}:{measure:l},u=Ke(i,a,g()),S=t.camera??ze,d=t.interactive??!0,y=t.wheel??"always";e.classList.add("vd-viewer"),t.surface&&(e.style.background=t.surface);let w=e.ownerDocument.createElementNS(ne,"svg");w.setAttribute("class","vd-viewer__surface"),w.setAttribute("width","100%"),w.setAttribute("height","100%");let E=e.ownerDocument.createElementNS(ne,"g");E.setAttribute("class","vd-viewer__camera"),E.style.isolation="isolate",w.appendChild(E);let L=e.ownerDocument.createElementNS(ne,"defs");E.appendChild(L);let x=e.ownerDocument.createElementNS(ne,"rect");x.setAttribute("class","vd-viewer__page"),E.appendChild(x),e.appendChild(w);let V=new Map,_=null;function M(){let r=t.sample;return _&&r?r(u,_.timeline,_.t,{doc:i,resolution:a,options:g()}):u}function H(){E.setAttribute("transform",Xe(S))}function Q(r=!0){let p=M();ee(p);let O=u.background!==void 0;T(x,"x",String(u.x)),T(x,"y",String(u.y)),T(x,"width",String(O?u.width:0)),T(x,"height",String(O?u.height:0)),F(x,"fill",u.background??null);let b=new Set,I=x;for(let A of p.items){let N=A.part===void 0?A.id:`${A.id}\0${A.part}`;b.add(N);let C=V.get(N);(!C||C.tagName!==Ut(A))&&(C?.remove(),C=e.ownerDocument.createElementNS(ne,Ut(A)),C.setAttribute("data-vd-id",A.id),V.set(N,C)),Pn(C,A),I.nextSibling!==C&&E.insertBefore(C,I.nextSibling),I=C}for(let[A,N]of V)b.has(A)||(N.remove(),V.delete(A));o.afterPaint(),r&&t.onSceneChange?.(u,i)}let R=new Map;function ee(r){let p=[...r.gradients.map(Tt),...[...new Map(r.items.filter(A=>A.shadows.length>0).map(A=>[A.id,A])).values()].map(A=>_t(A)),...r.clips.map(Mt)],O=new Set(p);for(let[A,N]of R)O.has(A)||(N.remove(),R.delete(A));let b=p.filter(A=>!R.has(A));if(b.length===0)return;[...new DOMParser().parseFromString(`<svg xmlns="${ne}">${b.join("")}</svg>`,"image/svg+xml").documentElement.children].forEach((A,N)=>{let C=e.ownerDocument.importNode(A,!0);L.appendChild(C),R.set(b[N],C)})}function U(r){i=r,o.update(i),a=Fe(i),u=Ke(i,a,g()),Q()}function G(r){let p=e.getBoundingClientRect();return{x:r.clientX-p.left,y:r.clientY-p.top}}let B=0,D=0;function ae(){e.classList.add("vd-viewer--interacting"),D&&clearTimeout(D),D=setTimeout(()=>{D=0,e.classList.remove("vd-viewer--interacting")},180)}function j(){B&&(cancelAnimationFrame(B),B=0),H(),t.onCameraChange?.(S)}function h(r){S=r,j()}function X(r){S=r,ae(),!B&&(B=requestAnimationFrame(()=>{B=0,H(),t.onCameraChange?.(S)}))}let se=null,Y=null,le=!1,ue=d&&y==="always",re=new Map,K=null,ie=()=>{let[r,p]=[...re.values()];return!r||!p?null:{mid:{x:(r.x+p.x)/2,y:(r.y+p.y)/2},distance:Math.hypot(r.x-p.x,r.y-p.y)}},pe=r=>{let p=re.get(r.pointerId);if(!p)return;let O=G(r);if(re.set(r.pointerId,O),re.size===1){X(ye(S,O.x-p.x,O.y-p.y));return}let b=ie();if(K&&b){let I=ye(S,b.mid.x-K.mid.x,b.mid.y-K.mid.y);X(K.distance>0?Te(I,b.mid,b.distance/K.distance):I)}K=b},J=r=>{re.delete(r.pointerId)&&(e.hasPointerCapture(r.pointerId)&&e.releasePointerCapture(r.pointerId),K=ie())},he=r=>{if(y==="modifier"&&!r.ctrlKey&&!r.metaKey)return;r.preventDefault();let p=G(r),O=r.deltaMode===1?On:r.deltaMode===2?e.clientHeight||800:1,b=r.deltaX*O,I=r.deltaY*O;if(r.ctrlKey||r.metaKey){let A=r.ctrlKey?Mn:Tn,N=Math.max(-Ht,Math.min(Ht,I));X(Te(S,p,Math.exp(-N*A)));return}if(r.shiftKey&&b===0){X(ye(S,-I,0));return}X(ye(S,-b,-I))},q=r=>{if(r.pointerType==="touch"){if(!ue)return;r.preventDefault(),re.set(r.pointerId,G(r)),e.setPointerCapture(r.pointerId),K=ie();return}(r.button===1||r.button===0&&le)&&(r.preventDefault(),se=r.pointerId,Y=G(r),e.setPointerCapture(r.pointerId))},ge=r=>{if(r.pointerType==="touch"){pe(r);return}if(se!==r.pointerId||!Y)return;let p=G(r);X(ye(S,p.x-Y.x,p.y-Y.y)),Y=p},ce=r=>{if(r.pointerType==="touch"){J(r);return}se===r.pointerId&&(se=null,Y=null,e.hasPointerCapture(r.pointerId)&&e.releasePointerCapture(r.pointerId))},me=r=>{r.code==="Space"&&(le=!0)},f=r=>{r.code==="Space"&&(le=!1)};ue&&(e.style.touchAction="none"),d&&(e.addEventListener("wheel",he,{passive:!1}),e.addEventListener("pointerdown",q),e.addEventListener("pointermove",ge),e.addEventListener("pointerup",ce),e.addEventListener("pointercancel",ce),e.ownerDocument.addEventListener("keydown",me),e.ownerDocument.addEventListener("keyup",f)),H(),Q();let v={element:e,surface:w,update:U,getDocument:()=>i,getScene:()=>u,setTime(r){r===null&&_===null||(_=r,Q(!1))},getTime:()=>_,getResolution:()=>a,getMeasurer:()=>l,setFonts(r){o.destroy(),o=n(r),U(i)},getCamera:()=>S,setCamera:h,zoomBy(r,p){let O=e.getBoundingClientRect(),b=p??{x:O.width/2,y:O.height/2};h(Te(S,b,r))},fitToContent(r=32){let p=e.getBoundingClientRect();h(fe({x:u.x,y:u.y,width:u.width,height:u.height},{width:p.width||u.width,height:p.height||u.height},r))},screenToDocument:r=>$e(S,r),documentToScreen:r=>Ze(S,r),pointerPoint:G,hitTest(r,p){for(let O=u.items.length-1;O>=0;O--){let b=u.items[O];if(b&&Bn(b,r,Vn/S.zoom)&&(!p||p(b.id)))return b.id}return null},linkAt(r,p){for(let O=u.items.length-1;O>=0;O--){let b=u.items[O];if(b?.kind!=="text"||p&&!p(b.id))continue;let I=b.rotation===0?r:Ge(r,{x:b.x+b.w/2,y:b.y+b.h/2},-b.rotation);for(let A of b.lines){if(I.y<A.y||I.y>A.y+A.h)continue;let N=A.spans.find(C=>I.x>=C.x&&I.x<=C.x+C.w);if(N)return N.style.link}}},itemOf:r=>u.items.find(p=>p.id===r),elementOf:r=>V.get(r),destroy(){d&&(e.removeEventListener("wheel",he),e.removeEventListener("pointerdown",q),e.removeEventListener("pointermove",ge),e.removeEventListener("pointerup",ce),e.removeEventListener("pointercancel",ce),e.ownerDocument.removeEventListener("keydown",me),e.ownerDocument.removeEventListener("keyup",f)),B&&cancelAnimationFrame(B),D&&clearTimeout(D),B=0,D=0,o.destroy(),e.classList.remove("vd-viewer--interacting"),w.remove(),V.clear(),e.classList.remove("vd-viewer")}};return t.autoFit&&v.fitToContent(),v}var _n="vd-clip-";function Ln(e){return _n+e}function Gt(e){return`url(#${Ln(e)})`}function Ut(e){return Lt(e)||e.pose!==void 0?"g":Je(e)}function Je(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 Pn(e,t){if(e.tagName!=="g"){jt(e,t);return}F(e,"clip-path",t.clip===void 0?null:Gt(t.clip)),e.style.mixBlendMode=t.blend==="normal"?"":t.blend;let i=t.pose;F(e,"opacity",i&&i.opacity<1?String(i.opacity):null);let n=e.firstElementChild;if((!n||n.tagName!==Je(t))&&(n?.remove(),n=e.ownerDocument.createElementNS(ne,Je(t)),e.appendChild(n)),jt(n,{...t,clip:void 0,blend:"normal"}),i){let o=t.rotation===0?"":` ${We(t)}`;T(n,"transform",`${Pt(i)}${o}`),t.kind==="vector"&&Cn(n,t)}}function Cn(e,t){let i=t.pose?.trace;if(i!==void 0&&t.stroke!==void 0){let o=yt(t.contours)+1;T(e,"stroke-dasharray",`${o} ${o}`),T(e,"stroke-dashoffset",String(o*(1-i)))}let n=t.pose?.fillOpacity;F(e,"fill-opacity",n!==void 0&&n<1?String(n):null)}function jt(e,t){switch(F(e,"clip-path",t.clip===void 0?null:Gt(t.clip)),F(e,"transform",t.rotation===0?null:We(t)),e.style.mixBlendMode=t.blend==="normal"?"":t.blend,e.style.filter=t.shadows.length>0?`url(#${Ot}${t.id})`:"",t.kind){case"ellipse":$n(e,t);return;case"frame":In(e,t);return;case"image":Dn(e,t);return;case"rect":zn(e,t);return;case"text":Nn(e,t);return;case"vector":Rn(e,t);return}}function In(e,t){T(e,"class","vd-viewer__page"),T(e,"x",String(t.x)),T(e,"y",String(t.y)),T(e,"width",String(t.w)),T(e,"height",String(t.h)),F(e,"fill",t.background??null)}function Dn(e,t){if(T(e,"x",String(t.x)),T(e,"y",String(t.y)),T(e,"width",String(t.w)),T(e,"height",String(t.h)),F(e,"opacity",t.opacity<1?String(t.opacity):null),t.href===void 0){T(e,"class","vd-viewer__missing"),F(e,"rx",t.radius>0?String(t.radius):null);return}T(e,"href",t.href),T(e,"preserveAspectRatio",Fn[t.fit])}var Fn={cover:"xMidYMid slice",contain:"xMidYMid meet",fill:"none"};function Nn(e,t){F(e,"opacity",t.opacity<1?String(t.opacity):null),T(e,"xml:space","preserve");let i=t.lines.flatMap(o=>o.spans).filter(o=>o.text!==""),n=e.ownerDocument;for(;e.childNodes.length>i.length;)e.lastChild?.remove();for(;e.childNodes.length<i.length;)e.appendChild(n.createElementNS(ne,"tspan"));i.forEach((o,l)=>{let a=e.childNodes[l];a.textContent!==o.text&&(a.textContent=o.text),T(a,"x",String(o.x)),T(a,"y",String(o.y)),T(a,"font-family",o.style.family),T(a,"font-size",String(o.style.size)),T(a,"fill",o.style.fill),F(a,"font-weight",o.style.weight===400?null:String(o.style.weight)),F(a,"font-style",o.style.italic?"italic":null),F(a,"letter-spacing",o.style.letterSpacing===0?null:String(o.style.letterSpacing)),F(a,"data-vd-link",o.style.link??null);let g=[o.style.underline?"underline":"",o.style.strike?"line-through":""].filter(Boolean).join(" ");F(a,"text-decoration",g===""?null:g)})}function zn(e,t){F(e,"class",null),T(e,"x",String(t.x)),T(e,"y",String(t.y)),T(e,"width",String(t.w)),T(e,"height",String(t.h)),T(e,"fill",t.fill),F(e,"rx",t.radius>0?String(t.radius):null),F(e,"stroke",t.stroke??null),F(e,"stroke-width",t.stroke&&t.strokeWidth>0?String(t.strokeWidth):null),F(e,"opacity",t.opacity<1?String(t.opacity):null)}function Kt(e,t){T(e,"fill",t.fill),F(e,"stroke",t.stroke??null),F(e,"stroke-width",t.stroke&&t.strokeWidth>0?String(t.strokeWidth):null),F(e,"opacity",t.opacity<1?String(t.opacity):null)}function $n(e,t){T(e,"cx",String(t.x+t.w/2)),T(e,"cy",String(t.y+t.h/2)),T(e,"rx",String(t.w/2)),T(e,"ry",String(t.h/2)),Kt(e,t)}function Rn(e,t){T(e,"d",t.d),Kt(e,t),F(e,"fill-rule",t.rule==="nonzero"?null:t.rule),F(e,"stroke-linecap",t.cap==="butt"?null:t.cap),F(e,"stroke-linejoin",t.join==="miter"?null:t.join)}function T(e,t,i){e.getAttribute(t)!==i&&e.setAttribute(t,i)}function F(e,t,i){i===null?e.hasAttribute(t)&&e.removeAttribute(t):T(e,t,i)}var Vn=4;function Bn(e,t,i){let n=e.rotation===0?t:Ge(t,{x:e.x+e.w/2,y:e.y+e.h/2},-e.rotation),o=n.x>=e.x&&n.x<=e.x+e.w&&n.y>=e.y&&n.y<=e.y+e.h;if(e.kind==="ellipse"){let l=e.stroke!==void 0?e.strokeWidth/2:0,a=e.w/2+l,g=e.h/2+l;if(a<=0||g<=0)return!1;let u=(n.x-(e.x+e.w/2))/a,S=(n.y-(e.y+e.h/2))/g;return u*u+S*S<=1}if(e.kind==="vector"){let l=e.stroke!==void 0&&e.strokeWidth>0;return wt(e.contours,n,{fill:e.fill!=="none",rule:e.rule,reach:(l?e.strokeWidth/2:0)+i})}return o}function be(e,t){let i=new Map;for(let o of t.items)o.kind==="frame"&&o.w>0&&o.h>0&&i.set(o.id,{id:o.id,x:o.x,y:o.y,w:o.w,h:o.h});let n=e.root.children.flatMap(o=>{let l=o.type==="frame"?i.get(o.id):void 0;return l&&o.type==="frame"?[{...l,skip:o.skip===!0}]:[]});return n.length===0?[{id:null,x:t.x,y:t.y,w:t.width,h:t.height,skip:!1}]:n.every(o=>o.skip)?n.map(o=>({...o,skip:!1})):n}function Wt(e,t){return e.root.children.find(n=>n.type==="frame"&&ut(n,t)!==void 0)?.id}function Yt(e,t){let i=t===void 0?-1:e.findIndex(n=>n.id===t);return i!==-1?i:Math.max(0,e.findIndex(n=>!n.skip))}function Ee(e,t,i){for(let n=t+i;n>=0&&n<e.length;n+=i)if(!e[n]?.skip)return n;return t}function qt(e){return e.filter(t=>!t.skip).length}function Qe(e,t){return e[t]?.skip!==!1?null:e.slice(0,t+1).filter(i=>!i.skip).length}function Zt(e,t){if(!/^\d+$/.test(e))return null;let i=Number(e),n=t.findIndex((o,l)=>Qe(t,l)===i);return n===-1?null:n}function Xt(e,t,i){let n=Wt(e,i),o=t.findIndex(l=>l.id!==null&&l.id===n);return o===-1?null:o}var Hn=et(Et),Un=et(St),Jt=et(kt);function et(e){return`cubic-bezier(${e.join(", ")})`}function Qt(e,t,i,n,o){let l={opacity:i},a=jn(e,t,n,o);if(e==="cut")return{keyframes:t==="enter"?[{visibility:"hidden"},{visibility:"hidden"}]:[{visibility:"visible"},{visibility:"visible"}],easing:"linear"};if(e==="pop"){let g=`${o.x}px ${o.y}px`;l.scale="1",l.transformOrigin=g}else(e==="rise"||e==="drop")&&(l.translate="0 0");return t==="enter"?{keyframes:[a,l],easing:Hn}:{keyframes:[l,a],easing:Un}}function jn(e,t,i,n){switch(e){case"rise":return{opacity:0,translate:`0 ${t==="enter"?i:-i}px`};case"drop":return{opacity:0,translate:`0 ${t==="enter"?-i:i}px`};case"pop":return{opacity:0,scale:String(bt),transformOrigin:`${n.x}px ${n.y}px`};case"fade":case"cut":case"wipe":case"grow":case"count":case"draw":return{opacity:0}}}function en(e,t){let i=t==="forward"?"-100%":"100%",n=t==="forward"?"100%":"-100%";switch(e){case"cut":return null;case"fade":return{still:[{opacity:1},{opacity:0}],live:null,stillOnTop:!0};case"push":return{still:[{translate:"0 0"},{translate:`${i} 0`}],live:[{translate:`${n} 0`},{translate:"0 0"}],stillOnTop:!1};case"slide":return t==="forward"?{still:null,live:[{translate:"100% 0"},{translate:"0 0"}],stillOnTop:!1}:{still:[{translate:"0 0"},{translate:"100% 0"}],live:null,stillOnTop:!0}}}var Gn={enter:"cut",duration:0,steps:[[]],clicks:new Map,scroll:!1};function tt(e){let t=new Map,i=new Map,n=new Map;lt(e.root,(g,u)=>{u&&(i.set(g.id,u.id),n.set(u.id,[...n.get(u.id)??[],g.id]))});let o=gt(e),l=mt(e);for(let[g,u]of Object.entries(e.motion??{})){if(!l.has(g))continue;let S=[[]],d=new Map,y=pt(u);for(let w of u.lines){if(w.id===g||o.get(w.id)!==g)continue;let E=w.go===void 0?void 0:ht(w.go);E&&d.set(w.id,E);let L=w.enter!==void 0?"enter":w.exit!==void 0?"exit":null,x=w.enter??w.exit;L===null||x===void 0||(w.step&&S.push([]),S.at(-1).push({id:w.id,kind:L,effect:x,duration:x==="cut"?0:Be(w.duration,y,He),delay:Be(w.delay,y,0),together:w.together===!0}))}t.set(g,{enter:u.enter??"cut",duration:u.duration??He,steps:S,clicks:d,scroll:u.scroll===!0})}let a=g=>[g,...(n.get(g)??[]).flatMap(u=>a(u))];return{pages:t,parents:i,within:a}}function tn(e,t){let i=t?.id;return(i?e.pages.get(i):void 0)??Gn}function nt(e){let t=0,i=0;return e.map((n,o)=>(t=(o===0?0:n.together?t:i)+n.delay,i=t+n.duration,{build:n,at:t}))}function nn(e){return Math.max(0,...nt(e).map(({build:t,at:i})=>i+t.duration))}function we(e,t){let i=new Set,n=new Set;for(let o of e.steps.flat())n.has(o.id)||(n.add(o.id),o.kind==="enter"&&i.add(o.id));for(let o of e.steps.slice(0,t).flat())o.kind==="enter"?i.delete(o.id):i.add(o.id);return i}function rn(e,t,i){for(let n=i;n!==void 0;n=e.parents.get(n)){let o=t.clicks.get(n);if(o)return{id:n,target:o}}}function on(e,t,i){let n=[...e];for(;n.length>0;){let o=n.pop(),l=t.findIndex(a=>a.id!==null&&a.id===o);if(l!==-1&&l!==i)return{index:l,history:n}}return null}function sn(e,t,i){let n=Me(t.width/Math.max(1,e.w));if(e.h*n<=t.height)return{camera:fe({x:e.x,y:e.y,width:e.w,height:e.h},t,0),top:0,max:0};let o=e.h-t.height/n,l=Math.min(Math.max(0,i),o),a=(t.width-e.w*n)/2-e.x*n;return{camera:{zoom:n,x:a,y:0-(e.y+l)*n},top:l,max:o}}var _e=.9,rt=.1;function an(e,t){return e.deltaMode===1?e.deltaY*16:e.deltaMode===2?e.deltaY*t.height:e.deltaY}var Kn=1500,Wn=2e3,Yn=200,qn=50;function it(e,t){let i=e.ownerDocument;e.classList.add("vd-player"),e.tabIndex=-1;let n=new Set,o=new Set,l=!1,a=Oe(e,{document:t.document,...t.timeline?{sample:t.timeline.sample}:{},interactive:!1,surface:"#000",...t.fonts?{fonts:t.fonts}:{},...t.loadFont?{loadFont:t.loadFont}:{},...t.resolveAsset?{resolveAsset:t.resolveAsset}:{},onSceneChange:()=>{l&&q()}}),g=i.createElementNS(ne,"path");g.setAttribute("class","vd-player__mask"),g.setAttribute("fill","#000"),g.setAttribute("fill-rule","evenodd"),a.surface.appendChild(g);let u=i.createElement("div");u.className="vd-player__counter",u.setAttribute("aria-live","polite"),e.appendChild(u);let S=tt(t.document),d=be(t.document,a.getScene()),y=Yt(d,t.start),w=[],E=0,L=[],x,V=0,_="",M=0,H=0,Q=1,R=new Map,ee,U=0,G,B,D=i.defaultView,ae=()=>typeof a.surface.animate=="function"&&!(D?.matchMedia?.("(prefers-reduced-motion: reduce)").matches??!1),j=()=>tn(S,d[y]),h;function X(){let s=d[y]?.id;if(!t.timeline||!s)return;let c=a.getDocument();return Ue(c.motion?.[s])?t.timeline.of(c,s):void 0}function se(s,c){return Math.min(s.length,...s.steps.filter(m=>m>c))}function Y(){h&&(a.setTime({timeline:h.timeline,t:h.t}),h.timeline.camera&&J())}function le(s){if(!h||(h.frame=0,!h.playing))return;let c=h.last===0?0:s-h.last;h.last=s;let m=se(h.timeline,h.t);h.t=Math.min(m,t.sound?.position()??h.t+c),h.t>=m&&(h.playing=!1,t.sound?.stop()),Y(),h.playing&&(h.frame=D?.requestAnimationFrame(le)??0)}function ue(){if(h){if(!ae()||!D?.requestAnimationFrame){h.t=se(h.timeline,h.t),Y();return}h.playing=!0,h.last=0,t.sound?.play(h.timeline,h.t),h.frame=D.requestAnimationFrame(le)}}function re(){h?.frame&&D?.cancelAnimationFrame(h.frame),h=void 0,t.sound?.stop(),a.setTime(null)}function K(s,c){h={timeline:s,t:c?0:s.length,playing:!1,last:0,frame:0},t.sound?.prepare(a.getDocument(),s),Y(),c&&ue()}function ie(){let s=X();s?(E=j().steps.length,K(s,!0)):p()}function pe(){let s=e.getBoundingClientRect(),c=d[y];return{width:s.width||c?.w||1,height:s.height||c?.h||1}}function J(){let s=d[y];if(!s)return;let c=pe(),m=h?.timeline.camera&&t.timeline?t.timeline.camera(h.timeline,h.t,a.getScene(),{doc:a.getDocument(),resolution:a.getResolution()}):{x:s.x,y:s.y,w:s.w,h:s.h},k=fe({x:m.x,y:m.y,width:m.w,height:m.h},c,0);if(H=0,j().scroll){let P=sn(s,c,M);k=P.camera,M=P.top,H=P.max}Q=k.zoom,a.setCamera(k);let z=m.x*k.zoom+k.x,$=m.y*k.zoom+k.y,W=m.w*k.zoom,oe=m.h*k.zoom;g.setAttribute("d",`M0 0H${c.width}V${c.height}H0ZM${z} ${$}h${W}v${oe}h${-W}Z`),g.dataset.slide=s.id??""}function he(){let s=Qe(d,y),c=qt(d);u.textContent=s===null?"Skipped":`${s} / ${c}`,u.classList.add("vd-player__counter--shown"),G&&clearTimeout(G),G=setTimeout(()=>u.classList.remove("vd-player__counter--shown"),Kn),t.onChange?.(s,c)}function q(){let s=new Set;for(let c of n)for(let m of S.within(c))s.add(m);o=s;for(let c of a.surface.querySelectorAll("[data-vd-hidden]")){let m=c.getAttribute("data-vd-id");(m===null||!s.has(m))&&c.removeAttribute("data-vd-hidden")}for(let c of s)a.elementOf(c)?.setAttribute("data-vd-hidden","")}function ge(s){return S.within(s).flatMap(c=>{let m=a.elementOf(c);return m?[m]:[]})}function ce(s){let c=1/0,m=1/0,k=-1/0,z=-1/0;for(let $ of S.within(s)){let W=a.itemOf($);W&&(c=Math.min(c,W.x),m=Math.min(m,W.y),k=Math.max(k,W.x+W.w),z=Math.max(z,W.y+W.h))}return Number.isFinite(c)?{x:(c+k)/2,y:(m+z)/2}:{x:0,y:0}}function me(){if(!(L.length===0&&!x)){V+=1,E===0&&(E=1),n=we(j(),E),q();for(let s of L)s.cancel();L=[],x?.remove(),x=void 0}}function f(){return L.length===0&&!x?!1:(me(),!0)}function v(s,c){return new Promise(m=>{let k=!1,z=()=>{k||(k=!0,m())};Promise.all(s.map($=>$.finished)).then(z,()=>{k=!0}),setTimeout(()=>{if(!k){for(let $ of s)($.playState==="running"||$.playState==="paused")&&$.finish();z()}},c+qn)})}function r(s,c,m){if(s===y||!d[s])return;let k=j(),z=d[y]?.id;z&&R.set(z,ee===void 0?M:U),O(),y=s;let $=j(),W=d[s]?.id;M=c||!W?0:R.get(W)??0;let oe=m==="forward"?$:k,P=ae()?en(oe.enter,m):null;P&&(x=a.surface.cloneNode(!0),x.classList.add("vd-player__still"),x.setAttribute("aria-hidden","true"),P.stillOnTop?a.surface.after(x):a.surface.before(x)),re();let ke=X();if(J(),ke?(E=$.steps.length,n=new Set,K(ke,!1),c&&h&&(h.t=0),Y()):(E=c?0:$.steps.length,n=we($,E)),q(),he(),!P||!x){c&&ie();return}let Ie={duration:oe.duration,easing:Jt},te=[];P.still&&te.push(x.animate(P.still,{...Ie,fill:"forwards"})),P.live&&te.push(a.surface.animate(P.live,Ie)),L.push(...te);let xe=V;v(te,oe.duration).then(()=>{if(xe===V){L=L.filter(ve=>!te.includes(ve));for(let ve of te)ve.cancel();x?.remove(),x=void 0,c&&ie()}})}function p(){let s=j(),c=s.steps[E];if(c===void 0)return;E+=1;let m=we(s,E);if(c.length===0)return;if(!ae()){n=m,q();return}let k=new Set(c.filter(P=>P.kind==="enter").map(P=>P.id));n=new Set([...we(s,E-1)].filter(P=>!k.has(P))),q();let z=d[y],$=je*Math.min(z?.w??0,z?.h??0),W=V,oe=[];for(let{build:P,at:ke}of nt(c)){let Ie=ce(P.id),te=[];for(let xe of ge(P.id)){let ve=Number(xe.getAttribute("opacity")??1),{keyframes:gn,easing:yn}=Qt(P.effect,P.kind,Number.isFinite(ve)?ve:1,$,Ie);te.push(xe.animate(gn,{duration:P.duration,delay:ke,easing:yn,fill:P.kind==="enter"?"backwards":"forwards"}))}oe.push(...te),P.kind==="exit"&&te.length>0&&v(te,ke+P.duration).then(()=>{if(W===V){n.add(P.id),q();for(let xe of te)xe.cancel()}})}L.push(...oe),v(oe,nn(c)).then(()=>{if(W===V){L=L.filter(P=>!oe.includes(P)),n=m,q();for(let P of oe)P.cancel()}})}function O(){ee!==void 0&&D?.cancelAnimationFrame(ee),ee=void 0}function b(s){if(O(),U=Math.min(Math.max(0,s),H),!ae()||!D?.requestAnimationFrame){M=U,J();return}let c=M,m,k=z=>{m??=z;let $=Math.min(1,(z-m)/Yn);M=c+(U-c)*(1-(1-$)**3),J(),ee=$<1?D.requestAnimationFrame(k):void 0};ee=D.requestAnimationFrame(k)}function I(s,c){if(f())return;let m=ee===void 0?M:U;if(!(s>0?M>=H-.5:M<=.5)){b(m+s*pe().height/Q);return}c||(s>0?C():Z())}function A(s){if(!(!j().scroll||H<=0))switch(s.key){case" ":return s.shiftKey?-_e:_e;case"PageDown":return _e;case"PageUp":return-_e;case"ArrowDown":return rt;case"ArrowUp":return-rt;default:return}}function N(s){let c=Math.min(Math.max(0,s),d.length-1);if(c===y)return;let m=d[y]?.id;m&&w.push(m),r(c,!0,"forward")}function C(){if(!f()){if(h){if(h.playing){h.frame&&D?.cancelAnimationFrame(h.frame),h.playing=!1,t.sound?.stop(),h.t=se(h.timeline,h.t),Y();return}if(h.t<h.timeline.length){ue();return}}if(E<j().steps.length){p();return}N(Ee(d,y,1))}}function Z(){if(f())return;let s=on(w,d,y);if(s){w=s.history,r(s.index,!1,"back");return}r(Ee(d,y,-1),!1,"back")}function Pe(s){switch(s.kind){case"url":t.onLink?.(s.url);return;case"back":Z();return;case"next":N(Ee(d,y,1));return;case"frame":{let c=Xt(a.getDocument(),d,s.id);c===null?C():Re(c,s.id)}}}function Re(s,c){let m=s===y;m||N(s);let k=d[y];if(!k||!j().scroll)return;let z=k.id===c?void 0:a.itemOf(c),$=z?z.y-k.y:0;m?b($):(M=$,J())}function Se(s){let c=d[y];if(!c||s.x<c.x||s.y<c.y||s.x>c.x+c.w||s.y>c.y+c.h)return;let m=W=>!o.has(W),k=a.hitTest(s,m),z=k===null?void 0:rn(S,j(),k);if(z)return z.target;let $=a.linkAt(s,m);return $===void 0?void 0:De($)}let Ce=s=>{if(s.stopPropagation(),s.metaKey||s.ctrlKey||s.altKey)return;let c=s.key,m=A(s);if(m!==void 0){_="",I(m,s.repeat),s.preventDefault();return}if(/^\d$/.test(c))_+=c;else if(c==="Enter"&&_!==""){let k=Zt(_,d);_="",!f()&&k!==null&&N(k)}else if(c==="Escape")_!==""?_="":t.onExit?.();else if(["ArrowRight","ArrowDown","PageDown"," ","Enter"].includes(c))_="",C();else if(["ArrowLeft","ArrowUp","PageUp","Backspace"].includes(c))_="",Z();else if(c==="Home")f()||N(Ee(d,-1,1));else if(c==="End")f()||N(Ee(d,d.length,-1));else return;s.preventDefault()},at=s=>{if(f())return;let c=Se(a.screenToDocument(a.pointerPoint(s)));c?Pe(c):C()},ct=s=>{!j().scroll||H<=0||(s.preventDefault(),!(x||s.ctrlKey||s.metaKey)&&(O(),M=Math.min(Math.max(0,M+an(s,pe())/Q),H),J()))},Ve=s=>{if(e.classList.remove("vd-player--idle"),B&&clearTimeout(B),B=setTimeout(()=>e.classList.add("vd-player--idle"),Wn),!s)return;let c=a.screenToDocument(a.pointerPoint(s));e.classList.toggle("vd-player--link",Se(c)!==void 0)},dt=D&&"ResizeObserver"in D?new D.ResizeObserver(()=>J()):void 0;return dt?.observe(e),e.addEventListener("keydown",Ce),e.addEventListener("click",at),e.addEventListener("pointermove",Ve),e.addEventListener("wheel",ct,{passive:!1}),l=!0,J(),n=X()?new Set:we(j(),0),q(),he(),Ve(),e.focus({preventScroll:!0}),ie(),{viewer:a,index:()=>y,count:()=>d.length,next:C,back:Z,go(s){me(),N(s)},update(s){if(s===a.getDocument())return;me();let c=d[y]?.id;a.update(s),S=tt(s),d=be(s,a.getScene());let m=d.findIndex(z=>z.id===c);y=m===-1?Math.min(y,d.length-1):m,m===-1&&(O(),M=0),re();let k=X();k&&K(k,!1),J(),E=j().steps.length,n=k?new Set:we(j(),E),q()},refit:J,destroy(){V+=1,O(),h?.frame&&D?.cancelAnimationFrame(h.frame),h=void 0,t.sound?.stop();for(let s of L)s.cancel();L=[],x?.remove(),dt?.disconnect(),e.removeEventListener("wheel",ct),e.removeEventListener("keydown",Ce),e.removeEventListener("click",at),e.removeEventListener("pointermove",Ve),G&&clearTimeout(G),B&&clearTimeout(B),g.remove(),u.remove(),a.destroy(),e.classList.remove("vd-player","vd-player--idle","vd-player--link"),e.removeAttribute("tabindex")}}}function cn(e){let t=e,i=new Map,n=typeof URL.createObjectURL=="function"&&typeof URL.revokeObjectURL=="function";return{resolve(o){let l=i.get(o.hash);if(l!==void 0)return l;let a=t.get(o.hash);if(a===void 0)return;if(!n)return xt(o.type,a);let g;try{g=vt(a)}catch{return}let u=URL.createObjectURL(new Blob([g],{type:o.type}));return i.set(o.hash,u),u},replace(o){t=o;for(let[l,a]of i)o.has(l)||(URL.revokeObjectURL(a),i.delete(l))},destroy(){for(let o of i.values())URL.revokeObjectURL(o);i.clear(),t=new Map}}}var ot=["page","content","none"],dn=24;function Le(e){let t=e.getBoundingClientRect();return{width:t.width,height:t.height}}function fn(e,t){let i=t===void 0?void 0:e.itemOf(t);if(!(!i||i.w<=0||i.h<=0))return{x:i.x,y:i.y,width:i.w,height:i.h}}function ln(e,t,i,n){if(i==="none")return;let o=i==="page"?fn(e,n):void 0;if(!o){e.fitToContent(dn);return}let l=Le(t);e.setCamera(fe(o,{width:l.width||o.width,height:l.height||o.height},dn))}function un(e,t,i){let n=fn(e,i);if(!n)return;let o=e.getCamera(),l=Le(t),a=l.width||n.width*o.zoom,g=l.height||n.height*o.zoom;e.setCamera({zoom:o.zoom,x:a/2-(n.x+n.width/2)*o.zoom,y:g/2-(n.y+n.height/2)*o.zoom})}var st=Symbol.for("vdesign.embed.handover");function pn(e){return e[st]}var hn=["exact","browser"],mn=["ready","problems","page","fonts"];async function Zn(e,t){try{let{exactFontsAt:i}=await import("./chunks/fonts.js"),n=i(e);return(await n.ensure(t)).length===0?n:void 0}catch{return}}async function Qr(e,t,i={}){let n=i.fit??"page";if(!ot.includes(n))throw new TypeError(`view: fit must be one of ${ot.join(", ")}; got ${String(n)}.`);let o=i.fonts??"exact";if(!hn.includes(o))throw new TypeError(`view: fonts must be one of ${hn.join(", ")}; got ${String(o)}.`);let l=o==="exact"?It(i.fontBase,ft,e.ownerDocument.baseURI):void 0,a=pn(i),g=await Ye(t),u=a?.page!==void 0&&de(g.document).some(f=>f.id===a.page)?a.page:i.page===void 0?de(g.document)[0]?.id:Ae(g.document,i.page).id,S=a?.exact&&l?await Zn(l,g.document):void 0,d=e.ownerDocument,y=d.defaultView,w=cn(g.blocks),E=g.blocks,L=[...g.problems],x,V=()=>x?[...L,x]:[...L],_=d.createElement("div");_.className="vd-embed",_.style.width="100%",_.style.height="100%",e.appendChild(_);let M=Oe(_,{document:g.document,interactive:i.interactive??!0,wheel:"modifier",resolveAsset:f=>w.resolve(f),...i.surface?{surface:i.surface}:{},...a?{camera:a.camera}:{},...S?{fonts:S.library}:{}}),H={ready:new Set,problems:new Set,page:new Set,fonts:new Set},Q=!1,R=!1,ee=0,U,G,B=S,D=o==="browser"?"browser":void 0,ae;function j(){Q=!0;for(let f of H.ready)f()}function h(){for(let f of H.problems)f(V())}function X(f){D=f;for(let v of H.fonts)v(f)}function se(){return ae??=(async()=>{if(l)try{let{exactFontsAt:f}=await import("./chunks/fonts.js");return f(l)}catch{return}})(),ae}function Y(f){B=void 0,M.setFonts(void 0),U?.fonts(void 0),x=f,h(),X("browser")}async function le(){let f=await se();if(!R){if(!f){Y(Ne([],l?"the fonts chunk would not load":"no fontBase was given and this build has no default"));return}for(;;){let v=M.getDocument(),r=await f.ensure(v);if(R)return;if(r.length>0){Y(Ne(r));return}if(M.getDocument()===v)break}B=f,M.setFonts(f.library),U?.fonts(f),X("exact")}}function ue(){let f=re(u);if(f)for(let v of H.page)v(f)}function re(f){let v=de(M.getDocument()).find(r=>r.id===f);if(v)return v.name===void 0?{id:v.id}:{id:v.id,name:v.name}}let K=()=>ln(M,_,n,u),ie=()=>un(M,_,u);function pe(f){if(R)return;let v=Ae(M.getDocument(),f).id,r=v!==u;u=v,n==="page"?K():ie(),r&&ue()}function J(f){i.onLink?i.onLink(f):y?.open(f,"_blank","noopener,noreferrer")}let he=f=>{if(f.button!==0||U)return;let v=M.linkAt(M.screenToDocument(M.pointerPoint(f)));if(v===void 0)return;let r=De(v);if(r){if(f.preventDefault(),r.kind==="frame"){de(M.getDocument()).some(p=>p.id===r.id)&&pe(r.id);return}J(r.url)}};_.addEventListener("click",he);let q=Le(_),ge=y&&"ResizeObserver"in y?new y.ResizeObserver(()=>{let f=Le(_);f.width===q.width&&f.height===q.height||(q=f,K())}):void 0;ge?.observe(_),a||(n==="none"&&u!==void 0&&i.page!==void 0?ie():K()),j(),S?X("exact"):o==="exact"&&le();let ce={async load(f){if(R)throw new Error("view: this view was destroyed.");let v=++ee,r=await Ye(f),p=B,O=p?await p.ensure(r.document):[];if(G&&await G||R||v!==ee)return;O.length>0&&B===p&&Y(Ne(O)),w.replace(r.blocks),E=r.blocks,M.update(r.document),L=[...r.problems],U?.update(r.document),de(r.document).some(I=>I.id===u)||(u=de(r.document)[0]?.id,n==="page"?K():ie(),ue()),h(),j()},pages:()=>de(M.getDocument()).map(f=>f.name===void 0?{id:f.id}:{id:f.id,name:f.name}),goTo:pe,fit:()=>{R||K()},play(f={}){if(R)return Promise.reject(new Error("view: this view was destroyed."));try{return U?.stop(),Promise.resolve(me(M.getDocument(),f.page))}catch(v){return Promise.reject(v instanceof Error?v:new Error(String(v)))}},async edit(f={}){if(R)throw new Error("view: this view was destroyed.");if(G)throw new Error("view: edit() is already opening an editor.");let v;G=new Promise(p=>v=p);let r=!1;try{let{edit:p}=await import("./edit.js");if(R)throw new Error("view: this view was destroyed.");let O={camera:M.getCamera(),page:u,exact:B!==void 0},b=Ct(M.getDocument(),E,L),I=await p(e,b,{...i,...f,[st]:O});if(R)throw I.destroy(),new Error("view: this view was destroyed.");return r=!0,ce.destroy(),I}finally{G=void 0,v(r)}},on(f,v){if(!mn.includes(f))throw new TypeError(`view: on() takes one of ${mn.join(", ")}; got ${String(f)}.`);let r=H[f];if(r.add(v),f==="ready"&&Q&&queueMicrotask(()=>{r.has(v)&&v()}),f==="problems"&&queueMicrotask(()=>{r.has(v)&&v(V())}),f==="fonts"&&D!==void 0){let p=D;queueMicrotask(()=>{r.has(v)&&v(p)})}return()=>{r.delete(v)}},destroy(){if(!R){R=!0,U?.stop(),_.removeEventListener("click",he),ge?.disconnect(),M.destroy(),w.destroy(),_.remove();for(let f of Object.values(H))f.clear()}}};function me(f,v){let r=v===void 0?u:Ae(f,v).id,p=d.createElement("div");p.className="vd-embed__play",p.style.position="absolute",p.style.inset="0";let O=Z=>Z.stopPropagation();p.addEventListener("wheel",O);let b=d.activeElement;_.appendChild(p);let I=!1,A=()=>{if(I)return;I=!0,U===N&&(U=void 0),C.destroy(),p.removeEventListener("wheel",O);let Z=p.contains(d.activeElement);p.remove(),Z&&b&&"focus"in b&&typeof b.focus=="function"&&b.focus({preventScroll:!0})},N={stop:A,update:Z=>C.update(Z),fonts:Z=>C.viewer.setFonts(Z?.library)},C=it(p,{document:f,resolveAsset:Z=>w.resolve(Z),...B?{fonts:B.library}:{},...r===void 0?{}:{start:r},onExit:A,onLink:J});return U=N,{goTo(Z){if(I)return;let Pe=C.viewer.getDocument(),Re=Ae(Pe,Z).id,Se=be(Pe,C.viewer.getScene()).findIndex(Ce=>Ce.id===Re);Se!==-1&&C.go(Se)},destroy:A}}return ce}export{wn as version,Qr as view};
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getv.design/embed",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Render, present and edit vDesign (.vd) documents in any web page. Free to use.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": {
|
|
7
|
-
"name": "
|
|
7
|
+
"name": "vDesign",
|
|
8
8
|
"email": "sagar@getv.design"
|
|
9
9
|
},
|
|
10
10
|
"homepage": "https://getv.design/docs/embed/",
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/*! @getv.design/embed v0.3.1. Free to use under the vDesign Embed Licence. © 2026 Sagar Saini. https://getv.design/docs/licence/ */
|
|
2
|
-
var Ie=["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],ce=["left","center","right","justify"],fe=["top","middle","bottom"],de=["cover","contain","fill"],Ae=["nonzero","evenodd"],Ne=["butt","round","square"],Pe=["miter","round","bevel"],mn=["canvas","frame","group"];function De(e){return mn.includes(e)}function N(e){return De(e.type)}function le(e){return e.type==="group"}function q(e){return N(e)?e.children:[]}var gn={canvas:["w","h"],ellipse:["x","y","w","h","rotation","strokeWidth","opacity"],frame:["x","y","w","h"],group:[],image:["x","y","w","h","rotation","radius","opacity"],rect:["x","y","w","h","rotation","strokeWidth","radius","opacity"],text:["x","y","w","h","rotation","size","weight","lineHeight","letterSpacing","opacity"],vector:["x","y","w","h","rotation","strokeWidth","opacity"]};function Re(e){return gn[e.type]}function O(e,t,n){if(t(e,n)!==!1&&N(e))for(let r of e.children)O(r,t,e)}function L(e,t){let n;return O(e,r=>{if(n)return!1;r.id===t&&(n=r)}),n}function V(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 Z="--- payload base64 ---",lr="sha256-";function yn(e){let t=yr(e);return t===-1?{head:e,payload:""}:{head:e.slice(0,t),payload:e.slice(t+Z.length)}}function pr(e){let{head:t,payload:n}=yn(e);return{head:t,blocks:xn(n)}}function xn(e){let t=new Map;for(let n of e.split(`
|
|
3
|
-
`)){let r=n.indexOf(" ");if(r===-1)continue;let o=n.slice(0,r);o.startsWith(lr)&&t.set(o,n.slice(r+1).trim())}return t}function hr(e,t){return`data:${e};base64,${t}`}function mr(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 gr(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 yr(e){if(e.startsWith(Z))return 0;let t=e.indexOf(`
|
|
4
|
-
${Z}`);return t===-1?-1:t+1}function pe(e){return{expr:e}}function P(e){return typeof e=="object"&&e!==null&&typeof e.expr=="string"}var he=["design"],Q="design";var Le=[1,2,3,4],j="doc";function me(e){return{type:"canvas",...e}}function Ce(e={}){return{version:4,kind:e.kind??Q,...e.title===void 0?{}:{title:e.title},tokens:e.tokens??{},fonts:e.fonts??{},assets:e.assets??{},...e.motion===void 0||Object.keys(e.motion).length===0?{}:{motion:e.motion},root:e.root??me({id:j,children:[]})}}var Fe=["beat","bar"];var xr=/^(\d+(?:\.\d+)?)(beats?|bars?)$/;function ee(e){let t=xr.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 te(e,t){return`${String(Math.round(e*1e6)/1e6)}${t}${e===1?"":"s"}`}function ne(e){return typeof e=="string"&&ee(e)!==void 0}function U(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 ge(e,t,n){if(e===void 0)return n;if(typeof e=="number")return e;let r=ee(e);return!r||!t?n:r.count*(r.unit==="bar"?t.bar:t.beat)}var ye=36e5;var Ve=["cut","fade","push","slide"],je=["cut","fade","rise","drop","pop","wipe","grow","count","draw"],re=["cut","fade","rise","drop","pop"],Ue=["pulse"],Be=["out","in","inout","linear","spring"],We=["word","letter"],B=["left","right","top","bottom"],$n=400,xe=1e4,ze=18e4,W=7680;function oe(e){let t=e.trim();return t==="back"?{kind:"back"}:t==="next"?{kind:"next"}:V(t)}function $e(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 Xe(e){return e.camera===!0||e.enter!==void 0||e.exit!==void 0||e.emphasis!==void 0||e.go!==void 0}var wr=["camera","emphasis","from","by","stagger","hold","at","after","with","on","ease","pad"];function wn(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=>wr.some(n=>t[n]!==void 0)||t.enter!==void 0&&!re.includes(t.enter)||t.exit!==void 0&&!re.includes(t.exit))}function Ge(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 He(e){return new Set(e.root.children.filter(t=>t.type==="frame").map(t=>t.id))}function Ye(e){let t=new Map;for(let n of e.root.children)n.type==="frame"&&O(n,r=>{t.set(r.id,n.id)});return t}function br(e){let t=new Set;return O(e,n=>{t.add(n.id)}),t}function we(e,t){let n=e.motion;if(!n)return[];let r=[],o=He(e),i=Ye(e),s=br(e.root),u=(a,c)=>{let f=t?.(a,c);return f===void 0?"":`Line ${f}: `};for(let a of Ge(e)){let c=n[a];if(!c)continue;if(!o.has(a)){r.push({severity:"warning",code:"motion-not-a-page",message:`${u(a)}motion ${a}: ${a} is not a page (a top-level frame), so none of it plays`,nodeId:a});continue}let f=new Set;for(let d of c.lines){let l=u(a,d.id);for(let h of["after","with"]){let x=d[h];x!==void 0&&!f.has(x)&&r.push({severity:"warning",code:"motion-anchor-missing",message:`${l}motion ${a}: ${h}=${x} names no line above, so it starts after the line above instead`,nodeId:d.id})}d.camera!==!0&&f.add(d.id);let p=s.has(d.id)?L(e.root,d.id):void 0;p&&r.push(...kr(d,p,l,a)),s.has(d.id)?i.get(d.id)!==a&&r.push({severity:"warning",code:"motion-wrong-page",message:`${l}motion ${a}: ${d.id} is not on ${a}, so Play skips it`,nodeId:d.id}):r.push({severity:"warning",code:"unknown-reference",message:`${l}motion ${a}: no node ${d.id}`,nodeId:d.id});let g=d.go===void 0?void 0:oe(d.go);g?.kind==="frame"&&!Sr(e,g.id)&&r.push({severity:"warning",code:"unknown-reference",message:`${l}motion ${a}: go=#${g.id} names no frame`,nodeId:d.id})}}return r}function kr(e,t,n,r){let o=[],i=(u,a)=>{o.push({severity:"warning",code:u,message:`${n}motion ${r}: ${a}`,nodeId:t.id})};if(e.camera===!0)return o;let s=e.enter??e.exit;return s==="count"&&(t.type!=="text"||!/\d/.test(Je(t.content)))&&i("count-no-number",`${t.id} has no number to count, so it fades in instead`),s==="draw"&&!Er(t)&&i("draw-no-stroke",`${t.id} has no stroked vector to draw, so it fades in instead`),e.by!==void 0&&t.type!=="text"?i("by-not-text",`by=${e.by} splits text, and ${t.id} is a ${t.type}`):e.by!==void 0&&t.type==="text"&&vr(t)&&i("by-rotated",`${t.id} is rotated, so by=${e.by} enters it whole`),e.stagger!==void 0&&e.by===void 0&&q(t).length===0&&i("stagger-no-children",`${t.id} has no children to stagger: split a text with by=word`),o}function vr(e){let t=e.rotation;return t!==void 0&&t!==0}function Er(e){let t=!1;return O(e,n=>(n.type==="vector"&&n.stroke!==void 0&&(t=!0),t?!1:void 0)),t}function Je(e){return typeof e=="string"?e:e.map(t=>typeof t=="string"?t:t.text).join("")}function Sr(e,t){let n=!1;return O(e.root,r=>{if(n)return!1;r.id===t&&(n=r.type==="frame")}),n}function m(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 Mr={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0};function kt(e){let t=[],n,r=0,o=0,i=0,s=0,u,a,c=Tr(e),f=()=>(n||(n={anchors:[{x:r,y:o}],closed:!1},t.push(n)),n.anchors[n.anchors.length-1]),d=(h,x)=>{f(),n?.anchors.push({x:h,y:x}),r=h,o=x},l=(h,x,k,$)=>{f().out=h,n?.anchors.push({x:k,y:$,in:x}),r=k,o=$},p="",g=!0;for(;c.more();){let h=c.command();if(h!==void 0)p=h,g=!0;else if(p===""||p.toUpperCase()==="Z")return{contours:Ke(t),error:`Expected a command at ${c.at()}`};let x=p.toUpperCase(),k=p!==x,$=Mr[x];if($===void 0)return{contours:Ke(t),error:`Unknown command ${p}`};if(x==="Z"){n&&(n.closed=!0),n=void 0,r=i,o=s,u=void 0,a=void 0,p="";continue}let A=x==="A"?c.arc():c.numbers($);if(A===void 0)return{contours:Ke(t),error:`${p} expects ${$} numbers at ${c.at()}`};let y=k?r:0,b=k?o:0,w=v=>A[v];switch(x){case"M":g&&(n={anchors:[{x:y+w(0),y:b+w(1)}],closed:!1},t.push(n),r=i=y+w(0),o=s=b+w(1),p=k?"l":"L"),u=a=void 0;break;case"L":d(y+w(0),b+w(1)),u=a=void 0;break;case"H":d(y+w(0),o),u=a=void 0;break;case"V":d(r,b+w(0)),u=a=void 0;break;case"C":{let v={x:y+w(2),y:b+w(3)};l({x:y+w(0),y:b+w(1)},v,y+w(4),b+w(5)),u=v,a=void 0;break}case"S":{let v=u?{x:2*r-u.x,y:2*o-u.y}:{x:r,y:o},S={x:y+w(0),y:b+w(1)};l(v,S,y+w(2),b+w(3)),u=S,a=void 0;break}case"Q":case"T":{let v=x==="Q"?{x:y+w(0),y:b+w(1)}:a?{x:2*r-a.x,y:2*o-a.y}:{x:r,y:o},S=x==="Q"?y+w(2):y+w(0),C=x==="Q"?b+w(3):b+w(1),G={x:r+2/3*(v.x-r),y:o+2/3*(v.y-o)},H={x:S+2/3*(v.x-S),y:C+2/3*(v.y-C)};l(G,H,S,C),a=v,u=void 0;break}case"A":{let v=y+w(5),S=b+w(6);for(let[C,G,H]of _r(r,o,w(0),w(1),w(2),w(3)!==0,w(4)!==0,v,S))l(C,G,H.x,H.y);(r!==v||o!==S)&&d(v,S),u=a=void 0;break}}g=!1}return{contours:Ke(t)}}function Ke(e){return e.map(t=>{let n=[...t.anchors];if(t.closed&&n.length>1){let r=n[0],o=n[n.length-1];be(r,o)&&(n.pop(),n[0]={...r,...o.in?{in:o.in}:{}})}return{anchors:n.map(Or),closed:t.closed}})}function Or(e){let t={x:e.x,y:e.y};return e.in&&!be(e.in,e)&&(t.in=e.in),e.out&&!be(e.out,e)&&(t.out=e.out),t}function be(e,t,n=1e-6){return Math.abs(e.x-t.x)<n&&Math.abs(e.y-t.y)<n}function Tr(e){let t=0,n=()=>{for(;t<e.length&&/[\s,]/.test(e[t]);)t+=1},r=()=>{n();let i=/^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?/.exec(e.slice(t));if(i)return t+=i[0].length,Number(i[0])},o=()=>{n();let i=e[t];if(!(i!=="0"&&i!=="1"))return t+=1,Number(i)};return{more(){return n(),t<e.length},command(){n();let i=e[t];if(/[a-zA-Z]/.test(i))return t+=1,i},numbers(i){let s=[];for(let u=0;u<i;u+=1){let a=r();if(a===void 0)return;s.push(a)}return s},arc(){let i=this.numbers(3),s=o(),u=o(),a=this.numbers(2);if(!(!i||s===void 0||u===void 0||!a))return[...i,s,u,...a]},at(){return t}}}function _r(e,t,n,r,o,i,s,u,a){let c=Math.abs(n),f=Math.abs(r);if(c===0||f===0||e===u&&t===a)return[];let d=o*Math.PI/180,l=Math.cos(d),p=Math.sin(d),g=(e-u)/2,h=(t-a)/2,x=l*g+p*h,k=-p*g+l*h,$=x*x/(c*c)+k*k/(f*f);$>1&&(c*=Math.sqrt($),f*=Math.sqrt($));let A=c*c*f*f-c*c*k*k-f*f*x*x,y=c*c*k*k+f*f*x*x,b=(i===s?-1:1)*Math.sqrt(Math.max(0,A/y)),w=b*c*k/f,v=-b*f*x/c,S=l*w-p*v+(e+u)/2,C=p*w+l*v+(t+a)/2,G=(M,F,J,K)=>{let ue=M*J+F*K,_e=Math.hypot(M,F)*Math.hypot(J,K),ae=Math.acos(Math.min(1,Math.max(-1,ue/_e)));return M*K-F*J<0?-ae:ae},H=G(1,0,(x-w)/c,(k-v)/f),Y=G((x-w)/c,(k-v)/f,(-x-w)/c,(-k-v)/f);!s&&Y>0&&(Y-=2*Math.PI),s&&Y<0&&(Y+=2*Math.PI);let wt=Math.max(1,Math.ceil(Math.abs(Y)/(Math.PI/2)-1e-9)),bt=Y/wt,Te=4/3*Math.tan(bt/4),ln=M=>({x:S+c*Math.cos(M)*l-f*Math.sin(M)*p,y:C+c*Math.cos(M)*p+f*Math.sin(M)*l}),pn=M=>({x:-c*Math.sin(M)*l-f*Math.cos(M)*p,y:-c*Math.sin(M)*p+f*Math.cos(M)*l}),hn=[];for(let M=0;M<wt;M+=1){let F=H+M*bt,J=F+bt,K=ln(F),ue=M===wt-1?{x:u,y:a}:ln(J),_e=pn(F),ae=pn(J);hn.push([{x:K.x+Te*_e.x,y:K.y+Te*_e.y},{x:ue.x-Te*ae.x,y:ue.y-Te*ae.y},ue])}return hn}function vt(e){let t=[],n=r=>`${m(r.x)} ${m(r.y)}`;for(let r of e){let{anchors:o}=r,i=o[0];if(!i)continue;t.push(`M${n(i)}`);let s=ke(r);for(let u=0;u<s;u+=1){let a=o[u],c=o[(u+1)%o.length],f=r.closed&&u===o.length-1;!a.out&&!c.in?f||t.push(`L${n(c)}`):t.push(`C${n(a.out??a)} ${n(c.in??c)} ${n(c)}`)}r.closed&&t.push("Z")}return t.join(" ")}function ke(e){let t=e.anchors.length;return t<2?0:e.closed?t:t-1}function qe(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 Et(e,t){let[n,r,o,i]=e,s=1-t,u=s*s*s,a=3*s*s*t,c=3*s*t*t,f=t*t*t;return{x:u*n.x+a*r.x+c*o.x+f*i.x,y:u*n.y+a*r.y+c*o.y+f*i.y}}function St(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 Mt(e){let t=1/0,n=1/0,r=-1/0,o=-1/0,i=s=>{t=Math.min(t,s.x),n=Math.min(n,s.y),r=Math.max(r,s.x),o=Math.max(o,s.y)};for(let s of e){for(let a of s.anchors)i(a);let u=ke(s);for(let a=0;a<u;a+=1){let c=qe(s,a);for(let f of Ir(c))i(Et(c,f))}}if(t!==1/0)return{x:t,y:n,w:r-t,h:o-n}}function Ir(e){let[t,n,r,o]=e,i=[];for(let s of["x","y"]){let u=-t[s]+3*n[s]-3*r[s]+o[s],a=2*(t[s]-2*n[s]+r[s]),c=n[s]-t[s];if(Math.abs(u)<1e-12){Math.abs(a)>1e-12&&i.push(-c/a);continue}let f=a*a-4*u*c;if(f<0)continue;let d=Math.sqrt(f);i.push((-a+d)/(2*u),(-a-d)/(2*u))}return i.filter(s=>s>0&&s<1)}function Ze(e){if(e===void 0)return;let t=e.trim().split(/[\s,]+/).map(Number);if(t.length!==4||t.some(s=>!Number.isFinite(s)))return;let[n,r,o,i]=t;return{x:n,y:r,w:o,h:i}}function Ot(e,t,n){return Ze(e)??{x:0,y:0,w:t,h:n}}function Tt(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 _t(e,t=.5){let[n,r,o,i]=e;if(be(n,r)&&be(o,i))return[n,i];let u=Math.hypot(r.x-n.x,r.y-n.y)+Math.hypot(o.x-r.x,o.y-r.y)+Math.hypot(i.x-o.x,i.y-o.y),a=Math.min(256,Math.max(4,Math.ceil(Math.sqrt(u/t)))),c=[];for(let f=0;f<=a;f+=1)c.push(Et(e,f/a));return c}function Qe(e){let t=0;for(let n of e)for(let r=0;r<ke(n);r+=1){let o=_t(qe(n,r),.25);for(let i=1;i<o.length;i+=1){let s=o[i-1],u=o[i];t+=Math.hypot(u.x-s.x,u.y-s.y)}}return t}function Ar(e,t,n){let r=0,o=0;for(let i of e){let s=Nr(i);if(s.length!==0){if(n.reach>0){let u=i.closed?s.length:s.length-1;for(let a=0;a<u;a+=1){let c=s[a],f=s[(a+1)%s.length];if(Pr(t,c,f)<=n.reach)return!0}if(s.length===1&&Math.hypot(t.x-s[0].x,t.y-s[0].y)<=n.reach)return!0}if(n.fill)for(let u=0;u<s.length;u+=1){let a=s[u],c=s[(u+1)%s.length];a.y<=t.y!=c.y<=t.y&&a.x+(t.y-a.y)/(c.y-a.y)*(c.x-a.x)>t.x&&(o+=1,r+=c.y>a.y?1:-1)}}}return n.fill?n.rule==="evenodd"?o%2===1:r!==0:!1}function Nr(e){let t=e.anchors[0];if(!t)return[];let n=[{x:t.x,y:t.y}],r=ke(e);for(let o=0;o<r;o+=1)n.push(..._t(qe(e,o)).slice(1));return e.closed&&n.length>1&&n.pop(),n}function Pr(e,t,n){let r=n.x-t.x,o=n.y-t.y,i=r*r+o*o,s=i===0?0:Math.max(0,Math.min(1,((e.x-t.x)*r+(e.y-t.y)*o)/i));return Math.hypot(e.x-(t.x+s*r),e.y-(t.y+s*o))}var et={canvas:[["name","string"],["w","numberValue"],["h","numberValue"],["background","stringValue"]],frame:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["background","stringValue"],["clip","boolean"],["skip","boolean"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],group:[["name","string"],["hidden","boolean"],["locked","boolean"]],ellipse:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["fill","stringValue"],["stroke","stringValue"],["strokeWidth","numberValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],vector:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["view","string"],["d","string"],["fill","stringValue"],["stroke","stringValue"],["strokeWidth","numberValue"],["opacity","numberValue"],["rule","fillRule"],["cap","lineCap"],["join","lineJoin"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],rect:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["fill","stringValue"],["stroke","stringValue"],["strokeWidth","numberValue"],["radius","numberValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],image:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["src","stringValue"],["fit","imageFit"],["radius","numberValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]],text:[["name","string"],["x","numberValue"],["y","numberValue"],["w","numberValue"],["h","numberValue"],["rotation","numberValue"],["font","stringValue"],["size","numberValue"],["weight","numberValue"],["lineHeight","numberValue"],["letterSpacing","numberValue"],["align","align"],["valign","valign"],["italic","boolean"],["fill","stringValue"],["opacity","numberValue"],["blend","blendMode"],["shadow","stringValue"],["hidden","boolean"],["locked","boolean"]]},tt=[["font","string"],["size","number"],["weight","number"],["italic","boolean"],["underline","boolean"],["strike","boolean"],["fill","string"],["letterSpacing","number"],["link","string"]];var nt=[["enter","pageEffect"],["duration","number"],["scroll","boolean"],["length","time"],["w","number"],["h","number"],["bpm","number"],["meter","number"]],ve=[["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"]],rt=[["from","number"],["volume","number"],["fadein","time"],["fadeout","time"],["loop","boolean"]],vn=Object.keys(et);function ot(e){return vn.includes(e)}function It(e,t){return et[e].find(([n])=>n===t)?.[1]}function _(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=ie(e);return r===void 0?{error:`Malformed quoted string ${e}`}:bn(r,t,e)}if(jr(e)){if(!Cr(t))return{error:Fr(e,t)};let r=Mn(e).trim();return r===""?{error:"Empty expression"}:{value:pe(r)}}return t==="numberValue"&&En.test(e)?{value:pe(e)}:bn(e,t,e)}var En=/^-?\d+(?:\.\d+)?%$/;function Cr(e){return e==="numberValue"||e==="stringValue"}function Fr(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 Sn(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"?En.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 bn(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}${Sn(e,t)}`}}case"align":return ce.includes(e)?{value:e}:{error:`Expected one of ${ce.join(", ")}, got ${n}`};case"valign":return fe.includes(e)?{value:e}:{error:`Expected one of ${fe.join(", ")}, got ${n}`};case"fontStyle":return e==="normal"||e==="italic"?{value:e}:{error:`Expected normal or italic, got ${n}`};case"imageFit":return de.includes(e)?{value:e}:{error:`Expected one of ${de.join(", ")}, got ${n}`};case"fillRule":return R(Ae,e,n);case"lineCap":return R(Ne,e,n);case"lineJoin":return R(Pe,e,n);case"blendMode":return R(Ie,e,n);case"pageEffect":return R(Ve,e,n);case"nodeEffect":return R(je,e,n);case"emphasisEffect":return R(Ue,e,n);case"ease":return R(Be,e,n);case"piece":return R(We,e,n);case"time":{let r=ee(e);if(r)return{value:te(r.count,r.unit)};let o=Number(e);return Number.isFinite(o)&&e.trim()!==""?{value:o}:{error:`Expected milliseconds or beats, got ${n}${Vr(e)}`}}case"on":return Fe.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(B.includes(e))return{value:e};let r=Number(e);return Number.isFinite(r)&&e.trim()!==""?{value:r}:{error:`Expected a number or one of ${B.join(", ")}, got ${n}`}}default:return{value:e}}}function Vr(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 ${te(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 ${te(Number(n[1]),r)} (counted from the start)`}return Sn(e,"number")}function R(e,t,n){return e.includes(t)?{value:t}:{error:`Expected one of ${e.join(", ")}, got ${n}`}}function jr(e){return/^[$@(]/.test(e)}function ie(e){try{let t=JSON.parse(e);return typeof t=="string"?t:void 0}catch{return}}function Mn(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 On(e){let t=[],n="",r=0,o=!1;for(let i=0;i<e.length;i+=1){let s=e[i];if(o){n+=s,s==="\\"?(n+=e[i+1]??"",i+=1):s==='"'&&(o=!1);continue}if(s==='"'){o=!0,n+=s;continue}if(s==="("?r+=1:s===")"&&(r=Math.max(0,r-1)),r===0&&/\s/.test(s)){n!==""&&t.push(n),n="";continue}n+=s}return n!==""&&t.push(n),t}function At(e,t,n){let r=n===void 0?void 0:I(n);if(r?.value===void 0||!kn(e[t]??""))return;let o=t;for(;o<e.length&&kn(e[o]??"");)o+=1;let i=[Mn(r.value),...e.slice(t,o)].join(" ");return{end:o,message:`${r.key}: an expression with spaces needs parentheses \u2014 write ${r.key}=(${i})`}}function kn(e){return!e.includes("=")&&/^(?:[-+*/]|-?\d+(?:\.\d+)?%?|[$@][\w.]*|[A-Za-z_]\w*(?:\.\w+)+|\(.*|.*\))$/.test(e)}function I(e){let t=e.indexOf("=");return t===-1?{key:e,value:void 0}:{key:e.slice(0,t),value:e.slice(t+1)}}var Wr=new Set(["exit","delay","step","together","go","at","after","with"]),_n=["at","after","with","together","step"],zr=new Set(["pad","duration","delay","ease","on",..._n]);function Nt(e){if(e==="at"||e==="length")return ze;if(e==="w"||e==="h")return W;if(e==="duration"||e==="delay"||e==="stagger"||e==="hold")return xe;if(e==="pad")return W}function Pt(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 i of e.words.slice(2)){let{key:s,value:u}=I(i),a=nt.find(([f])=>f===s)?.[1];if(a===void 0){let f=Wr.has(s)?` \u2014 ${s} goes on a node's line, under the header`:"";t(e.number,"invalid-motion",`motion ${n} has no "${s}"${f}`,n);continue}let c=_(u??"",a);"error"in c?t(e.number,"invalid-motion",`${s}: ${qr(s,u)??c.error}`,n):s==="bpm"&&!Jr(c.value)?t(e.number,"invalid-motion",`bpm: expected ${20} to ${300} beats a minute, got ${u??""}`,n):s==="meter"&&!Kr(c.value)?t(e.number,"invalid-motion",`meter: expected a whole number of beats in a bar, 1 to ${16}, got ${u??""}`,n):c.value!==!1&&(r[s]=c.value)}let o=U({...r,lines:[]});for(let[i]of nt){let s=r[i];if(s===void 0||Nt(i)===void 0)continue;let u=Lt(i,s,o,n);u!==void 0&&(t(e.number,"invalid-motion",u,n),delete r[i])}return{page:n,number:e.number,head:r,lines:[],where:new Map,taken:new Map,numbers:[]}}function Dt(e,t,n){if(t.words[0]==="music"&&!(t.words[1]??"").includes("=")){Gr(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,i=o[0];if(t.indent!==1){n(t.number,"invalid-motion","A motion line sits one level under its page");return}if(i.includes("=")){n(t.number,"invalid-motion",`Expected a node id first, got ${i}`);return}if(i===e.page&&!r){n(t.number,"invalid-motion",`${i} is the page: its transition goes on the header (motion ${i} enter=fade)`,i);return}let s=r?{id:i,camera:!0}:{id:i},u=!0;for(let f of o.slice(1)){let{key:d,value:l}=I(f),p=ve.find(([x])=>x===d)?.[1];if(p===void 0){n(t.number,"invalid-motion",`A motion line has no "${d}"${Zr(d)}`,i),u=!1;continue}if(r&&!zr.has(d)){n(t.number,"invalid-motion",`A camera line moves the shot and says only pad=, duration=, delay=, ease= and when: not ${d}=`,i),u=!1;continue}let g=_(l??"",p),h="error"in g||Nt(d)===void 0?void 0:Lt(d,g.value,U(In(e)),e.page);"error"in g?(n(t.number,"invalid-motion",`${d}: ${g.error}`,i),u=!1):h!==void 0?(n(t.number,"invalid-motion",`${i}: ${h}`,i),u=!1):d==="on"&&e.head.bpm===void 0?(n(t.number,"invalid-motion",`${i}: on=${String(g.value)} needs a tempo \u2014 motion ${e.page} bpm=120`,i),u=!1):d==="go"&&oe(g.value)===void 0?(n(t.number,"invalid-motion",`go: expected #<page>, back, next, or an https: or mailto: link, got ${l??""}`,i),u=!1):g.value!==!1&&(s[d]=g.value)}s.enter!==void 0&&s.exit!==void 0&&(n(t.number,"invalid-motion",`${i} either enters or exits on one line \u2014 write a second line for the other`,i),u=!1),s.emphasis!==void 0&&(s.enter!==void 0||s.exit!==void 0)&&(n(t.number,"invalid-motion",`${i} either ${s.enter!==void 0?"enters":"exits"} or is stressed on one line \u2014 write a second line for emphasis=`,i),u=!1);let a=_n.filter(f=>s[f]!==void 0);if(s.step===!0&&s.together===!0?(n(t.number,"invalid-motion",`${i} waits for a step or starts together with the line above, not both`,i),u=!1):a.length>1?(n(t.number,"invalid-motion",`${i} says when it starts twice (${a.join(", ")}): keep one`,i),u=!1):s.on!==void 0&&(s.with!==void 0||s.together===!0)&&(n(t.number,"invalid-motion",`${i} starts with another line (${s.with===void 0?"together":"with="}), so on= could only pull it apart: keep one`,i),u=!1),u){let f=Qr(s);f!==void 0&&(n(t.number,"invalid-motion",`${i}: ${f}`,i),u=!1)}if(!u)return;let c=Yr(s);if(!Xe(c)){n(t.number,"invalid-motion",`${i} says nothing: give it enter=, exit=, emphasis= or go=`,i);return}if(r){e.where.has(i)||e.where.set(i,t.number),e.lines.push(c),e.numbers.push(t.number);return}for(let f of["enter","exit","emphasis","go"]){if(c[f]===void 0)continue;let d=e.taken.get(`${i} ${f}`);if(d!==void 0){let l=f==="go"?"has a go=":f==="enter"?"enters":f==="exit"?"exits":"has an emphasis=";n(t.number,"invalid-motion",`${i} already ${l} on line ${d}`,i);return}}for(let f of["enter","exit","emphasis","go"])c[f]!==void 0&&e.taken.set(`${i} ${f}`,t.number);e.where.has(i)||e.where.set(i,t.number),e.lines.push(c),e.numbers.push(t.number)}function Rt(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 $e(t)?void 0:t}var Xr=new Set(["loop","step","together"]);function Gr(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(Xr.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},i=U(In(e)),s=!0,u=c=>{n(t.number,"invalid-motion",`music ${r}: ${c}`),s=!1};for(let c of t.words.slice(2)){let{key:f,value:d}=I(c),l=rt.find(([g])=>g===f)?.[1];if(l===void 0){u(`the music line has no "${f}"${Hr(f)}`);continue}if(f==="from"&&d!==void 0&&/\d(?:beats?|bars?)$/.test(d)){u(`from= is where in the track to begin, in milliseconds, not ${d}`);continue}let p=_(d??"",l);if("error"in p){u(`${f}: ${p.error}`);continue}if(f==="from"&&!Tn(p.value,0,ye)){u(`from: expected 0 to ${ye} milliseconds, got ${d??""}`);continue}if(f==="volume"&&!Tn(p.value,0,1)){u(`volume: expected 0 to 1, got ${d??""}`);continue}if(f==="fadein"||f==="fadeout"){let g=Lt(f,p.value,i,e.page);if(g!==void 0){u(g);continue}}p.value!==!1&&(o[f]=p.value)}if(!s)return;let a={asset:r};for(let[c]of rt)o[c]!==void 0&&(a[c]=o[c]);e.music=a,e.musicLine=t.number}function Tn(e,t,n){return typeof e=="number"&&e>=t&&e<=n}function Hr(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 Yr(e){let t=e.camera===!0?{id:e.id,camera:!0}:{id:e.id};for(let[n]of ve)e[n]!==void 0&&(t[n]=e[n]);return t}function In(e){let{bpm:t,meter:n}=e.head;return{...t===void 0?{}:{bpm:t},...n===void 0?{}:{meter:n},lines:[]}}function Lt(e,t,n,r){if(ne(t)&&!n)return`${t} needs a tempo \u2014 motion ${r} bpm=120`;let o=typeof t=="number"||ne(t)?ge(t,n):void 0,i=Nt(e)??xe;if(o!==void 0&&o>=(e==="w"||e==="h"?16:0)&&o<=i)return;let u=String(t),a=ne(t)&&o!==void 0?` (${Math.round(o)} ms)`:"";return e==="w"||e==="h"?`${e}: expected 16 to ${W} pixels, got ${u}`:e==="pad"?`pad: expected 0 to ${W}, got ${u}`:`${e}: expected 0 to ${i} milliseconds, got ${u}${a}`}function Jr(e){return typeof e=="number"&&e>=20&&e<=300}function Kr(e){return typeof e=="number"&&Number.isInteger(e)&&e>=1&&e<=16}function qr(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 Zr(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 Qr(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: ${B.join(", ")}`}else return"from= goes with count (a number), or wipe and grow (a side)";if(e.by!==void 0&&r!==void 0&&!re.includes(r))return`by= splits a text for ${re.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"}function Ct(e){return(t,n,r,o)=>{e.push({severity:"error",code:n,message:`Line ${t}: ${r}`,...o===void 0?{}:{nodeId:o}})}}function Ft(e){let t=[],n=e.split(`
|
|
5
|
-
`);for(let r=0;r<n.length;r+=1){let o=n[r],i=o.trim();if(i===Z)break;if(i===""||i.startsWith("```"))continue;let s=o.length-o.trimStart().length;t.push({number:r+1,indent:Math.floor(s/2),text:i,words:On(i)})}return t}function Vt(e){let t=[],n=[],r=o=>{for(;t.length>0&&t[t.length-1].indent>=o;)no(t.pop())};return{push(o){let i=o.words[0];if(i.startsWith('"')){let c=t[t.length-1];if(!c||c.type!=="text")return e(o.number,"invalid-content","A quoted line must sit inside a text node"),!0;let f=oo(o,e);return f!==void 0&&c.runs.push(f),!0}if(!ot(i))return!1;r(o.indent);let s=o.words[1];if(s===void 0||s.includes("="))return e(o.number,"missing-id",`A ${i} needs an id`),!0;let u=to(i,s,o.words.slice(2),o,e),a=t[t.length-1];return a?a.children.push(u.record):n.push(u.record),t.push(u),!0},finish(){return r(0),n}}}function to(e,t,n,r,o){let i={type:e,id:t},s=[];for(let u=0;u<n.length;u+=1){let{key:a,value:c}=I(n[u]),f=It(e,a);if(f===void 0){let l=At(n,u,n[u-1]);l?(o(r.number,"invalid-value",l.message,t),u=l.end-1):o(r.number,"invalid-value",`${e} has no property "${a}"`,t);continue}let d=_(c??"",f);"error"in d?o(r.number,"invalid-value",`${a}: ${d.error}`,t):i[a]=d.value}return De(e)&&(i.children=s),e==="text"&&(i.content=""),{indent:r.indent,type:e,record:i,children:s,runs:[]}}function no(e){e.type==="text"&&(e.record.content=ro(e.runs))}function ro(e){if(e.length===0)return"";let t=e[0];return e.length===1&&typeof t=="string"?t:[...e]}function oo(e,t){let n=ie(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:i,value:s}=I(o),u=tt.find(([c])=>c===i);if(!u){t(e.number,"invalid-run",`A run has no mark "${i}"`);continue}let a=_(s??"",u[1]);"error"in a?t(e.number,"invalid-run",`${i}: ${a.error}`):r[i]=a.value}return r}function io(e){let t=[],n=Ct(t),r=Q,o,i=!1,s={},u={},a={},c=Vt(n),f,d={},l=new Map,p,g=!1,h=()=>{if(!p)return;let y=p;p=void 0;let b=l.get(y.page);if(b!==void 0){n(y.number,"invalid-motion",`motion ${y.page} is written twice \u2014 put its lines in the block on line ${b}`,y.page);return}l.set(y.page,y.number);for(let[v,S]of y.where)l.set(`${y.page} ${v}`,S);let w=Rt(y);w&&(d[y.page]=w)};for(let y of Ft(e)){let b=y.words[0];if(p&&y.indent>0){Dt(p,y,n);continue}if(!(g&&y.indent>0)){if(g=!1,h(),b==="motion"&&y.indent===0){f=void 0,p=Pt(y,n),g=p===void 0;continue}if(b==="version"){i=!0,uo(y,t);continue}if(b==="kind"&&y.indent===0){r=ao(y,t);continue}if(b==="title"&&y.indent===0){o=An(y,n);continue}if(b.startsWith("$")){f=void 0,co(y,s,n);continue}if(b==="asset"&&y.indent===0){f=void 0,fo(y,a,n);continue}if(b==="font"&&y.indent===0){f=po(y,u,n);continue}if((b==="fallback"||b==="face")&&f){ho(b,y,f,n);continue}f=void 0,!c.push(y)&&n(y.number,"unknown-node-type",`Unknown statement "${b}"`)}}h();let x=so(c.finish(),t),k=Object.keys(d).length===0?{}:{motion:d},$=(y,b)=>l.get(b===void 0?y:`${y} ${b}`);if(!x){i||t.push({severity:"error",code:"invalid-document",message:"No nodes found"});let y=me({id:j,children:[]}),b=Ce({kind:r,...o===void 0?{}:{title:o},tokens:s,fonts:u,assets:a,...k,root:y});return t.push(...we(b,$)),{document:b,problems:t}}let A={version:4,kind:r,...o===void 0?{}:{title:o},tokens:s,fonts:u,assets:a,...k,root:x};return t.push(...we(A,$)),{document:A,problems:t}}function so(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:j,children:[...e]}}}function uo(e,t){Le.includes(Number(e.words[1]))||t.push({severity:"warning",code:"version-mismatch",message:`Line ${e.number}: expected version ${4} or older, got ${e.words[1]??"nothing"}`})}function ao(e,t){let n=e.words[1];return n!==void 0&&he.includes(n)?n:(t.push({severity:"error",code:"unknown-kind",message:`Line ${e.number}: unknown kind "${n??"nothing"}" \u2014 this build reads ${he.join(", ")}`}),Q)}function An(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('"')?ie(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 co(e,t,n){let{name:r,value:o}=jt(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 i=_(o,"stringValue");if("error"in i){n(e.number,"invalid-token",`$${r}: ${i.error}`);return}if(typeof i.value!="string"){n(e.number,"invalid-token",`$${r} may not be an expression`);return}t[r]=Nn(i.value,o)}function Nn(e,t){let n=Number(e);return t.startsWith('"')||!Number.isFinite(n)||e.trim()===""?e:n}function jt(e){let t=e[0],n=i=>i.startsWith("$")?i.slice(1):i;if(e[1]==="=")return{name:n(t),value:e.slice(2).join(" ")||void 0};let{key:r,value:o}=I(t);return o!==void 0?{name:n(r),value:o}:{name:n(t)}}function fo(e,t,n){let r=e.words.slice(1),o=r[0],i=r[1]==="=",s=o===void 0?void 0:I(o),u=s?.key,a=i?r[2]:s?.value,c=r.slice(i?3:1);if(u===void 0||u===""||a===void 0){n(e.number,"invalid-asset","Expected asset <name> = <type> hash=\u2026 bytes=\u2026");return}let f={};for(let g of c){let{key:h,value:x}=I(g);if(x===void 0){n(e.number,"invalid-asset",`Asset "${u}" has a stray word "${g}"`);continue}f[h]=lo(x)}let d=f.hash,l=Number(f.bytes);if(d===void 0||!Number.isFinite(l)){n(e.number,"invalid-asset",`Asset "${u}" needs a hash and a bytes count`);return}let p=f.ms===void 0?void 0:Number(f.ms);if(p!==void 0&&!(Number.isFinite(p)&&p>=0)){n(e.number,"invalid-asset",`Asset "${u}": ms is the track's length, in milliseconds`);return}t[u]={type:a,hash:d,bytes:l,...p===void 0?{}:{ms:p},...f.credit===void 0?{}:{credit:f.credit},...f.source===void 0?{}:{source:f.source},...f.license===void 0?{}:{license:f.license}}}function lo(e){return e.startsWith('"')?ie(e)??e:e}function po(e,t,n){let{name:r,value:o}=jt(e.words.slice(1));if(r===void 0||o===void 0){n(e.number,"invalid-font","Expected font <name> = <family>");return}let i=_(o,"string"),s={family:"error"in i?o:i.value};return t[r]=s,{family:s,faces:[]}}function ho(e,t,n,r){if(e==="fallback"){let u=_(t.words.slice(1).join(" "),"string");"error"in u?r(t.number,"invalid-font",`fallback: ${u.error}`):n.family.fallback=u.value;return}let o=t.words[1];if(o===void 0){r(t.number,"invalid-font-face","A face needs a src");return}let i=_(o,"string"),s={src:"error"in i?o:i.value};for(let u of t.words.slice(2)){let{key:a,value:c}=I(u);if(a!=="weight"&&a!=="style"){r(t.number,"invalid-font-face",`A face has no property "${a}"`);continue}let f=_(c??"",a==="weight"?"number":"fontStyle");"error"in f?r(t.number,"invalid-font-face",`${a}: ${f.error}`):s[a]=f.value}n.faces.push(s),n.family.faces=n.faces}var Dn="https://getv.design/ns/vd",zs=`<metadata><vd:document xmlns:vd="${Dn}" version="1"><![CDATA[
|
|
6
|
-
`;var $o=/<vd:document\b[^>]*>([\s\S]*?)<\/vd:document\s*>/;function wo(e){let t=$o.exec(e);if(!t)return;let n=t[1]??"",r="",o=n;for(;;){let i=o.indexOf("<![CDATA[");if(i===-1){r+=Pn(o);break}r+=Pn(o.slice(0,i));let s=o.indexOf("]]>",i);if(s===-1){r+=o.slice(i+9);break}r+=o.slice(i+9,s),o=o.slice(s+3)}return`${r.replace(/^\n/,"").replace(/\n$/,"")}
|
|
7
|
-
`}function bo(e){return/^\uFEFF?\s*</.test(e)}function Pn(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}}})}var Rn=.04,Ln=.85;var _o=[.2,0,0,1],Io=[.4,0,1,1],Ao=[.4,0,.2,1];function ct(e){return/^\s*(linear|radial|conic|repeating-[a-z]+)-gradient\s*\(/i.test(e)}function Ut(e){let t=e.trim(),n=/^([a-z-]+)-gradient\s*\(([\s\S]*)\)$/i.exec(t);if(!n)return ct(t)?{error:'A gradient needs its closing ")"'}:{kind:"solid",colour:t};let r=n[1].toLowerCase(),o=No(n[2]).map(i=>i.trim());if(o.some(i=>i===""))return{error:"A gradient has an empty argument"};if(r==="linear"){let i=Do(o[0]),s=Fn(i===void 0?o:o.slice(1));return"error"in s?s:{kind:"linear",angle:i??180,stops:s.stops}}if(r==="radial"){let i=Lo(o[0]);if(i&&"error"in i)return i;let s=Fn(i?o.slice(1):o);return"error"in s?s:{kind:"radial",shape:i?.shape??"ellipse",cx:i?.cx??.5,cy:i?.cy??.5,stops:s.stops}}return{error:`${r}-gradient is not supported; use linear-gradient or radial-gradient`}}function Bt(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,i=r;for(;t[i]===void 0;)i+=1;let s=t[o],u=t[i];for(let a=r;a<i;a+=1)t[a]=s+(u-s)*(a-o)/(i-o);r=i}return e.map((r,o)=>({colour:r.colour,at:t[o]}))}function No(e){let t=[],n=0,r=0;for(let o=0;o<e.length;o+=1){let i=e[o];i==="("?n+=1:i===")"?n=Math.max(0,n-1):i===","&&n===0&&(t.push(e.slice(r,o)),r=o+1)}return t.push(e.slice(r)),t}var Po={top:[0,-1],bottom:[0,1],left:[-1,0],right:[1,0]};function Do(e){let t=/^(-?\d*\.?\d+)(deg|turn|rad)$/i.exec(e);if(t){let i=Number(t[1]),s=t[2].toLowerCase();return s==="turn"?i*360:s==="rad"?i*180/Math.PI:i}let n=/^to\s+([a-z]+)(?:\s+([a-z]+))?$/i.exec(e);if(!n)return;let r=0,o=0;for(let i of[n[1],n[2]]){if(i===void 0)continue;let s=Po[i.toLowerCase()];if(!s)return;r+=s[0],o+=s[1]}return(Math.atan2(r,-o)*180/Math.PI+360)%360}var Ro={left:0,top:0,center:.5,right:1,bottom:1};function Lo(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=Cn(t[2]),o=t[3]===void 0?.5:Cn(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 Cn(e){let t=Ro[e.toLowerCase()];if(t!==void 0)return t;let n=/^(-?\d*\.?\d+)%$/.exec(e);return n?Number(n[1])/100:void 0}function Fn(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&&Co(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 Co(e){let t=0;for(let n of e)if(n==="("&&(t+=1),n===")"&&(t-=1),t<0)return!1;return t===0}function Wt(e){let t=e.trim();if(t===""||t==="none")return{shadows:[]};let n=[];for(let r of Fo(t)){let o=Vo(r.trim());if(o.includes("inset"))return{error:"Inner shadows (inset) are not supported yet"};let i=[],s=[];for(let d of o){let l=/^(-?\d*\.?\d+)(px)?$/.exec(d);l&&s.length===0?i.push(Number(l[1])):s.push(d)}if(i.length<2||i.length>4)return{error:`"${r.trim()}" needs x, y, then optional blur and spread`};if(s.length!==1)return{error:`"${r.trim()}" needs one colour after its numbers`};let[u=0,a=0,c=0,f=0]=i;if(c<0)return{error:"A shadow cannot have a negative blur"};n.push({x:u,y:a,blur:c,spread:f,colour:s[0]})}return{shadows:n}}function Fo(e){let t=[],n=0,r=0;for(let o=0;o<e.length;o+=1){let i=e[o];i==="("?n+=1:i===")"?n=Math.max(0,n-1):i===","&&n===0&&(t.push(e.slice(r,o)),r=o+1)}return t.push(e.slice(r)),t}function Vo(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}function ft(e){return{x:e.x+e.w/2,y:e.y+e.h/2}}function Vn(e,t,n){if(n===0)return e;let r=n*Math.PI/180,o=Math.cos(r),i=Math.sin(r),s=e.x-t.x,u=e.y-t.y;return{x:t.x+s*o-u*i,y:t.y+s*i+u*o}}function zt(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(a=>Vn(a,n,t)),o=r.map(a=>a.x),i=r.map(a=>a.y),s=Math.min(...o),u=Math.min(...i);return{x:s,y:u,w:Math.max(...o)-s,h:Math.max(...i)-u}}var Un="system-ui, -apple-system, Segoe UI, Roboto, sans-serif",Bn=16,Wn=400,zn=1.2,dt="#0F172A";function lt(){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 Xt(e,t){if(e===void 0)return Un;let n=t[e];return n?n.fallback?`${jn(n.family)}, ${n.fallback}`:jn(n.family):e}function jn(e){return/^[A-Za-z][A-Za-z0-9 -]*$/.test(e)?e:JSON.stringify(e)}function Gt(e,t,n,r){let o={family:Xt(t.font,n),size:t.size,weight:t.weight,italic:t.italic,underline:!1,strike:!1,fill:r(t.fill),letterSpacing:t.letterSpacing},i=typeof e=="string"?[e]:e,s=[];for(let u of i){if(typeof u=="string"){u.length>0&&s.push({text:u,style:o});continue}let a=u;a.text.length!==0&&s.push({text:a.text,style:{family:a.font===void 0?o.family:Xt(a.font,n),size:a.size??o.size,weight:a.weight??o.weight,italic:a.italic??o.italic,underline:a.underline??!1,strike:a.strike??!1,fill:a.fill===void 0?o.fill:r(a.fill),letterSpacing:a.letterSpacing??o.letterSpacing,...a.link!==void 0&&V(a.link)?{link:a.link}:{}}})}return s}function zo(e,t){let n=[];for(let r of e)for(let o of r.text.split(/(\n)/))if(o!==""){if(o===`
|
|
8
|
-
`){let i=n[n.length-1];i&&!i.hardBreak?n[n.length-1]={...i,hardBreak:!0}:n.push({text:"",style:r.style,w:0,hardBreak:!0});continue}for(let i of o.match(/\S+\s*|\s+/g)??[])n.push({text:i,style:r.style,w:t.advance(i,r.style),hardBreak:!1})}return n}function Xo(e,t,n){let r=[...e.text],o=[],i="";for(let s of r){let u=i+s;if(i!==""&&n.advance(u,e.style)>t){o.push({text:i,style:e.style,w:n.advance(i,e.style),hardBreak:!1}),i=s;continue}i=u}return i!==""&&o.push({text:i,style:e.style,w:n.advance(i,e.style),hardBreak:e.hardBreak}),o.length>0?o:[e]}function Xn(e,t){let{width:n,measure:r}=t,o=zo(r.itemize?e.flatMap(c=>r.itemize?.(c)??[c]):e,r);if(o.length===0){let c=e[0]?.style,f=c?t.lineHeight*c.size:0;return{lines:c?[Go(c,t.lineHeight)]:[],width:0,height:f}}let i=[],s=[],u=0,a=()=>{i.push(s),s=[],u=0};for(let c of o){let f=s.length===0&&c.w>n&&n>0?Xo(c,n,r):[c];for(let d of f){let l=d.text.trimEnd(),p=l===d.text?d.w:r.advance(l,d.style);s.length>0&&u+p>n&&a(),s.push(d),u+=d.w,d.hardBreak&&a()}}return s.length>0&&i.push(s),Ho(i,t)}function Go(e,t){let n=t*e.size;return{y:0,h:n,baseline:n*.8,w:0,spans:[],style:e}}function Ho(e,t){let n=[],r=0,o=0;return e.forEach((i,s)=>{let u=i.map(v=>v.style.size),a=Math.max(...u,0),c=t.lineHeight*a,f=i.map(v=>t.measure.metrics(v.style)),d=Math.max(...f.map(v=>v.ascent),0),l=Math.max(...f.map(v=>v.descent),0),p=r+(c-(d+l))/2+d,g=Yo(i,t.measure),h=g.reduce((v,S)=>v+S.w,0);o=Math.max(o,h);let x=s===e.length-1||(i[i.length-1]?.hardBreak??!1),k=t.align==="justify"&&!x&&g.length>1,$=Math.max(0,t.width-h),A=t.align==="center"?$/2:t.align==="right"?$:0,y=k?$/(g.length-1):0,b=[],w=A;g.forEach((v,S)=>{b.push({text:v.text,style:v.style,x:w,w:v.w}),w+=v.w+(S<g.length-1?y:0)}),n.push({y:r,h:c,baseline:p,w:h,spans:Jo(b,k)}),r+=c}),{lines:n,width:o,height:r}}function Yo(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 Jo(e,t){if(t)return[...e];let n=[];for(let r of e){let o=n[n.length-1];if(o&&Gn(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 Gn(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 Ht(e,t,n,r,o,i){let s={size:t.size??Bn,weight:t.weight??Wn,lineHeight:t.lineHeight??zn,letterSpacing:t.letterSpacing??0,italic:e.italic??!1,font:typeof e.font=="string"?e.font:void 0,fill:typeof e.fill=="string"?e.fill:dt},u=Gt(e.content,s,r,o),a=Gt(" ",s,r,o).map(c=>({...c,text:""}));return Xn(u.length>0?u:a,{width:n,align:e.align??"left",lineHeight:s.lineHeight,measure:i})}function Yt(e,t,n){let r=t-n;return e.valign==="middle"?r/2:e.valign==="bottom"?r:0}var Hn=["x","y","w","h","left","right","top","bottom","cx","cy"];function Ee(e){return Hn.includes(e)}var Yn=["parent","prev","next","self","root"];function Jt(e){return Yn.includes(e)}var T=class extends Error{position;constructor(t,n){super(t),this.position=n,this.name="ExprSyntaxError"}},Jn=/[A-Za-z_]/,Kt=/[A-Za-z0-9_]/;function qt(e){let t=[],n=0,r=()=>{if(!Jn.test(e[n]??""))throw new T(`Expected a name at position ${n}`,n);let s=n;for(;n<e.length&&Kt.test(e[n]??"");)n++;return e.slice(s,n)},o=()=>{if(!Kt.test(e[n]??""))throw new T(`Expected a name at position ${n}`,n);let s=n;for(;n<e.length&&Kt.test(e[n]??"");)n++;return e.slice(s,n)},i=()=>{let s=[r()];for(;e[n]===".";)n++,s.push(o());return s};for(;n<e.length;){let s=e[n]??"";if(/\s/.test(s)){n++;continue}if(/[0-9]/.test(s)){let u=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 a=e.slice(u,n),c=Number(a);if(!Number.isFinite(c))throw new T(`Bad number "${a}"`,u);e[n]==="%"?(n++,t.push({type:"percent",value:c})):t.push({type:"number",value:c});continue}if(s==="$"){n++,t.push({type:"token",name:r()});continue}if(s==="@"){n++,t.push({type:"ref",path:i()});continue}if(Jn.test(s)){t.push({type:"word",path:i()});continue}if("+-*/()".includes(s)){n++,t.push({type:"op",value:s});continue}throw new T(`Unexpected character "${s}" at position ${n}`,n)}return t.push({type:"eof"}),t}var Ko={"+":1,"-":1,"*":2,"/":2};function pt(e){try{let t=qt(e),n=new Zt(t),r=n.parseBinary(0);return n.expectEof(),{ok:!0,ast:r}}catch(t){if(t instanceof T)return{ok:!1,message:t.message};throw t}}var Zt=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 T("Unexpected trailing input",this.index)}parseBinary(t){let n=this.parseUnary();for(;;){let r=this.peek();if(r.type!=="op"||!qo(r.value))break;let o=Ko[r.value];if(o<t)break;this.next();let i=this.parseBinary(o+1);n={kind:"binary",op:r.value,left:n,right:i}}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 T(`@${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||!Jt(n))throw new T(`Unknown name "${t.path.join(".")}". Use $token for a token or @id.edge for a node.`,this.index);if(r===void 0||!Ee(r)||o.length>0)throw new T(`${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 T("Missing closing parenthesis",this.index);return n}throw new T(`Unexpected "${t.value}"`,this.index)}case"eof":throw new T("Unexpected end of expression",this.index)}}};function qo(e){return e==="+"||e==="-"||e==="*"||e==="/"}function D(e,t){return`${e} ${t}`}function Qt(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 en(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 tn(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 nn(e,t,n){let r=d=>{let l=[];for(let p=n.parentOf.get(d);p!==void 0;p=n.parentOf.get(p))l.push(p);return l},o=r(e),i=r(t),s=new Set(i),u=o.find(d=>s.has(d)),a=d=>u===void 0?d:d.slice(0,d.indexOf(u)),c=new Map([[e,1]]),f=(d,l)=>{let p=(c.get(d)??0)+l;p===0?c.delete(d):c.set(d,p)};for(let d of a(o))f(d,1);for(let d of a(i))f(d,-1);return c}function rn(e){switch(e){case"right":case"bottom":return 1;case"cx":case"cy":return .5;default:return 0}}function ht(e){if(e==="x"||e==="w")return"w";if(e==="y"||e==="h")return"h"}function on(e){let t=new Map,n=new Map,r=new Map,o=new Map,i=[];O(e.root,(f,d)=>{t.has(f.id)||t.set(f.id,f),i.push(f),d&&n.set(f.id,d.id),N(f)&&f.children.forEach((l,p)=>{let g=f.children[p-1],h=f.children[p+1];g&&r.set(l.id,g.id),h&&o.set(l.id,h.id)})});let s=new Map;for(let f of i){let d=n.get(f.id);for(;d!==void 0;){let l=t.get(d);if(!l||!le(l))break;d=n.get(d)}d!==void 0&&s.set(f.id,d)}let u=new Map,a=new Map,c=f=>{if(N(f)){if(!le(f)){let d=Kn(f);d.forEach((l,p)=>{let g=d[p-1],h=d[p+1];g&&u.set(l.id,g.id),h&&a.set(l.id,h.id)})}for(let d of f.children)c(d)}};return c(e.root),{rootId:e.root.id,byId:t,parentOf:n,prevOf:r,nextOf:o,layoutParentOf:s,layoutPrevOf:u,layoutNextOf:a,order:i}}function Kn(e){let t=[];for(let n of e.children)N(n)&&le(n)?t.push(...Kn(n)):t.push(n);return t}function mt(e,t,n){if(e.kind==="relRef"){let i=Zo(e.word,t,n);return i===void 0?{ok:!1,message:`${t} has no ${e.word}`}:{ok:!0,nodeId:i,edge:e.edge}}let r=e.path[e.path.length-1]??"",o=e.path.slice(0,-1).join(".");return Ee(r)?n.byId.has(o)?{ok:!0,nodeId:o,edge:r}:{ok:!1,message:`No node @${o}`}:{ok:!1,message:`"${r}" is not an edge of @${o}`}}function Zo(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 sn(e){let t=[],n=on(e),r=Qo(n),o=new Set;ei(r,t),ti(r,e,n,o,t);let i=ni(r);ri(r,i,t);let s=oi(r,i,e,n,o,t);return{nodes:si(e.root,s,r,t),problems:t}}function Qo(e){let t=new Map;for(let n of e.order){let r=n;for(let o of Re(n)){let i=r[o];i!==void 0&&t.set(D(n.id,o),{nodeId:n.id,prop:o,value:i,deps:[]})}}return t}function ei(e,t){for(let n of e.values()){if(!P(n.value))continue;let r=pt(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 ti(e,t,n,r,o){for(let i of e.values()){if(!i.ast)continue;let s=new Set,u=a=>{switch(a.kind){case"number":return;case"token":{let c=t.tokens[a.name];typeof c!="number"&&o.push({severity:"error",code:c===void 0?"unknown-token":"token-not-a-number",message:c===void 0?`Unknown token $${a.name}`:`Token $${a.name} is not a number`,nodeId:i.nodeId,prop:i.prop});return}case"percent":{let c=ht(i.prop);if(!c)return;let f=n.layoutParentOf.get(i.nodeId),d=f===void 0?void 0:D(f,c);if(d===void 0||!e.has(d)){o.push({severity:"error",code:"percent-without-parent",message:`${i.nodeId}.${i.prop} uses a percentage but has no parent to measure against`,nodeId:i.nodeId,prop:i.prop});return}s.add(d);return}case"nodeRef":case"relRef":{let c=mt(a,i.nodeId,n);if(!c.ok){r.add(a),o.push({severity:"error",code:"unknown-reference",message:c.message,nodeId:i.nodeId,prop:i.prop});return}let f=l=>{e.has(l)&&s.add(l)},d=tn(c.edge);if(!d){for(let l of Qt(c.edge))f(D(c.nodeId,l));return}for(let l of nn(c.nodeId,i.nodeId,n).keys())f(D(l,d));rn(c.edge)!==0&&f(D(c.nodeId,d==="x"?"w":"h"));return}case"unary":u(a.operand);return;case"binary":u(a.left),u(a.right);return}};u(i.ast),i.deps=[...s]}}function ni(e){let t=new Map,n=new Map;for(let[i,s]of e){t.set(i,s.deps.length);for(let u of s.deps){let a=n.get(u);a?a.push(i):n.set(u,[i])}}let r=[];for(let[i,s]of t)s===0&&r.push(i);let o=[];for(let i=0;i<r.length;i++){let s=r[i];o.push(s);for(let u of n.get(s)??[]){let a=(t.get(u)??0)-1;t.set(u,a),a===0&&r.push(u)}}return o}function ri(e,t,n){if(t.length===e.size)return;let r=new Set(t);for(let[o,i]of e)r.has(o)||n.push({severity:"error",code:"cycle",message:`${i.nodeId}.${i.prop} is part of a dependency cycle`,nodeId:i.nodeId,prop:i.prop})}function oi(e,t,n,r,o,i){let s=new Map,u=(a,c)=>s.get(D(a,c))??0;for(let a of t){let c=e.get(a);if(c){if(!P(c.value)){s.set(a,c.value);continue}if(!c.ast){s.set(a,0);continue}s.set(a,qn(c.ast,c,n,r,o,i,u))}}return s}function qn(e,t,n,r,o,i,s){let u=a=>qn(a,t,n,r,o,i,s);switch(e.kind){case"number":return e.value;case"token":{let a=n.tokens[e.name];return typeof a=="number"?a:0}case"percent":{let a=ht(t.prop);if(!a)return e.value/100;let c=r.layoutParentOf.get(t.nodeId);return c===void 0?0:e.value/100*s(c,a)}case"nodeRef":case"relRef":{if(o.has(e))return 0;let a=mt(e,t.nodeId,r);if(!a.ok)return 0;let c=tn(a.edge);if(!c)return en(a.edge,s(a.nodeId,"x"),s(a.nodeId,"y"),s(a.nodeId,"w"),s(a.nodeId,"h"));let f=rn(a.edge)*s(a.nodeId,c==="x"?"w":"h");for(let[d,l]of nn(a.nodeId,t.nodeId,r))f+=l*s(d,c);return f}case"unary":{let a=u(e.operand);return e.op==="-"?-a:a}case"binary":{let a=u(e.left),c=u(e.right);if(e.op==="/"&&c===0)return i.push({severity:"error",code:"divide-by-zero",message:`${t.nodeId}.${t.prop} divides by zero`,nodeId:t.nodeId,prop:t.prop}),0;let f=ii(e.op,a,c);return Number.isFinite(f)?f:(i.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 ii(e,t,n){switch(e){case"+":return t+n;case"-":return t-n;case"*":return t*n;case"/":return t/n}}function si(e,t,n,r){let o=new Map,i=(u,a)=>t.get(D(u,a))??0,s=(u,a,c)=>{let f=i(u.id,"x"),d=i(u.id,"y"),l=i(u.id,"w"),p=i(u.id,"h"),g={};for(let k of Re(u)){let $=D(u.id,k);n.has($)&&(g[k]=t.get($)??0)}(l<0||p<0)&&r.push({severity:"warning",code:"negative-size",message:`${u.id} resolved to a negative size`,nodeId:u.id});let h=a+f,x=c+d;if(o.set(u.id,{id:u.id,type:u.type,x:f,y:d,w:l,h:p,left:f,top:d,right:f+l,bottom:d+p,cx:f+l/2,cy:d+p/2,absX:h,absY:x,values:g}),N(u))for(let k of u.children)s(k,h,x)};return s(e,0,0),o}function un(e){return e.lines.filter(t=>t.spans.length>0)}function xt(e){switch(e.kind){case"text":{let t=un(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=Mt(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 $t(e,t){let n=e.x,r=e.y,o=e.x+e.w,i=e.y+e.h;for(let s of t){let u=s.spread+s.blur;n=Math.min(n,e.x+s.x-u),r=Math.min(r,e.y+s.y-u),o=Math.max(o,e.x+e.w+s.x+u),i=Math.max(i,e.y+e.h+s.y+u)}return{x:n,y:r,w:o-n,h:i-r}}var er="vd-paint-";var yt="#CBD5E1",tr="#FFFFFF";function nr(e,t,n={}){let r=[...t.problems],o=[],i=[],s=n.measure??lt(),u=hi(e.tokens,r),a=u.paint,c=new Map;O(e.root,(h,x)=>{if("hidden"in h&&h.hidden===!0)return!1;let k=x?c.get(x.id):void 0,$=t.nodes.get(h.id);if(!$){c.set(h.id,k);return}if(h.type==="frame"){h.skip===!0&&x!==e.root&&r.push({severity:"warning",code:"skip-not-a-page",message:`${h.id}: skip only applies to a page, a frame at the top level`,nodeId:h.id,prop:"skip"});let y={x:$.absX,y:$.absY,w:Math.max(0,$.w),h:Math.max(0,$.h)};c.set(h.id,h.clip===!0?h.id:k),h.clip===!0&&i.push({id:h.id,...y,parent:k}),o.push({kind:"frame",id:h.id,...y,background:a(h.background,h.id,"background",y),clip:k,blend:h.blend??"normal",shadows:se(h.shadow,h.id,e.tokens,r),rotation:0});return}if(c.set(h.id,k),h.type==="text"){o.push(ai(h,$,e,s,r,k,a));return}if(h.type==="image"){o.push({kind:"image",id:h.id,x:$.absX,y:$.absY,w:Math.max(0,$.w),h:Math.max(0,$.h),href:yi(h,e,n.resolveAsset,r),fit:h.fit??"fill",radius:Math.max(0,$.values.radius??0),opacity:Me($.values.opacity??1),clip:k,blend:h.blend??"normal",shadows:se(h.shadow,h.id,e.tokens,r),rotation:$.values.rotation??0});return}if(h.type==="ellipse"){let y=Qn($);o.push({kind:"ellipse",id:h.id,...y,fill:a(h.fill,h.id,"fill",y)??yt,stroke:a(h.stroke,h.id,"stroke",y),strokeWidth:$.values.strokeWidth??0,opacity:Me($.values.opacity??1),clip:k,blend:h.blend??"normal",shadows:se(h.shadow,h.id,e.tokens,r),rotation:$.values.rotation??0});return}if(h.type==="vector"){o.push(pi(h,$,r,k,a,se(h.shadow,h.id,e.tokens,r)));return}if(h.type!=="rect")return;let A=Qn($);o.push({kind:"rect",id:h.id,...A,fill:a(h.fill,h.id,"fill",A)??yt,stroke:a(h.stroke,h.id,"stroke",A),strokeWidth:$.values.strokeWidth??0,radius:Math.max(0,$.values.radius??0),opacity:Me($.values.opacity??1),clip:k,blend:h.blend??"normal",shadows:se(h.shadow,h.id,e.tokens,r),rotation:$.values.rotation??0})});let f=t.nodes.get(e.root.id),d=e.root.w!==void 0&&e.root.h!==void 0,l=d?{x:0,y:0,width:Math.max(0,f?.w??0),height:Math.max(0,f?.h??0)}:ui(o,i),p={x:l.x,y:l.y,w:l.width,h:l.height},g=a(e.root.background,e.root.id,"background",p);return{...l,background:d?g??tr:g,items:o,clips:i,gradients:u.gradients,problems:r}}function ui(e,t){let n=new Map;for(let u of t){let a=u.parent===void 0?void 0:n.get(u.parent);n.set(u.id,a?Zn(u,a):u)}let r=1/0,o=1/0,i=-1/0,s=-1/0;for(let u of e){let a=u.kind==="text"&&un(u).length>0?Math.max(u.h,u.height):u.h,c=u.clip===void 0?void 0:n.get(u.clip),f=zt($t({x:u.x,y:u.y,w:u.w,h:a},u.shadows),u.rotation,ft(u)),d=c?Zn(f,c):f;d.w<=0||d.h<=0||(r=Math.min(r,d.x),o=Math.min(o,d.y),i=Math.max(i,d.x+d.w),s=Math.max(s,d.y+d.h))}return Number.isFinite(r)?{x:r,y:o,width:i-r,height:s-o}:{x:0,y:0,width:0,height:0}}function Zn(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 an(e,t={}){return nr(e,sn(e),t)}function ai(e,t,n,r,o,i,s){let u=Math.max(0,t.w),a=Math.max(0,t.h),c={x:t.absX,y:t.absY,w:u,h:a},f=Ht(e,t.values,u,n.fonts,p=>s(p,e.id,"fill",c)??dt,r);!f.lines.every(p=>p.spans.length===0)&&f.height>a+.5&&o.push({severity:"warning",code:"text-overflow",message:`${e.id} needs ${Math.ceil(f.height)}px but its height is ${Math.round(a)}px`,nodeId:e.id,prop:"h"}),ci(e,n,o);let l=t.absY+Yt(e,a,f.height);return{kind:"text",id:e.id,x:t.absX,y:t.absY,w:u,h:a,clip:i,blend:e.blend??"normal",shadows:se(e.shadow,e.id,n.tokens,o),rotation:t.values.rotation??0,opacity:Me(t.values.opacity??1),height:f.height,lines:f.lines.map(p=>({y:l+p.y,h:p.h,baseline:l+p.baseline,w:p.w,spans:p.spans.map(g=>({text:g.text,x:t.absX+g.x,y:l+p.baseline,w:g.w,style:g.style})),...p.style?{style:p.style}:{}}))}}function ci(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=V(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"&&!fi(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 fi(e,t){let n=!1;return O(e.root,r=>{if(n)return!1;r.id===t&&r.type==="frame"&&(n=!0)}),n}var Se=new Map,di=512;function li(e){let t=Se.get(e);if(t)return t;let n=kt(e);return Se.size>=di&&Se.delete(Se.keys().next().value),Se.set(e,n),n}function pi(e,t,n,r,o,i){let s=Math.max(0,t.w),u=Math.max(0,t.h),a={x:t.absX,y:t.absY,w:s,h:u},{contours:c,error:f}=li(e.d);f!==void 0&&n.push({severity:"error",code:"bad-path",message:`${e.id}: ${f}`,nodeId:e.id,prop:"d"}),e.view!==void 0&&Ze(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 d=St(c,Tt(Ot(e.view,s,u),a));return{kind:"vector",id:e.id,...a,d:vt(d),contours:d,fill:o(e.fill,e.id,"fill",a)??yt,stroke:o(e.stroke,e.id,"stroke",a),strokeWidth:t.values.strokeWidth??0,opacity:Me(t.values.opacity??1),rule:e.rule??"nonzero",cap:e.cap??"butt",join:e.join??"miter",clip:r,blend:e.blend??"normal",shadows:i,rotation:t.values.rotation??0}}function rr(e,t,n,r,o){if(e===void 0)return;if(P(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 i=t[e];if(i===void 0)return e;if(typeof i=="string")return i;o.push({severity:"error",code:"token-not-a-colour",message:`Token $${e} is a number, not a colour`,nodeId:n,prop:r})}function Qn(e){return{x:e.absX,y:e.absY,w:Math.max(0,e.w),h:Math.max(0,e.h)}}function hi(e,t){let n=[],r=new Map;return{paint:(i,s,u,a)=>{let c=rr(i,e,s,u,t);if(c===void 0)return;if(/url\(/i.test(c)){t.push({severity:"error",code:"invalid-paint",message:`${s}: a paint is a colour or a gradient, not ${JSON.stringify(c)}`,nodeId:s,prop:u});return}let f=Ut(c);if("error"in f){t.push({severity:"error",code:"invalid-paint",message:`${s}: ${f.error}`,nodeId:s,prop:u});return}if(f.kind==="solid")return c;let d=`${s}\0${u}\0${c}`,l=r.get(d);if(l!==void 0)return`url(#${l})`;let p=[...r.keys()].filter(x=>x.startsWith(`${s}\0${u}\0`)).length,g=`${er}${s}-${u}${p===0?"":`-${p+1}`}`;r.set(d,g);let h=Bt(f.stops).map(x=>({offset:x.at,colour:or(x.colour,e,s,u,t)}));return n.push(gi(f,g,a,mi(h))),`url(#${g})`},gradients:n}}function se(e,t,n,r){let o=rr(e,n,t,"shadow",r);if(o===void 0)return[];let i=Wt(o);return"error"in i?(r.push({severity:"error",code:"invalid-shadow",message:`${t}: ${i.error}`,nodeId:t,prop:"shadow"}),[]):i.shadows.map(s=>({...s,colour:or(s.colour,n,t,"shadow",r)}))}function mi(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 or(e,t,n,r,o){let i=t[e];return i===void 0?e:typeof i=="string"&&!ct(i)?i:(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 gi(e,t,n,r){if(e.kind==="linear"){let c=e.angle*Math.PI/180,f=Math.sin(c),d=-Math.cos(c),l=(Math.abs(n.w*f)+Math.abs(n.h*d))/2,p=n.x+n.w/2,g=n.y+n.h/2;return{id:t,kind:"linear",x1:gt(p-f*l),y1:gt(g-d*l),x2:gt(p+f*l),y2:gt(g+d*l),stops:r}}let o=n.x+n.w*e.cx,i=n.y+n.h*e.cy,s={x:Math.max(o-n.x,n.x+n.w-o),y:Math.max(i-n.y,n.y+n.h-i)};if(e.shape==="circle"||s.x===0||s.y===0){let c=Math.hypot(s.x,s.y);return{id:t,kind:"radial",cx:o,cy:i,rx:c,ry:c,stops:r}}let u=s.x/s.y,a=Math.hypot(s.x/u,s.y);return{id:t,kind:"radial",cx:o,cy:i,rx:a*u,ry:a,stops:r}}function gt(e){return Math.round(e*1e6)/1e6}function Me(e){return Math.min(Math.max(e,0),1)}function yi(e,t,n,r){let o=P(e.src)?void 0:e.src,i=o===void 0?void 0:t.assets[o];if(!i){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 s=n?.(i,o);return s===void 0&&r.push({severity:"warning",code:"unresolved-asset",message:`The bytes for asset "${o}" are not available here`,nodeId:e.id,prop:"src"}),s}var Oe="vd-clip-";function fn(e,t={}){let n=t.indent??" ",r={ids:t.ids??!0,prefix:t.idPrefix??""},o=m(e.width),i=m(e.height),s=`${m(e.x)} ${m(e.y)} ${o} ${i}`,u=[`<svg xmlns="http://www.w3.org/2000/svg" width="${o}" height="${i}" viewBox="${s}">`],a=e.items.filter(c=>c.shadows.length>0);if(e.clips.length>0||e.gradients.length>0||a.length>0){u.push(`${n}<defs>`);for(let c of e.clips)u.push(n+n+ir(c,r.prefix));for(let c of e.gradients)u.push(n+n+sr(c,r.prefix));for(let c of a)u.push(n+n+ur(c,t.shadowsOnly,r.prefix));u.push(`${n}</defs>`)}e.background!==void 0&&u.push(`${n}<rect x="${m(e.x)}" y="${m(e.y)}" width="${o}" height="${i}" fill="${E(X(e.background,r))}"/>`);for(let c of e.items){let f=vi(c,r);f!==""&&u.push(n+f)}return u.push("</svg>"),`${u.join(`
|
|
9
|
-
`)}
|
|
10
|
-
`}function xi(e){return ir(e,"")}function ir(e,t){let n=e.parent===void 0?"":` clip-path="url(#${E(t+Oe+e.parent)})"`;return`<clipPath id="${E(t+Oe+e.id)}"${n}><rect x="${m(e.x)}" y="${m(e.y)}" width="${m(e.w)}" height="${m(e.h)}"/></clipPath>`}function $i(e){return sr(e,"")}function sr(e,t){let n=e.stops.map(o=>`<stop offset="${m(o.offset)}" stop-color="${E(o.colour)}"${o.opacity===void 0?"":` stop-opacity="${m(o.opacity)}"`}/>`).join(""),r=E(t+e.id);return e.kind==="linear"?`<linearGradient id="${r}" gradientUnits="userSpaceOnUse" x1="${m(e.x1)}" y1="${m(e.y1)}" x2="${m(e.x2)}" y2="${m(e.y2)}">${n}</linearGradient>`:`<radialGradient id="${r}" gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="matrix(${m(e.rx)} 0 0 ${m(e.ry)} ${m(e.cx)} ${m(e.cy)})">${n}</radialGradient>`}var wi={cover:"xMidYMid slice",contain:"xMidYMid meet",fill:"none"},bi="#94A3B8";function z(e,t){let n=e.clip===void 0?[]:[`clip-path="url(#${E(t+Oe+e.clip)})"`];return e.rotation!==0&&n.push(`transform="${ar(e)}"`),e.shadows.length>0&&n.push(`filter="url(#${E(t+dn+e.id)})"`),e.blend!=="normal"&&n.push(`style="mix-blend-mode:${e.blend}"`),n}var dn="vd-shadow-";function ki(e,t=!1){return ur(e,t,"")}function ur(e,t,n){let r=$t(xt(e),e.shadows),o=2,i=[];e.shadows.forEach((u,a)=>{let c=`s${a}`,f="SourceAlpha";u.spread!==0&&(i.push(`<feMorphology in="${f}" operator="${u.spread>0?"dilate":"erode"}" radius="${m(Math.abs(u.spread))}" result="${c}m"/>`),f=`${c}m`),u.blur>0&&(i.push(`<feGaussianBlur in="${f}" stdDeviation="${m(u.blur/2)}" result="${c}b"/>`),f=`${c}b`),i.push(`<feOffset in="${f}" dx="${m(u.x)}" dy="${m(u.y)}" result="${c}o"/>`,`<feFlood flood-color="${E(u.colour)}" result="${c}c"/>`,`<feComposite in="${c}c" in2="${c}o" operator="in" result="${c}"/>`)});let s=e.shadows.map((u,a)=>`<feMergeNode in="s${e.shadows.length-1-a}"/>`).join("");return`<filter id="${E(n+dn+e.id)}" filterUnits="userSpaceOnUse" x="${m(r.x-o)}" y="${m(r.y-o)}" width="${m(r.w+o*2)}" height="${m(r.h+o*2)}" color-interpolation-filters="sRGB">`+i.join("")+`<feMerge>${s}${t?"":'<feMergeNode in="SourceGraphic"/>'}</feMerge></filter>`}function ar(e){return`rotate(${m(e.rotation)} ${m(e.x+e.w/2)} ${m(e.y+e.h/2)})`}function cr(e){return e.rotation!==0&&e.clip!==void 0}function vi(e,t){if(e.pose!==void 0)return Ei(e,e.pose,t);if(cr(e)){let n=[`clip-path="url(#${E(t.prefix+Oe+e.clip)})"`];e.blend!=="normal"&&n.push(`style="mix-blend-mode:${e.blend}"`);let r=cn({...e,clip:void 0,blend:"normal"},t);return r===""?"":`<g ${n.join(" ")}>${r}</g>`}return cn(e,t)}function Ei(e,t,n){let r=cn({...e,clip:void 0,blend:"normal",shadows:e.shadows},n);if(r==="")return"";let o=[];e.clip!==void 0&&o.push(`clip-path="url(#${E(n.prefix+Oe+e.clip)})"`),t.opacity<1&&o.push(`opacity="${m(t.opacity)}"`),e.blend!=="normal"&&o.push(`style="mix-blend-mode:${e.blend}"`);let i=t.sx===1&&t.sy===1&&t.tx===0&&t.ty===0?r:`<g transform="${fr(t)}">${r}</g>`;return o.length===0?i:`<g ${o.join(" ")}>${i}</g>`}function fr(e){return`matrix(${m(e.sx)} 0 0 ${m(e.sy)} ${m(e.tx)} ${m(e.ty)})`}function cn(e,t){switch(e.kind){case"ellipse":return Ti(e,t);case"frame":return Si(e,t);case"image":return Mi(e,t);case"rect":return Oi(e,t);case"text":return Ii(e,t);case"vector":return _i(e,t)}}function X(e,t){return/url\(/i.test(e)&&!e.startsWith("url(#")?"none":t.prefix!==""&&e.startsWith("url(#")?`url(#${t.prefix}${e.slice(5)}`:e}function Si(e,t){let n=[];return t.ids&&n.push(`id="${E(e.id)}"`),n.push(`x="${m(e.x)}"`,`y="${m(e.y)}"`,`width="${m(e.w)}"`,`height="${m(e.h)}"`,`fill="${e.background===void 0?"none":E(X(e.background,t))}"`,...z(e,t.prefix)),`<rect ${n.join(" ")}/>`}function Mi(e,t){let n=[];return t.ids&&n.push(`id="${E(e.id)}"`),n.push(`x="${m(e.x)}"`,`y="${m(e.y)}"`,`width="${m(e.w)}"`,`height="${m(e.h)}"`),e.href===void 0?(e.radius>0&&n.push(`rx="${m(e.radius)}"`),n.push('fill="none"',`stroke="${E(bi)}"`,'stroke-width="1"','stroke-dasharray="4 4"',...z(e,t.prefix)),`<rect ${n.join(" ")}/>`):(n.push(`href="${E(e.href)}"`,`preserveAspectRatio="${wi[e.fit]}"`),e.opacity<1&&n.push(`opacity="${m(e.opacity)}"`),n.push(...z(e,t.prefix)),`<image ${n.join(" ")}/>`)}function Oi(e,t){let n=[];return t.ids&&n.push(`id="${E(e.id)}"`),n.push(`x="${m(e.x)}"`,`y="${m(e.y)}"`,`width="${m(e.w)}"`,`height="${m(e.h)}"`),e.radius>0&&n.push(`rx="${m(e.radius)}"`),n.push(`fill="${E(X(e.fill,t))}"`),e.stroke!==void 0&&e.strokeWidth>0&&n.push(`stroke="${E(X(e.stroke,t))}"`,`stroke-width="${m(e.strokeWidth)}"`),e.opacity<1&&n.push(`opacity="${m(e.opacity)}"`),n.push(...z(e,t.prefix)),`<rect ${n.join(" ")}/>`}function dr(e,t){let n=[`fill="${E(X(e.fill,t))}"`];return e.stroke!==void 0&&e.strokeWidth>0&&n.push(`stroke="${E(X(e.stroke,t))}"`,`stroke-width="${m(e.strokeWidth)}"`),e.opacity<1&&n.push(`opacity="${m(e.opacity)}"`),n}function Ti(e,t){let n=[];return t.ids&&n.push(`id="${E(e.id)}"`),n.push(`cx="${m(e.x+e.w/2)}"`,`cy="${m(e.y+e.h/2)}"`,`rx="${m(e.w/2)}"`,`ry="${m(e.h/2)}"`,...dr(e,t),...z(e,t.prefix)),`<ellipse ${n.join(" ")}/>`}function _i(e,t){if(e.d==="")return"";let n=[];t.ids&&n.push(`id="${E(e.id)}"`),n.push(`d="${E(e.d)}"`,...dr(e,t));let r=e.pose?.trace;if(r!==void 0&&e.stroke!==void 0){let i=m(Qe(e.contours)+1);n.push(`stroke-dasharray="${i} ${i}"`,`stroke-dashoffset="${m((Qe(e.contours)+1)*(1-r))}"`)}let o=e.pose?.fillOpacity;return o!==void 0&&o<1&&n.push(`fill-opacity="${m(o)}"`),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}"`),n.push(...z(e,t.prefix)),`<path ${n.join(" ")}/>`}function Ii(e,t){if(e.lines.every(o=>o.spans.length===0))return"";let n=[];t.ids&&n.push(`id="${E(e.id)}"`),n.push('xml:space="preserve"'),e.opacity<1&&n.push(`opacity="${m(e.opacity)}"`),n.push(...z(e,t.prefix));let r=[];for(let o of e.lines)for(let i of o.spans)i.text!==""&&r.push(Ai(i,t));return`<text ${n.join(" ")}>${r.join("")}</text>`}function Ai(e,t){let r=`<tspan ${[`x="${m(e.x)}"`,`y="${m(e.y)}"`,...Ni(e.style,t)].join(" ")}>${Pi(e.text)}</tspan>`;return e.style.link===void 0?r:`<a href="${E(e.style.link)}">${r}</a>`}function Ni(e,t){let n=[`font-family="${E(e.family)}"`,`font-size="${m(e.size)}"`,`fill="${E(X(e.fill,t))}"`];e.weight!==400&&n.push(`font-weight="${m(e.weight)}"`),e.italic&&n.push('font-style="italic"'),e.letterSpacing!==0&&n.push(`letter-spacing="${m(e.letterSpacing)}"`);let r=[e.underline?"underline":"",e.strike?"line-through":""].filter(Boolean).join(" ");return r&&n.push(`text-decoration="${r}"`),n}function Pi(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function E(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function rf(e,t={}){let{resolveAsset:n,measure:r,...o}=t;return fn(an(e,{...n?{resolveAsset:n}:{},...r?{measure:r}:{}}),o)}export{O as a,L as b,V as c,U as d,ge as e,$n as f,oe as g,wn as h,He as i,Ye as j,Qe as k,Ar as l,pr as m,hr as n,mr as o,gr as p,io as q,wo as r,bo as s,Rn as t,Ln as u,_o as v,Io as w,Ao as x,Vn as y,sn as z,lt as A,nr as B,an as C,fn as D,xi as E,$i as F,dn as G,ki as H,ar as I,cr as J,fr as K,rf as L};
|