kritzel-stencil 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/kritzel-active-users_42.cjs.entry.js +83 -30
- package/dist/cjs/{workspace.migrations-BPwtowiJ.js → workspace.migrations-B89-6fP-.js} +42 -8
- package/dist/collection/classes/core/core.class.js +9 -2
- package/dist/collection/classes/handlers/line-handle.handler.js +1 -0
- package/dist/collection/classes/handlers/move.handler.js +2 -0
- package/dist/collection/classes/handlers/resize.handler.js +2 -0
- package/dist/collection/classes/handlers/rotation.handler.js +2 -0
- package/dist/collection/classes/structures/object-map.structure.js +44 -3
- package/dist/collection/classes/tools/brush-tool.class.js +2 -0
- package/dist/collection/classes/tools/eraser-tool.class.js +22 -8
- package/dist/collection/classes/tools/line-tool.class.js +2 -0
- package/dist/collection/classes/tools/shape-tool.class.js +1 -0
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.css +5 -5
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +7 -0
- package/dist/collection/components/shared/kritzel-dialog/kritzel-dialog.css +3 -2
- package/dist/collection/components/shared/kritzel-dialog/kritzel-dialog.js +3 -2
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +7 -10
- package/dist/collection/components/ui/kritzel-current-user/kritzel-current-user.js +1 -1
- package/dist/collection/components/ui/kritzel-current-user-dialog/kritzel-current-user-dialog.js +1 -1
- package/dist/collection/components/ui/kritzel-export/kritzel-export.js +1 -1
- package/dist/collection/components/ui/kritzel-login-dialog/kritzel-login-dialog.js +1 -1
- package/dist/collection/components/ui/kritzel-more-menu/kritzel-more-menu.js +1 -1
- package/dist/collection/components/ui/kritzel-settings/kritzel-settings.js +1 -1
- package/dist/collection/components/ui/kritzel-share-dialog/kritzel-share-dialog.js +2 -2
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +1 -1
- package/dist/collection/constants/version.js +1 -1
- package/dist/collection/themes/dark-theme.js +4 -0
- package/dist/collection/themes/light-theme.js +4 -0
- package/dist/components/index.js +1 -1
- package/dist/components/kritzel-awareness-cursors.js +1 -1
- package/dist/components/kritzel-color-palette.js +1 -1
- package/dist/components/kritzel-color.js +1 -1
- package/dist/components/kritzel-controls.js +1 -1
- package/dist/components/kritzel-current-user-dialog.js +1 -1
- package/dist/components/kritzel-current-user.js +1 -1
- package/dist/components/kritzel-dialog.js +1 -1
- package/dist/components/kritzel-editor.js +1 -1
- package/dist/components/kritzel-engine.js +1 -1
- package/dist/components/kritzel-export.js +1 -1
- package/dist/components/kritzel-login-dialog.js +1 -1
- package/dist/components/kritzel-more-menu.js +1 -1
- package/dist/components/kritzel-settings.js +1 -1
- package/dist/components/kritzel-share-dialog.js +1 -1
- package/dist/components/kritzel-stroke-size.js +1 -1
- package/dist/components/kritzel-tool-config.js +1 -1
- package/dist/components/kritzel-utility-panel.js +1 -1
- package/dist/components/p-0F9_lw6l.js +1 -0
- package/dist/components/{p-DfB7uJ0N.js → p-3YivOJM2.js} +1 -1
- package/dist/components/p-B2dVTxsc.js +9 -0
- package/dist/components/{p-mYhFNPgz.js → p-BAjrJjMX.js} +1 -1
- package/dist/components/{p-R9M5PnAz.js → p-BDOSy6zd.js} +1 -1
- package/dist/components/{p-DE2xDwUM.js → p-BabNumqA.js} +1 -1
- package/dist/components/{p-574MVXxi.js → p-Be6E_RMf.js} +1 -1
- package/dist/components/{p-CoyqJSjT.js → p-BmYsz1bP.js} +1 -1
- package/dist/components/p-C-qyWv4d.js +1 -0
- package/dist/components/{p-BYOIzv_f.js → p-C1Fv9rVN.js} +1 -1
- package/dist/components/{p-Bfa-Amjn.js → p-C2MdRsg6.js} +1 -1
- package/dist/components/{p-u-827ZX7.js → p-CsMMZSAP.js} +1 -1
- package/dist/components/p-DMYfjC1C.js +1 -0
- package/dist/components/{p-Dxb22STM.js → p-DYHF_MSN.js} +1 -1
- package/dist/components/{p-BWrxz4mM.js → p-Dg_nGsFe.js} +1 -1
- package/dist/components/{p-BtJB7FsW.js → p-DoDI-v-H.js} +1 -1
- package/dist/components/p-Dqpa31TI.js +1 -0
- package/dist/components/p-R60vdaIY.js +1 -0
- package/dist/components/{p-CU6kJPth.js → p-ZpItdhxS.js} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/kritzel-active-users_42.entry.js +83 -30
- package/dist/esm/{workspace.migrations-C_uxbvuH.js → workspace.migrations-D_y5zlxK.js} +42 -8
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/p-74898384.entry.js +9 -0
- package/dist/stencil/p-D_y5zlxK.js +1 -0
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/types/classes/structures/object-map.structure.d.ts +19 -0
- package/dist/types/constants/version.d.ts +1 -1
- package/dist/types/interfaces/theme.interface.d.ts +5 -5
- package/package.json +1 -1
- package/dist/components/p-BCzbwL4m.js +0 -1
- package/dist/components/p-BfJav4Zz.js +0 -1
- package/dist/components/p-BmcAX-1k.js +0 -1
- package/dist/components/p-C6Td7I4k.js +0 -1
- package/dist/components/p-CqYIRmoh.js +0 -1
- package/dist/components/p-DFeyobdy.js +0 -9
- package/dist/stencil/p-4d28c496.entry.js +0 -9
- package/dist/stencil/p-C_uxbvuH.js +0 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{p as t,H as n,c as e,h as r,d as i,t as o}from"./p-BWj1eE2b.js";import{K as s}from"./p-D8W6LE-c.js";import{m as a,n as c,a as u,o as h,p as l,k as f,j as d,q as p,h as v,g,e as w,f as y,d as m,b,c as k,K as A,i as x,l as $}from"./p-Dqpa31TI.js";import{K as S,W as M}from"./p-DhMlShij.js";import{a as j,b as C,c as z,K as I}from"./p-CsMMZSAP.js";import{K as T,d as E}from"./p-BvgGpgKP.js";import{O as _}from"./p-BAN5dnHX.js";import*as O from"yjs";import{IndexeddbPersistence as P}from"y-indexeddb";import{a as B,C as U}from"./p-CW-VyJgK.js";import{K as W,d as R}from"./p-A7Ult9iv.js";import{K as L,a as D}from"./p-C-qyWv4d.js";import{K as F}from"./p-jGOpkGDl.js";import{d as K}from"./p-Be6E_RMf.js";import{d as V}from"./p-DXO_ppUK.js";var N="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};class H extends a{touchStartTimeout=null;constructor(t){super(t)}handlePointerDown(t){"mouse"===t.pointerType&&c.isLeftClick(t)&&(this._core.store.state.isErasing=!0),"touch"!==t.pointerType&&"pen"!==t.pointerType||(this.touchStartTimeout=setTimeout((()=>{1!==this._core.store.state.pointers.size||this._core.store.state.isScaling||(this._core.store.state.isErasing=!0)}),80))}handlePointerMove(t){if("mouse"===t.pointerType&&this._core.store.state.isErasing){const n=this._core.getObjectsFromPointerEvent(t,".object");if(0===n.length)return;const e=this._core.store.state.pointerX,r=this._core.store.state.pointerY;n.forEach((t=>{t.markedForRemoval=t.hitTest(e,r)})),this._core.rerender()}if(("touch"===t.pointerType||"pen"===t.pointerType)&&1===this._core.store.state.pointers.size&&this._core.store.state.isErasing){const n=this._core.store.state.host?.shadowRoot;if(!n)return;const e=this._core.getObjectsFromPointerEvent(t,".object");if(0===e.length)return;const r=this._core.store.state.pointerX,i=this._core.store.state.pointerY;e.forEach((t=>{t.markedForRemoval=t.hitTest(r,i)})),this._core.rerender()}}handlePointerUp(t){if("mouse"===t.pointerType&&this._core.store.state.isErasing){const t=this._core.store.allObjects.filter((t=>t.markedForRemoval));t.length>0&&(this._core.store.objects.stopUndoCapturing(),this._core.store.objects.transaction((()=>{t.forEach((t=>{t.markedForRemoval=!1,this._core.removeObject(t)}))})),this._core.rerender()),this._core.store.state.isErasing=!1,this._core.engine.emitObjectsChange(),t.length>0&&(this._core.engine.emitObjectsRemoved(t),this._core.store.objects.stopUndoCapturing())}if(("touch"===t.pointerType||"pen"===t.pointerType)&&(clearTimeout(this.touchStartTimeout),this._core.store.state.isErasing)){const t=this._core.store.allObjects.filter((t=>t.markedForRemoval));t.length>0&&(this._core.store.objects.stopUndoCapturing(),this._core.store.objects.transaction((()=>{t.forEach((t=>{t.markedForRemoval=!1,this._core.removeObject(t)}))})),this._core.rerender()),this._core.store.state.isErasing=!1,this._core.engine.emitObjectsChange(),t.length>0&&(this._core.engine.emitObjectsRemoved(t),this._core.store.objects.stopUndoCapturing())}}}function X(t,n){return new Promise((function(e,r){let i;return G(t).then((function(t){try{return i=t,e(new Blob([n.slice(0,2),i,n.slice(2)],{type:"image/jpeg"}))}catch(t){return r(t)}}),r)}))}const G=t=>new Promise(((n,e)=>{const r=new FileReader;r.addEventListener("load",(({target:{result:t}})=>{const r=new DataView(t);let i=0;if(65496!==r.getUint16(i))return e("not a valid JPEG");for(i+=2;;){const o=r.getUint16(i);if(65498===o)break;const s=r.getUint16(i+2);if(65505===o&&1165519206===r.getUint32(i+4)){const o=i+10;let a;switch(r.getUint16(o)){case 18761:a=!0;break;case 19789:a=!1;break;default:return e("TIFF header contains invalid endian")}if(42!==r.getUint16(o+2,a))return e("TIFF header contains invalid version");const c=r.getUint32(o+4,a),u=o+c+2+12*r.getUint16(o+c,a);for(let t=o+c+2;t<u;t+=12)if(274==r.getUint16(t,a)){if(3!==r.getUint16(t+2,a))return e("Orientation data type is invalid");if(1!==r.getUint32(t+4,a))return e("Orientation data count is invalid");r.setUint16(t+8,1,a);break}return n(t.slice(i,i+2+s))}i+=2+s}return n(new Blob)})),r.readAsArrayBuffer(t)}));var Y={},Q={get exports(){return Y},set exports(t){Y=t}};!function(){var t,n,e={};Q.exports=e,e.parse=function(t,n){for(var r=e.bin.readUshort,i=e.bin.readUint,o=0,s={},a=new Uint8Array(t),c=a.length-4;101010256!=i(a,c);)c--;o=c,o+=4;var u=r(a,o+=4);r(a,o+=2);var h=i(a,o+=2),l=i(a,o+=4);o+=4,o=l;for(var f=0;f<u;f++){i(a,o),o+=4,o+=4,o+=4,i(a,o+=4),h=i(a,o+=4);var d=i(a,o+=4),p=r(a,o+=4),v=r(a,o+2),g=r(a,o+4);o+=6;var w=i(a,o+=8);o+=4,o+=p+v+g,e._readLocal(a,w,s,h,d,n)}return s},e._readLocal=function(t,n,r,i,o,s){var a=e.bin.readUshort,c=e.bin.readUint;c(t,n),a(t,n+=4),a(t,n+=2);var u=a(t,n+=2);c(t,n+=2),c(t,n+=4),n+=4;var h=a(t,n+=8),l=a(t,n+=2),f=e.bin.readUTF8(t,n+=2,h);if(n+=h,n+=l,s)r[f]={size:o,csize:i};else{var d=new Uint8Array(t.buffer,n);if(0==u)r[f]=new Uint8Array(d.buffer.slice(n,n+i));else{if(8!=u)throw"unknown compression method: "+u;var p=new Uint8Array(o);e.inflateRaw(d,p),r[f]=p}}},e.inflateRaw=function(t,n){return e.F.inflate(t,n)},e.inflate=function(t,n){return e.inflateRaw(new Uint8Array(t.buffer,t.byteOffset+2,t.length-6),n)},e.deflate=function(t,n){null==n&&(n={level:6});var r=0,i=new Uint8Array(50+Math.floor(1.1*t.length));i[r]=120,i[r+1]=156,r=e.F.deflateRaw(t,i,r+=2,n.level);var o=e.adler(t,0,t.length);return i[r+0]=o>>>24&255,i[r+1]=o>>>16&255,i[r+2]=o>>>8&255,i[r+3]=o>>>0&255,new Uint8Array(i.buffer,0,r+4)},e.deflateRaw=function(t,n){null==n&&(n={level:6});var r=new Uint8Array(50+Math.floor(1.1*t.length)),i=e.F.deflateRaw(t,r,i,n.level);return new Uint8Array(r.buffer,0,i)},e.encode=function(t,n){null==n&&(n=!1);var r=0,i=e.bin.writeUint,o=e.bin.writeUshort,s={};for(var a in t){var c=!e._noNeed(a)&&!n,u=t[a],h=e.crc.crc(u,0,u.length);s[a]={cpr:c,usize:u.length,crc:h,file:c?e.deflateRaw(u):u}}for(var a in s)r+=s[a].file.length+30+46+2*e.bin.sizeUTF8(a);r+=22;var l=new Uint8Array(r),f=0,d=[];for(var a in s){var p=s[a];d.push(f),f=e._writeHeader(l,f,a,p,0)}var v=0,g=f;for(var a in s)p=s[a],d.push(f),f=e._writeHeader(l,f,a,p,1,d[v++]);var w=f-g;return i(l,f,101010256),f+=4,o(l,f+=4,v),o(l,f+=2,v),i(l,f+=2,w),i(l,f+=4,g),f+=4,f+=2,l.buffer},e._noNeed=function(t){var n=t.split(".").pop().toLowerCase();return-1!="png,jpg,jpeg,zip".indexOf(n)},e._writeHeader=function(t,n,r,i,o,s){var a=e.bin.writeUint,c=e.bin.writeUshort,u=i.file;return a(t,n,0==o?67324752:33639248),n+=4,1==o&&(n+=2),c(t,n,20),c(t,n+=2,0),c(t,n+=2,i.cpr?8:0),a(t,n+=2,0),a(t,n+=4,i.crc),a(t,n+=4,u.length),a(t,n+=4,i.usize),c(t,n+=4,e.bin.sizeUTF8(r)),c(t,n+=2,0),n+=2,1==o&&(n+=2,n+=2,a(t,n+=6,s),n+=4),n+=e.bin.writeUTF8(t,n,r),0==o&&(t.set(u,n),n+=u.length),n},e.crc={table:function(){for(var t=new Uint32Array(256),n=0;n<256;n++){for(var e=n,r=0;r<8;r++)1&e?e=3988292384^e>>>1:e>>>=1;t[n]=e}return t}(),update:function(t,n,r,i){for(var o=0;o<i;o++)t=e.crc.table[255&(t^n[r+o])]^t>>>8;return t},crc:function(t,n,r){return 4294967295^e.crc.update(4294967295,t,n,r)}},e.adler=function(t,n,e){for(var r=1,i=0,o=n,s=n+e;o<s;){for(var a=Math.min(o+5552,s);o<a;)i+=r+=t[o++];r%=65521,i%=65521}return i<<16|r},e.bin={readUshort:function(t,n){return t[n]|t[n+1]<<8},writeUshort:function(t,n,e){t[n]=255&e,t[n+1]=e>>8&255},readUint:function(t,n){return 16777216*t[n+3]+(t[n+2]<<16|t[n+1]<<8|t[n])},writeUint:function(t,n,e){t[n]=255&e,t[n+1]=e>>8&255,t[n+2]=e>>16&255,t[n+3]=e>>24&255},readASCII:function(t,n,e){for(var r="",i=0;i<e;i++)r+=String.fromCharCode(t[n+i]);return r},writeASCII:function(t,n,e){for(var r=0;r<e.length;r++)t[n+r]=e.charCodeAt(r)},pad:function(t){return t.length<2?"0"+t:t},readUTF8:function(t,n,r){for(var i,o="",s=0;s<r;s++)o+="%"+e.bin.pad(t[n+s].toString(16));try{i=decodeURIComponent(o)}catch(i){return e.bin.readASCII(t,n,r)}return i},writeUTF8:function(t,n,e){for(var r=e.length,i=0,o=0;o<r;o++){var s=e.charCodeAt(o);if(4294967168&s)if(4294965248&s)if(4294901760&s){if(4292870144&s)throw"e";t[n+i]=240|s>>18,t[n+i+1]=128|s>>12&63,t[n+i+2]=128|s>>6&63,t[n+i+3]=128|63&s,i+=4}else t[n+i]=224|s>>12,t[n+i+1]=128|s>>6&63,t[n+i+2]=128|63&s,i+=3;else t[n+i]=192|s>>6,t[n+i+1]=128|63&s,i+=2;else t[n+i]=s,i++}return i},sizeUTF8:function(t){for(var n=t.length,e=0,r=0;r<n;r++){var i=t.charCodeAt(r);if(4294967168&i)if(4294965248&i)if(4294901760&i){if(4292870144&i)throw"e";e+=4}else e+=3;else e+=2;else e++}return e}},e.F={},e.F.deflateRaw=function(t,n,r,i){var o=[[0,0,0,0,0],[4,4,8,4,0],[4,5,16,8,0],[4,6,16,16,0],[4,10,16,32,0],[8,16,32,32,0],[8,16,128,128,0],[8,32,128,256,0],[32,128,258,1024,1],[32,258,258,4096,1]][i],s=e.F.U,a=e.F._goodIndex,c=e.F._putsE,u=0,h=r<<3,l=0,f=t.length;if(0==i){for(;u<f;)c(n,h,u+($=Math.min(65535,f-u))==f?1:0),h=e.F._copyExact(t,u,$,n,h+8),u+=$;return h>>>3}var d=s.lits,p=s.strt,v=s.prev,g=0,w=0,y=0,m=0,b=0,k=0;for(f>2&&(p[k=e.F._hash(t,0)]=0),u=0;u<f;u++){if(b=k,u+1<f-2){k=e.F._hash(t,u+1);var A=u+1&32767;v[A]=p[k],p[k]=A}if(l<=u){(g>14e3||w>26697)&&f-u>100&&(l<u&&(d[g]=u-l,g+=2,l=u),h=e.F._writeBlock(u==f-1||l==f?1:0,d,g,m,t,y,u-y,n,h),g=w=m=0,y=u);var x=0;u<f-2&&(x=e.F._bestMatch(t,u,v,b,Math.min(o[2],f-u),o[3]));var $=x>>>16,S=65535&x;if(0!=x){S=65535&x;var M=a($=x>>>16,s.of0);s.lhst[257+M]++;var j=a(S,s.df0);s.dhst[j]++,m+=s.exb[M]+s.dxb[j],d[g]=$<<23|u-l,d[g+1]=S<<16|M<<8|j,g+=2,l=u+$}else s.lhst[t[u]]++;w++}}for(y==u&&0!=t.length||(l<u&&(d[g]=u-l,g+=2,l=u),h=e.F._writeBlock(1,d,g,m,t,y,u-y,n,h),g=0,w=0,g=w=m=0,y=u);7&h;)h++;return h>>>3},e.F._bestMatch=function(t,n,r,i,o,s){var a=32767&n,c=r[a],u=a-c+32768&32767;if(c==a||i!=e.F._hash(t,n-u))return 0;for(var h=0,l=0,f=Math.min(32767,n);u<=f&&0!=--s&&c!=a;){if(0==h||t[n+h]==t[n+h-u]){var d=e.F._howLong(t,n,u);if(d>h){if(l=u,(h=d)>=o)break;u+2<d&&(d=u+2);for(var p=0,v=0;v<d-2;v++){var g=n-u+v+32768&32767,w=g-r[g]+32768&32767;w>p&&(p=w,c=g)}}}u+=(a=c)-(c=r[a])+32768&32767}return h<<16|l},e.F._howLong=function(t,n,e){if(t[n]!=t[n-e]||t[n+1]!=t[n+1-e]||t[n+2]!=t[n+2-e])return 0;var r=n,i=Math.min(t.length,n+258);for(n+=3;n<i&&t[n]==t[n-e];)n++;return n-r},e.F._hash=function(t,n){return(t[n]<<8|t[n+1])+(t[n+2]<<4)&65535},e.saved=0,e.F._writeBlock=function(t,n,r,i,o,s,a,c,u){var h,l,f,d,p,v,g,w,y,m=e.F.U,b=e.F._putsF,k=e.F._putsE;m.lhst[256]++,l=(h=e.F.getTrees())[0],f=h[1],d=h[2],p=h[3],v=h[4],g=h[5],w=h[6],y=h[7];var A=32+(u+3&7?8-(u+3&7):0)+(a<<3),x=i+e.F.contSize(m.fltree,m.lhst)+e.F.contSize(m.fdtree,m.dhst),$=i+e.F.contSize(m.ltree,m.lhst)+e.F.contSize(m.dtree,m.dhst);$+=14+3*g+e.F.contSize(m.itree,m.ihst)+(2*m.ihst[16]+3*m.ihst[17]+7*m.ihst[18]);for(var S=0;S<286;S++)m.lhst[S]=0;for(S=0;S<30;S++)m.dhst[S]=0;for(S=0;S<19;S++)m.ihst[S]=0;var M=A<x&&A<$?0:x<$?1:2;if(b(c,u,t),b(c,u+1,M),u+=3,0==M){for(;7&u;)u++;u=e.F._copyExact(o,s,a,c,u)}else{var j,C;if(1==M&&(j=m.fltree,C=m.fdtree),2==M){e.F.makeCodes(m.ltree,l),e.F.revCodes(m.ltree,l),e.F.makeCodes(m.dtree,f),e.F.revCodes(m.dtree,f),e.F.makeCodes(m.itree,d),e.F.revCodes(m.itree,d),j=m.ltree,C=m.dtree,k(c,u,p-257),k(c,u+=5,v-1),k(c,u+=5,g-4),u+=4;for(var z=0;z<g;z++)k(c,u+3*z,m.itree[1+(m.ordr[z]<<1)]);u=e.F._codeTiny(w,m.itree,c,u+=3*g),u=e.F._codeTiny(y,m.itree,c,u)}for(var I=s,T=0;T<r;T+=2){for(var E=n[T],_=E>>>23,O=I+(8388607&E);I<O;)u=e.F._writeLit(o[I++],j,c,u);if(0!=_){var P=n[T+1],B=P>>16,U=P>>8&255,W=255&P;k(c,u=e.F._writeLit(257+U,j,c,u),_-m.of0[U]),b(c,u=e.F._writeLit(W,C,c,u+=m.exb[U]),B-m.df0[W]),u+=m.dxb[W],I+=_}}u=e.F._writeLit(256,j,c,u)}return u},e.F._copyExact=function(t,n,e,r,i){var o=i>>>3;return r[o]=e,r[o+1]=e>>>8,r[o+2]=255-r[o],r[o+3]=255-r[o+1],o+=4,r.set(new Uint8Array(t.buffer,n,e),o),i+(e+4<<3)},e.F.getTrees=function(){for(var t=e.F.U,n=e.F._hufTree(t.lhst,t.ltree,15),r=e.F._hufTree(t.dhst,t.dtree,15),i=[],o=e.F._lenCodes(t.ltree,i),s=[],a=e.F._lenCodes(t.dtree,s),c=0;c<i.length;c+=2)t.ihst[i[c]]++;for(c=0;c<s.length;c+=2)t.ihst[s[c]]++;for(var u=e.F._hufTree(t.ihst,t.itree,7),h=19;h>4&&0==t.itree[1+(t.ordr[h-1]<<1)];)h--;return[n,r,u,o,a,h,i,s]},e.F.getSecond=function(t){for(var n=[],e=0;e<t.length;e+=2)n.push(t[e+1]);return n},e.F.nonZero=function(t){for(var n="",e=0;e<t.length;e+=2)0!=t[e+1]&&(n+=(e>>1)+",");return n},e.F.contSize=function(t,n){for(var e=0,r=0;r<n.length;r++)e+=n[r]*t[1+(r<<1)];return e},e.F._codeTiny=function(t,n,r,i){for(var o=0;o<t.length;o+=2){var s=t[o],a=t[o+1];i=e.F._writeLit(s,n,r,i);var c=16==s?2:17==s?3:7;s>15&&(e.F._putsE(r,i,a,c),i+=c)}return i},e.F._lenCodes=function(t,n){for(var e=t.length;2!=e&&0==t[e-1];)e-=2;for(var r=0;r<e;r+=2){var i=t[r+1],o=r+3<e?t[r+3]:-1,s=r+5<e?t[r+5]:-1,a=0==r?-1:t[r-1];if(0==i&&o==i&&s==i){for(var c=r+5;c+2<e&&t[c+2]==i;)c+=2;(u=Math.min(c+1-r>>>1,138))<11?n.push(17,u-3):n.push(18,u-11),r+=2*u-2}else if(i==a&&o==i&&s==i){for(c=r+5;c+2<e&&t[c+2]==i;)c+=2;var u=Math.min(c+1-r>>>1,6);n.push(16,u-3),r+=2*u-2}else n.push(i,0)}return e>>>1},e.F._hufTree=function(t,n,r){var i=[],o=t.length,s=n.length,a=0;for(a=0;a<s;a+=2)n[a]=0,n[a+1]=0;for(a=0;a<o;a++)0!=t[a]&&i.push({lit:a,f:t[a]});var c=i.length,u=i.slice(0);if(0==c)return 0;if(1==c){var h=i[0].lit;return u=0==h?1:0,n[1+(h<<1)]=1,n[1+(u<<1)]=1,1}i.sort((function(t,n){return t.f-n.f}));var l=i[0],f=i[1],d=0,p=1,v=2;for(i[0]={lit:-1,f:l.f+f.f,l,r:f,d:0};p!=c-1;)l=d!=p&&(v==c||i[d].f<i[v].f)?i[d++]:i[v++],f=d!=p&&(v==c||i[d].f<i[v].f)?i[d++]:i[v++],i[p++]={lit:-1,f:l.f+f.f,l,r:f};var g=e.F.setDepth(i[p-1],0);for(g>r&&(e.F.restrictDepth(u,r,g),g=r),a=0;a<c;a++)n[1+(u[a].lit<<1)]=u[a].d;return g},e.F.setDepth=function(t,n){return-1!=t.lit?(t.d=n,n):Math.max(e.F.setDepth(t.l,n+1),e.F.setDepth(t.r,n+1))},e.F.restrictDepth=function(t,n,e){var r=0,i=1<<e-n,o=0;for(t.sort((function(t,n){return n.d==t.d?t.f-n.f:n.d-t.d})),r=0;r<t.length&&t[r].d>n;r++){var s=t[r].d;t[r].d=n,o+=i-(1<<e-s)}for(o>>>=e-n;o>0;)(s=t[r].d)<n?(t[r].d++,o-=1<<n-s-1):r++;for(;r>=0;r--)t[r].d==n&&o<0&&(t[r].d--,o++);0!=o&&console.log("debt left")},e.F._goodIndex=function(t,n){var e=0;return n[16|e]<=t&&(e|=16),n[8|e]<=t&&(e|=8),n[4|e]<=t&&(e|=4),n[2|e]<=t&&(e|=2),n[1|e]<=t&&(e|=1),e},e.F._writeLit=function(t,n,r,i){return e.F._putsF(r,i,n[t<<1]),i+n[1+(t<<1)]},e.F.inflate=function(t,n){var r=Uint8Array;if(3==t[0]&&0==t[1])return n||new r(0);var i=e.F,o=i._bitsF,s=i._bitsE,a=i._decodeTiny,c=i.makeCodes,u=i.codes2map,h=i._get17,l=i.U,f=null==n;f&&(n=new r(t.length>>>2<<3));for(var d,p,v=0,g=0,w=0,y=0,m=0,b=0,k=0,A=0,x=0;0==v;)if(v=o(t,x,1),g=o(t,x+1,2),x+=3,0!=g){if(f&&(n=e.F._check(n,A+(1<<17))),1==g&&(d=l.flmap,p=l.fdmap,b=511,k=31),2==g){w=s(t,x,5)+257,y=s(t,x+5,5)+1,m=s(t,x+10,4)+4,x+=14;for(var $=0;$<38;$+=2)l.itree[$]=0,l.itree[$+1]=0;var S=1;for($=0;$<m;$++){var M=s(t,x+3*$,3);l.itree[1+(l.ordr[$]<<1)]=M,M>S&&(S=M)}x+=3*m,c(l.itree,S),u(l.itree,S,l.imap),d=l.lmap,p=l.dmap,x=a(l.imap,(1<<S)-1,w+y,t,x,l.ttree);var j=i._copyOut(l.ttree,0,w,l.ltree);b=(1<<j)-1;var C=i._copyOut(l.ttree,w,y,l.dtree);k=(1<<C)-1,c(l.ltree,j),u(l.ltree,j,d),c(l.dtree,C),u(l.dtree,C,p)}for(;;){var z=d[h(t,x)&b];x+=15&z;var I=z>>>4;if(I>>>8==0)n[A++]=I;else{if(256==I)break;var T=A+I-254;if(I>264){var E=l.ldef[I-257];T=A+(E>>>3)+s(t,x,7&E),x+=7&E}var _=p[h(t,x)&k],O=l.ddef[_>>>4],P=(O>>>4)+o(t,x+=15&_,15&O);for(x+=15&O,f&&(n=e.F._check(n,A+(1<<17)));A<T;)n[A]=n[A++-P],n[A]=n[A++-P],n[A]=n[A++-P],n[A]=n[A++-P];A=T}}}else{7&x&&(x+=8-(7&x));var B=4+(x>>>3),U=t[B-4]|t[B-3]<<8;f&&(n=e.F._check(n,A+U)),n.set(new r(t.buffer,t.byteOffset+B,U),A),x=B+U<<3,A+=U}return n.length==A?n:n.slice(0,A)},e.F._check=function(t,n){var e=t.length;if(n<=e)return t;var r=new Uint8Array(Math.max(e<<1,n));return r.set(t,0),r},e.F._decodeTiny=function(t,n,r,i,o,s){for(var a=e.F._bitsE,c=e.F._get17,u=0;u<r;){var h=t[c(i,o)&n];o+=15&h;var l=h>>>4;if(l<=15)s[u]=l,u++;else{var f=0,d=0;16==l?(d=3+a(i,o,2),o+=2,f=s[u-1]):17==l?(d=3+a(i,o,3),o+=3):18==l&&(d=11+a(i,o,7),o+=7);for(var p=u+d;u<p;)s[u]=f,u++}}return o},e.F._copyOut=function(t,n,e,r){for(var i=0,o=0,s=r.length>>>1;o<e;){var a=t[o+n];r[o<<1]=0,r[1+(o<<1)]=a,a>i&&(i=a),o++}for(;o<s;)r[o<<1]=0,r[1+(o<<1)]=0,o++;return i},e.F.makeCodes=function(t,n){for(var r,i,o,s,a=e.F.U,c=t.length,u=a.bl_count,h=0;h<=n;h++)u[h]=0;for(h=1;h<c;h+=2)u[t[h]]++;var l=a.next_code;for(r=0,u[0]=0,i=1;i<=n;i++)l[i]=r=r+u[i-1]<<1;for(o=0;o<c;o+=2)0!=(s=t[o+1])&&(t[o]=l[s],l[s]++)},e.F.codes2map=function(t,n,r){for(var i=t.length,o=e.F.U.rev15,s=0;s<i;s+=2)if(0!=t[s+1])for(var a=t[s+1],c=s>>1<<4|a,u=n-a,h=t[s]<<u,l=h+(1<<u);h!=l;)r[o[h]>>>15-n]=c,h++},e.F.revCodes=function(t,n){for(var r=e.F.U.rev15,i=15-n,o=0;o<t.length;o+=2)t[o]=r[t[o]<<n-t[o+1]]>>>i},e.F._putsE=function(t,n,e){var r=n>>>3;t[r]|=e<<=7&n,t[r+1]|=e>>>8},e.F._putsF=function(t,n,e){var r=n>>>3;t[r]|=e<<=7&n,t[r+1]|=e>>>8,t[r+2]|=e>>>16},e.F._bitsE=function(t,n,e){return(t[n>>>3]|t[1+(n>>>3)]<<8)>>>(7&n)&(1<<e)-1},e.F._bitsF=function(t,n,e){return(t[n>>>3]|t[1+(n>>>3)]<<8|t[2+(n>>>3)]<<16)>>>(7&n)&(1<<e)-1},e.F._get17=function(t,n){return(t[n>>>3]|t[1+(n>>>3)]<<8|t[2+(n>>>3)]<<16)>>>(7&n)},e.F._get25=function(t,n){return(t[n>>>3]|t[1+(n>>>3)]<<8|t[2+(n>>>3)]<<16|t[3+(n>>>3)]<<24)>>>(7&n)},e.F.U=(t=Uint16Array,n=Uint32Array,{next_code:new t(16),bl_count:new t(16),ordr:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],of0:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],exb:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],ldef:new t(32),df0:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],dxb:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],ddef:new n(32),flmap:new t(512),fltree:[],fdmap:new t(32),fdtree:[],lmap:new t(32768),ltree:[],ttree:[],dmap:new t(32768),dtree:[],imap:new t(512),itree:[],rev15:new t(32768),lhst:new n(286),dhst:new n(30),ihst:new n(19),lits:new n(15e3),strt:new t(65536),prev:new t(32768)}),function(){for(var t=e.F.U,n=0;n<32768;n++){var r=n;r=(4278255360&(r=(4042322160&(r=(3435973836&(r=(2863311530&r)>>>1|(1431655765&r)<<1))>>>2|(858993459&r)<<2))>>>4|(252645135&r)<<4))>>>8|(16711935&r)<<8,t.rev15[n]=(r>>>16|r<<16)>>>17}function i(t,n,e){for(;0!=n--;)t.push(0,e)}for(n=0;n<32;n++)t.ldef[n]=t.of0[n]<<3|t.exb[n],t.ddef[n]=t.df0[n]<<4|t.dxb[n];i(t.fltree,144,8),i(t.fltree,112,9),i(t.fltree,24,7),i(t.fltree,8,8),e.F.makeCodes(t.fltree,9),e.F.codes2map(t.fltree,9,t.flmap),e.F.revCodes(t.fltree,9),i(t.fdtree,32,5),e.F.makeCodes(t.fdtree,5),e.F.codes2map(t.fdtree,5,t.fdmap),e.F.revCodes(t.fdtree,5),i(t.itree,19,0),i(t.ltree,286,0),i(t.dtree,30,0),i(t.ttree,320,0)}()}();var q=function(t,n){return n.forEach((function(n){n&&"string"!=typeof n&&!Array.isArray(n)&&Object.keys(n).forEach((function(e){if("default"!==e&&!(e in t)){var r=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(t,e,r.get?r:{enumerable:!0,get:function(){return n[e]}})}}))})),Object.freeze(t)}({__proto__:null,default:Y},[Y]);const Z=function(){var t={nextZero(t,n){for(;0!=t[n];)n++;return n},readUshort:(t,n)=>t[n]<<8|t[n+1],writeUshort(t,n,e){t[n]=e>>8&255,t[n+1]=255&e},readUint:(t,n)=>16777216*t[n]+(t[n+1]<<16|t[n+2]<<8|t[n+3]),writeUint(t,n,e){t[n]=e>>24&255,t[n+1]=e>>16&255,t[n+2]=e>>8&255,t[n+3]=255&e},readASCII(t,n,e){let r="";for(let i=0;i<e;i++)r+=String.fromCharCode(t[n+i]);return r},writeASCII(t,n,e){for(let r=0;r<e.length;r++)t[n+r]=e.charCodeAt(r)},readBytes(t,n,e){const r=[];for(let i=0;i<e;i++)r.push(t[n+i]);return r},pad:t=>t.length<2?`0${t}`:t,readUTF8(n,e,r){let i,o="";for(let i=0;i<r;i++)o+=`%${t.pad(n[e+i].toString(16))}`;try{i=decodeURIComponent(o)}catch(i){return t.readASCII(n,e,r)}return i}};function n(n,e,r,i){const s=e*r,a=o(i),c=Math.ceil(e*a/8),u=new Uint8Array(4*s),h=new Uint32Array(u.buffer),{ctype:l}=i,{depth:f}=i,d=t.readUshort;if(6==l){const t=s<<2;if(8==f)for(var p=0;p<t;p+=4)u[p]=n[p],u[p+1]=n[p+1],u[p+2]=n[p+2],u[p+3]=n[p+3];if(16==f)for(p=0;p<t;p++)u[p]=n[p<<1]}else if(2==l){const t=i.tabs.tRNS;if(null==t){if(8==f)for(p=0;p<s;p++){var v=3*p;h[p]=255<<24|n[v+2]<<16|n[v+1]<<8|n[v]}if(16==f)for(p=0;p<s;p++)h[p]=255<<24|n[4+(v=6*p)]<<16|n[v+2]<<8|n[v]}else{var g=t[0];const e=t[1],r=t[2];if(8==f)for(p=0;p<s;p++){var w=p<<2;h[p]=255<<24|n[2+(v=3*p)]<<16|n[v+1]<<8|n[v],n[v]==g&&n[v+1]==e&&n[v+2]==r&&(u[w+3]=0)}if(16==f)for(p=0;p<s;p++)w=p<<2,h[p]=255<<24|n[4+(v=6*p)]<<16|n[v+2]<<8|n[v],d(n,v)==g&&d(n,v+2)==e&&d(n,v+4)==r&&(u[w+3]=0)}}else if(3==l){const t=i.tabs.PLTE,o=i.tabs.tRNS,a=o?o.length:0;if(1==f)for(var y=0;y<r;y++){var m=y*c,b=y*e;for(p=0;p<e;p++){var k=3*(A=n[m+(p>>3)]>>7-(7&p)&1);u[w=b+p<<2]=t[k],u[w+1]=t[k+1],u[w+2]=t[k+2],u[w+3]=A<a?o[A]:255}}if(2==f)for(y=0;y<r;y++)for(m=y*c,b=y*e,p=0;p<e;p++)k=3*(A=n[m+(p>>2)]>>6-((3&p)<<1)&3),u[w=b+p<<2]=t[k],u[w+1]=t[k+1],u[w+2]=t[k+2],u[w+3]=A<a?o[A]:255;if(4==f)for(y=0;y<r;y++)for(m=y*c,b=y*e,p=0;p<e;p++)k=3*(A=n[m+(p>>1)]>>4-((1&p)<<2)&15),u[w=b+p<<2]=t[k],u[w+1]=t[k+1],u[w+2]=t[k+2],u[w+3]=A<a?o[A]:255;if(8==f)for(p=0;p<s;p++){var A;k=3*(A=n[p]),u[w=p<<2]=t[k],u[w+1]=t[k+1],u[w+2]=t[k+2],u[w+3]=A<a?o[A]:255}}else if(4==l){if(8==f)for(p=0;p<s;p++){var x=n[$=p<<1];u[w=p<<2]=x,u[w+1]=x,u[w+2]=x,u[w+3]=n[$+1]}if(16==f)for(p=0;p<s;p++){var $;x=n[$=p<<2],u[w=p<<2]=x,u[w+1]=x,u[w+2]=x,u[w+3]=n[$+2]}}else if(0==l)for(g=i.tabs.tRNS?i.tabs.tRNS:-1,y=0;y<r;y++){const t=y*c,r=y*e;if(1==f)for(var S=0;S<e;S++){var M=(x=255*(n[t+(S>>>3)]>>>7-(7&S)&1))==255*g?0:255;h[r+S]=M<<24|x<<16|x<<8|x}else if(2==f)for(S=0;S<e;S++)M=(x=85*(n[t+(S>>>2)]>>>6-((3&S)<<1)&3))==85*g?0:255,h[r+S]=M<<24|x<<16|x<<8|x;else if(4==f)for(S=0;S<e;S++)M=(x=17*(n[t+(S>>>1)]>>>4-((1&S)<<2)&15))==17*g?0:255,h[r+S]=M<<24|x<<16|x<<8|x;else if(8==f)for(S=0;S<e;S++)M=(x=n[t+S])==g?0:255,h[r+S]=M<<24|x<<16|x<<8|x;else if(16==f)for(S=0;S<e;S++)x=n[t+(S<<1)],M=d(n,t+(S<<1))==g?0:255,h[r+S]=M<<24|x<<16|x<<8|x}return u}function e(t,n,e,a){const c=o(t),u=Math.ceil(e*c/8),h=new Uint8Array((u+1+t.interlace)*a);return n=t.tabs.CgBI?i(n,h):r(n,h),0==t.interlace?n=s(n,t,0,e,a):1==t.interlace&&(n=function(t,n){const e=n.width,r=n.height,i=o(n),a=i>>3,c=Math.ceil(e*i/8),u=new Uint8Array(r*c);let h=0;const l=[0,0,4,0,2,0,1],f=[0,4,0,2,0,1,0],d=[8,8,8,4,4,2,2],p=[8,8,4,4,2,2,1];let v=0;for(;v<7;){const o=d[v],w=p[v];let y=0,m=0,b=l[v];for(;b<r;)b+=o,m++;let k=f[v];for(;k<e;)k+=w,y++;const A=Math.ceil(y*i/8);s(t,n,h,y,m);let x=0,$=l[v];for(;$<r;){let n=f[v],r=h+x*A<<3;for(;n<e;){var g;if(1==i&&(g=(g=t[r>>3])>>7-(7&r)&1,u[$*c+(n>>3)]|=g<<7-(7&n)),2==i&&(g=(g=t[r>>3])>>6-(7&r)&3,u[$*c+(n>>2)]|=g<<6-((3&n)<<1)),4==i&&(g=(g=t[r>>3])>>4-(7&r)&15,u[$*c+(n>>1)]|=g<<4-((1&n)<<2)),i>=8){const e=$*c+n*a;for(let n=0;n<a;n++)u[e+n]=t[(r>>3)+n]}r+=i,n+=w}x++,$+=o}y*m!=0&&(h+=m*(1+A)),v+=1}return u}(n,t)),n}function r(t,n){return i(new Uint8Array(t.buffer,2,t.length-6),n)}var i=function(){const t={H:{}};return t.H.N=function(n,e){const r=Uint8Array;let i,o,s=0,a=0,c=0,u=0,h=0,l=0,f=0,d=0,p=0;if(3==n[0]&&0==n[1])return e||new r(0);const v=t.H,g=v.b,w=v.e,y=v.R,m=v.n,b=v.A,k=v.Z,A=v.m,x=null==e;for(x&&(e=new r(n.length>>>2<<5));0==s;)if(s=g(n,p,1),a=g(n,p+1,2),p+=3,0!=a){if(x&&(e=t.H.W(e,d+(1<<17))),1==a&&(i=A.J,o=A.h,l=511,f=31),2==a){c=w(n,p,5)+257,u=w(n,p+5,5)+1,h=w(n,p+10,4)+4,p+=14;let t=1;for(var $=0;$<38;$+=2)A.Q[$]=0,A.Q[$+1]=0;for($=0;$<h;$++){const e=w(n,p+3*$,3);A.Q[1+(A.X[$]<<1)]=e,e>t&&(t=e)}p+=3*h,m(A.Q,t),b(A.Q,t,A.u),i=A.w,o=A.d,p=y(A.u,(1<<t)-1,c+u,n,p,A.v);const e=v.V(A.v,0,c,A.C);l=(1<<e)-1;const r=v.V(A.v,c,u,A.D);f=(1<<r)-1,m(A.C,e),b(A.C,e,i),m(A.D,r),b(A.D,r,o)}for(;;){const t=i[k(n,p)&l];p+=15&t;const r=t>>>4;if(r>>>8==0)e[d++]=r;else{if(256==r)break;{let t=d+r-254;if(r>264){const e=A.q[r-257];t=d+(e>>>3)+w(n,p,7&e),p+=7&e}const i=o[k(n,p)&f];p+=15&i;const s=A.c[i>>>4],a=(s>>>4)+g(n,p,15&s);for(p+=15&s;d<t;)e[d]=e[d++-a],e[d]=e[d++-a],e[d]=e[d++-a],e[d]=e[d++-a];d=t}}}}else{7&p&&(p+=8-(7&p));const i=4+(p>>>3),o=n[i-4]|n[i-3]<<8;x&&(e=t.H.W(e,d+o)),e.set(new r(n.buffer,n.byteOffset+i,o),d),p=i+o<<3,d+=o}return e.length==d?e:e.slice(0,d)},t.H.W=function(t,n){const e=t.length;if(n<=e)return t;const r=new Uint8Array(e<<1);return r.set(t,0),r},t.H.R=function(n,e,r,i,o,s){const a=t.H.e,c=t.H.Z;let u=0;for(;u<r;){const t=n[c(i,o)&e];o+=15&t;const r=t>>>4;if(r<=15)s[u]=r,u++;else{let t=0,n=0;16==r?(n=3+a(i,o,2),o+=2,t=s[u-1]):17==r?(n=3+a(i,o,3),o+=3):18==r&&(n=11+a(i,o,7),o+=7);const e=u+n;for(;u<e;)s[u]=t,u++}}return o},t.H.V=function(t,n,e,r){let i=0,o=0;const s=r.length>>>1;for(;o<e;){const e=t[o+n];r[o<<1]=0,r[1+(o<<1)]=e,e>i&&(i=e),o++}for(;o<s;)r[o<<1]=0,r[1+(o<<1)]=0,o++;return i},t.H.n=function(n,e){const r=t.H.m,i=n.length;let o,s,a,c;const u=r.j;for(var h=0;h<=e;h++)u[h]=0;for(h=1;h<i;h+=2)u[n[h]]++;const l=r.K;for(o=0,u[0]=0,s=1;s<=e;s++)o=o+u[s-1]<<1,l[s]=o;for(a=0;a<i;a+=2)c=n[a+1],0!=c&&(n[a]=l[c],l[c]++)},t.H.A=function(n,e,r){const i=n.length,o=t.H.m.r;for(let t=0;t<i;t+=2)if(0!=n[t+1]){const i=n[t+1],s=t>>1<<4|i,a=e-i;let c=n[t]<<a;const u=c+(1<<a);for(;c!=u;)r[o[c]>>>15-e]=s,c++}},t.H.l=function(n,e){const r=t.H.m.r,i=15-e;for(let t=0;t<n.length;t+=2)n[t]=r[n[t]<<e-n[t+1]]>>>i},t.H.M=function(t,n,e){const r=n>>>3;t[r]|=e<<=7&n,t[r+1]|=e>>>8},t.H.I=function(t,n,e){const r=n>>>3;t[r]|=e<<=7&n,t[r+1]|=e>>>8,t[r+2]|=e>>>16},t.H.e=function(t,n,e){return(t[n>>>3]|t[1+(n>>>3)]<<8)>>>(7&n)&(1<<e)-1},t.H.b=function(t,n,e){return(t[n>>>3]|t[1+(n>>>3)]<<8|t[2+(n>>>3)]<<16)>>>(7&n)&(1<<e)-1},t.H.Z=function(t,n){return(t[n>>>3]|t[1+(n>>>3)]<<8|t[2+(n>>>3)]<<16)>>>(7&n)},t.H.i=function(t,n){return(t[n>>>3]|t[1+(n>>>3)]<<8|t[2+(n>>>3)]<<16|t[3+(n>>>3)]<<24)>>>(7&n)},t.H.m=function(){const t=Uint16Array,n=Uint32Array;return{K:new t(16),j:new t(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],q:new t(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],c:new n(32),J:new t(512),_:[],h:new t(32),$:[],w:new t(32768),C:[],v:[],d:new t(32768),D:[],u:new t(512),Q:[],r:new t(32768),s:new n(286),Y:new n(30),a:new n(19),t:new n(15e3),k:new t(65536),g:new t(32768)}}(),function(){const n=t.H.m;for(var e=0;e<32768;e++){let t=e;t=(2863311530&t)>>>1|(1431655765&t)<<1,t=(3435973836&t)>>>2|(858993459&t)<<2,t=(4042322160&t)>>>4|(252645135&t)<<4,t=(4278255360&t)>>>8|(16711935&t)<<8,n.r[e]=(t>>>16|t<<16)>>>17}function r(t,n,e){for(;0!=n--;)t.push(0,e)}for(e=0;e<32;e++)n.q[e]=n.S[e]<<3|n.T[e],n.c[e]=n.p[e]<<4|n.z[e];r(n._,144,8),r(n._,112,9),r(n._,24,7),r(n._,8,8),t.H.n(n._,9),t.H.A(n._,9,n.J),t.H.l(n._,9),r(n.$,32,5),t.H.n(n.$,5),t.H.A(n.$,5,n.h),t.H.l(n.$,5),r(n.Q,19,0),r(n.C,286,0),r(n.D,30,0),r(n.v,320,0)}(),t.H.N}();function o(t){return[1,null,3,1,2,null,4][t.ctype]*t.depth}function s(t,n,e,r,i){let s=o(n);const c=Math.ceil(r*s/8);let u,h;s=Math.ceil(s/8);let l=t[e],f=0;if(l>1&&(t[e]=[0,0,1][l-2]),3==l)for(f=s;f<c;f++)t[f+1]=t[f+1]+(t[f+1-s]>>>1)&255;for(let n=0;n<i;n++)if(u=e+n*c,h=u+n+1,l=t[h-1],f=0,0==l)for(;f<c;f++)t[u+f]=t[h+f];else if(1==l){for(;f<s;f++)t[u+f]=t[h+f];for(;f<c;f++)t[u+f]=t[h+f]+t[u+f-s]}else if(2==l)for(;f<c;f++)t[u+f]=t[h+f]+t[u+f-c];else if(3==l){for(;f<s;f++)t[u+f]=t[h+f]+(t[u+f-c]>>>1);for(;f<c;f++)t[u+f]=t[h+f]+(t[u+f-c]+t[u+f-s]>>>1)}else{for(;f<s;f++)t[u+f]=t[h+f]+a(0,t[u+f-c],0);for(;f<c;f++)t[u+f]=t[h+f]+a(t[u+f-s],t[u+f-c],t[u+f-s-c])}return t}function a(t,n,e){const r=t+n-e,i=r-t,o=r-n,s=r-e;return i*i<=o*o&&i*i<=s*s?t:o*o<=s*s?n:e}function c(n,e,r){r.width=t.readUint(n,e),r.height=t.readUint(n,e+=4),r.depth=n[e+=4],e++,r.ctype=n[e],e++,r.compress=n[e],e++,r.filter=n[e],e++,r.interlace=n[e],e++}function u(t,n,e,r,i,o,s,a,c){const u=Math.min(n,i),h=Math.min(e,o);let l=0,f=0;for(let e=0;e<h;e++)for(let o=0;o<u;o++)if(s>=0&&a>=0?(l=e*n+o<<2,f=(a+e)*i+s+o<<2):(l=(-a+e)*n-s+o<<2,f=e*i+o<<2),0==c)r[f]=t[l],r[f+1]=t[l+1],r[f+2]=t[l+2],r[f+3]=t[l+3];else if(1==c){var d=t[l+3]*(1/255),p=t[l]*d,v=t[l+1]*d,g=t[l+2]*d,w=r[f+3]*(1/255),y=r[f]*w,m=r[f+1]*w,b=r[f+2]*w;const n=1-d,e=d+w*n,i=0==e?0:1/e;r[f+3]=255*e,r[f+0]=(p+y*n)*i,r[f+1]=(v+m*n)*i,r[f+2]=(g+b*n)*i}else if(2==c)p=t[l],v=t[l+1],g=t[l+2],y=r[f],m=r[f+1],b=r[f+2],(d=t[l+3])==(w=r[f+3])&&p==y&&v==m&&g==b?(r[f]=0,r[f+1]=0,r[f+2]=0,r[f+3]=0):(r[f]=p,r[f+1]=v,r[f+2]=g,r[f+3]=d);else if(3==c){if(p=t[l],v=t[l+1],g=t[l+2],y=r[f],m=r[f+1],b=r[f+2],(d=t[l+3])==(w=r[f+3])&&p==y&&v==m&&g==b)continue;if(d<220&&w>20)return!1}return!0}return{decode:function(n){const o=new Uint8Array(n);let s=8;const a=t,u=a.readUshort,h=a.readUint,l={tabs:{},frames:[]},f=new Uint8Array(o.length);let d,p=0,v=0;const g=[137,80,78,71,13,10,26,10];for(var w=0;w<8;w++)if(o[w]!=g[w])throw"The input is not a PNG file!";for(;s<o.length;){const t=a.readUint(o,s);s+=4;const n=a.readASCII(o,s,4);if(s+=4,"IHDR"==n)c(o,s,l);else if("iCCP"==n){for(var y=s;0!=o[y];)y++;a.readASCII(o,s,y-s);const e=o.slice(y+2,s+t);let c=null;try{c=r(e)}catch(t){c=i(e)}l.tabs[n]=c}else if("CgBI"==n)l.tabs[n]=o.slice(s,s+4);else if("IDAT"==n){for(w=0;w<t;w++)f[p+w]=o[s+w];p+=t}else if("acTL"==n)l.tabs[n]={num_frames:h(o,s),num_plays:h(o,s+4)},d=new Uint8Array(o.length);else if("fcTL"==n){0!=v&&(($=l.frames[l.frames.length-1]).data=e(l,d.slice(0,v),$.rect.width,$.rect.height),v=0);const t={x:h(o,s+12),y:h(o,s+16),width:h(o,s+4),height:h(o,s+8)};let n=u(o,s+22);n=u(o,s+20)/(0==n?100:n);const r={rect:t,delay:Math.round(1e3*n),dispose:o[s+24],blend:o[s+25]};l.frames.push(r)}else if("fdAT"==n){for(w=0;w<t-4;w++)d[v+w]=o[s+w+4];v+=t-4}else if("pHYs"==n)l.tabs[n]=[a.readUint(o,s),a.readUint(o,s+4),o[s+8]];else if("cHRM"==n)for(l.tabs[n]=[],w=0;w<8;w++)l.tabs[n].push(a.readUint(o,s+4*w));else if("tEXt"==n||"zTXt"==n){null==l.tabs[n]&&(l.tabs[n]={});var m=a.nextZero(o,s),b=a.readASCII(o,s,m-s),k=s+t-m-1;if("tEXt"==n)x=a.readASCII(o,m+1,k);else{var A=r(o.slice(m+2,m+2+k));x=a.readUTF8(A,0,A.length)}l.tabs[n][b]=x}else if("iTXt"==n){null==l.tabs[n]&&(l.tabs[n]={}),m=0,m=a.nextZero(o,y=s),b=a.readASCII(o,y,m-y);const e=o[y=m+1];var x;m=a.nextZero(o,y+=2),a.readASCII(o,y,m-y),m=a.nextZero(o,y=m+1),a.readUTF8(o,y,m-y),k=t-((y=m+1)-s),0==e?x=a.readUTF8(o,y,k):(A=r(o.slice(y,y+k)),x=a.readUTF8(A,0,A.length)),l.tabs[n][b]=x}else if("PLTE"==n)l.tabs[n]=a.readBytes(o,s,t);else if("hIST"==n){const t=l.tabs.PLTE.length/3;for(l.tabs[n]=[],w=0;w<t;w++)l.tabs[n].push(u(o,s+2*w))}else if("tRNS"==n)3==l.ctype?l.tabs[n]=a.readBytes(o,s,t):0==l.ctype?l.tabs[n]=u(o,s):2==l.ctype&&(l.tabs[n]=[u(o,s),u(o,s+2),u(o,s+4)]);else if("gAMA"==n)l.tabs[n]=a.readUint(o,s)/1e5;else if("sRGB"==n)l.tabs[n]=o[s];else if("bKGD"==n)0==l.ctype||4==l.ctype?l.tabs[n]=[u(o,s)]:2==l.ctype||6==l.ctype?l.tabs[n]=[u(o,s),u(o,s+2),u(o,s+4)]:3==l.ctype&&(l.tabs[n]=o[s]);else if("IEND"==n)break;s+=t,a.readUint(o,s),s+=4}var $;return 0!=v&&(($=l.frames[l.frames.length-1]).data=e(l,d.slice(0,v),$.rect.width,$.rect.height)),l.data=e(l,f,l.width,l.height),delete l.compress,delete l.interlace,delete l.filter,l},toRGBA8:function(t){const e=t.width,r=t.height;if(null==t.tabs.acTL)return[n(t.data,e,r,t).buffer];const i=[];null==t.frames[0].data&&(t.frames[0].data=t.data);const o=e*r*4,s=new Uint8Array(o),a=new Uint8Array(o),c=new Uint8Array(o);for(let l=0;l<t.frames.length;l++){const f=t.frames[l],d=f.rect.x,p=f.rect.y,v=f.rect.width,g=f.rect.height,w=n(f.data,v,g,t);if(0!=l)for(var h=0;h<o;h++)c[h]=s[h];if(0==f.blend?u(w,v,g,s,e,r,d,p,0):1==f.blend&&u(w,v,g,s,e,r,d,p,1),i.push(s.buffer.slice(0)),0==f.dispose);else if(1==f.dispose)u(a,v,g,s,e,r,d,p,0);else if(2==f.dispose)for(h=0;h<o;h++)s[h]=c[h]}return i},_paeth:a,_copyTile:u,_bin:t}}();!function(){const{_copyTile:t}=Z,{_bin:n}=Z,e=Z._paeth;var r={table:function(){const t=new Uint32Array(256);for(let n=0;n<256;n++){let e=n;for(let t=0;t<8;t++)1&e?e=3988292384^e>>>1:e>>>=1;t[n]=e}return t}(),update(t,n,e,i){for(let o=0;o<i;o++)t=r.table[255&(t^n[e+o])]^t>>>8;return t},crc:(t,n,e)=>4294967295^r.update(4294967295,t,n,e)};function i(t,n,e,r){n[e]+=t[0]*r>>4,n[e+1]+=t[1]*r>>4,n[e+2]+=t[2]*r>>4,n[e+3]+=t[3]*r>>4}function o(t){return Math.max(0,Math.min(255,t))}function s(t,n){const e=t[0]-n[0],r=t[1]-n[1],i=t[2]-n[2],o=t[3]-n[3];return e*e+r*r+i*i+o*o}function a(t,n,e,r,a,c,u){null==u&&(u=1);const h=r.length,l=[];for(var f=0;f<h;f++){const t=r[f];l.push([t>>>0&255,t>>>8&255,t>>>16&255,t>>>24&255])}for(f=0;f<h;f++){let t=4294967295;for(var d=0,p=0;p<h;p++){var v=s(l[f],l[p]);p!=f&&v<t&&(t=v,d=p)}}const g=new Uint32Array(a.buffer),w=new Int16Array(n*e*4),y=[0,8,2,10,12,4,14,6,3,11,1,9,15,7,13,5];for(f=0;f<y.length;f++)y[f]=255*((y[f]+.5)/16-.5);for(let a=0;a<e;a++)for(let b=0;b<n;b++){var m;f=4*(a*n+b),m=2!=u?[o(t[f]+w[f]),o(t[f+1]+w[f+1]),o(t[f+2]+w[f+2]),o(t[f+3]+w[f+3])]:[o(t[f]+(v=y[4*(3&a)+(3&b)])),o(t[f+1]+v),o(t[f+2]+v),o(t[f+3]+v)],d=0;let k=16777215;for(p=0;p<h;p++){const t=s(m,l[p]);t<k&&(k=t,d=p)}const A=l[d],x=[m[0]-A[0],m[1]-A[1],m[2]-A[2],m[3]-A[3]];1==u&&(b!=n-1&&i(x,w,f+4,7),a!=e-1&&(0!=b&&i(x,w,f+4*n-4,3),i(x,w,f+4*n,5),b!=n-1&&i(x,w,f+4*n+4,1))),c[f>>2]=d,g[f>>2]=r[d]}}function c(t,e,i,o,s){null==s&&(s={});const{crc:a}=r,c=n.writeUint,u=n.writeUshort,h=n.writeASCII;let l=8;const f=t.frames.length>1;let d,p=!1,v=33+(f?20:0);if(null!=s.sRGB&&(v+=13),null!=s.pHYs&&(v+=21),null!=s.iCCP&&(d=pako.deflate(s.iCCP),v+=21+d.length+4),3==t.ctype){for(var g=t.plte.length,w=0;w<g;w++)t.plte[w]>>>24!=255&&(p=!0);v+=8+3*g+4+(p?8+1*g+4:0)}for(var y=0;y<t.frames.length;y++)f&&(v+=38),v+=(A=t.frames[y]).cimg.length+12,0!=y&&(v+=4);v+=12;const m=new Uint8Array(v),b=[137,80,78,71,13,10,26,10];for(w=0;w<8;w++)m[w]=b[w];if(c(m,l,13),l+=4,h(m,l,"IHDR"),l+=4,c(m,l,e),l+=4,c(m,l,i),l+=4,m[l]=t.depth,l++,m[l]=t.ctype,l++,m[l]=0,l++,m[l]=0,l++,m[l]=0,l++,c(m,l,a(m,l-17,17)),l+=4,null!=s.sRGB&&(c(m,l,1),l+=4,h(m,l,"sRGB"),l+=4,m[l]=s.sRGB,l++,c(m,l,a(m,l-5,5)),l+=4),null!=s.iCCP){const t=13+d.length;c(m,l,t),l+=4,h(m,l,"iCCP"),l+=4,h(m,l,"ICC profile"),l+=11,l+=2,m.set(d,l),l+=d.length,c(m,l,a(m,l-(t+4),t+4)),l+=4}if(null!=s.pHYs&&(c(m,l,9),l+=4,h(m,l,"pHYs"),l+=4,c(m,l,s.pHYs[0]),l+=4,c(m,l,s.pHYs[1]),l+=4,m[l]=s.pHYs[2],l++,c(m,l,a(m,l-13,13)),l+=4),f&&(c(m,l,8),l+=4,h(m,l,"acTL"),l+=4,c(m,l,t.frames.length),l+=4,c(m,l,null!=s.loop?s.loop:0),l+=4,c(m,l,a(m,l-12,12)),l+=4),3==t.ctype){for(c(m,l,3*(g=t.plte.length)),l+=4,h(m,l,"PLTE"),l+=4,w=0;w<g;w++){const n=3*w,e=t.plte[w],r=e>>>8&255,i=e>>>16&255;m[l+n+0]=255&e,m[l+n+1]=r,m[l+n+2]=i}if(l+=3*g,c(m,l,a(m,l-3*g-4,3*g+4)),l+=4,p){for(c(m,l,g),l+=4,h(m,l,"tRNS"),l+=4,w=0;w<g;w++)m[l+w]=t.plte[w]>>>24&255;l+=g,c(m,l,a(m,l-g-4,g+4)),l+=4}}let k=0;for(y=0;y<t.frames.length;y++){var A=t.frames[y];f&&(c(m,l,26),l+=4,h(m,l,"fcTL"),l+=4,c(m,l,k++),l+=4,c(m,l,A.rect.width),l+=4,c(m,l,A.rect.height),l+=4,c(m,l,A.rect.x),l+=4,c(m,l,A.rect.y),l+=4,u(m,l,o[y]),l+=2,u(m,l,1e3),l+=2,m[l]=A.dispose,l++,m[l]=A.blend,l++,c(m,l,a(m,l-30,30)),l+=4);const n=A.cimg;c(m,l,(g=n.length)+(0==y?0:4)),l+=4;const e=l;h(m,l,0==y?"IDAT":"fdAT"),l+=4,0!=y&&(c(m,l,k++),l+=4),m.set(n,l),l+=g,c(m,l,a(m,e,l-e)),l+=4}return c(m,l,0),l+=4,h(m,l,"IEND"),l+=4,c(m,l,a(m,l-4,4)),l+=4,m.buffer}function u(t,n,e){for(let r=0;r<t.frames.length;r++){const i=t.frames[r],o=i.rect.height,s=new Uint8Array(o*i.bpl+o);i.cimg=d(i.img,o,i.bpp,i.bpl,s,n,e)}}function h(n,e,r,i,o){const s=o[0],c=o[1],u=o[2],h=o[3],d=o[4],p=o[5];let g=6,w=8,y=255;for(var m=0;m<n.length;m++){const t=new Uint8Array(n[m]);for(var b=t.length,k=0;k<b;k+=4)y&=t[k+3]}const A=255!=y,x=function(n,e,r,i,o,s){const a=[];for(var c=0;c<n.length;c++){const l=new Uint8Array(n[c]),d=new Uint32Array(l.buffer);var u;let v=0,g=0,w=e,y=r,m=i?1:0;if(0!=c){const b=s||i||1==c||0!=a[c-2].dispose?1:2;let k=0,A=1e9;for(let t=0;t<b;t++){var h=new Uint8Array(n[c-1-t]);const i=new Uint32Array(n[c-1-t]);let s=e,a=r,u=-1,l=-1;for(let t=0;t<r;t++)for(let n=0;n<e;n++)d[p=t*e+n]!=i[p]&&(n<s&&(s=n),n>u&&(u=n),t<a&&(a=t),t>l&&(l=t));-1==u&&(s=a=u=l=0),o&&(!(1&~s)&&s--,!(1&~a)&&a--);const f=(u-s+1)*(l-a+1);f<A&&(A=f,k=t,v=s,g=a,w=u-s+1,y=l-a+1)}h=new Uint8Array(n[c-1-k]),1==k&&(a[c-1].dispose=2),u=new Uint8Array(w*y*4),t(h,e,r,u,w,y,-v,-g,0),m=t(l,e,r,u,w,y,-v,-g,3)?1:0,1==m?f(l,e,r,u,{x:v,y:g,width:w,height:y}):t(l,e,r,u,w,y,-v,-g,0)}else u=l.slice(0);a.push({rect:{x:v,y:g,width:w,height:y},img:u,blend:m,dispose:0})}if(i)for(c=0;c<a.length;c++){if(1==(v=a[c]).blend)continue;const t=v.rect,i=a[c-1].rect,s=Math.min(t.x,i.x),u=Math.min(t.y,i.y),h={x:s,y:u,width:Math.max(t.x+t.width,i.x+i.width)-s,height:Math.max(t.y+t.height,i.y+i.height)-u};a[c-1].dispose=1,c-1!=0&&l(n,e,r,a,c-1,h,o),l(n,e,r,a,c,h,o)}let d=0;if(1!=n.length)for(var p=0;p<a.length;p++){var v;d+=(v=a[p]).rect.width*v.rect.height}return a}(n,e,r,s,c,u),$={},S=[],M=[];if(0!=i){const t=[];for(k=0;k<x.length;k++)t.push(x[k].img.buffer);const n=function(t){let n=0;for(var e=0;e<t.length;e++)n+=t[e].byteLength;const r=new Uint8Array(n);let i=0;for(e=0;e<t.length;e++){const n=new Uint8Array(t[e]),o=n.length;for(let t=0;t<o;t+=4){let e=n[t],o=n[t+1],s=n[t+2];const a=n[t+3];0==a&&(e=o=s=0),r[i+t]=e,r[i+t+1]=o,r[i+t+2]=s,r[i+t+3]=a}i+=o}return r.buffer}(t),e=v(n,i);for(k=0;k<e.plte.length;k++)S.push(e.plte[k].est.rgba);let r=0;for(k=0;k<x.length;k++){const t=(C=x[k]).img.length;var j=new Uint8Array(e.inds.buffer,r>>2,t>>2);M.push(j);const n=new Uint8Array(e.abuf,r,t);p&&a(C.img,C.rect.width,C.rect.height,S,n,j),C.img.set(n),r+=t}}else for(m=0;m<x.length;m++){var C=x[m];const t=new Uint32Array(C.img.buffer);var z=C.rect.width;for(b=t.length,j=new Uint8Array(b),M.push(j),k=0;k<b;k++){const n=t[k];if(0!=k&&n==t[k-1])j[k]=j[k-1];else if(k>z&&n==t[k-z])j[k]=j[k-z];else{let t=$[n];if(null==t&&($[n]=t=S.length,S.push(n),S.length>=300))break;j[k]=t}}}const I=S.length;for(I<=256&&0==d&&(w=I<=2?1:I<=4?2:I<=16?4:8,w=Math.max(w,h)),m=0;m<x.length;m++){const t=(C=x[m]).rect.height;let n=C.img,e=4*(z=C.rect.width),r=4;if(I<=256&&0==d){e=Math.ceil(w*z/8);var T=new Uint8Array(e*t);const i=M[m];for(let n=0;n<t;n++){k=n*e;const t=n*z;if(8==w)for(var E=0;E<z;E++)T[k+E]=i[t+E];else if(4==w)for(E=0;E<z;E++)T[k+(E>>1)]|=i[t+E]<<4-4*(1&E);else if(2==w)for(E=0;E<z;E++)T[k+(E>>2)]|=i[t+E]<<6-2*(3&E);else if(1==w)for(E=0;E<z;E++)T[k+(E>>3)]|=i[t+E]<<7-1*(7&E)}n=T,g=3,r=1}else if(0==A&&1==x.length){T=new Uint8Array(z*t*3);const i=z*t;for(k=0;k<i;k++){const t=3*k,e=4*k;T[t]=n[e],T[t+1]=n[e+1],T[t+2]=n[e+2]}n=T,g=2,r=3,e=3*z}C.img=n,C.bpl=e,C.bpp=r}return{ctype:g,depth:w,plte:S,frames:x}}function l(n,e,r,i,o,s,a){const c=Uint8Array,u=Uint32Array,h=new c(n[o-1]),l=new u(n[o-1]),d=o+1<n.length?new c(n[o+1]):null,p=new c(n[o]),v=new u(p.buffer);let g=e,w=r,y=-1,m=-1;for(let t=0;t<s.height;t++)for(let n=0;n<s.width;n++){const r=s.x+n,a=s.y+t,c=a*e+r,u=v[c];0==u||0==i[o-1].dispose&&l[c]==u&&(null==d||0!=d[4*c+3])||(r<g&&(g=r),r>y&&(y=r),a<w&&(w=a),a>m&&(m=a))}-1==y&&(g=w=y=m=0),a&&(!(1&~g)&&g--,!(1&~w)&&w--);const b=i[o];b.rect=s={x:g,y:w,width:y-g+1,height:m-w+1},b.blend=1,b.img=new Uint8Array(s.width*s.height*4),0==i[o-1].dispose?(t(h,e,r,b.img,s.width,s.height,-s.x,-s.y,0),f(p,e,r,b.img,s)):t(p,e,r,b.img,s.width,s.height,-s.x,-s.y,0)}function f(n,e,r,i,o){t(n,e,r,i,o.width,o.height,-o.x,-o.y,2)}function d(t,n,e,r,i,o,s){const a=[];let c,u=[0,1,2,3,4];-1!=o?u=[o]:(n*r>5e5||1==e)&&(u=[0]),s&&(c={level:0});const h=q;for(var l=0;l<u.length;l++){for(let o=0;o<n;o++)p(i,t,o,r,e,u[l]);a.push(h.deflate(i,c))}let f,d=1e9;for(l=0;l<a.length;l++)a[l].length<d&&(f=l,d=a[l].length);return a[f]}function p(t,n,r,i,o,s){const a=r*i;let c=a+r;if(t[c]=s,c++,0==s)if(i<500)for(var u=0;u<i;u++)t[c+u]=n[a+u];else t.set(new Uint8Array(n.buffer,a,i),c);else if(1==s){for(u=0;u<o;u++)t[c+u]=n[a+u];for(u=o;u<i;u++)t[c+u]=n[a+u]-n[a+u-o]+256&255}else if(0==r){for(u=0;u<o;u++)t[c+u]=n[a+u];if(2==s)for(u=o;u<i;u++)t[c+u]=n[a+u];if(3==s)for(u=o;u<i;u++)t[c+u]=n[a+u]-(n[a+u-o]>>1)+256&255;if(4==s)for(u=o;u<i;u++)t[c+u]=n[a+u]-e(n[a+u-o],0,0)+256&255}else{if(2==s)for(u=0;u<i;u++)t[c+u]=n[a+u]+256-n[a+u-i]&255;if(3==s){for(u=0;u<o;u++)t[c+u]=n[a+u]+256-(n[a+u-i]>>1)&255;for(u=o;u<i;u++)t[c+u]=n[a+u]+256-(n[a+u-i]+n[a+u-o]>>1)&255}if(4==s){for(u=0;u<o;u++)t[c+u]=n[a+u]+256-e(0,n[a+u-i],0)&255;for(u=o;u<i;u++)t[c+u]=n[a+u]+256-e(n[a+u-o],n[a+u-i],n[a+u-o-i])&255}}}function v(t,n){const e=new Uint8Array(t),r=e.slice(0),i=new Uint32Array(r.buffer),o=g(r,n),s=o[0],a=o[1],c=e.length,u=new Uint8Array(c>>2);let h;if(e.length<2e7)for(var l=0;l<c;l+=4)h=w(s,f=e[l]*(1/255),d=e[l+1]*(1/255),p=e[l+2]*(1/255),v=e[l+3]*(1/255)),u[l>>2]=h.ind,i[l>>2]=h.est.rgba;else for(l=0;l<c;l+=4){var f=e[l]*(1/255),d=e[l+1]*(1/255),p=e[l+2]*(1/255),v=e[l+3]*(1/255);for(h=s;h.left;)h=y(h.est,f,d,p,v)<=0?h.left:h.right;u[l>>2]=h.ind,i[l>>2]=h.est.rgba}return{abuf:r.buffer,inds:u,plte:a}}function g(t,n,e){null==e&&(e=1e-4);const r=new Uint32Array(t.buffer),i={i0:0,i1:t.length,bst:null,est:null,tdst:0,left:null,right:null};i.bst=k(t,i.i0,i.i1),i.est=A(i.bst);const o=[i];for(;o.length<n;){let n=0,i=0;for(var s=0;s<o.length;s++)o[s].est.L>n&&(n=o[s].est.L,i=s);if(n<e)break;const a=o[i],c=m(t,r,a.i0,a.i1,a.est.e,a.est.eMq255);if(a.i0>=c||a.i1<=c){a.est.L=0;continue}const u={i0:a.i0,i1:c,bst:null,est:null,tdst:0,left:null,right:null};u.bst=k(t,u.i0,u.i1),u.est=A(u.bst);const h={i0:c,i1:a.i1,bst:null,est:null,tdst:0,left:null,right:null};for(h.bst={R:[],m:[],N:a.bst.N-u.bst.N},s=0;s<16;s++)h.bst.R[s]=a.bst.R[s]-u.bst.R[s];for(s=0;s<4;s++)h.bst.m[s]=a.bst.m[s]-u.bst.m[s];h.est=A(h.bst),a.left=u,a.right=h,o[i]=u,o.push(h)}for(o.sort(((t,n)=>n.bst.N-t.bst.N)),s=0;s<o.length;s++)o[s].ind=s;return[i,o]}function w(t,n,e,r,i){if(null==t.left)return t.tdst=function(t,n,e,r,i){const o=n-t[0],s=e-t[1],a=r-t[2],c=i-t[3];return o*o+s*s+a*a+c*c}(t.est.q,n,e,r,i),t;const o=y(t.est,n,e,r,i);let s=t.left,a=t.right;o>0&&(s=t.right,a=t.left);const c=w(s,n,e,r,i);if(c.tdst<=o*o)return c;const u=w(a,n,e,r,i);return u.tdst<c.tdst?u:c}function y(t,n,e,r,i){const{e:o}=t;return o[0]*n+o[1]*e+o[2]*r+o[3]*i-t.eMq}function m(t,n,e,r,i,o){for(r-=4;e<r;){for(;b(t,e,i)<=o;)e+=4;for(;b(t,r,i)>o;)r-=4;if(e>=r)break;const s=n[e>>2];n[e>>2]=n[r>>2],n[r>>2]=s,e+=4,r-=4}for(;b(t,e,i)>o;)e-=4;return e+4}function b(t,n,e){return t[n]*e[0]+t[n+1]*e[1]+t[n+2]*e[2]+t[n+3]*e[3]}function k(t,n,e){const r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],i=[0,0,0,0],o=e-n>>2;for(let o=n;o<e;o+=4){const n=t[o]*(1/255),e=t[o+1]*(1/255),s=t[o+2]*(1/255),a=t[o+3]*(1/255);i[0]+=n,i[1]+=e,i[2]+=s,i[3]+=a,r[0]+=n*n,r[1]+=n*e,r[2]+=n*s,r[3]+=n*a,r[5]+=e*e,r[6]+=e*s,r[7]+=e*a,r[10]+=s*s,r[11]+=s*a,r[15]+=a*a}return r[4]=r[1],r[8]=r[2],r[9]=r[6],r[12]=r[3],r[13]=r[7],r[14]=r[11],{R:r,m:i,N:o}}function A(t){const{R:n}=t,{m:e}=t,{N:r}=t,i=e[0],o=e[1],s=e[2],a=e[3],c=0==r?0:1/r,u=[n[0]-i*i*c,n[1]-i*o*c,n[2]-i*s*c,n[3]-i*a*c,n[4]-o*i*c,n[5]-o*o*c,n[6]-o*s*c,n[7]-o*a*c,n[8]-s*i*c,n[9]-s*o*c,n[10]-s*s*c,n[11]-s*a*c,n[12]-a*i*c,n[13]-a*o*c,n[14]-a*s*c,n[15]-a*a*c],h=u,l=x;let f=[Math.random(),Math.random(),Math.random(),Math.random()],d=0,p=0;if(0!=r)for(let t=0;t<16&&(f=l.multVec(h,f),p=Math.sqrt(l.dot(f,f)),f=l.sml(1/p,f),!(0!=t&&Math.abs(p-d)<1e-9));t++)d=p;const v=[i*c,o*c,s*c,a*c];return{Cov:u,q:v,e:f,L:d,eMq255:l.dot(l.sml(255,v),f),eMq:l.dot(f,v),rgba:(Math.round(255*v[3])<<24|Math.round(255*v[2])<<16|Math.round(255*v[1])<<8|Math.round(255*v[0]))>>>0}}var x={multVec:(t,n)=>[t[0]*n[0]+t[1]*n[1]+t[2]*n[2]+t[3]*n[3],t[4]*n[0]+t[5]*n[1]+t[6]*n[2]+t[7]*n[3],t[8]*n[0]+t[9]*n[1]+t[10]*n[2]+t[11]*n[3],t[12]*n[0]+t[13]*n[1]+t[14]*n[2]+t[15]*n[3]],dot:(t,n)=>t[0]*n[0]+t[1]*n[1]+t[2]*n[2]+t[3]*n[3],sml:(t,n)=>[t*n[0],t*n[1],t*n[2],t*n[3]]};Z.encode=function(t,n,e,r,i,o,s){null==r&&(r=0),null==s&&(s=!1);const a=h(t,n,e,r,[!1,!1,!1,0,s,!1]);return u(a,-1),c(a,n,e,i,o)},Z.encodeLL=function(t,n,e,r,i,o,s,a){const h={ctype:0+(1==r?0:2)+(0==i?0:4),depth:o,frames:[]},l=(r+i)*o,f=l*n;for(let r=0;r<t.length;r++)h.frames.push({rect:{x:0,y:0,width:n,height:e},img:new Uint8Array(t[r]),blend:0,dispose:1,bpp:Math.ceil(l/8),bpl:Math.ceil(f/8)});return u(h,0,!0),c(h,n,e,s,a)},Z.encode.compress=h,Z.encode.dither=a,Z.quantize=v,Z.quantize.getKDtree=g,Z.quantize.getNearest=w}();const J={toArrayBuffer(t,n){const e=t.width,r=t.height,i=e<<2,o=t.getContext("2d").getImageData(0,0,e,r),s=new Uint32Array(o.data.buffer),a=(32*e+31)/32<<2,c=a*r,u=122+c,h=new ArrayBuffer(u),l=new DataView(h),f=1<<20;let d,p,v,g,w=f,y=0,m=0,b=0;function k(t){l.setUint16(m,t,!0),m+=2}function A(t){l.setUint32(m,t,!0),m+=4}function x(t){m+=t}k(19778),A(u),x(4),A(122),A(108),A(e),A(-r>>>0),k(1),k(32),A(3),A(c),A(2835),A(2835),x(8),A(16711680),A(65280),A(255),A(4278190080),A(1466527264),function t(){for(;y<r&&w>0;){for(g=122+y*a,d=0;d<i;)w--,p=s[b++],v=p>>>24,l.setUint32(g+d,p<<8|v),d+=4;y++}b<s.length?(w=f,setTimeout(t,J._dly)):n(h)}()},toBlob(t,n){this.toArrayBuffer(t,(t=>{n(new Blob([t],{type:"image/bmp"}))}))},_dly:9};var tt={CHROME:"CHROME",FIREFOX:"FIREFOX",DESKTOP_SAFARI:"DESKTOP_SAFARI",IE:"IE",IOS:"IOS",ETC:"ETC"},nt={[tt.CHROME]:16384,[tt.FIREFOX]:11180,[tt.DESKTOP_SAFARI]:16384,[tt.IE]:8192,[tt.IOS]:4096,[tt.ETC]:8192};const et="undefined"!=typeof window,rt="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,it=et&&window.cordova&&window.cordova.require&&window.cordova.require("cordova/modulemapper"),ot=(et||rt)&&(it&&it.getOriginalSymbol(window,"File")||"undefined"!=typeof File&&File),st=(et||rt)&&(it&&it.getOriginalSymbol(window,"FileReader")||"undefined"!=typeof FileReader&&FileReader);function at(t,n,e=Date.now()){return new Promise((r=>{const i=t.split(","),o=i[0].match(/:(.*?);/)[1],s=globalThis.atob(i[1]);let a=s.length;const c=new Uint8Array(a);for(;a--;)c[a]=s.charCodeAt(a);const u=new Blob([c],{type:o});u.name=n,u.lastModified=e,r(u)}))}function ct(t){return new Promise(((n,e)=>{const r=new st;r.onload=()=>n(r.result),r.onerror=t=>e(t),r.readAsDataURL(t)}))}function ut(t){return new Promise(((n,e)=>{const r=new Image;r.onload=()=>n(r),r.onerror=t=>e(t),r.src=t}))}function ht(){if(void 0!==ht.cachedResult)return ht.cachedResult;let t=tt.ETC;const{userAgent:n}=navigator;return/Chrom(e|ium)/i.test(n)?t=tt.CHROME:/iP(ad|od|hone)/i.test(n)&&/WebKit/i.test(n)?t=tt.IOS:/Safari/i.test(n)?t=tt.DESKTOP_SAFARI:/Firefox/i.test(n)?t=tt.FIREFOX:(/MSIE/i.test(n)||1==!!document.documentMode)&&(t=tt.IE),ht.cachedResult=t}function lt(t,n){const e=ht(),r=nt[e];let i=t,o=n,s=i*o;const a=i>o?o/i:i/o;for(;s>r*r;){const t=(r+i)/2,n=(r+o)/2;t<n?(o=n,i=n*a):(o=t*a,i=t),s=i*o}return{width:i,height:o}}function ft(t,n){let e,r;try{if(e=new OffscreenCanvas(t,n),r=e.getContext("2d"),null===r)throw new Error("getContext of OffscreenCanvas returns null")}catch(t){e=document.createElement("canvas"),r=e.getContext("2d")}return e.width=t,e.height=n,[e,r]}function dt(t,n){const{width:e,height:r}=lt(t.width,t.height),[i,o]=ft(e,r);return n&&/jpe?g/.test(n)&&(o.fillStyle="white",o.fillRect(0,0,i.width,i.height)),o.drawImage(t,0,0,i.width,i.height),i}function pt(){return void 0!==pt.cachedResult||(pt.cachedResult=["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"undefined"!=typeof document&&"ontouchend"in document),pt.cachedResult}function vt(t,n={}){return new Promise((function(e,r){let i,o;var s=function(){try{return o=dt(i,n.fileType||t.type),e([i,o])}catch(t){return r(t)}},a=function(){try{var n=function(t){try{throw t}catch(t){return r(t)}};try{let e;return ct(t).then((function(t){try{return e=t,ut(e).then((function(t){try{return i=t,function(){try{return s()}catch(t){return r(t)}}()}catch(t){return n(t)}}),n)}catch(t){return n(t)}}),n)}catch(t){n(t)}}catch(t){return r(t)}};try{if(pt()||[tt.DESKTOP_SAFARI,tt.MOBILE_SAFARI].includes(ht()))throw new Error("Skip createImageBitmap on IOS and Safari");return createImageBitmap(t).then((function(t){try{return i=t,s()}catch(t){return a()}}),a)}catch(t){a()}}))}function gt(t,n,e,r,i=1){return new Promise((function(o,s){let a;if("image/png"===n){let u,h,l;return u=t.getContext("2d"),({data:h}=u.getImageData(0,0,t.width,t.height)),l=Z.encode([h.buffer],t.width,t.height,4096*i),a=new Blob([l],{type:n}),a.name=e,a.lastModified=r,c.call(this)}{if("image/bmp"===n)return new Promise((n=>J.toBlob(t,n))).then(function(t){try{return a=t,a.name=e,a.lastModified=r,f.call(this)}catch(t){return s(t)}}.bind(this),s);{if("function"==typeof OffscreenCanvas&&t instanceof OffscreenCanvas)return t.convertToBlob({type:n,quality:i}).then(function(t){try{return a=t,a.name=e,a.lastModified=r,d.call(this)}catch(t){return s(t)}}.bind(this),s);{let p;return p=t.toDataURL(n,i),at(p,e,r).then(function(t){try{return a=t,d.call(this)}catch(t){return s(t)}}.bind(this),s)}function d(){return f.call(this)}}function f(){return c.call(this)}}function c(){return o(a)}}))}function wt(t){t.width=0,t.height=0}function yt(){return new Promise((function(t,n){let e,r,i,o;return void 0!==yt.cachedResult?t(yt.cachedResult):at("data:image/jpeg;base64,/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAAAAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/xABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAAAAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q==","test.jpg",Date.now()).then((function(s){try{return e=s,vt(e).then((function(s){try{return r=s[1],gt(r,e.type,e.name,e.lastModified).then((function(e){try{return i=e,wt(r),vt(i).then((function(e){try{return o=e[0],t(yt.cachedResult=1===o.width&&2===o.height)}catch(t){return n(t)}}),n)}catch(t){return n(t)}}),n)}catch(t){return n(t)}}),n)}catch(t){return n(t)}}),n)}))}function mt(t){return new Promise(((n,e)=>{const r=new st;r.onload=t=>{const e=new DataView(t.target.result);if(65496!=e.getUint16(0,!1))return n(-2);const r=e.byteLength;let i=2;for(;i<r;){if(e.getUint16(i+2,!1)<=8)return n(-1);const t=e.getUint16(i,!1);if(i+=2,65505==t){if(1165519206!=e.getUint32(i+=2,!1))return n(-1);const t=18761==e.getUint16(i+=6,!1);i+=e.getUint32(i+4,t);const r=e.getUint16(i,t);i+=2;for(let o=0;o<r;o++)if(274==e.getUint16(i+12*o,t))return n(e.getUint16(i+12*o+8,t))}else{if(65280&~t)break;i+=e.getUint16(i,!1)}}return n(-1)},r.onerror=t=>e(t),r.readAsArrayBuffer(t)}))}function bt(t,n){const{width:e}=t,{height:r}=t,{maxWidthOrHeight:i}=n;let o,s=t;return isFinite(i)&&(e>i||r>i)&&([s,o]=ft(e,r),e>r?(s.width=i,s.height=r/e*i):(s.width=e/r*i,s.height=i),o.drawImage(t,0,0,s.width,s.height),wt(t)),s}function kt(t,n){const{width:e}=t,{height:r}=t,[i,o]=ft(e,r);switch(n>4&&n<9?(i.width=r,i.height=e):(i.width=e,i.height=r),n){case 2:o.transform(-1,0,0,1,e,0);break;case 3:o.transform(-1,0,0,-1,e,r);break;case 4:o.transform(1,0,0,-1,0,r);break;case 5:o.transform(0,1,1,0,0,0);break;case 6:o.transform(0,1,-1,0,r,0);break;case 7:o.transform(0,-1,-1,0,r,e);break;case 8:o.transform(0,-1,1,0,0,e)}return o.drawImage(t,0,0,e,r),wt(t),i}function At(t,n,e=0){return new Promise((function(r,i){let o,s,a,c,u,h,l,f,d,p,v,g,w,y,m,b,k,A,x,$;function S(t=5){if(n.signal&&n.signal.aborted)throw n.signal.reason;o+=t,n.onProgress(Math.min(o,100))}function M(t){if(n.signal&&n.signal.aborted)throw n.signal.reason;o=Math.min(Math.max(t,o),100),n.onProgress(o)}return o=e,s=n.maxIteration||10,a=1024*n.maxSizeMB*1024,S(),vt(t,n).then(function(e){try{return[,c]=e,S(),u=bt(c,n),S(),new Promise((function(e,r){var i;if(!(i=n.exifOrientation))return mt(t).then(function(t){try{return i=t,o.call(this)}catch(t){return r(t)}}.bind(this),r);function o(){return e(i)}return o.call(this)})).then(function(e){try{return h=e,S(),yt().then(function(e){try{return l=e?u:kt(u,h),S(),f=n.initialQuality||1,d=n.fileType||t.type,gt(l,d,t.name,t.lastModified,f).then(function(e){try{{if(p=e,S(),v=p.size>a,g=p.size>t.size,!v&&!g)return M(100),r(p);var o;function h(){if(s--&&(m>a||m>w)){let n,e;return n=$?.95*x.width:x.width,e=$?.95*x.height:x.height,[k,A]=ft(n,e),A.drawImage(x,0,0,n,e),f*="image/png"===d?.85:.95,gt(k,d,t.name,t.lastModified,f).then((function(t){try{return b=t,wt(x),x=k,m=b.size,M(Math.min(99,Math.floor((y-m)/(y-a)*100))),h}catch(t){return i(t)}}),i)}return[1]}return w=t.size,y=p.size,m=y,x=l,$=!n.alwaysKeepResolution&&v,(o=function(t){for(;t;){if(t.then)return void t.then(o,i);try{if(t.pop){if(t.length)return t.pop()?j.call(this):t;t=h}else t=t.call(this)}catch(t){return i(t)}}}.bind(this))(h);function j(){return wt(x),wt(k),wt(u),wt(l),wt(c),M(100),r(b)}}}catch(C){return i(C)}}.bind(this),i)}catch(t){return i(t)}}.bind(this),i)}catch(t){return i(t)}}.bind(this),i)}catch(t){return i(t)}}.bind(this),i)}))}let xt;function $t(t,n){return new Promise(((e,r)=>{xt||(xt=function(){const t=[];return t.push("\nlet scriptImported = false\nself.addEventListener('message', async (e) => {\n const { file, id, imageCompressionLibUrl, options } = e.data\n options.onProgress = (progress) => self.postMessage({ progress, id })\n try {\n if (!scriptImported) {\n // console.log('[worker] importScripts', imageCompressionLibUrl)\n self.importScripts(imageCompressionLibUrl)\n scriptImported = true\n }\n // console.log('[worker] self', self)\n const compressedFile = await imageCompression(file, options)\n self.postMessage({ file: compressedFile, id })\n } catch (e) {\n // console.error('[worker] error', e)\n self.postMessage({ error: e.message + '\\n' + e.stack, id })\n }\n})\n"),URL.createObjectURL(new Blob(t))}());const i=new Worker(xt);i.addEventListener("message",(function(t){if(n.signal&&n.signal.aborted)i.terminate();else if(void 0===t.data.progress){if(t.data.error)return r(new Error(t.data.error)),void i.terminate();e(t.data.file),i.terminate()}else n.onProgress(t.data.progress)})),i.addEventListener("error",r),n.signal&&n.signal.addEventListener("abort",(()=>{r(n.signal.reason),i.terminate()})),i.postMessage({file:t,imageCompressionLibUrl:n.libURL,options:{...n,onProgress:void 0,signal:void 0}})}))}function St(t,n){return new Promise((function(e,r){let i,o,s,a,c,u;if(i={...n},s=0,({onProgress:a}=i),i.maxSizeMB=i.maxSizeMB||Number.POSITIVE_INFINITY,c="boolean"!=typeof i.useWebWorker||i.useWebWorker,delete i.useWebWorker,i.onProgress=t=>{s=t,"function"==typeof a&&a(s)},!(t instanceof Blob||t instanceof ot))return r(new Error("The file given is not an instance of Blob or File"));if(!/^image/.test(t.type))return r(new Error("The file given is not an image"));if(u="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,!c||"function"!=typeof Worker||u)return At(t,i).then(function(t){try{return o=t,f.call(this)}catch(t){return r(t)}}.bind(this),r);var h=function(){try{return f.call(this)}catch(t){return r(t)}}.bind(this),l=function(){try{return At(t,i).then((function(t){try{return o=t,h()}catch(t){return r(t)}}),r)}catch(t){return r(t)}};try{return i.libURL=i.libURL||"https://cdn.jsdelivr.net/npm/browser-image-compression@2.0.2/dist/browser-image-compression.js",$t(t,i).then((function(t){try{return o=t,h()}catch(t){return l()}}),l)}catch(t){l()}function f(){try{o.name=t.name,o.lastModified=t.lastModified}catch(t){}try{i.preserveExif&&"image/jpeg"===t.type&&(!i.fileType||i.fileType&&i.fileType===t.type)&&(o=X(t,o))}catch(t){}return e(o)}}))}St.getDataUrlFromFile=ct,St.getFilefromDataUrl=at,St.loadImage=ut,St.drawImageInCanvas=dt,St.drawFileInCanvas=vt,St.canvasToFile=gt,St.getExifOrientation=mt,St.handleMaxWidthOrHeight=bt,St.followExifOrientation=kt,St.cleanupCanvasMemory=wt,St.isAutoOrientationInBrowser=yt,St.approximateBelowMaximumCanvasSizeOfBrowser=lt,St.copyExifWithoutOrientation=X,St.getBrowserName=ht,St.version="2.0.2";class Mt extends a{fileInput=null;maxCompressionSize=1200;multiImportOffset=20;constructor(t){super(t),this.setupFileInput()}onActivate(){this.openFilePicker()}openFilePicker(){this._core.store.isDisabled||this.fileInput?.click()}setupFileInput(){this.fileInput=document.createElement("input"),this.fileInput.type="file",this.fileInput.accept="image/*",this.fileInput.multiple=!0,this.fileInput.style.display="none",this.fileInput.addEventListener("change",this.handleFileSelect.bind(this)),this.fileInput.addEventListener("cancel",this.handleCancel.bind(this)),document.body.appendChild(this.fileInput)}handleFileSelect(t){const n=t.target,e=n.files?Array.from(n.files):[];if(0===e.length)return console.info("File selection cancelled by user."),this.handleCancel(),void(n&&(n.value=""));const r=e.map((t=>St(t,{maxWidthOrHeight:this.maxCompressionSize}).then((t=>this.prepareImage(t)))));Promise.allSettled(r).then((t=>{const n=[];for(const e of t)"fulfilled"===e.status?n.push(e.value):console.error("Error during image compression or processing:",e.reason);0!==n.length?this.addImagesToStore(n):this.handleCancel()})),n&&(n.value="")}async prepareImage(t){let n=null;try{const e=t.type||"image/png";n=URL.createObjectURL(t);const r=await this.measureImage(n),i=await this._core.assetResolver.put(t,{mimeType:e,kind:"image",width:r.naturalWidth,height:r.naturalHeight}),o=u.create(this._core);o.assetId=i.id,o.mimeType=i.mimeType;const{scaledWidth:s,scaledHeight:a}=o.calculateScaledDimensions({width:r.naturalWidth,height:r.naturalHeight});return o.width=s,o.height=a,o.resolvedSrc=await this._core.assetResolver.resolve(i.id),o.loadState="ready",o}finally{if(n)try{URL.revokeObjectURL(n)}catch{}}}measureImage(t){return new Promise(((n,e)=>{const r=new Image;r.onload=()=>n({naturalWidth:r.naturalWidth,naturalHeight:r.naturalHeight}),r.onerror=t=>e(t),r.src=t}))}addImagesToStore(t){const n=this._core.store.currentZIndex;t.forEach(((t,e)=>{if(t.zIndex=n+e,t.centerInViewport(),e>0){const n=e*this.multiImportOffset;t.updatePosition(t.translateX+n,t.translateY+n)}this._core.addObject(t)})),this._core.store.setState("activeTool",h.getTool("selection")),this._core.selectObjects(t),this._core.engine.emitObjectsChange(),this._core.engine.emitObjectsAdded(t)}handleCancel(){this._core.store.setState("activeTool",h.getTool("selection"))}}class jt{static _pointerCursor=null;static getPointerCursor(){return this._pointerCursor||(this._pointerCursor=this.getCursor({iconName:"pointer"})),this._pointerCursor}static getCursor(t){const n="default"===t.iconName?"mouse-pointer":t.iconName,e=W.get(n);if(!e)return console.warn(`Icon "${n}" not found in registry.`),"auto";const r=t.size||24,i=t.rotation||0,o=t.color||"black",s=t.hotspot||("default"===t.iconName?{x:4,y:4}:{x:r/2,y:r/2});let a=e.replace(/width="\d+"/,`width="${r}"`).replace(/height="\d+"/,`height="${r}"`).replace(/currentColor/g,o);const c=r/2;return`url('data:image/svg+xml;charset=utf-8,${encodeURIComponent(`\n <svg xmlns="http://www.w3.org/2000/svg" width="${r}" height="${r}" viewBox="0 0 ${r} ${r}">\n <g transform="rotate(${i} ${c} ${c})">\n ${a}\n </g>\n </svg>\n `.replace(/\s+/g," ").trim()).replace(/'/g,"%27").replace(/"/g,"%22")}') ${s.x} ${s.y}, auto`}}class Ct{type="local";provider;isConnected=!1;constructor(t,n,e){this.provider=new P(e?.name||t,n)}async connect(){if(!this.isConnected)return new Promise((t=>{this.provider.on("synced",(()=>{this.isConnected=!0,t()}))}))}disconnect(){this.isConnected=!1}async reconnect(){return this.disconnect(),this.connect()}destroy(){this.provider&&this.provider.destroy(),this.isConnected=!1}}class zt{_core;_anchorIndex=new Map;constructor(t){this._core=t}setAnchor(t,n,e){const r=this.getLineById(t);if(!r)return;if("start"===n&&r.endAnchor?.objectId===e)return;if("end"===n&&r.startAnchor?.objectId===e)return;this.removeAnchor(t,n);const i={objectId:e};"start"===n?r.startAnchor=i:r.endAnchor=i,this.addToIndex(e,t,n),this.snapEndpointToObject(r,n,e),this._core.store.objects.update(r)}removeAnchor(t,n){const e=this.getLineById(t);if(!e)return;const r="start"===n?e.startAnchor:e.endAnchor;r&&(this.removeFromIndex(r.objectId,t,n),"start"===n?e.startAnchor=void 0:e.endAnchor=void 0)}getAnchor(t,n){const e=this.getLineById(t);return e?("start"===n?e.startAnchor:e.endAnchor)??null:null}getLinesAnchoredTo(t){const n=this._anchorIndex.get(t);return n?Array.from(n):[]}updateAnchorsForObject(t){const n=this.getLinesAnchoredTo(t);if(0!==n.length&&this.getObjectById(t))for(const e of n){const n=this.getLineById(e.lineId);n&&this.snapEndpointToObject(n,e.endpoint,t)}}snapEndpointToObject(t,n,e){const r=this.getObjectById(e);if(!r)return;const i=this.worldToLineLocal(t,r.centerX,r.centerY);t.updateEndpoint(n,i.x,i.y)}worldToLineLocal(t,n,e){const r=n-t.centerX,i=e-t.centerY,o=Math.cos(-t.rotation),s=Math.sin(-t.rotation);return{x:(r*o-i*s+t.totalWidth/2/t.scale)*t.scale+t.x,y:(r*s+i*o+t.totalHeight/2/t.scale)*t.scale+t.y}}findSnapTarget(t,n,e,r){let i=null,o=-1/0;const s=this._core.store.allNonSelectionObjects;for(const a of s){if(a.id===e)continue;if(r&&a.id===r)continue;if(!this.isAnchorable(a))continue;const s=a.rotatedPolygon;C.isPointInPolygon({x:t,y:n},[s.topLeft,s.topRight,s.bottomRight,s.bottomLeft])&&a.zIndex>o&&(o=a.zIndex,i={objectId:a.id,centerX:a.centerX,centerY:a.centerY})}return i}setSnapCandidate(t){this._core.store.state.snapCandidate=t,this._core.rerender()}getSnapCandidate(){return this._core.store.state.snapCandidate??null}clearSnapCandidate(){this._core.store.state.snapCandidate=null,this._core.rerender()}getAnchorLinesRenderData(){const t=this._core.store.selectionGroup;if(!t||1!==t.objects.length)return null;const n=t.objects[0];if(!l.isInstanceOf(n,"KritzelLine"))return null;const e=n,r=this.computeAnchorVisualization(e,"start"),i=this.computeAnchorVisualization(e,"end"),o=this.isFiniteAnchorVisualization(r)?r:null,s=this.isFiniteAnchorVisualization(i)?i:null;if(!o&&!s)return null;const a=this.getSafeScale(this._core.store.state.scale),c=this.getSafeScale(e.scale),u=e.strokeWidth/c,h=""+2/a,f=Math.max(2*u,4/a),d=`${f} ${f}`,p=8/a;return this.areFiniteNumbers(u,f,p)?{lineStrokeWidth:u,indicatorStrokeWidth:h,dashArray:d,indicatorRadius:p,startAnchorViz:o,endAnchorViz:s}:null}getSnapIndicatorRenderData(){const t=this.getSnapCandidate();if(!t)return null;if(!this.areFiniteNumbers(t.centerX,t.centerY,t.lineEndpointX,t.lineEndpointY))return null;const n=this.getSafeScale(this._core.store.state.scale),e=8/n,r=""+2/n,i=this.areFiniteNumbers(t.lineStrokeWidth)&&t.lineStrokeWidth>0?t.lineStrokeWidth:4/n,o=`${i}`,s=Math.max(2*i,4/n),a=`${s} ${s}`,c=t.lineStroke||"#000000";let u,h=this.areFiniteNumbers(t.edgeX)?t.edgeX:void 0,l=this.areFiniteNumbers(t.edgeY)?t.edgeY:void 0,f=h,d=l;const p=this.areFiniteNumbers(t.arrowOffset)&&t.arrowOffset>0?t.arrowOffset:void 0;if(void 0!==p&&void 0!==h&&void 0!==l){const n=t.lineEndpointX-h,e=t.lineEndpointY-l,r=Math.sqrt(n*n+e*e);r>p&&(f=h+n/r*p,d=l+e/r*p);const i=h-t.lineEndpointX,o=l-t.lineEndpointY,s=Math.sqrt(i*i+o*o);if(s>0){const t=i/s,n=o/s,e=-n,r=h,a=l,c=r-t*p,f=a-n*p,d=c+e*p/2,v=f+t*p/2,g=c-e*p/2,w=f-t*p/2;this.areFiniteNumbers(r,a,d,v,g,w)&&(u=`${r},${a} ${d},${v} ${g},${w}`)}}if(!this.areFiniteNumbers(e,i,s))return null;const v=(()=>{if(void 0!==t.controlX&&void 0!==t.controlY&&void 0!==t.t&&this.areFiniteNumbers(t.controlX,t.controlY,t.t)){const n="start"===t.endpoint?1-t.t:t.t;if(n>=1)return;const e=this.extractQuadraticSegment({x:t.lineEndpointX,y:t.lineEndpointY},{x:t.controlX,y:t.controlY},{x:t.centerX,y:t.centerY},n,1);if(!this.areFiniteNumbers(e.start.x,e.start.y,e.control.x,e.control.y,e.end.x,e.end.y))return;return`M ${e.start.x} ${e.start.y} Q ${e.control.x} ${e.control.y} ${e.end.x} ${e.end.y}`}})();return{indicatorRadius:e,indicatorStrokeWidth:r,lineStrokeWidth:o,dashArray:a,lineStroke:c,centerX:t.centerX,centerY:t.centerY,lineEndpointX:t.lineEndpointX,lineEndpointY:t.lineEndpointY,edgeX:h,edgeY:l,arrowOffset:p,arrowStyle:t.arrowStyle,arrowFill:t.arrowFill,solidLineEndX:f,solidLineEndY:d,arrowPoints:u,snapLinePath:v}}handleObjectDeleted(t){const n=this.getLinesAnchoredTo(t);for(const t of n){this.removeAnchor(t.lineId,t.endpoint);const n=this.getLineById(t.lineId);n&&this._core.store.objects.update(n)}this._anchorIndex.delete(t)}handleLineDeleted(t){const n=this.getLineById(t);n&&(n.startAnchor&&this.removeFromIndex(n.startAnchor.objectId,t,"start"),n.endAnchor&&this.removeFromIndex(n.endAnchor.objectId,t,"end"))}rebuildIndex(){this._anchorIndex.clear();const t=this._core.store.allObjects;for(const n of t)n instanceof j&&(n.startAnchor&&this.addToIndex(n.startAnchor.objectId,n.id,"start"),n.endAnchor&&this.addToIndex(n.endAnchor.objectId,n.id,"end"))}addToIndex(t,n,e){this._anchorIndex.has(t)||this._anchorIndex.set(t,new Set);const r=this._anchorIndex.get(t);for(const t of r)if(t.lineId===n&&t.endpoint===e)return;r.add({lineId:n,endpoint:e})}removeFromIndex(t,n,e){const r=this._anchorIndex.get(t);if(r){for(const t of r)if(t.lineId===n&&t.endpoint===e){r.delete(t);break}0===r.size&&this._anchorIndex.delete(t)}}getLineById(t){const n=this._core.store.objects.filter((n=>n.id===t));if(0===n.length)return null;const e=n[0];return e instanceof j?e:null}getObjectById(t){const n=this._core.store.objects.filter((n=>n.id===t));return n.length>0?n[0]:null}findAnchorTarget(t,n){const e="start"===n?t.startAnchor:t.endAnchor;return e?this._core.store.allNonSelectionObjects.find((t=>t.id===e.objectId))??null:null}computeAnchorVisualization(t,n){if(!("start"===n?t.startAnchor:t.endAnchor))return null;const e=this.findAnchorTarget(t,n);if(!e)return null;const r=this.computeAnchorClipInfo(t,n,e);if(!r)return null;const i=e.centerX,o=e.centerY;if(!this.areFiniteNumbers(r.worldX,r.worldY,i,o))return null;const s=this.buildAnchorPath(t,n,r,e)??void 0;return s&&!this.isFinitePathData(s)?null:{edgeX:r.worldX,edgeY:r.worldY,centerX:i,centerY:o,pathD:s}}computeClippedLinePath(t,n=!1){const e=this.getSnapCandidate(),r=this._core.store.selectionGroup,i=e&&r&&1===r.objects.length&&r.objects[0].id===t.id;if(!t.startAnchor&&!t.endAnchor&&!i)return n?void 0!==t.controlX&&void 0!==t.controlY?`M ${t.startX-t.x} ${t.startY-t.y} Q ${t.controlX-t.x} ${t.controlY-t.y} ${t.endX-t.x} ${t.endY-t.y}`:`M ${t.startX-t.x} ${t.startY-t.y} L ${t.endX-t.x} ${t.endY-t.y}`:t.d;const o=t.startAnchor?this.findAnchorTarget(t,"start"):null,s=t.endAnchor?this.findAnchorTarget(t,"end"):null;let a=o?this.computeAnchorClipInfo(t,"start",o):null,c=s?this.computeAnchorClipInfo(t,"end",s):null;if(i&&void 0!==e.edgeX&&void 0!==e.edgeY){const n=this.lineWorldToLocal(t,e.edgeX,e.edgeY),r={worldX:e.edgeX,worldY:e.edgeY,localX:n.x,localY:n.y,t:e.t};"start"===e.endpoint?a=r:c=r}const u=n?t.x:0,h=n?t.y:0;if(void 0!==t.controlX&&void 0!==t.controlY){let n=a?.t??0,e=c?.t??1;if(a&&t.hasStartArrow){const e=t.getArrowSize("start"),r=this.evaluateDerivativeSpeedAtT(t,n);r>0&&(n+=e/r)}if(c&&t.hasEndArrow){const n=t.getArrowSize("end"),r=this.evaluateDerivativeSpeedAtT(t,e);r>0&&(e-=n/r)}if(n<0&&(n=0),e>1&&(e=1),e<=n){const t=(n+e)/2;n=t,e=t}const r=this.extractQuadraticSegment({x:t.startX,y:t.startY},{x:t.controlX,y:t.controlY},{x:t.endX,y:t.endY},n,e);return`M ${r.start.x-u} ${r.start.y-h} Q ${r.control.x-u} ${r.control.y-h} ${r.end.x-u} ${r.end.y-h}`}let l=a?.localX??t.startX,f=a?.localY??t.startY,d=c?.localX??t.endX,p=c?.localY??t.endY;if(a&&t.hasStartArrow){const n=t.getArrowSize("start"),e=d-l,r=p-f,i=Math.sqrt(e*e+r*r);i>n&&(l+=e/i*n,f+=r/i*n)}if(c&&t.hasEndArrow){const n=t.getArrowSize("end"),e=l-d,r=f-p,i=Math.sqrt(e*e+r*r);i>n&&(d+=e/i*n,p+=r/i*n)}return`M ${l-u} ${f-h} L ${d-u} ${p-h}`}computeAnchorClipInfo(t,n,e){return void 0!==t.controlX&&void 0!==t.controlY?this.computeCurvedClipInfo(t,n,e):this.computeStraightClipInfo(t,n,e)}computeStraightClipInfo(t,n,e){const r="start"===n?this.lineLocalToWorld(t,t.endX,t.endY):this.lineLocalToWorld(t,t.startX,t.startY),i=this.getPathClipPoint(e,r);if(i){const e=this.lineWorldToLocal(t,i.x,i.y),r=Math.sqrt(Math.pow(t.endX-t.startX,2)+Math.pow(t.endY-t.startY,2)),o=Math.sqrt(Math.pow(e.x-t.startX,2)+Math.pow(e.y-t.startY,2));return{localX:e.x,localY:e.y,worldX:i.x,worldY:i.y,t:r>0?o/r:"start"===n?0:1}}const o=this.getClipPolygonForObject(e);let s;if(s=o?C.getLinePointsArrayIntersection(r,{x:e.centerX,y:e.centerY},o):C.getLinePolygonIntersection(r,{x:e.centerX,y:e.centerY},e.rotatedPolygon),!s)return null;const a=this.lineWorldToLocal(t,s.x,s.y),c=Math.sqrt(Math.pow(t.endX-t.startX,2)+Math.pow(t.endY-t.startY,2)),u=Math.sqrt(Math.pow(a.x-t.startX,2)+Math.pow(a.y-t.startY,2));return{localX:a.x,localY:a.y,worldX:s.x,worldY:s.y,t:c>0?u/c:"start"===n?0:1}}computeCurvedClipInfo(t,n,e){if(l.isInstanceOf(e,"KritzelPath"))return this.findCurveExitPointForPath(t,n,e);const r=this.getClipPolygonForObject(e),i=r??this.getPolygonPoints(e.rotatedPolygon),o=this.findCurveExitPoint(t,n,i);if(o)return o;const s="start"===n?this.lineLocalToWorld(t,t.endX,t.endY):this.lineLocalToWorld(t,t.startX,t.startY);let a;if(a=r?C.getLinePointsArrayIntersection(s,{x:e.centerX,y:e.centerY},r):C.getLinePolygonIntersection(s,{x:e.centerX,y:e.centerY},e.rotatedPolygon),!a)return null;const c=this.lineWorldToLocal(t,a.x,a.y),u=this.approximateParameterForWorldPoint(t,a);return{localX:c.x,localY:c.y,worldX:a.x,worldY:a.y,t:u}}findCurveExitPoint(t,n,e){const r="start"===n?0:1,i=this.evaluateLineAtT(t,r);let o=C.isPointInPolygon({x:i.worldX,y:i.worldY},e),s=r;for(let r=1;r<=64;r++){const i="start"===n?r/64:1-r/64,a=this.evaluateLineAtT(t,i),c=C.isPointInPolygon({x:a.worldX,y:a.worldY},e);if(o&&!c){const n=this.refineCurveExitParameter(t,e,s,i),r=this.evaluateLineAtT(t,n);return{localX:r.localX,localY:r.localY,worldX:r.worldX,worldY:r.worldY,t:n}}o=c,s=i}return null}findCurveExitPointForPath(t,n,e){const r="start"===n?0:1,i=e.strokeWidth/e.scale/2,o=this.getPathAdjustedPoints(e);if(o.length<1)return null;const s=this.evaluateLineAtT(t,r);let a=this.isPointInPathStroke(s.worldX,s.worldY,o,i),c=r;for(let e=1;e<=64;e++){const r="start"===n?e/64:1-e/64,s=this.evaluateLineAtT(t,r),u=this.isPointInPathStroke(s.worldX,s.worldY,o,i);if(a&&!u){const n=this.refineCurveExitParameterForPath(t,o,i,c,r),e=this.evaluateLineAtT(t,n);return{localX:e.localX,localY:e.localY,worldX:e.worldX,worldY:e.worldY,t:n}}a=u,c=r}return null}refineCurveExitParameterForPath(t,n,e,r,i){let o=r,s=i;for(let r=0;r<8;r++){const r=(o+s)/2,i=this.evaluateLineAtT(t,r);this.isPointInPathStroke(i.worldX,i.worldY,n,e)?o=r:s=r}return(o+s)/2}getPathAdjustedPoints(t){return this.computePathAdjustedPoints(t)}computePathAdjustedPoints(t){if(!t.points?.length)return[];const n=t.rotation,e=Math.cos(n),r=Math.sin(n),i=t.points.map((t=>t[0])),o=t.points.map((t=>t[1])),s={x:(Math.min(...i)+Math.max(...i))/2,y:(Math.min(...o)+Math.max(...o))/2},{x:a,y:c}=s;return t.points.map((([t,n])=>{const i=t-a,o=n-c;return[a+i*e-o*r,c+i*r+o*e]})).map((([n,e])=>[Math.abs(n-t.x)/t.scale+t.translateX,Math.abs(e-t.y)/t.scale+t.translateY]))}isPointInPathStroke(t,n,e,r){if(1===e.length){const i=e[0],o=t-i[0],s=n-i[1];return Math.sqrt(o*o+s*s)<=r}for(let i=0;i<e.length-1;i++){const o=e[i],s=e[i+1];if(this.pointToSegmentDistance(t,n,o[0],o[1],s[0],s[1])<=r)return!0}return!1}pointToSegmentDistance(t,n,e,r,i,o){const s=i-e,a=o-r,c=s*s+a*a;if(0===c)return Math.sqrt((t-e)*(t-e)+(n-r)*(n-r));let u=((t-e)*s+(n-r)*a)/c;u=Math.max(0,Math.min(1,u));const h=e+u*s,l=r+u*a;return Math.sqrt((t-h)*(t-h)+(n-l)*(n-l))}refineCurveExitParameter(t,n,e,r){let i=e,o=r;for(let e=0;e<8;e++){const e=(i+o)/2,r=this.evaluateLineAtT(t,e);C.isPointInPolygon({x:r.worldX,y:r.worldY},n)?i=e:o=e}return(i+o)/2}approximateParameterForWorldPoint(t,n){let e=0,r=1/0;for(let i=0;i<=80;i++){const o=i/80,s=this.evaluateLineAtT(t,o),a=Math.hypot(s.worldX-n.x,s.worldY-n.y);a<r&&(r=a,e=o)}return e}evaluateLineAtT(t,n){const e=Math.max(0,Math.min(1,n));let r,i;if(void 0!==t.controlX&&void 0!==t.controlY){const n=1-e;r=n*n*t.startX+2*n*e*t.controlX+e*e*t.endX,i=n*n*t.startY+2*n*e*t.controlY+e*e*t.endY}else r=t.startX+(t.endX-t.startX)*e,i=t.startY+(t.endY-t.startY)*e;const o=this.lineLocalToWorld(t,r,i);return{t:e,localX:r,localY:i,worldX:o.x,worldY:o.y}}evaluateDerivativeSpeedAtT(t,n){const e=Math.max(0,Math.min(1,n));if(void 0!==t.controlX&&void 0!==t.controlY){const n=t.controlX,r=t.controlY,i=2*(1-e)*(n-t.startX)+2*e*(t.endX-n),o=2*(1-e)*(r-t.startY)+2*e*(t.endY-r);return Math.sqrt(i*i+o*o)}{const n=t.endX-t.startX,e=t.endY-t.startY;return Math.sqrt(n*n+e*e)}}extractQuadraticSegment(t,n,e,r,i){let o=Math.max(0,Math.min(1,r)),s=Math.max(0,Math.min(1,i));if(s<o){const t=o;o=s,s=t}let a={start:t,control:n,end:e};if(o>0){a=this.splitQuadraticSegment(a,o).right;const t=1-o;s=t>0?(s-o)/t:1}return s<1&&(a=this.splitQuadraticSegment(a,s).left),a}splitQuadraticSegment(t,n){const e=Math.max(0,Math.min(1,n)),r=t.start,i=t.control,o=t.end,s=this.lerpPoint(r,i,e),a=this.lerpPoint(i,o,e),c=this.lerpPoint(s,a,e);return{left:{start:r,control:s,end:c},right:{start:c,control:a,end:o}}}lerpPoint(t,n,e){return{x:t.x+(n.x-t.x)*e,y:t.y+(n.y-t.y)*e}}buildAnchorPath(t,n,e,r){if(void 0===t.controlX||void 0===t.controlY||void 0===e.t)return`M ${e.worldX} ${e.worldY} L ${r.centerX} ${r.centerY}`;const i="start"===n?0:e.t,o="start"===n?e.t:1;if(o<=i)return`M ${e.worldX} ${e.worldY} L ${r.centerX} ${r.centerY}`;const s=this.extractQuadraticSegment({x:t.startX,y:t.startY},{x:t.controlX,y:t.controlY},{x:t.endX,y:t.endY},i,o);return this.buildWorldQuadraticPath(t,s,"start"===n)}buildWorldQuadraticPath(t,n,e=!1){const r=e?n.end:n.start,i=e?n.start:n.end,o=n.control,s=this.lineLocalToWorld(t,r.x,r.y),a=this.lineLocalToWorld(t,o.x,o.y),c=this.lineLocalToWorld(t,i.x,i.y);return`M ${s.x} ${s.y} Q ${a.x} ${a.y} ${c.x} ${c.y}`}getPolygonPoints(t){return[t.topLeft,t.topRight,t.bottomRight,t.bottomLeft]}getClipPolygonForObject(t){return l.isInstanceOf(t,"KritzelShape")?t.getClipPolygon():null}getPathClipPoint(t,n){return l.isInstanceOf(t,"KritzelPath")?t.getClipPoint(n):null}lineLocalToWorld(t,n,e){const r=n-t.x,i=e-t.y,o=t.totalWidth/2,s=t.totalHeight/2,a=Math.cos(t.rotation),c=Math.sin(t.rotation),u=(r-o)*a-(i-s)*c+o,h=(r-o)*c+(i-s)*a+s,l=this.getSafeScale(t.scale);return{x:u/l+t.translateX,y:h/l+t.translateY}}lineWorldToLocal(t,n,e){const r=this.getSafeScale(t.scale),i=(n-t.translateX)*r,o=(e-t.translateY)*r,s=t.totalWidth/2,a=t.totalHeight/2,c=Math.cos(-t.rotation),u=Math.sin(-t.rotation);return{x:(i-s)*c-(o-a)*u+s+t.x,y:(i-s)*u+(o-a)*c+a+t.y}}getSafeScale(t){return Number.isFinite(t)&&Math.abs(t)>1e-6?t:1}areFiniteNumbers(...t){return t.every((t=>void 0!==t&&Number.isFinite(t)))}isFiniteAnchorVisualization(t){return!(!t||!this.areFiniteNumbers(t.edgeX,t.edgeY,t.centerX,t.centerY)||t.pathD&&!this.isFinitePathData(t.pathD))}isFinitePathData(t){return!t.includes("Infinity")&&!t.includes("NaN")}isAnchorable(t){return!(t instanceof f||t instanceof d)&&!(t instanceof j)&&t.isVisible}}var It;function Tt(t,n,e,r,i,o){const s=o?.quiet??!0,a=n.get("schemaVersion")??0;if(a>=i)return{migrated:!1,fromVersion:a,toVersion:a};const c=r.filter((t=>t.fromVersion>=a&&t.toVersion<=i)).sort(((t,n)=>t.fromVersion-n.fromVersion));return s||console.log(`[Kritzel] Running ${c.length} migration(s) from v${a} to v${i}`),t.transact((()=>{for(const n of c)s||console.log(`[Kritzel] Migrating v${n.fromVersion} → v${n.toVersion}`),n.migrate(t,e);n.set("schemaVersion",i)}),"migration"),s||console.log(`[Kritzel] Migrations complete. Schema now at v${i}`),{migrated:!0,fromVersion:a,toVersion:i}}!function(t){t.StartHorizontal="start-horizontal",t.CenterHorizontal="center-horizontal",t.EndHorizontal="end-horizontal",t.StartVertical="start-vertical",t.CenterVertical="center-vertical",t.EndVertical="end-vertical"}(It||(It={}));const Et=[{fromVersion:1,toVersion:2,migrate(t,n){const e=n.workspaces;e&&e.forEach(((t,n)=>{const r=t?.viewport;if(!r)return;if("centerWorldX"in r)return;const i=r.scale??1,o=r.translateX??0,s=r.translateY??0,a={...t,viewport:{centerWorldX:-o/i||0,centerWorldY:-s/i||0,scale:i}};e.set(n,a)}))}}],_t=[{fromVersion:1,toVersion:2,migrate(t,n){}}],Ot=1e3,Pt=1e-4,Bt={providers:[Ct]};var Ut,Wt,Rt,Lt={exports:{}},Dt=(Ut||(Ut=1,Wt=Lt,Rt=Lt.exports,function(){var t,n="Expected a function",e="__lodash_hash_undefined__",r="__lodash_placeholder__",i=32,o=128,s=1/0,a=9007199254740991,c=NaN,u=4294967295,h=[["ary",o],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",i],["partialRight",64],["rearg",256]],l="[object Arguments]",f="[object Array]",d="[object Boolean]",p="[object Date]",v="[object Error]",g="[object Function]",w="[object GeneratorFunction]",y="[object Map]",m="[object Number]",b="[object Object]",k="[object Promise]",A="[object RegExp]",x="[object Set]",$="[object String]",S="[object Symbol]",M="[object WeakMap]",j="[object ArrayBuffer]",C="[object DataView]",z="[object Float32Array]",I="[object Float64Array]",T="[object Int8Array]",E="[object Int16Array]",_="[object Int32Array]",O="[object Uint8Array]",P="[object Uint8ClampedArray]",B="[object Uint16Array]",U="[object Uint32Array]",W=/\b__p \+= '';/g,R=/\b(__p \+=) '' \+/g,L=/(__e\(.*?\)|\b__t\)) \+\n'';/g,D=/&(?:amp|lt|gt|quot|#39);/g,F=/[&<>"']/g,K=RegExp(D.source),V=RegExp(F.source),H=/<%-([\s\S]+?)%>/g,X=/<%([\s\S]+?)%>/g,G=/<%=([\s\S]+?)%>/g,Y=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Q=/^\w*$/,q=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Z=/[\\^$.*+?()[\]{}|]/g,J=RegExp(Z.source),tt=/^\s+/,nt=/\s/,et=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,rt=/\{\n\/\* \[wrapped with (.+)\] \*/,it=/,? & /,ot=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,st=/[()=,{}\[\]\/\s]/,at=/\\(\\)?/g,ct=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ut=/\w*$/,ht=/^[-+]0x[0-9a-f]+$/i,lt=/^0b[01]+$/i,ft=/^\[object .+?Constructor\]$/,dt=/^0o[0-7]+$/i,pt=/^(?:0|[1-9]\d*)$/,vt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,gt=/($^)/,wt=/['\n\r\u2028\u2029\\]/g,yt="\\ud800-\\udfff",mt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",bt="\\u2700-\\u27bf",kt="a-z\\xdf-\\xf6\\xf8-\\xff",At="A-Z\\xc0-\\xd6\\xd8-\\xde",xt="\\ufe0e\\ufe0f",$t="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",St="["+yt+"]",Mt="["+$t+"]",jt="["+mt+"]",Ct="\\d+",zt="["+bt+"]",It="["+kt+"]",Tt="[^"+yt+$t+Ct+bt+kt+At+"]",Et="\\ud83c[\\udffb-\\udfff]",_t="[^"+yt+"]",Ot="(?:\\ud83c[\\udde6-\\uddff]){2}",Pt="[\\ud800-\\udbff][\\udc00-\\udfff]",Bt="["+At+"]",Ut="\\u200d",Lt="(?:"+It+"|"+Tt+")",Dt="(?:"+Bt+"|"+Tt+")",Ft="(?:['’](?:d|ll|m|re|s|t|ve))?",Kt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Vt="(?:"+jt+"|"+Et+")?",Nt="["+xt+"]?",Ht=Nt+Vt+"(?:"+Ut+"(?:"+[_t,Ot,Pt].join("|")+")"+Nt+Vt+")*",Xt="(?:"+[zt,Ot,Pt].join("|")+")"+Ht,Gt="(?:"+[_t+jt+"?",jt,Ot,Pt,St].join("|")+")",Yt=RegExp("['’]","g"),Qt=RegExp(jt,"g"),qt=RegExp(Et+"(?="+Et+")|"+Gt+Ht,"g"),Zt=RegExp([Bt+"?"+It+"+"+Ft+"(?="+[Mt,Bt,"$"].join("|")+")",Dt+"+"+Kt+"(?="+[Mt,Bt+Lt,"$"].join("|")+")",Bt+"?"+Lt+"+"+Ft,Bt+"+"+Kt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Ct,Xt].join("|"),"g"),Jt=RegExp("["+Ut+yt+mt+xt+"]"),tn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,nn=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],en=-1,rn={};rn[z]=rn[I]=rn[T]=rn[E]=rn[_]=rn[O]=rn[P]=rn[B]=rn[U]=!0,rn[l]=rn[f]=rn[j]=rn[d]=rn[C]=rn[p]=rn[v]=rn[g]=rn[y]=rn[m]=rn[b]=rn[A]=rn[x]=rn[$]=rn[M]=!1;var on={};on[l]=on[f]=on[j]=on[C]=on[d]=on[p]=on[z]=on[I]=on[T]=on[E]=on[_]=on[y]=on[m]=on[b]=on[A]=on[x]=on[$]=on[S]=on[O]=on[P]=on[B]=on[U]=!0,on[v]=on[g]=on[M]=!1;var sn={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},an=parseFloat,cn=parseInt,un="object"==typeof N&&N&&N.Object===Object&&N,hn="object"==typeof self&&self&&self.Object===Object&&self,ln=un||hn||Function("return this")(),fn=Rt&&!Rt.nodeType&&Rt,dn=fn&&Wt&&!Wt.nodeType&&Wt,pn=dn&&dn.exports===fn,vn=pn&&un.process,gn=function(){try{return dn&&dn.require&&dn.require("util").types||vn&&vn.binding&&vn.binding("util")}catch(t){}}(),wn=gn&&gn.isArrayBuffer,yn=gn&&gn.isDate,mn=gn&&gn.isMap,bn=gn&&gn.isRegExp,kn=gn&&gn.isSet,An=gn&&gn.isTypedArray;function xn(t,n,e){switch(e.length){case 0:return t.call(n);case 1:return t.call(n,e[0]);case 2:return t.call(n,e[0],e[1]);case 3:return t.call(n,e[0],e[1],e[2])}return t.apply(n,e)}function $n(t,n,e,r){for(var i=-1,o=null==t?0:t.length;++i<o;){var s=t[i];n(r,s,e(s),t)}return r}function Sn(t,n){for(var e=-1,r=null==t?0:t.length;++e<r&&!1!==n(t[e],e,t););return t}function Mn(t,n){for(var e=null==t?0:t.length;e--&&!1!==n(t[e],e,t););return t}function jn(t,n){for(var e=-1,r=null==t?0:t.length;++e<r;)if(!n(t[e],e,t))return!1;return!0}function Cn(t,n){for(var e=-1,r=null==t?0:t.length,i=0,o=[];++e<r;){var s=t[e];n(s,e,t)&&(o[i++]=s)}return o}function zn(t,n){return!(null==t||!t.length)&&Rn(t,n,0)>-1}function In(t,n,e){for(var r=-1,i=null==t?0:t.length;++r<i;)if(e(n,t[r]))return!0;return!1}function Tn(t,n){for(var e=-1,r=null==t?0:t.length,i=Array(r);++e<r;)i[e]=n(t[e],e,t);return i}function En(t,n){for(var e=-1,r=n.length,i=t.length;++e<r;)t[i+e]=n[e];return t}function _n(t,n,e,r){var i=-1,o=null==t?0:t.length;for(r&&o&&(e=t[++i]);++i<o;)e=n(e,t[i],i,t);return e}function On(t,n,e,r){var i=null==t?0:t.length;for(r&&i&&(e=t[--i]);i--;)e=n(e,t[i],i,t);return e}function Pn(t,n){for(var e=-1,r=null==t?0:t.length;++e<r;)if(n(t[e],e,t))return!0;return!1}var Bn=Kn("length");function Un(t,n,e){var r;return e(t,(function(t,e,i){if(n(t,e,i))return r=e,!1})),r}function Wn(t,n,e,r){for(var i=t.length,o=e+(r?1:-1);r?o--:++o<i;)if(n(t[o],o,t))return o;return-1}function Rn(t,n,e){return n==n?function(t,n,e){for(var r=e-1,i=t.length;++r<i;)if(t[r]===n)return r;return-1}(t,n,e):Wn(t,Dn,e)}function Ln(t,n,e,r){for(var i=e-1,o=t.length;++i<o;)if(r(t[i],n))return i;return-1}function Dn(t){return t!=t}function Fn(t,n){var e=null==t?0:t.length;return e?Hn(t,n)/e:c}function Kn(n){return function(e){return null==e?t:e[n]}}function Vn(n){return function(e){return null==n?t:n[e]}}function Nn(t,n,e,r,i){return i(t,(function(t,i,o){e=r?(r=!1,t):n(e,t,i,o)})),e}function Hn(n,e){for(var r,i=-1,o=n.length;++i<o;){var s=e(n[i]);s!==t&&(r=r===t?s:r+s)}return r}function Xn(t,n){for(var e=-1,r=Array(t);++e<t;)r[e]=n(e);return r}function Gn(t){return t?t.slice(0,le(t)+1).replace(tt,""):t}function Yn(t){return function(n){return t(n)}}function Qn(t,n){return Tn(n,(function(n){return t[n]}))}function qn(t,n){return t.has(n)}function Zn(t,n){for(var e=-1,r=t.length;++e<r&&Rn(n,t[e],0)>-1;);return e}function Jn(t,n){for(var e=t.length;e--&&Rn(n,t[e],0)>-1;);return e}var te=Vn({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),ne=Vn({"&":"&","<":"<",">":">",'"':""","'":"'"});function ee(t){return"\\"+sn[t]}function re(t){return Jt.test(t)}function ie(t){var n=-1,e=Array(t.size);return t.forEach((function(t,r){e[++n]=[r,t]})),e}function oe(t,n){return function(e){return t(n(e))}}function se(t,n){for(var e=-1,i=t.length,o=0,s=[];++e<i;){var a=t[e];a!==n&&a!==r||(t[e]=r,s[o++]=e)}return s}function ae(t){var n=-1,e=Array(t.size);return t.forEach((function(t){e[++n]=t})),e}function ce(t){var n=-1,e=Array(t.size);return t.forEach((function(t){e[++n]=[t,t]})),e}function ue(t){return re(t)?function(t){for(var n=qt.lastIndex=0;qt.test(t);)++n;return n}(t):Bn(t)}function he(t){return re(t)?function(t){return t.match(qt)||[]}(t):function(t){return t.split("")}(t)}function le(t){for(var n=t.length;n--&&nt.test(t.charAt(n)););return n}var fe=Vn({"&":"&","<":"<",">":">",""":'"',"'":"'"}),de=function N(nt){var yt,mt=(nt=null==nt?ln:de.defaults(ln.Object(),nt,de.pick(ln,nn))).Array,bt=nt.Date,kt=nt.Error,At=nt.Function,xt=nt.Math,$t=nt.Object,St=nt.RegExp,Mt=nt.String,jt=nt.TypeError,Ct=mt.prototype,zt=$t.prototype,It=nt["__core-js_shared__"],Tt=At.prototype.toString,Et=zt.hasOwnProperty,_t=0,Ot=(yt=/[^.]+$/.exec(It&&It.keys&&It.keys.IE_PROTO||""))?"Symbol(src)_1."+yt:"",Pt=zt.toString,Bt=Tt.call($t),Ut=ln._,Wt=St("^"+Tt.call(Et).replace(Z,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Rt=pn?nt.Buffer:t,Lt=nt.Symbol,Dt=nt.Uint8Array,Ft=Rt?Rt.allocUnsafe:t,Kt=oe($t.getPrototypeOf,$t),Vt=$t.create,Nt=zt.propertyIsEnumerable,Ht=Ct.splice,Xt=Lt?Lt.isConcatSpreadable:t,Gt=Lt?Lt.iterator:t,qt=Lt?Lt.toStringTag:t,Jt=function(){try{var t=ao($t,"defineProperty");return t({},"",{}),t}catch(t){}}(),sn=nt.clearTimeout!==ln.clearTimeout&&nt.clearTimeout,un=bt&&bt.now!==ln.Date.now&&bt.now,hn=nt.setTimeout!==ln.setTimeout&&nt.setTimeout,fn=xt.ceil,dn=xt.floor,vn=$t.getOwnPropertySymbols,gn=Rt?Rt.isBuffer:t,Bn=nt.isFinite,Vn=Ct.join,pe=oe($t.keys,$t),ve=xt.max,ge=xt.min,we=bt.now,ye=nt.parseInt,me=xt.random,be=Ct.reverse,ke=ao(nt,"DataView"),Ae=ao(nt,"Map"),xe=ao(nt,"Promise"),$e=ao(nt,"Set"),Se=ao(nt,"WeakMap"),Me=ao($t,"create"),je=Se&&new Se,Ce={},ze=Oo(ke),Ie=Oo(Ae),Te=Oo(xe),Ee=Oo($e),_e=Oo(Se),Oe=Lt?Lt.prototype:t,Pe=Oe?Oe.valueOf:t,Be=Oe?Oe.toString:t;function Ue(t){if(qs(t)&&!Ls(t)&&!(t instanceof De)){if(t instanceof Le)return t;if(Et.call(t,"__wrapped__"))return Po(t)}return new Le(t)}var We=function(){function n(){}return function(e){if(!Qs(e))return{};if(Vt)return Vt(e);n.prototype=e;var r=new n;return n.prototype=t,r}}();function Re(){}function Le(n,e){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=t}function De(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=u,this.__views__=[]}function Fe(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}function Ke(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}function Ve(t){var n=-1,e=null==t?0:t.length;for(this.clear();++n<e;){var r=t[n];this.set(r[0],r[1])}}function Ne(t){var n=-1,e=null==t?0:t.length;for(this.__data__=new Ve;++n<e;)this.add(t[n])}function He(t){var n=this.__data__=new Ke(t);this.size=n.size}function Xe(t,n){var e=Ls(t),r=!e&&Rs(t),i=!e&&!r&&Vs(t),o=!e&&!r&&!i&&oa(t),s=e||r||i||o,a=s?Xn(t.length,Mt):[],c=a.length;for(var u in t)!n&&!Et.call(t,u)||s&&("length"==u||i&&("offset"==u||"parent"==u)||o&&("buffer"==u||"byteLength"==u||"byteOffset"==u)||vo(u,c))||a.push(u);return a}function Ge(n){var e=n.length;return e?n[Vr(0,e-1)]:t}function Ye(t,n){return To(Si(t),ir(n,0,t.length))}function Qe(t){return To(Si(t))}function qe(n,e,r){(r!==t&&!Bs(n[e],r)||r===t&&!(e in n))&&er(n,e,r)}function Ze(n,e,r){var i=n[e];Et.call(n,e)&&Bs(i,r)&&(r!==t||e in n)||er(n,e,r)}function Je(t,n){for(var e=t.length;e--;)if(Bs(t[e][0],n))return e;return-1}function tr(t,n,e,r){return ur(t,(function(t,i,o){n(r,t,e(t),o)})),r}function nr(t,n){return t&&Mi(n,ja(n),t)}function er(t,n,e){"__proto__"==n&&Jt?Jt(t,n,{configurable:!0,enumerable:!0,value:e,writable:!0}):t[n]=e}function rr(n,e){for(var r=-1,i=e.length,o=mt(i),s=null==n;++r<i;)o[r]=s?t:Aa(n,e[r]);return o}function ir(n,e,r){return n==n&&(r!==t&&(n=n<=r?n:r),e!==t&&(n=n>=e?n:e)),n}function or(n,e,r,i,o,s){var a,c=1&e,u=2&e,h=4&e;if(r&&(a=o?r(n,i,o,s):r(n)),a!==t)return a;if(!Qs(n))return n;var f=Ls(n);if(f){if(a=function(t){var n=t.length,e=new t.constructor(n);return n&&"string"==typeof t[0]&&Et.call(t,"index")&&(e.index=t.index,e.input=t.input),e}(n),!c)return Si(n,a)}else{var v=ho(n),k=v==g||v==w;if(Vs(n))return mi(n,c);if(v==b||v==l||k&&!o){if(a=u||k?{}:fo(n),!c)return u?function(t,n){return Mi(t,uo(t),n)}(n,function(t,n){return t&&Mi(n,Ca(n),t)}(a,n)):function(t,n){return Mi(t,co(t),n)}(n,nr(a,n))}else{if(!on[v])return o?n:{};a=function(t,n,e){var r=t.constructor;switch(n){case j:return bi(t);case d:case p:return new r(+t);case C:return function(t,n){var e=n?bi(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.byteLength)}(t,e);case z:case I:case T:case E:case _:case O:case P:case B:case U:return ki(t,e);case y:return new r;case m:case $:return new r(t);case A:return function(t){var n=new t.constructor(t.source,ut.exec(t));return n.lastIndex=t.lastIndex,n}(t);case x:return new r;case S:return Pe?$t(Pe.call(t)):{}}}(n,v,c)}}s||(s=new He);var M=s.get(n);if(M)return M;s.set(n,a),ea(n)?n.forEach((function(t){a.add(or(t,e,r,t,n,s))})):Zs(n)&&n.forEach((function(t,i){a.set(i,or(t,e,r,i,n,s))}));var W=f?t:(h?u?to:Ji:u?Ca:ja)(n);return Sn(W||n,(function(t,i){W&&(t=n[i=t]),Ze(a,i,or(t,e,r,i,n,s))})),a}function sr(n,e,r){var i=r.length;if(null==n)return!i;for(n=$t(n);i--;){var o=r[i],s=n[o];if(s===t&&!(o in n)||!(0,e[o])(s))return!1}return!0}function ar(e,r,i){if("function"!=typeof e)throw new jt(n);return jo((function(){e.apply(t,i)}),r)}function cr(t,n,e,r){var i=-1,o=zn,s=!0,a=t.length,c=[],u=n.length;if(!a)return c;e&&(n=Tn(n,Yn(e))),r?(o=In,s=!1):n.length>=200&&(o=qn,s=!1,n=new Ne(n));t:for(;++i<a;){var h=t[i],l=null==e?h:e(h);if(h=r||0!==h?h:0,s&&l==l){for(var f=u;f--;)if(n[f]===l)continue t;c.push(h)}else o(n,l,r)||c.push(h)}return c}Ue.templateSettings={escape:H,evaluate:X,interpolate:G,variable:"",imports:{_:Ue}},(Ue.prototype=Re.prototype).constructor=Ue,(Le.prototype=We(Re.prototype)).constructor=Le,(De.prototype=We(Re.prototype)).constructor=De,Fe.prototype.clear=function(){this.__data__=Me?Me(null):{},this.size=0},Fe.prototype.delete=function(t){var n=this.has(t)&&delete this.__data__[t];return this.size-=n?1:0,n},Fe.prototype.get=function(n){var r=this.__data__;if(Me){var i=r[n];return i===e?t:i}return Et.call(r,n)?r[n]:t},Fe.prototype.has=function(n){var e=this.__data__;return Me?e[n]!==t:Et.call(e,n)},Fe.prototype.set=function(n,r){var i=this.__data__;return this.size+=this.has(n)?0:1,i[n]=Me&&r===t?e:r,this},Ke.prototype.clear=function(){this.__data__=[],this.size=0},Ke.prototype.delete=function(t){var n=this.__data__,e=Je(n,t);return!(e<0||(e==n.length-1?n.pop():Ht.call(n,e,1),--this.size,0))},Ke.prototype.get=function(n){var e=this.__data__,r=Je(e,n);return r<0?t:e[r][1]},Ke.prototype.has=function(t){return Je(this.__data__,t)>-1},Ke.prototype.set=function(t,n){var e=this.__data__,r=Je(e,t);return r<0?(++this.size,e.push([t,n])):e[r][1]=n,this},Ve.prototype.clear=function(){this.size=0,this.__data__={hash:new Fe,map:new(Ae||Ke),string:new Fe}},Ve.prototype.delete=function(t){var n=oo(this,t).delete(t);return this.size-=n?1:0,n},Ve.prototype.get=function(t){return oo(this,t).get(t)},Ve.prototype.has=function(t){return oo(this,t).has(t)},Ve.prototype.set=function(t,n){var e=oo(this,t),r=e.size;return e.set(t,n),this.size+=e.size==r?0:1,this},Ne.prototype.add=Ne.prototype.push=function(t){return this.__data__.set(t,e),this},Ne.prototype.has=function(t){return this.__data__.has(t)},He.prototype.clear=function(){this.__data__=new Ke,this.size=0},He.prototype.delete=function(t){var n=this.__data__,e=n.delete(t);return this.size=n.size,e},He.prototype.get=function(t){return this.__data__.get(t)},He.prototype.has=function(t){return this.__data__.has(t)},He.prototype.set=function(t,n){var e=this.__data__;if(e instanceof Ke){var r=e.__data__;if(!Ae||r.length<199)return r.push([t,n]),this.size=++e.size,this;e=this.__data__=new Ve(r)}return e.set(t,n),this.size=e.size,this};var ur=zi(wr),hr=zi(yr,!0);function lr(t,n){var e=!0;return ur(t,(function(t,r,i){return e=!!n(t,r,i)})),e}function fr(n,e,r){for(var i=-1,o=n.length;++i<o;){var s=n[i],a=e(s);if(null!=a&&(c===t?a==a&&!ia(a):r(a,c)))var c=a,u=s}return u}function dr(t,n){var e=[];return ur(t,(function(t,r,i){n(t,r,i)&&e.push(t)})),e}function pr(t,n,e,r,i){var o=-1,s=t.length;for(e||(e=po),i||(i=[]);++o<s;){var a=t[o];n>0&&e(a)?n>1?pr(a,n-1,e,r,i):En(i,a):r||(i[i.length]=a)}return i}var vr=Ii(),gr=Ii(!0);function wr(t,n){return t&&vr(t,n,ja)}function yr(t,n){return t&&gr(t,n,ja)}function mr(t,n){return Cn(n,(function(n){return Xs(t[n])}))}function br(n,e){for(var r=0,i=(e=vi(e,n)).length;null!=n&&r<i;)n=n[_o(e[r++])];return r&&r==i?n:t}function kr(t,n,e){var r=n(t);return Ls(t)?r:En(r,e(t))}function Ar(n){return null==n?n===t?"[object Undefined]":"[object Null]":qt&&qt in $t(n)?function(n){var e=Et.call(n,qt),r=n[qt];try{n[qt]=t;var i=!0}catch(t){}var o=Pt.call(n);return i&&(e?n[qt]=r:delete n[qt]),o}(n):function(t){return Pt.call(t)}(n)}function xr(t,n){return t>n}function $r(t,n){return null!=t&&Et.call(t,n)}function Sr(t,n){return null!=t&&n in $t(t)}function Mr(n,e,r){for(var i=r?In:zn,o=n[0].length,s=n.length,a=s,c=mt(s),u=1/0,h=[];a--;){var l=n[a];a&&e&&(l=Tn(l,Yn(e))),u=ge(l.length,u),c[a]=!r&&(e||o>=120&&l.length>=120)?new Ne(a&&l):t}l=n[0];var f=-1,d=c[0];t:for(;++f<o&&h.length<u;){var p=l[f],v=e?e(p):p;if(p=r||0!==p?p:0,!(d?qn(d,v):i(h,v,r))){for(a=s;--a;){var g=c[a];if(!(g?qn(g,v):i(n[a],v,r)))continue t}d&&d.push(v),h.push(p)}}return h}function jr(n,e,r){var i=null==(n=$o(n,e=vi(e,n)))?n:n[_o(Ho(e))];return null==i?t:xn(i,n,r)}function Cr(t){return qs(t)&&Ar(t)==l}function zr(n,e,r,i,o){return n===e||(null==n||null==e||!qs(n)&&!qs(e)?n!=n&&e!=e:function(n,e,r,i,o,s){var a=Ls(n),c=Ls(e),u=a?f:ho(n),h=c?f:ho(e),g=(u=u==l?b:u)==b,w=(h=h==l?b:h)==b,k=u==h;if(k&&Vs(n)){if(!Vs(e))return!1;a=!0,g=!1}if(k&&!g)return s||(s=new He),a||oa(n)?qi(n,e,r,i,o,s):function(t,n,e,r,i,o,s){switch(e){case C:if(t.byteLength!=n.byteLength||t.byteOffset!=n.byteOffset)return!1;t=t.buffer,n=n.buffer;case j:return!(t.byteLength!=n.byteLength||!o(new Dt(t),new Dt(n)));case d:case p:case m:return Bs(+t,+n);case v:return t.name==n.name&&t.message==n.message;case A:case $:return t==n+"";case y:var a=ie;case x:if(a||(a=ae),t.size!=n.size&&!(1&r))return!1;var c=s.get(t);if(c)return c==n;r|=2,s.set(t,n);var u=qi(a(t),a(n),r,i,o,s);return s.delete(t),u;case S:if(Pe)return Pe.call(t)==Pe.call(n)}return!1}(n,e,u,r,i,o,s);if(!(1&r)){var M=g&&Et.call(n,"__wrapped__"),z=w&&Et.call(e,"__wrapped__");if(M||z){var I=M?n.value():n,T=z?e.value():e;return s||(s=new He),o(I,T,r,i,s)}}return!!k&&(s||(s=new He),function(n,e,r,i,o,s){var a=1&r,c=Ji(n),u=c.length;if(u!=Ji(e).length&&!a)return!1;for(var h=u;h--;){var l=c[h];if(!(a?l in e:Et.call(e,l)))return!1}var f=s.get(n),d=s.get(e);if(f&&d)return f==e&&d==n;var p=!0;s.set(n,e),s.set(e,n);for(var v=a;++h<u;){var g=n[l=c[h]],w=e[l];if(i)var y=a?i(w,g,l,e,n,s):i(g,w,l,n,e,s);if(!(y===t?g===w||o(g,w,r,i,s):y)){p=!1;break}v||(v="constructor"==l)}if(p&&!v){var m=n.constructor,b=e.constructor;m==b||!("constructor"in n)||!("constructor"in e)||"function"==typeof m&&m instanceof m&&"function"==typeof b&&b instanceof b||(p=!1)}return s.delete(n),s.delete(e),p}(n,e,r,i,o,s))}(n,e,r,i,zr,o))}function Ir(n,e,r,i){var o=r.length,s=o,a=!i;if(null==n)return!s;for(n=$t(n);o--;){var c=r[o];if(a&&c[2]?c[1]!==n[c[0]]:!(c[0]in n))return!1}for(;++o<s;){var u=(c=r[o])[0],h=n[u],l=c[1];if(a&&c[2]){if(h===t&&!(u in n))return!1}else{var f=new He;if(i)var d=i(h,l,u,n,e,f);if(!(d===t?zr(l,h,3,i,f):d))return!1}}return!0}function Tr(t){return!(!Qs(t)||(n=t,Ot&&Ot in n))&&(Xs(t)?Wt:ft).test(Oo(t));var n}function Er(t){return"function"==typeof t?t:null==t?Ja:"object"==typeof t?Ls(t)?Ur(t[0],t[1]):Br(t):cc(t)}function _r(t){if(!bo(t))return pe(t);var n=[];for(var e in $t(t))Et.call(t,e)&&"constructor"!=e&&n.push(e);return n}function Or(t,n){return t<n}function Pr(t,n){var e=-1,r=Fs(t)?mt(t.length):[];return ur(t,(function(t,i,o){r[++e]=n(t,i,o)})),r}function Br(t){var n=so(t);return 1==n.length&&n[0][2]?Ao(n[0][0],n[0][1]):function(e){return e===t||Ir(e,t,n)}}function Ur(n,e){return wo(n)&&ko(e)?Ao(_o(n),e):function(r){var i=Aa(r,n);return i===t&&i===e?xa(r,n):zr(e,i,3)}}function Wr(n,e,r,i,o){n!==e&&vr(e,(function(s,a){if(o||(o=new He),Qs(s))!function(n,e,r,i,o,s,a){var c=So(n,r),u=So(e,r),h=a.get(u);if(h)qe(n,r,h);else{var l=s?s(c,u,r+"",n,e,a):t,f=l===t;if(f){var d=Ls(u),p=!d&&Vs(u),v=!d&&!p&&oa(u);l=u,d||p||v?Ls(c)?l=c:Ks(c)?l=Si(c):p?(f=!1,l=mi(u,!0)):v?(f=!1,l=ki(u,!0)):l=[]:ta(u)||Rs(u)?(l=c,Rs(c)?l=da(c):Qs(c)&&!Xs(c)||(l=fo(u))):f=!1}f&&(a.set(u,l),o(l,u,i,s,a),a.delete(u)),qe(n,r,l)}}(n,e,a,r,Wr,i,o);else{var c=i?i(So(n,a),s,a+"",n,e,o):t;c===t&&(c=s),qe(n,a,c)}}),Ca)}function Rr(n,e){var r=n.length;if(r)return vo(e+=e<0?r:0,r)?n[e]:t}function Lr(t,n,e){n=n.length?Tn(n,(function(t){return Ls(t)?function(n){return br(n,1===t.length?t[0]:t)}:t})):[Ja];var r=-1;n=Tn(n,Yn(io()));var i=Pr(t,(function(t){var e=Tn(n,(function(n){return n(t)}));return{criteria:e,index:++r,value:t}}));return function(t){var n=t.length;for(t.sort((function(t,n){return function(t,n,e){for(var r=-1,i=t.criteria,o=n.criteria,s=i.length,a=e.length;++r<s;){var c=Ai(i[r],o[r]);if(c)return r>=a?c:c*("desc"==e[r]?-1:1)}return t.index-n.index}(t,n,e)}));n--;)t[n]=t[n].value;return t}(i)}function Dr(t,n,e){for(var r=-1,i=n.length,o={};++r<i;){var s=n[r],a=br(t,s);e(a,s)&&Yr(o,vi(s,t),a)}return o}function Fr(t,n,e,r){var i=r?Ln:Rn,o=-1,s=n.length,a=t;for(t===n&&(n=Si(n)),e&&(a=Tn(t,Yn(e)));++o<s;)for(var c=0,u=n[o],h=e?e(u):u;(c=i(a,h,c,r))>-1;)a!==t&&Ht.call(a,c,1),Ht.call(t,c,1);return t}function Kr(t,n){for(var e=t?n.length:0,r=e-1;e--;){var i=n[e];if(e==r||i!==o){var o=i;vo(i)?Ht.call(t,i,1):ai(t,i)}}return t}function Vr(t,n){return t+dn(me()*(n-t+1))}function Nr(t,n){var e="";if(!t||n<1||n>a)return e;do{n%2&&(e+=t),(n=dn(n/2))&&(t+=t)}while(n);return e}function Hr(t,n){return Co(xo(t,n,Ja),t+"")}function Xr(t){return Ge(Ba(t))}function Gr(t,n){var e=Ba(t);return To(e,ir(n,0,e.length))}function Yr(n,e,r,i){if(!Qs(n))return n;for(var o=-1,s=(e=vi(e,n)).length,a=s-1,c=n;null!=c&&++o<s;){var u=_o(e[o]),h=r;if("__proto__"===u||"constructor"===u||"prototype"===u)return n;if(o!=a){var l=c[u];(h=i?i(l,u,c):t)===t&&(h=Qs(l)?l:vo(e[o+1])?[]:{})}Ze(c,u,h),c=c[u]}return n}var Qr=je?function(t,n){return je.set(t,n),t}:Ja,qr=Jt?function(t,n){return Jt(t,"toString",{configurable:!0,enumerable:!1,value:Qa(n),writable:!0})}:Ja;function Zr(t){return To(Ba(t))}function Jr(t,n,e){var r=-1,i=t.length;n<0&&(n=-n>i?0:i+n),(e=e>i?i:e)<0&&(e+=i),i=n>e?0:e-n>>>0,n>>>=0;for(var o=mt(i);++r<i;)o[r]=t[r+n];return o}function ti(t,n){var e;return ur(t,(function(t,r,i){return!(e=n(t,r,i))})),!!e}function ni(t,n,e){var r=0,i=null==t?r:t.length;if("number"==typeof n&&n==n&&i<=2147483647){for(;r<i;){var o=r+i>>>1,s=t[o];null!==s&&!ia(s)&&(e?s<=n:s<n)?r=o+1:i=o}return i}return ei(t,n,Ja,e)}function ei(n,e,r,i){var o=0,s=null==n?0:n.length;if(0===s)return 0;for(var a=(e=r(e))!=e,c=null===e,u=ia(e),h=e===t;o<s;){var l=dn((o+s)/2),f=r(n[l]),d=f!==t,p=null===f,v=f==f,g=ia(f);if(a)var w=i||v;else w=h?v&&(i||d):c?v&&d&&(i||!p):u?v&&d&&!p&&(i||!g):!p&&!g&&(i?f<=e:f<e);w?o=l+1:s=l}return ge(s,4294967294)}function ri(t,n){for(var e=-1,r=t.length,i=0,o=[];++e<r;){var s=t[e],a=n?n(s):s;if(!e||!Bs(a,c)){var c=a;o[i++]=0===s?0:s}}return o}function ii(t){return"number"==typeof t?t:ia(t)?c:+t}function oi(t){if("string"==typeof t)return t;if(Ls(t))return Tn(t,oi)+"";if(ia(t))return Be?Be.call(t):"";var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}function si(t,n,e){var r=-1,i=zn,o=t.length,s=!0,a=[],c=a;if(e)s=!1,i=In;else if(o>=200){var u=n?null:Ni(t);if(u)return ae(u);s=!1,i=qn,c=new Ne}else c=n?[]:a;t:for(;++r<o;){var h=t[r],l=n?n(h):h;if(h=e||0!==h?h:0,s&&l==l){for(var f=c.length;f--;)if(c[f]===l)continue t;n&&c.push(l),a.push(h)}else i(c,l,e)||(c!==a&&c.push(l),a.push(h))}return a}function ai(t,n){var e=-1,r=(n=vi(n,t)).length;if(!r)return!0;for(;++e<r;){var i=_o(n[e]);if("__proto__"===i&&!Et.call(t,"__proto__"))return!1;if(("constructor"===i||"prototype"===i)&&e<r-1)return!1}var o=$o(t,n);return null==o||delete o[_o(Ho(n))]}function ci(t,n,e,r){return Yr(t,n,e(br(t,n)),r)}function ui(t,n,e,r){for(var i=t.length,o=r?i:-1;(r?o--:++o<i)&&n(t[o],o,t););return e?Jr(t,r?0:o,r?o+1:i):Jr(t,r?o+1:0,r?i:o)}function hi(t,n){var e=t;return e instanceof De&&(e=e.value()),_n(n,(function(t,n){return n.func.apply(n.thisArg,En([t],n.args))}),e)}function li(t,n,e){var r=t.length;if(r<2)return r?si(t[0]):[];for(var i=-1,o=mt(r);++i<r;)for(var s=t[i],a=-1;++a<r;)a!=i&&(o[i]=cr(o[i]||s,t[a],n,e));return si(pr(o,1),n,e)}function fi(n,e,r){for(var i=-1,o=n.length,s=e.length,a={};++i<o;)r(a,n[i],i<s?e[i]:t);return a}function di(t){return Ks(t)?t:[]}function pi(t){return"function"==typeof t?t:Ja}function vi(t,n){return Ls(t)?t:wo(t,n)?[t]:Eo(pa(t))}var gi=Hr;function wi(n,e,r){var i=n.length;return r=r===t?i:r,!e&&r>=i?n:Jr(n,e,r)}var yi=sn||function(t){return ln.clearTimeout(t)};function mi(t,n){if(n)return t.slice();var e=t.length,r=Ft?Ft(e):new t.constructor(e);return t.copy(r),r}function bi(t){var n=new t.constructor(t.byteLength);return new Dt(n).set(new Dt(t)),n}function ki(t,n){var e=n?bi(t.buffer):t.buffer;return new t.constructor(e,t.byteOffset,t.length)}function Ai(n,e){if(n!==e){var r=n!==t,i=null===n,o=n==n,s=ia(n),a=e!==t,c=null===e,u=e==e,h=ia(e);if(!c&&!h&&!s&&n>e||s&&a&&u&&!c&&!h||i&&a&&u||!r&&u||!o)return 1;if(!i&&!s&&!h&&n<e||h&&r&&o&&!i&&!s||c&&r&&o||!a&&o||!u)return-1}return 0}function xi(t,n,e,r){for(var i=-1,o=t.length,s=e.length,a=-1,c=n.length,u=ve(o-s,0),h=mt(c+u),l=!r;++a<c;)h[a]=n[a];for(;++i<s;)(l||i<o)&&(h[e[i]]=t[i]);for(;u--;)h[a++]=t[i++];return h}function $i(t,n,e,r){for(var i=-1,o=t.length,s=-1,a=e.length,c=-1,u=n.length,h=ve(o-a,0),l=mt(h+u),f=!r;++i<h;)l[i]=t[i];for(var d=i;++c<u;)l[d+c]=n[c];for(;++s<a;)(f||i<o)&&(l[d+e[s]]=t[i++]);return l}function Si(t,n){var e=-1,r=t.length;for(n||(n=mt(r));++e<r;)n[e]=t[e];return n}function Mi(n,e,r,i){var o=!r;r||(r={});for(var s=-1,a=e.length;++s<a;){var c=e[s],u=i?i(r[c],n[c],c,r,n):t;u===t&&(u=n[c]),o?er(r,c,u):Ze(r,c,u)}return r}function ji(t,n){return function(e,r){var i=Ls(e)?$n:tr,o=n?n():{};return i(e,t,io(r,2),o)}}function Ci(n){return Hr((function(e,r){var i=-1,o=r.length,s=o>1?r[o-1]:t,a=o>2?r[2]:t;for(s=n.length>3&&"function"==typeof s?(o--,s):t,a&&go(r[0],r[1],a)&&(s=o<3?t:s,o=1),e=$t(e);++i<o;){var c=r[i];c&&n(e,c,i,s)}return e}))}function zi(t,n){return function(e,r){if(null==e)return e;if(!Fs(e))return t(e,r);for(var i=e.length,o=n?i:-1,s=$t(e);(n?o--:++o<i)&&!1!==r(s[o],o,s););return e}}function Ii(t){return function(n,e,r){for(var i=-1,o=$t(n),s=r(n),a=s.length;a--;){var c=s[t?a:++i];if(!1===e(o[c],c,o))break}return n}}function Ti(n){return function(e){var r=re(e=pa(e))?he(e):t,i=r?r[0]:e.charAt(0),o=r?wi(r,1).join(""):e.slice(1);return i[n]()+o}}function Ei(t){return function(n){return _n(Xa(Ra(n).replace(Yt,"")),t,"")}}function _i(t){return function(){var n=arguments;switch(n.length){case 0:return new t;case 1:return new t(n[0]);case 2:return new t(n[0],n[1]);case 3:return new t(n[0],n[1],n[2]);case 4:return new t(n[0],n[1],n[2],n[3]);case 5:return new t(n[0],n[1],n[2],n[3],n[4]);case 6:return new t(n[0],n[1],n[2],n[3],n[4],n[5]);case 7:return new t(n[0],n[1],n[2],n[3],n[4],n[5],n[6])}var e=We(t.prototype),r=t.apply(e,n);return Qs(r)?r:e}}function Oi(n){return function(e,r,i){var o=$t(e);if(!Fs(e)){var s=io(r,3);e=ja(e),r=function(t){return s(o[t],t,o)}}var a=n(e,r,i);return a>-1?o[s?e[a]:a]:t}}function Pi(e){return Zi((function(r){var i=r.length,o=i,s=Le.prototype.thru;for(e&&r.reverse();o--;){var a=r[o];if("function"!=typeof a)throw new jt(n);if(s&&!c&&"wrapper"==eo(a))var c=new Le([],!0)}for(o=c?o:i;++o<i;){var u=eo(a=r[o]),h="wrapper"==u?no(a):t;c=h&&yo(h[0])&&424==h[1]&&!h[4].length&&1==h[9]?c[eo(h[0])].apply(c,h[3]):1==a.length&&yo(a)?c[u]():c.thru(a)}return function(){var t=arguments,n=t[0];if(c&&1==t.length&&Ls(n))return c.plant(n).value();for(var e=0,o=i?r[e].apply(this,t):n;++e<i;)o=r[e].call(this,o);return o}}))}function Bi(n,e,r,i,s,a,c,u,h,l){var f=e&o,d=1&e,p=2&e,v=24&e,g=512&e,w=p?t:_i(n);return function o(){for(var y=arguments.length,m=mt(y),b=y;b--;)m[b]=arguments[b];if(v)var k=ro(o),A=function(t,n){for(var e=t.length,r=0;e--;)t[e]===n&&++r;return r}(m,k);if(i&&(m=xi(m,i,s,v)),a&&(m=$i(m,a,c,v)),y-=A,v&&y<l){var x=se(m,k);return Ki(n,e,Bi,o.placeholder,r,m,x,u,h,l-y)}var $=d?r:this,S=p?$[n]:n;return y=m.length,u?m=function(n,e){for(var r=n.length,i=ge(e.length,r),o=Si(n);i--;){var s=e[i];n[i]=vo(s,r)?o[s]:t}return n}(m,u):g&&y>1&&m.reverse(),f&&h<y&&(m.length=h),this&&this!==ln&&this instanceof o&&(S=w||_i(S)),S.apply($,m)}}function Ui(t,n){return function(e,r){return function(t,n,e,r){return wr(t,(function(t,i,o){n(r,e(t),i,o)})),r}(e,t,n(r),{})}}function Wi(n,e){return function(r,i){var o;if(r===t&&i===t)return e;if(r!==t&&(o=r),i!==t){if(o===t)return i;"string"==typeof r||"string"==typeof i?(r=oi(r),i=oi(i)):(r=ii(r),i=ii(i)),o=n(r,i)}return o}}function Ri(t){return Zi((function(n){return n=Tn(n,Yn(io())),Hr((function(e){var r=this;return t(n,(function(t){return xn(t,r,e)}))}))}))}function Li(n,e){var r=(e=e===t?" ":oi(e)).length;if(r<2)return r?Nr(e,n):e;var i=Nr(e,fn(n/ue(e)));return re(e)?wi(he(i),0,n).join(""):i.slice(0,n)}function Di(n){return function(e,r,i){return i&&"number"!=typeof i&&go(e,r,i)&&(r=i=t),e=ua(e),r===t?(r=e,e=0):r=ua(r),function(t,n,e,r){for(var i=-1,o=ve(fn((n-t)/(e||1)),0),s=mt(o);o--;)s[r?o:++i]=t,t+=e;return s}(e,r,i=i===t?e<r?1:-1:ua(i),n)}}function Fi(t){return function(n,e){return"string"==typeof n&&"string"==typeof e||(n=fa(n),e=fa(e)),t(n,e)}}function Ki(n,e,r,o,s,a,c,u,h,l){var f=8&e;e|=f?i:64,4&(e&=~(f?64:i))||(e&=-4);var d=[n,e,s,f?a:t,f?c:t,f?t:a,f?t:c,u,h,l],p=r.apply(t,d);return yo(n)&&Mo(p,d),p.placeholder=o,zo(p,n,e)}function Vi(t){var n=xt[t];return function(t,e){if(t=fa(t),(e=null==e?0:ge(ha(e),292))&&Bn(t)){var r=(pa(t)+"e").split("e");return+((r=(pa(n(r[0]+"e"+(+r[1]+e)))+"e").split("e"))[0]+"e"+(+r[1]-e))}return n(t)}}var Ni=$e&&1/ae(new $e([,-0]))[1]==s?function(t){return new $e(t)}:ic;function Hi(t){return function(n){var e=ho(n);return e==y?ie(n):e==x?ce(n):function(t,n){return Tn(n,(function(n){return[n,t[n]]}))}(n,t(n))}}function Xi(e,s,a,c,u,h,l,f){var d=2&s;if(!d&&"function"!=typeof e)throw new jt(n);var p=c?c.length:0;if(p||(s&=-97,c=u=t),l=l===t?l:ve(ha(l),0),f=f===t?f:ha(f),p-=u?u.length:0,64&s){var v=c,g=u;c=u=t}var w=d?t:no(e),y=[e,s,a,c,u,v,g,h,l,f];if(w&&function(t,n){var e=t[1],i=n[1],s=e|i;if(!(s<131||(i==o&&8==e||i==o&&256==e&&t[7].length<=n[8]||384==i&&n[7].length<=n[8]&&8==e)))return t;1&i&&(t[2]=n[2],s|=1&e?0:4);var a=n[3];if(a){var c=t[3];t[3]=c?xi(c,a,n[4]):a,t[4]=c?se(t[3],r):n[4]}(a=n[5])&&(t[5]=(c=t[5])?$i(c,a,n[6]):a,t[6]=c?se(t[5],r):n[6]),(a=n[7])&&(t[7]=a),i&o&&(t[8]=null==t[8]?n[8]:ge(t[8],n[8])),null==t[9]&&(t[9]=n[9]),t[0]=n[0],t[1]=s}(y,w),e=y[0],s=y[1],a=y[2],c=y[3],u=y[4],!(f=y[9]=y[9]===t?d?0:e.length:ve(y[9]-p,0))&&24&s&&(s&=-25),s&&1!=s)m=8==s||16==s?function(n,e,r){var i=_i(n);return function o(){for(var s=arguments.length,a=mt(s),c=s,u=ro(o);c--;)a[c]=arguments[c];var h=s<3&&a[0]!==u&&a[s-1]!==u?[]:se(a,u);return(s-=h.length)<r?Ki(n,e,Bi,o.placeholder,t,a,h,t,t,r-s):xn(this&&this!==ln&&this instanceof o?i:n,this,a)}}(e,s,f):s!=i&&33!=s||u.length?Bi.apply(t,y):function(t,n,e,r){var i=1&n,o=_i(t);return function n(){for(var s=-1,a=arguments.length,c=-1,u=r.length,h=mt(u+a),l=this&&this!==ln&&this instanceof n?o:t;++c<u;)h[c]=r[c];for(;a--;)h[c++]=arguments[++s];return xn(l,i?e:this,h)}}(e,s,a,c);else var m=function(t,n,e){var r=1&n,i=_i(t);return function n(){return(this&&this!==ln&&this instanceof n?i:t).apply(r?e:this,arguments)}}(e,s,a);return zo((w?Qr:Mo)(m,y),e,s)}function Gi(n,e,r,i){return n===t||Bs(n,zt[r])&&!Et.call(i,r)?e:n}function Yi(n,e,r,i,o,s){return Qs(n)&&Qs(e)&&(s.set(e,n),Wr(n,e,t,Yi,s),s.delete(e)),n}function Qi(n){return ta(n)?t:n}function qi(n,e,r,i,o,s){var a=1&r,c=n.length,u=e.length;if(c!=u&&!(a&&u>c))return!1;var h=s.get(n),l=s.get(e);if(h&&l)return h==e&&l==n;var f=-1,d=!0,p=2&r?new Ne:t;for(s.set(n,e),s.set(e,n);++f<c;){var v=n[f],g=e[f];if(i)var w=a?i(g,v,f,e,n,s):i(v,g,f,n,e,s);if(w!==t){if(w)continue;d=!1;break}if(p){if(!Pn(e,(function(t,n){if(!qn(p,n)&&(v===t||o(v,t,r,i,s)))return p.push(n)}))){d=!1;break}}else if(v!==g&&!o(v,g,r,i,s)){d=!1;break}}return s.delete(n),s.delete(e),d}function Zi(n){return Co(xo(n,t,Do),n+"")}function Ji(t){return kr(t,ja,co)}function to(t){return kr(t,Ca,uo)}var no=je?function(t){return je.get(t)}:ic;function eo(t){for(var n=t.name+"",e=Ce[n],r=Et.call(Ce,n)?e.length:0;r--;){var i=e[r],o=i.func;if(null==o||o==t)return i.name}return n}function ro(t){return(Et.call(Ue,"placeholder")?Ue:t).placeholder}function io(){var t=Ue.iteratee||tc;return t=t===tc?Er:t,arguments.length?t(arguments[0],arguments[1]):t}function oo(t,n){var e,r,i=t.__data__;return("string"==(r=typeof(e=n))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==e:null===e)?i["string"==typeof n?"string":"hash"]:i.map}function so(t){for(var n=ja(t),e=n.length;e--;){var r=n[e],i=t[r];n[e]=[r,i,ko(i)]}return n}function ao(n,e){var r=function(n,e){return null==n?t:n[e]}(n,e);return Tr(r)?r:t}var co=vn?function(t){return null==t?[]:(t=$t(t),Cn(vn(t),(function(n){return Nt.call(t,n)})))}:lc,uo=vn?function(t){for(var n=[];t;)En(n,co(t)),t=Kt(t);return n}:lc,ho=Ar;function lo(t,n,e){for(var r=-1,i=(n=vi(n,t)).length,o=!1;++r<i;){var s=_o(n[r]);if(!(o=null!=t&&e(t,s)))break;t=t[s]}return o||++r!=i?o:!!(i=null==t?0:t.length)&&Ys(i)&&vo(s,i)&&(Ls(t)||Rs(t))}function fo(t){return"function"!=typeof t.constructor||bo(t)?{}:We(Kt(t))}function po(t){return Ls(t)||Rs(t)||!!(Xt&&t&&t[Xt])}function vo(t,n){var e=typeof t;return!!(n=null==n?a:n)&&("number"==e||"symbol"!=e&&pt.test(t))&&t>-1&&t%1==0&&t<n}function go(t,n,e){if(!Qs(e))return!1;var r=typeof n;return!!("number"==r?Fs(e)&&vo(n,e.length):"string"==r&&n in e)&&Bs(e[n],t)}function wo(t,n){if(Ls(t))return!1;var e=typeof t;return!("number"!=e&&"symbol"!=e&&"boolean"!=e&&null!=t&&!ia(t))||Q.test(t)||!Y.test(t)||null!=n&&t in $t(n)}function yo(t){var n=eo(t),e=Ue[n];if("function"!=typeof e||!(n in De.prototype))return!1;if(t===e)return!0;var r=no(e);return!!r&&t===r[0]}(ke&&ho(new ke(new ArrayBuffer(1)))!=C||Ae&&ho(new Ae)!=y||xe&&ho(xe.resolve())!=k||$e&&ho(new $e)!=x||Se&&ho(new Se)!=M)&&(ho=function(n){var e=Ar(n),r=e==b?n.constructor:t,i=r?Oo(r):"";if(i)switch(i){case ze:return C;case Ie:return y;case Te:return k;case Ee:return x;case _e:return M}return e});var mo=It?Xs:fc;function bo(t){var n=t&&t.constructor;return t===("function"==typeof n&&n.prototype||zt)}function ko(t){return t==t&&!Qs(t)}function Ao(n,e){return function(r){return null!=r&&r[n]===e&&(e!==t||n in $t(r))}}function xo(n,e,r){return e=ve(e===t?n.length-1:e,0),function(){for(var t=arguments,i=-1,o=ve(t.length-e,0),s=mt(o);++i<o;)s[i]=t[e+i];i=-1;for(var a=mt(e+1);++i<e;)a[i]=t[i];return a[e]=r(s),xn(n,this,a)}}function $o(t,n){return n.length<2?t:br(t,Jr(n,0,-1))}function So(t,n){if(("constructor"!==n||"function"!=typeof t[n])&&"__proto__"!=n)return t[n]}var Mo=Io(Qr),jo=hn||function(t,n){return ln.setTimeout(t,n)},Co=Io(qr);function zo(t,n,e){var r=n+"";return Co(t,function(t,n){var e=n.length;if(!e)return t;var r=e-1;return n[r]=(e>1?"& ":"")+n[r],n=n.join(e>2?", ":" "),t.replace(et,"{\n/* [wrapped with "+n+"] */\n")}(r,function(t,n){return Sn(h,(function(e){var r="_."+e[0];n&e[1]&&!zn(t,r)&&t.push(r)})),t.sort()}(function(t){var n=t.match(rt);return n?n[1].split(it):[]}(r),e)))}function Io(n){var e=0,r=0;return function(){var i=we(),o=16-(i-r);if(r=i,o>0){if(++e>=800)return arguments[0]}else e=0;return n.apply(t,arguments)}}function To(n,e){var r=-1,i=n.length,o=i-1;for(e=e===t?i:e;++r<e;){var s=Vr(r,o),a=n[s];n[s]=n[r],n[r]=a}return n.length=e,n}var Eo=function(){var t=Is((function(t){var n=[];return 46===t.charCodeAt(0)&&n.push(""),t.replace(q,(function(t,e,r,i){n.push(r?i.replace(at,"$1"):e||t)})),n}),(function(t){return 500===n.size&&n.clear(),t})),n=t.cache;return t}();function _o(t){if("string"==typeof t||ia(t))return t;var n=t+"";return"0"==n&&1/t==-1/0?"-0":n}function Oo(t){if(null!=t){try{return Tt.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function Po(t){if(t instanceof De)return t.clone();var n=new Le(t.__wrapped__,t.__chain__);return n.__actions__=Si(t.__actions__),n.__index__=t.__index__,n.__values__=t.__values__,n}var Bo=Hr((function(t,n){return Ks(t)?cr(t,pr(n,1,Ks,!0)):[]})),Uo=Hr((function(n,e){var r=Ho(e);return Ks(r)&&(r=t),Ks(n)?cr(n,pr(e,1,Ks,!0),io(r,2)):[]})),Wo=Hr((function(n,e){var r=Ho(e);return Ks(r)&&(r=t),Ks(n)?cr(n,pr(e,1,Ks,!0),t,r):[]}));function Ro(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var i=null==e?0:ha(e);return i<0&&(i=ve(r+i,0)),Wn(t,io(n,3),i)}function Lo(n,e,r){var i=null==n?0:n.length;if(!i)return-1;var o=i-1;return r!==t&&(o=ha(r),o=r<0?ve(i+o,0):ge(o,i-1)),Wn(n,io(e,3),o,!0)}function Do(t){return null!=t&&t.length?pr(t,1):[]}function Fo(n){return n&&n.length?n[0]:t}var Ko=Hr((function(t){var n=Tn(t,di);return n.length&&n[0]===t[0]?Mr(n):[]})),Vo=Hr((function(n){var e=Ho(n),r=Tn(n,di);return e===Ho(r)?e=t:r.pop(),r.length&&r[0]===n[0]?Mr(r,io(e,2)):[]})),No=Hr((function(n){var e=Ho(n),r=Tn(n,di);return(e="function"==typeof e?e:t)&&r.pop(),r.length&&r[0]===n[0]?Mr(r,t,e):[]}));function Ho(n){var e=null==n?0:n.length;return e?n[e-1]:t}var Xo=Hr(Go);function Go(t,n){return t&&t.length&&n&&n.length?Fr(t,n):t}var Yo=Zi((function(t,n){var e=null==t?0:t.length,r=rr(t,n);return Kr(t,Tn(n,(function(t){return vo(t,e)?+t:t})).sort(Ai)),r}));function Qo(t){return null==t?t:be.call(t)}var qo=Hr((function(t){return si(pr(t,1,Ks,!0))})),Zo=Hr((function(n){var e=Ho(n);return Ks(e)&&(e=t),si(pr(n,1,Ks,!0),io(e,2))})),Jo=Hr((function(n){var e=Ho(n);return e="function"==typeof e?e:t,si(pr(n,1,Ks,!0),t,e)}));function ts(t){if(!t||!t.length)return[];var n=0;return t=Cn(t,(function(t){if(Ks(t))return n=ve(t.length,n),!0})),Xn(n,(function(n){return Tn(t,Kn(n))}))}function ns(n,e){if(!n||!n.length)return[];var r=ts(n);return null==e?r:Tn(r,(function(n){return xn(e,t,n)}))}var es=Hr((function(t,n){return Ks(t)?cr(t,n):[]})),rs=Hr((function(t){return li(Cn(t,Ks))})),is=Hr((function(n){var e=Ho(n);return Ks(e)&&(e=t),li(Cn(n,Ks),io(e,2))})),os=Hr((function(n){var e=Ho(n);return e="function"==typeof e?e:t,li(Cn(n,Ks),t,e)})),ss=Hr(ts),as=Hr((function(n){var e=n.length,r=e>1?n[e-1]:t;return r="function"==typeof r?(n.pop(),r):t,ns(n,r)}));function cs(t){var n=Ue(t);return n.__chain__=!0,n}function us(t,n){return n(t)}var hs=Zi((function(n){var e=n.length,r=e?n[0]:0,i=this.__wrapped__,o=function(t){return rr(t,n)};return!(e>1||this.__actions__.length)&&i instanceof De&&vo(r)?((i=i.slice(r,+r+(e?1:0))).__actions__.push({func:us,args:[o],thisArg:t}),new Le(i,this.__chain__).thru((function(n){return e&&!n.length&&n.push(t),n}))):this.thru(o)})),ls=ji((function(t,n,e){Et.call(t,e)?++t[e]:er(t,e,1)})),fs=Oi(Ro),ds=Oi(Lo);function ps(t,n){return(Ls(t)?Sn:ur)(t,io(n,3))}function vs(t,n){return(Ls(t)?Mn:hr)(t,io(n,3))}var gs=ji((function(t,n,e){Et.call(t,e)?t[e].push(n):er(t,e,[n])})),ws=Hr((function(t,n,e){var r=-1,i="function"==typeof n,o=Fs(t)?mt(t.length):[];return ur(t,(function(t){o[++r]=i?xn(n,t,e):jr(t,n,e)})),o})),ys=ji((function(t,n,e){er(t,e,n)}));function ms(t,n){return(Ls(t)?Tn:Pr)(t,io(n,3))}var bs=ji((function(t,n,e){t[e?0:1].push(n)}),(function(){return[[],[]]})),ks=Hr((function(t,n){if(null==t)return[];var e=n.length;return e>1&&go(t,n[0],n[1])?n=[]:e>2&&go(n[0],n[1],n[2])&&(n=[n[0]]),Lr(t,pr(n,1),[])})),As=un||function(){return ln.Date.now()};function xs(n,e,r){return e=r?t:e,Xi(n,o,t,t,t,t,e=n&&null==e?n.length:e)}function $s(e,r){var i;if("function"!=typeof r)throw new jt(n);return e=ha(e),function(){return--e>0&&(i=r.apply(this,arguments)),e<=1&&(r=t),i}}var Ss=Hr((function(t,n,e){var r=1;if(e.length){var o=se(e,ro(Ss));r|=i}return Xi(t,r,n,e,o)})),Ms=Hr((function(t,n,e){var r=3;if(e.length){var o=se(e,ro(Ms));r|=i}return Xi(n,r,t,e,o)}));function js(e,r,i){var o,s,a,c,u,h,l=0,f=!1,d=!1,p=!0;if("function"!=typeof e)throw new jt(n);function v(n){var r=o,i=s;return o=s=t,l=n,c=e.apply(i,r)}function g(n){var e=n-h;return h===t||e>=r||e<0||d&&n-l>=a}function w(){var t=As();if(g(t))return y(t);u=jo(w,function(t){var n=r-(t-h);return d?ge(n,a-(t-l)):n}(t))}function y(n){return u=t,p&&o?v(n):(o=s=t,c)}function m(){var n=As(),e=g(n);if(o=arguments,s=this,h=n,e){if(u===t)return function(t){return l=t,u=jo(w,r),f?v(t):c}(h);if(d)return yi(u),u=jo(w,r),v(h)}return u===t&&(u=jo(w,r)),c}return r=fa(r)||0,Qs(i)&&(f=!!i.leading,a=(d="maxWait"in i)?ve(fa(i.maxWait)||0,r):a,p="trailing"in i?!!i.trailing:p),m.cancel=function(){u!==t&&yi(u),l=0,o=h=s=u=t},m.flush=function(){return u===t?c:y(As())},m}var Cs=Hr((function(t,n){return ar(t,1,n)})),zs=Hr((function(t,n,e){return ar(t,fa(n)||0,e)}));function Is(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new jt(n);var r=function(){var n=arguments,i=e?e.apply(this,n):n[0],o=r.cache;if(o.has(i))return o.get(i);var s=t.apply(this,n);return r.cache=o.set(i,s)||o,s};return r.cache=new(Is.Cache||Ve),r}function Ts(t){if("function"!=typeof t)throw new jt(n);return function(){var n=arguments;switch(n.length){case 0:return!t.call(this);case 1:return!t.call(this,n[0]);case 2:return!t.call(this,n[0],n[1]);case 3:return!t.call(this,n[0],n[1],n[2])}return!t.apply(this,n)}}Is.Cache=Ve;var Es=gi((function(t,n){var e=(n=1==n.length&&Ls(n[0])?Tn(n[0],Yn(io())):Tn(pr(n,1),Yn(io()))).length;return Hr((function(r){for(var i=-1,o=ge(r.length,e);++i<o;)r[i]=n[i].call(this,r[i]);return xn(t,this,r)}))})),_s=Hr((function(n,e){var r=se(e,ro(_s));return Xi(n,i,t,e,r)})),Os=Hr((function(n,e){var r=se(e,ro(Os));return Xi(n,64,t,e,r)})),Ps=Zi((function(n,e){return Xi(n,256,t,t,t,e)}));function Bs(t,n){return t===n||t!=t&&n!=n}var Us=Fi(xr),Ws=Fi((function(t,n){return t>=n})),Rs=Cr(function(){return arguments}())?Cr:function(t){return qs(t)&&Et.call(t,"callee")&&!Nt.call(t,"callee")},Ls=mt.isArray,Ds=wn?Yn(wn):function(t){return qs(t)&&Ar(t)==j};function Fs(t){return null!=t&&Ys(t.length)&&!Xs(t)}function Ks(t){return qs(t)&&Fs(t)}var Vs=gn||fc,Ns=yn?Yn(yn):function(t){return qs(t)&&Ar(t)==p};function Hs(t){if(!qs(t))return!1;var n=Ar(t);return n==v||"[object DOMException]"==n||"string"==typeof t.message&&"string"==typeof t.name&&!ta(t)}function Xs(t){if(!Qs(t))return!1;var n=Ar(t);return n==g||n==w||"[object AsyncFunction]"==n||"[object Proxy]"==n}function Gs(t){return"number"==typeof t&&t==ha(t)}function Ys(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=a}function Qs(t){var n=typeof t;return null!=t&&("object"==n||"function"==n)}function qs(t){return null!=t&&"object"==typeof t}var Zs=mn?Yn(mn):function(t){return qs(t)&&ho(t)==y};function Js(t){return"number"==typeof t||qs(t)&&Ar(t)==m}function ta(t){if(!qs(t)||Ar(t)!=b)return!1;var n=Kt(t);if(null===n)return!0;var e=Et.call(n,"constructor")&&n.constructor;return"function"==typeof e&&e instanceof e&&Tt.call(e)==Bt}var na=bn?Yn(bn):function(t){return qs(t)&&Ar(t)==A},ea=kn?Yn(kn):function(t){return qs(t)&&ho(t)==x};function ra(t){return"string"==typeof t||!Ls(t)&&qs(t)&&Ar(t)==$}function ia(t){return"symbol"==typeof t||qs(t)&&Ar(t)==S}var oa=An?Yn(An):function(t){return qs(t)&&Ys(t.length)&&!!rn[Ar(t)]},sa=Fi(Or),aa=Fi((function(t,n){return t<=n}));function ca(t){if(!t)return[];if(Fs(t))return ra(t)?he(t):Si(t);if(Gt&&t[Gt])return function(t){for(var n,e=[];!(n=t.next()).done;)e.push(n.value);return e}(t[Gt]());var n=ho(t);return(n==y?ie:n==x?ae:Ba)(t)}function ua(t){return t?(t=fa(t))===s||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function ha(t){var n=ua(t),e=n%1;return n==n?e?n-e:n:0}function la(t){return t?ir(ha(t),0,u):0}function fa(t){if("number"==typeof t)return t;if(ia(t))return c;if(Qs(t)){var n="function"==typeof t.valueOf?t.valueOf():t;t=Qs(n)?n+"":n}if("string"!=typeof t)return 0===t?t:+t;t=Gn(t);var e=lt.test(t);return e||dt.test(t)?cn(t.slice(2),e?2:8):ht.test(t)?c:+t}function da(t){return Mi(t,Ca(t))}function pa(t){return null==t?"":oi(t)}var va=Ci((function(t,n){if(bo(n)||Fs(n))Mi(n,ja(n),t);else for(var e in n)Et.call(n,e)&&Ze(t,e,n[e])})),ga=Ci((function(t,n){Mi(n,Ca(n),t)})),wa=Ci((function(t,n,e,r){Mi(n,Ca(n),t,r)})),ya=Ci((function(t,n,e,r){Mi(n,ja(n),t,r)})),ma=Zi(rr),ba=Hr((function(n,e){n=$t(n);var r=-1,i=e.length,o=i>2?e[2]:t;for(o&&go(e[0],e[1],o)&&(i=1);++r<i;)for(var s=e[r],a=Ca(s),c=-1,u=a.length;++c<u;){var h=a[c],l=n[h];(l===t||Bs(l,zt[h])&&!Et.call(n,h))&&(n[h]=s[h])}return n})),ka=Hr((function(n){return n.push(t,Yi),xn(Ia,t,n)}));function Aa(n,e,r){var i=null==n?t:br(n,e);return i===t?r:i}function xa(t,n){return null!=t&&lo(t,n,Sr)}var $a=Ui((function(t,n,e){null!=n&&"function"!=typeof n.toString&&(n=Pt.call(n)),t[n]=e}),Qa(Ja)),Sa=Ui((function(t,n,e){null!=n&&"function"!=typeof n.toString&&(n=Pt.call(n)),Et.call(t,n)?t[n].push(e):t[n]=[e]}),io),Ma=Hr(jr);function ja(t){return Fs(t)?Xe(t):_r(t)}function Ca(t){return Fs(t)?Xe(t,!0):function(t){if(!Qs(t))return function(t){var n=[];if(null!=t)for(var e in $t(t))n.push(e);return n}(t);var n=bo(t),e=[];for(var r in t)("constructor"!=r||!n&&Et.call(t,r))&&e.push(r);return e}(t)}var za=Ci((function(t,n,e){Wr(t,n,e)})),Ia=Ci((function(t,n,e,r){Wr(t,n,e,r)})),Ta=Zi((function(t,n){var e={};if(null==t)return e;var r=!1;n=Tn(n,(function(n){return n=vi(n,t),r||(r=n.length>1),n})),Mi(t,to(t),e),r&&(e=or(e,7,Qi));for(var i=n.length;i--;)ai(e,n[i]);return e})),Ea=Zi((function(t,n){return null==t?{}:function(t,n){return Dr(t,n,(function(n,e){return xa(t,e)}))}(t,n)}));function _a(t,n){if(null==t)return{};var e=Tn(to(t),(function(t){return[t]}));return n=io(n),Dr(t,e,(function(t,e){return n(t,e[0])}))}var Oa=Hi(ja),Pa=Hi(Ca);function Ba(t){return null==t?[]:Qn(t,ja(t))}var Ua=Ei((function(t,n,e){return n=n.toLowerCase(),t+(e?Wa(n):n)}));function Wa(t){return Ha(pa(t).toLowerCase())}function Ra(t){return(t=pa(t))&&t.replace(vt,te).replace(Qt,"")}var La=Ei((function(t,n,e){return t+(e?"-":"")+n.toLowerCase()})),Da=Ei((function(t,n,e){return t+(e?" ":"")+n.toLowerCase()})),Fa=Ti("toLowerCase"),Ka=Ei((function(t,n,e){return t+(e?"_":"")+n.toLowerCase()})),Va=Ei((function(t,n,e){return t+(e?" ":"")+Ha(n)})),Na=Ei((function(t,n,e){return t+(e?" ":"")+n.toUpperCase()})),Ha=Ti("toUpperCase");function Xa(n,e,r){return n=pa(n),(e=r?t:e)===t?function(t){return tn.test(t)}(n)?function(t){return t.match(Zt)||[]}(n):function(t){return t.match(ot)||[]}(n):n.match(e)||[]}var Ga=Hr((function(n,e){try{return xn(n,t,e)}catch(t){return Hs(t)?t:new kt(t)}})),Ya=Zi((function(t,n){return Sn(n,(function(n){n=_o(n),er(t,n,Ss(t[n],t))})),t}));function Qa(t){return function(){return t}}var qa=Pi(),Za=Pi(!0);function Ja(t){return t}function tc(t){return Er("function"==typeof t?t:or(t,1))}var nc=Hr((function(t,n){return function(e){return jr(e,t,n)}})),ec=Hr((function(t,n){return function(e){return jr(t,e,n)}}));function rc(t,n,e){var r=ja(n),i=mr(n,r);null!=e||Qs(n)&&(i.length||!r.length)||(e=n,n=t,t=this,i=mr(n,ja(n)));var o=!(Qs(e)&&"chain"in e&&!e.chain),s=Xs(t);return Sn(i,(function(e){var r=n[e];t[e]=r,s&&(t.prototype[e]=function(){var n=this.__chain__;if(o||n){var e=t(this.__wrapped__);return(e.__actions__=Si(this.__actions__)).push({func:r,args:arguments,thisArg:t}),e.__chain__=n,e}return r.apply(t,En([this.value()],arguments))})})),t}function ic(){}var oc=Ri(Tn),sc=Ri(jn),ac=Ri(Pn);function cc(t){return wo(t)?Kn(_o(t)):function(t){return function(n){return br(n,t)}}(t)}var uc=Di(),hc=Di(!0);function lc(){return[]}function fc(){return!1}var dc,pc=Wi((function(t,n){return t+n}),0),vc=Vi("ceil"),gc=Wi((function(t,n){return t/n}),1),wc=Vi("floor"),yc=Wi((function(t,n){return t*n}),1),mc=Vi("round"),bc=Wi((function(t,n){return t-n}),0);return Ue.after=function(t,e){if("function"!=typeof e)throw new jt(n);return t=ha(t),function(){if(--t<1)return e.apply(this,arguments)}},Ue.ary=xs,Ue.assign=va,Ue.assignIn=ga,Ue.assignInWith=wa,Ue.assignWith=ya,Ue.at=ma,Ue.before=$s,Ue.bind=Ss,Ue.bindAll=Ya,Ue.bindKey=Ms,Ue.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Ls(t)?t:[t]},Ue.chain=cs,Ue.chunk=function(n,e,r){e=(r?go(n,e,r):e===t)?1:ve(ha(e),0);var i=null==n?0:n.length;if(!i||e<1)return[];for(var o=0,s=0,a=mt(fn(i/e));o<i;)a[s++]=Jr(n,o,o+=e);return a},Ue.compact=function(t){for(var n=-1,e=null==t?0:t.length,r=0,i=[];++n<e;){var o=t[n];o&&(i[r++]=o)}return i},Ue.concat=function(){var t=arguments.length;if(!t)return[];for(var n=mt(t-1),e=arguments[0],r=t;r--;)n[r-1]=arguments[r];return En(Ls(e)?Si(e):[e],pr(n,1))},Ue.cond=function(t){var e=null==t?0:t.length,r=io();return t=e?Tn(t,(function(t){if("function"!=typeof t[1])throw new jt(n);return[r(t[0]),t[1]]})):[],Hr((function(n){for(var r=-1;++r<e;){var i=t[r];if(xn(i[0],this,n))return xn(i[1],this,n)}}))},Ue.conforms=function(t){return function(t){var n=ja(t);return function(e){return sr(e,t,n)}}(or(t,1))},Ue.constant=Qa,Ue.countBy=ls,Ue.create=function(t,n){var e=We(t);return null==n?e:nr(e,n)},Ue.curry=function n(e,r,i){var o=Xi(e,8,t,t,t,t,t,r=i?t:r);return o.placeholder=n.placeholder,o},Ue.curryRight=function n(e,r,i){var o=Xi(e,16,t,t,t,t,t,r=i?t:r);return o.placeholder=n.placeholder,o},Ue.debounce=js,Ue.defaults=ba,Ue.defaultsDeep=ka,Ue.defer=Cs,Ue.delay=zs,Ue.difference=Bo,Ue.differenceBy=Uo,Ue.differenceWith=Wo,Ue.drop=function(n,e,r){var i=null==n?0:n.length;return i?Jr(n,(e=r||e===t?1:ha(e))<0?0:e,i):[]},Ue.dropRight=function(n,e,r){var i=null==n?0:n.length;return i?Jr(n,0,(e=i-(e=r||e===t?1:ha(e)))<0?0:e):[]},Ue.dropRightWhile=function(t,n){return t&&t.length?ui(t,io(n,3),!0,!0):[]},Ue.dropWhile=function(t,n){return t&&t.length?ui(t,io(n,3),!0):[]},Ue.fill=function(n,e,r,i){var o=null==n?0:n.length;return o?(r&&"number"!=typeof r&&go(n,e,r)&&(r=0,i=o),function(n,e,r,i){var o=n.length;for((r=ha(r))<0&&(r=-r>o?0:o+r),(i=i===t||i>o?o:ha(i))<0&&(i+=o),i=r>i?0:la(i);r<i;)n[r++]=e;return n}(n,e,r,i)):[]},Ue.filter=function(t,n){return(Ls(t)?Cn:dr)(t,io(n,3))},Ue.flatMap=function(t,n){return pr(ms(t,n),1)},Ue.flatMapDeep=function(t,n){return pr(ms(t,n),s)},Ue.flatMapDepth=function(n,e,r){return r=r===t?1:ha(r),pr(ms(n,e),r)},Ue.flatten=Do,Ue.flattenDeep=function(t){return null!=t&&t.length?pr(t,s):[]},Ue.flattenDepth=function(n,e){return null!=n&&n.length?pr(n,e=e===t?1:ha(e)):[]},Ue.flip=function(t){return Xi(t,512)},Ue.flow=qa,Ue.flowRight=Za,Ue.fromPairs=function(t){for(var n=-1,e=null==t?0:t.length,r={};++n<e;){var i=t[n];er(r,i[0],i[1])}return r},Ue.functions=function(t){return null==t?[]:mr(t,ja(t))},Ue.functionsIn=function(t){return null==t?[]:mr(t,Ca(t))},Ue.groupBy=gs,Ue.initial=function(t){return null!=t&&t.length?Jr(t,0,-1):[]},Ue.intersection=Ko,Ue.intersectionBy=Vo,Ue.intersectionWith=No,Ue.invert=$a,Ue.invertBy=Sa,Ue.invokeMap=ws,Ue.iteratee=tc,Ue.keyBy=ys,Ue.keys=ja,Ue.keysIn=Ca,Ue.map=ms,Ue.mapKeys=function(t,n){var e={};return n=io(n,3),wr(t,(function(t,r,i){er(e,n(t,r,i),t)})),e},Ue.mapValues=function(t,n){var e={};return n=io(n,3),wr(t,(function(t,r,i){er(e,r,n(t,r,i))})),e},Ue.matches=function(t){return Br(or(t,1))},Ue.matchesProperty=function(t,n){return Ur(t,or(n,1))},Ue.memoize=Is,Ue.merge=za,Ue.mergeWith=Ia,Ue.method=nc,Ue.methodOf=ec,Ue.mixin=rc,Ue.negate=Ts,Ue.nthArg=function(t){return t=ha(t),Hr((function(n){return Rr(n,t)}))},Ue.omit=Ta,Ue.omitBy=function(t,n){return _a(t,Ts(io(n)))},Ue.once=function(t){return $s(2,t)},Ue.orderBy=function(n,e,r,i){return null==n?[]:(Ls(e)||(e=null==e?[]:[e]),Ls(r=i?t:r)||(r=null==r?[]:[r]),Lr(n,e,r))},Ue.over=oc,Ue.overArgs=Es,Ue.overEvery=sc,Ue.overSome=ac,Ue.partial=_s,Ue.partialRight=Os,Ue.partition=bs,Ue.pick=Ea,Ue.pickBy=_a,Ue.property=cc,Ue.propertyOf=function(n){return function(e){return null==n?t:br(n,e)}},Ue.pull=Xo,Ue.pullAll=Go,Ue.pullAllBy=function(t,n,e){return t&&t.length&&n&&n.length?Fr(t,n,io(e,2)):t},Ue.pullAllWith=function(n,e,r){return n&&n.length&&e&&e.length?Fr(n,e,t,r):n},Ue.pullAt=Yo,Ue.range=uc,Ue.rangeRight=hc,Ue.rearg=Ps,Ue.reject=function(t,n){return(Ls(t)?Cn:dr)(t,Ts(io(n,3)))},Ue.remove=function(t,n){var e=[];if(!t||!t.length)return e;var r=-1,i=[],o=t.length;for(n=io(n,3);++r<o;){var s=t[r];n(s,r,t)&&(e.push(s),i.push(r))}return Kr(t,i),e},Ue.rest=function(e,r){if("function"!=typeof e)throw new jt(n);return Hr(e,r=r===t?r:ha(r))},Ue.reverse=Qo,Ue.sampleSize=function(n,e,r){return e=(r?go(n,e,r):e===t)?1:ha(e),(Ls(n)?Ye:Gr)(n,e)},Ue.set=function(t,n,e){return null==t?t:Yr(t,n,e)},Ue.setWith=function(n,e,r,i){return i="function"==typeof i?i:t,null==n?n:Yr(n,e,r,i)},Ue.shuffle=function(t){return(Ls(t)?Qe:Zr)(t)},Ue.slice=function(n,e,r){var i=null==n?0:n.length;return i?(r&&"number"!=typeof r&&go(n,e,r)?(e=0,r=i):(e=null==e?0:ha(e),r=r===t?i:ha(r)),Jr(n,e,r)):[]},Ue.sortBy=ks,Ue.sortedUniq=function(t){return t&&t.length?ri(t):[]},Ue.sortedUniqBy=function(t,n){return t&&t.length?ri(t,io(n,2)):[]},Ue.split=function(n,e,r){return r&&"number"!=typeof r&&go(n,e,r)&&(e=r=t),(r=r===t?u:r>>>0)?(n=pa(n))&&("string"==typeof e||null!=e&&!na(e))&&!(e=oi(e))&&re(n)?wi(he(n),0,r):n.split(e,r):[]},Ue.spread=function(t,e){if("function"!=typeof t)throw new jt(n);return e=null==e?0:ve(ha(e),0),Hr((function(n){var r=n[e],i=wi(n,0,e);return r&&En(i,r),xn(t,this,i)}))},Ue.tail=function(t){var n=null==t?0:t.length;return n?Jr(t,1,n):[]},Ue.take=function(n,e,r){return n&&n.length?Jr(n,0,(e=r||e===t?1:ha(e))<0?0:e):[]},Ue.takeRight=function(n,e,r){var i=null==n?0:n.length;return i?Jr(n,(e=i-(e=r||e===t?1:ha(e)))<0?0:e,i):[]},Ue.takeRightWhile=function(t,n){return t&&t.length?ui(t,io(n,3),!1,!0):[]},Ue.takeWhile=function(t,n){return t&&t.length?ui(t,io(n,3)):[]},Ue.tap=function(t,n){return n(t),t},Ue.throttle=function(t,e,r){var i=!0,o=!0;if("function"!=typeof t)throw new jt(n);return Qs(r)&&(i="leading"in r?!!r.leading:i,o="trailing"in r?!!r.trailing:o),js(t,e,{leading:i,maxWait:e,trailing:o})},Ue.thru=us,Ue.toArray=ca,Ue.toPairs=Oa,Ue.toPairsIn=Pa,Ue.toPath=function(t){return Ls(t)?Tn(t,_o):ia(t)?[t]:Si(Eo(pa(t)))},Ue.toPlainObject=da,Ue.transform=function(t,n,e){var r=Ls(t),i=r||Vs(t)||oa(t);if(n=io(n,4),null==e){var o=t&&t.constructor;e=i?r?new o:[]:Qs(t)&&Xs(o)?We(Kt(t)):{}}return(i?Sn:wr)(t,(function(t,r,i){return n(e,t,r,i)})),e},Ue.unary=function(t){return xs(t,1)},Ue.union=qo,Ue.unionBy=Zo,Ue.unionWith=Jo,Ue.uniq=function(t){return t&&t.length?si(t):[]},Ue.uniqBy=function(t,n){return t&&t.length?si(t,io(n,2)):[]},Ue.uniqWith=function(n,e){return e="function"==typeof e?e:t,n&&n.length?si(n,t,e):[]},Ue.unset=function(t,n){return null==t||ai(t,n)},Ue.unzip=ts,Ue.unzipWith=ns,Ue.update=function(t,n,e){return null==t?t:ci(t,n,pi(e))},Ue.updateWith=function(n,e,r,i){return i="function"==typeof i?i:t,null==n?n:ci(n,e,pi(r),i)},Ue.values=Ba,Ue.valuesIn=function(t){return null==t?[]:Qn(t,Ca(t))},Ue.without=es,Ue.words=Xa,Ue.wrap=function(t,n){return _s(pi(n),t)},Ue.xor=rs,Ue.xorBy=is,Ue.xorWith=os,Ue.zip=ss,Ue.zipObject=function(t,n){return fi(t||[],n||[],Ze)},Ue.zipObjectDeep=function(t,n){return fi(t||[],n||[],Yr)},Ue.zipWith=as,Ue.entries=Oa,Ue.entriesIn=Pa,Ue.extend=ga,Ue.extendWith=wa,rc(Ue,Ue),Ue.add=pc,Ue.attempt=Ga,Ue.camelCase=Ua,Ue.capitalize=Wa,Ue.ceil=vc,Ue.clamp=function(n,e,r){return r===t&&(r=e,e=t),r!==t&&(r=(r=fa(r))==r?r:0),e!==t&&(e=(e=fa(e))==e?e:0),ir(fa(n),e,r)},Ue.clone=function(t){return or(t,4)},Ue.cloneDeep=function(t){return or(t,5)},Ue.cloneDeepWith=function(n,e){return or(n,5,e="function"==typeof e?e:t)},Ue.cloneWith=function(n,e){return or(n,4,e="function"==typeof e?e:t)},Ue.conformsTo=function(t,n){return null==n||sr(t,n,ja(n))},Ue.deburr=Ra,Ue.defaultTo=function(t,n){return null==t||t!=t?n:t},Ue.divide=gc,Ue.endsWith=function(n,e,r){n=pa(n),e=oi(e);var i=n.length,o=r=r===t?i:ir(ha(r),0,i);return(r-=e.length)>=0&&n.slice(r,o)==e},Ue.eq=Bs,Ue.escape=function(t){return(t=pa(t))&&V.test(t)?t.replace(F,ne):t},Ue.escapeRegExp=function(t){return(t=pa(t))&&J.test(t)?t.replace(Z,"\\$&"):t},Ue.every=function(n,e,r){var i=Ls(n)?jn:lr;return r&&go(n,e,r)&&(e=t),i(n,io(e,3))},Ue.find=fs,Ue.findIndex=Ro,Ue.findKey=function(t,n){return Un(t,io(n,3),wr)},Ue.findLast=ds,Ue.findLastIndex=Lo,Ue.findLastKey=function(t,n){return Un(t,io(n,3),yr)},Ue.floor=wc,Ue.forEach=ps,Ue.forEachRight=vs,Ue.forIn=function(t,n){return null==t?t:vr(t,io(n,3),Ca)},Ue.forInRight=function(t,n){return null==t?t:gr(t,io(n,3),Ca)},Ue.forOwn=function(t,n){return t&&wr(t,io(n,3))},Ue.forOwnRight=function(t,n){return t&&yr(t,io(n,3))},Ue.get=Aa,Ue.gt=Us,Ue.gte=Ws,Ue.has=function(t,n){return null!=t&&lo(t,n,$r)},Ue.hasIn=xa,Ue.head=Fo,Ue.identity=Ja,Ue.includes=function(t,n,e,r){t=Fs(t)?t:Ba(t),e=e&&!r?ha(e):0;var i=t.length;return e<0&&(e=ve(i+e,0)),ra(t)?e<=i&&t.indexOf(n,e)>-1:!!i&&Rn(t,n,e)>-1},Ue.indexOf=function(t,n,e){var r=null==t?0:t.length;if(!r)return-1;var i=null==e?0:ha(e);return i<0&&(i=ve(r+i,0)),Rn(t,n,i)},Ue.inRange=function(n,e,r){return e=ua(e),r===t?(r=e,e=0):r=ua(r),function(t,n,e){return t>=ge(n,e)&&t<ve(n,e)}(n=fa(n),e,r)},Ue.invoke=Ma,Ue.isArguments=Rs,Ue.isArray=Ls,Ue.isArrayBuffer=Ds,Ue.isArrayLike=Fs,Ue.isArrayLikeObject=Ks,Ue.isBoolean=function(t){return!0===t||!1===t||qs(t)&&Ar(t)==d},Ue.isBuffer=Vs,Ue.isDate=Ns,Ue.isElement=function(t){return qs(t)&&1===t.nodeType&&!ta(t)},Ue.isEmpty=function(t){if(null==t)return!0;if(Fs(t)&&(Ls(t)||"string"==typeof t||"function"==typeof t.splice||Vs(t)||oa(t)||Rs(t)))return!t.length;var n=ho(t);if(n==y||n==x)return!t.size;if(bo(t))return!_r(t).length;for(var e in t)if(Et.call(t,e))return!1;return!0},Ue.isEqual=function(t,n){return zr(t,n)},Ue.isEqualWith=function(n,e,r){var i=(r="function"==typeof r?r:t)?r(n,e):t;return i===t?zr(n,e,t,r):!!i},Ue.isError=Hs,Ue.isFinite=function(t){return"number"==typeof t&&Bn(t)},Ue.isFunction=Xs,Ue.isInteger=Gs,Ue.isLength=Ys,Ue.isMap=Zs,Ue.isMatch=function(t,n){return t===n||Ir(t,n,so(n))},Ue.isMatchWith=function(n,e,r){return r="function"==typeof r?r:t,Ir(n,e,so(e),r)},Ue.isNaN=function(t){return Js(t)&&t!=+t},Ue.isNative=function(t){if(mo(t))throw new kt("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Tr(t)},Ue.isNil=function(t){return null==t},Ue.isNull=function(t){return null===t},Ue.isNumber=Js,Ue.isObject=Qs,Ue.isObjectLike=qs,Ue.isPlainObject=ta,Ue.isRegExp=na,Ue.isSafeInteger=function(t){return Gs(t)&&t>=-9007199254740991&&t<=a},Ue.isSet=ea,Ue.isString=ra,Ue.isSymbol=ia,Ue.isTypedArray=oa,Ue.isUndefined=function(n){return n===t},Ue.isWeakMap=function(t){return qs(t)&&ho(t)==M},Ue.isWeakSet=function(t){return qs(t)&&"[object WeakSet]"==Ar(t)},Ue.join=function(t,n){return null==t?"":Vn.call(t,n)},Ue.kebabCase=La,Ue.last=Ho,Ue.lastIndexOf=function(n,e,r){var i=null==n?0:n.length;if(!i)return-1;var o=i;return r!==t&&(o=(o=ha(r))<0?ve(i+o,0):ge(o,i-1)),e==e?function(t,n,e){for(var r=e+1;r--;)if(t[r]===n)return r;return r}(n,e,o):Wn(n,Dn,o,!0)},Ue.lowerCase=Da,Ue.lowerFirst=Fa,Ue.lt=sa,Ue.lte=aa,Ue.max=function(n){return n&&n.length?fr(n,Ja,xr):t},Ue.maxBy=function(n,e){return n&&n.length?fr(n,io(e,2),xr):t},Ue.mean=function(t){return Fn(t,Ja)},Ue.meanBy=function(t,n){return Fn(t,io(n,2))},Ue.min=function(n){return n&&n.length?fr(n,Ja,Or):t},Ue.minBy=function(n,e){return n&&n.length?fr(n,io(e,2),Or):t},Ue.stubArray=lc,Ue.stubFalse=fc,Ue.stubObject=function(){return{}},Ue.stubString=function(){return""},Ue.stubTrue=function(){return!0},Ue.multiply=yc,Ue.nth=function(n,e){return n&&n.length?Rr(n,ha(e)):t},Ue.noConflict=function(){return ln._===this&&(ln._=Ut),this},Ue.noop=ic,Ue.now=As,Ue.pad=function(t,n,e){t=pa(t);var r=(n=ha(n))?ue(t):0;if(!n||r>=n)return t;var i=(n-r)/2;return Li(dn(i),e)+t+Li(fn(i),e)},Ue.padEnd=function(t,n,e){t=pa(t);var r=(n=ha(n))?ue(t):0;return n&&r<n?t+Li(n-r,e):t},Ue.padStart=function(t,n,e){t=pa(t);var r=(n=ha(n))?ue(t):0;return n&&r<n?Li(n-r,e)+t:t},Ue.parseInt=function(t,n,e){return e||null==n?n=0:n&&(n=+n),ye(pa(t).replace(tt,""),n||0)},Ue.random=function(n,e,r){if(r&&"boolean"!=typeof r&&go(n,e,r)&&(e=r=t),r===t&&("boolean"==typeof e?(r=e,e=t):"boolean"==typeof n&&(r=n,n=t)),n===t&&e===t?(n=0,e=1):(n=ua(n),e===t?(e=n,n=0):e=ua(e)),n>e){var i=n;n=e,e=i}if(r||n%1||e%1){var o=me();return ge(n+o*(e-n+an("1e-"+((o+"").length-1))),e)}return Vr(n,e)},Ue.reduce=function(t,n,e){var r=Ls(t)?_n:Nn,i=arguments.length<3;return r(t,io(n,4),e,i,ur)},Ue.reduceRight=function(t,n,e){var r=Ls(t)?On:Nn,i=arguments.length<3;return r(t,io(n,4),e,i,hr)},Ue.repeat=function(n,e,r){return e=(r?go(n,e,r):e===t)?1:ha(e),Nr(pa(n),e)},Ue.replace=function(){var t=arguments,n=pa(t[0]);return t.length<3?n:n.replace(t[1],t[2])},Ue.result=function(n,e,r){var i=-1,o=(e=vi(e,n)).length;for(o||(o=1,n=t);++i<o;){var s=null==n?t:n[_o(e[i])];s===t&&(i=o,s=r),n=Xs(s)?s.call(n):s}return n},Ue.round=mc,Ue.runInContext=N,Ue.sample=function(t){return(Ls(t)?Ge:Xr)(t)},Ue.size=function(t){if(null==t)return 0;if(Fs(t))return ra(t)?ue(t):t.length;var n=ho(t);return n==y||n==x?t.size:_r(t).length},Ue.snakeCase=Ka,Ue.some=function(n,e,r){var i=Ls(n)?Pn:ti;return r&&go(n,e,r)&&(e=t),i(n,io(e,3))},Ue.sortedIndex=function(t,n){return ni(t,n)},Ue.sortedIndexBy=function(t,n,e){return ei(t,n,io(e,2))},Ue.sortedIndexOf=function(t,n){var e=null==t?0:t.length;if(e){var r=ni(t,n);if(r<e&&Bs(t[r],n))return r}return-1},Ue.sortedLastIndex=function(t,n){return ni(t,n,!0)},Ue.sortedLastIndexBy=function(t,n,e){return ei(t,n,io(e,2),!0)},Ue.sortedLastIndexOf=function(t,n){if(null!=t&&t.length){var e=ni(t,n,!0)-1;if(Bs(t[e],n))return e}return-1},Ue.startCase=Va,Ue.startsWith=function(t,n,e){return t=pa(t),e=null==e?0:ir(ha(e),0,t.length),n=oi(n),t.slice(e,e+n.length)==n},Ue.subtract=bc,Ue.sum=function(t){return t&&t.length?Hn(t,Ja):0},Ue.sumBy=function(t,n){return t&&t.length?Hn(t,io(n,2)):0},Ue.template=function(n,e,r){var i=Ue.templateSettings;r&&go(n,e,r)&&(e=t),n=pa(n),e=ya({},e,i,Gi);var o=ya({},e.imports,i.imports,Gi),s=ja(o),a=Qn(o,s);Sn(s,(function(t){if(st.test(t))throw new kt("Invalid `imports` option passed into `_.template`")}));var c,u,h=0,l=e.interpolate||gt,f="__p += '",d=St((e.escape||gt).source+"|"+l.source+"|"+(l===G?ct:gt).source+"|"+(e.evaluate||gt).source+"|$","g"),p="//# sourceURL="+(Et.call(e,"sourceURL")?(e.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++en+"]")+"\n";n.replace(d,(function(t,e,r,i,o,s){return r||(r=i),f+=n.slice(h,s).replace(wt,ee),e&&(c=!0,f+="' +\n__e("+e+") +\n'"),o&&(u=!0,f+="';\n"+o+";\n__p += '"),r&&(f+="' +\n((__t = ("+r+")) == null ? '' : __t) +\n'"),h=s+t.length,t})),f+="';\n";var v=Et.call(e,"variable")&&e.variable;if(v){if(st.test(v))throw new kt("Invalid `variable` option passed into `_.template`")}else f="with (obj) {\n"+f+"\n}\n";f=(u?f.replace(W,""):f).replace(R,"$1").replace(L,"$1;"),f="function("+(v||"obj")+") {\n"+(v?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(c?", __e = _.escape":"")+(u?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+f+"return __p\n}";var g=Ga((function(){return At(s,p+"return "+f).apply(t,a)}));if(g.source=f,Hs(g))throw g;return g},Ue.times=function(t,n){if((t=ha(t))<1||t>a)return[];var e=u,r=ge(t,u);n=io(n),t-=u;for(var i=Xn(r,n);++e<t;)n(e);return i},Ue.toFinite=ua,Ue.toInteger=ha,Ue.toLength=la,Ue.toLower=function(t){return pa(t).toLowerCase()},Ue.toNumber=fa,Ue.toSafeInteger=function(t){return t?ir(ha(t),-9007199254740991,a):0===t?t:0},Ue.toString=pa,Ue.toUpper=function(t){return pa(t).toUpperCase()},Ue.trim=function(n,e,r){if((n=pa(n))&&(r||e===t))return Gn(n);if(!n||!(e=oi(e)))return n;var i=he(n),o=he(e);return wi(i,Zn(i,o),Jn(i,o)+1).join("")},Ue.trimEnd=function(n,e,r){if((n=pa(n))&&(r||e===t))return n.slice(0,le(n)+1);if(!n||!(e=oi(e)))return n;var i=he(n);return wi(i,0,Jn(i,he(e))+1).join("")},Ue.trimStart=function(n,e,r){if((n=pa(n))&&(r||e===t))return n.replace(tt,"");if(!n||!(e=oi(e)))return n;var i=he(n);return wi(i,Zn(i,he(e))).join("")},Ue.truncate=function(n,e){var r=30,i="...";if(Qs(e)){var o="separator"in e?e.separator:o;r="length"in e?ha(e.length):r,i="omission"in e?oi(e.omission):i}var s=(n=pa(n)).length;if(re(n)){var a=he(n);s=a.length}if(r>=s)return n;var c=r-ue(i);if(c<1)return i;var u=a?wi(a,0,c).join(""):n.slice(0,c);if(o===t)return u+i;if(a&&(c+=u.length-c),na(o)){if(n.slice(c).search(o)){var h,l=u;for(o.global||(o=St(o.source,pa(ut.exec(o))+"g")),o.lastIndex=0;h=o.exec(l);)var f=h.index;u=u.slice(0,f===t?c:f)}}else if(n.indexOf(oi(o),c)!=c){var d=u.lastIndexOf(o);d>-1&&(u=u.slice(0,d))}return u+i},Ue.unescape=function(t){return(t=pa(t))&&K.test(t)?t.replace(D,fe):t},Ue.uniqueId=function(t){var n=++_t;return pa(t)+n},Ue.upperCase=Na,Ue.upperFirst=Ha,Ue.each=ps,Ue.eachRight=vs,Ue.first=Fo,rc(Ue,(dc={},wr(Ue,(function(t,n){Et.call(Ue.prototype,n)||(dc[n]=t)})),dc),{chain:!1}),Ue.VERSION="4.18.1",Sn(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Ue[t].placeholder=Ue})),Sn(["drop","take"],(function(n,e){De.prototype[n]=function(r){r=r===t?1:ve(ha(r),0);var i=this.__filtered__&&!e?new De(this):this.clone();return i.__filtered__?i.__takeCount__=ge(r,i.__takeCount__):i.__views__.push({size:ge(r,u),type:n+(i.__dir__<0?"Right":"")}),i},De.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}})),Sn(["filter","map","takeWhile"],(function(t,n){var e=n+1,r=1==e||3==e;De.prototype[t]=function(t){var n=this.clone();return n.__iteratees__.push({iteratee:io(t,3),type:e}),n.__filtered__=n.__filtered__||r,n}})),Sn(["head","last"],(function(t,n){var e="take"+(n?"Right":"");De.prototype[t]=function(){return this[e](1).value()[0]}})),Sn(["initial","tail"],(function(t,n){var e="drop"+(n?"":"Right");De.prototype[t]=function(){return this.__filtered__?new De(this):this[e](1)}})),De.prototype.compact=function(){return this.filter(Ja)},De.prototype.find=function(t){return this.filter(t).head()},De.prototype.findLast=function(t){return this.reverse().find(t)},De.prototype.invokeMap=Hr((function(t,n){return"function"==typeof t?new De(this):this.map((function(e){return jr(e,t,n)}))})),De.prototype.reject=function(t){return this.filter(Ts(io(t)))},De.prototype.slice=function(n,e){n=ha(n);var r=this;return r.__filtered__&&(n>0||e<0)?new De(r):(n<0?r=r.takeRight(-n):n&&(r=r.drop(n)),e!==t&&(r=(e=ha(e))<0?r.dropRight(-e):r.take(e-n)),r)},De.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},De.prototype.toArray=function(){return this.take(u)},wr(De.prototype,(function(n,e){var r=/^(?:filter|find|map|reject)|While$/.test(e),i=/^(?:head|last)$/.test(e),o=Ue[i?"take"+("last"==e?"Right":""):e],s=i||/^find/.test(e);o&&(Ue.prototype[e]=function(){var e=this.__wrapped__,a=i?[1]:arguments,c=e instanceof De,u=a[0],h=c||Ls(e),l=function(t){var n=o.apply(Ue,En([t],a));return i&&f?n[0]:n};h&&r&&"function"==typeof u&&1!=u.length&&(c=h=!1);var f=this.__chain__,d=s&&!f,p=c&&!this.__actions__.length;if(!s&&h){e=p?e:new De(this);var v=n.apply(e,a);return v.__actions__.push({func:us,args:[l],thisArg:t}),new Le(v,f)}return d&&p?n.apply(this,a):(v=this.thru(l),d?i?v.value()[0]:v.value():v)})})),Sn(["pop","push","shift","sort","splice","unshift"],(function(t){var n=Ct[t],e=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);Ue.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return n.apply(Ls(i)?i:[],t)}return this[e]((function(e){return n.apply(Ls(e)?e:[],t)}))}})),wr(De.prototype,(function(t,n){var e=Ue[n];if(e){var r=e.name+"";Et.call(Ce,r)||(Ce[r]=[]),Ce[r].push({name:n,func:e})}})),Ce[Bi(t,2).name]=[{name:"wrapper",func:t}],De.prototype.clone=function(){var t=new De(this.__wrapped__);return t.__actions__=Si(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Si(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Si(this.__views__),t},De.prototype.reverse=function(){if(this.__filtered__){var t=new De(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},De.prototype.value=function(){var t=this.__wrapped__.value(),n=this.__dir__,e=Ls(t),r=n<0,i=e?t.length:0,o=function(t,n,e){for(var r=-1,i=e.length;++r<i;){var o=e[r],s=o.size;switch(o.type){case"drop":t+=s;break;case"dropRight":n-=s;break;case"take":n=ge(n,t+s);break;case"takeRight":t=ve(t,n-s)}}return{start:t,end:n}}(0,i,this.__views__),s=o.start,a=o.end,c=a-s,u=r?a:s-1,h=this.__iteratees__,l=h.length,f=0,d=ge(c,this.__takeCount__);if(!e||!r&&i==c&&d==c)return hi(t,this.__actions__);var p=[];t:for(;c--&&f<d;){for(var v=-1,g=t[u+=n];++v<l;){var w=h[v],y=w.type,m=(0,w.iteratee)(g);if(2==y)g=m;else if(!m){if(1==y)continue t;break t}}p[f++]=g}return p},Ue.prototype.at=hs,Ue.prototype.chain=function(){return cs(this)},Ue.prototype.commit=function(){return new Le(this.value(),this.__chain__)},Ue.prototype.next=function(){this.__values__===t&&(this.__values__=ca(this.value()));var n=this.__index__>=this.__values__.length;return{done:n,value:n?t:this.__values__[this.__index__++]}},Ue.prototype.plant=function(n){for(var e,r=this;r instanceof Re;){var i=Po(r);i.__index__=0,i.__values__=t,e?o.__wrapped__=i:e=i;var o=i;r=r.__wrapped__}return o.__wrapped__=n,e},Ue.prototype.reverse=function(){var n=this.__wrapped__;if(n instanceof De){var e=n;return this.__actions__.length&&(e=new De(this)),(e=e.reverse()).__actions__.push({func:us,args:[Qo],thisArg:t}),new Le(e,this.__chain__)}return this.thru(Qo)},Ue.prototype.toJSON=Ue.prototype.valueOf=Ue.prototype.value=function(){return hi(this.__wrapped__,this.__actions__)},Ue.prototype.first=Ue.prototype.head,Gt&&(Ue.prototype[Gt]=function(){return this}),Ue}();dn?((dn.exports=de)._=de,fn._=de):ln._=de}.call(Lt.exports)),Lt.exports);
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Lodash <https://lodash.com/>
|
|
5
|
+
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
|
|
6
|
+
* Released under MIT license <https://lodash.com/license>
|
|
7
|
+
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
|
|
8
|
+
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
9
|
+
*/class Ft{_core;_debounceUpdate;_debounceEndScaling;_animationFrameId=null;initialTouchDistance=0;startX=0;startY=0;static TOUCH_CURSOR_BROADCAST_THRESHOLD=5;_touchStartScreenX=0;_touchStartScreenY=0;_touchCursorBroadcastActive=!1;constructor(t,n){this._core=t,this._core.store.state.host=n,this._core.store.state.viewportWidth=n.clientWidth,this._core.store.state.viewportHeight=n.clientHeight,this._core.store.state.startX=0,this._core.store.state.startY=0,this._core.store.state.translateX=0,this._core.store.state.translateY=0,this._debounceUpdate=Dt.debounce((()=>{this._core.updateWorkspaceViewport(this._core.store.state.translateX,this._core.store.state.translateY,this._core.store.state.scale)}),300),this._debounceEndScaling=Dt.debounce((()=>{this._core.store.state.isScaling=!1,this._core.rerender()}),100)}cancelPendingUpdates(){this._debounceUpdate.cancel()}clampTranslate(t,n){const e=this._core.store.state,{scale:r,viewportWidth:i,viewportHeight:o}=e,{viewportBoundaryLeft:s,viewportBoundaryRight:a,viewportBoundaryTop:c,viewportBoundaryBottom:u}=e,h=-s*r,l=i-a*r,f=-c*r,d=o-u*r;let p=t,v=n;return Number.isFinite(l)&&Number.isFinite(h)?p=Math.max(l,Math.min(h,t)):Number.isFinite(l)?p=Math.max(l,t):Number.isFinite(h)&&(p=Math.min(h,t)),Number.isFinite(d)&&Number.isFinite(f)?v=Math.max(d,Math.min(f,n)):Number.isFinite(d)?v=Math.max(d,n):Number.isFinite(f)&&(v=Math.min(f,n)),{translateX:p,translateY:v}}getEffectiveMinScale(){const t=this._core.store.state,{viewportWidth:n,viewportHeight:e,scaleMin:r}=t,{viewportBoundaryLeft:i,viewportBoundaryRight:o,viewportBoundaryTop:s,viewportBoundaryBottom:a}=t,c=o-i,u=a-s;if(!Number.isFinite(c)||!Number.isFinite(u))return r;const h=Math.max(c>0?n/c:r,u>0?e/u:r);return Math.max(r,h)}handleResize(){this._core.store.state.viewportWidth=this._core.store.host.clientWidth,this._core.store.state.viewportHeight=this._core.store.host.clientHeight,this._core.store.state.hasViewportChanged=!0,this._core.rerender()}handlePointerDown(t){if(this.cancelViewportAnimation(),"mouse"===t.pointerType){const n=t.clientX-this._core.store.offsetX,e=t.clientY-this._core.store.offsetY;t.button===s.Right&&(this._core.store.state.isPanning=!0,this._core.store.state.startX=n,this._core.store.state.startY=e)}if("touch"===t.pointerType||"pen"===t.pointerType){const n=Array.from(this._core.store.state.pointers.values());if(1===n.length&&(this._touchStartScreenX=t.clientX,this._touchStartScreenY=t.clientY,this._touchCursorBroadcastActive=!1),2===n.length){this._core.store.objects?.clearCursorPosition();const t=this._core.store.currentPath;t&&this._core.store.objects.remove((n=>n.id===t.id)),this._core.store.state.isSelecting&&(this._core.store.state.isSelecting=!1,this._core.store.objects.remove((t=>t instanceof f)),this._core.store.setSelectionBox(null),this._core.store.selectedObjects.forEach((t=>{t.isSelected=!1}))),this._core.store.state.isScaling=!0;const e=n[0].clientX-this._core.store.offsetX,r=n[0].clientY-this._core.store.offsetY,i=n[1].clientX-this._core.store.offsetX,o=n[1].clientY-this._core.store.offsetY;this.initialTouchDistance=Math.sqrt(Math.pow(e-i,2)+Math.pow(r-o,2)),this.startX=(e+i)/2,this.startY=(r+o)/2,this._core.rerender()}}}handlePointerMove(t){if("mouse"===t.pointerType){const n=this._core.store.host.getBoundingClientRect(),e=t.clientX-n.left,r=t.clientY-n.top;if(this._core.store.state.pointerX=(e-this._core.store.state.translateX)/this._core.store.state.scale,this._core.store.state.pointerY=(r-this._core.store.state.translateY)/this._core.store.state.scale,this._core.store.objects?.updateCursorPosition(this._core.store.state.pointerX,this._core.store.state.pointerY),this._core.store.state.isPanning){const t=this.clampTranslate(this._core.store.state.translateX+(e-this._core.store.state.startX),this._core.store.state.translateY+(r-this._core.store.state.startY));this._core.store.state.translateX=t.translateX,this._core.store.state.translateY=t.translateY,this._core.store.state.startX=e,this._core.store.state.startY=r,this._core.store.state.hasViewportChanged=!0,this._core.store.state.skipContextMenu=!0,this._core.rerender(),this._debounceUpdate()}}if("touch"===t.pointerType||"pen"===t.pointerType){const n=this._core.store.host.getBoundingClientRect(),e=t.clientX-n.left,r=t.clientY-n.top,i=Array.from(this._core.store.state.pointers.values());if(this._core.store.state.isScaling||i.length>1)this._core.store.objects?.clearCursorPosition();else{if(this._core.store.state.pointerX=(e-this._core.store.state.translateX)/this._core.store.state.scale,this._core.store.state.pointerY=(r-this._core.store.state.translateY)/this._core.store.state.scale,!this._touchCursorBroadcastActive){const n=t.clientX-this._touchStartScreenX,e=t.clientY-this._touchStartScreenY;Math.sqrt(n*n+e*e)>=Ft.TOUCH_CURSOR_BROADCAST_THRESHOLD&&(this._touchCursorBroadcastActive=!0)}this._touchCursorBroadcastActive&&this._core.store.objects?.updateCursorPosition(this._core.store.state.pointerX,this._core.store.state.pointerY)}if(2===i.length){const t=i[0].clientX-this._core.store.offsetX,n=i[0].clientY-this._core.store.offsetY,e=i[1].clientX-this._core.store.offsetX,r=i[1].clientY-this._core.store.offsetY,o=Math.sqrt(Math.pow(t-e,2)+Math.pow(n-r,2)),s=(t+e)/2,a=(n+r)/2,c=o/this.initialTouchDistance,u=this._core.store.state.scale*c,h=this.getEffectiveMinScale();if(u>this._core.store.state.scaleMax||u<h){const t=this.clampTranslate(this._core.store.state.translateX+s-this.startX,this._core.store.state.translateY+a-this.startY);this._core.store.state.translateX=t.translateX,this._core.store.state.translateY=t.translateY}else{const t=this._core.store.state.translateX+s-this.startX-(s-this._core.store.state.translateX)*(c-1),n=this._core.store.state.translateY+a-this.startY-(a-this._core.store.state.translateY)*(c-1);this._core.store.state.scale=u;const e=this.clampTranslate(t,n);this._core.store.state.translateX=e.translateX,this._core.store.state.translateY=e.translateY,this.initialTouchDistance=o}this.startX=s,this.startY=a,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),this._debounceUpdate()}}}handlePointerUp(t){"mouse"===t.pointerType&&this._core.store.state.isPanning&&(this._core.store.state.isPanning=!1,this._core.rerender()),"touch"!==t.pointerType&&"pen"!==t.pointerType||(this._touchCursorBroadcastActive=!1,0===this._core.store.state.pointers.size&&this._debounceEndScaling())}handleWheel(t){this.cancelViewportAnimation(),t.ctrlKey?this.handleZoom(t):this.handlePan(t)}getViewport(){const t=this._core.store.state;return{translateX:t.translateX,translateY:t.translateY,scale:t.scale,width:t.viewportWidth,height:t.viewportHeight}}screenToWorld(t,n){const e=this._core.store.state;return{x:(t-e.translateX)/e.scale,y:(n-e.translateY)/e.scale}}worldToScreen(t,n){const e=this._core.store.state;return{x:t*e.scale+e.translateX,y:n*e.scale+e.translateY}}setViewport(t,n,e){const r=this._core.store.state,i=Math.min(r.scaleMax,Math.max(this.getEffectiveMinScale(),e));this.animateViewportTo(r.viewportWidth/2-t*i,r.viewportHeight/2-n*i,i)}panTo(t,n){this.setViewport(t,n,this._core.store.state.scale)}zoomTo(t,n,e){const r=this._core.store.state;void 0!==n&&void 0!==e?this.setViewport(n,e,t):this.setViewport((r.viewportWidth/2-r.translateX)/r.scale,(r.viewportHeight/2-r.translateY)/r.scale,t)}centerInViewport(t){const{scale:n,viewportWidth:e,viewportHeight:r}=this._core.store.state,{x:i,y:o,width:s,height:a}=t.rotatedBoundingBox,c=this.clampTranslate(e/2-(i+s/2)*n,r/2-(o+a/2)*n);this._core.store.state.translateX=c.translateX,this._core.store.state.translateY=c.translateY,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),this._debounceUpdate()}centerFitInViewport(t){const n=Math.min(this._core.store.state.viewportWidth/(1.1*t.rotatedBoundingBox.width),this._core.store.state.viewportHeight/(1.1*t.rotatedBoundingBox.height),this._core.store.state.scaleMax),e=Math.max(n,this.getEffectiveMinScale());this._core.store.state.scale=e,this.centerInViewport(t)}handleZoom(t){this._core.store.state.isScaling=!0;const n=this._core.store.host.getBoundingClientRect(),e=t.clientX-n.left,r=t.clientY-n.top;this._core.store.state.pointerX=(e-this._core.store.state.translateX)/this._core.store.state.scale,this._core.store.state.pointerY=(r-this._core.store.state.translateY)/this._core.store.state.scale,this._core.store.objects?.updateCursorPosition(this._core.store.state.pointerX,this._core.store.state.pointerY);const i=Math.max(.8,Math.min(1.2,1+-.012*t.deltaY)),o=this.getEffectiveMinScale(),s=Math.min(this._core.store.state.scaleMax,Math.max(o,this._core.store.state.scale*i)),a=s/this._core.store.state.scale,c=(e-this._core.store.state.translateX)*(a-1),u=(r-this._core.store.state.translateY)*(a-1);this._core.store.state.scale=s;let h=this._core.store.state.translateX-c;0!==t.deltaX&&(h-=.8*t.deltaX);const l=this.clampTranslate(h,this._core.store.state.translateY-u);this._core.store.state.translateX=l.translateX,this._core.store.state.translateY=l.translateY,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),this._debounceUpdate(),this._debounceEndScaling()}handlePan(t){const n=this.clampTranslate(this._core.store.state.translateX-.8*t.deltaX,this._core.store.state.translateY-.8*t.deltaY);this._core.store.state.translateX=n.translateX,this._core.store.state.translateY=n.translateY,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),this._debounceUpdate()}cancelViewportAnimation(){null!==this._animationFrameId&&(cancelAnimationFrame(this._animationFrameId),this._animationFrameId=null)}animateViewportTo(t,n,e,r=150){this.cancelViewportAnimation();const i=this._core.store.state.translateX,o=this._core.store.state.translateY,s=this._core.store.state.scale,a=performance.now();this._core.store.state.isScaling=!0;const c=u=>{const h=Math.min((u-a)/r,1),l=1-Math.pow(1-h,3);this._core.store.state.scale=s+(e-s)*l;const f=this.clampTranslate(i+(t-i)*l,o+(n-o)*l);this._core.store.state.translateX=f.translateX,this._core.store.state.translateY=f.translateY,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),h<1?this._animationFrameId=requestAnimationFrame(c):(this._animationFrameId=null,this._core.store.state.isScaling=!1,this._core.rerender(),this._debounceUpdate())};this._animationFrameId=requestAnimationFrame(c)}centerFitNearestContent(t=20){const n=this._core.store.allNonSelectionObjects;if(0===n.length)return!1;const e=-this._core.store.state.translateX/this._core.store.state.scale+this._core.store.state.viewportWidth/2/this._core.store.state.scale,r=-this._core.store.state.translateY/this._core.store.state.scale+this._core.store.state.viewportHeight/2/this._core.store.state.scale,i=n.map((t=>{const n=t.rotatedBoundingBox,i=n.y+n.height/2;return{obj:t,distance:Math.sqrt(Math.pow(n.x+n.width/2-e,2)+Math.pow(i-r,2))}}));i.sort(((t,n)=>t.distance-n.distance));const o=i.slice(0,t).map((t=>t.obj));let s=1/0,a=1/0,c=-1/0,u=-1/0;for(const t of o){const n=t.rotatedBoundingBox;s=Math.min(s,n.x),a=Math.min(a,n.y),c=Math.max(c,n.x+n.width),u=Math.max(u,n.y+n.height)}const h=c-s,l=u-a,f=s+h/2,d=a+l/2,p=Math.min(this._core.store.state.viewportWidth/(1.1*h),this._core.store.state.viewportHeight/(1.1*l),this._core.store.state.scaleMax),v=Math.max(p,this.getEffectiveMinScale());return this.animateViewportTo(this._core.store.state.viewportWidth/2-f*v,this._core.store.state.viewportHeight/2-d*v,v),!0}centerFitAllObjects(t=!0){const n=this._core.store.allNonSelectionObjects;if(0===n.length)return!1;let e=1/0,r=1/0,i=-1/0,o=-1/0;for(const t of n){const n=t.rotatedBoundingBox;e=Math.min(e,n.x),r=Math.min(r,n.y),i=Math.max(i,n.x+n.width),o=Math.max(o,n.y+n.height)}const s=i-e,a=o-r,c=e+s/2,u=r+a/2,h=Math.min(this._core.store.state.viewportWidth/(1.1*s),this._core.store.state.viewportHeight/(1.1*a),this._core.store.state.scaleMax),l=Math.max(h,this.getEffectiveMinScale());return this.animateViewportTo(this._core.store.state.viewportWidth/2-c*l,this._core.store.state.viewportHeight/2-u*l,l,t?150:0),!0}}class Kt extends p{shortcuts=[{key:"Escape",label:"Clear Selection",category:"General",condition:t=>!!t.store.activeText||!!t.store.activeShape||!!t.store.selectionGroup,action:t=>{t.store.activeText?t.store.activeText.handleEscape():t.store.activeShape?t.store.activeShape.handleEscape():t.clearSelection()}},{key:"Delete",label:"Delete Selected",category:"General",condition:t=>!!t.store.selectionGroup,action:t=>t.delete()},{key:"a",ctrl:!0,label:"Select All in Viewport",category:"General",action:t=>t.selectAllObjectsInViewport()},{key:"A",ctrl:!0,shift:!0,label:"Select All Objects",category:"General",action:t=>t.selectAllObjects()},{key:"z",ctrl:!0,label:"Undo",category:"Undo/Redo",action:t=>t.undo()},{key:"y",ctrl:!0,label:"Redo",category:"Undo/Redo",action:t=>t.redo()},{key:"1",ctrl:!0,label:"Tool 1",category:"Tool Selection",action:()=>this.switchToolByIndex(0)},{key:"2",ctrl:!0,label:"Tool 2",category:"Tool Selection",action:()=>this.switchToolByIndex(1)},{key:"3",ctrl:!0,label:"Tool 3",category:"Tool Selection",action:()=>this.switchToolByIndex(2)},{key:"4",ctrl:!0,label:"Tool 4",category:"Tool Selection",action:()=>this.switchToolByIndex(3)},{key:"5",ctrl:!0,label:"Tool 5",category:"Tool Selection",action:()=>this.switchToolByIndex(4)},{key:"6",ctrl:!0,label:"Tool 6",category:"Tool Selection",action:()=>this.switchToolByIndex(5)},{key:"7",ctrl:!0,label:"Tool 7",category:"Tool Selection",action:()=>this.switchToolByIndex(6)},{key:"8",ctrl:!0,label:"Tool 8",category:"Tool Selection",action:()=>this.switchToolByIndex(7)},{key:"9",ctrl:!0,label:"Tool 9",category:"Tool Selection",action:()=>this.switchToolByIndex(8)},{key:"c",ctrl:!0,label:"Copy",category:"Clipboard",condition:t=>!!t.store.selectionGroup,action:t=>{t.copy(),t.rerender()}},{key:"x",ctrl:!0,label:"Cut",category:"Clipboard",condition:t=>!!t.store.selectionGroup,action:t=>t.cut()},{key:"v",ctrl:!0,label:"Paste",category:"Clipboard",condition:t=>!!t.store.state.copiedObjects&&!t.store.activeText&&!t.store.activeShape,action:t=>t.paste()},{key:"+",ctrl:!0,label:"Bring Forward",category:"Object Layering",condition:t=>!!t.store.selectionGroup,action:t=>t.bringForward()},{key:"-",ctrl:!0,label:"Send Backward",category:"Object Layering",condition:t=>!!t.store.selectionGroup,action:t=>t.sendBackward()},{key:"*",shift:!0,label:"Bring to Front",category:"Object Layering",condition:t=>!!t.store.selectionGroup,action:t=>t.bringToFront()},{key:"_",shift:!0,label:"Send to Back",category:"Object Layering",condition:t=>!!t.store.selectionGroup,action:t=>t.sendToBack()},{key:"g",ctrl:!0,label:"Group",category:"Grouping",condition:t=>!!t.store.selectionGroup&&t.store.selectionGroup.objects.length>=2,action:t=>t.group()},{key:"G",ctrl:!0,shift:!0,label:"Ungroup",category:"Grouping",condition:t=>!!t.store.selectionGroup,action:t=>t.ungroup()},{key:"ArrowUp",label:"Move Object Up",category:"Movement",condition:t=>!!t.store.selectionGroup,action:t=>{t.store.selectionGroup.move(0,0,0,10),t.rerender()}},{key:"ArrowDown",label:"Move Object Down",category:"Movement",condition:t=>!!t.store.selectionGroup,action:t=>{t.store.selectionGroup.move(0,10,0,0),t.rerender()}},{key:"ArrowLeft",label:"Move Object Left",category:"Movement",condition:t=>!!t.store.selectionGroup,action:t=>{t.store.selectionGroup.move(0,0,10,0),t.rerender()}},{key:"ArrowRight",label:"Move Object Right",category:"Movement",condition:t=>!!t.store.selectionGroup,action:t=>{t.store.selectionGroup.move(10,0,0,0),t.rerender()}}];constructor(t){super(t)}switchToolByIndex(t){const n=h.getToolByIndex(t);n&&(this._core.store.setState("activeTool",n),this._core.deselectAllObjects(),n.onActivate())}handleKeyDown(t){if(this._core.store.state.isCtrlKeyPressed=t.ctrlKey,(this._core.store.activeText||this._core.store.activeShape)&&"Escape"!==t.key)return;const n=this.shortcuts.find((n=>n.key===t.key&&!!n.ctrl===t.ctrlKey&&!!n.shift===t.shiftKey&&(!n.condition||n.condition(this._core))));n&&(t.preventDefault(),n.action(this._core))}handleKeyUp(t){this._core.store.state.isCtrlKeyPressed=t.ctrlKey}getDisplayableShortcuts(){return this.shortcuts.map((({key:t,ctrl:n,shift:e,label:r,category:i})=>({key:t,ctrl:n,shift:e,label:r,category:i})))}}class Vt extends p{globalContextMenuItems=[];objectContextMenuItems=[];constructor(t,n,e){super(t),this.globalContextMenuItems=n,this.objectContextMenuItems=e}handleContextMenu(t){if(!(this._core.store.state.activeTool instanceof v))return;if(this._core.store.state.skipContextMenu)return void(this._core.store.state.skipContextMenu=!1);const n=this._core.store.state.activeTool;n?.moveHandler?.cancelPendingDrag(),this._core.store.selectionBox&&(this._core.store.objects.remove((t=>t instanceof f)),this._core.store.setSelectionBox(null),this._core.store.state.isSelecting=!1);const e=this._core.getObjectFromPointerEvent(t,".object");if(e&&!(e instanceof d)&&!(e instanceof f)){const t=d.create(this._core);t.addOrRemove(e),t.isSelected=!0,t.rotation=e.rotation,this._core.store.state.isSelecting=!1,this._core.store.selectionGroup&&this._core.removeSelectionGroup(),this._core.addSelectionGroup(t),this._core.rerender()}this._core.store.state.contextMenuItems=this._core.store.selectionGroup?this.objectContextMenuItems:this.globalContextMenuItems;let r=t.clientX-this._core.store.offsetX,i=t.clientY-this._core.store.offsetY;const o=10;r+150>window.innerWidth-o&&(r=window.innerWidth-150-o),i+200>window.innerHeight-o&&(i=window.innerHeight-200-o),r=Math.max(o,r),i=Math.max(o,i),this._core.store.state.contextMenuX=r,this._core.store.state.contextMenuY=i,this._core.store.state.isContextMenuVisible=!0,this._core.store.state.isEnabled=!1,this._core.rerender()}}class Nt extends z{__class__="KritzelCustomElement";element;isInteractive=!0;constructor(t){super(),t&&(this.translateX=t.translateX||0,this.translateY=t.translateY||0,this.scale=t.scale||1,this.element=t.element,this.height=t.height||0,this.width=t.width||0)}static create(t,n){const e=new Nt(n);return e._core=t,e.id=e.generateId(),e.workspaceId=t.store.state.activeWorkspace.id,e.userId=t.user?.id,e}mount(t){null!==t&&(this.isMounted&&this.elementRef===t&&this.element.parentElement===t||(this.elementRef=t,this.isMounted=!0,this.elementRef.innerHTML="",this.elementRef.appendChild(this.element)))}resize(t,n,e,r){e<=1||r<=1||(this.width=e,this.height=r,this.translateX=t,this.translateY=n,this.element&&(this.element.style.width=`${e}px`,this.element.style.height=`${r}px`),this._core.store.objects.update(this))}copy(){const t=Object.create(Object.getPrototypeOf(this));return Object.assign(t,this),t.id=this.generateId(),t.isMounted=!1,t.element=this.element.cloneNode(!0),t}}class Ht{_core;constructor(t){this._core=t}revive(t){if(t&&"object"==typeof t){if(t.__class__){let n;switch(t.__class__){case"KritzelPath":n=I.create(this._core).deserialize(t);break;case"KritzelLine":n=j.create(this._core).deserialize(t);break;case"KritzelText":n=A.create(this._core,t.fontSize,t.fontFamily).deserialize(t);break;case"KritzelShape":n=k.create(this._core,{shapeType:t.shapeType,fillColor:t.fillColor,strokeColor:t.strokeColor,strokeWidth:t.strokeWidth,fontSize:t.fontSize,fontFamily:t.fontFamily,fontColor:t.fontColor}).deserialize(t);break;case"KritzelImage":n=u.create(this._core).deserialize(t);break;case"KritzelCustomElement":n=Nt.create(this._core).deserialize(t);break;case"KritzelSelectionGroup":n=d.create(this._core).deserialize(t);break;case"KritzelGroup":n=b.create(this._core).deserialize(t);break;case"KritzelWorkspace":n=S.create(this._core,t).deserialize(t);break;case"KritzelBrushTool":n=new m(this._core);break;case"KritzelEraserTool":n=new H(this._core);break;case"KritzelImageTool":n=new Mt(this._core);break;case"KritzelSelectionTool":n=new v(this._core);break;case"KritzelTextTool":n=new y(this._core);break;case"KritzelLineTool":n=new w(this._core);break;case"KritzelShapeTool":n=new g(this._core);break;default:n=t}return n}const n=Array.isArray(t)?[]:{};for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(n[e]=this.revive(t[e]));return n}return t}}const Xt={activeWorkspace:void 0,activeTool:null,copiedObjects:null,objects:null,snapCandidate:null,resizeHandleType:null,lineHandleType:null,hasViewportChanged:!1,hasObjectsChanged:!1,isReady:!1,isEnabled:!0,isScaling:!1,isPanning:!1,isSelecting:!1,isResizing:!1,isResizeHandleHovered:!1,isResizeHandleSelected:!1,isRotating:!1,isRotationHandleHovered:!1,isRotationHandleSelected:!1,isLineHandleSelected:!1,isLineHandleDragging:!1,isDragging:!1,isDrawing:!1,isErasing:!1,isWriting:!1,isLoading:!1,isCtrlKeyPressed:!1,isContextMenuVisible:!1,contextMenuItems:[],contextMenuX:0,contextMenuY:0,skipContextMenu:!1,debugInfo:{showObjectInfo:!1,showViewportInfo:!1,showSyncProviderInfo:!0,showMigrationInfo:!0},host:null,pointerX:0,pointerY:0,scale:1,scaleMax:1,scaleMin:1,startX:0,startY:0,translateX:0,translateXMax:400,translateXMin:0,translateY:0,translateYMax:400,translateYMin:0,viewportWidth:0,viewportHeight:0,longTouchTimeout:null,longTouchDelay:300,pointers:new Map,workspaces:[],cursor:{icon:"default",iconActive:"default"},lockDrawingScale:!0,viewportBoundaryLeft:-1/0,viewportBoundaryRight:1/0,viewportBoundaryTop:-1/0,viewportBoundaryBottom:1/0};class Gt{static calculateSelectionBounds(t){const n=t.map((t=>t.rotatedBoundingBox));return{minX:Math.min(...n.map((t=>t.x))),minY:Math.min(...n.map((t=>t.y))),maxX:Math.max(...n.map((t=>t.x+t.width))),maxY:Math.max(...n.map((t=>t.y+t.height)))}}static calculateAlignedPositions(t,n){const e=new Map;if(t.length<2)return e;const r=this.calculateSelectionBounds(t);for(const i of t){const t=i.rotatedBoundingBox;let o=i.translateX,s=i.translateY;const a=t.x-i.translateX,c=t.y-i.translateY;switch(n){case It.StartHorizontal:o=r.minX-a;break;case It.CenterHorizontal:o=i.translateX+((r.minX+r.maxX)/2-(t.x+t.width/2));break;case It.EndHorizontal:o=i.translateX+(r.maxX-(t.x+t.width));break;case It.StartVertical:s=r.minY-c;break;case It.CenterVertical:s=i.translateY+((r.minY+r.maxY)/2-(t.y+t.height/2));break;case It.EndVertical:s=i.translateY+(r.maxY-(t.y+t.height))}e.set(i.id,{translateX:o,translateY:s})}return e}}class Yt{bounds;capacity;objects=[];children=null;_size=0;get size(){return this._size}constructor(t,n=16){this.bounds=t,this.capacity=n}reset(){this.objects=[],this.children=null,this._size=0}insert(t){if(!this.intersects(t.rotatedBoundingBox,this.bounds))return!1;if(this.objects.length<this.capacity&&null===this.children)return this.objects.push(t),this._size++,!0;null===this.children&&this.subdivide();for(const n of this.children)if(n.insert(t))return this._size++,!0;return!1}update(t){const n=this.objects.findIndex((n=>n.id===t.id));if(-1!==n)return this.objects[n]=t,!0;if(null!==this.children)for(const n of this.children)if(n.update(t))return!0;return!1}remove(t){let n=0;const e=this.objects.findIndex((n=>t(n)));if(-1!==e&&(this.objects.splice(e,1),n++),null!==this.children)for(const e of this.children)n+=e.remove(t);return this._size-=n,n}query(t){const n=[];return this._queryInto(t,n),n}_queryInto(t,n){if(this.intersects(t,this.bounds)){for(const e of this.objects)this.intersects(e.rotatedBoundingBox,t)&&n.push(e);if(null!==this.children)for(const e of this.children)e._queryInto(t,n)}}filter(t){const n=[];return this._filterInto(t,n),n}_filterInto(t,n){for(const e of this.objects)t(e)&&n.push(e);if(null!==this.children)for(const e of this.children)e._filterInto(t,n)}allObjects(){const t=[];return this._collectAllInto(t),t}_collectAllInto(t){for(const n of this.objects)t.push(n);if(null!==this.children)for(const n of this.children)n._collectAllInto(t)}subdivide(){const{x:t,y:n,z:e,width:r,height:i}=this.bounds,o=r/2,s=i/2;this.children=[new Yt({x:t,y:n,z:e,width:o,height:s},this.capacity),new Yt({x:t+o,y:n,z:e,width:o,height:s},this.capacity),new Yt({x:t,y:n+s,z:e,width:o,height:s},this.capacity),new Yt({x:t+o,y:n+s,z:e,width:o,height:s},this.capacity)]}intersects(t,n){return!(t.x>=n.x+n.width||t.x+t.width<=n.x||t.y>=n.y+n.height||t.y+t.height<=n.y)}}class Qt{quadtree;_ydoc=null;_objectsMap=null;_metadataMap=null;_providers=[];_undoManager=null;_reviver=null;_core=null;_workspaceId=null;_isReady=!1;_temporaryItemsCount=0;_idMap=new Map;_awareness=null;_objectsObserver=null;_stackItemAddedHandler=null;_stackItemPoppedHandler=null;_awarenessChangeHandler=null;_awarenessChangeCallbacks=[];_objectsChangeCallbacks=[];_lastAwarenessEmitTime=0;_awarenessEmitTimeout=null;AWARENESS_THROTTLE_INTERVAL=100;_localOnlyMode=!1;_inTransaction=!1;get isReady(){return this._isReady}get awareness(){return this._awareness}get hasAwareness(){return!!this._awareness}get localClientId(){return this._awareness?.clientID??null}setLocalUser(t){if(!this._awareness||!t)return;const n=t.displayName||t.firstName||"Anonymous";this._awareness.setLocalStateField("user",{id:t.id,displayName:n,color:t.color||this.generateColorFromName(n)})}generateColorFromName(t){let n=0;for(let e=0;e<t.length;e++)n=t.charCodeAt(e)+((n<<5)-n);return`hsl(${Math.abs(n%360)}, 45%, 55%)`}updateCursorPosition(t,n){this._awareness&&this._awareness.setLocalStateField("cursor",{x:t,y:n})}clearCursorPosition(){this._awareness&&this._awareness.setLocalStateField("cursor",null)}setActiveDrawingObject(t){this._awareness&&this._awareness.setLocalStateField("activeObjectId",t)}setLocalSelectionBox(t){this._awareness&&this._awareness.setLocalStateField("selectionBox",t)}clearLocalSelectionBox(){this._awareness&&this._awareness.setLocalStateField("selectionBox",null)}removeOrphanedSelectionGroups(){if(!this._awareness)return;const t=this._awareness.getStates(),n=new Set;t.forEach((t=>{const e=t.user?.id;e&&n.add(e)}));const e=this._core?.user?.id,r=this.quadtree.filter((t=>t instanceof d&&null!=t.userId&&t.userId!==e&&!n.has(t.userId)));for(const t of r)this.quadtree.remove((n=>n.id===t.id)),this._idMap.delete(t.id),this._objectsMap&&this._ydoc.transact((()=>{this._objectsMap.delete(t.id)}),"local");r.length>0&&(this._core?.store.invalidateSelectionCache(),this._core?.rerender())}onAwarenessChange(t){this._awarenessChangeCallbacks.push(t)}onObjectsChange(t){this._objectsChangeCallbacks.push(t)}get undoManager(){return this._undoManager}get workspaceId(){return this._workspaceId}get undoState(){return{canUndo:!!this._undoManager&&this._undoManager.canUndo(),canRedo:!!this._undoManager&&this._undoManager.canRedo(),undoStackSize:this._undoManager?this._undoManager.undoStack.length:0,redoStackSize:this._undoManager?this._undoManager.redoStack.length:0}}get totalCount(){return this.quadtree.size}findById(t){return this._idMap.get(t)}constructor(){this.quadtree=new Yt({x:-1/0,y:-1/0,z:0,width:1/0,height:1/0},8)}async initialize(t,n,e){this._core=t,this._workspaceId=n,this._reviver=new Ht(t),this._ydoc=new O.Doc,this._objectsMap=this._ydoc.getMap("objects"),this._metadataMap=this._ydoc.getMap("metadata");const r=t.editorId?`kritzel-workspace-${t.editorId}-${n}`:`kritzel-workspace-${n}`,i=e??Bt,o=!t.store?.state?.debugInfo?.showSyncProviderInfo;for(const t of i.providers){let n;n="function"==typeof t?new t(r,this._ydoc,{quiet:o}):t.create(r,this._ydoc,{quiet:o}),this._providers.push(n)}this._undoManager=new O.UndoManager([this._objectsMap],{captureTimeout:Number.MAX_SAFE_INTEGER,trackedOrigins:new Set(["local","temporary"]),ignoreRemoteMapChanges:!0}),this._stackItemAddedHandler=t=>{"undo"===t.type&&"temporary"===t.origin&&this._temporaryItemsCount++},this._stackItemPoppedHandler=t=>{"undo"===t.type&&"temporary"===t.origin&&this._temporaryItemsCount>0&&this._temporaryItemsCount--},this._undoManager.on("stack-item-added",this._stackItemAddedHandler),this._undoManager.on("stack-item-popped",this._stackItemPoppedHandler),this._objectsObserver=t=>{this.handleObjectsChange(t)},this._objectsMap.observe(this._objectsObserver);const s=this._providers.filter((t=>"local"===t.type)),a=this._providers.filter((t=>"network"===t.type));(await Promise.allSettled(s.map((t=>t.connect())))).forEach(((t,n)=>{"rejected"===t.status&&console.error(`[Kritzel] Sync provider "${s[n]?.constructor.name}" failed to connect:`,t.reason)}));for(const t of a)t.connect().catch((n=>{console.error(`[Kritzel] Network sync provider "${t.constructor.name}" failed to connect:`,n)}));this._isReady=!0;for(const t of a)if(t.awareness){this._awareness=t.awareness;break}this._awareness&&(this._awarenessChangeHandler=t=>{t.removed.length>0&&this.removeOrphanedSelectionGroups();const n=Date.now(),e=n-this._lastAwarenessEmitTime;if(null!==this._awarenessEmitTimeout&&(clearTimeout(this._awarenessEmitTimeout),this._awarenessEmitTimeout=null),e>=this.AWARENESS_THROTTLE_INTERVAL){this._lastAwarenessEmitTime=n;const t=this._awareness.getStates();for(const n of this._awarenessChangeCallbacks)n(t)}else this._awarenessEmitTimeout=setTimeout((()=>{this._lastAwarenessEmitTime=Date.now(),this._awarenessEmitTimeout=null;const t=this._awareness.getStates();for(const n of this._awarenessChangeCallbacks)n(t)}),this.AWARENESS_THROTTLE_INTERVAL-e)},this._awareness.on("change",this._awarenessChangeHandler)),this.initializeMetadata("workspace",n,t.store?.state?.activeWorkspace?.name??""),Tt(this._ydoc,this._metadataMap,{objects:this._objectsMap},_t,B,{quiet:!t.store?.state?.debugInfo?.showMigrationInfo}),this.loadFromYjs()}handleObjectsChange(t){if("local"===t.transaction.origin||"temporary"===t.transaction.origin)return void this._core?.rerender();if("migration"===t.transaction.origin)return;const n=Array.from(t.keysChanged),e=[],r=[],i=[];n.forEach((n=>{const o=t.changes.keys.get(n);if(o&&"delete"===o.action)i.push(n);else{const t=this._objectsMap?.get(n);if(t){const n=this._reviver?.revive(t);n instanceof d?r.push(n):e.push(n)}}})),i.forEach((t=>{this.quadtree.remove((n=>n.id===t)),this._idMap.delete(t)}));const o=[],s=[];e.forEach((t=>{if(this._idMap.has(t.id)){const n=this._idMap.get(t.id);n&&"function"==typeof t.adoptTransientStateFrom&&t.adoptTransientStateFrom(n),this.quadtree.update(t),this._idMap.set(t.id,t),s.push(t)}else this.quadtree.insert(t),this._idMap.set(t.id,t),o.push(t)}));const a=new Set;if(r.forEach((t=>{if(this._idMap.has(t.id)){const n=this._idMap.get(t.id);n&&"function"==typeof t.adoptTransientStateFrom&&t.adoptTransientStateFrom(n),this.quadtree.update(t),this._idMap.set(t.id,t)}else this.quadtree.insert(t),this._idMap.set(t.id,t);a.add(t.id),t.invalidateObjectsCache(),t.refreshObjectDimensions(void 0,!0),t.captureUnchangedSnapshots(),this.quadtree.update(t)})),e.length>0||i.length>0){const t=new Set([...e.map((t=>t.id)),...i]),n=this.quadtree.filter((t=>t instanceof d&&!a.has(t.id)));for(const e of n)e.objectIds.some((n=>t.has(n)))&&(e.invalidateObjectsCache(),e.refreshObjectDimensions(void 0,!0),e.captureUnchangedSnapshots(),this.quadtree.update(e))}if(this._core?.store.invalidateSelectionCache(),this._core?.rerender(),o.length>0&&this._core?.engine.emitObjectsAdded(o),i.length>0){const t=i.map((t=>({id:t})));this._core?.engine.emitObjectsRemoved(t)}s.length>0&&this._core?.engine.emitObjectsUpdated(s.map((t=>({object:t,changedProperties:[]}))));for(const t of this._objectsChangeCallbacks)t()}initializeMetadata(t,n,e){this._metadataMap&&this._ydoc&&this._ydoc.transact((()=>{this._metadataMap?.get("type")||this._metadataMap?.set("type",t),void 0===this._metadataMap?.get("isPublic")&&this._metadataMap?.set("isPublic",!1),void 0===this._metadataMap?.get("schemaVersion")&&this._metadataMap?.set("schemaVersion",B),this._metadataMap?.set("workspaceId",n),this._metadataMap?.set("workspaceName",e)}),"metadata")}getIsPublic(){return this._metadataMap?.get("isPublic")??!1}setIsPublic(t){this._metadataMap&&this._ydoc&&this._ydoc?.transact((()=>{this._metadataMap?.set("isPublic",t)}),"metadata")}getDocumentType(){return this._metadataMap?.get("type")??"workspace"}getWorkspaceName(){return this._metadataMap?.get("workspaceName")??""}setWorkspaceName(t){this._metadataMap&&this._ydoc&&this._ydoc?.transact((()=>{this._metadataMap?.set("workspaceName",t)}),"metadata")}getMetadataWorkspaceId(){return this._metadataMap?.get("workspaceId")??""}transaction(t){if(this._ydoc){this._inTransaction=!0;try{this._ydoc.transact(t,"local")}finally{this._inTransaction=!1}}}stopUndoCapturing(){this.markUndoBoundary()}markUndoBoundary(){this._inTransaction||this._undoManager?.stopCapturing()}withLocalUpdatesOnly(t){this._localOnlyMode=!0;try{t()}finally{this._localOnlyMode=!1}}loadFromYjs(){if(!this._objectsMap||!this._reviver)return;this.quadtree.reset(),this._idMap.clear();const t=this._core?.user?.id,n=[];this._objectsMap.forEach(((e,r)=>{const i=this._reviver?.revive(e);i instanceof d&&null!=i.userId&&i.userId!==t?n.push(r):i&&(this.quadtree.insert(i),this._idMap.set(i.id,i))})),n.length>0&&this._ydoc.transact((()=>{for(const t of n)this._objectsMap.delete(t)}),"local")}reset(){this.quadtree.reset(),this._idMap.clear(),this.markUndoBoundary(),this._ydoc?.transact((()=>{this._objectsMap?.clear()}),"local")}insert(t){if(!t.id)return!1;if(this.quadtree.insert(t),this._idMap.set(t.id,t),this._objectsMap&&this.isPersistable(t)){const n=t.serialize();this.markUndoBoundary(),this._ydoc?.transact((()=>{this._objectsMap?.set(t.id,n)}),"local")}return!0}update(t,n={}){if(!t.id)return!1;if(!this._idMap.has(t.id))return!1;if(this.quadtree.update(t),this._idMap.set(t.id,t),!this._localOnlyMode&&this._objectsMap&&this.isPersistable(t)){const e=t.serialize(),r=n.temporary?"temporary":"local";this._ydoc?.transact((()=>{this._objectsMap?.set(t.id,e)}),r)}return!0}remove(t){const n=this.quadtree.filter(t);if(0!==n.length){this.markUndoBoundary();for(const t of n)this.quadtree.remove((n=>n.id===t.id)),this._idMap.delete(t.id),this._objectsMap&&this.isPersistable(t)&&this._ydoc?.transact((()=>{this._objectsMap?.delete(t.id)}),"local")}}filter(t){return this.quadtree.filter(t)}allObjects(){return this.quadtree.allObjects()}query(t){return this.quadtree.query(t)}isPersistable(t){return!(t instanceof f)}undo(){this._undoManager&&this._undoManager.canUndo()&&(this._undoManager.undo(),this._core?.engine.emitObjectsChange())}redo(){this._undoManager&&this._undoManager.canRedo()&&(this._undoManager.redo(),this._core?.engine.emitObjectsChange())}canUndo(){return!!this._undoManager&&this._undoManager.canUndo()}canRedo(){return!!this._undoManager&&this._undoManager.canRedo()}clearHistory(){this._undoManager&&(this._undoManager.clear(),this._temporaryItemsCount=0)}consolidateTemporaryItems(){if(!this._undoManager||0===this._temporaryItemsCount)return;const t=this._undoManager.undoStack.length;if(0===t)return void(this._temporaryItemsCount=0);this._undoManager.stopCapturing();const n=Math.min(this._temporaryItemsCount,t);if(n>1){for(let t=0;t<n;t++)this._undoManager.canUndo()&&this._undoManager.undo();this._ydoc?.transact((()=>{for(let t=n-1;t>=0;t--)this._undoManager?.canRedo()&&this._undoManager.redo()}),"local")}this._temporaryItemsCount=0}clearTemporaryItems(){if(!this._undoManager||0===this._temporaryItemsCount)return;const t=Math.min(this._temporaryItemsCount,this._undoManager.undoStack.length);for(let n=0;n<t;n++)this._undoManager.undoStack.length>0&&this._undoManager.undoStack.pop();this._temporaryItemsCount=0}destroy(){this._objectsMap&&this._objectsObserver&&(this._objectsMap.unobserve(this._objectsObserver),this._objectsObserver=null),this._undoManager&&(this._stackItemAddedHandler&&(this._undoManager.off("stack-item-added",this._stackItemAddedHandler),this._stackItemAddedHandler=null),this._stackItemPoppedHandler&&(this._undoManager.off("stack-item-popped",this._stackItemPoppedHandler),this._stackItemPoppedHandler=null),this._undoManager.destroy(),this._undoManager=null),this.quadtree.reset(),this._idMap.clear(),this._awareness&&this._awarenessChangeHandler&&(this._awareness.off("change",this._awarenessChangeHandler),this._awarenessChangeHandler=null),null!==this._awarenessEmitTimeout&&(clearTimeout(this._awarenessEmitTimeout),this._awarenessEmitTimeout=null),this._awareness=null,this._awarenessChangeCallbacks=[],this._providers.forEach((t=>{t.destroy()})),this._providers=[],this._objectsMap=null,this._metadataMap=null,this._ydoc&&(this._ydoc.destroy(),this._ydoc=null),this._core=null,this._reviver=null,this._workspaceId=null,this._isReady=!1,this._temporaryItemsCount=0}}class qt{_state;_listeners=new Map;_cachedSelectionBox=null;_cachedSelectionGroup=null;_selectionBoxCacheValid=!1;_selectionGroupCacheValid=!1;_localUserId=null;get state(){return this._state}get objects(){if(!this._state.objects)throw new Error("Objects map is not initialized.");return this._state.objects}get host(){if(!this._state.host)throw new Error("Host element is not set.");return this._state.host}get currentZIndex(){return Math.max(0,...this.objects.filter((t=>!(t instanceof d||t instanceof f))).map((t=>t.zIndex)))+1}get hasViewportBoundaries(){return Number.isFinite(this._state.viewportBoundaryLeft)||Number.isFinite(this._state.viewportBoundaryRight)||Number.isFinite(this._state.viewportBoundaryTop)||Number.isFinite(this._state.viewportBoundaryBottom)}get viewportBoundaryBounds(){const t=this._state.viewportBoundaryLeft,n=this._state.viewportBoundaryRight,e=this._state.viewportBoundaryTop,r=this._state.viewportBoundaryBottom;return{x:Number.isFinite(t)?t:-1/0,y:Number.isFinite(e)?e:-1/0,z:0,width:Number.isFinite(t)&&Number.isFinite(n)?n-t:1/0,height:Number.isFinite(e)&&Number.isFinite(r)?r-e:1/0}}get totalObjectCount(){return this.hasViewportBoundaries?this.allObjects.length:this.objects.totalCount}get allObjects(){return this.hasViewportBoundaries?this.objects.query(this.viewportBoundaryBounds):this.objects.allObjects()}get objectsInViewport(){return this.objects.query({x:-this._state.translateX/this._state.scale,y:-this._state.translateY/this._state.scale,z:this._state.scale,width:this._state.viewportWidth/this._state.scale,height:this._state.viewportHeight/this._state.scale,depth:100}).sort(((t,n)=>t.zIndex-n.zIndex))}get allNonSelectionObjects(){return this.allObjects.filter((t=>!(t instanceof d||t instanceof f)))}get selectedObjects(){return this.allObjects.filter((t=>!(t instanceof d))).filter((t=>t.isSelected))}get selectionBox(){if(this._selectionBoxCacheValid)return this._cachedSelectionBox;const t=this.objects.filter((t=>t instanceof f));return this._cachedSelectionBox=t.length>0?t[0]:null,this._selectionBoxCacheValid=!0,this._cachedSelectionBox}get selectionGroup(){if(this._selectionGroupCacheValid)return this._cachedSelectionGroup;const t=this.objects.filter((t=>t instanceof d));return this._cachedSelectionGroup=this._localUserId?t.find((t=>t.userId===this._localUserId))??null:t.length>0?t[0]:null,this._selectionGroupCacheValid=!0,this._cachedSelectionGroup}invalidateSelectionCache(){this._selectionBoxCacheValid=!1,this._selectionGroupCacheValid=!1}setSelectionBox(t){this._cachedSelectionBox=t,this._selectionBoxCacheValid=!0}setSelectionGroup(t){this._cachedSelectionGroup=t,this._selectionGroupCacheValid=!0}setLocalUserId(t){this._localUserId=t,this.invalidateSelectionCache()}get activeText(){const t=this.objects.filter((t=>t instanceof A&&t.isEditing));return t.length>0?t[0]:null}get activeShape(){const t=this.objects.filter((t=>t instanceof k&&t.isEditing));return t.length>0?t[0]:null}get currentPath(){const t=this.objects.filter((t=>t instanceof I&&!1===t.isCompleted));return t.length>0?t[0]:null}get currentLine(){const t=this.objects.filter((t=>t instanceof j&&!1===t.isCompleted));return t.length>0?t[0]:null}get offsetX(){return this.host.getBoundingClientRect().left}get offsetY(){return this.host.getBoundingClientRect().top}get isDisabled(){return!1===this._state.isEnabled||!1===this._state.isReady||null===this._state.activeWorkspace}get isPointerDown(){return this._state.pointers.size>0}constructor(t){this._state=t,this._state.objects=new Qt}onStateChange(t,n){this._listeners.has(t)||this._listeners.set(t,new Set);const e=this._listeners.get(t);if(!e)throw new Error(`Listeners set for property ${String(t)} was not initialized.`);e.add(n)}getState(t){return this._state[t]}setState(t,n){const e=this._state[t];if(e!==n){this._state[t]=n;const r=this._listeners.get(t);r&&r.forEach((r=>r(n,e,String(t))))}}}class Zt{map;_ydoc=null;_workspacesMap=null;_metadataMap=null;_providers=[];_core=null;_isReady=!1;_onRemoteChangeCallback=null;_workspacesObserver=null;get isReady(){return this._isReady}get hasNetworkSyncProvider(){return this._providers.some((t=>"network"===t.type))}constructor(){this.map=new Map}onRemoteChange(t){this._onRemoteChangeCallback=t}async initialize(t,n){this._core=t,this._ydoc=new O.Doc,this._workspacesMap=this._ydoc.getMap("workspaces"),this._metadataMap=this._ydoc.getMap("metadata");const e=n?.appStateId??this.getOrCreateAppStateInstanceId(t),r=t.editorId?`kritzel-app-state-${t.editorId}-${e}`:`kritzel-app-state-${e}`,i=n??Bt,o=!t.store.state.debugInfo.showSyncProviderInfo;for(const t of i.providers){let n;n="function"==typeof t?new t(r,this._ydoc,{quiet:o}):t.create(r,this._ydoc,{quiet:o}),this._providers.push(n)}this._workspacesObserver=t=>{this.handleWorkspacesChange(t)},this._workspacesMap.observe(this._workspacesObserver);const s=this._providers.filter((t=>"local"===t.type)),a=this._providers.filter((t=>"network"===t.type));(await Promise.allSettled(s.map((t=>t.connect())))).forEach(((t,n)=>{"rejected"===t.status&&console.error(`[Kritzel] Sync provider "${s[n]?.constructor.name}" failed to connect:`,t.reason)}));for(const t of a)t.connect().catch((n=>{console.error(`[Kritzel] Network sync provider "${t.constructor.name}" failed to connect:`,n)}));this._isReady=!0,Tt(this._ydoc,this._metadataMap,{workspaces:this._workspacesMap},Et,U,{quiet:!t.store.state.debugInfo.showMigrationInfo}),this.initializeMetadata("state"),this.loadFromYjs()}getOrCreateAppStateInstanceId(t){const n=globalThis.localStorage;if(!n)throw new Error("[KritzelAppStateMap] localStorage is unavailable. Cannot persist app-state document identity.");const e=t.getStorageKey("kritzel-app-state-instance-id");let r;try{r=n.getItem(e)}catch{throw new Error("[KritzelAppStateMap] Failed to read app-state instance id from localStorage.")}if(r)return r;const i=_.generateUUID();try{n.setItem(e,i)}catch{throw new Error("[KritzelAppStateMap] Failed to persist app-state instance id to localStorage.")}return i}handleWorkspacesChange(t){if("local"===t.transaction.origin)return void this._core?.rerender();if("migration"===t.transaction.origin)return;const n=Array.from(t.keysChanged),e=[],r=[];n.forEach((n=>{const i=t.changes.keys.get(n);if(i&&"delete"===i.action)r.push(n);else{const t=this._workspacesMap.get(n);if(t){const n=this.reviveWorkspace(t);e.push(n)}}})),r.forEach((t=>{this.map.delete(t)})),e.forEach((t=>{this.map.set(t.id,t)})),this._core?.store&&(this._core.store.state.workspaces=this.allWorkspaces()),this._onRemoteChangeCallback&&this._onRemoteChangeCallback(),this._core?.rerender()}reviveWorkspace(t){let n=t.viewport;if(n&&"translateX"in n&&!("centerWorldX"in n)){const t=n.scale??1;n={centerWorldX:-(n.translateX??0)/t,centerWorldY:-(n.translateY??0)/t,scale:t}}const e=new S(t.id,t.name,n);return this._core&&(e._core=this._core),e.createdAt=new Date(t.createdAt),e.updatedAt=new Date(t.updatedAt),e.isPublic=t.isPublic??!1,e}initializeMetadata(t){this._metadataMap&&this._ydoc&&this._ydoc.transact((()=>{this._metadataMap?.get("type")||this._metadataMap?.set("type",t),void 0===this._metadataMap?.get("isPublic")&&this._metadataMap?.set("isPublic",!1),void 0===this._metadataMap?.get("schemaVersion")&&this._metadataMap?.set("schemaVersion",U)}),"metadata")}getIsPublic(){return this._metadataMap?.get("isPublic")??!1}setIsPublic(t){this._metadataMap&&this._ydoc&&this._ydoc.transact((()=>{this._metadataMap?.set("isPublic",t)}),"metadata")}getDocumentType(){return this._metadataMap?.get("type")??"state"}transaction(t){this._ydoc&&this._ydoc.transact(t,"local")}loadFromYjs(){this._workspacesMap&&(this.map.clear(),this._workspacesMap.forEach(((t,n)=>{const e=this.reviveWorkspace(t);this.map.set(n,e)})))}reset(){this.map.clear(),this._ydoc?.transact((()=>{this._workspacesMap?.clear()}),"local")}insert(t){if(!t.id)return!1;if(this.map.set(t.id,t),this._workspacesMap){const n=t.serialize();this._ydoc?.transact((()=>{this._workspacesMap?.set(t.id,n)}),"local")}return!0}update(t){if(!t.id||!this.map.has(t.id))return!1;if(this.map.set(t.id,t),this._workspacesMap){const n=t.serialize();this._ydoc?.transact((()=>{this._workspacesMap?.set(t.id,n)}),"local")}return!0}remove(t){const n=Array.from(this.map.values()).find(t);return!!n&&(this.map.delete(n.id),this._workspacesMap&&this._ydoc?.transact((()=>{this._workspacesMap?.delete(n.id)}),"local"),!0)}get(t){return this.map.get(t)}allWorkspaces(){return Array.from(this.map.values())}filter(t){return Array.from(this.map.values()).filter(t)}find(t){return Array.from(this.map.values()).find(t)}has(t){return this.map.has(t)}destroy(){this._workspacesMap&&this._workspacesObserver&&(this._workspacesMap.unobserve(this._workspacesObserver),this._workspacesObserver=null),this._providers.forEach((t=>{t.disconnect(),t.destroy()})),this._providers=[],this.map.clear(),this._workspacesMap=null,this._metadataMap=null,this._ydoc&&(this._ydoc.destroy(),this._ydoc=null),this._core=null,this._onRemoteChangeCallback=null,this._isReady=!1}}class Jt{_core;_targetElement=null;_shadowRoot=null;constructor(t){this._core=t}setTargetElement(t){this._targetElement&&(this._targetElement.style.cursor="",this._targetElement.style.removeProperty("--kritzel-global-pointer-cursor")),this._targetElement=t,this._targetElement&&this._targetElement.style.setProperty("--kritzel-global-pointer-cursor",jt.getPointerCursor())}getTargetElement(){return this._targetElement}setShadowRoot(t){this._shadowRoot=t}resetToDefault(){this._core.store.state.cursor={icon:"default",iconActive:"default"}}updateHoverState(t){if(this._core.store.isPointerDown)return;if(!this._shadowRoot)return;const n=this._shadowRoot.elementsFromPoint(t.clientX,t.clientY);if(!n||0===n.length)return;const e=n.find((t=>t.classList.contains("resize-handle-overlay")));if(e){const t=this._core.store.selectionGroup,n=t?.rotationDegrees??0,r=e.classList.contains("top-left"),i=e.classList.contains("bottom-right");this._core.store.state.cursor={icon:"move-vertical",rotation:n+(r||i?-45:45)}}else this._core.store.state.cursor=n.find((t=>t.classList.contains("rotation-handle-overlay")))||n.find((t=>t.classList.contains("selection-line-handle-overlay")))?{icon:"hand",iconActive:"hand-grab"}:{icon:"default",iconActive:"default"}}applyCursor(){const t=this._core.store.state,n=this._core.store.isPointerDown,e=t.cursor?.icon,r=t.cursor?.iconActive??e,i=t.cursor?.rotation,o=jt.getCursor({iconName:n?r:e,rotation:i});this._targetElement&&(this._targetElement.style.cursor=o)}cleanup(){this._targetElement&&(this._targetElement.style.cursor="",this._targetElement.style.removeProperty("--kritzel-pointer-cursor")),this._targetElement=null,this._shadowRoot=null}}class tn{_kritzelEngine;_store;_syncConfig;_assetStorageConfig;_assetResolver;_appStateMap;_anchorManager;_cursorManager;_themeManager;_editorId;_user;get engine(){return this._kritzelEngine}get store(){return this._store}get appStateMap(){return this._appStateMap}get anchorManager(){return this._anchorManager}get cursorManager(){return this._cursorManager}get themeManager(){return this._themeManager}get editorId(){return this._editorId}getStorageKey(t){return this._editorId?`${t}-${this._editorId}`:t}get user(){return this._user}setUser(t){this._user=t,this._store.setLocalUserId(t?.id??null),this._store.objects?.setLocalUser(t)}constructor(t,n){this._kritzelEngine=t,this._editorId=n,this._store=new qt(Xt),this._appStateMap=new Zt,this._anchorManager=new zt(this),this._cursorManager=new Jt(this),this._themeManager=new L(this),this._assetResolver=new x}get assetResolver(){return this._assetResolver}setSyncConfig(t){this._syncConfig=t}setAssetStorageConfig(t){this._assetStorageConfig=t}setEditorId(t){this._editorId=t,this._themeManager=new L(this)}async initializeYjs(){await this._appStateMap.initialize(this,this._syncConfig)}async initializeAssetStorage(){await this._assetResolver.init(this._assetStorageConfig),this.warnIfAssetStorageMismatched()}warnIfAssetStorageMismatched(){this._appStateMap.hasNetworkSyncProvider&&(this._assetResolver.hasRemoteProvider||console.warn("[Kritzel] A network sync provider is configured, but no remote asset storage provider was found. Images added on this device will only be available locally and will appear broken on other devices. Configure a remote asset provider (e.g. HttpAssetProvider) via the `assetStorage` prop to enable cross-device image sync."))}loadWorkspacesFromAppState(){return this._appStateMap.allWorkspaces()}saveWorkspaceToAppState(t){this._appStateMap.has(t.id)?this._appStateMap.update(t):this._appStateMap.insert(t)}deleteWorkspaceFromAppState(t){this._appStateMap.remove((n=>n.id===t))}async initializeWorkspace(t,n){const e=this.loadWorkspacesFromAppState(),r=e.length>0?[...e].sort(((t,n)=>{const e=n.createdAt.getTime()-t.createdAt.getTime();return 0!==e?e:n.updatedAt.getTime()-t.updatedAt.getTime()}))[0]:null,i=localStorage.getItem(this.getStorageKey("kritzel-active-workspace-id")),o=i?e.find((t=>t.id===i)):null;let s;if(t)s=t,e.find((n=>n.id===t.id))||(s._core=this,this.saveWorkspaceToAppState(s));else if(o)s=o;else if(r)s=r;else{if(n?.skipFallbackCreation)return this._store.state.workspaces=e,this._store.state.activeWorkspace=null,void this.rerender();s=new S(_.generateUUID(),"New Workspace"),s._core=this,this.saveWorkspaceToAppState(s)}localStorage.setItem(this.getStorageKey("kritzel-active-workspace-id"),s.id),this._store.objects&&this._store.objects.isReady&&this._store.objects.destroy();const a=new Qt;this._store.state.objects=a,this._store.state.activeWorkspace=s,this._store.state.workspaces=this.loadWorkspacesFromAppState();const c=s.viewport??{centerWorldX:0,centerWorldY:0,scale:1},u=c.scale??1,h=this._store.state.viewportHeight;this._store.state.translateX=this._store.state.viewportWidth/2-(c.centerWorldX??0)*u,this._store.state.translateY=h/2-(c.centerWorldY??0)*u,this._store.state.scale=u,await a.initialize(this,s.id,this._syncConfig),this._user&&a.setLocalUser(this._user),a.onAwarenessChange((t=>{this.engine.emitAwarenessChange(t)})),this._anchorManager.rebuildIndex(),this.engine.emitObjectsChange(),this.rerender()}async loadSharedWorkspace(t){const n=t;let e=this.getWorkspaces().find((t=>t.id===n));e?e.isPublic=!0:(e=new S(n,"Shared Workspace"),e.isPublic=!0,this.createWorkspace(e)),await this.initializeWorkspace(e)}getObjectsInViewport(){return this._store.objects?this._store.objects.query({x:-this._store.state.translateX/this._store.state.scale,y:-this._store.state.translateY/this._store.state.scale,z:this._store.state.scale,width:this._store.state.viewportWidth/this._store.state.scale,height:this._store.state.viewportHeight/this._store.state.scale,depth:100}).filter((t=>!(t instanceof d||t instanceof f))).sort(((t,n)=>t.zIndex-n.zIndex)):[]}rerender(){this._kritzelEngine&&this._kritzelEngine.forceUpdate++}findObjectById(t){for(const n of this._store.allObjects)if(n.id===t)return n;return null}getWorkspaces(){return this.loadWorkspacesFromAppState()}createWorkspace(t){t._core=this,t.createdAt=new Date,t.updatedAt=new Date,this.saveWorkspaceToAppState(t),this._store.state.workspaces=this.loadWorkspacesFromAppState()}updateWorkspace(t){t.updatedAt=new Date,this.saveWorkspaceToAppState(t),this._store.state.activeWorkspace?.id===t.id&&this._store.objects?.setWorkspaceName(t.name);const n=this._store.state.workspaces,e=n.findIndex((n=>n.id===t.id));-1!==e&&(n[e]=t,this._store.state.workspaces=n)}deleteWorkspace(t){this._store.state.activeWorkspace?.id===t.id&&(this.engine.viewport?.cancelPendingUpdates(),this._store.objects?.destroy()),this.deleteWorkspaceFromAppState(t.id),this._store.state.workspaces=this.loadWorkspacesFromAppState(),window.indexedDB.deleteDatabase(this._editorId?`kritzel-workspace-${this._editorId}-${t.id}`:`kritzel-workspace-${t.id}`)}updateWorkspaceViewport(t,n,e){const r=this._store.state.activeWorkspace;r&&this._store.state.workspaces.some((t=>t.id===r.id))&&(r.viewport={centerWorldX:(this._store.state.viewportWidth/2-t)/e,centerWorldY:(this._store.state.viewportHeight/2-n)/e,scale:e},r.updatedAt=new Date,this.saveWorkspaceToAppState(r))}getIsPublic(){return this._store.state.activeWorkspace?.isPublic??!1}addObject(t){this._store.objects.insert(t)}removeObject(t,n=!1){l.isInstanceOf(t,"KritzelGroup")&&!n&&[...t.children].forEach((t=>{this.removeObject(t)})),l.isInstanceOf(t,"KritzelLine")?this._anchorManager.handleLineDeleted(t.id):this._anchorManager.handleObjectDeleted(t.id),t.isMounted=!1,this._store.objects.remove((n=>n.id===t.id))}updateObject(t,n){const e=[];for(const r in n)if(n.hasOwnProperty(r)){const i=n[r];void 0!==i&&(t[r]=i,e.push(r))}t.onAfterUpdate(e),this._store.objects.update(t)}addSelectionGroup(t){this.removeSelectionGroup(),this.removeSelectionBox(),this._store.objects.insert(t),this._store.setSelectionGroup(t),this._kritzelEngine.triggerSelectionChange()}removeSelectionGroup(){const t=this._store.selectionGroup;t&&(this._store.objects.remove((n=>n.id===t.id)),this._store.setSelectionGroup(null),this._kritzelEngine.triggerSelectionChange())}removeSelectionBox(){const t=this._store.selectionBox;t&&(this._store.objects.remove((n=>n.id===t.id)),this._store.setSelectionBox(null),this._store.objects.clearLocalSelectionBox())}deselectAllObjects(){this.removeSelectionGroup(),this.rerender()}delete(){const t=this._store.selectionGroup;t&&(this._store.objects.stopUndoCapturing(),this._store.objects.transaction((()=>{t.objects.forEach((t=>this.removeObject(t))),this.removeSelectionGroup()})),this._store.objects.stopUndoCapturing(),this.engine.emitObjectsInViewportChange(),this.rerender())}undo(){this._store.objects?.undo()}redo(){this._store.objects?.redo()}deleteObject(t){const n=this.findObjectById(t);n&&(this.removeObject(n),this.engine.emitObjectsInViewportChange(),this.rerender())}copy(){const t=this._store.selectionGroup;if(t){const n=new Map,e=t.objects.sort(((t,n)=>t.zIndex-n.zIndex)).map((t=>{const e=t.copy();return n.set(e.id,t.id),e}));this._store.state.copiedObjects=e,this._store.state.copiedObjectIdMapping=n}}cut(){this._store.selectionGroup&&(this.copy(),this.delete())}paste(t,n){const e=this._store.state.copiedObjects;if(!e||0===e.length)return;const r=this._store.state.activeWorkspace,i=this._store.state.copiedObjectIdMapping,o=e.some((t=>t.workspaceId!==r.id)),s=Math.min(...e.map((t=>t.translateX))),a=Math.min(...e.map((t=>t.translateY)));let c,u;void 0!==t&&void 0!==n?(c=t,u=n):o?(c=s,u=a):(c=s+25/this._store.state.scale,u=a+25/this._store.state.scale);const f=c-s,p=u-a;this.removeSelectionGroup(),this.removeSelectionBox();const v=d.create(this),g=new Map;i&&i.forEach(((t,n)=>{g.set(t,n)}));const w=this._store.currentZIndex;this._store.objects.transaction((()=>{const t=(n,e)=>{if(0===n._pendingChildren.length)return;const i=n._pendingChildren;n._pendingChildren=[],i.forEach(((n,i)=>{n.workspaceId!==r.id&&(n.workspaceId=r.id),n.updatePosition(n.translateX+f,n.translateY+p),n.zIndex=e+i+1,l.isInstanceOf(n,"KritzelGroup")&&t(n,n.zIndex),this.addObject(n)})),n.finalize()};e.forEach(((n,e)=>{n.workspaceId!==r.id&&(n.workspaceId=r.id),n.updatePosition(n.translateX+f,n.translateY+p),n.zIndex=w+e,l.isInstanceOf(n,"KritzelGroup")&&t(n,n.zIndex),this.addObject(n),v.addOrRemove(n)})),e.forEach((t=>{if(l.isInstanceOf(t,"KritzelLine")){let n=!1;t.startAnchor&&g.has(t.startAnchor.objectId)&&(t.startAnchor={objectId:g.get(t.startAnchor.objectId)},n=!0),t.endAnchor&&g.has(t.endAnchor.objectId)&&(t.endAnchor={objectId:g.get(t.endAnchor.objectId)},n=!0),n&&this._store.objects.update(t)}}))})),this._anchorManager.rebuildIndex(),v.isSelected=!0,1===e.length&&(v.rotation=e[0].rotation),this.addSelectionGroup(v),o&&(void 0!==t&&void 0!==n?v.updatePosition(t,n):v.centerInViewport(),this.engine.viewport.centerFitInViewport(v)),this._store.state.isSelecting=!1,requestAnimationFrame((()=>{const t=this._store.selectionGroup;if(t){const n=new Map,e=t.objects.sort(((t,n)=>t.zIndex-n.zIndex)).map((t=>{const e=t.copy();return n.set(e.id,t.id),e}));this._store.state.copiedObjects=e,this._store.state.copiedObjectIdMapping=n}})),this._store.setState("activeTool",h.getTool("selection")),this.engine.emitObjectsChange(),this.rerender()}bringForward(t){const n=this._store.selectionGroup,e=t?[t]:n?.objects||[],r=this._store.allNonSelectionObjects.filter((t=>-1===e.findIndex((n=>n.id===t.id)))),i=r.length>0?Math.max(...r.map((t=>t.zIndex)))+1:0;e.forEach((t=>{t.zIndex!==i&&this.updateObject(t,{zIndex:t.zIndex+1})})),this.rerender()}sendBackward(t){const n=this._store.selectionGroup,e=t?[t]:n?.objects||[],r=this._store.allNonSelectionObjects.filter((t=>-1===e.findIndex((n=>n.id===t.id)))),i=r.length>0?Math.min(...r.map((t=>t.zIndex)))-1:0;e.forEach((t=>{t.zIndex!==i&&this.updateObject(t,{zIndex:t.zIndex-1})})),this.rerender()}bringToFront(t){const n=this._store.selectionGroup,e=t?[t]:n?.objects||[],r=this._store.allNonSelectionObjects.filter((t=>-1===e.findIndex((n=>n.id===t.id)))),i=Math.max(...r.map((t=>t.zIndex)))+1;e.forEach((t=>{this.updateObject(t,{zIndex:i})})),this.rerender()}sendToBack(t){const n=this._store.selectionGroup,e=t?[t]:n?.objects||[],r=this._store.allNonSelectionObjects.filter((t=>-1===e.findIndex((n=>n.id===t.id)))),i=Math.min(...r.map((t=>t.zIndex)))-1;e.forEach((t=>{this.updateObject(t,{zIndex:i})})),this.rerender()}alignObjects(t){const n=this._store.selectionGroup;if(!n||n.objects.length<2)return;const e=n.objects,r=Gt.calculateAlignedPositions(e,t);this._store.objects.transaction((()=>{for(const t of e){const n=r.get(t.id);n&&this.updateObject(t,{translateX:n.translateX,translateY:n.translateY})}})),n.refreshObjectDimensions(),this.rerender()}group(){const t=this._store.selectionGroup;if(!t||t.objects.length<2)return;const n=b.createFromObjects(this,t.objects);this.addObject(n),this.removeSelectionGroup();const e=d.create(this);e.addOrRemove(n),e.isSelected=!0,e.rotation=n.rotation,this.addSelectionGroup(e),this.engine.emitObjectsChange(),this.rerender()}ungroup(){const t=this._store.selectionGroup;if(!t)return;const n=t.objects.filter((t=>l.isInstanceOf(t,"KritzelGroup")));if(0===n.length)return;const e=[],r=t.objects.filter((t=>!l.isInstanceOf(t,"KritzelGroup")));n.forEach((t=>{const n=t.ungroup();e.push(...n),this.removeObject(t,!0)})),this.removeSelectionGroup();const i=d.create(this);[...e,...r].forEach((t=>{i.addOrRemove(t)})),i.isSelected=!0,this.addSelectionGroup(i),this.engine.emitObjectsChange(),this.rerender()}selectObjects(t){if(0===t.length)return;const n=d.create(this);t.forEach((t=>{t.isSelected=!1,n.addOrRemove(t)})),n.isSelected=!0,1===t.length&&(n.rotation=n.objects[0].rotation),this.addSelectionGroup(n),this.rerender()}selectAllObjects(){const t=this._store.objects.allObjects().filter((t=>!(t instanceof d||t instanceof f||t instanceof T)));if(t.length>0){const n=d.create(this);t.forEach((t=>{t.isSelected=!1,n.addOrRemove(t)})),n.isSelected=!0,this._store.state.isSelecting=!1,1===t.length&&(n.rotation=n.objects[0].rotation),this.addSelectionGroup(n),this._store.setState("activeTool",h.getTool("selection")),this.rerender()}}selectAllObjectsInViewport(){const t=this._store.objects.query({x:-this._store.state.translateX/this._store.state.scale,y:-this._store.state.translateY/this._store.state.scale,z:this._store.state.scale,width:this._store.state.viewportWidth/this._store.state.scale,height:this._store.state.viewportHeight/this._store.state.scale,depth:100}).filter((t=>t.isInViewport())).filter((t=>!(t instanceof d||t instanceof f||t instanceof T)));if(t.length>0){const n=d.create(this);t.forEach((t=>{t.isSelected=!1,n.addOrRemove(t)})),n.isSelected=!0,this._store.state.isSelecting=!1,1===t.length&&(n.rotation=n.objects[0].rotation),this.addSelectionGroup(n),this._store.setState("activeTool",h.getTool("selection")),this.rerender()}}clearSelection(){this.removeSelectionGroup();const t=this._user?.id;this._store.objects.remove((n=>n instanceof f||n instanceof d&&(null==t||n.userId===t||null==n.userId))),this._store.setSelectionBox(null),this._store.setSelectionGroup(null),this._store.state.isSelecting=!1,this._store.state.isResizeHandleSelected=!1,this._store.state.isRotationHandleSelected=!1,this._store.state.isLineHandleSelected=!1,this._store.state.isLineHandleDragging=!1,this._store.state.lineHandleType=void 0,this.rerender()}resetActiveText(){const t=this._store.activeText;t&&(t.isEmpty?this.deleteObject(t.id):t.save())}resetActiveShape(){const t=this._store.activeShape;t&&t.save()}getObjectFromPointerEvent(t,n=".object"){const e=this._store.state.host?.shadowRoot;if(!e)return null;const r=t.clientX,i=t.clientY,o=e.elementFromPoint(r,i);if(!o)return null;const s=o.closest(n);if(s){const t=this._store.allObjects.find((t=>s.id===t.id));return t&&t.hitTest(r,i)?t:null}return null}getObjectsFromPointerEvent(t,n=".object"){const e=this._store.state.host?.shadowRoot;if(!e)return[];const r=e.elementsFromPoint(t.clientX,t.clientY);if(!r||0===r.length)return[];const i=new Set;return r.forEach((t=>{const e=t.closest(n);e&&e.id&&i.add(e.id)})),i.size>0?this._store.allObjects.filter((t=>i.has(t.id))).sort(((t,n)=>n.zIndex-t.zIndex)):[]}getElementsAtPoint(t,n){const e=this._store.state.host?.shadowRoot;if(!e)return[];const r=e.elementsFromPoint(t.clientX,t.clientY);return r&&0!==r.length?r.filter((t=>t.matches(n))):[]}isPointerOverElement(t,n){return this.getElementsAtPoint(t,n).length>0}getCanvasPoint(t){if(!this._store.state.host)return{x:0,y:0};const n=this._store.state.host.getBoundingClientRect();return{x:(t.clientX-n.left-this._store.state.translateX)/this._store.state.scale,y:(t.clientY-n.top-this._store.state.translateY)/this._store.state.scale}}beforeWorkspaceChange(){this._kritzelEngine.viewport?.cancelPendingUpdates(),this._store.state.activeWorkspace&&this.updateWorkspaceViewport(this._store.state.translateX,this._store.state.translateY,this._store.state.scale),this.resetActiveText(),this.clearSelection(),this._store.setState("activeTool",h.getTool("selection"))}displaySelectionGroupUI(t){if(!t.isSelected)return!1;if(t instanceof d&&null!=this._user?.id&&null!=t.userId&&t.userId!==this._user.id)return!0;const n=this._store.selectionGroup;return n?n.objects.length>1||(1!==n.objects.length||!(n.objects[0]instanceof j)):!(t instanceof j)}displaySelectionLineUI(t){if(!(t instanceof j))return!1;const n=this._store.selectionGroup;if(!n)return t.isSelected;if(!n.isSelected)return!1;if(1===n.objects.length){const e=n.objects[0];return e instanceof j&&e.id===t.id}return!1}}class nn{static calculateCombinedBounds(t){if(!t||0===t.length)return null;let n=1/0,e=1/0,r=-1/0,i=-1/0;for(const o of t){const t=o.rotatedBoundingBox;n=Math.min(n,t.x),e=Math.min(e,t.y),r=Math.max(r,t.x+t.width),i=Math.max(i,t.y+t.height)}return{x:n,y:e,z:1,width:r-n,height:i-e}}static generateSvg(t,n={}){const{theme:e,padding:r=0,includeXmlDeclaration:i=!0}=n;if(!t||0===t.length)return"";const o=this.flattenObjects(t),s=this.calculateCombinedBounds(o);if(!s)return"";const a=s.x-r,c=s.y-r,u=s.width+2*r,h=s.height+2*r,l=this.collectDefs(o,e),f=t.sort(((t,n)=>t.zIndex-n.zIndex)).map((t=>this.objectToSvgElement(t,e))).filter(Boolean).join("\n ");return`${i?'<?xml version="1.0" encoding="UTF-8"?>\n':""}<svg xmlns="http://www.w3.org/2000/svg" viewBox="${a} ${c} ${u} ${h}" width="${u}" height="${h}">${l.length>0?`\n <defs>\n ${l.join("\n ")}\n </defs>`:""}\n ${f}\n</svg>`}static flattenObjects(t){const n=[];for(const e of t)l.isInstanceOf(e,"KritzelGroup")?n.push(...this.flattenObjects(e.children)):n.push(e);return n}static collectDefs(t,n){const e=[];for(const r of t)l.isInstanceOf(r,"KritzelLine")&&(r.hasStartArrow&&e.push(this.generateArrowMarker(r,"start",n)),r.hasEndArrow&&e.push(this.generateArrowMarker(r,"end",n)));return e}static generateArrowMarker(t,n,e){const r="start"===n?t.startMarkerId:t.endMarkerId,i=t.getArrowSize(n),o=t.getArrowFill(n);return`<marker id="${r}" markerWidth="${i}" markerHeight="${i}" refX="0" refY="${i/2}" orient="${"start"===n?"auto-start-reverse":"auto"}" markerUnits="userSpaceOnUse">\n <path d="${t.getArrowPath("start"===n?t.arrows?.start?.style:t.arrows?.end?.style)}" fill="${o}" transform="scale(${i/10})"/>\n </marker>`}static objectToSvgElement(t,n){return l.isInstanceOf(t,"KritzelPath")?this.pathToSvg(t,n):l.isInstanceOf(t,"KritzelLine")?this.lineToSvg(t,n):l.isInstanceOf(t,"KritzelShape")?this.shapeToSvg(t,n):l.isInstanceOf(t,"KritzelText")?this.textToSvg(t,n):l.isInstanceOf(t,"KritzelImage")?this.imageToSvg(t):l.isInstanceOf(t,"KritzelGroup")?this.groupToSvg(t,n):""}static pathToSvg(t,n){const e=this.buildTransform(t),r=D.resolveThemeColor(t.fill,n),i=D.resolveThemeColor(t.stroke,n);return`<g transform="${e}"${1!==t.opacity?` opacity="${t.opacity}"`:""}>\n <svg viewBox="${t.viewBox}" width="${t.totalWidth/t.scale}" height="${t.totalHeight/t.scale}" overflow="visible">\n <path d="${t.d}" fill="${r||"none"}" stroke="${i||"none"}"${t.strokeWidth?` stroke-width="${t.strokeWidth}"`:""}/>\n </svg>\n </g>`}static lineToSvg(t,n){const e=this.buildTransform(t),r=D.resolveThemeColor(t.stroke,n);return`<g transform="${e}"${1!==t.opacity?` opacity="${t.opacity}"`:""}>\n <svg viewBox="${t.viewBox}" width="${t.totalWidth/t.scale}" height="${t.totalHeight/t.scale}" overflow="visible">\n <path d="${t.d}" fill="none" stroke="${r}" stroke-width="${t.strokeWidth}" stroke-linecap="round"${t.hasStartArrow?` marker-start="url(#${t.startMarkerId})"`:""}${t.hasEndArrow?` marker-end="url(#${t.endMarkerId})"`:""}/>\n </svg>\n </g>`}static shapeToSvg(t,n){const e=this.buildTransform(t),r=D.resolveThemeColor(t.fillColor,n),i=D.resolveThemeColor(t.strokeColor,n),o=1!==t.opacity?` opacity="${t.opacity}"`:"",s=t.getSvgPath();let a="";if(t.editor&&!t.editor.state.doc.textContent.trim());else if(t.content){const e=this.prosemirrorToHtml(t.content,t,n);if(e){const r=D.resolveThemeColor(t.fontColor,n);a=`\n <foreignObject x="${t.x}" y="${t.y}" width="${t.width}" height="${t.height}">\n <div xmlns="http://www.w3.org/1999/xhtml" style="width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; text-align: center; font-family: ${t.fontFamily}; font-size: ${t.fontSize}px; color: ${r}; overflow: hidden;">\n ${e}\n </div>\n </foreignObject>`}}return`<g transform="${e}"${o}>\n <svg viewBox="${t.viewBox}" width="${t.totalWidth/t.scale}" height="${t.totalHeight/t.scale}" overflow="visible" preserveAspectRatio="none">\n <path d="${s}" fill="${r||"transparent"}" stroke="${i}" stroke-width="${t.strokeWidth}"/>${a}\n </svg>\n </g>`}static textToSvg(t,n){const e=this.buildTransform(t),r=1!==t.opacity?` opacity="${t.opacity}"`:"",i=D.resolveThemeColor(t.fontColor,n),o=D.resolveThemeColor(t.backgroundColor,n),s=this.prosemirrorToHtml(t.content,t,n);return`<g transform="${e}"${r}>\n <foreignObject x="0" y="0" width="${t.totalWidth/t.scale}" height="${t.totalHeight/t.scale}">\n <div xmlns="http://www.w3.org/1999/xhtml" style="font-family: ${t.fontFamily}; font-size: ${t.fontSize}pt; color: ${i}; background-color: ${o||"transparent"}; transform: scale(${t.scaleFactor}); transform-origin: top left; white-space: pre-wrap; word-wrap: break-word;">\n ${s}\n </div>\n </foreignObject>\n </g>`}static imageToSvg(t){return`<g transform="${this.buildTransform(t)}"${1!==t.opacity?` opacity="${t.opacity}"`:""}>\n <image href="${t.resolvedSrc||t.src||""}" x="0" y="0" width="${t.totalWidth/t.scale}" height="${t.totalHeight/t.scale}" preserveAspectRatio="xMidYMid meet"/>\n </g>`}static groupToSvg(t,n){const e=t.children.sort(((t,n)=>t.zIndex-n.zIndex)).map((t=>this.objectToSvgElement(t,n))).filter(Boolean).join("\n ");return e?`<g${1!==t.opacity?` opacity="${t.opacity}"`:""}>\n ${e}\n </g>`:""}static buildTransform(t){const n=[];if(n.push(`translate(${t.translateX}, ${t.translateY})`),0!==t.rotation){const e=t.rotation*(180/Math.PI);n.push(`rotate(${e}, ${t.totalWidth/2/t.scale}, ${t.totalHeight/2/t.scale})`)}return n.join(" ")}static prosemirrorToHtml(t,n,e){return t&&t.content?t.content.map((t=>this.nodeToHtml(t,e))).join(""):""}static nodeToHtml(t,n){if(!t)return"";switch(t.type){case"paragraph":return`<p style="margin: 0;">${(t.content?t.content.map((t=>this.nodeToHtml(t,n))).join(""):"")||"<br/>"}</p>`;case"text":let e=this.escapeHtml(t.text||"");if(t.marks)for(const r of t.marks)e=this.applyMark(e,r,n);return e;case"hard_break":return"<br/>";case"bullet_list":return`<ul style="margin: 0; padding-left: 1.5em;">${t.content?t.content.map((t=>this.nodeToHtml(t,n))).join(""):""}</ul>`;case"ordered_list":return`<ol style="margin: 0; padding-left: 1.5em;">${t.content?t.content.map((t=>this.nodeToHtml(t,n))).join(""):""}</ol>`;case"list_item":return`<li>${t.content?t.content.map((t=>this.nodeToHtml(t,n))).join(""):""}</li>`;default:return t.content?t.content.map((t=>this.nodeToHtml(t,n))).join(""):""}}static applyMark(t,n,e){switch(n.type){case"bold":case"strong":return`<strong>${t}</strong>`;case"italic":case"em":return`<em>${t}</em>`;case"underline":return`<u>${t}</u>`;case"strike":return`<s>${t}</s>`;case"code":return`<code>${t}</code>`;case"link":return`<a href="${this.escapeHtml(n.attrs?.href||"#")}">${t}</a>`;default:return t}}static escapeHtml(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}}const en=(()=>{let t=0;return()=>(t+=1,`u${`0000${(Math.random()*36**4|0).toString(36)}`.slice(-4)}${t}`)})();function rn(t){const n=[];for(let e=0,r=t.length;e<r;e++)n.push(t[e]);return n}let on=null;function sn(t={}){return on||(t.includeStyleProperties?(on=t.includeStyleProperties,on):(on=rn(window.getComputedStyle(document.documentElement)),on))}function an(t,n){const e=(t.ownerDocument.defaultView||window).getComputedStyle(t).getPropertyValue(n);return e?parseFloat(e.replace("px","")):0}function cn(t,n={}){return{width:n.width||function(t){const n=an(t,"border-left-width"),e=an(t,"border-right-width");return t.clientWidth+n+e}(t),height:n.height||function(t){const n=an(t,"border-top-width"),e=an(t,"border-bottom-width");return t.clientHeight+n+e}(t)}}const un=16384;function hn(t){return new Promise(((n,e)=>{const r=new Image;r.onload=()=>{r.decode().then((()=>{requestAnimationFrame((()=>n(r)))}))},r.onerror=e,r.crossOrigin="anonymous",r.decoding="async",r.src=t}))}const ln=(t,n)=>{if(t instanceof n)return!0;const e=Object.getPrototypeOf(t);return null!==e&&(e.constructor.name===n.name||ln(e,n))};function fn(t,n,e,r){const i=window.getComputedStyle(t,e),o=i.getPropertyValue("content");if(""===o||"none"===o)return;const s=en();try{n.className=`${n.className} ${s}`}catch(t){return}const a=document.createElement("style");a.appendChild(function(t,n,e,r){const i=`.${t}:${n}`,o=e.cssText?function(t){const n=t.getPropertyValue("content");return`${t.cssText} content: '${n.replace(/'|"/g,"")}';`}(e):function(t,n){return sn(n).map((n=>`${n}: ${t.getPropertyValue(n)}${t.getPropertyPriority(n)?" !important":""};`)).join(" ")}(e,r);return document.createTextNode(`${i}{${o}}`)}(s,e,i,r)),n.appendChild(a)}const dn="application/font-woff",pn="image/jpeg",vn={woff:dn,woff2:dn,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:pn,jpeg:pn,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml",webp:"image/webp"};function gn(t){const n=function(t){const n=/\.([^./]*?)$/g.exec(t);return n?n[1]:""}(t).toLowerCase();return vn[n]||""}function wn(t){return-1!==t.search(/^(data:)/)}async function yn(t,n,e){const r=await fetch(t,n);if(404===r.status)throw new Error(`Resource "${r.url}" not found`);const i=await r.blob();return new Promise(((t,n)=>{const o=new FileReader;o.onerror=n,o.onloadend=()=>{try{t(e({res:r,result:o.result}))}catch(t){n(t)}},o.readAsDataURL(i)}))}const mn={};async function bn(t,n,e){const r=function(t,n,e){let r=t.replace(/\?.*/,"");return e&&(r=t),/ttf|otf|eot|woff2?/i.test(r)&&(r=r.replace(/.*\//,"")),n?`[${n}]${r}`:r}(t,n,e.includeQueryParams);if(null!=mn[r])return mn[r];let i;e.cacheBust&&(t+=(/\?/.test(t)?"&":"?")+(new Date).getTime());try{const r=await yn(t,e.fetchRequestInit,(({res:t,result:e})=>(n||(n=t.headers.get("Content-Type")||""),function(t){return t.split(/,/)[1]}(e))));i=function(t,n){return`data:${n};base64,${t}`}(r,n)}catch(n){i=e.imagePlaceholder||"";let r=`Failed to fetch resource: ${t}`;n&&(r="string"==typeof n?n:n.message),r&&console.warn(r)}return mn[r]=i,i}const kn=t=>null!=t.tagName&&"SLOT"===t.tagName.toUpperCase(),An=t=>null!=t.tagName&&"SVG"===t.tagName.toUpperCase();async function xn(t,n,e){return e||!n.filter||n.filter(t)?Promise.resolve(t).then((t=>async function(t,n){return ln(t,HTMLCanvasElement)?async function(t){const n=t.toDataURL();return"data:,"===n?t.cloneNode(!1):hn(n)}(t):ln(t,HTMLVideoElement)?async function(t,n){if(t.currentSrc){const n=document.createElement("canvas"),e=n.getContext("2d");return n.width=t.clientWidth,n.height=t.clientHeight,null==e||e.drawImage(t,0,0,n.width,n.height),hn(n.toDataURL())}const e=t.poster,r=gn(e);return hn(await bn(e,r,n))}(t,n):ln(t,HTMLIFrameElement)?async function(t,n){var e;try{if(null===(e=null==t?void 0:t.contentDocument)||void 0===e?void 0:e.body)return await xn(t.contentDocument.body,n,!0)}catch(t){}return t.cloneNode(!1)}(t,n):t.cloneNode(An(t))}(t,n))).then((e=>async function(t,n,e){var r,i;if(An(n))return n;let o=[];return o=kn(t)&&t.assignedNodes?rn(t.assignedNodes()):ln(t,HTMLIFrameElement)&&(null===(r=t.contentDocument)||void 0===r?void 0:r.body)?rn(t.contentDocument.body.childNodes):rn((null!==(i=t.shadowRoot)&&void 0!==i?i:t).childNodes),0===o.length||ln(t,HTMLVideoElement)||await o.reduce(((t,r)=>t.then((()=>xn(r,e))).then((t=>{t&&n.appendChild(t)}))),Promise.resolve()),n}(t,e,n))).then((e=>function(t,n,e){return ln(n,Element)&&(function(t,n,e){const r=n.style;if(!r)return;const i=window.getComputedStyle(t);i.cssText?(r.cssText=i.cssText,r.transformOrigin=i.transformOrigin):sn(e).forEach((e=>{let o=i.getPropertyValue(e);if("font-size"===e&&o.endsWith("px")){const t=Math.floor(parseFloat(o.substring(0,o.length-2)))-.1;o=`${t}px`}ln(t,HTMLIFrameElement)&&"display"===e&&"inline"===o&&(o="block"),"d"===e&&n.getAttribute("d")&&(o=`path(${n.getAttribute("d")})`),r.setProperty(e,o,i.getPropertyPriority(e))}))}(t,n,e),function(t,n,e){fn(t,n,":before",e),fn(t,n,":after",e)}(t,n,e),function(t,n){ln(t,HTMLTextAreaElement)&&(n.innerHTML=t.value),ln(t,HTMLInputElement)&&n.setAttribute("value",t.value)}(t,n),function(t,n){if(ln(t,HTMLSelectElement)){const e=Array.from(n.children).find((n=>t.value===n.getAttribute("value")));e&&e.setAttribute("selected","")}}(t,n)),n}(t,e,n))).then((t=>async function(t,n){const e=t.querySelectorAll?t.querySelectorAll("use"):[];if(0===e.length)return t;const r={};for(let i=0;i<e.length;i++){const o=e[i].getAttribute("xlink:href");if(o){const e=t.querySelector(o),i=document.querySelector(o);e||!i||r[o]||(r[o]=await xn(i,n,!0))}}const i=Object.values(r);if(i.length){const n="http://www.w3.org/1999/xhtml",e=document.createElementNS(n,"svg");e.setAttribute("xmlns",n),e.style.position="absolute",e.style.width="0",e.style.height="0",e.style.overflow="hidden",e.style.display="none";const r=document.createElementNS(n,"defs");e.appendChild(r);for(let t=0;t<i.length;t++)r.appendChild(i[t]);t.appendChild(e)}return t}(t,n))):null}const $n=/url\((['"]?)([^'"]+?)\1\)/g,Sn=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,Mn=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function jn(t){return-1!==t.search($n)}async function Cn(t,n,e){if(!jn(t))return t;const r=function(t,{preferredFontFormat:n}){return n?t.replace(Mn,(t=>{for(;;){const[e,,r]=Sn.exec(t)||[];if(!r)return"";if(r===n)return`src: ${e};`}})):t}(t,e),i=function(t){const n=[];return t.replace($n,((t,e,r)=>(n.push(r),t))),n.filter((t=>!wn(t)))}(r);return i.reduce(((t,r)=>t.then((t=>async function(t,n,e,r){try{const i=e?function(t,n){if(t.match(/^[a-z]+:\/\//i))return t;if(t.match(/^\/\//))return window.location.protocol+t;if(t.match(/^[a-z]+:/i))return t;const e=document.implementation.createHTMLDocument(),r=e.createElement("base"),i=e.createElement("a");return e.head.appendChild(r),e.body.appendChild(i),n&&(r.href=n),i.href=t,i.href}(n,e):n,o=gn(n);let s;return s=await bn(i,o,r),t.replace(function(t){const n=t.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1");return new RegExp(`(url\\(['"]?)(${n})(['"]?\\))`,"g")}(n),`$1${s}$3`)}catch(t){}return t}(t,r,n,e)))),Promise.resolve(r))}async function zn(t,n,e){var r;const i=null===(r=n.style)||void 0===r?void 0:r.getPropertyValue(t);if(i){const r=await Cn(i,null,e);return n.style.setProperty(t,r,n.style.getPropertyPriority(t)),!0}return!1}async function In(t,n){ln(t,Element)&&(await async function(t,n){await zn("background",t,n)||await zn("background-image",t,n),await zn("mask",t,n)||await zn("-webkit-mask",t,n)||await zn("mask-image",t,n)||await zn("-webkit-mask-image",t,n)}(t,n),await async function(t,n){const e=ln(t,HTMLImageElement);if((!e||wn(t.src))&&(!ln(t,SVGImageElement)||wn(t.href.baseVal)))return;const r=e?t.src:t.href.baseVal,i=await bn(r,gn(r),n);await new Promise(((r,o)=>{t.onload=r,t.onerror=n.onImageErrorHandler?(...t)=>{try{r(n.onImageErrorHandler(...t))}catch(t){o(t)}}:o;const s=t;s.decode&&(s.decode=r),"lazy"===s.loading&&(s.loading="eager"),e?(t.srcset="",t.src=i):t.href.baseVal=i}))}(t,n),await async function(t,n){const e=rn(t.childNodes).map((t=>In(t,n)));await Promise.all(e).then((()=>t))}(t,n))}const Tn={};async function En(t){let n=Tn[t];if(null!=n)return n;const e=await fetch(t);return n={url:t,cssText:await e.text()},Tn[t]=n,n}async function _n(t,n){let e=t.cssText;const r=/url\(["']?([^"')]+)["']?\)/g,i=(e.match(/url\([^)]+\)/g)||[]).map((async i=>{let o=i.replace(r,"$1");return o.startsWith("https://")||(o=new URL(o,t.url).href),yn(o,n.fetchRequestInit,(({result:t})=>(e=e.replace(i,`url(${t})`),[i,t])))}));return Promise.all(i).then((()=>e))}function On(t){if(null==t)return[];const n=[];let e=t.replace(/(\/\*[\s\S]*?\*\/)/gi,"");const r=new RegExp("((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})","gi");for(;;){const t=r.exec(e);if(null===t)break;n.push(t[0])}e=e.replace(r,"");const i=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,o=new RegExp("((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})","gi");for(;;){let t=i.exec(e);if(null===t){if(t=o.exec(e),null===t)break;i.lastIndex=o.lastIndex}else o.lastIndex=i.lastIndex;n.push(t[0])}return n}function Pn(t){return t.trim().replace(/["']/g,"")}async function Bn(t,n){const e=await async function(t,n){if(null==t.ownerDocument)throw new Error("Provided element is not within a Document");const e=rn(t.ownerDocument.styleSheets),r=await async function(t,n){const e=[],r=[];return t.forEach((e=>{if("cssRules"in e)try{rn(e.cssRules||[]).forEach(((t,i)=>{if(t.type===CSSRule.IMPORT_RULE){let o=i+1;const s=En(t.href).then((t=>_n(t,n))).then((t=>On(t).forEach((t=>{try{e.insertRule(t,t.startsWith("@import")?o+=1:e.cssRules.length)}catch(n){console.error("Error inserting rule from remote css",{rule:t,error:n})}})))).catch((t=>{console.error("Error loading remote css",t.toString())}));r.push(s)}}))}catch(i){const o=t.find((t=>null==t.href))||document.styleSheets[0];null!=e.href&&r.push(En(e.href).then((t=>_n(t,n))).then((t=>On(t).forEach((t=>{o.insertRule(t,o.cssRules.length)})))).catch((t=>{console.error("Error loading remote stylesheet",t)}))),console.error("Error inlining remote css file",i)}})),Promise.all(r).then((()=>(t.forEach((t=>{if("cssRules"in t)try{rn(t.cssRules||[]).forEach((t=>{e.push(t)}))}catch(n){console.error(`Error while reading CSS rules from ${t.href}`,n)}})),e)))}(e,n);return function(t){return t.filter((t=>t.type===CSSRule.FONT_FACE_RULE)).filter((t=>jn(t.style.getPropertyValue("src"))))}(r)}(t,n),r=function(t){const n=new Set;return function t(e){(e.style.fontFamily||getComputedStyle(e).fontFamily).split(",").forEach((t=>{n.add(Pn(t))})),Array.from(e.children).forEach((n=>{n instanceof HTMLElement&&t(n)}))}(t),n}(t);return(await Promise.all(e.filter((t=>r.has(Pn(t.style.fontFamily)))).map((t=>Cn(t.cssText,t.parentStyleSheet?t.parentStyleSheet.href:null,n))))).join("\n")}async function Un(t,n={}){const{width:e,height:r}=cn(t,n),i=await xn(t,n,!0);return await async function(t,n){const e=null!=n.fontEmbedCSS?n.fontEmbedCSS:n.skipFonts?null:await Bn(t,n);if(e){const n=document.createElement("style"),r=document.createTextNode(e);n.appendChild(r),t.firstChild?t.insertBefore(n,t.firstChild):t.appendChild(n)}}(i,n),await In(i,n),function(t,n){const{style:e}=t;n.backgroundColor&&(e.backgroundColor=n.backgroundColor),n.width&&(e.width=`${n.width}px`),n.height&&(e.height=`${n.height}px`);const r=n.style;null!=r&&Object.keys(r).forEach((t=>{e[t]=r[t]}))}(i,n),await async function(t,n,e){const r="http://www.w3.org/2000/svg",i=document.createElementNS(r,"svg"),o=document.createElementNS(r,"foreignObject");return i.setAttribute("width",`${n}`),i.setAttribute("height",`${e}`),i.setAttribute("viewBox",`0 0 ${n} ${e}`),o.setAttribute("width","100%"),o.setAttribute("height","100%"),o.setAttribute("x","0"),o.setAttribute("y","0"),o.setAttribute("externalResourcesRequired","true"),i.appendChild(o),o.appendChild(t),async function(t){return Promise.resolve().then((()=>(new XMLSerializer).serializeToString(t))).then(encodeURIComponent).then((t=>`data:image/svg+xml;charset=utf-8,${t}`))}(i)}(i,e,r)}const Wn=t(class extends n{get host(){return this}workspace;async onWorkspaceChange(t){const n=t?.id;if(!n)return;await Promise.resolve();const e=this.core.store.state.activeWorkspace?.id;e!==n&&(this.core.beforeWorkspaceChange(),await this.initializeWorkspaceIfNeeded(t),this.activeWorkspaceChange.emit(this.core.store.state.activeWorkspace))}editorId;activeWorkspaceId;async onActiveWorkspaceIdChange(t){t&&this._isYjsInitialized&&await this.switchToWorkspaceById(t)}syncConfig;async onSyncConfigChange(t){this._syncConfigRevision++,this.core.setSyncConfig(t),t&&!this._isYjsInitialized&&this._isViewportReady&&await this.initializeSyncAndWorkspace()}assetStorageConfig;async onAssetStorageConfigChange(t){this._assetStorageConfigRevision++,this.core.setAssetStorageConfig(t),t&&!this._isAssetStorageInitialized&&this._isViewportReady&&await this.initializeAssetStorage()}user;onUserChange(t){this.core.setUser(t)}globalContextMenuItems;objectContextMenuItems;scaleMax=Ot;validateScaleMax(t){t>Ot?(console.warn("scaleMax cannot be greater than 1000."),this.scaleMax=Ot,this.core.store.state.scaleMax=this.scaleMax):this.core.store.state.scaleMax=t}scaleMin=Pt;validateScaleMin(t){t<Pt?(console.warn("scaleMin cannot be less than 0.0001."),this.scaleMin=Pt,this.core.store.state.scaleMin=this.scaleMin):this.core.store.state.scaleMin=t}cursorTarget;onCursorTargetChange(t){this.core.cursorManager.setTargetElement(t||document.body)}lockDrawingScale=!0;onLockDrawingScaleChange(t){this.core.store.state.lockDrawingScale=t}theme="light";onThemeChange(t){this.core.themeManager.setTheme(t)}viewportBoundaryLeft=-1/0;onViewportBoundaryLeftChange(t){this.core.store.state.viewportBoundaryLeft=t??-1/0}viewportBoundaryRight=1/0;onViewportBoundaryRightChange(t){this.core.store.state.viewportBoundaryRight=t??1/0}viewportBoundaryTop=-1/0;onViewportBoundaryTopChange(t){this.core.store.state.viewportBoundaryTop=t??-1/0}viewportBoundaryBottom=1/0;onViewportBoundaryBottomChange(t){this.core.store.state.viewportBoundaryBottom=t??1/0}debugInfo;onDebugInfoChange(t){t&&(this.core.store.state.debugInfo=t)}wheelEnabled=!0;isLoading=!1;onIsLoadingChange(){this.syncLoadingState()}isEngineReady;activeToolChange;objectsSelectionChange;workspacesChange;activeWorkspaceChange;longpress;objectsChange;objectsAdded;objectsRemoved;objectsUpdated;undoStateChange;objectsInViewportChange;viewportChange;awarenessChange;forceUpdate=0;async triggerSelectionChange(){this.objectsSelectionChange.emit()}handleWheel(t){this.core.store.isDisabled||this.wheelEnabled&&(this.core.store.state.isContextMenuVisible&&this.hideContextMenu(),this.viewport.handleWheel(t),this.core.store.state?.activeTool?.handleWheel(t))}handlePointerDown(t){this.core.store.isDisabled||(F.isTouchDevice()&&c.onLongPress(t,(t=>this.longpress.emit(t))),this.host.setPointerCapture(t.pointerId),this.core.store.state.pointers.set(t.pointerId,t),this.viewport.handlePointerDown(t),this.core.store.state?.activeTool?.handlePointerDown(t))}throttledPointerMoveMulti=Dt.throttle((t=>{this.viewport.handlePointerMove(t),this.core.store.state?.activeTool?.handlePointerMove(t)}),16);handlePointerMove(t){this.core.store.isDisabled||(this.core.store.state.pointers.has(t.pointerId)&&this.core.store.state.pointers.set(t.pointerId,t),this.core.store.state.pointers.size>1&&this.throttledPointerMoveMulti(t),this.core.cursorManager.updateHoverState(t),this.viewport.handlePointerMove(t),this.core.store.state?.activeTool?.handlePointerMove(t))}handlePointerUp(t){if(this.core.store.isDisabled)return;const n=this.core.store.state.pointers.has(t.pointerId);this.core.store.state.pointers.delete(t.pointerId),this.host.hasPointerCapture(t.pointerId)&&this.host.releasePointerCapture(t.pointerId),0===this.core.store.state.pointers.size&&this.core.cursorManager.resetToDefault(),n&&(this.viewport.handlePointerUp(t),this.core.store.state?.activeTool?.handlePointerUp(t))}handlePointerCancel(t){this.core.store.isDisabled||(this.host.hasPointerCapture(t.pointerId)&&this.host.releasePointerCapture(t.pointerId),this.core.store.state.pointers.delete(t.pointerId),0===this.core.store.state.pointers.size&&this.core.cursorManager.resetToDefault(),this.viewport.handlePointerUp(t),this.core.store.state?.activeTool?.handlePointerUp(t))}handlePointerLeave(){this.core.store.objects?.clearCursorPosition()}handleLongPress(t){this.contextMenuHandler.handleContextMenu(t.detail)}handleContextMenu(t){t.cancelable&&t.preventDefault(),this.core.store.isDisabled||"touch"!==t.pointerType&&"pen"!==t.pointerType&&this.contextMenuHandler.handleContextMenu(t)}handleResize(){this.viewport.handleResize()}handleKeyDown(t){!this.core.store.isDisabled&&this.shouldHandleKeyboardEvent(t)&&this.keyHandler.handleKeyDown(t)}handleKeyUp(t){!this.core.store.isDisabled&&this.shouldHandleKeyboardEvent(t)&&this.keyHandler.handleKeyUp(t)}shouldHandleKeyboardEvent(t){const e=t.composedPath();if(e.includes(this.host))return!0;if(e.some((t=>t instanceof n&&("DIALOG"===t.tagName||"KRITZEL-DIALOG"===t.tagName||"dialog"===t.getAttribute?.("role")||"alertdialog"===t.getAttribute?.("role")))))return!1;const r=t.target;return!r.matches?.('input, textarea, select, [contenteditable="true"], [contenteditable=""]')}preventDoubleTapZoomOnTouchDevices(t){t.cancelable&&t.preventDefault()}async registerTool(t,n,e){if("function"!=typeof n||!(n.prototype instanceof a))return console.error(`Failed to register tool "${t}": Tool class must be a constructor function`),null;const r=h.registerTool(t,n,this.core);return e&&Object.entries(e).forEach((([t,n])=>{r[t]=n})),Promise.resolve(r)}async changeActiveTool(t){this.core.store.state.activeTool!==t&&(this.core.store.state.activeTool?.onDeactivate(),this.core.store.setState("activeTool",t),this.core.deselectAllObjects(),t?.onActivate())}async disable(){this.core.store.state.isEnabled=!1,this.core.rerender()}async enable(){this.core.store.state.isEnabled=!0,this.core.rerender()}async delete(){this.core.delete()}async copy(){this.core.copy()}async cut(){this.core.cut()}async paste(t,n){this.core.paste(t,n)}async bringForward(t){this.core.bringForward(t)}async sendBackward(t){this.core.sendBackward(t)}async bringToFront(t){this.core.bringToFront(t)}async sendToBack(t){this.core.sendToBack(t)}async alignObjects(t){this.core.alignObjects(t)}async group(){this.core.group()}async ungroup(){this.core.ungroup()}async undo(){this.core.undo()}async redo(){this.core.redo()}async hideContextMenu(){this.core.store.state.pointers.clear(),this.core.store.state.isContextMenuVisible=!1,this.core.store.objects?.remove((t=>t instanceof f)),this.core.store.setSelectionBox(null),this.core.store.objects?.clearLocalSelectionBox(),this.core.store.state.isSelecting=!1,this.core.store.state.isEnabled=!0,this.core.rerender()}async getObjectById(t){return this.core.store.allObjects.find((n=>n.id===t))||null}async getAllObjects(){return this.core.store.allObjects}async findObjects(t){return this.core.store.allNonSelectionObjects.filter(t)}async getObjectsTotalCount(){return this.core.store.totalObjectCount}async addObject(t){if(this.core.deselectAllObjects(),t.id=t.generateId(),t._core=this.core,t.scale=this.core.store.state.scale,t.zIndex=this.core.store.currentZIndex,t.workspaceId=this.core.store.state.activeWorkspace.id,l.isInstanceOf(t,"KritzelText")){const n=t.content;t.editor=t.createEditor(),n&&t.setContent(n)}if(l.isInstanceOf(t,"KritzelGroup")&&t._pendingChildren.length>0){const n=new Map,e=[],r=t=>{if(0===t._pendingChildren.length)return;const i=t._pendingChildren;t._pendingChildren=[],t.childIds=[],i.forEach((i=>{const o=i.id;i.id=i.generateId(),i._core=this.core,i.scale=this.core.store.state.scale,i.zIndex=this.core.store.currentZIndex,i.workspaceId=this.core.store.state.activeWorkspace.id,n.set(o,i.id),t.childIds.push(i.id),e.push(i),l.isInstanceOf(i,"KritzelGroup")&&r(i)}))};r(t),e.forEach((t=>{l.isInstanceOf(t,"KritzelLine")&&(t.startAnchor&&n.has(t.startAnchor.objectId)&&(t.startAnchor={objectId:n.get(t.startAnchor.objectId)}),t.endAnchor&&n.has(t.endAnchor.objectId)&&(t.endAnchor={objectId:n.get(t.endAnchor.objectId)}))})),e.forEach((t=>{this.core.addObject(t)})),t.finalize(),this.core.anchorManager.rebuildIndex()}return this.core.addObject(t),this.core.rerender(),await new Promise((t=>{requestAnimationFrame((()=>requestAnimationFrame((()=>t()))))})),this.emitObjectsAdded([t]),t}async updateObject(t,n){return this.core.deselectAllObjects(),this.core.updateObject(t,n),this.core.rerender(),this.emitObjectsUpdated([{object:t,changedProperties:Object.keys(n)}]),t}async removeObject(t){const n=this.core.store.objects;return n?(this.core.deselectAllObjects(),n.remove((n=>n.id===t.id)),this.core.rerender(),this.emitObjectsRemoved([t]),t):null}async getSelectedObjects(){const t=this.core.store.selectionGroup;return t?t.objects:[]}async getDisplayableShortcuts(){return this.keyHandler.getDisplayableShortcuts()}async selectObjects(t){const n=h.getTool("selection");n&&(this.core.store.state.activeTool?.onDeactivate(),this.core.store.setState("activeTool",n),this.core.deselectAllObjects(),this.core.selectObjects(t))}async selectAllObjectsInViewport(){const t=h.getTool("selection");t&&(this.core.store.state.activeTool?.onDeactivate(),this.core.store.setState("activeTool",t),this.core.deselectAllObjects(),this.core.selectAllObjectsInViewport())}async clearSelection(){this.core.clearSelection()}async centerObjectInViewport(t){return t.centerInViewport(),this.core.updateObject(t,t),this.core.rerender(),t}async backToContent(){return this.viewport.centerFitNearestContent(20)}async centerAllObjects(t=!0){return this.viewport.centerFitAllObjects(t)}async setViewport(t,n,e){this.viewport.setViewport(t,n,e)}async panTo(t,n){this.viewport.panTo(t,n)}async zoomTo(t,n,e){this.viewport.zoomTo(t,n,e)}async getViewport(){return this.viewport.getViewport()}async screenToWorld(t,n){return this.viewport.screenToWorld(t,n)}async worldToScreen(t,n){return this.viewport.worldToScreen(t,n)}async getCopiedObjects(){return this.core.store.state.copiedObjects||[]}async getObjectsInViewport(){return this.core.getObjectsInViewport()}async getScreenshot(t="png"){if(!this.host)return null;const n={objects:this.core.store.objects,activeWorkspace:this.core.store.state.activeWorkspace,workspaces:this.core.store.state.workspaces,activeTool:this.core.store.state.activeTool,isReady:this.core.store.state.isReady,translateX:this.core.store.state.translateX,translateY:this.core.store.state.translateY,scale:this.core.store.state.scale},e={filter:t=>!("KRITZEL-CONTEXT-MENU"===t.tagName||t.classList&&t.classList.contains("debug-panel"))};let r;try{r="svg"===t?await Un(this.host,e):await async function(t,n={}){return(await async function(t,n={}){const{width:e,height:r}=cn(t,n),i=await Un(t,n),o=await hn(i),s=document.createElement("canvas"),a=s.getContext("2d"),c=n.pixelRatio||function(){let t,n;try{n=process}catch(t){}const e=n&&n.env?n.env.devicePixelRatio:null;return e&&(t=parseInt(e,10),Number.isNaN(t)&&(t=1)),t||window.devicePixelRatio||1}(),u=n.canvasWidth||e,h=n.canvasHeight||r;return s.width=u*c,s.height=h*c,n.skipAutoScale||function(t){(t.width>un||t.height>un)&&(t.width>un&&t.height>un?t.width>t.height?(t.height*=un/t.width,t.width=un):(t.width*=un/t.height,t.height=un):t.width>un?(t.height*=un/t.width,t.width=un):(t.width*=un/t.height,t.height=un))}(s),s.style.width=`${u}`,s.style.height=`${h}`,n.backgroundColor&&(a.fillStyle=n.backgroundColor,a.fillRect(0,0,s.width,s.height)),a.drawImage(o,0,0,s.width,s.height),s}(t,n)).toDataURL()}(this.host,e)}finally{this.core.store.state.objects=n.objects,this.core.store.state.activeWorkspace=n.activeWorkspace,this.core.store.state.workspaces=n.workspaces,this.core.store.state.activeTool=n.activeTool,this.core.store.state.isReady=n.isReady,this.core.store.state.translateX=n.translateX,this.core.store.state.translateY=n.translateY,this.core.store.state.scale=n.scale,this.core.rerender()}return r}async exportViewportAsPng(){try{const t=`${this.core.store.state?.activeWorkspace?.name||"workspace"}-${(new Date).toISOString().replace(/[:.]/g,"-")}.png`,n=await this.getScreenshot("png");if(!n)return void console.error("Failed to export viewport as PNG: screenshot could not be generated");const e=document.createElement("a");e.download=t,e.href=n,e.click()}catch(t){console.error("Failed to export viewport as PNG:",t)}}async exportViewportAsSvg(){try{const t=`${this.core.store.state?.activeWorkspace?.name||"workspace"}-${(new Date).toISOString().replace(/[:.]/g,"-")}.svg`,n=await this.getScreenshot("svg");if(!n)return void console.error("Failed to export viewport as SVG: screenshot could not be generated");const e=document.createElement("a");e.download=t,e.href=n,e.click()}catch(t){console.error("Failed to export viewport as SVG:",t)}}async getSelectedObjectsAsSvgString(t){const n=await this.getSelectedObjects();if(!n||0===n.length)return null;const e=t?.theme??this.core.themeManager.getStoredTheme();return nn.generateSvg(n,{theme:e,padding:t?.padding??0,includeXmlDeclaration:!0})}async exportSelectedObjectsAsSvg(t){try{const n=await this.getSelectedObjectsAsSvgString(t);if(!n)return void console.warn("No objects selected for SVG export");const e=`selection-${(new Date).toISOString().replace(/[:.]/g,"-")}.svg`,r=new Blob([n],{type:"image/svg+xml;charset=utf-8"}),i=URL.createObjectURL(r),o=document.createElement("a");o.download=e,o.href=i,o.click(),URL.revokeObjectURL(i)}catch(t){console.error("Failed to export selected objects as SVG:",t)}}async getSelectedObjectsAsPngDataUrl(t){const n=await this.getSelectedObjectsAsSvgString({theme:t?.theme,padding:t?.padding});if(!n)return null;const e=t?.scale??2;return new Promise(((t,r)=>{const i=new Image,o=new Blob([n],{type:"image/svg+xml;charset=utf-8"}),s=URL.createObjectURL(o);i.onload=()=>{const n=document.createElement("canvas");n.width=i.width*e,n.height=i.height*e;const o=n.getContext("2d");if(!o)return URL.revokeObjectURL(s),void r(new Error("Failed to get canvas context"));o.scale(e,e),o.drawImage(i,0,0),URL.revokeObjectURL(s),t(n.toDataURL("image/png"))},i.onerror=()=>{URL.revokeObjectURL(s),r(new Error("Failed to load SVG for PNG conversion"))},i.src=s}))}async exportSelectedObjectsAsPng(t){try{const n=await this.getSelectedObjectsAsPngDataUrl(t);if(!n)return void console.warn("No objects selected for PNG export");const e=`selection-${(new Date).toISOString().replace(/[:.]/g,"-")}.png`,r=document.createElement("a");r.download=e,r.href=n,r.click()}catch(t){console.error("Failed to export selected objects as PNG:",t)}}async exportAsJson(){const t=this.core.store.state.activeWorkspace;if(!t)throw new Error("Cannot export workspace: no active workspace is loaded");const n=t.serialize({includeObjects:!0});return JSON.stringify(n,null,2)}async importFromJson(t){const n=JSON.parse(t);if(!n.__class__||"KritzelWorkspace"!==n.__class__)throw new Error("Invalid workspace data: missing or incorrect __class__ identifier");n.version&&n.version!==M&&console.warn(`Workspace version mismatch: expected ${M}, got ${n.version}`);const e=_.generateUUID();let r=n.viewport||{centerWorldX:0,centerWorldY:0,scale:1};if("translateX"in r&&!("centerWorldX"in r)){const t=r.scale??1;r={centerWorldX:-(r.translateX??0)/t,centerWorldY:-(r.translateY??0)/t,scale:t}}const i=new S(e,n.name||"Imported Workspace",r);if(this.core.createWorkspace(i),this.workspacesChange.emit(this.core.store.state.workspaces),this.core.beforeWorkspaceChange(),await this.core.initializeWorkspace(i),n.objects&&Array.isArray(n.objects)){const t=new Ht(this.core);for(const r of n.objects){const n=t.revive(r);n&&(n.workspaceId=e,this.core.addObject(n))}}this.core.rerender(),this.activeWorkspaceChange.emit(i)}async loadObjectsFromJson(t){const n=JSON.parse(t);if(!n.__class__||"KritzelWorkspace"!==n.__class__)throw new Error("Invalid workspace data: missing or incorrect __class__ identifier");n.version&&n.version!==M&&console.warn(`Workspace version mismatch: expected ${M}, got ${n.version}`);const e=this.core.store.state.activeWorkspace;if(!e)throw new Error("Cannot load objects: no active workspace is loaded");const r=e.id;let i=0;if(n.objects&&Array.isArray(n.objects)){const t=new Ht(this.core);for(const e of n.objects){const n=t.revive(e);n&&(n.workspaceId=r,this.core.addObject(n),i++)}}return this.core.rerender(),i}async downloadAsJson(t){try{const n=await this.exportAsJson(),e=this.core.store.state?.activeWorkspace?.name||"workspace",r=(new Date).toISOString().replace(/[:.]/g,"-"),i=t||`${e}-${r}`,o=new Blob([n],{type:"application/json;charset=utf-8"}),s=URL.createObjectURL(o),a=document.createElement("a");a.download=`${i}.json`,a.href=s,a.click(),URL.revokeObjectURL(s)}catch(t){console.error("Failed to download workspace as JSON:",t)}}async importFromFile(){return new Promise(((t,n)=>{const e=document.createElement("input");e.type="file",e.accept=".json,application/json",e.style.display="none";const r=()=>{e.removeEventListener("change",i),e.removeEventListener("cancel",o),document.body.removeChild(e)},i=async e=>{const i=e.target,o=i.files?.[0];if(!o)return r(),void t();try{const e=new FileReader;e.onload=async e=>{try{const n=e.target?.result;await this.importFromJson(n),r(),t()}catch(t){r(),console.error("Failed to import workspace from file:",t),n(t)}},e.onerror=()=>{r(),console.error("Failed to read file:",e.error),n(e.error)},e.readAsText(o)}catch(t){r(),console.error("Failed to process file:",t),n(t)}},o=()=>{r(),t()};e.addEventListener("change",i),e.addEventListener("cancel",o),document.body.appendChild(e),e.click()}))}async createWorkspace(t){return await this.core.createWorkspace(t),this.workspacesChange.emit(this.core.store.state.workspaces),t}async updateWorkspace(t){await this.core.updateWorkspace(t),this.workspacesChange.emit(this.core.store.state.workspaces)}async deleteWorkspace(t){await this.core.deleteWorkspace(t),this.workspacesChange.emit(this.core.store.state.workspaces)}async getWorkspaces(){return await this.core.getWorkspaces()}async getActiveWorkspace(){const t=this.core.store.state.activeWorkspace;if(!t)throw new Error("No active workspace is loaded");return t}async getIsPublic(){return this.core.getIsPublic()}async loadSharedWorkspace(t){const n=t;let e=this.core.getWorkspaces().find((t=>t.id===n));e?e.isPublic=!0:(e=new S(n,"Shared Workspace"),e.isPublic=!0,this.core.createWorkspace(e)),this.workspacesChange.emit(this.core.store.state.workspaces),this.core.beforeWorkspaceChange(),await this.initializeWorkspaceIfNeeded(e),this.activeWorkspaceChange.emit(this.core.store.state.activeWorkspace)}async reinitSync(){this.core.setSyncConfig(this.syncConfig),this.core.setAssetStorageConfig(this.assetStorageConfig),this.core.store.objects?.clearCursorPosition(),this.core.store.objects?.destroy(),this.core.appStateMap.destroy(),this.core.assetResolver.destroy(),this._isYjsInitialized=!1,this._isAssetStorageInitialized=!1,await this.initializeSyncAndWorkspace()}core;viewport;contextMenuHandler;keyHandler;contextMenuElement=null;_lastHadSelectionGroup=!1;_isViewportReady=!1;_isYjsInitialized=!1;_isAssetStorageInitialized=!1;_isResolvingActiveWorkspaceId=!1;_stateChangeListenersRegistered=!1;_workspaceInitializationPromise=null;_workspaceInitializationTargetKey=null;_syncInitPromise=null;_syncConfigRevision=0;_assetStorageConfigRevision=0;_isWorkspaceLoading=!1;_defaultUndoState={canUndo:!1,canRedo:!1,undoStackSize:0,redoStackSize:0};syncLoadingState(){this.core.store.state.isLoading=this._isWorkspaceLoading||this.isLoading}get isSelecting(){return this.core.store.state.activeTool instanceof v&&this.core.store.state.isSelecting}get isSelectionActive(){return this.core.store.state.activeTool instanceof v&&null!==this.core.store.selectionGroup}constructor(t){super(),!1!==t&&this.__registerHost(),this.__attachShadow(),this.isEngineReady=e(this,"isEngineReady"),this.activeToolChange=e(this,"activeToolChange"),this.objectsSelectionChange=e(this,"objectsSelectionChange"),this.workspacesChange=e(this,"workspacesChange"),this.activeWorkspaceChange=e(this,"activeWorkspaceChange"),this.longpress=e(this,"longpress"),this.objectsChange=e(this,"objectsChange"),this.objectsAdded=e(this,"objectsAdded"),this.objectsRemoved=e(this,"objectsRemoved"),this.objectsUpdated=e(this,"objectsUpdated"),this.undoStateChange=e(this,"undoStateChange"),this.objectsInViewportChange=e(this,"objectsInViewportChange"),this.viewportChange=e(this,"viewportChange"),this.awarenessChange=e(this,"awarenessChange"),this.core=new tn(this)}disconnectedCallback(){this.throttledPointerMoveMulti.cancel(),this.core.store.objects?.clearCursorPosition(),this.core.store.objects&&this.core.store.objects.destroy(),this.core.appStateMap.destroy(),this.core.cursorManager.cleanup(),this.core.themeManager.cleanup()}componentWillLoad(){this.core.setEditorId(this.editorId),this.core.setUser(this.user),this.validateScaleMax(this.scaleMax),this.validateScaleMin(this.scaleMin),this.core.store.state.lockDrawingScale=this.lockDrawingScale,this.core.store.state.viewportBoundaryLeft=this.viewportBoundaryLeft,this.core.store.state.viewportBoundaryRight=this.viewportBoundaryRight,this.core.store.state.viewportBoundaryTop=this.viewportBoundaryTop,this.core.store.state.viewportBoundaryBottom=this.viewportBoundaryBottom,this._isWorkspaceLoading=!0,this.syncLoadingState()}async componentDidLoad(){setTimeout((async()=>{this.contextMenuHandler=new Vt(this.core,this.globalContextMenuItems,this.objectContextMenuItems),this.keyHandler=new Kt(this.core),this.viewport=new Ft(this.core,this.host),this._isViewportReady=!0,this.core.cursorManager.setTargetElement(this.cursorTarget||document.body),this.host.shadowRoot&&this.core.cursorManager.setShadowRoot(this.host.shadowRoot);const t=this.host.closest("kritzel-editor");this.core.themeManager.setTargetElement(t||this.host),await this.initializeSyncAndWorkspace(),!1===this.core.store.state.isReady&&(this.core.store.state.isReady=!0,this.isEngineReady.emit(this.core.store.state))}),50)}async initializeSyncAndWorkspace(){if(this._syncInitPromise)return this._syncInitPromise;this._syncInitPromise=this.doInitializeSyncAndWorkspace();try{await this._syncInitPromise}finally{this._syncInitPromise=null}}async initializeAssetStorage(){if(this._isAssetStorageInitialized)return;const t=this._assetStorageConfigRevision;this.core.setAssetStorageConfig(this.assetStorageConfig),await this.core.initializeAssetStorage(),t!==this._assetStorageConfigRevision&&(this.core.assetResolver.destroy(),this.core.setAssetStorageConfig(this.assetStorageConfig),await this.core.initializeAssetStorage()),this._isAssetStorageInitialized=!0}async doInitializeSyncAndWorkspace(){const t=this._syncConfigRevision;if(this.core.setSyncConfig(this.syncConfig),this.core.setAssetStorageConfig(this.assetStorageConfig),this._isYjsInitialized||(await this.core.initializeYjs(),t!==this._syncConfigRevision&&(this.core.appStateMap.destroy(),this.core.setSyncConfig(this.syncConfig),this.core.setAssetStorageConfig(this.assetStorageConfig),await this.core.initializeYjs()),this._isYjsInitialized=!0),!this._isAssetStorageInitialized&&this.assetStorageConfig&&await this.initializeAssetStorage(),this.activeWorkspaceId){const t=this.core.getWorkspaces().find((t=>t.id===this.activeWorkspaceId));t?await this.initializeWorkspaceIfNeeded(t):await this.initializeWorkspaceIfNeeded()}else{const t=this.resolveStartupWorkspace();await this.initializeWorkspaceIfNeeded(t)}const n=this.core.store.state.activeWorkspace;n&&this.activeWorkspaceChange.emit(n),this._stateChangeListenersRegistered||(this.core.appStateMap.onRemoteChange((()=>{this.workspacesChange.emit(this.core.store.state.workspaces),this.tryResolveActiveWorkspaceFromId()})),this._registerStateChangeListeners(),this._stateChangeListenersRegistered=!0),this.tryResolveActiveWorkspaceFromId()}resolveStartupWorkspace(){if(this.activeWorkspaceId){const t=this.core.getWorkspaces().find((t=>t.id===this.activeWorkspaceId));if(t)return t;console.warn(`[KritzelEngine] No workspace found with ID: ${this.activeWorkspaceId}`)}return this.workspace}tryResolveActiveWorkspaceFromId(){this.activeWorkspaceId&&!this._isResolvingActiveWorkspaceId&&this.core.store.state.activeWorkspace?.id!==this.activeWorkspaceId&&(this._isResolvingActiveWorkspaceId=!0,this.switchToWorkspaceById(this.activeWorkspaceId,!1).finally((()=>{this._isResolvingActiveWorkspaceId=!1})))}async switchToWorkspaceById(t,n=!0){const e=this.core.getWorkspaces().find((n=>n.id===t));e?this.core.store.state.activeWorkspace?.id!==e.id&&(this.core.beforeWorkspaceChange(),await this.initializeWorkspaceIfNeeded(e),this.activeWorkspaceChange.emit(this.core.store.state.activeWorkspace)):n&&console.warn(`[KritzelEngine] No workspace found with ID: ${t}`)}async initializeWorkspaceIfNeeded(t,n){const e=t?.id??null,r=e??(n?.skipFallbackCreation?"__NO_FALLBACK__":"__AUTO__");if(e&&this.core.store.state.activeWorkspace?.id===e)return;if(this._workspaceInitializationPromise&&this._workspaceInitializationTargetKey===r)return void await this._workspaceInitializationPromise;this._isWorkspaceLoading=!0,this.syncLoadingState();const i=this.core.initializeWorkspace(t,n);this._workspaceInitializationPromise=i,this._workspaceInitializationTargetKey=r;try{await i}finally{this._workspaceInitializationPromise===i&&(this._workspaceInitializationPromise=null,this._workspaceInitializationTargetKey=null),this._isWorkspaceLoading=!1,this.syncLoadingState()}}emitObjectsChange(){const t=this.core.store.objects;if(!t)return this.objectsChange.emit([]),this.undoStateChange.emit(this._defaultUndoState),void(this._lastHadSelectionGroup&&(this._lastHadSelectionGroup=!1,this.objectsSelectionChange.emit()));const n=t.undoState,e=null!==this.core.store.selectionGroup;this.objectsChange.emit(this.core.store.allObjects),this.undoStateChange.emit(n),this._lastHadSelectionGroup!==e&&(this._lastHadSelectionGroup=e,this.objectsSelectionChange.emit())}emitObjectsAdded(t){this.objectsAdded.emit({objects:t})}emitObjectsRemoved(t){this.objectsRemoved.emit({objects:t})}emitObjectsUpdated(t){this.objectsUpdated.emit({objects:t})}emitAwarenessChange(t){this.awarenessChange.emit(t)}emitObjectsInViewportChange(){this.objectsInViewportChange.emit(this.core.store.objectsInViewport)}_registerStateChangeListeners(){this.core.store.onStateChange("activeTool",this._handleActiveToolChange.bind(this))}_handleActiveToolChange(t){t instanceof v||(this.core.clearSelection(),this.core.store.objects?.remove((t=>t instanceof f)),this.core.store.setSelectionBox(null),this.core.store.objects?.clearLocalSelectionBox(),this.core.store.state.isSelecting=!1,this.core.store.state.isResizeHandleSelected=!1,this.core.store.state.isRotationHandleSelected=!1),t instanceof y||this.core.resetActiveText(),t instanceof g||this.core.resetActiveShape(),this.core.store.state.skipContextMenu=!1,this.core.store.state.copiedObjects=void 0,t&&this.activeToolChange.emit(t),$.forceHideKeyboard(),this.core.rerender()}render(){if(!this.viewport)return r(i,null,this.core.store.state.isLoading&&r("div",{class:"workspace-loading-overlay"},r("span",{class:"workspace-loading-spinner"}),"Loading..."));const t=this.core.themeManager.getStoredTheme(),n=window.getComputedStyle(this.host).getPropertyValue("--kritzel-selection-handle-size").trim()||"6px",e=parseFloat(n),o=2*e<14?14:e,s=this.core.store.state.viewportWidth/2+this.core.store.state.translateX,a=this.core.store.state.viewportHeight/2+this.core.store.state.translateY,c=this.core.store.objectsInViewport;return this.core.cursorManager.applyCursor(),this.core.store.state.hasViewportChanged&&(this.viewportChange.emit(this.viewport.getViewport()),this.core.store.totalObjectCount>0&&this.emitObjectsInViewportChange()),r(i,null,this.core.store.state.isLoading&&r("div",{class:"workspace-loading-overlay"},r("span",{class:"workspace-loading-spinner"}),"Loading..."),this.core.store.state.debugInfo.showViewportInfo&&r("div",{class:"debug-panel"},r("div",null,"ActiveWorkspaceId: ",this.core.store.state?.activeWorkspace?.id),r("div",null,"ActiveWorkspaceName: ",this.core.store.state?.activeWorkspace?.name),r("div",null,"TranslateX: ",this.core.store.state?.translateX),r("div",null,"TranslateY: ",this.core.store.state?.translateY),r("div",null,"ViewportWidth: ",this.core.store.state?.viewportWidth),r("div",null,"ViewportHeight: ",this.core.store.state?.viewportHeight),r("div",null,"PointerCount: ",this.core.store.state.pointers.size),r("div",null,"Scale: ",this.core.store.state?.scale),r("div",null,"ActiveTool: ",this.core.store.state?.activeTool?.name),r("div",null,"HasViewportChanged: ",this.core.store.state?.hasViewportChanged?"true":"false"),r("div",null,"IsEnabled: ",this.core.store.state?.isEnabled?"true":"false"),r("div",null,"IsScaling: ",this.core.store.state?.isScaling?"true":"false"),r("div",null,"IsPanning: ",this.core.store.state?.isPanning?"true":"false"),r("div",null,"IsSelecting: ",this.isSelecting?"true":"false"),r("div",null,"IsSelectionActive: ",this.isSelectionActive?"true":"false"),r("div",null,"IsResizeHandleSelected: ",this.core.store.state.isResizeHandleSelected?"true":"false"),r("div",null,"IsRotationHandleSelected: ",this.core.store.state.isRotationHandleSelected?"true":"false"),r("div",null,"IsRotationHandleHovered: ",this.core.store.state.isRotationHandleHovered?"true":"false"),r("div",null,"IsDrawing: ",this.core.store.state.isDrawing?"true":"false"),r("div",null,"IsWriting: ",this.core.store.state.isWriting?"true":"false"),r("div",null,"IsPointerDown: ",this.core.store.isPointerDown?"true":"false"),r("div",null,"PointerX: ",this.core.store.state?.pointerX),r("div",null,"PointerY: ",this.core.store.state?.pointerY),r("div",null,"TotalObjects: ",this.core.store.totalObjectCount),r("div",null,"ObjectsInViewport: ",this.core.store.objectsInViewport.length),r("div",null,"SelectedObjects: ",this.core.store.selectionGroup?.objects.length||0),r("div",null,"ViewportCenter: (",s.toFixed(2),", ",a.toFixed(2),")")),r("div",{id:"origin",class:"origin",style:{transform:`matrix(${this.core.store.state?.scale}, 0, 0, ${this.core.store.state?.scale}, ${this.core.store.state?.translateX}, ${this.core.store.state?.translateY})`}},c?.map((n=>r("div",{key:n.id,id:n.id,class:"object",style:{transform:n?.transformationMatrix,transformOrigin:"top left",position:"absolute",zIndex:n.zIndex.toString(),pointerEvents:this.core.store.state.isScaling?"none":"auto"}},l.isInstanceOf(n,"KritzelPath")&&r("svg",{ref:t=>t&&n.mount(t),xmlns:"http://www.w3.org/2000/svg",style:{height:n?.totalHeight+"px",width:n?.totalWidth+"px",left:"0",top:"0",position:"absolute",transform:0!==n.rotationDegrees?`rotate(${n.rotationDegrees}deg)`:void 0,transformOrigin:0!==n.rotationDegrees?`${n.totalWidth/2}px ${n.totalHeight/2}px`:void 0,opacity:n.markedForRemoval?"0.5":n.opacity.toString(),pointerEvents:n.markedForRemoval?"none":"auto",overflow:"visible"},viewBox:n?.viewBox},r("path",{d:n?.d,fill:D.resolveThemeColor(n.fill,t),stroke:D.resolveThemeColor(n?.stroke,t),"shape-rendering":n.isLowRes()?"optimizeSpeed":"auto"})),l.isInstanceOf(n,"KritzelLine")&&r("svg",{ref:t=>t&&n.mount(t),xmlns:"http://www.w3.org/2000/svg",style:{height:n?.totalHeight+"px",width:n?.totalWidth+"px",left:"0",top:"0",position:"absolute",transform:0!==n.rotationDegrees?`rotate(${n.rotationDegrees}deg)`:void 0,transformOrigin:0!==n.rotationDegrees?`${n.totalWidth/2}px ${n.totalHeight/2}px`:void 0,opacity:n.markedForRemoval?"0.5":n.opacity.toString(),pointerEvents:n.markedForRemoval?"none":"auto",overflow:"visible"},viewBox:n?.viewBox},(n.hasStartArrow||n.hasEndArrow)&&r("defs",null,n.hasStartArrow&&r("marker",{id:n.startMarkerId,markerWidth:n.getArrowSize("start"),markerHeight:n.getArrowSize("start"),refX:0,refY:n.getArrowSize("start")/2,orient:"auto-start-reverse",markerUnits:"userSpaceOnUse"},r("path",{d:n.getArrowPath(n.arrows?.start?.style),fill:n.getArrowFill("start"),transform:`scale(${n.getArrowSize("start")/10})`})),n.hasEndArrow&&r("marker",{id:n.endMarkerId,markerWidth:n.getArrowSize("end"),markerHeight:n.getArrowSize("end"),refX:0,refY:n.getArrowSize("end")/2,orient:"auto",markerUnits:"userSpaceOnUse"},r("path",{d:n.getArrowPath(n.arrows?.end?.style),fill:n.getArrowFill("end"),transform:`scale(${n.getArrowSize("end")/10})`}))),r("path",{d:this.core.anchorManager.computeClippedLinePath(n),fill:"none",stroke:"transparent","stroke-width":Math.max(n?.strokeWidth||0,10),"stroke-linecap":"round"}),r("path",{d:this.core.anchorManager.computeClippedLinePath(n),fill:"none",stroke:D.resolveThemeColor(n?.stroke,t),"stroke-width":n?.strokeWidth,"stroke-linecap":"round","marker-start":n.hasStartArrow?`url(#${n.startMarkerId})`:void 0,"marker-end":n.hasEndArrow?`url(#${n.endMarkerId})`:void 0})),l.isInstanceOf(n,"KritzelImage")&&"ready"===n.loadState&&r("img",{ref:t=>t&&n.mount(t),src:n.resolvedSrc||n.src,style:{position:"absolute",left:"0",top:"0",width:n.totalWidth+"px",height:n.totalHeight+"px",transform:0!==n.rotationDegrees?`rotate(${n.rotationDegrees}deg)`:void 0,transformOrigin:0!==n.rotationDegrees?`${n.totalWidth/2}px ${n.totalHeight/2}px`:void 0,opacity:n.markedForRemoval?"0.5":n.opacity.toString(),pointerEvents:n.markedForRemoval?"none":"auto",backgroundColor:D.resolveThemeColor(n.backgroundColor,t),borderColor:D.resolveThemeColor(n.borderColor,t),borderWidth:n.borderWidth+"px",borderStyle:"solid",padding:n.padding+"px",overflow:"visible",userSelect:"none",imageRendering:this.core.store.state.isScaling||this.core.store.state.isPanning?"pixelated":"auto"},draggable:!1,decoding:"async",loading:"eager",onDragStart:t=>t.preventDefault()}),l.isInstanceOf(n,"KritzelImage")&&"ready"!==n.loadState&&r("div",{ref:()=>n.ensureLoaded(),style:{position:"absolute",left:"0",top:"0",width:n.totalWidth+"px",height:n.totalHeight+"px",transform:0!==n.rotationDegrees?`rotate(${n.rotationDegrees}deg)`:void 0,transformOrigin:0!==n.rotationDegrees?`${n.totalWidth/2}px ${n.totalHeight/2}px`:void 0,opacity:n.markedForRemoval?"0.5":n.opacity.toString(),pointerEvents:n.markedForRemoval?"none":"auto",backgroundColor:D.resolveThemeColor({light:"#e5e7eb",dark:"#2a2a2a"},t),borderColor:D.resolveThemeColor("error"===n.loadState?{light:"#9ca3af",dark:"#6b7280"}:n.borderColor,t),borderWidth:"error"===n.loadState?"1px":n.borderWidth+"px",borderStyle:"solid",padding:n.padding+"px",overflow:"hidden",userSelect:"none",display:"flex",alignItems:"center",justifyContent:"center"}},r("kritzel-icon",{name:"error"===n.loadState?"image-off":"image",size:Math.max(16,.3*Math.min(n.totalWidth,n.totalHeight)),style:{color:D.resolveThemeColor({light:"#9ca3af",dark:"#6b7280"},t)}})),l.isInstanceOf(n,"KritzelCustomElement")&&r("div",{ref:t=>t&&n.mount(t),style:{position:"absolute",left:"0",top:"0",width:n.totalWidth+"px",height:n.totalHeight+"px",transform:0!==n.rotationDegrees?`rotate(${n.rotationDegrees}deg)`:void 0,transformOrigin:0!==n.rotationDegrees?`${n.totalWidth/2}px ${n.totalHeight/2}px`:void 0,opacity:n.markedForRemoval?"0.5":n.opacity.toString(),pointerEvents:n.markedForRemoval?"none":"auto",backgroundColor:D.resolveThemeColor(n.backgroundColor,t),borderColor:D.resolveThemeColor(n.borderColor,t),borderWidth:n.borderWidth+"px",borderStyle:"solid",padding:n.padding+"px",overflow:"hidden",display:"block"}}),l.isInstanceOf(n,"KritzelSelectionGroup")&&!this.core.displaySelectionLineUI(n)&&r("div",{ref:t=>t&&n.mount(t),style:{position:"absolute",left:"0",top:"0",width:n.totalWidth+"px",height:n.totalHeight+"px",transform:0!==n.rotationDegrees?`rotate(${n.rotationDegrees}deg)`:void 0,transformOrigin:0!==n.rotationDegrees?`${n.totalWidth/2}px ${n.totalHeight/2}px`:void 0,opacity:n.markedForRemoval?"0.5":n.opacity.toString(),pointerEvents:n.markedForRemoval?"none":"auto"}}),l.isInstanceOf(n,"KritzelSelectionBox")&&r("div",{ref:t=>t&&n.mount(t),style:{position:"absolute",left:"0",top:"0",width:n.totalWidth+"px",height:n.totalHeight+"px",transform:0!==n.rotationDegrees?`rotate(${n.rotationDegrees}deg)`:void 0,transformOrigin:0!==n.rotationDegrees?`${n.totalWidth/2}px ${n.totalHeight/2}px`:void 0,opacity:n.markedForRemoval?"0.5":n.opacity.toString(),pointerEvents:n.markedForRemoval?"none":"auto",backgroundColor:D.resolveThemeColor(n.backgroundColor,t),borderColor:D.resolveThemeColor(n.borderColor,t),borderWidth:n.borderWidth+"px",borderStyle:"solid"}}),l.isInstanceOf(n,"KritzelText")&&r("div",{style:{position:"absolute",left:"0",top:"0",width:n.totalWidth+"px",height:n.totalHeight+"px",transform:0!==n.rotationDegrees?`rotate(${n.rotationDegrees}deg)`:void 0,transformOrigin:0!==n.rotationDegrees?`${n.totalWidth/2}px ${n.totalHeight/2}px`:void 0,opacity:n.markedForRemoval?"0.5":n.opacity.toString(),pointerEvents:n.markedForRemoval?"none":"auto"}},r("div",{id:"text-object",ref:t=>t&&n.mount(t),onPointerDown:t=>n.handlePointerDown(t),onPointerMove:t=>n.handlePointerMove(t),onPointerUp:t=>n.handlePointerUp(t),style:{minWidth:n.initialWidth+"px",minHeight:n.initialHeight+"px",maxWidth:"500px",height:"auto",width:"max-content",transformOrigin:"top left",transform:`scale(${n.scaleFactor})`,backgroundColor:D.resolveThemeColor(n.backgroundColor,t),overflow:"visible"}})),l.isInstanceOf(n,"KritzelShape")&&r("div",{ref:t=>t&&n.mount(t),onPointerDown:t=>n.handlePointerDown(t),onPointerMove:t=>n.handlePointerMove(t),onPointerUp:t=>n.handlePointerUp(t),style:{position:"absolute",left:"0",top:"0",width:n.totalWidth+"px",height:n.totalHeight+"px",transform:0!==n.rotationDegrees?`rotate(${n.rotationDegrees}deg)`:void 0,transformOrigin:0!==n.rotationDegrees?`${n.totalWidth/2}px ${n.totalHeight/2}px`:void 0,opacity:n.markedForRemoval?"0.5":n.opacity.toString(),pointerEvents:n.markedForRemoval?"none":"auto",overflow:"visible"}},r("svg",{xmlns:"http://www.w3.org/2000/svg",style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",overflow:"visible",pointerEvents:"none"},viewBox:n.viewBox,preserveAspectRatio:"none"},r("path",{d:n.getSvgPath(),fill:D.resolveThemeColor(n.fillColor,t),stroke:D.resolveThemeColor(n.strokeColor,t),"stroke-width":n.strokeWidth})),r("div",{ref:t=>t&&n.mountTextEditor(t),style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",textAlign:"center",overflow:"hidden",pointerEvents:n.isEditing?"auto":"none"}})),this.core.store.state.debugInfo.showObjectInfo&&n.isDebugInfoVisible&&r("div",{style:{pointerEvents:"none",position:"absolute",left:`${n.totalWidth}px`,top:"0",zIndex:(n.zIndex+2).toString()}},r("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"Id: ",n.id),r("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"userId: ",n.userId),r("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"width: ",n.width),r("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"height: ",n.height),r("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"translateX: ",n.translateX),r("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"translateY: ",n.translateY),r("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"rotationDegrees: ",n.rotationDegrees),r("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"zIndex: ",n.zIndex),l.isInstanceOf(n,"KritzelImage")&&r("div",null,r("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"assetId: ",n.assetId),r("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"mimeType: ",n.mimeType))),(this.core.displaySelectionGroupUI(n)||this.core.displaySelectionLineUI(n))&&(()=>{const i=l.isInstanceOf(n,"KritzelSelectionGroup"),s=this.core.store.objects?.localClientId,a=this.core.store.objects?.awareness?.getStates(),c=i&&(null!=n.userId&&null!=this.core.user?.id&&n.userId!==this.core.user.id||null!=n.userId&&null!=this.core.user?.id&&n.userId===this.core.user.id&&null!=n.clientId&&null!=s&&n.clientId!==s&&!0===a?.has(n.clientId));let u;if(c&&a&&(i&&null!=n.clientId&&(u=a.get(n.clientId)?.user?.color),!u))for(const t of a.values())if(t.user?.id===n.userId){u=t.user.color;break}const h=u??(D.resolveThemeColor(n.borderColor,t)||"var(--kritzel-selection-border-color, #007AFF)"),f=u??"var(--kritzel-selection-handle-stroke-color, #007AFF)";return r("svg",{xmlns:"http://www.w3.org/2000/svg",style:{zIndex:(n.zIndex+1).toString(),height:n?.totalHeight.toString(),width:n?.totalWidth.toString(),left:"0",top:"0",position:"absolute",transform:`rotate(${n.rotationDegrees}deg)`,transformOrigin:`${n.totalWidth/2}px ${n.totalHeight/2}px`,overflow:"visible",pointerEvents:"none"}},this.core.displaySelectionGroupUI(n)&&r("g",{class:"selection-group-ui",style:{pointerEvents:"none"}},(()=>{const t=c&&l.isInstanceOf(n,"KritzelSelectionGroup")&&1===n.objects.length&&l.isInstanceOf(n.objects[0],"KritzelLine")?n.objects[0]:null;return t?r("g",{class:"selection-line-borders"},r("path",{class:"selection-line-border",d:this.core.anchorManager.computeClippedLinePath(t,!0),style:{stroke:h,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${n.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"round",fill:"none"}})):r("g",{class:"selection-group-borders"},r("line",{x1:"0",y1:"0",x2:n.totalWidth,y2:"0",style:{stroke:h,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${n.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),r("line",{x1:"0",y1:"0",x2:"0",y2:n.totalHeight,style:{stroke:h,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${n.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),r("line",{x1:"0",y1:n.totalHeight,x2:n.totalWidth,y2:n.totalHeight,style:{stroke:h,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${n.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),r("line",{x1:n.totalWidth,y1:"0",x2:n.totalWidth,y2:n.totalHeight,style:{stroke:h,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${n.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}))})(),!this.isSelecting&&!c&&r("g",{class:"selection-group-handles",style:{pointerEvents:"auto"}},r("rect",{class:"resize-handle top-left",x:""+-(e-1)*n.scale/this.core.store.state?.scale,y:""+-(e-1)*n.scale/this.core.store.state?.scale,width:""+2*(e-1)*n.scale/this.core.store.state?.scale,height:""+2*(e-1)*n.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:f,strokeWidth:`calc(2px * ${n.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),r("rect",{class:"resize-handle-overlay top-left",x:""+-o*n.scale/this.core.store.state?.scale,y:""+-o*n.scale/this.core.store.state?.scale,width:""+2*o*n.scale/this.core.store.state?.scale,height:""+2*o*n.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),r("rect",{class:"resize-handle top-right",x:""+(n.totalWidth-(e-1)*n.scale/this.core.store.state?.scale),y:""+-(e-1)*n.scale/this.core.store.state?.scale,width:""+2*(e-1)*n.scale/this.core.store.state?.scale,height:""+2*(e-1)*n.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:f,strokeWidth:`calc(2px * ${n.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),r("rect",{class:"resize-handle-overlay top-right",x:""+(n.totalWidth-o*n.scale/this.core.store.state?.scale),y:""+-o*n.scale/this.core.store.state?.scale,width:""+2*o*n.scale/this.core.store.state?.scale,height:""+2*o*n.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),r("rect",{class:"resize-handle bottom-left",x:""+-(e-1)*n.scale/this.core.store.state?.scale,y:""+(n.totalHeight-(e-1)*n.scale/this.core.store.state?.scale),width:""+2*(e-1)*n.scale/this.core.store.state?.scale,height:""+2*(e-1)*n.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:f,strokeWidth:`calc(2px * ${n.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),r("rect",{class:"resize-handle-overlay bottom-left",x:""+-o*n.scale/this.core.store.state?.scale,y:""+(n.totalHeight-o*n.scale/this.core.store.state?.scale),width:""+2*o*n.scale/this.core.store.state?.scale,height:""+2*o*n.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),r("rect",{class:"resize-handle bottom-right",x:""+(n.totalWidth-(e-1)*n.scale/this.core.store.state?.scale),y:""+(n.totalHeight-(e-1)*n.scale/this.core.store.state?.scale),width:""+2*(e-1)*n.scale/this.core.store.state?.scale,height:""+2*(e-1)*n.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:f,strokeWidth:`calc(2px * ${n.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),r("rect",{class:"resize-handle-overlay bottom-right",x:""+(n.totalWidth-o*n.scale/this.core.store.state?.scale),y:""+(n.totalHeight-o*n.scale/this.core.store.state?.scale),width:""+2*o*n.scale/this.core.store.state?.scale,height:""+2*o*n.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),r("line",{x1:n.totalWidth/2,y1:"0",x2:n.totalWidth/2,y2:-15*n.scale/this.core.store.state?.scale,style:{stroke:h,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${n.scale} / ${this.core.store.state?.scale})`}}),r("circle",{class:"rotation-handle",cx:n.totalWidth/2,cy:-15*n.scale/this.core.store.state?.scale,r:""+(e-1)*n.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:f,strokeWidth:`calc(2px * ${n.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),r("circle",{class:"rotation-handle-overlay",cx:n.totalWidth/2,cy:-15*n.scale/this.core.store.state?.scale,r:""+o*n.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}))),this.core.displaySelectionLineUI(n)&&l.isInstanceOf(n,"KritzelLine")&&r("g",{class:"selection-line-ui",style:{pointerEvents:"none"}},r("g",{class:"selection-line-borders"},r("path",{class:"selection-line-border",d:this.core.anchorManager.computeClippedLinePath(n,!0),style:{stroke:h,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${n.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"round",fill:"none"}})),!this.isSelecting&&!c&&r("g",{class:"selection-line-handles",style:{pointerEvents:"auto"}},r("circle",{class:"selection-line-handle start",cx:n.startX-n.x,cy:n.startY-n.y,r:""+(e-1)*n.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",stroke:f,strokeWidth:`calc(2px * ${n.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),r("circle",{class:"selection-line-handle-overlay start","data-testid":"line-handle-start",cx:n.startX-n.x,cy:n.startY-n.y,r:""+o*n.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),r("circle",{class:"selection-line-handle center",cx:void 0!==n.controlX?(n.startX+2*n.controlX+n.endX)/4-n.x:(n.startX-n.x+n.endX-n.x)/2,cy:void 0!==n.controlY?(n.startY+2*n.controlY+n.endY)/4-n.y:(n.startY-n.y+n.endY-n.y)/2,r:""+(e-1)*n.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",stroke:f,strokeWidth:`calc(2px * ${n.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),r("circle",{class:"selection-line-handle-overlay center","data-testid":"line-handle-center",cx:void 0!==n.controlX?(n.startX+2*n.controlX+n.endX)/4-n.x:(n.startX-n.x+n.endX-n.x)/2,cy:void 0!==n.controlY?(n.startY+2*n.controlY+n.endY)/4-n.y:(n.startY-n.y+n.endY-n.y)/2,r:""+o*n.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),r("circle",{class:"selection-line-handle end",cx:n.endX-n.x,cy:n.endY-n.y,r:""+(e-1)*n.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",stroke:f,strokeWidth:`calc(2px * ${n.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),r("circle",{class:"selection-line-handle-overlay end","data-testid":"line-handle-end",cx:n.endX-n.x,cy:n.endY-n.y,r:""+o*n.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}))))})()))),(()=>{const t=this.core.anchorManager.getAnchorLinesRenderData();return t?r("svg",{xmlns:"http://www.w3.org/2000/svg",class:"anchor-lines",style:{position:"absolute",left:"0",top:"0",width:"1px",height:"1px",pointerEvents:"none",zIndex:"9998",overflow:"visible"}},t.startAnchorViz&&r("g",{class:"anchor-line-start"},t.startAnchorViz.pathD?r("path",{d:t.startAnchorViz.pathD,style:{stroke:"var(--kritzel-snap-line-stroke, rgba(0, 0, 0, 0.3))",strokeWidth:`${t.lineStrokeWidth}`,strokeDasharray:t.dashArray,strokeLinecap:"round",fill:"none"}}):r("line",{x1:t.startAnchorViz.edgeX,y1:t.startAnchorViz.edgeY,x2:t.startAnchorViz.centerX,y2:t.startAnchorViz.centerY,style:{stroke:"var(--kritzel-snap-line-stroke, rgba(0, 0, 0, 0.3))",strokeWidth:`${t.lineStrokeWidth}`,strokeDasharray:t.dashArray,strokeLinecap:"round"}}),r("circle",{cx:t.startAnchorViz.centerX,cy:t.startAnchorViz.centerY,r:t.indicatorRadius,style:{fill:"var(--kritzel-snap-indicator-fill, rgba(0, 0, 0))",stroke:"var(--kritzel-snap-indicator-stroke, #007bff)",strokeWidth:t.indicatorStrokeWidth}})),t.endAnchorViz&&r("g",{class:"anchor-line-end"},t.endAnchorViz.pathD?r("path",{d:t.endAnchorViz.pathD,style:{stroke:"var(--kritzel-snap-line-stroke, rgba(0, 0, 0, 0.2))",strokeWidth:`${t.lineStrokeWidth}`,strokeDasharray:t.dashArray,strokeLinecap:"round",fill:"none"}}):r("line",{x1:t.endAnchorViz.edgeX,y1:t.endAnchorViz.edgeY,x2:t.endAnchorViz.centerX,y2:t.endAnchorViz.centerY,style:{stroke:"var(--kritzel-snap-line-stroke, rgba(0, 0, 0, 0.2))",strokeWidth:`${t.lineStrokeWidth}`,strokeDasharray:t.dashArray,strokeLinecap:"round"}}),r("circle",{cx:t.endAnchorViz.centerX,cy:t.endAnchorViz.centerY,r:t.indicatorRadius,style:{fill:"var(--kritzel-snap-indicator-fill, rgba(59, 130, 246, 0.3))",stroke:"var(--kritzel-snap-indicator-stroke, #007bff)",strokeWidth:t.indicatorStrokeWidth}}))):null})(),(()=>{const t=this.core.anchorManager.getSnapIndicatorRenderData();return t?r("svg",{xmlns:"http://www.w3.org/2000/svg",class:"snap-indicator",style:{position:"absolute",left:"0",top:"0",width:"1px",height:"1px",pointerEvents:"none",zIndex:"9999",overflow:"visible"}},r("g",null,t.snapLinePath?r("path",{d:t.snapLinePath,fill:"none",style:{stroke:"var(--kritzel-snap-line-stroke, rgba(0, 0, 0, 0.2))",strokeWidth:t.lineStrokeWidth,strokeDasharray:t.dashArray,strokeLinecap:"round"}}):void 0!==t.edgeX&&void 0!==t.edgeY&&r("line",{x1:t.edgeX,y1:t.edgeY,x2:t.centerX,y2:t.centerY,style:{stroke:"var(--kritzel-snap-line-stroke, rgba(0, 0, 0, 0.2))",strokeWidth:t.lineStrokeWidth,strokeDasharray:t.dashArray,strokeLinecap:"round"}}),r("circle",{cx:t.centerX,cy:t.centerY,r:t.indicatorRadius,style:{fill:"var(--kritzel-snap-indicator-fill, rgba(59, 130, 246, 0.3))",stroke:"var(--kritzel-snap-indicator-stroke, #007bff)",strokeWidth:t.indicatorStrokeWidth}}))):null})()),this.core.store.state.isContextMenuVisible&&r("kritzel-context-menu",{class:"context-menu",ref:t=>this.contextMenuElement=t??null,items:this.core.store.state.contextMenuItems,objects:this.core.store.selectionGroup?.objects||[],style:{position:"fixed",left:`${this.core.store.state.contextMenuX}px`,top:`${this.core.store.state.contextMenuY}px`,zIndex:"10002"},onActionSelected:t=>{t.detail.action&&t.detail.action({x:(-this.core.store.state.translateX+this.core.store.state.contextMenuX)/this.core.store.state.scale,y:(-this.core.store.state.translateY+this.core.store.state.contextMenuY)/this.core.store.state.scale},this.core.store.selectionGroup?.objects||[]),this.hideContextMenu()},onClose:()=>this.hideContextMenu()}),this.core.store.objects?.hasAwareness&&r("kritzel-awareness-cursors",{core:this.core}),this.core.store.state?.activeTool instanceof H&&!this.core.store.state.isScaling&&r("kritzel-cursor-trail",{core:this.core}))}static get watchers(){return{workspace:[{onWorkspaceChange:0}],activeWorkspaceId:[{onActiveWorkspaceIdChange:0}],syncConfig:[{onSyncConfigChange:0}],assetStorageConfig:[{onAssetStorageConfigChange:0}],user:[{onUserChange:0}],scaleMax:[{validateScaleMax:0}],scaleMin:[{validateScaleMin:0}],cursorTarget:[{onCursorTargetChange:0}],lockDrawingScale:[{onLockDrawingScaleChange:0}],theme:[{onThemeChange:0}],viewportBoundaryLeft:[{onViewportBoundaryLeftChange:0}],viewportBoundaryRight:[{onViewportBoundaryRightChange:0}],viewportBoundaryTop:[{onViewportBoundaryTopChange:0}],viewportBoundaryBottom:[{onViewportBoundaryBottomChange:0}],debugInfo:[{onDebugInfoChange:0}],isLoading:[{onIsLoadingChange:0}]}}static get style(){return":host{display:block;position:relative;height:100%;width:100%;overflow:hidden;background-color:var(--kritzel-engine-background-color, #ffffff)}:host,:host *{touch-action:none;user-select:none}.ProseMirror{outline:none}p,h1,h2,h3,h4,h5,h6,blockquote,pre{margin:0;padding:0}.workspace-loading-overlay{position:absolute;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;gap:10px;background-color:var(--kritzel-engine-loading-overlay-background, rgba(255, 255, 255, 0.6));color:var(--kritzel-engine-loading-overlay-color, #333);font-family:var(--kritzel-font-family, sans-serif);font-size:1.25rem;pointer-events:all;animation:workspace-loading-fade-in 200ms ease-out var(--kritzel-engine-loading-overlay-delay, 300ms) forwards;opacity:0}.workspace-loading-spinner{width:20px;height:20px;box-sizing:border-box;display:block;flex-shrink:0;border:2px solid var(--kritzel-engine-loading-overlay-spinner-color, #cccccc);border-top-color:var(--kritzel-engine-loading-overlay-spinner-active-color, #333333);border-radius:50%;animation:workspace-loading-spin 0.6s linear infinite}@keyframes workspace-loading-spin{to{transform:rotate(360deg)}}@keyframes workspace-loading-fade-in{to{opacity:1}}.debug-panel{position:absolute;pointer-events:none;top:0;right:0}.origin{position:relative;top:0;left:0;height:0;width:0;pointer-events:none;-webkit-transform-origin:top left;-moz-transform-origin:top left;transform-origin:top left;overflow:visible}.object{overflow:visible}.PlaygroundEditorTheme__quote{margin:0;margin-left:20px;margin-bottom:10px;font-size:15px;color:rgb(101, 103, 107);border-left-color:rgb(206, 208, 212);border-left-width:4px;border-left-style:solid;padding-left:16px}"}},[513,"kritzel-engine",{workspace:[16],editorId:[1,"editor-id"],activeWorkspaceId:[1,"active-workspace-id"],syncConfig:[16],assetStorageConfig:[16],user:[16],globalContextMenuItems:[16],objectContextMenuItems:[16],scaleMax:[1026,"scale-max"],scaleMin:[1026,"scale-min"],cursorTarget:[16],lockDrawingScale:[4,"lock-drawing-scale"],theme:[1],viewportBoundaryLeft:[2,"viewport-boundary-left"],viewportBoundaryRight:[2,"viewport-boundary-right"],viewportBoundaryTop:[2,"viewport-boundary-top"],viewportBoundaryBottom:[2,"viewport-boundary-bottom"],debugInfo:[16],wheelEnabled:[4,"wheel-enabled"],isLoading:[4,"is-loading"],forceUpdate:[32],triggerSelectionChange:[64],registerTool:[64],changeActiveTool:[64],disable:[64],enable:[64],delete:[64],copy:[64],cut:[64],paste:[64],bringForward:[64],sendBackward:[64],bringToFront:[64],sendToBack:[64],alignObjects:[64],group:[64],ungroup:[64],undo:[64],redo:[64],hideContextMenu:[64],getObjectById:[64],getAllObjects:[64],findObjects:[64],getObjectsTotalCount:[64],addObject:[64],updateObject:[64],removeObject:[64],getSelectedObjects:[64],getDisplayableShortcuts:[64],selectObjects:[64],selectAllObjectsInViewport:[64],clearSelection:[64],centerObjectInViewport:[64],backToContent:[64],centerAllObjects:[64],setViewport:[64],panTo:[64],zoomTo:[64],getViewport:[64],screenToWorld:[64],worldToScreen:[64],getCopiedObjects:[64],getObjectsInViewport:[64],getScreenshot:[64],exportViewportAsPng:[64],exportViewportAsSvg:[64],getSelectedObjectsAsSvgString:[64],exportSelectedObjectsAsSvg:[64],getSelectedObjectsAsPngDataUrl:[64],exportSelectedObjectsAsPng:[64],exportAsJson:[64],importFromJson:[64],loadObjectsFromJson:[64],downloadAsJson:[64],importFromFile:[64],createWorkspace:[64],updateWorkspace:[64],deleteWorkspace:[64],getWorkspaces:[64],getActiveWorkspace:[64],getIsPublic:[64],loadSharedWorkspace:[64],reinitSync:[64]},[[1,"wheel","handleWheel"],[0,"pointerdown","handlePointerDown"],[0,"pointermove","handlePointerMove"],[0,"pointerup","handlePointerUp"],[0,"pointercancel","handlePointerCancel"],[1,"pointerleave","handlePointerLeave"],[1,"longpress","handleLongPress"],[0,"contextmenu","handleContextMenu"],[9,"resize","handleResize"],[8,"keydown","handleKeyDown"],[8,"keyup","handleKeyUp"],[4,"dblclick","preventDoubleTapZoomOnTouchDevices"]],{workspace:[{onWorkspaceChange:0}],activeWorkspaceId:[{onActiveWorkspaceIdChange:0}],syncConfig:[{onSyncConfigChange:0}],assetStorageConfig:[{onAssetStorageConfigChange:0}],user:[{onUserChange:0}],scaleMax:[{validateScaleMax:0}],scaleMin:[{validateScaleMin:0}],cursorTarget:[{onCursorTargetChange:0}],lockDrawingScale:[{onLockDrawingScaleChange:0}],theme:[{onThemeChange:0}],viewportBoundaryLeft:[{onViewportBoundaryLeftChange:0}],viewportBoundaryRight:[{onViewportBoundaryRightChange:0}],viewportBoundaryTop:[{onViewportBoundaryTopChange:0}],viewportBoundaryBottom:[{onViewportBoundaryBottomChange:0}],debugInfo:[{onDebugInfoChange:0}],isLoading:[{onIsLoadingChange:0}]}]);function Rn(){"undefined"!=typeof customElements&&["kritzel-engine","kritzel-awareness-cursors","kritzel-context-menu","kritzel-cursor-trail","kritzel-icon"].forEach((t=>{switch(t){case"kritzel-engine":customElements.get(o(t))||customElements.define(o(t),Wn);break;case"kritzel-awareness-cursors":customElements.get(o(t))||K();break;case"kritzel-context-menu":customElements.get(o(t))||E();break;case"kritzel-cursor-trail":customElements.get(o(t))||V();break;case"kritzel-icon":customElements.get(o(t))||R()}}))}export{Et as A,Bt as D,Ct as I,H as K,_t as W,Mt as a,jt as b,zt as c,It as d,Ot as e,Pt as f,Rn as g,Wn as h,Tt as r}
|