@oh-just-another/diagram 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
- var ct=Object.defineProperty;var K=(t,e)=>{for(var n in e)ct(t,n,{get:e[n],enumerable:!0})};var Re=new Map,A=(t,e)=>{Re.set(t,e)},Te=t=>Re.get(t);var Q=(t,e,n)=>{if(!t||t.type==="sharp")return 0;let o=Math.min(Math.abs(e),Math.abs(n));if(o<=0)return 0;if(t.value!==void 0)return Math.max(0,Math.min(t.value,o/2));let r=32/.25;return o<=r?o*.25:32};var be=t=>{if(!t)return"";let e=Object.entries(t).filter(([,n])=>n!==void 0).sort(([n],[o])=>n<o?-1:n>o?1:0);return JSON.stringify(e)},we=t=>{let e=[];for(let n of t){if(n.text==="")continue;let o=e[e.length-1];o!==void 0&&be(o.style)===be(n.style)?e[e.length-1]={text:o.text+n.text,...o.style!==void 0?{style:o.style}:{}}:e.push(n)}return e},dt=t=>{let e=t.runs;return e!==void 0&&e.length>0?we(e):t.text===""?[]:[{text:t.text}]},ee=(t,e,n)=>{let o=Math.min(e,n),r=Math.max(e,n),s=[],i=0;for(let l of dt(t)){let c=i,u=i+l.text.length;i=u;let d=Math.max(c,o),a=Math.min(u,r);d>=a||s.push({text:l.text.slice(d-c,a-c),...l.style!==void 0?{style:l.style}:{}})}return s};var y=t=>{if(t===void 0)throw new Error("required value is undefined");return t};var m={};K(m,{ZERO:()=>Le,add:()=>ut,angle:()=>bt,cross:()=>gt,distance:()=>Et,distanceSq:()=>Oe,div:()=>xt,dot:()=>pt,equals:()=>It,length:()=>Ie,lengthSq:()=>Ae,lerp:()=>Rt,midpoint:()=>Tt,mul:()=>mt,negate:()=>yt,normalize:()=>_t,of:()=>ht,perp:()=>At,rotate:()=>wt,rotateAround:()=>Lt,sub:()=>ft});var Le=Object.freeze({x:0,y:0}),ht=(t,e)=>({x:t,y:e}),ut=(t,e)=>({x:t.x+e.x,y:t.y+e.y}),ft=(t,e)=>({x:t.x-e.x,y:t.y-e.y}),mt=(t,e)=>({x:t.x*e,y:t.y*e}),xt=(t,e)=>({x:t.x/e,y:t.y/e}),yt=t=>({x:-t.x,y:-t.y}),pt=(t,e)=>t.x*e.x+t.y*e.y,gt=(t,e)=>t.x*e.y-t.y*e.x,Ae=t=>t.x*t.x+t.y*t.y,Ie=t=>Math.sqrt(Ae(t)),Oe=(t,e)=>{let n=e.x-t.x,o=e.y-t.y;return n*n+o*o},Et=(t,e)=>Math.sqrt(Oe(t,e)),_t=t=>{let e=Ie(t);return e===0?Le:{x:t.x/e,y:t.y/e}},Rt=(t,e,n)=>({x:t.x+(e.x-t.x)*n,y:t.y+(e.y-t.y)*n}),Tt=(t,e)=>({x:(t.x+e.x)/2,y:(t.y+e.y)/2}),bt=t=>Math.atan2(t.y,t.x),wt=(t,e)=>{let n=Math.cos(e),o=Math.sin(e);return{x:t.x*n-t.y*o,y:t.x*o+t.y*n}},Lt=(t,e,n)=>{let o=Math.cos(n),r=Math.sin(n),s=t.x-e.x,i=t.y-e.y;return{x:e.x+(s*o-i*r),y:e.y+(s*r+i*o)}},At=t=>({x:-t.y,y:t.x}),It=(t,e,n=0)=>n===0?t.x===e.x&&t.y===e.y:Math.abs(t.x-e.x)<=n&&Math.abs(t.y-e.y)<=n;var I={};K(I,{IDENTITY:()=>Ot,applyToBounds:()=>vt,applyToPoint:()=>N,decompose:()=>Ft,equals:()=>Bt,inverse:()=>Dt,multiply:()=>Pt,of:()=>kt,rotation:()=>Mt,scaling:()=>Ct,translation:()=>St});var Ot=Object.freeze({a:1,b:0,c:0,d:1,e:0,f:0}),kt=(t,e,n,o,r,s)=>({a:t,b:e,c:n,d:o,e:r,f:s}),St=(t,e)=>({a:1,b:0,c:0,d:1,e:t,f:e}),Ct=(t,e=t)=>({a:t,b:0,c:0,d:e,e:0,f:0}),Mt=t=>{let e=Math.cos(t),n=Math.sin(t);return{a:e,b:n,c:-n,d:e,e:0,f:0}},Pt=(t,e)=>({a:t.a*e.a+t.c*e.b,b:t.b*e.a+t.d*e.b,c:t.a*e.c+t.c*e.d,d:t.b*e.c+t.d*e.d,e:t.a*e.e+t.c*e.f+t.e,f:t.b*e.e+t.d*e.f+t.f}),Dt=t=>{let e=t.a*t.d-t.b*t.c;if(e===0)throw new Error("Cannot invert singular matrix");return{a:t.d/e,b:-t.b/e,c:-t.c/e,d:t.a/e,e:(t.c*t.f-t.d*t.e)/e,f:(t.b*t.e-t.a*t.f)/e}},N=(t,e)=>({x:t.a*e.x+t.c*e.y+t.e,y:t.b*e.x+t.d*e.y+t.f}),vt=(t,e)=>{let n=N(t,{x:e.x,y:e.y}),o=N(t,{x:e.x+e.width,y:e.y}),r=N(t,{x:e.x,y:e.y+e.height}),s=N(t,{x:e.x+e.width,y:e.y+e.height}),i=Math.min(n.x,o.x,r.x,s.x),l=Math.min(n.y,o.y,r.y,s.y),c=Math.max(n.x,o.x,r.x,s.x),u=Math.max(n.y,o.y,r.y,s.y);return{x:i,y:l,width:c-i,height:u-l}},Ft=t=>{let e=Math.sqrt(t.a*t.a+t.b*t.b),n=Math.sqrt(t.c*t.c+t.d*t.d),r=t.a*t.d-t.b*t.c<0?-n:n;return{translation:{x:t.e,y:t.f},rotation:Math.atan2(t.b,t.a),scale:{x:e,y:r}}},Bt=(t,e,n=0)=>{let o=["a","b","c","d","e","f"];return n===0?o.every(r=>t[r]===e[r]):o.every(r=>Math.abs(t[r]-e[r])<=n)};var w={};K(w,{EMPTY:()=>ke,centerOf:()=>Gt,contains:()=>Xt,containsBounds:()=>Kt,equals:()=>Yt,expand:()=>qt,fromCenter:()=>Ht,fromPoints:()=>Wt,intersection:()=>Se,intersects:()=>Ut,isEmpty:()=>te,maxX:()=>k,maxY:()=>S,normalize:()=>Vt,of:()=>Nt,union:()=>zt});var ke=Object.freeze({x:0,y:0,width:0,height:0}),Nt=(t,e,n,o)=>({x:t,y:e,width:n,height:o}),Wt=t=>{if(t.length===0)return ke;let e=1/0,n=1/0,o=-1/0,r=-1/0;for(let s of t)s.x<e&&(e=s.x),s.y<n&&(n=s.y),s.x>o&&(o=s.x),s.y>r&&(r=s.y);return{x:e,y:n,width:o-e,height:r-n}},Ht=(t,e,n)=>({x:t.x-e/2,y:t.y-n/2,width:e,height:n}),Gt=t=>({x:t.x+t.width/2,y:t.y+t.height/2}),k=t=>t.x+t.width,S=t=>t.y+t.height,te=t=>t.width<=0||t.height<=0,zt=(t,e)=>{if(te(t))return e;if(te(e))return t;let n=Math.min(t.x,e.x),o=Math.min(t.y,e.y),r=Math.max(k(t),k(e)),s=Math.max(S(t),S(e));return{x:n,y:o,width:r-n,height:s-o}},Se=(t,e)=>{let n=Math.max(t.x,e.x),o=Math.max(t.y,e.y),r=Math.min(k(t),k(e)),s=Math.min(S(t),S(e));return r<=n||s<=o?null:{x:n,y:o,width:r-n,height:s-o}},Ut=(t,e)=>Se(t,e)!==null,Xt=(t,e)=>e.x>=t.x&&e.x<=k(t)&&e.y>=t.y&&e.y<=S(t),Kt=(t,e)=>e.x>=t.x&&e.y>=t.y&&k(e)<=k(t)&&S(e)<=S(t),qt=(t,e)=>({x:t.x-e,y:t.y-e,width:t.width+2*e,height:t.height+2*e}),Vt=t=>({x:t.width<0?t.x+t.width:t.x,y:t.height<0?t.y+t.height:t.y,width:Math.abs(t.width),height:Math.abs(t.height)}),Yt=(t,e,n=0)=>n===0?t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height:Math.abs(t.x-e.x)<=n&&Math.abs(t.y-e.y)<=n&&Math.abs(t.width-e.width)<=n&&Math.abs(t.height-e.height)<=n;var W={};K(W,{offsetClosedPath:()=>jt,signedArea:()=>Jt});var jt=(t,e)=>{if(t.length<3||e===0)return t.map(c=>({x:c.x,y:c.y}));let n=0,o=0;for(let c of t)n+=c.x,o+=c.y;n/=t.length,o/=t.length;let r=t.length,s=new Array(r),i=new Array(r);for(let c=0;c<r;c++){let u=y(t[c]),d=y(t[(c+1)%r]),a=d.x-u.x,h=d.y-u.y,f=Math.hypot(a,h)||1;s[c]=-h/f,i[c]=a/f}let l=[];for(let c=0;c<r;c++){let u=(c-1+r)%r,d=y(s[u]),a=y(i[u]),h=y(s[c]),f=y(i[c]),p=d+h,g=a+f,_=Math.hypot(p,g);_<1e-6?(p=d,g=a):(p/=_,g/=_);let b=y(t[c]),D=n-b.x,Z=o-b.y,v=p*D+g*Z>=0?1:-1,R=p*d+g*a,x=R>1e-6?e/R:e;l.push({x:b.x+v*p*x,y:b.y+v*g*x})}return l},Jt=t=>{let e=0;for(let n=0;n<t.length;n++){let o=y(t[n]),r=y(t[(n+1)%t.length]);e+=o.x*r.y-r.x*o.y}return e/2};var Zt=null;var Ce=()=>Zt;var ne=t=>t.type==="text";var oe=t=>t.stroke??t.fill??"#000",Me=new Map,L=(t,e)=>{Me.set(t,e)};var Pe=t=>{let e=Me.get(t.type);if(!e)throw new Error(`No bounder registered for shape type: ${t.type}`);return e(t)},re=t=>{let e=Pe(t),n=[{x:e.x,y:e.y},{x:e.x+e.width,y:e.y},{x:e.x,y:e.y+e.height},{x:e.x+e.width,y:e.y+e.height}],o=Math.sin(t.rotation),r=Math.cos(t.rotation),s=n.map(i=>{let l=i.x*t.scale.x,c=i.y*t.scale.y;return{x:t.position.x+(l*r-c*o),y:t.position.y+(l*o+c*r)}});return w.fromPoints(s)};L("rectangle",t=>({x:0,y:0,width:t.width,height:t.height}));L("ellipse",t=>({x:0,y:0,width:t.width,height:t.height}));L("polygon",t=>w.fromPoints(t.points));L("path",t=>{let e=[],n={x:0,y:0};for(let o of t.commands)switch(o.kind){case"M":case"L":e.push(o.to),n=o.to;break;case"Q":e.push(o.control,o.to),n=o.to;break;case"C":e.push(o.control1,o.control2,o.to),n=o.to;break;case"Z":break}return w.fromPoints(e)});L("text",t=>{let e=t.fontSize*1.2,n=t.text.split(`
2
- `),o=Ce(),r={bold:t.style.fontWeight==="bold",italic:t.style.fontStyle==="italic"},s=l=>{if(o){let c=o(l,t.fontFamily,t.fontSize,r);if(c!==null)return c}return l.length*t.fontSize*.6};if(t.maxWidth===void 0){let l=0;for(let c of n)l=Math.max(l,s(c));return l=Math.max(l,t.fontSize*.5),{x:0,y:0,width:l,height:Math.max(1,n.length)*e}}let i=0;for(let l of n)i+=Math.max(1,Math.ceil(s(l)/t.maxWidth));return{x:0,y:0,width:t.maxWidth,height:Math.max(1,i)*e}});L("image",t=>({x:0,y:0,width:t.width,height:t.height}));L("template",t=>({x:0,y:0,width:t.width,height:t.height}));L("brush",t=>{if(t.points.length===0)return{x:0,y:0,width:0,height:0};let e=1/0,n=1/0,o=-1/0,r=-1/0;for(let s of t.points)s.x-s.width<e&&(e=s.x-s.width),s.y-s.width<n&&(n=s.y-s.width),s.x+s.width>o&&(o=s.x+s.width),s.y+s.width>r&&(r=s.y+s.width);return{x:e,y:n,width:o-e,height:r-n}});L("group",()=>({x:0,y:0,width:0,height:0}));L("frame",t=>({x:0,y:0,width:t.width,height:t.height}));L("block-arrow",t=>({x:0,y:0,width:t.width,height:t.height}));var ie=(t,e)=>t.order<e.order?-1:t.order>e.order?1:0;var se=t=>[...t.layers.values()].sort(ie),q=(t,e)=>[...t.elements.values()].filter(n=>n.layerId===e).sort(ie);var ce=t=>{let e=t.length;if(e<2)return[];let n=a=>{let h=y(t[a]);return{x:h.x,y:h.y}},o=a=>y(t[a]).width,r=[],s=[];for(let a=0;a<e-1;a++){let h=m.sub(n(a+1),n(a)),f=m.lengthSq(h)>0?m.normalize(h):{x:1,y:0};r.push(f),s.push(m.perp(f))}let i=[],l=[];for(let a=0;a<e;a++){let h=o(a),f=n(a);if(a===0){let b=y(s[0]);i.push(m.add(f,m.mul(b,h))),l.push(m.sub(f,m.mul(b,h)));continue}if(a===e-1){let b=y(s[e-2]);i.push(m.add(f,m.mul(b,h))),l.push(m.sub(f,m.mul(b,h)));continue}let p=y(s[a-1]),g=y(s[a]),_=m.cross(y(r[a-1]),y(r[a]));if(Math.abs(_)<1e-9){i.push(m.add(f,m.mul(p,h))),l.push(m.sub(f,m.mul(p,h)));continue}_>0?(i.push(...De(f,p,g,h,1)),l.push(...ve(f,p,g,h,-1))):(i.push(...ve(f,p,g,h,1)),l.push(...De(f,p,g,h,-1)))}let c=Fe(n(e-1),y(s[e-2]),o(e-1),!1),u=Fe(n(0),y(s[0]),o(0),!0),d=[];for(let a of i)d.push(a);for(let a of c)d.push(a);for(let a=l.length-1;a>=0;a--)d.push(y(l[a]));for(let a of u)d.push(a);return d},De=(t,e,n,o,r)=>{let s=m.normalize(m.add(e,n)),i=m.dot(s,e);return i>.001&&1/i<=2.5?[m.add(t,m.mul(s,r*(o/i)))]:[m.add(t,m.mul(e,r*o)),m.add(t,m.mul(n,r*o))]},ve=(t,e,n,o,r)=>Be(t,o,m.angle(m.mul(e,r)),m.angle(m.mul(n,r))),Fe=(t,e,n,o)=>{let r=m.angle(e)+(o?Math.PI:0);return Be(t,n,r,r-Math.PI)},Be=(t,e,n,o)=>{let r=o-n;for(;r>Math.PI+1e-9;)r-=2*Math.PI;for(;r<-Math.PI-1e-9;)r+=2*Math.PI;let s=Math.max(1,Math.ceil(Math.abs(r)/.35)),i=[];for(let l=0;l<=s;l++){let c=n+r*l/s;i.push({x:t.x+e*Math.cos(c),y:t.y+e*Math.sin(c)})}return i};var $t=new Map,le=(t,e)=>{$t.set(t,e)};var Qt=Object.freeze({pan:{x:0,y:0},zoom:1,rotation:0,size:{width:0,height:0},gridEnabled:!1}),ae=t=>{let e=I.translation(-t.pan.x,-t.pan.y),n=I.rotation(t.rotation),o=I.scaling(t.zoom);return I.multiply(o,I.multiply(n,e))};var Ne=(t,e)=>{let n=new Map,o=s=>{t.setOpacity(s*e)},r={get(s,i){if(i==="setOpacity")return o;if(n.has(i))return n.get(i);let l=Reflect.get(s,i),c=typeof l=="function"?l.bind(s):l;return n.set(i,c),c}};return new Proxy(t,r)};var H=class{entries=new Map;get(e){let n=this.entries.get(e.id);if(n){if(n.ref!==e){this.entries.delete(e.id);return}return n.value}}set(e,n){return this.entries.set(e.id,{ref:e,value:n}),n}getOrCompute(e,n){let o=this.get(e);return o!==void 0?o:this.set(e,n(e))}invalidate(e){this.entries.delete(e)}clear(){this.entries.clear()}prune(e){for(let n of this.entries.keys())e.elements.has(n)||this.entries.delete(n)}get size(){return this.entries.size}},Fr=new H,G=(t,e)=>t.getOrCompute(e,re);var We="#bbb";var de=.06,he=.92,ue=.5;var He=.4,Ge=.5,fe=.1,me=.9,ze="#888",Ue="#ffffff",Xe="#222",Ke="#ddd";var C=class{cap;onEvict;map=new Map;constructor(e,n){this.cap=e,this.onEvict=n}get(e){let n=this.map.get(e);if(n!==void 0)return this.map.delete(e),this.map.set(e,n),n}has(e){return this.map.has(e)}set(e,n){for(this.map.delete(e),this.map.set(e,n);this.map.size>this.cap;){let o=this.map.keys().next().value,r=this.map.get(o);this.map.delete(o),r!==void 0&&this.onEvict?.(o,r)}}delete(e){return this.map.delete(e)}clear(){this.map.clear()}get size(){return this.map.size}keys(){return this.map.keys()}values(){return this.map.values()}};var qe=t=>t<=0?1:2**Math.round(Math.log2(t));var xe=(t,e,n={})=>{let o=ae(t.viewport),r=n.dirtyWorld;if(!n.skipClear)if(r){let R=[I.applyToPoint(o,{x:r.x,y:r.y}),I.applyToPoint(o,{x:r.x+r.width,y:r.y+r.height})],x=w.expand(w.fromPoints(R),2);e.clear(x)}else e.clear();e.save(),e.setTransform(o);let s=n.boundsCache??new H,i=n.viewport,l=null;i&&n.spatialIndex&&(l=n.spatialIndex.query(i));let c=t.viewport.zoom,u=n.clock,d=u?{zoom:c,clock:u}:{zoom:c},a=n.lod,h=a?.placeholder!==void 0&&c<a.placeholder,f=a?.hideText!==void 0&&c<a.hideText,p=n.placeholderFill??We,g=n.layerCompositeCache,_=n.dirtyLayerIds,b=n.compositeLayerBitmap,D=qe(c),Z=R=>{let x=null;for(let T of q(t,R)){let F=G(s,T);x=x?w.union(x,F):F}return x},$=n.dimOpacity,v=n.dimElements!==void 0&&$!==void 0?Ne(e,$):null;for(let R of se(t))if(R.visible){if(g&&b){_?.has(R.id)&&g.invalidateLayer(R.id);let x=g.get(R.id,D);if(x===void 0){let T=b(R.id,D,t);T!==null&&(g.set(R.id,D,T),x=T)}if(x!==void 0){let T=Z(R.id);T&&e.drawImage(x,T.x,T.y,T.width,T.height);continue}}for(let x of q(t,R.id)){if(n.hideElements?.has(x.id)||l&&!l.has(x.id))continue;if(i){let O=G(s,x);if(!w.intersects(O,i))continue}if(r){let O=G(s,x);if(!w.intersects(O,r))continue}if(f&&ne(x))continue;if(h){let O=G(s,x);e.setFill(p),e.setStrokeWidth(0),e.beginPath(),e.rect(O.x,O.y,O.width,O.height),e.fill();continue}let T=Te(x.type);if(!T){n.onUnknownElement?.(x);continue}e.save();let F=v!==null&&n.dimElements?.has(x.id)===!0,B=F?v:e;F&&B.setOpacity(1),B.translate(x.position.x,x.position.y),x.rotation!==0&&B.rotate(x.rotation),(x.scale.x!==1||x.scale.y!==1)&&B.scale(x.scale.x,x.scale.y),T(x,B,d),e.restore()}}e.restore()};var en=1.2,tn=(t,e,n,o,r)=>{if(t===""){r.push({text:"",start:e,end:e,width:0});return}let s=[],i=/\S+/g,l;for(;(l=i.exec(t))!==null;)s.push({s:l.index,e:l.index+l[0].length});if(s.length===0){r.push({text:t,start:e,end:e+t.length,width:o(t)});return}let c=0,u=(a,h)=>{let f=t.slice(a,h);r.push({text:f,start:e+a,end:e+h,width:o(f)})},d=0;for(;d<s.length;){let a=y(s[d]);if(o(t.slice(c,a.e))<=n){d++;continue}if(a.s>c){u(c,a.s),c=a.s;continue}let h=a.s+1;for(;h<a.e&&o(t.slice(c,h+1))<=n;)h++;if(h>=a.e){d++;continue}u(c,h),c=h,a.s=h}u(c,t.length)},ye=(t,e,n)=>{let o=n.fontSize*(n.lineHeightFactor??en),r=[],s=0;for(let c=0;c<=t.length;c++)if(c===t.length||t[c]===`
3
- `){let u=t.slice(s,c);n.maxWidth===void 0?r.push({text:u,start:s,end:c,width:e(u)}):tn(u,s,n.maxWidth,e,r),s=c+1}r.length===0&&r.push({text:"",start:0,end:0,width:0});let i=0;for(let c of r)i=Math.max(i,c.width);let l=n.maxWidth??i;return{lines:r,lineHeight:o,blockWidth:l}};var nn=new Map;var on=()=>typeof performance<"u"?performance.now():0;var pe=(t,e=on(t))=>{if(!t.animationKind)return t.src;let n=nn.get(t.animationKind);if(!n)return t.src;try{return n.getFrameAt(t.animationData,e)}catch{return t.src}};var z=(t,e)=>{let n=t.fill!==void 0&&t.fill!=="transparent",o=t.stroke!==void 0&&t.stroke!=="transparent"&&(t.strokeWidth??1)>0;return n&&e.setFill(t.fill),o&&(e.setStroke(t.stroke),e.setStrokeWidth(t.strokeWidth??1),t.lineCap&&e.setLineCap(t.lineCap),t.lineJoin&&e.setLineJoin(t.lineJoin),t.dashArray&&e.setDashArray(t.dashArray)),t.opacity!==void 0&&e.setOpacity(t.opacity),{fill:n,stroke:o}},sn=(t,e)=>{let{fill:n,stroke:o}=z(t.style,e);if(!n&&!o)return;let r=Q(t.style.roundness,t.width,t.height);if(n&&(e.beginPath(),r>0?Ve(e,0,0,t.width,t.height,r):e.rect(0,0,t.width,t.height),e.fill()),o){let s=j(t.style),i=s,l=s,c=t.width-2*s,u=t.height-2*s;if(c<=0||u<=0)return;let d=r>0?Math.max(0,r-s):0;e.beginPath(),d>0?Ve(e,i,l,c,u,d):e.rect(i,l,c,u),e.stroke()}},j=t=>{let e=t.strokeAlign??"center";if(e==="center")return 0;let n=(t.strokeWidth??1)/2;return e==="inside"?n:-n},Ve=(t,e,n,o,r,s)=>{t.moveTo(e+s,n),t.lineTo(e+o-s,n),t.quadraticCurveTo(e+o,n,e+o,n+s),t.lineTo(e+o,n+r-s),t.quadraticCurveTo(e+o,n+r,e+o-s,n+r),t.lineTo(e+s,n+r),t.quadraticCurveTo(e,n+r,e,n+r-s),t.lineTo(e,n+s),t.quadraticCurveTo(e,n,e+s,n),t.closePath()},cn=(t,e)=>{let{fill:n,stroke:o}=z(t.style,e);if(!n&&!o)return;let r=t.width/2,s=t.height/2;if(n&&(e.beginPath(),e.ellipse(r,s,r,s),e.fill()),o){let i=j(t.style),l=r-i,c=s-i;if(l<=0||c<=0)return;e.beginPath(),e.ellipse(r,s,l,c),e.stroke()}},ln=(t,e)=>{if(t.points.length<2)return;let{fill:n,stroke:o}=z(t.style,e);if(!(!n&&!o)&&(n&&(e.beginPath(),Y(e,t.points),e.fill()),o)){let r=j(t.style),s=r!==0?W.offsetClosedPath(t.points,r):t.points;e.beginPath(),Y(e,s),e.stroke()}},Y=(t,e)=>{let n=e[0];if(n!==void 0){t.moveTo(n.x,n.y);for(let o=1;o<e.length;o++){let r=e[o];r!==void 0&&t.lineTo(r.x,r.y)}t.closePath()}},an=(t,e)=>{if(t.commands.length===0)return;let{fill:n,stroke:o}=z(t.style,e);if(!(!n&&!o)){e.beginPath();for(let r of t.commands)switch(r.kind){case"M":e.moveTo(r.to.x,r.to.y);break;case"L":e.lineTo(r.to.x,r.to.y);break;case"Q":e.quadraticCurveTo(r.control.x,r.control.y,r.to.x,r.to.y);break;case"C":e.bezierCurveTo(r.control1.x,r.control1.y,r.control2.x,r.control2.y,r.to.x,r.to.y);break;case"Z":e.closePath();break}n&&e.fill(),o&&e.stroke()}},dn=(t,e)=>{let n=t.style.textAlign??"left",o=t.fontSize;e.setTextAlign("left"),e.setTextBaseline(t.style.textBaseline??"top");let r=u=>{let d=u?.fontWeight??t.style.fontWeight,a=u?.fontStyle??t.style.fontStyle;e.setFont(t.fontFamily,o,{...d?{weight:d}:{},...a?{style:a}:{}})};r(void 0);let s=ye(t.text,u=>e.measureText(u).width,{fontSize:o,...t.maxWidth!==void 0?{maxWidth:t.maxWidth}:{}}),i=s.lines.map(u=>{let d=ee(t,u.start,u.end).map(h=>(r(h.style),{text:h.text,style:h.style,width:e.measureText(h.text).width})),a=d.reduce((h,f)=>h+f.width,0);return{segs:d,total:a}}),l=t.maxWidth??i.reduce((u,d)=>Math.max(u,d.total),0),c=Math.max(1,o*de);i.forEach((u,d)=>{let a=d*s.lineHeight,h=n==="center"?l/2-u.total/2:n==="right"?l-u.total:0;for(let f of u.segs){let p=f.style?.fill??t.style.fill??"#000",g=f.style?.opacity??t.style.opacity;r(f.style),e.setFill(p),g!==void 0&&e.setOpacity(g),e.fillText(f.text,h,a);let _=f.style?.textDecoration??t.style.textDecoration;f.width>0&&(_?.underline||_?.strikethrough)&&(_.underline&&(e.beginPath(),e.rect(h,a+o*he,f.width,c),e.fill()),_.strikethrough&&(e.beginPath(),e.rect(h,a+o*ue-c/2,f.width,c),e.fill())),h+=f.width}})},hn=(t,e)=>{if(t.runs!==void 0&&t.runs.length>0){dn(t,e);return}let n=t.style.textAlign??"left",o=t.style.fontWeight,r=t.style.fontStyle;e.setFont(t.fontFamily,t.fontSize,{...o?{weight:o}:{},...r?{style:r}:{}}),e.setTextAlign("left"),e.setTextBaseline(t.style.textBaseline??"top");let s=t.style.fill??"#000";e.setFill(s),t.style.opacity!==void 0&&e.setOpacity(t.style.opacity);let i=t.fontSize,l;if(t.maxWidth===void 0&&!t.text.includes(`
4
- `))l=[{text:t.text,x:0,width:e.measureText(t.text).width,top:0}];else{let u=a=>e.measureText(a).width,d=ye(t.text,u,{fontSize:i,...t.maxWidth!==void 0?{maxWidth:t.maxWidth}:{}});l=d.lines.map((a,h)=>({text:a.text,x:n==="center"?d.blockWidth/2-a.width/2:n==="right"?d.blockWidth-a.width:0,width:a.width,top:h*d.lineHeight}))}for(let u of l)e.fillText(u.text,u.x,u.top);let c=t.style.textDecoration;if(c?.underline||c?.strikethrough){let u=Math.max(1,i*de);for(let d of l)d.width<=0||(c.underline&&(e.beginPath(),e.rect(d.x,d.top+i*he,d.width,u),e.fill()),c.strikethrough&&(e.beginPath(),e.rect(d.x,d.top+i*ue-u/2,d.width,u),e.fill()))}},un=(t,e)=>{let n=t.points;if(n.length===0)return;if(t.style.opacity!==void 0&&e.setOpacity(t.style.opacity),t.closed===!0&&t.style.fill!==void 0&&n.length>=3){e.setFill(t.style.fill),e.setStroke(null),e.beginPath();let s=y(n[0]);e.moveTo(s.x,s.y);for(let i=1;i<n.length;i++){let l=y(n[i]);e.lineTo(l.x,l.y)}e.closePath(),e.fill()}let o=oe(t.style);if(e.setFill(o),e.setStroke(null),n.length===1){let s=y(n[0]);e.beginPath(),e.ellipse(s.x,s.y,s.width,s.width),e.fill();return}let r=ce(n);if(r.length>=3){e.beginPath();let s=y(r[0]);e.moveTo(s.x,s.y);for(let i=1;i<r.length;i++){let l=y(r[i]);e.lineTo(l.x,l.y)}e.closePath(),e.fill()}},fn=(t,e,n)=>{let o=n?.clock?.(t),r=t.animationKind?pe(t,o):t.metadata?.image??pe(t,o),s=t.metadata?.animated===!0||t.animationKind!==void 0;e.drawImage(r,0,0,t.width,t.height,s,t.crop)},_e=()=>{A("rectangle",sn),A("ellipse",cn),A("polygon",ln),A("path",an),A("text",hn),A("image",fn),A("group",()=>{}),A("frame",pn),le("frame",()=>({top:24})),A("block-arrow",mn),A("brush",un)},mn=(t,e)=>{let{fill:n,stroke:o}=z(t.style,e),r=t.direction??"right",s=Math.max(fe,Math.min(me,t.headRatio??He)),i=Math.max(fe,Math.min(me,t.bodyThickness??Ge)),l=t.width,c=t.height,u=l*s,d=l-u,a=c*i/2,h=c/2,f=[[0,h-a],[d,h-a],[d,0],[l,h],[d,c],[d,h+a],[0,h+a]];r!=="right"&&(f=f.map(([g,_])=>xn([g,_],r,l,c)));let p=f.map(([g,_])=>({x:g,y:_}));if(n&&(e.beginPath(),Y(e,p),e.fill()),o){let g=j(t.style),_=g!==0?W.offsetClosedPath(p,g):p;e.beginPath(),Y(e,_),e.stroke()}},xn=([t,e],n,o,r)=>{switch(n){case"left":return[o-t,e];case"up":return[e*(o/r),r-t*(r/o)];case"down":return[(r-e)*(o/r),t*(r/o)]}},Ee="\u2026",yn=(t,e,n)=>{if(e<=0)return"";if(n.measureText(t).width<=e)return t;let o=0,r=t.length;for(;o<r;){let s=Math.ceil((o+r)/2);n.measureText(t.slice(0,s)+Ee).width<=e?o=s:r=s-1}return o>0?t.slice(0,o)+Ee:Ee},pn=(t,e,n)=>{e.setFill(t.style.fill??Ue),e.setStroke(null),e.setDashArray(null),e.beginPath(),e.rect(0,0,t.width,t.height),e.fill();let o=(n?.zoom??1)*(t.scale.x||1);e.setFill(null),e.setStroke(ze),e.setStrokeWidth(1/(o||1)),e.setDashArray(null),e.beginPath(),e.rect(0,0,t.width,t.height),e.stroke();let r=t.name??"Frame";e.setFont("system-ui, sans-serif",12);let s=t.width-16,i=e.measureText(r).width<=s,l=i?r:yn(r,s,e),c=i?Math.min(e.measureText(r).width+16,t.width):t.width;e.setFill(Xe),e.beginPath(),e.rect(0,-24,c,24),e.fill(),e.setFill(Ke),e.setTextBaseline("middle"),e.setTextAlign("left"),e.fillText(l,8,-24/2)};var P="Roboto",U="PT Serif",X="Roboto Mono",Ye=t=>{let e=t.toLowerCase();return e.includes("mono")?X:e.includes("sans")?P:e.includes("serif")||e.includes("slab")||e.includes("georgia")||e.includes("times")?U:P},gn=[{family:P,weight:"400",style:"normal",url:new URL("../fonts/Roboto-Regular.woff2",import.meta.url)},{family:P,weight:"700",style:"normal",url:new URL("../fonts/Roboto-Bold.woff2",import.meta.url)},{family:P,weight:"400",style:"italic",url:new URL("../fonts/Roboto-Italic.woff2",import.meta.url)},{family:P,weight:"700",style:"italic",url:new URL("../fonts/Roboto-BoldItalic.woff2",import.meta.url)},{family:U,weight:"400",style:"normal",url:new URL("../fonts/PTSerif-Regular.woff2",import.meta.url)},{family:U,weight:"700",style:"normal",url:new URL("../fonts/PTSerif-Bold.woff2",import.meta.url)},{family:U,weight:"400",style:"italic",url:new URL("../fonts/PTSerif-Italic.woff2",import.meta.url)},{family:U,weight:"700",style:"italic",url:new URL("../fonts/PTSerif-BoldItalic.woff2",import.meta.url)},{family:X,weight:"400",style:"normal",url:new URL("../fonts/RobotoMono-Regular.woff2",import.meta.url)},{family:X,weight:"700",style:"normal",url:new URL("../fonts/RobotoMono-Bold.woff2",import.meta.url)},{family:X,weight:"400",style:"italic",url:new URL("../fonts/RobotoMono-Italic.woff2",import.meta.url)},{family:X,weight:"700",style:"italic",url:new URL("../fonts/RobotoMono-BoldItalic.woff2",import.meta.url)}],je=async(t=globalThis)=>{let e=t.fonts;!e||typeof FontFace>"u"||await Promise.allSettled(gn.map(async n=>{let o=new FontFace(n.family,`url(${n.url.href})`,{weight:n.weight,style:n.style});await o.load(),e.add(o)}))};var En=["HTMLImageElement","HTMLCanvasElement","HTMLVideoElement","ImageBitmap","OffscreenCanvas","SVGImageElement","VideoFrame"],Ze=t=>{if(typeof t!="object"||t===null)return!1;let e=globalThis;for(let n of En){let o=e[n];if(typeof o=="function"&&t instanceof o)return!0}return!1},$e=t=>{let e=t;return typeof e.naturalWidth=="number"&&e.naturalWidth>0?{width:e.naturalWidth,height:e.naturalHeight??e.naturalWidth}:typeof e.videoWidth=="number"&&e.videoWidth>0?{width:e.videoWidth,height:e.videoHeight??e.videoWidth}:typeof e.width=="number"&&e.width>0&&typeof e.height=="number"?{width:e.width,height:e.height}:null},Je=new Set,Qe=t=>{if(typeof console>"u")return;let e=typeof t=="string"?t.startsWith("blob:")?"dead-blob-url":"string-src":t==null?"empty":"stale-object";Je.has(e)||(Je.add(e),console.warn(`[renderer] skipped a non-drawable image source (kind: ${e}). The shape's image handle isn't a live HTMLImageElement / canvas / bitmap \u2014 likely a scene restored from storage where the <img> was lost (metadata.image) and src is a dead blob: URL. The image won't render until rehydrated from Scene.files.`))};var J=class{ctx;_width;_height;dpr;constructor(e,n,o,r=1){this.ctx=e,this._width=n,this._height=o,this.dpr=r}get size(){return{width:this._width,height:this._height}}resize(e,n,o){this._width=e,this._height=n,o!==void 0&&(this.dpr=o)}setFill(e){this.ctx.fillStyle=e??"transparent"}setStroke(e){this.ctx.strokeStyle=e??"transparent"}setStrokeWidth(e){this.ctx.lineWidth=e}setOpacity(e){this.ctx.globalAlpha=e}setLineCap(e){this.ctx.lineCap=e}setLineJoin(e){this.ctx.lineJoin=e}setDashArray(e){this.ctx.setLineDash(e?[...e]:[])}setFont(e,n,o){let r=o?.style==="italic"?"italic ":"",s=o?.weight==="bold"?"bold ":"";this.ctx.font=`${r}${s}${n}px "${Ye(e)}", ${e}`}setTextAlign(e){this.ctx.textAlign=e==="center"?"center":e}setTextBaseline(e){this.ctx.textBaseline=e==="middle"?"middle":e==="top"?"top":"bottom"}save(){this.ctx.save()}restore(){this.ctx.restore()}translate(e,n){this.ctx.translate(e,n)}rotate(e){this.ctx.rotate(e)}scale(e,n){this.ctx.scale(e,n)}setTransform(e){let n=this.dpr;this.ctx.setTransform(n*e.a,n*e.b,n*e.c,n*e.d,n*e.e,n*e.f)}resetTransform(){this.ctx.setTransform(this.dpr,0,0,this.dpr,0,0)}beginPath(){this.ctx.beginPath()}closePath(){this.ctx.closePath()}moveTo(e,n){this.ctx.moveTo(e,n)}lineTo(e,n){this.ctx.lineTo(e,n)}quadraticCurveTo(e,n,o,r){this.ctx.quadraticCurveTo(e,n,o,r)}bezierCurveTo(e,n,o,r,s,i){this.ctx.bezierCurveTo(e,n,o,r,s,i)}rect(e,n,o,r){this.ctx.rect(e,n,o,r)}ellipse(e,n,o,r){this.ctx.ellipse(e,n,o,r,0,0,Math.PI*2)}fill(e){this.ctx.fill(e)}stroke(){this.ctx.stroke()}fillText(e,n,o,r){r!==void 0?this.ctx.fillText(e,n,o,r):this.ctx.fillText(e,n,o)}measureText(e){return{width:this.ctx.measureText(e).width}}drawImage(e,n,o,r,s,i,l){if(!Ze(e)){Qe(e);return}if(l&&(l.x!==0||l.y!==0||l.width!==1||l.height!==1)){let c=$e(e);if(c){this.ctx.drawImage(e,l.x*c.width,l.y*c.height,l.width*c.width,l.height*c.height,n,o,r,s);return}}this.ctx.drawImage(e,n,o,r,s)}clear(e){this.dirtyRect=null,e?this.ctx.clearRect(e.x,e.y,e.width,e.height):(this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore())}dirtyRect=null;markDirty(e){if(!this.dirtyRect){this.dirtyRect=e;return}let n=Math.min(this.dirtyRect.x,e.x),o=Math.min(this.dirtyRect.y,e.y),r=Math.max(this.dirtyRect.x+this.dirtyRect.width,e.x+e.width),s=Math.max(this.dirtyRect.y+this.dirtyRect.height,e.y+e.height);this.dirtyRect={x:n,y:o,width:r-n,height:s-o}}getDirtyRect(){return this.dirtyRect}};var Rn=0,Tn=1,bn=2,wn=3,Ln=4,An=5,In=6,On=7,kn=8,Sn=9,Cn=10,Mn=11,Pn=12,Dn=13,vn=14,Fn=15,Bn=16,Nn=17,Wn=18,Hn=19,Gn=20,zn=21,Un=22,Xn=23,Kn=24,qn=25,Vn=26,Yn=27,jn=28,Jn=29,Zn=30,$n=31,et=-1,Qn=-1,eo=["butt","round","square"];var to=["miter","round","bevel"];var no=["left","center","right"];var oo=["top","middle","bottom"];var tt={nonzero:1,evenodd:2},nt={normal:1,bold:2},ot={normal:1,italic:2},ro=0,rt=1;var it=(t,e,n,o=new C(64))=>{let r=new Float64Array(e),s=0,i=()=>{let u=r[s++];if(u===void 0)throw new Error("replayPackedFrame: truncated stream");return u},l=u=>{let d=n[u];if(d===void 0)throw new Error(`replayPackedFrame: bad string index ${String(u)}`);return d},c=(u,d)=>{let a=u[d];if(a===void 0)throw new Error(`replayPackedFrame: bad enum code ${String(d)}`);return a};for(;s<r.length;){let u=i();switch(u){case Rn:{let d=i();t.setFill(d===et?null:l(d));break}case Tn:{let d=i();t.setStroke(d===et?null:l(d));break}case bn:t.setStrokeWidth(i());break;case wn:t.setOpacity(i());break;case Ln:t.setLineCap(c(eo,i()));break;case An:t.setLineJoin(c(to,i()));break;case In:{let d=i();if(d===Qn)t.setDashArray(null);else{let a=[];for(let h=0;h<d;h++)a.push(i());t.setDashArray(a)}break}case On:{let d=l(i()),a=i();if(i()===ro){t.setFont(d,a);break}let h=i(),f=i(),p={};h===nt.normal?p.weight="normal":h===nt.bold&&(p.weight="bold"),f===ot.normal?p.style="normal":f===ot.italic&&(p.style="italic"),t.setFont(d,a,p);break}case kn:t.setTextAlign(c(no,i()));break;case Sn:t.setTextBaseline(c(oo,i()));break;case Cn:t.save();break;case Mn:t.restore();break;case Pn:t.translate(i(),i());break;case Dn:t.rotate(i());break;case vn:t.scale(i(),i());break;case Fn:t.setTransform({a:i(),b:i(),c:i(),d:i(),e:i(),f:i()});break;case Bn:t.resetTransform();break;case Nn:t.beginPath();break;case Wn:t.closePath();break;case Hn:t.moveTo(i(),i());break;case Gn:t.lineTo(i(),i());break;case zn:t.quadraticCurveTo(i(),i(),i(),i());break;case Un:t.bezierCurveTo(i(),i(),i(),i(),i(),i());break;case Xn:t.rect(i(),i(),i(),i());break;case Kn:t.ellipse(i(),i(),i(),i());break;case qn:{let d=i();d===tt.nonzero?t.fill("nonzero"):d===tt.evenodd?t.fill("evenodd"):t.fill();break}case Vn:t.stroke();break;case Yn:{let d=l(i()),a=i(),h=i();i()===rt?t.fillText(d,a,h,i()):t.fillText(d,a,h);break}case jn:if(i()===rt){let d={x:i(),y:i(),width:i(),height:i()};t.clear(d)}else t.clear();break;case Jn:t.markDirty?.({x:i(),y:i(),width:i(),height:i()});break;case Zn:i(),i();break;case $n:{let d=i(),a=i(),h=i(),f=i(),p=i(),g=o.get(d);g&&t.drawImage(g,a,h,f,p);break}default:throw new Error(`replayPackedFrame: unknown opcode ${String(u)}`)}}};var E={canvas:null,target:null,dpr:1,images:new C(64,(t,e)=>{e.close()})},st=!1,io=()=>{st||(_e(),st=!0)},M=(t,e)=>{e&&e.length>0?self.postMessage(t,e):self.postMessage(t)},so=(t,e,n,o)=>{je(self),E.canvas=t,E.dpr=o,t.width=Math.max(1,Math.round(e*o)),t.height=Math.max(1,Math.round(n*o));let r=t.getContext("2d");if(!r)throw new Error("OffscreenCanvas 2D context unavailable");r.setTransform(o,0,0,o,0,0),E.target=new J(r,e,n,o),M({type:"ready"})},co=(t,e)=>{if(!E.canvas||!E.target)return;E.canvas.width=Math.max(1,Math.round(t*E.dpr)),E.canvas.height=Math.max(1,Math.round(e*E.dpr));let n=E.canvas.getContext("2d");n&&(n.setTransform(E.dpr,0,0,E.dpr,0,0),E.target.resize(t,e,E.dpr))},lo=t=>{if(!E.canvas||!E.target){M({type:"error",message:"Worker not initialised"});return}io();let e=E.canvas.getContext("2d");if(e===null){M({type:"error",message:"Worker not initialised"});return}e.save(),e.setTransform(E.dpr,0,0,E.dpr,0,0),e.clearRect(0,0,E.target.size.width,E.target.size.height),xe(t,E.target),e.restore();let n=E.canvas.transferToImageBitmap();M({type:"frame-done",bitmap:n},[n])},ao=t=>{if(!E.target){M({type:"error",message:"Worker not initialised"});return}for(let{id:e,bitmap:n}of t.bitmaps){let o=E.images.get(e);o&&o!==n&&o.close(),E.images.set(e,n)}it(E.target,t.buffer,t.strings,E.images)};self.addEventListener("message",t=>{let e=t.data;try{switch(e.type){case"init":so(e.canvas,e.width,e.height,e.dpr);break;case"resize":co(e.width,e.height);break;case"snapshot":lo(e.scene);break;case"replay":ao(e);break;case"frame":M({type:"error",message:"patch-stream frames not implemented"});break}}catch(n){M({type:"error",message:n instanceof Error?n.message:String(n)})}});
1
+ var me=Object.defineProperty;var n0=(e,o)=>{for(var l in o)me(e,l,{get:o[l],enumerable:!0})};var po=(e,o)=>Math.max(e.width,e.height)*o,Z=(e,o,l)=>l?.minTextScreenPx!==void 0&&e*o<l.minTextScreenPx;var yo=new Map,v=(e,o)=>{yo.set(e,o)},fo=e=>yo.get(e);var Ao=[{text:"Type something",weight:40},{text:"Place for text",weight:20},{text:"Start typing\u2026",weight:12},{text:"Your text here",weight:10},{text:"Add a note",weight:8},{text:"What's on your mind?",weight:6},{text:"Words go here",weight:5},{text:"Say it in a few words",weight:4},{text:"Lorem ipsum? No \u2014 your words.",weight:3},{text:"Blank is a state of mind",weight:2},{text:"Insert genius here",weight:2},{text:"The cursor is waiting patiently",weight:1}];var k0=(e,o,l)=>{if(!e||e.type==="sharp")return 0;let r=Math.min(Math.abs(o),Math.abs(l));if(r<=0)return 0;if(e.value!==void 0)return Math.max(0,Math.min(e.value,r/2));let t=32/.25;return r<=t?r*.25:32};var ge=e=>{let o=2166136261;for(let l=0;l<e.length;l++)o^=e.charCodeAt(l),o=Math.imul(o,16777619)>>>0;return o},$=(e,o=Ao)=>{let l=o.reduce((t,s)=>t+Math.max(1,s.weight),0);if(l<=0||o.length===0)return"";let r=ge(e)%l;for(let t of o)if(r-=Math.max(1,t.weight),r<0)return t.text;return o[o.length-1]?.text??""};var mo=e=>{if(!e)return"";let o=Object.entries(e).filter(([,l])=>l!==void 0).sort(([l],[r])=>l<r?-1:l>r?1:0);return JSON.stringify(o)},uo=e=>{let o=[];for(let l of e){if(l.text==="")continue;let r=o[o.length-1];r!==void 0&&mo(r.style)===mo(l.style)?o[o.length-1]={text:r.text+l.text,...r.style!==void 0?{style:r.style}:{}}:o.push(l)}return o},he=e=>{let o=e.runs;return o!==void 0&&o.length>0?uo(o):e.text===""?[]:[{text:e.text}]},E0=(e,o,l)=>{let r=Math.min(o,l),t=Math.max(o,l),s=[],i=0;for(let a of he(e)){let n=i,f=i+a.text.length;i=f;let d=Math.max(n,r),p=Math.min(f,t);d>=p||s.push({text:a.text.slice(d-n,p-n),...a.style!==void 0?{style:a.style}:{}})}return s};var w0=e=>{let o=1;for(let l of e)l===`
2
+ `&&o++;return o};var bo=(e,o)=>e?.[o]??{};var T0=(e,o)=>{let l=[],r=new Map;for(let t=0;t<o;t++){let s=bo(e,t),i=s.indent??0;if(s.list==="numbered"){let a=(r.get(i)??0)+1;r.set(i,a);for(let n of[...r.keys()])n>i&&r.delete(n);l.push(`${String(a)}.`)}else{if(s.list===void 0)r.clear();else for(let a of[...r.keys()])a>=i&&r.delete(a);l.push(s.list==="bullet"?"\u2022":null)}}return l};var g=e=>{if(e===void 0)throw new Error("required value is undefined");return e};var h={};n0(h,{ZERO:()=>go,add:()=>_e,angle:()=>Pe,cross:()=>Re,distance:()=>Le,distanceSq:()=>_o,div:()=>we,dot:()=>ve,equals:()=>Fe,length:()=>xo,lengthSq:()=>ho,lerp:()=>Oe,midpoint:()=>Se,mul:()=>Ee,negate:()=>Te,normalize:()=>Ie,of:()=>xe,perp:()=>Me,rotate:()=>De,rotateAround:()=>Ce,sub:()=>ke});var go=Object.freeze({x:0,y:0}),xe=(e,o)=>({x:e,y:o}),_e=(e,o)=>({x:e.x+o.x,y:e.y+o.y}),ke=(e,o)=>({x:e.x-o.x,y:e.y-o.y}),Ee=(e,o)=>({x:e.x*o,y:e.y*o}),we=(e,o)=>({x:e.x/o,y:e.y/o}),Te=e=>({x:-e.x,y:-e.y}),ve=(e,o)=>e.x*o.x+e.y*o.y,Re=(e,o)=>e.x*o.y-e.y*o.x,ho=e=>e.x*e.x+e.y*e.y,xo=e=>Math.sqrt(ho(e)),_o=(e,o)=>{let l=o.x-e.x,r=o.y-e.y;return l*l+r*r},Le=(e,o)=>Math.sqrt(_o(e,o)),Ie=e=>{let o=xo(e);return o===0?go:{x:e.x/o,y:e.y/o}},Oe=(e,o,l)=>({x:e.x+(o.x-e.x)*l,y:e.y+(o.y-e.y)*l}),Se=(e,o)=>({x:(e.x+o.x)/2,y:(e.y+o.y)/2}),Pe=e=>Math.atan2(e.y,e.x),De=(e,o)=>{let l=Math.cos(o),r=Math.sin(o);return{x:e.x*l-e.y*r,y:e.x*r+e.y*l}},Ce=(e,o,l)=>{let r=Math.cos(l),t=Math.sin(l),s=e.x-o.x,i=e.y-o.y;return{x:o.x+(s*r-i*t),y:o.y+(s*t+i*r)}},Me=e=>({x:-e.y,y:e.x}),Fe=(e,o,l=0)=>l===0?e.x===o.x&&e.y===o.y:Math.abs(e.x-o.x)<=l&&Math.abs(e.y-o.y)<=l;var I={};n0(I,{IDENTITY:()=>Ne,applyToBounds:()=>Ue,applyToPoint:()=>J,decompose:()=>Ke,equals:()=>Xe,inverse:()=>je,multiply:()=>Ge,of:()=>Be,rotation:()=>We,scaling:()=>He,translation:()=>ze});var Ne=Object.freeze({a:1,b:0,c:0,d:1,e:0,f:0}),Be=(e,o,l,r,t,s)=>({a:e,b:o,c:l,d:r,e:t,f:s}),ze=(e,o)=>({a:1,b:0,c:0,d:1,e,f:o}),He=(e,o=e)=>({a:e,b:0,c:0,d:o,e:0,f:0}),We=e=>{let o=Math.cos(e),l=Math.sin(e);return{a:o,b:l,c:-l,d:o,e:0,f:0}},Ge=(e,o)=>({a:e.a*o.a+e.c*o.b,b:e.b*o.a+e.d*o.b,c:e.a*o.c+e.c*o.d,d:e.b*o.c+e.d*o.d,e:e.a*o.e+e.c*o.f+e.e,f:e.b*o.e+e.d*o.f+e.f}),je=e=>{let o=e.a*e.d-e.b*e.c;if(o===0)throw new Error("Cannot invert singular matrix");return{a:e.d/o,b:-e.b/o,c:-e.c/o,d:e.a/o,e:(e.c*e.f-e.d*e.e)/o,f:(e.b*e.e-e.a*e.f)/o}},J=(e,o)=>({x:e.a*o.x+e.c*o.y+e.e,y:e.b*o.x+e.d*o.y+e.f}),Ue=(e,o)=>{let l=J(e,{x:o.x,y:o.y}),r=J(e,{x:o.x+o.width,y:o.y}),t=J(e,{x:o.x,y:o.y+o.height}),s=J(e,{x:o.x+o.width,y:o.y+o.height}),i=Math.min(l.x,r.x,t.x,s.x),a=Math.min(l.y,r.y,t.y,s.y),n=Math.max(l.x,r.x,t.x,s.x),f=Math.max(l.y,r.y,t.y,s.y);return{x:i,y:a,width:n-i,height:f-a}},Ke=e=>{let o=Math.sqrt(e.a*e.a+e.b*e.b),l=Math.sqrt(e.c*e.c+e.d*e.d),t=e.a*e.d-e.b*e.c<0?-l:l;return{translation:{x:e.e,y:e.f},rotation:Math.atan2(e.b,e.a),scale:{x:o,y:t}}},Xe=(e,o,l=0)=>{let r=["a","b","c","d","e","f"];return l===0?r.every(t=>e[t]===o[t]):r.every(t=>Math.abs(e[t]-o[t])<=l)};var R={};n0(R,{EMPTY:()=>ko,centerOf:()=>Ze,contains:()=>Qe,containsBounds:()=>ol,equals:()=>rl,expand:()=>el,fromCenter:()=>Ve,fromPoints:()=>qe,intersection:()=>Eo,intersects:()=>Je,isEmpty:()=>v0,maxX:()=>D,maxY:()=>C,normalize:()=>ll,of:()=>Ye,union:()=>$e});var ko=Object.freeze({x:0,y:0,width:0,height:0}),Ye=(e,o,l,r)=>({x:e,y:o,width:l,height:r}),qe=e=>{if(e.length===0)return ko;let o=1/0,l=1/0,r=-1/0,t=-1/0;for(let s of e)s.x<o&&(o=s.x),s.y<l&&(l=s.y),s.x>r&&(r=s.x),s.y>t&&(t=s.y);return{x:o,y:l,width:r-o,height:t-l}},Ve=(e,o,l)=>({x:e.x-o/2,y:e.y-l/2,width:o,height:l}),Ze=e=>({x:e.x+e.width/2,y:e.y+e.height/2}),D=e=>e.x+e.width,C=e=>e.y+e.height,v0=e=>e.width<=0||e.height<=0,$e=(e,o)=>{if(v0(e))return o;if(v0(o))return e;let l=Math.min(e.x,o.x),r=Math.min(e.y,o.y),t=Math.max(D(e),D(o)),s=Math.max(C(e),C(o));return{x:l,y:r,width:t-l,height:s-r}},Eo=(e,o)=>{let l=Math.max(e.x,o.x),r=Math.max(e.y,o.y),t=Math.min(D(e),D(o)),s=Math.min(C(e),C(o));return t<=l||s<=r?null:{x:l,y:r,width:t-l,height:s-r}},Je=(e,o)=>Eo(e,o)!==null,Qe=(e,o)=>o.x>=e.x&&o.x<=D(e)&&o.y>=e.y&&o.y<=C(e),ol=(e,o)=>o.x>=e.x&&o.y>=e.y&&D(o)<=D(e)&&C(o)<=C(e),el=(e,o)=>({x:e.x-o,y:e.y-o,width:e.width+2*o,height:e.height+2*o}),ll=e=>({x:e.width<0?e.x+e.width:e.x,y:e.height<0?e.y+e.height:e.y,width:Math.abs(e.width),height:Math.abs(e.height)}),rl=(e,o,l=0)=>l===0?e.x===o.x&&e.y===o.y&&e.width===o.width&&e.height===o.height:Math.abs(e.x-o.x)<=l&&Math.abs(e.y-o.y)<=l&&Math.abs(e.width-o.width)<=l&&Math.abs(e.height-o.height)<=l;var Q={};n0(Q,{offsetClosedPath:()=>tl,signedArea:()=>il});var tl=(e,o)=>{if(e.length<3||o===0)return e.map(n=>({x:n.x,y:n.y}));let l=0,r=0;for(let n of e)l+=n.x,r+=n.y;l/=e.length,r/=e.length;let t=e.length,s=new Array(t),i=new Array(t);for(let n=0;n<t;n++){let f=g(e[n]),d=g(e[(n+1)%t]),p=d.x-f.x,c=d.y-f.y,y=Math.hypot(p,c)||1;s[n]=-c/y,i[n]=p/y}let a=[];for(let n=0;n<t;n++){let f=(n-1+t)%t,d=g(s[f]),p=g(i[f]),c=g(s[n]),y=g(i[n]),A=d+c,m=p+y,u=Math.hypot(A,m);u<1e-6?(A=d,m=p):(A/=u,m/=u);let x=g(e[n]),S=l-x.x,L=r-x.y,E=A*S+m*L>=0?1:-1,b=A*d+m*p,k=b>1e-6?o/b:o;a.push({x:x.x+E*A*k,y:x.y+E*m*k})}return a},il=e=>{let o=0;for(let l=0;l<e.length;l++){let r=g(e[l]),t=g(e[(l+1)%e.length]);o+=r.x*t.y-t.x*r.y}return o/2};var sl=null;var wo=()=>sl;var c0=e=>e.type==="text";var R0=e=>e.stroke??e.fill??"#000",To=new Map,w=(e,o)=>{To.set(e,o)};var p0=e=>{let o=To.get(e.type);if(!o)throw new Error(`No bounder registered for shape type: ${e.type}`);return o(e)},L0=e=>{let o=p0(e),l=[{x:o.x,y:o.y},{x:o.x+o.width,y:o.y},{x:o.x,y:o.y+o.height},{x:o.x+o.width,y:o.y+o.height}],r=Math.sin(e.rotation),t=Math.cos(e.rotation),s=l.map(i=>{let a=i.x*e.scale.x,n=i.y*e.scale.y;return{x:e.position.x+(a*t-n*r),y:e.position.y+(a*r+n*t)}});return R.fromPoints(s)};w("rectangle",e=>({x:0,y:0,width:e.width,height:e.height}));w("ellipse",e=>({x:0,y:0,width:e.width,height:e.height}));w("polygon",e=>R.fromPoints(e.points));w("sticky",e=>({x:0,y:0,width:e.width,height:e.height}));w("emoji",e=>({x:0,y:0,width:e.size,height:e.size}));w("path",e=>{let o=[],l={x:0,y:0};for(let r of e.commands)switch(r.kind){case"M":case"L":o.push(r.to),l=r.to;break;case"Q":o.push(r.control,r.to),l=r.to;break;case"C":o.push(r.control1,r.control2,r.to),l=r.to;break;case"Z":break}return R.fromPoints(o)});w("text",e=>{let o=e.fontSize*1.2,l=(e.text===""?$(e.id):e.text).split(`
3
+ `),r=wo(),t={bold:e.style.fontWeight==="bold",italic:e.style.fontStyle==="italic"},s=a=>{if(r){let n=r(a,e.fontFamily,e.fontSize,t);if(n!==null)return n}return a.length*e.fontSize*.6};if(e.maxWidth===void 0){let a=0;for(let n of l)a=Math.max(a,s(n));return a=Math.max(a,e.fontSize*.5),{x:0,y:0,width:a,height:Math.max(1,l.length)*o}}let i=0;for(let a of l)i+=Math.max(1,Math.ceil(s(a)/e.maxWidth));return{x:0,y:0,width:e.maxWidth,height:Math.max(1,i)*o}});w("image",e=>({x:0,y:0,width:e.width,height:e.height}));w("template",e=>({x:0,y:0,width:e.width,height:e.height}));w("brush",e=>{if(e.points.length===0)return{x:0,y:0,width:0,height:0};let o=1/0,l=1/0,r=-1/0,t=-1/0;for(let s of e.points)s.x-s.width<o&&(o=s.x-s.width),s.y-s.width<l&&(l=s.y-s.width),s.x+s.width>r&&(r=s.x+s.width),s.y+s.width>t&&(t=s.y+s.width);return{x:o,y:l,width:r-o,height:t-l}});w("group",()=>({x:0,y:0,width:0,height:0}));w("frame",e=>({x:0,y:0,width:e.width,height:e.height}));w("block-arrow",e=>({x:0,y:0,width:e.width,height:e.height}));var I0=(e,o)=>e.order<o.order?-1:e.order>o.order?1:0;var O0=e=>[...e.layers.values()].sort(I0),d0=(e,o)=>[...e.elements.values()].filter(l=>l.layerId===o).sort(I0);var S0=e=>{let o=e.length;if(o<2)return[];let l=p=>{let c=g(e[p]);return{x:c.x,y:c.y}},r=p=>g(e[p]).width,t=[],s=[];for(let p=0;p<o-1;p++){let c=h.sub(l(p+1),l(p)),y=h.lengthSq(c)>0?h.normalize(c):{x:1,y:0};t.push(y),s.push(h.perp(y))}let i=[],a=[];for(let p=0;p<o;p++){let c=r(p),y=l(p);if(p===0){let x=g(s[0]);i.push(h.add(y,h.mul(x,c))),a.push(h.sub(y,h.mul(x,c)));continue}if(p===o-1){let x=g(s[o-2]);i.push(h.add(y,h.mul(x,c))),a.push(h.sub(y,h.mul(x,c)));continue}let A=g(s[p-1]),m=g(s[p]),u=h.cross(g(t[p-1]),g(t[p]));if(Math.abs(u)<1e-9){i.push(h.add(y,h.mul(A,c))),a.push(h.sub(y,h.mul(A,c)));continue}u>0?(i.push(...vo(y,A,m,c,1)),a.push(...Ro(y,A,m,c,-1))):(i.push(...Ro(y,A,m,c,1)),a.push(...vo(y,A,m,c,-1)))}let n=Lo(l(o-1),g(s[o-2]),r(o-1),!1),f=Lo(l(0),g(s[0]),r(0),!0),d=[];for(let p of i)d.push(p);for(let p of n)d.push(p);for(let p=a.length-1;p>=0;p--)d.push(g(a[p]));for(let p of f)d.push(p);return d},vo=(e,o,l,r,t)=>{let s=h.normalize(h.add(o,l)),i=h.dot(s,o);return i>.001&&1/i<=2.5?[h.add(e,h.mul(s,t*(r/i)))]:[h.add(e,h.mul(o,t*r)),h.add(e,h.mul(l,t*r))]},Ro=(e,o,l,r,t)=>Io(e,r,h.angle(h.mul(o,t)),h.angle(h.mul(l,t))),Lo=(e,o,l,r)=>{let t=h.angle(o)+(r?Math.PI:0);return Io(e,l,t,t-Math.PI)},Io=(e,o,l,r)=>{let t=r-l;for(;t>Math.PI+1e-9;)t-=2*Math.PI;for(;t<-Math.PI-1e-9;)t+=2*Math.PI;let s=Math.max(1,Math.ceil(Math.abs(t)/.35)),i=[];for(let a=0;a<=s;a++){let n=l+t*a/s;i.push({x:e.x+o*Math.cos(n),y:e.y+o*Math.sin(n)})}return i};var al=new Map,y0=(e,o)=>{al.set(e,o)};var nl=Object.freeze({pan:{x:0,y:0},zoom:1,rotation:0,size:{width:0,height:0},gridEnabled:!1}),P0=e=>{let o=I.translation(-e.pan.x,-e.pan.y),l=I.rotation(e.rotation),r=I.scaling(e.zoom);return I.multiply(r,I.multiply(l,o))};var D0={gray1:"#111111",gray2:"#191919",gray3:"#222222",gray4:"#2a2a2a",gray5:"#313131",gray6:"#3a3a3a",gray7:"#484848",gray8:"#606060",gray9:"#6e6e6e",gray10:"#7b7b7b",gray11:"#b4b4b4",gray12:"#eeeeee"};var f0={tomato1:"#181111",tomato2:"#1f1513",tomato3:"#391714",tomato4:"#4e1511",tomato5:"#5e1c16",tomato6:"#6e2920",tomato7:"#853a2d",tomato8:"#ac4d39",tomato9:"#e54d2e",tomato10:"#ec6142",tomato11:"#ff977d",tomato12:"#fbd3cb"};var C0={plum1:"#181118",plum2:"#201320",plum3:"#351a35",plum4:"#451d47",plum5:"#512454",plum6:"#5e3061",plum7:"#734079",plum8:"#92549c",plum9:"#ab4aba",plum10:"#b658c4",plum11:"#e796f3",plum12:"#f4d4f4"};var F={iris1:"#13131e",iris2:"#171625",iris3:"#202248",iris4:"#262a65",iris5:"#303374",iris6:"#3d3e82",iris7:"#4a4a95",iris8:"#5958b1",iris9:"#5b5bd6",iris10:"#6e6ade",iris11:"#b1a9ff",iris12:"#e0dffe"};var M0={cyan1:"#0b161a",cyan2:"#101b20",cyan3:"#082c36",cyan4:"#003848",cyan5:"#004558",cyan6:"#045468",cyan7:"#12677e",cyan8:"#11809c",cyan9:"#00a2c7",cyan10:"#23afd0",cyan11:"#4ccce6",cyan12:"#b6ecf7"};var F0={grass1:"#0e1511",grass2:"#141a15",grass3:"#1b2a1e",grass4:"#1d3a24",grass5:"#25482d",grass6:"#2d5736",grass7:"#366740",grass8:"#3e7949",grass9:"#46a758",grass10:"#53b365",grass11:"#71d083",grass12:"#c2f0c2"};var N0={amber1:"#16120c",amber2:"#1d180f",amber3:"#302008",amber4:"#3f2700",amber5:"#4d3000",amber6:"#5c3d05",amber7:"#714f19",amber8:"#8f6424",amber9:"#ffc53d",amber10:"#ffd60a",amber11:"#ffca16",amber12:"#ffe7b3"};var W={gray1:"#fcfcfc",gray2:"#f9f9f9",gray3:"#f0f0f0",gray4:"#e8e8e8",gray5:"#e0e0e0",gray6:"#d9d9d9",gray7:"#cecece",gray8:"#bbbbbb",gray9:"#8d8d8d",gray10:"#838383",gray11:"#646464",gray12:"#202020"};var N={tomato1:"#fffcfc",tomato2:"#fff8f7",tomato3:"#feebe7",tomato4:"#ffdcd3",tomato5:"#ffcdc2",tomato6:"#fdbdaf",tomato7:"#f5a898",tomato8:"#ec8e7b",tomato9:"#e54d2e",tomato10:"#dd4425",tomato11:"#d13415",tomato12:"#5c271f"};var B0={plum1:"#fefcff",plum2:"#fdf7fd",plum3:"#fbebfb",plum4:"#f7def8",plum5:"#f2d1f3",plum6:"#e9c2ec",plum7:"#deade3",plum8:"#cf91d8",plum9:"#ab4aba",plum10:"#a144af",plum11:"#953ea3",plum12:"#53195d"};var O={iris1:"#fdfdff",iris2:"#f8f8ff",iris3:"#f0f1fe",iris4:"#e6e7ff",iris5:"#dadcff",iris6:"#cbcdff",iris7:"#b8baf8",iris8:"#9b9ef0",iris9:"#5b5bd6",iris10:"#5151cd",iris11:"#5753c6",iris12:"#272962"};var z0={cyan1:"#fafdfe",cyan2:"#f2fafb",cyan3:"#def7f9",cyan4:"#caf1f6",cyan5:"#b5e9f0",cyan6:"#9ddde7",cyan7:"#7dcedc",cyan8:"#3db9cf",cyan9:"#00a2c7",cyan10:"#0797b9",cyan11:"#107d98",cyan12:"#0d3c48"};var G={grass1:"#fbfefb",grass2:"#f5fbf5",grass3:"#e9f6e9",grass4:"#daf1db",grass5:"#c9e8ca",grass6:"#b2ddb5",grass7:"#94ce9a",grass8:"#65ba74",grass9:"#46a758",grass10:"#3e9b4f",grass11:"#2a7e3b",grass12:"#203c25"};var j={amber1:"#fefdfb",amber2:"#fefbe9",amber3:"#fff7c2",amber4:"#ffee9c",amber5:"#fbe577",amber6:"#f3d673",amber7:"#e9c162",amber8:"#e2a336",amber9:"#ffc53d",amber10:"#ffba18",amber11:"#ab6400",amber12:"#4f3422"};var o0=(e,o)=>{let l=e[o];if(l===void 0)throw new Error(`Missing color token: ${o}`);return l},T=(e,o)=>({fill:o0(e,`${o}4`),solid:o0(e,`${o}9`),solidHover:o0(e,`${o}10`),textLow:o0(e,`${o}11`),textHigh:o0(e,`${o}12`)}),cl={light:{tomato:T(N,"tomato"),amber:T(j,"amber"),grass:T(G,"grass"),cyan:T(z0,"cyan"),iris:T(O,"iris"),plum:T(B0,"plum"),gray:T(W,"gray")},dark:{tomato:T(f0,"tomato"),amber:T(N0,"amber"),grass:T(F0,"grass"),cyan:T(M0,"cyan"),iris:T(F,"iris"),plum:T(C0,"plum"),gray:T(D0,"gray")}},pl={light:{tomato:N.tomato2,amber:j.amber2,grass:G.grass2,cyan:z0.cyan2,iris:O.iris2,plum:B0.plum2,gray:W.gray2},dark:{tomato:f0.tomato2,amber:N0.amber2,grass:F0.grass2,cyan:M0.cyan2,iris:F.iris2,plum:C0.plum2,gray:D0.gray2}},H0={light:{canvas:"#f5f5f5",bg:"#ffffff",bgSolid:"#ffffff",border:"rgba(0, 0, 0, 0.08)",text:"#1a1a1a",textMuted:"#6b6b6b",hoverOverlay:"rgba(0, 0, 0, 0.05)"},dark:{canvas:"#f5f5f5",bg:"#252525",bgSolid:"#252525",border:"rgba(255, 255, 255, 0.08)",text:"#e8e8e8",textMuted:"#9a9a9a",hoverOverlay:"rgba(255, 255, 255, 0.06)"}},dl={light:{accent:O.iris9,accentHover:O.iris10,selectedBg:O.iris4,selectedFg:O.iris11,danger:N.tomato9},dark:{accent:F.iris9,accentHover:F.iris10,selectedBg:F.iris4,selectedFg:F.iris11,danger:f0.tomato9}},Oo=W.gray6,So=W.gray9,yl={rectangle:{fill:O.iris3,stroke:O.iris9,strokeWidth:2},ellipse:{fill:N.tomato3,stroke:N.tomato9,strokeWidth:2},flowchart:{fill:G.grass3,stroke:G.grass9,strokeWidth:2},sticky:{fill:j.amber3,stroke:j.amber9,strokeWidth:1}},fl={stroke:W.gray12,strokeWidth:1.5},Al={added:G.grass9,removed:N.tomato9,modified:j.amber9};var Po=H0.light.textMuted,Do="#bbb";var W0=.06,Co=1.4,Mo=.4,G0=.5,Fo=10,No=64,Bo="#fff9b1",j0=4,A0=10,zo="#8a8a6f",Ho="rgba(0, 0, 0, 0.18)",U0=4,K0=9,X0=5,U=14,Wo=4,Go="rgba(0, 0, 0, 0.08)",jo="#555",Y0=10,e0=16,q0=6,m0=4,V0="rgba(255, 255, 255, 0.85)",Uo="#333",Ko="#5b5bd6",l0=.5;var Z0=.92,$0=.5;var Xo=.4,Yo=.5,J0=.1,Q0=.9,qo="#888",Vo="#ffffff",Zo="#222",$o="#ddd";var oo=1.2,ml=(e,o,l,r,t,s,i)=>{let a={indentX:i,para:s},n=()=>t.length===0||g(t[t.length-1]).para!==s;if(e===""){t.push({text:"",start:o,end:o,width:0,...a,paraFirst:n()});return}let f=[],d=/\S+/g,p;for(;(p=d.exec(e))!==null;)f.push({s:p.index,e:p.index+p[0].length});if(f.length===0){t.push({text:e,start:o,end:o+e.length,width:r(e),...a,paraFirst:n()});return}let c=0,y=(m,u)=>{let x=e.slice(m,u);t.push({text:x,start:o+m,end:o+u,width:r(x),...a,paraFirst:n()})},A=0;for(;A<f.length;){let m=g(f[A]);if(r(e.slice(c,m.e))<=l){A++;continue}if(m.s>c){y(c,m.s),c=m.s;continue}let u=m.s+1;for(;u<m.e&&r(e.slice(c,u+1))<=l;)u++;if(u>=m.e){A++;continue}y(c,u),c=u,m.s=u}y(c,e.length)},r0=(e,o,l)=>{let r=l.fontSize*(l.lineHeightFactor??oo),t=[],s=0,i=0;for(let f=0;f<=e.length;f++)if(f===e.length||e[f]===`
4
+ `){let d=e.slice(s,f),p=l.paragraphs?.[i],y=((p?.indent??0)+(p?.list!==void 0?1:0))*Co*l.fontSize;if(l.maxWidth===void 0)t.push({text:d,start:s,end:f,width:o(d),indentX:y,para:i,paraFirst:!0});else{let A=Math.max(l.fontSize,l.maxWidth-y);ml(d,s,A,o,t,i,y)}s=f+1,i++}t.length===0&&t.push({text:"",start:0,end:0,width:0,indentX:0,para:0,paraFirst:!0});let a=0;for(let f of t)a=Math.max(a,f.width+f.indentX);let n=l.maxWidth??a;return{lines:t,lineHeight:r,blockWidth:n}},ul=(e,o,l)=>l==="center"?o/2-e/2:l==="right"?o-e:0,eo=(e,o,l)=>ul(e.width,o-e.indentX,l)+e.indentX;var bl=new Map;var gl=()=>typeof performance<"u"?performance.now():0;var lo=(e,o=gl(e))=>{if(!e.animationKind)return e.src;let l=bl.get(e.animationKind);if(!l)return e.src;try{return l.getFrameAt(e.animationData,o)}catch{return e.src}};var hl=["HTMLImageElement","HTMLCanvasElement","HTMLVideoElement","ImageBitmap","OffscreenCanvas","SVGImageElement","VideoFrame"],K=e=>{if(typeof e!="object"||e===null)return!1;let o=globalThis;for(let l of hl){let r=o[l];if(typeof r=="function"&&e instanceof r)return!0}return!1};var t0=(e,o)=>{let l=e.fill!==void 0&&e.fill!=="transparent",r=e.stroke!==void 0&&e.stroke!=="transparent"&&(e.strokeWidth??1)>0;return l&&o.setFill(e.fill),r&&(o.setStroke(e.stroke),o.setStrokeWidth(e.strokeWidth??1),e.lineCap&&o.setLineCap(e.lineCap),e.lineJoin&&o.setLineJoin(e.lineJoin),e.dashArray&&o.setDashArray(e.dashArray)),e.opacity!==void 0&&o.setOpacity(e.opacity),{fill:l,stroke:r}},_l=(e,o)=>{let{fill:l,stroke:r}=t0(e.style,o);if(!l&&!r)return;let t=k0(e.style.roundness,e.width,e.height);if(l&&(o.beginPath(),t>0?M(o,0,0,e.width,e.height,t):o.rect(0,0,e.width,e.height),o.fill()),r){let s=h0(e.style),i=s,a=s,n=e.width-2*s,f=e.height-2*s;if(n<=0||f<=0)return;let d=t>0?Math.max(0,t-s):0;o.beginPath(),d>0?M(o,i,a,n,f,d):o.rect(i,a,n,f),o.stroke()}},h0=e=>{let o=e.strokeAlign??"center";if(o==="center")return 0;let l=(e.strokeWidth??1)/2;return o==="inside"?l:-l},M=(e,o,l,r,t,s)=>{e.moveTo(o+s,l),e.lineTo(o+r-s,l),e.quadraticCurveTo(o+r,l,o+r,l+s),e.lineTo(o+r,l+t-s),e.quadraticCurveTo(o+r,l+t,o+r-s,l+t),e.lineTo(o+s,l+t),e.quadraticCurveTo(o,l+t,o,l+t-s),e.lineTo(o,l+s),e.quadraticCurveTo(o,l,o+s,l),e.closePath()},kl=(e,o)=>{let{fill:l,stroke:r}=t0(e.style,o);if(!l&&!r)return;let t=e.width/2,s=e.height/2;if(l&&(o.beginPath(),o.ellipse(t,s,t,s),o.fill()),r){let i=h0(e.style),a=t-i,n=s-i;if(a<=0||n<=0)return;o.beginPath(),o.ellipse(t,s,a,n),o.stroke()}},El=(e,o)=>{if(e.points.length<2)return;let{fill:l,stroke:r}=t0(e.style,o);if(!(!l&&!r)&&(l&&(o.beginPath(),g0(o,e.points),o.fill()),r)){let t=h0(e.style),s=t!==0?Q.offsetClosedPath(e.points,t):e.points;o.beginPath(),g0(o,s),o.stroke()}},g0=(e,o)=>{let l=o[0];if(l!==void 0){e.moveTo(l.x,l.y);for(let r=1;r<o.length;r++){let t=o[r];t!==void 0&&e.lineTo(t.x,t.y)}e.closePath()}},wl=(e,o)=>{if(e.commands.length===0)return;let{fill:l,stroke:r}=t0(e.style,o);if(!(!l&&!r)){o.beginPath();for(let t of e.commands)switch(t.kind){case"M":o.moveTo(t.to.x,t.to.y);break;case"L":o.lineTo(t.to.x,t.to.y);break;case"Q":o.quadraticCurveTo(t.control.x,t.control.y,t.to.x,t.to.y);break;case"C":o.bezierCurveTo(t.control1.x,t.control1.y,t.control2.x,t.control2.y,t.to.x,t.to.y);break;case"Z":o.closePath();break}l&&o.fill(),r&&o.stroke()}},Tl=e=>1/Math.max(e>0?e:1,l0),Jo=(e,o,l=1)=>{let r=Tl(l),t=m0*r,s=e0*r,i=j0+2,a=[],n=i,f=e.height+t;for(let d of e.reactions??[]){let c=d.users?.length??d.count??0,y=`${d.glyph} ${String(c)}`,A=(o(y)+2*q0)*r;n>i&&n+A>e.width&&(n=i,f+=s+t),a.push({glyph:d.glyph,label:y,x:n,y:f,width:A,height:s}),n+=A+t}return n>i&&n+s>e.width&&(n=i,f+=s+t),{pills:a,add:{x:n,y:f,width:s,height:s}}};var vl=(e,o,l)=>{let r=e.style.fill??Bo;e.style.opacity!==void 0&&o.setOpacity(e.style.opacity);let t=e.width,s=e.height,i=j0;if(o.setFill(Ho),o.beginPath(),M(o,1,U0,t-2,s-2,i),o.fill(),o.setFill(r),o.beginPath(),M(o,0,0,t,s,i),o.fill(),l?.content?.stickyTags!==!1&&e.tags!==void 0&&e.tags.length>0){o.setFont("system-ui, sans-serif",K0,{}),o.setTextAlign("left"),o.setTextBaseline("top");let c=i+2,y=s-U-3;for(let A of e.tags){let m=o.measureText(A).width+2*X0;if(c+m>t-i)break;o.setFill(Go),o.beginPath(),M(o,c,y,m,U,U/2),o.fill(),o.setFill(jo),o.fillText(A,c+X0,y+(U-K0)/2),c+=m+Wo}}if(l?.content?.stickyAuthor!==!1&&e.showAuthor===!0&&e.authorName!==void 0&&e.authorName!==""){o.setFont("system-ui, sans-serif",A0,{}),o.setTextAlign("left"),o.setTextBaseline("top"),o.setFill(zo);let c=e.tags!==void 0&&e.tags.length>0?s-U-A0-8:s-A0-4;o.fillText(e.authorName,i+2,c)}let a=l?.zoom??1,n=1/Math.max(a>0?a:1,l0),f=a>=l0,d=f&&l?.content?.stickyReactions!==!1,p=f&&l?.content?.stickyAddButton!==!1&&l?.hoveredElement===e.id;if(d||p){o.setFont("system-ui, sans-serif",Y0,{}),o.setTextAlign("left"),o.setTextBaseline("top");let c=Jo(e,y=>o.measureText(y).width,a);if(d)for(let y of c.pills)o.setFill(V0),o.beginPath(),M(o,y.x,y.y,y.width,y.height,y.height/2),o.fill(),o.setFill(Uo),o.save(),o.translate(y.x,y.y),o.scale(n,n),o.fillText(y.label,q0,(e0-Y0)/2),o.restore();if(p){let y=c.add;o.setFill(V0),o.beginPath(),M(o,y.x,y.y,y.width,y.height,y.height/2),o.fill();let A=y.x+y.width/2,m=y.y+y.height/2,u=y.height*.22,x=1.4*n;o.setFill(Ko),o.beginPath(),o.rect(A-u,m-x/2,u*2,x),o.fill(),o.beginPath(),o.rect(A-x/2,m-u,x,u*2),o.fill()}}},Rl=(e,o)=>{e.style.opacity!==void 0&&o.setOpacity(e.style.opacity),o.setFont("system-ui, sans-serif",e.size,{}),o.setTextAlign("left"),o.setTextBaseline("top"),o.setFill(e.style.fill??"#000"),o.fillText(e.glyph,0,0)},u0=new Map,Ll=(e,o,l,r,t,s)=>{let i=Math.round(r("Mg \u0432\u043E\u0434\u043E\u0451\u043C")/t*1e3),a=`${e}|${String(Math.round(o))}x${String(Math.round(l))}|${String(i)}`,n=u0.get(a);if(n!==void 0)return n;let f=c=>{let y=G0*c,A=o-2*y;if(A<c)return!1;let u=r0(e,x=>r(x)*c/t,{fontSize:c,maxWidth:A,...s!==void 0?{paragraphs:s}:{}});return u.lines.length*u.lineHeight<=l-2*y},d=Fo,p=No;for(;p-d>1;){let c=Math.floor((d+p)/2);f(c)?d=c:p=c}return u0.size>512&&u0.clear(),u0.set(a,d),d},Qo=(e,o)=>{let l=e.label;if(l===void 0)return null;let r=p0(e),t=l.autoFit===!0&&l.text!==""?Ll(l.text,r.width,r.height,o,l.fontSize,l.paragraphs):l.fontSize,s=G0*t,i=Math.max(t,r.width-2*s),a=t===l.fontSize?o:q=>o(q)*t/l.fontSize,n=l.style?.textBaseline??"middle",f={textAlign:"center",...l.style,textBaseline:"top"},d=r0(l.text,a,{fontSize:t,maxWidth:i,...l.paragraphs!==void 0?{paragraphs:l.paragraphs}:{}}),p=Math.max(0,r.height-2*s),c=Math.max(0,Math.floor(p/d.lineHeight)),y=e.metadata?.labelScrollLines,A=Math.max(0,d.lines.length-c),m=Math.max(0,Math.min(A,typeof y=="number"?Math.floor(y):0)),u={id:e.id,layerId:e.layerId,type:"text",position:{x:0,y:0},rotation:0,scale:{x:1,y:1},order:e.order,style:f,text:l.text,fontFamily:l.fontFamily,fontSize:t,maxWidth:i,clipStart:m,clipLines:c,...l.runs!==void 0?{runs:l.runs}:{},...l.paragraphs!==void 0?{paragraphs:l.paragraphs}:{}},x=Math.min(d.lines.length-m,c)*d.lineHeight,L=(n==="top"?r.y+s:n==="bottom"?r.y+r.height-x-s:r.y+Math.max(s,(r.height-x)/2))-m*d.lineHeight;return{synthetic:u,offsetX:r.x+s,offsetY:L,windowTop:m*d.lineHeight,windowBottom:(m+c)*d.lineHeight}},io=(e,o,l)=>{let r=e.label;if(r===void 0||r.text===""||l&&!r.autoFit&&Z(r.fontSize,l.zoom,l.lod))return;let t=r.style?.fontWeight,s=r.style?.fontStyle;o.setFont(r.fontFamily,r.fontSize,{...t?{weight:t}:{},...s?{style:s}:{}});let i=Qo(e,a=>o.measureText(a).width);i&&(l&&Z(i.synthetic.fontSize,l.zoom,l.lod)||(o.save(),o.translate(i.offsetX,i.offsetY),ao(i.synthetic,o),o.restore()))},so=e=>{let o=e;if(o.clipLines===void 0)return;let l=o.clipStart??0;return{start:l,end:l+o.clipLines}},oe=(e,o,l,r)=>{if(e.paragraphs===void 0)return;let t=e.style.textAlign??"left",s=T0(e.paragraphs,w0(e.text)),i=Mo*e.fontSize;l.setFill(r);let a=so(e);o.lines.forEach((n,f)=>{if(a!==void 0&&(f<a.start||f>=a.end)||!n.paraFirst)return;let d=s[n.para];if(d==null)return;let p=l.measureText(d).width,c=eo(n,o.blockWidth,t);l.fillText(d,c-i-p,f*o.lineHeight)})},Il=(e,o)=>{let l=e.style.textAlign??"left",r=e.fontSize;o.setTextAlign("left"),o.setTextBaseline(e.style.textBaseline??"top");let t=d=>{let p=d?.fontWeight??e.style.fontWeight,c=d?.fontStyle??e.style.fontStyle;o.setFont(e.fontFamily,r,{...p?{weight:p}:{},...c?{style:c}:{}})};t(void 0);let s=r0(e.text,d=>o.measureText(d).width,{fontSize:r,...e.maxWidth!==void 0?{maxWidth:e.maxWidth}:{},...e.paragraphs!==void 0?{paragraphs:e.paragraphs}:{}}),i=s.lines.map(d=>{let p=E0(e,d.start,d.end).map(y=>(t(y.style),{text:y.text,style:y.style,width:o.measureText(y.text).width})),c=p.reduce((y,A)=>y+A.width,0);return{segs:p,total:c}}),a=e.maxWidth??i.reduce((d,p,c)=>Math.max(d,p.total+g(s.lines[c]).indentX),0),n=Math.max(1,r*W0),f=so(e);i.forEach((d,p)=>{if(f!==void 0&&(p<f.start||p>=f.end))return;let c=p*s.lineHeight,y=g(s.lines[p]).indentX,A=y+(l==="center"?(a-y)/2-d.total/2:l==="right"?a-y-d.total:0);for(let m of d.segs){let u=m.style?.fill??e.style.fill??"#000",x=m.style?.opacity??e.style.opacity;t(m.style),x!==void 0&&o.setOpacity(x);let S=m.style?.highlight??e.style.highlight;m.width>0&&S!==void 0&&S!=="transparent"&&(o.setFill(S),o.beginPath(),o.rect(A,c,m.width,s.lineHeight),o.fill()),o.setFill(u),o.fillText(m.text,A,c);let L=m.style?.textDecoration??e.style.textDecoration;m.width>0&&(L?.underline||L?.strikethrough)&&(L.underline&&(o.beginPath(),o.rect(A,c+r*Z0,m.width,n),o.fill()),L.strikethrough&&(o.beginPath(),o.rect(A,c+r*$0-n/2,m.width,n),o.fill())),A+=m.width}}),t(void 0),oe(e,s,o,e.style.fill??"#000")},ao=(e,o,l)=>{if(e.text===""&&l?.textPlaceholders===!0){let{runs:p,...c}=e;ao({...c,text:$(e.id),style:{...e.style,fill:Po}},o);return}if(e.runs!==void 0&&e.runs.length>0){Il(e,o);return}let r=e.style.textAlign??"left",t=e.style.fontWeight,s=e.style.fontStyle;o.setFont(e.fontFamily,e.fontSize,{...t?{weight:t}:{},...s?{style:s}:{}}),o.setTextAlign("left"),o.setTextBaseline(e.style.textBaseline??"top");let i=e.style.fill??"#000";o.setFill(i),e.style.opacity!==void 0&&o.setOpacity(e.style.opacity);let a=e.fontSize,n;if(e.maxWidth===void 0&&!e.text.includes(`
5
+ `)&&e.paragraphs===void 0)n=[{text:e.text,x:0,width:o.measureText(e.text).width,top:0}];else{let p=A=>o.measureText(A).width,c=r0(e.text,p,{fontSize:a,...e.maxWidth!==void 0?{maxWidth:e.maxWidth}:{},...e.paragraphs!==void 0?{paragraphs:e.paragraphs}:{}});n=c.lines.map((A,m)=>({text:A.text,x:eo(A,c.blockWidth,r),width:A.width,top:m*c.lineHeight}));let y=so(e);y!==void 0&&(n=n.filter((A,m)=>m>=y.start&&m<y.end)),oe(e,c,o,i)}let f=e.style.highlight;if(f!==void 0&&f!=="transparent"){let p=a*oo;o.setFill(f);for(let c of n)c.width<=0||(o.beginPath(),o.rect(c.x,c.top,c.width,p),o.fill());o.setFill(i)}for(let p of n)o.fillText(p.text,p.x,p.top);let d=e.style.textDecoration;if(d?.underline||d?.strikethrough){let p=Math.max(1,a*W0);for(let c of n)c.width<=0||(d.underline&&(o.beginPath(),o.rect(c.x,c.top+a*Z0,c.width,p),o.fill()),d.strikethrough&&(o.beginPath(),o.rect(c.x,c.top+a*$0-p/2,c.width,p),o.fill()))}},Ol=(e,o)=>{let l=e.points;if(l.length===0)return;if(e.style.opacity!==void 0&&o.setOpacity(e.style.opacity),e.closed===!0&&e.style.fill!==void 0&&l.length>=3){o.setFill(e.style.fill),o.setStroke(null),o.beginPath();let s=g(l[0]);o.moveTo(s.x,s.y);for(let i=1;i<l.length;i++){let a=g(l[i]);o.lineTo(a.x,a.y)}o.closePath(),o.fill()}let r=R0(e.style);if(o.setFill(r),o.setStroke(null),l.length===1){let s=g(l[0]);o.beginPath(),o.ellipse(s.x,s.y,s.width,s.width),o.fill();return}let t=S0(l);if(t.length>=3){o.beginPath();let s=g(t[0]);o.moveTo(s.x,s.y);for(let i=1;i<t.length;i++){let a=g(t[i]);o.lineTo(a.x,a.y)}o.closePath(),o.fill()}},Sl=(e,o,l)=>{let r=l?.clock?.(e),t=e.animationKind?lo(e,r):e.metadata?.image??lo(e,r);if(!K(t)&&(t==null||e.fileId))return;let s=e.metadata?.animated===!0||e.animationKind!==void 0,i=e.mask;i&&(o.save(),o.beginPath(),ee(o,i,e.width,e.height),o.clip()),o.drawImage(t,0,0,e.width,e.height,s,e.crop),i&&o.restore()},ee=(e,o,l,r)=>{switch(o.kind){case"ellipse":e.ellipse(l/2,r/2,l/2,r/2);return;case"round-rect":{let t=Math.max(0,Math.min(.5,o.radius))*Math.min(l,r);M(e,0,0,l,r,t);return}case"polygon":{let t=o.points;if(t.length<3)return;let s=g(t[0]);e.moveTo(s.x*l,s.y*r);for(let i=1;i<t.length;i++){let a=g(t[i]);e.lineTo(a.x*l,a.y*r)}e.closePath();return}}},no=()=>{v("rectangle",_l),v("ellipse",kl),v("polygon",El),v("path",wl),v("text",ao),v("image",Sl),v("group",()=>{}),v("frame",Ml),y0("frame",()=>({top:24})),v("block-arrow",Pl),v("brush",Ol),v("sticky",vl),y0("sticky",e=>{let o=(e.reactions?.length??0)+1,l=1/l0;return{bottom:U0+(m0+e0)*l*o+2,right:(m0+e0)*l+2}}),v("emoji",Rl)},Pl=(e,o)=>{let{fill:l,stroke:r}=t0(e.style,o),t=e.direction??"right",s=Math.max(J0,Math.min(Q0,e.headRatio??Xo)),i=Math.max(J0,Math.min(Q0,e.bodyThickness??Yo)),a=e.width,n=e.height,f=a*s,d=a-f,p=n*i/2,c=n/2,y=[[0,c-p],[d,c-p],[d,0],[a,c],[d,n],[d,c+p],[0,c+p]];t!=="right"&&(y=y.map(([m,u])=>Dl([m,u],t,a,n)));let A=y.map(([m,u])=>({x:m,y:u}));if(l&&(o.beginPath(),g0(o,A),o.fill()),r){let m=h0(e.style),u=m!==0?Q.offsetClosedPath(A,m):A;o.beginPath(),g0(o,u),o.stroke()}},Dl=([e,o],l,r,t)=>{switch(l){case"left":return[r-e,o];case"up":return[o*(r/t),t-e*(t/r)];case"down":return[(t-o)*(r/t),e*(t/r)]}},to="\u2026",Cl=(e,o,l)=>{if(o<=0)return"";if(l.measureText(e).width<=o)return e;let r=0,t=e.length;for(;r<t;){let s=Math.ceil((r+t)/2);l.measureText(e.slice(0,s)+to).width<=o?r=s:t=s-1}return r>0?e.slice(0,r)+to:to},Ml=(e,o,l)=>{o.setFill(e.style.fill??Vo),o.setStroke(null),o.setDashArray(null),o.beginPath(),o.rect(0,0,e.width,e.height),o.fill();let r=(l?.zoom??1)*(e.scale.x||1);o.setFill(null),o.setStroke(qo),o.setStrokeWidth(1/(r||1)),o.setDashArray(null),o.beginPath(),o.rect(0,0,e.width,e.height),o.stroke();let t=e.name??"Frame";o.setFont("system-ui, sans-serif",12);let s=e.width-16,i=o.measureText(t).width<=s,a=i?t:Cl(t,s,o),n=i?Math.min(o.measureText(t).width+16,e.width):e.width;o.setFill(Zo),o.beginPath(),o.rect(0,-24,n,24),o.fill(),o.setFill($o),o.setTextBaseline("middle"),o.setTextAlign("left"),o.fillText(a,8,-24/2)};var le=(e,o)=>{let l=new Map,r=s=>{e.setOpacity(s*o)},t={get(s,i){if(i==="setOpacity")return r;if(l.has(i))return l.get(i);let a=Reflect.get(s,i),n=typeof a=="function"?a.bind(s):a;return l.set(i,n),n}};return new Proxy(e,t)};var i0=class{entries=new Map;get(o){let l=this.entries.get(o.id);if(l){if(l.ref!==o){this.entries.delete(o.id);return}return l.value}}set(o,l){return this.entries.set(o.id,{ref:o,value:l}),l}getOrCompute(o,l){let r=this.get(o);return r!==void 0?r:this.set(o,l(o))}invalidate(o){this.entries.delete(o)}clear(){this.entries.clear()}prune(o){for(let l of this.entries.keys())o.elements.has(l)||this.entries.delete(l)}get size(){return this.entries.size}},Fi=new i0,X=(e,o)=>e.getOrCompute(o,L0);var B=class{cap;onEvict;map=new Map;constructor(o,l){this.cap=o,this.onEvict=l}get(o){let l=this.map.get(o);if(l!==void 0)return this.map.delete(o),this.map.set(o,l),l}has(o){return this.map.has(o)}set(o,l){for(this.map.delete(o),this.map.set(o,l);this.map.size>this.cap;){let r=this.map.keys().next().value,t=this.map.get(r);this.map.delete(r),t!==void 0&&this.onEvict?.(r,t)}}delete(o){return this.map.delete(o)}clear(){this.map.clear()}get size(){return this.map.size}keys(){return this.map.keys()}values(){return this.map.values()}};var re=e=>e<=0?1:2**Math.round(Math.log2(e));var co=(e,o,l={})=>{let r=P0(e.viewport),t=l.dirtyWorld;if(!l.skipClear)if(t){let E=[I.applyToPoint(r,{x:t.x,y:t.y}),I.applyToPoint(r,{x:t.x+t.width,y:t.y+t.height})],b=R.expand(R.fromPoints(E),2);o.clear(b)}else o.clear();o.save(),o.setTransform(r);let s=l.boundsCache??new i0,i=l.viewport,a=null;i&&l.spatialIndex&&(a=l.spatialIndex.query(i));let n=e.viewport.zoom,f=l.clock,d={zoom:n,...f?{clock:f}:{},...l.content?{content:l.content}:{},...l.hoveredElement!==void 0?{hoveredElement:l.hoveredElement}:{},...l.textPlaceholders===!0?{textPlaceholders:!0}:{}},p=l.lod,c=p?.placeholderMaxScreenPx,y=l.placeholderFill??Do,A=l.layerCompositeCache,m=l.dirtyLayerIds,u=l.compositeLayerBitmap,x=re(n),S=E=>{let b=null;for(let k of d0(e,E)){let V=X(s,k);b=b?R.union(b,V):V}return b},L=l.dimOpacity,q=l.dimElements!==void 0&&L!==void 0?le(o,L):null;for(let E of O0(e))if(E.visible){if(A&&u){m?.has(E.id)&&A.invalidateLayer(E.id);let b=A.get(E.id,x);if(b===void 0){let k=u(E.id,x,e);k!==null&&(A.set(E.id,x,k),b=k)}if(b!==void 0){let k=S(E.id);k&&o.drawImage(b,k.x,k.y,k.width,k.height);continue}}for(let b of d0(e,E.id)){if(l.hideElements?.has(b.id)||a&&!a.has(b.id))continue;if(i){let P=X(s,b);if(!R.intersects(P,i))continue}if(t){let P=X(s,b);if(!R.intersects(P,t))continue}if(c0(b)&&Z(b.fontSize,n,p))continue;if(c!==void 0&&po(X(s,b),n)<c){let P=X(s,b);o.setFill(y),o.setStrokeWidth(0),o.beginPath(),o.rect(P.x,P.y,P.width,P.height),o.fill();continue}let k=fo(b.type);if(!k){l.onUnknownElement?.(b);continue}o.save();let V=q!==null&&l.dimElements?.has(b.id)===!0,H=V?q:o;V&&H.setOpacity(1),H.translate(b.position.x,b.position.y),b.rotation!==0&&H.rotate(b.rotation),(b.scale.x!==1||b.scale.y!==1)&&H.scale(b.scale.x,b.scale.y),k(b,H,d),b.label!==void 0&&!c0(b)&&io(b,H,p?.minTextScreenPx!==void 0?{zoom:n,lod:p}:void 0),o.restore()}}o.restore()};var Y="Roboto",s0="PT Serif",a0="Roboto Mono",te=e=>{let o=e.toLowerCase();return o.includes("mono")?a0:o.includes("sans")?Y:o.includes("serif")||o.includes("slab")||o.includes("georgia")||o.includes("times")?s0:Y},Fl=[{family:Y,weight:"400",style:"normal",url:new URL("../fonts/Roboto-Regular.woff2",import.meta.url)},{family:Y,weight:"700",style:"normal",url:new URL("../fonts/Roboto-Bold.woff2",import.meta.url)},{family:Y,weight:"400",style:"italic",url:new URL("../fonts/Roboto-Italic.woff2",import.meta.url)},{family:Y,weight:"700",style:"italic",url:new URL("../fonts/Roboto-BoldItalic.woff2",import.meta.url)},{family:s0,weight:"400",style:"normal",url:new URL("../fonts/PTSerif-Regular.woff2",import.meta.url)},{family:s0,weight:"700",style:"normal",url:new URL("../fonts/PTSerif-Bold.woff2",import.meta.url)},{family:s0,weight:"400",style:"italic",url:new URL("../fonts/PTSerif-Italic.woff2",import.meta.url)},{family:s0,weight:"700",style:"italic",url:new URL("../fonts/PTSerif-BoldItalic.woff2",import.meta.url)},{family:a0,weight:"400",style:"normal",url:new URL("../fonts/RobotoMono-Regular.woff2",import.meta.url)},{family:a0,weight:"700",style:"normal",url:new URL("../fonts/RobotoMono-Bold.woff2",import.meta.url)},{family:a0,weight:"400",style:"italic",url:new URL("../fonts/RobotoMono-Italic.woff2",import.meta.url)},{family:a0,weight:"700",style:"italic",url:new URL("../fonts/RobotoMono-BoldItalic.woff2",import.meta.url)}],ie=async(e=globalThis)=>{let o=e.fonts;!o||typeof FontFace>"u"||await Promise.allSettled(Fl.map(async l=>{let r=new FontFace(l.family,`url(${l.url.href})`,{weight:l.weight,style:l.style});await r.load(),o.add(r)}))};var ae=e=>{let o=e;return typeof o.naturalWidth=="number"&&o.naturalWidth>0?{width:o.naturalWidth,height:o.naturalHeight??o.naturalWidth}:typeof o.videoWidth=="number"&&o.videoWidth>0?{width:o.videoWidth,height:o.videoHeight??o.videoWidth}:typeof o.width=="number"&&o.width>0&&typeof o.height=="number"?{width:o.width,height:o.height}:null},se=new Set,ne=e=>{if(typeof console>"u")return;let o=typeof e=="string"?e.startsWith("blob:")?"dead-blob-url":"string-src":e==null?"empty":"stale-object";se.has(o)||(se.add(o),console.warn(`[renderer] skipped a non-drawable image source (kind: ${o}). The shape's image handle isn't a live HTMLImageElement / canvas / bitmap and it has no Scene.files bytes to rehydrate from (shapes with a fileId are skipped silently while rehydration is in flight) \u2014 the image will stay blank.`))};var x0=class{ctx;_width;_height;dpr;constructor(o,l,r,t=1){this.ctx=o,this._width=l,this._height=r,this.dpr=t}get size(){return{width:this._width,height:this._height}}resize(o,l,r){this._width=o,this._height=l,r!==void 0&&(this.dpr=r)}setFill(o){this.ctx.fillStyle=o??"transparent"}setStroke(o){this.ctx.strokeStyle=o??"transparent"}setStrokeWidth(o){this.ctx.lineWidth=o}setOpacity(o){this.ctx.globalAlpha=o}setLineCap(o){this.ctx.lineCap=o}setLineJoin(o){this.ctx.lineJoin=o}setDashArray(o){this.ctx.setLineDash(o?[...o]:[])}setFont(o,l,r){let t=r?.style==="italic"?"italic ":"",s=r?.weight==="bold"?"bold ":"";this.ctx.font=`${t}${s}${l}px "${te(o)}", ${o}`}setTextAlign(o){this.ctx.textAlign=o==="center"?"center":o}setTextBaseline(o){this.ctx.textBaseline=o==="middle"?"middle":o==="top"?"top":"bottom"}save(){this.ctx.save()}restore(){this.ctx.restore()}translate(o,l){this.ctx.translate(o,l)}rotate(o){this.ctx.rotate(o)}scale(o,l){this.ctx.scale(o,l)}setTransform(o){let l=this.dpr;this.ctx.setTransform(l*o.a,l*o.b,l*o.c,l*o.d,l*o.e,l*o.f)}resetTransform(){this.ctx.setTransform(this.dpr,0,0,this.dpr,0,0)}beginPath(){this.ctx.beginPath()}closePath(){this.ctx.closePath()}moveTo(o,l){this.ctx.moveTo(o,l)}lineTo(o,l){this.ctx.lineTo(o,l)}quadraticCurveTo(o,l,r,t){this.ctx.quadraticCurveTo(o,l,r,t)}bezierCurveTo(o,l,r,t,s,i){this.ctx.bezierCurveTo(o,l,r,t,s,i)}rect(o,l,r,t){this.ctx.rect(o,l,r,t)}ellipse(o,l,r,t){this.ctx.ellipse(o,l,r,t,0,0,Math.PI*2)}fill(o){this.ctx.fill(o)}stroke(){this.ctx.stroke()}clip(o){this.ctx.clip(o)}fillText(o,l,r,t){t!==void 0?this.ctx.fillText(o,l,r,t):this.ctx.fillText(o,l,r)}measureText(o){return{width:this.ctx.measureText(o).width}}drawImage(o,l,r,t,s,i,a){if(!K(o)){ne(o);return}if(a&&(a.x!==0||a.y!==0||a.width!==1||a.height!==1)){let n=ae(o);if(n){this.ctx.drawImage(o,a.x*n.width,a.y*n.height,a.width*n.width,a.height*n.height,l,r,t,s);return}}this.ctx.drawImage(o,l,r,t,s)}clear(o){this.dirtyRect=null,o?this.ctx.clearRect(o.x,o.y,o.width,o.height):(this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.clearRect(0,0,this.ctx.canvas.width,this.ctx.canvas.height),this.ctx.restore())}dirtyRect=null;markDirty(o){if(!this.dirtyRect){this.dirtyRect=o;return}let l=Math.min(this.dirtyRect.x,o.x),r=Math.min(this.dirtyRect.y,o.y),t=Math.max(this.dirtyRect.x+this.dirtyRect.width,o.x+o.width),s=Math.max(this.dirtyRect.y+this.dirtyRect.height,o.y+o.height);this.dirtyRect={x:l,y:r,width:t-l,height:s-r}}getDirtyRect(){return this.dirtyRect}};var Bl=0,zl=1,Hl=2,Wl=3,Gl=4,jl=5,Ul=6,Kl=7,Xl=8,Yl=9,ql=10,Vl=11,Zl=12,$l=13,Jl=14,Ql=15,or=16,er=17,lr=18,rr=19,tr=20,ir=21,sr=22,ar=23,nr=24,cr=25,pr=26,dr=27,yr=28,fr=29,Ar=30,mr=31,ur=32,ce=-1,br=-1,gr=["butt","round","square"];var hr=["miter","round","bevel"];var xr=["left","center","right"];var _r=["top","middle","bottom"];var _0={nonzero:1,evenodd:2},pe={normal:1,bold:2},de={normal:1,italic:2},kr=0,ye=1;var fe=(e,o,l,r=new B(64))=>{let t=new Float64Array(o),s=0,i=()=>{let f=t[s++];if(f===void 0)throw new Error("replayPackedFrame: truncated stream");return f},a=f=>{let d=l[f];if(d===void 0)throw new Error(`replayPackedFrame: bad string index ${String(f)}`);return d},n=(f,d)=>{let p=f[d];if(p===void 0)throw new Error(`replayPackedFrame: bad enum code ${String(d)}`);return p};for(;s<t.length;){let f=i();switch(f){case Bl:{let d=i();e.setFill(d===ce?null:a(d));break}case zl:{let d=i();e.setStroke(d===ce?null:a(d));break}case Hl:e.setStrokeWidth(i());break;case Wl:e.setOpacity(i());break;case Gl:e.setLineCap(n(gr,i()));break;case jl:e.setLineJoin(n(hr,i()));break;case Ul:{let d=i();if(d===br)e.setDashArray(null);else{let p=[];for(let c=0;c<d;c++)p.push(i());e.setDashArray(p)}break}case Kl:{let d=a(i()),p=i();if(i()===kr){e.setFont(d,p);break}let c=i(),y=i(),A={};c===pe.normal?A.weight="normal":c===pe.bold&&(A.weight="bold"),y===de.normal?A.style="normal":y===de.italic&&(A.style="italic"),e.setFont(d,p,A);break}case Xl:e.setTextAlign(n(xr,i()));break;case Yl:e.setTextBaseline(n(_r,i()));break;case ql:e.save();break;case Vl:e.restore();break;case Zl:e.translate(i(),i());break;case $l:e.rotate(i());break;case Jl:e.scale(i(),i());break;case Ql:e.setTransform({a:i(),b:i(),c:i(),d:i(),e:i(),f:i()});break;case or:e.resetTransform();break;case er:e.beginPath();break;case lr:e.closePath();break;case rr:e.moveTo(i(),i());break;case tr:e.lineTo(i(),i());break;case ir:e.quadraticCurveTo(i(),i(),i(),i());break;case sr:e.bezierCurveTo(i(),i(),i(),i(),i(),i());break;case ar:e.rect(i(),i(),i(),i());break;case nr:e.ellipse(i(),i(),i(),i());break;case cr:{let d=i();d===_0.nonzero?e.fill("nonzero"):d===_0.evenodd?e.fill("evenodd"):e.fill();break}case pr:e.stroke();break;case ur:{let d=i();d===_0.nonzero?e.clip("nonzero"):d===_0.evenodd?e.clip("evenodd"):e.clip();break}case dr:{let d=a(i()),p=i(),c=i();i()===ye?e.fillText(d,p,c,i()):e.fillText(d,p,c);break}case yr:if(i()===ye){let d={x:i(),y:i(),width:i(),height:i()};e.clear(d)}else e.clear();break;case fr:e.markDirty?.({x:i(),y:i(),width:i(),height:i()});break;case Ar:i(),i();break;case mr:{let d=i(),p=i(),c=i(),y=i(),A=i(),m=r.get(d);m&&e.drawImage(m,p,c,y,A);break}default:throw new Error(`replayPackedFrame: unknown opcode ${String(f)}`)}}};var _={canvas:null,target:null,dpr:1,images:new B(64,(e,o)=>{o.close()})},Ae=!1,Er=()=>{Ae||(no(),Ae=!0)},z=(e,o)=>{o&&o.length>0?self.postMessage(e,o):self.postMessage(e)},wr=(e,o,l,r)=>{ie(self),_.canvas=e,_.dpr=r,e.width=Math.max(1,Math.round(o*r)),e.height=Math.max(1,Math.round(l*r));let t=e.getContext("2d");if(!t)throw new Error("OffscreenCanvas 2D context unavailable");t.setTransform(r,0,0,r,0,0),_.target=new x0(t,o,l,r),z({type:"ready"})},Tr=(e,o)=>{if(!_.canvas||!_.target)return;_.canvas.width=Math.max(1,Math.round(e*_.dpr)),_.canvas.height=Math.max(1,Math.round(o*_.dpr));let l=_.canvas.getContext("2d");l&&(l.setTransform(_.dpr,0,0,_.dpr,0,0),_.target.resize(e,o,_.dpr))},vr=e=>{if(!_.canvas||!_.target){z({type:"error",message:"Worker not initialised"});return}Er();let o=_.canvas.getContext("2d");if(o===null){z({type:"error",message:"Worker not initialised"});return}o.save(),o.setTransform(_.dpr,0,0,_.dpr,0,0),o.clearRect(0,0,_.target.size.width,_.target.size.height),co(e,_.target),o.restore();let l=_.canvas.transferToImageBitmap();z({type:"frame-done",bitmap:l},[l])},Rr=e=>{if(!_.target){z({type:"error",message:"Worker not initialised"});return}for(let{id:o,bitmap:l}of e.bitmaps){let r=_.images.get(o);r&&r!==l&&r.close(),_.images.set(o,l)}fe(_.target,e.buffer,e.strings,_.images)};self.addEventListener("message",e=>{let o=e.data;try{switch(o.type){case"init":wr(o.canvas,o.width,o.height,o.dpr);break;case"resize":Tr(o.width,o.height);break;case"snapshot":vr(o.scene);break;case"replay":Rr(o);break;case"frame":z({type:"error",message:"patch-stream frames not implemented"});break}}catch(l){z({type:"error",message:l instanceof Error?l.message:String(l)})}});
5
6
  //# sourceMappingURL=render-worker.js.map