kritzel-stencil 0.3.13 → 0.3.14
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 +151 -25
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{schema.constants-CMFOYyBj.js → schema.constants-DJQTjcy7.js} +62 -0
- package/dist/cjs/stencil.cjs.js +1 -1
- package/dist/collection/classes/core/viewport.class.js +81 -0
- package/dist/collection/classes/objects/image.class.js +62 -0
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +86 -18
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +164 -17
- package/dist/collection/constants/version.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/kritzel-controls.js +1 -1
- package/dist/components/kritzel-editor.js +1 -1
- package/dist/components/kritzel-engine.js +1 -1
- package/dist/components/kritzel-settings.js +1 -1
- package/dist/components/kritzel-tool-config.js +1 -1
- package/dist/components/p-BTEV1WwT.js +1 -0
- package/dist/components/p-CLLbE_z8.js +9 -0
- package/dist/components/{p-B9hLySCl.js → p-CUPYGT8c.js} +1 -1
- package/dist/components/{p-ijIqLY9g.js → p-DkaiWg1V.js} +1 -1
- package/dist/components/{p-CVzH1Oil.js → p-J9_SwObO.js} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/kritzel-active-users_42.entry.js +151 -25
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{schema.constants-NrtFvKER.js → schema.constants-DiCnmIYK.js} +62 -0
- package/dist/esm/stencil.js +1 -1
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/{p-NrtFvKER.js → p-DiCnmIYK.js} +1 -1
- package/dist/stencil/p-ea76b21f.entry.js +9 -0
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/types/classes/core/viewport.class.d.ts +30 -0
- package/dist/types/classes/objects/image.class.d.ts +15 -0
- package/dist/types/components/core/kritzel-editor/kritzel-editor.d.ts +11 -3
- package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +33 -5
- package/dist/types/components.d.ts +28 -6
- package/dist/types/constants/version.d.ts +1 -1
- package/package.json +1 -1
- package/dist/components/p-C-aFOO5p.js +0 -1
- package/dist/components/p-DplAQ6jk.js +0 -9
- package/dist/stencil/p-9adee165.entry.js +0 -9
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{r as t,h as e,H as i,c as n,g as r}from"./p-Dhio9uis.js";import{c as o,e as s,G as a,J as l,o as c,l as h,L as u,M as d,N as f,S as p,D as b,h as g,j as v,u as k,i as m,m as y,t as w,k as x,y as z,v as C,T as S,x as I,w as M,O as j,P as $,Q as T,R as A,U as O,K as _,q as E,f as D,d as F,g as R,b as L,z as B,F as P,C as W,E as V,B as N,V as K,n as U,r as H,s as G,p as Y,X as q,Y as X,W as Z}from"./p-DiCnmIYK.js";import*as J from"yjs";import"y-indexeddb";import"y-websocket";var Q="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};const tt=class{constructor(e){t(this,e)}users=[];avatarSize=40;maxVisible=3;overlap=20;getDisplayName(t){return t.displayName??([t.firstName,t.lastName].filter(Boolean).join(" ")||t.email||"User")}render(){if(!this.users||0===this.users.length)return e(i,{style:{display:"none"}});const t=this.users.slice(0,this.maxVisible),n=this.users.length-this.maxVisible;return e(i,{style:{"--avatar-overlap":`-${this.overlap}px`}},e("div",{class:"avatars"},t.map(((i,n)=>e("div",{class:"avatar-wrapper",style:{marginLeft:n>0?"var(--avatar-overlap)":"0px",zIndex:""+(t.length-n)}},e("kritzel-avatar",{user:i,size:this.avatarSize}),e("span",{class:"avatar-tooltip"},this.getDisplayName(i)))))),n>0&&e("span",{class:"overflow-count"},"+",n,e("span",{class:"avatar-tooltip"},this.users.slice(this.maxVisible).map((t=>e("div",null,this.getDisplayName(t)))))))}};tt.style=":host{display:inline-flex;align-items:center}.avatars{display:flex;align-items:center}.avatar-wrapper{position:relative;transition:margin-left 200ms ease}.avatar-wrapper kritzel-avatar{border-radius:50%;box-shadow:0 0 0 2px var(--kritzel-active-users-avatar-border-color, #ffffff)}.avatars:hover .avatar-wrapper{margin-left:-6px !important}.avatar-tooltip{position:absolute;top:100%;left:50%;transform:translateX(-50%);margin-top:12px;padding:4px 8px;background-color:var(--kritzel-active-users-tooltip-background, #333333);color:var(--kritzel-active-users-tooltip-color, #ffffff);font-family:sans-serif;font-size:12px;font-weight:500;border-radius:4px;white-space:nowrap;width:max-content;pointer-events:none;opacity:0;transition:opacity 150ms ease}.avatar-wrapper:hover .avatar-tooltip,.overflow-count:hover .avatar-tooltip{opacity:1}.overflow-count{position:relative;margin-left:8px;font-family:sans-serif;font-size:var(--kritzel-active-users-overflow-font-size, 14px);font-weight:500;color:var(--kritzel-active-users-overflow-color, #666666);white-space:nowrap;cursor:default}.overflow-count .avatar-tooltip{white-space:nowrap;text-align:left;margin-top:20px}";const et=class{constructor(e){t(this,e)}user;name;size=32;color;imageError=!1;retryCount=0;maxRetries=3;retryTimer;userChanged(){this.resetImageState()}profileImageUrlChanged(){this.resetImageState()}resetImageState(){this.imageError=!1,this.retryCount=0,clearTimeout(this.retryTimer)}disconnectedCallback(){clearTimeout(this.retryTimer)}getImageUrl(){return this.user?.profileImageUrl}getDisplayName(){return this.user?this.user.displayName??([this.user.firstName,this.user.lastName].filter(Boolean).join(" ")||this.user.email):this.name}getInitials(){const t=this.getDisplayName();if(!t)return;const e=t.trim().split(/\s+/);return e.length>=2?(e[0][0]+e[e.length-1][0]).toUpperCase():e[0][0]?.toUpperCase()}getBackgroundColor(){return this.user?.color??this.color??this.generateColorFromName()}generateColorFromName(){const t=this.getDisplayName()||"";let e=0;for(let i=0;i<t.length;i++)e=t.charCodeAt(i)+((e<<5)-e);return`hsl(${Math.abs(e%360)}, 45%, 55%)`}handleImageError=()=>{if(this.retryCount<this.maxRetries){this.retryCount++;const t=1e3*Math.pow(2,this.retryCount-1);this.retryTimer=setTimeout((()=>{this.imageError=!1}),t)}this.imageError=!0};render(){const t=this.getImageUrl(),n=this.getInitials(),r=t&&!this.imageError,o=!r&&n,s=!r&&!o,a={width:`${this.size}px`,height:`${this.size}px`,fontSize:`${Math.round(.4*this.size)}px`};return e(i,{key:"571bd5b92adc7c65b96ded37b8daf5ed79905361",style:a,class:{"has-image":!!r,"has-initials":!!o,"has-default":!!s},role:"img","aria-label":this.getDisplayName()||"User avatar"},r&&e("img",{key:"1065850b4575fda4637ab61ce07c6dfc97f14a90",src:t,alt:"",class:"avatar-image",ref:t=>{t&&(t.referrerPolicy="no-referrer",t.crossOrigin="anonymous")},onError:this.handleImageError}),o&&e("span",{key:"a6d9c9dd2eac6e44c731a878e2460017da7fb0b7",class:"avatar-initials",style:{backgroundColor:this.getBackgroundColor()}},n),s&&e("span",{key:"9e9d33cdd213649071b76cb0875008562b30f6a1",class:"avatar-default"},e("svg",{key:"5d0be5c503a8944b45de239f08e6f40378c2dc5e",viewBox:"0 0 24 24",fill:"currentColor"},e("path",{key:"9264549c9b8abbdea74cd707d6f77bcfdde6459d",d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"}))))}static get watchers(){return{user:[{userChanged:0}],profileImageUrl:[{profileImageUrlChanged:0}]}}};et.style=":host{display:inline-flex;justify-content:center;align-items:center;border-radius:50%;overflow:hidden;user-select:none;flex-shrink:0}.avatar-image{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%}.avatar-initials{display:flex;justify-content:center;align-items:center;width:100%;height:100%;border-radius:50%;color:var(--kritzel-avatar-initials-color, #ffffff);font-weight:var(--kritzel-avatar-initials-font-weight, 500);font-family:var(--kritzel-avatar-initials-font-family, sans-serif);line-height:1}.avatar-default{display:flex;justify-content:center;align-items:center;width:100%;height:100%;border-radius:50%;background-color:var(--kritzel-avatar-default-background, #e0e0e0);color:var(--kritzel-avatar-default-color, #9e9e9e)}.avatar-default svg{width:60%;height:60%}:host(.has-image){border:var(--kritzel-avatar-border, none)}:host(.has-initials){border:var(--kritzel-avatar-border, none)}:host(.has-default){border:var(--kritzel-avatar-border, none)}";const it=class{constructor(e){t(this,e)}core;showEdgeIndicators=!0;edgeIndicatorPadding=8;remoteCursors=new Map;objectVersion=0;cleanupIntervalId;objectChangeRafId=null;componentDidLoad(){this.core.store.objects?.onAwarenessChange((t=>{this.handleAwarenessChange(t)})),this.core.store.objects?.onObjectsChange((()=>{this.handleRemoteObjectChange()})),this.cleanupIntervalId=setInterval((()=>{this.cleanupStaleCursors()}),3e3)}disconnectedCallback(){this.cleanupIntervalId&&clearInterval(this.cleanupIntervalId),null!==this.objectChangeRafId&&cancelAnimationFrame(this.objectChangeRafId)}handleAwarenessChange(t){const e=this.core.store.objects?.localClientId,i=Date.now(),n=new Map(this.remoteCursors),r=new Set;t.forEach(((t,o)=>{if(o===e)return;if(!t.user)return;r.add(o);const s=t.user,a=t.cursor,l=t.activeObjectId||null,c=t.selectionBox||null,h=n.get(o);n.set(o,{clientId:o,user:s,cursor:a,activeObjectId:l,selectionBox:c,lastUpdated:i,lastCursorMove:!h||!h.cursor!=!a||a&&h.cursor&&(a.x!==h.cursor.x||a.y!==h.cursor.y)?i:h?.lastCursorMove??i})}));for(const t of n.keys())r.has(t)||n.delete(t);this.remoteCursors=n}cleanupStaleCursors(){const t=Date.now();let e=!1;const i=new Map(this.remoteCursors);for(const[n,r]of i)t-r.lastUpdated>3e4?(i.delete(n),e=!0):!e&&t-r.lastCursorMove>1e4&&(e=!0);e&&(this.remoteCursors=i)}isStale(t){return Date.now()-t.lastCursorMove>1e4}hasActiveDrawingCursors(){for(const t of this.remoteCursors.values())if(t.activeObjectId)return!0;return!1}handleRemoteObjectChange(){this.hasActiveDrawingCursors()&&null===this.objectChangeRafId&&(this.objectChangeRafId=requestAnimationFrame((()=>{this.objectChangeRafId=null,this.objectVersion++})))}getActiveObjectTip(t){const e=this.core.store.objects?.findById(t);if(!e)return null;if(e instanceof o&&!e.isCompleted){const t=e.points[e.points.length-1];return t?{x:(t[0]-e.x)/e.scale+e.translateX,y:(t[1]-e.y)/e.scale+e.translateY}:null}return e instanceof s&&!e.isCompleted?{x:(e.endX-e.x)/e.scale+e.translateX,y:(e.endY-e.y)/e.scale+e.translateY}:null}worldToScreen(t,e){const{scale:i,translateX:n,translateY:r}=this.core.store.state;return{x:t*i+n,y:e*i+r}}isInViewport(t,e){const{viewportWidth:i,viewportHeight:n}=this.core.store.state;return t>=0&&t<=i&&e>=0&&e<=n}clampToEdge(t,e){const{viewportWidth:i,viewportHeight:n}=this.core.store.state,r=this.edgeIndicatorPadding,o=Math.max(r,Math.min(i-r,t)),s=Math.max(r,Math.min(n-r,e)),a=o-r,l=i-r-o,c=s-r;let h="top";const u=Math.min(a,l,c,n-r-s);return h=u===a?"left":u===l?"right":u===c?"top":"bottom",{x:o,y:s,angle:Math.atan2(e-s,t-o),edge:h}}getUserDisplayName(t){return t.displayName?t.displayName:t.firstName||t.lastName?[t.firstName,t.lastName].filter(Boolean).join(" "):"Unknown"}getInitials(t){const e=t.trim().split(/\s+/);return 0===e.length||1===e.length&&e[0].length<=1?t:1===e.length?e[0][0].toUpperCase():(e[0][0]+e[e.length-1][0]).toUpperCase()}render(){const t=Array.from(this.remoteCursors.values());return e(i,{key:"5c695e3c5a012767b31bb1b756ef03e2a174f46e"},t.map((t=>{if(!t.cursor)return null;let e,i=!1;if(t.activeObjectId){const n=this.getActiveObjectTip(t.activeObjectId);n?(i=!0,e=this.worldToScreen(n.x,n.y)):e=this.worldToScreen(t.cursor.x,t.cursor.y)}else e=this.worldToScreen(t.cursor.x,t.cursor.y);const n=this.isInViewport(e.x,e.y),r=this.isStale(t),o=t.user.color||"#6B7280";return n?this.renderCursor(t,e.x,e.y,o,r,i):this.showEdgeIndicators?this.renderEdgeIndicator(t,e.x,e.y,o,r,i):null})),t.map((t=>{if(!t.selectionBox)return null;const i=t.user.color||"#6B7280",n=t.selectionBox,r=this.worldToScreen(n.x,n.y),{scale:o}=this.core.store.state;return e("div",{key:`selection-box-${t.clientId}`,class:"remote-selection-box",style:{transform:`translate(${r.x}px, ${r.y}px)`,width:n.width*o+"px",height:n.height*o+"px",backgroundColor:`color-mix(in srgb, ${i} 20%, transparent)`,borderColor:`color-mix(in srgb, ${i} 50%, transparent)`}})})))}renderCursor(t,i,n,r,o,s){return e("div",{key:`cursor-${t.clientId}`,class:{"awareness-cursor":!0,stale:o,"tracking-object":s},style:{transform:`translate(${i}px, ${n}px)`}},e("svg",{class:"cursor-arrow",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e("path",{d:"M5 3L19 12L12 13L9 20L5 3Z",fill:r,stroke:"#ffffff","stroke-width":"1.5","stroke-linejoin":"round"})),e("span",{class:"cursor-label",style:{backgroundColor:r}},this.getUserDisplayName(t.user)))}renderEdgeIndicator(t,i,n,r,o,s){const a=this.clampToEdge(i,n),l=180*a.angle/Math.PI+90;let c=0,h=0;"left"===a.edge?c=20:"right"===a.edge?c=-20:"top"===a.edge?h=20:"bottom"===a.edge&&(h=-20);const u=this.getUserDisplayName(t.user);return e("div",{key:`edge-${t.clientId}`,class:{"edge-indicator":!0,stale:o,"tracking-object":s},style:{transform:`translate(${a.x}px, ${a.y}px)`}},e("svg",{class:{"edge-arrow":!0,stale:o},width:"16",height:"16",viewBox:"0 0 16 16",style:{transform:`rotate(${l}deg)`}},e("path",{d:"M8 1L14 13H2L8 1Z",fill:r,stroke:"#ffffff","stroke-width":"1.5","stroke-linejoin":"round"})),e("span",{class:"edge-label",style:{backgroundColor:r,transform:`translate(${c}px, ${h}px)`}},this.getInitials(u)))}};it.style=":host{display:block;position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:1}.awareness-cursor{position:absolute;top:0;left:0;transition:transform var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, opacity 300ms ease;will-change:transform}.awareness-cursor.stale{opacity:0}.awareness-cursor.tracking-object{transition-duration:0ms}.cursor-arrow{filter:drop-shadow(0 1px 2px rgba(0, 0, 0, 0.3))}.cursor-label{position:absolute;left:16px;top:16px;white-space:nowrap;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;font-size:var(--kritzel-awareness-cursor-label-font-size, 12px);color:var(--kritzel-awareness-cursor-label-text-color, #ffffff);padding:2px 8px;border-radius:4px;line-height:1.4;font-weight:500;pointer-events:none;user-select:none}.edge-indicator{position:absolute;top:-12px;left:-12px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:transform var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, opacity 300ms ease;will-change:transform;pointer-events:auto;user-select:none;cursor:pointer}.edge-indicator.stale{opacity:0}.edge-indicator.tracking-object{transition-duration:0ms}.edge-arrow{position:absolute;filter:drop-shadow(0 1px 3px rgba(0, 0, 0, 0.3));transition:opacity 300ms ease}.edge-arrow.stale{opacity:0}.edge-label{position:absolute;white-space:nowrap;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;font-size:var(--kritzel-awareness-cursor-label-font-size, 12px);color:var(--kritzel-awareness-cursor-label-text-color, #ffffff);padding:2px 8px;border-radius:4px;line-height:1.4;font-weight:500;pointer-events:none;opacity:0;transform-origin:center;transition:opacity 150ms ease}.edge-indicator:hover .edge-label{opacity:1}.remote-selection-box{position:absolute;top:0;left:0;border-width:2px;border-style:solid;pointer-events:none;will-change:transform, width, height;transition:transform var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, width var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out, height var(--kritzel-awareness-cursor-transition-duration, 100ms) ease-out}";const nt=class{constructor(e){t(this,e),this.backToContent=n(this,"backToContent")}visible=!1;text="Back to content";backToContent;handleClick=()=>{this.backToContent.emit()};render(){return e(i,{key:"b623a9a4e4b8fce50346771488a59c3a646c289e"},e("button",{key:"b2f6b257975639d33362f1038b61e5147963f189",class:{"back-to-content-button":!0,visible:this.visible},onClick:this.handleClick,"aria-label":this.text},e("kritzel-icon",{key:"22f34fc201a865b6d9b21775a349d0e185727d48",name:"chevrons-left"})))}};nt.style=":host{display:block;z-index:var(--kritzel-back-to-content-z-index, 1000)}.back-to-content-button{display:flex;align-items:center;justify-content:center;height:var(--kritzel-back-to-content-height, 50px);box-sizing:border-box;gap:var(--kritzel-back-to-content-gap, 6px);padding:var(--kritzel-back-to-content-padding, 0 16px);border:var(--kritzel-back-to-content-border, 1px solid #ebebeb);border-radius:var(--kritzel-back-to-content-border-radius, 12px);background-color:var(--kritzel-back-to-content-background-color, #ffffff);color:var(--kritzel-back-to-content-color, #000000);font-size:var(--kritzel-back-to-content-font-size, 14px);font-weight:var(--kritzel-back-to-content-font-weight, 500);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:var(--kritzel-back-to-content-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));opacity:0;pointer-events:none;transition:opacity 0.2s ease-out, transform 0.2s ease-out, background-color 0.15s ease-out;-webkit-tap-highlight-color:transparent;user-select:none}.back-to-content-button.visible{opacity:1;pointer-events:auto}@media (hover: hover){.back-to-content-button:hover{background-color:var(--kritzel-back-to-content-hover-background-color, hsl(0, 0%, 0%, 4.3%))}}.back-to-content-button:active{background-color:var(--kritzel-back-to-content-active-background-color, hsl(0, 0%, 0%, 8.6%))}";const rt=class{constructor(e){t(this,e),this.buttonClick=n(this,"buttonClick")}variant="primary";disabled=!1;type="button";buttonClick;handleClick=t=>{this.disabled||(t.stopPropagation(),this.buttonClick.emit())};render(){return e(i,{key:"c915db75630392741de404f07265a391330e54ca"},e("button",{key:"50248ee1ed5862c9ea72b4f7cf7d564d03b5b14e",type:this.type,class:{"kritzel-button":!0,[this.variant]:!0,disabled:this.disabled},disabled:this.disabled,onClick:this.handleClick},e("slot",{key:"d595cd819c7c0a3550e468ce65d4e2c28cc02164"})))}};rt.style=":host{display:inline-block;font-family:sans-serif}button{border:none;background-color:transparent;padding:0;margin:0;font-family:inherit;font-size:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:var(--kritzel-global-pointer-cursor, pointer);display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:var(--kritzel-button-border-radius, 8px);padding:var(--kritzel-button-padding, 12px 20px);font-size:var(--kritzel-button-font-size, 14px);font-weight:var(--kritzel-button-font-weight, 500);transition:background-color 0.15s ease, opacity 0.15s ease;-webkit-tap-highlight-color:transparent}button.primary{background-color:var(--kritzel-button-primary-background-color, #007AFF);color:var(--kritzel-button-primary-color, #ffffff)}button.primary:hover{background-color:var(--kritzel-button-primary-hover-background-color, #006ae6)}button.primary:active{background-color:var(--kritzel-button-primary-active-background-color, #005bbf)}button.secondary{background-color:var(--kritzel-button-secondary-background-color, #f0f0f0);color:var(--kritzel-button-secondary-color, #333333)}button.secondary:hover{background-color:var(--kritzel-button-secondary-hover-background-color, #e0e0e0)}button.secondary:active{background-color:var(--kritzel-button-secondary-active-background-color, #d0d0d0)}button.text{background-color:transparent;color:var(--kritzel-button-text-color, #007AFF)}button.text:hover{background-color:var(--kritzel-button-text-hover-background-color, rgba(0, 122, 255, 0.08))}button.text:active{background-color:var(--kritzel-button-text-active-background-color, rgba(0, 122, 255, 0.15))}button.disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}";const ot=class{constructor(e){t(this,e)}value;theme;size=24;resolveColor(){return this.value?"string"==typeof this.value?this.value:a.resolveThemeColor(this.value,this.theme):""}isLightColor(t){if(!t)return!1;let e=0,i=0,n=0,r=t.startsWith("#")?t.slice(1):t;if(3===r.length)e=parseInt(r[0]+r[0],16),i=parseInt(r[1]+r[1],16),n=parseInt(r[2]+r[2],16);else{if(6!==r.length)return!1;e=parseInt(r.substring(0,2),16),i=parseInt(r.substring(2,4),16),n=parseInt(r.substring(4,6),16)}return!(isNaN(e)||isNaN(i)||isNaN(n))&&.299*e+.587*i+.114*n>220}render(){const t=this.resolveColor(),n=this.isLightColor(t);return e(i,{key:"c4c1fe2559aca61557ff2e8154f4d46ce3511b30"},e("div",{key:"158c243018763a9609e0a056229263864a5e4d13",class:"checkerboard-bg",style:{width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",display:"inline-block",position:"relative"}},e("div",{key:"afa21c72b17ab5fb4b16521b91dbe7e9162d05f8",class:{"color-circle":!0,white:n},style:{backgroundColor:t,width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",position:"absolute",top:"0",left:"0",display:"inline-block"}})))}};ot.style=":host{display:flex}.checkerboard-bg{background:repeating-conic-gradient( var(--kritzel-checkerboard-color-dark, #ccc) 0% 25%, var(--kritzel-checkerboard-color-light, #fff) 0% 50% ) 50% / 8px 8px;position:relative;overflow:hidden}.color-circle{width:24px;height:24px;border-radius:50%;box-sizing:border-box;display:block}.color-circle.white{border:1px solid var(--kritzel-color-palette-circle-border-color, #dddcdc)}";const st=class{constructor(e){t(this,e),this.colorChange=n(this,"colorChange")}colors=[];selectedColor=null;isExpanded=!1;isOpaque=!1;opacity=1;theme;colorChange;handleColorClick(t){this.selectedColor=t,this.colorChange.emit(t)}handleKeyDown(t,e){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.handleColorClick(e))}calculateHeight(){const t=Math.ceil(this.colors.length/6);return 32*t+8*(t-1)+"px"}areColorsEqual(t,e){return!!t&&t.light===e.light&&t.dark===e.dark}render(){const t=this.isExpanded?this.colors:this.colors.slice(0,6),n=this.isExpanded?this.calculateHeight():"32px";return e(i,{key:"fc57d77d7c4cfd2aa2a02a70b8991858bb8cf61b"},e("div",{key:"4fd10783609882f453ce95f5114acf799f21ec52",class:{"color-grid":!0,expanded:this.isExpanded},style:{height:n}},t.map((t=>e("div",{tabIndex:0,class:{"color-container":!0,selected:this.areColorsEqual(this.selectedColor,t)},onClick:()=>this.handleColorClick(t),onKeyDown:e=>this.handleKeyDown(e,t)},e("kritzel-color",{value:a.applyOpacity(t,this.opacity,this.theme),theme:this.theme}))))))}};st.style=":host{display:flex;align-items:flex-start;gap:8px;padding:0;width:100%;box-sizing:border-box}.color-grid{width:100%;display:grid;grid-template-columns:repeat(6, 32px);gap:8px;justify-items:center;overflow:hidden;height:40px;transition:height 0.1s ease-in-out}.color-grid.expanded{height:500px}.color-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box}.color-container:hover{background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.color-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-color-palette-selected-background-color)}";const at=class{constructor(e){t(this,e),this.actionSelected=n(this,"actionSelected"),this.close=n(this,"close")}get host(){return r(this)}items;onItemsChanged(){this.updateMenuItems()}objects;actionSelected;close;processedItems=[];openSubmenuPath="";submenuPositions={};submenuTimer=null;submenuRefs=new Map;menuItemWrapperRefs=new Map;handleOutsideClick(t){t.composedPath().includes(this.host)||this.close.emit()}componentWillLoad(){this.updateMenuItems()}componentDidLoad(){this.adjustPositionToViewport()}componentDidUpdate(){this.adjustPositionToViewport(),this.adjustSubmenuPositions(),this.pruneStaleRefs()}disconnectedCallback(){this.submenuTimer&&clearTimeout(this.submenuTimer)}adjustPositionToViewport(){const t=this.host.getBoundingClientRect(),e=window.innerWidth,i=window.innerHeight,n=parseFloat(this.host.style.left)||0,r=parseFloat(this.host.style.top)||0;let o=n,s=r;t.right>e-8&&(o=e-t.width-8),t.bottom>i-8&&(s=i-t.height-8),o<8&&(o=8),s<8&&(s=8),o===n&&s===r||(this.host.style.left=`${o}px`,this.host.style.top=`${s}px`)}adjustSubmenuPositions(){if(!this.openSubmenuPath)return;const t=window.innerHeight;for(const e of this.getOpenSubmenuPaths()){const i=this.submenuRefs.get(e),n=this.menuItemWrapperRefs.get(e);if(!i||!n)continue;const r=n.getBoundingClientRect(),o=r.top+i.offsetHeight;if(o>t-8){let e=o-(t-8);r.top-e<8&&(e=r.top-8),i.style.top=-e+"px"}else i.style.top="0px"}}getOpenSubmenuPaths(){if(!this.openSubmenuPath)return[];const t=this.openSubmenuPath.split("."),e=[];for(let i=1;i<=t.length;i++)e.push(t.slice(0,i).join("."));return e}isSubmenuOpen(t){return this.openSubmenuPath===t||this.openSubmenuPath.startsWith(t+".")}getParentPath(t){const e=t.lastIndexOf(".");return-1===e?"":t.substring(0,e)}getMenuDepth(t){return t?t.split(".").length:0}pruneStaleRefs(){const t=new Set(this.getOpenSubmenuPaths());for(const e of Array.from(this.submenuRefs.keys()))t.has(e)||this.submenuRefs.delete(e);for(const e of Array.from(this.menuItemWrapperRefs.keys())){const i=this.getParentPath(e);""===i||t.has(i)||this.menuItemWrapperRefs.delete(e)}}handleItemClick(t,e,i){e||i||t.action&&this.actionSelected.emit(t)}handleItemMouseEnter(t,e){this.submenuTimer&&(clearTimeout(this.submenuTimer),this.submenuTimer=null);const i=this.getParentPath(t);this.submenuTimer=e?setTimeout((()=>{const e=this.menuItemWrapperRefs.get(t);let i="right";if(e){const t=e.getBoundingClientRect(),n=window.innerWidth;i=t.right+160>n-8?"left":"right"}this.submenuPositions={...this.submenuPositions,[t]:i},this.openSubmenuPath=t}),150):setTimeout((()=>{this.openSubmenuPath=i}),150)}handleSubmenuMouseEnter(){this.submenuTimer&&(clearTimeout(this.submenuTimer),this.submenuTimer=null)}handleSubmenuMouseLeave(t){const e=this.getParentPath(t);this.submenuTimer=setTimeout((()=>{this.openSubmenuPath=e}),150)}async updateMenuItems(){this.processedItems=await this.processItems(this.items)}async processItems(t){const e=[];for(const i of t)if(await this.evaluateProperty(i.visible,!0)){const t=await this.evaluateProperty(i.disabled,!1);let n;i.children&&i.children.length>0&&(n=await this.processItems(i.children)),e.push({item:i,isDisabled:t,processedChildren:n})}return e}async evaluateProperty(t,e){return"boolean"==typeof t?t:"function"==typeof t?await Promise.resolve(t(null,this.objects)):e}renderItems(t,i){return t.map((({item:n,isDisabled:r,processedChildren:o},s)=>{const a=""===i?String(s):`${i}.${s}`,l=s>0?t[s-1].item:null,c=l&&l.group!==n.group,h=!!o&&o.length>0,u=h&&this.isSubmenuOpen(a);return[c&&e("div",{class:"menu-divider",key:`divider-${a}`}),e("div",{class:"menu-item-wrapper",key:`wrapper-${a}`,ref:t=>t&&this.menuItemWrapperRefs.set(a,t),onMouseEnter:()=>this.handleItemMouseEnter(a,h)},e("button",{key:`${n.label}-${a}`,class:{"menu-item":!0,disabled:r,"has-children":h,"submenu-open":u},onClick:()=>this.handleItemClick(n,r,h),disabled:r&&!h},n.icon&&e("kritzel-icon",{name:n.icon,size:16}),e("span",{class:"label"},n.label),h&&e("kritzel-icon",{name:"chevron-right",size:12,class:"submenu-arrow"})),h&&u&&this.renderSubmenu(o,a))]}))}renderSubmenu(t,i){const n="left"===this.submenuPositions[i]?"left":"right",r=this.getMenuDepth(i)+1;return e("div",{class:{"submenu-container":!0,"position-left":"left"===n},key:`submenu-${i}`,style:{zIndex:String(r)},ref:t=>t&&this.submenuRefs.set(i,t),onMouseEnter:()=>this.handleSubmenuMouseEnter(),onMouseLeave:()=>this.handleSubmenuMouseLeave(i)},this.renderItems(t,i))}render(){return this.processedItems&&0!==this.processedItems.length?e(i,null,e("div",{class:"menu-container"},this.renderItems(this.processedItems,""))):null}static get watchers(){return{items:[{onItemsChanged:0}]}}};at.style=":host{display:block}.menu-container{position:relative;z-index:1;display:flex;flex-direction:column;gap:var(--kritzel-context-menu-item-spacing, 2px);background-color:var(--kritzel-context-menu-background-color, #ffffff);border-radius:var(--kritzel-context-menu-border-radius, 12px);box-shadow:var(--kritzel-context-menu-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));border:var(--kritzel-context-menu-border, 1px solid #ebebeb);padding:var(--kritzel-context-menu-padding, 4px);min-width:var(--kritzel-context-menu-min-width, 140px)}.menu-item-wrapper{position:relative}.menu-item{display:flex;align-items:center;gap:var(--kritzel-context-menu-item-gap, 8px);background:none;border:none;text-align:left;padding:var(--kritzel-context-menu-item-padding, 8px);border-radius:var(--kritzel-context-menu-item-border-radius, 12px);cursor:var(--kritzel-global-pointer-cursor, pointer);font-size:var(--kritzel-context-menu-item-font-size, 14px);color:var(--kritzel-context-menu-item-color, #333333);white-space:nowrap;-webkit-tap-highlight-color:transparent;width:100%;min-width:0}.menu-item:not(.disabled):hover,.menu-item.submenu-open{background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.menu-item:not(.disabled):active{background-color:var(--kritzel-context-menu-item-active-background-color, hsl(0, 0%, 0%, 8.6%))}.menu-item.disabled{color:var(--kritzel-context-menu-item-disabled-color, #aaaaaa)}.menu-item.has-children.disabled{cursor:var(--kritzel-global-pointer-cursor, pointer);color:var(--kritzel-context-menu-item-color, #333333)}.menu-item kritzel-icon{opacity:0.8;flex-shrink:0}.menu-item.disabled kritzel-icon{opacity:0.4}.menu-item.has-children.disabled kritzel-icon{opacity:0.8}.label{flex-grow:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.submenu-arrow{margin-left:auto;opacity:0.5}.menu-divider{height:1px;background-color:var(--kritzel-context-menu-divider-color, rgba(0, 0, 0, 0.1));margin:var(--kritzel-context-menu-divider-margin, 4px 8px)}.submenu-container{position:absolute;top:0;left:100%;z-index:2;margin-left:4px;display:flex;flex-direction:column;gap:var(--kritzel-context-menu-item-spacing, 2px);background-color:var(--kritzel-context-menu-background-color, #ffffff);border-radius:var(--kritzel-context-menu-border-radius, 12px);box-shadow:var(--kritzel-context-menu-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));border:var(--kritzel-context-menu-border, 1px solid #ebebeb);padding:var(--kritzel-context-menu-padding, 4px);min-width:120px}.submenu-container.position-left{left:auto;right:100%;margin-left:0;margin-right:4px}";class lt{static getToolConfig(t){switch(t?.toolType){case"selection":return"getToolConfig"in t&&"function"==typeof t.getToolConfig?t.getToolConfig():null;case"brush":return{type:"brush",colorProperty:"color",sizeProperty:"size",opacityProperty:"opacity",paletteSource:"palette",sizesSource:"sizes",controls:[{type:"stroke-size",propertyName:"size"}]};case"line":return{type:"line",colorProperty:"color",sizeProperty:"size",opacityProperty:"opacity",paletteSource:"palette",sizesSource:"sizes",controls:[{type:"stroke-size",propertyName:"size"},{type:"line-endings",propertyName:"arrows",additionalProps:{}}]};case"shape":return{type:"shape",colorProperty:"strokeColor",sizeProperty:"strokeWidth",opacityProperty:"opacity",paletteSource:"palette",sizesSource:"sizes",controls:[{type:"stroke-size",propertyName:"strokeWidth"},{type:"shape-fill",propertyName:"fillColor",additionalProps:{}}]};case"text":return{type:"text",colorProperty:"fontColor",sizeProperty:"fontSize",opacityProperty:"opacity",paletteSource:"palette",sizesSource:"sizes",controls:[{type:"font-size",propertyName:"fontSize",additionalProps:{}},{type:"font-family",propertyName:"fontFamily"}]};default:return null}}}const ct=class{constructor(e){t(this,e),this.isControlsReady=n(this,"isControlsReady")}get host(){return r(this)}visible=!0;controls=[];activeControl=null;isUtilityPanelVisible=!0;undoState=null;theme="light";isControlsReady;firstConfig=null;isTouchDevice=l.isTouchDevice();selectedSubOptions=new Map;canScrollLeft=!1;canScrollRight=!1;needsScrolling=!1;displayValues=null;internalControls=[];handleActiveToolChangeBound=this.handleActiveToolChange.bind(this);handleSelectionChangeBound=this.handleSelectionChange.bind(this);handleKeyDown(t){"Escape"===t.key&&(t.preventDefault(),this.closeTooltip(),this.kritzelEngine?.enable())}async handleActiveToolChange(t){this.activeControl=this.internalControls.find((e=>e.tool===t.detail))||null,this.activeControl?.tool&&this.updateDisplayValues(this.activeControl.tool),this.closeTooltip()}handleSelectionChange(){this.activeControl?.tool instanceof c&&this.updateDisplayValues(this.activeControl.tool)}async onControlsChange(){this.kritzelEngine&&await this.initializeTools()}onThemeChange(){this.activeControl?.tool&&this.updateDisplayValues(this.activeControl.tool)}async closeTooltip(){document.dispatchEvent(new CustomEvent("kritzelTooltipCloseAll"))}kritzelEngine=null;toolsScrollRef=null;configTriggerRef=null;get activeToolAsTextTool(){return this.activeControl?.tool}get activeToolAsBrushTool(){return this.activeControl?.tool}get activeToolAsLineTool(){return this.activeControl?.tool}get activeToolAsShapeTool(){return this.activeControl?.tool}handleDisplayValuesChange=t=>{const e=t.detail;this.displayValues&&this.displayValues.color===e.color&&this.displayValues.size===e.size&&this.displayValues.fontFamily===e.fontFamily||(this.displayValues=e)};updateDisplayValues(t){const e=lt.getToolConfig(t);if(!e)return void(this.displayValues=null);const i=t[e.sizeProperty],n={color:a.applyOpacity(t[e.colorProperty],t[e.opacityProperty]??1,this.theme),size:i};t instanceof h&&(n.fontFamily=t.fontFamily),this.displayValues&&this.displayValues.color===n.color&&this.displayValues.size===n.size&&this.displayValues.fontFamily===n.fontFamily||(this.displayValues=n)}async componentWillLoad(){await this.initializeEngine(),await this.initializeTools(),this.isControlsReady.emit()}componentDidLoad(){this.updateScrollIndicators()}componentDidRender(){this.updateScrollIndicators()}disconnectedCallback(){this.kritzelEngine&&(this.kritzelEngine.removeEventListener("activeToolChange",this.handleActiveToolChangeBound),this.kritzelEngine.removeEventListener("objectsSelectionChange",this.handleSelectionChangeBound))}updateScrollIndicators(){if(!this.toolsScrollRef)return;const{scrollLeft:t,scrollWidth:e,clientWidth:i}=this.toolsScrollRef,n=t>2,r=t+i<e-2,o=e>i;this.canScrollLeft!==n&&(this.canScrollLeft=n),this.canScrollRight!==r&&(this.canScrollRight=r),this.needsScrolling!==o&&(this.needsScrolling=o)}handleToolsScroll=()=>{this.updateScrollIndicators()};async initializeEngine(){if(await customElements.whenDefined("kritzel-engine"),this.kritzelEngine=this.host.parentElement.querySelector("kritzel-engine"),!this.kritzelEngine)throw new Error("kritzel-engine not found in parent element.");this.kritzelEngine.addEventListener("activeToolChange",this.handleActiveToolChangeBound),this.kritzelEngine.addEventListener("objectsSelectionChange",this.handleSelectionChangeBound)}async initializeTools(){let t=!1;const e=this.controls.map((t=>({...t})));for(const i of e){if("tool"===i.type&&i.tool){let t=i.tool;"function"!=typeof t&&(t=t.constructor);const e=await this.kritzelEngine.registerTool(i.name,t,i.config);e&&(i.tool=e)}"tool"===i.type&&i.isDefault&&i.tool&&(await this.kritzelEngine.changeActiveTool(i.tool),this.activeControl=i,this.updateDisplayValues(i.tool),t=!0),"config"===i.type&&(null===this.firstConfig?this.firstConfig=i:console.warn("Only one config control is allowed. The first one will be used."))}if(this.internalControls=e,!t){const t=this.internalControls.find((t=>"tool"===t.type&&t.tool));t&&(await this.kritzelEngine.changeActiveTool(t.tool),this.activeControl=t,this.updateDisplayValues(t.tool))}}async handleControlClick(t){this.activeControl=t,"tool"===this.activeControl.type&&(this.updateDisplayValues(this.activeControl.tool),await this.kritzelEngine.changeActiveTool(this.activeControl.tool))}async handleToolChange(t){this.activeControl={...this.activeControl,tool:t.detail},await this.kritzelEngine.changeActiveTool(this.activeControl.tool)}getSelectedSubOption(t){if(t.subOptions?.length)return this.selectedSubOptions.get(t.name)||t.subOptions[0]}async selectSubOption(t,e){const i=new Map(this.selectedSubOptions);i.set(t.name,e),this.selectedSubOptions=i,t.tool&&"function"!=typeof t.tool&&(t.tool[e.toolProperty]=e.value),this.closeTooltip(),await this.handleControlClick(t)}render(){const t=null!==(this.activeControl?.tool?lt.getToolConfig(this.activeControl.tool):null),n=this.internalControls.filter((t=>"tool"===t.type||"separator"===t.type)),r=this.internalControls.find((t=>"config"===t.type&&t.name===this.firstConfig?.name));return e(i,{key:"0f40a136a6a9556080d922d346318045794421a8",style:{display:this.visible?"":"none"},class:{mobile:this.isTouchDevice}},this.isUtilityPanelVisible&&e("kritzel-utility-panel",{key:"d543e7575cb30e54d9362eddf7c7221fb8cce5f5",style:{position:"absolute",bottom:"56px",left:"12px"},undoState:this.undoState,onUndo:()=>this.kritzelEngine?.undo(),onRedo:()=>this.kritzelEngine?.redo(),onDelete:()=>this.kritzelEngine?.delete()}),e("div",{key:"1083380152e9d1b51c35da335533c20ca2ca8fcc",class:"kritzel-controls"},e("div",{key:"11ef0fb76c30ffda0e30f01d43229ca2142a5854",class:{"scroll-indicator-left":!0,visible:this.canScrollLeft}}),e("div",{key:"269924a8859aece37ff31202307d4feaecbbde86",class:"kritzel-tools-scroll",ref:t=>this.toolsScrollRef=t,onScroll:this.handleToolsScroll},n.map((t=>{if(t.subOptions?.length){const i=this.getSelectedSubOption(t),n=this.activeControl?.name===t.name;return e("div",{class:{"kritzel-control-split":!0,selected:n},key:t.name,"data-testid":`tool-${t.name}`,ref:e=>{e&&(t._anchorRef=e)}},e("button",{class:"kritzel-control-main",onClick:()=>this.handleControlClick(t),"aria-label":i?.label,"data-testid":`tool-${t.name}-main`},e("kritzel-icon",{name:i?.icon||t.icon})),e("button",{class:{"kritzel-control-dropdown":!0,visible:n},ref:e=>{e&&(t._triggerRef=e)},"aria-label":`Select ${t.name} options`,"data-testid":`tool-${t.name}-dropdown`,tabIndex:n?0:-1},e("kritzel-icon",{name:"chevron-down",size:12})),e("kritzel-tooltip",{anchorElement:t._anchorRef,triggerElement:t._triggerRef},e("div",{class:"kritzel-submenu-content"},t.subOptions.map((n=>e("button",{class:{"kritzel-submenu-item":!0,active:n.id===i?.id},key:n.id,"data-testid":`suboption-${n.id}`,onClick:()=>this.selectSubOption(t,n)},e("kritzel-icon",{name:n.icon,size:20}),e("span",null,n.label)))))))}return"separator"===t.type?e("div",{class:"kritzel-control-separator",key:t.name}):e("button",{class:{"kritzel-control":!0,selected:this.activeControl?.name===t?.name},key:t.name,"data-testid":`tool-${t.name}`,onClick:()=>this.handleControlClick?.(t),"aria-label":t.name.charAt(0).toUpperCase()+t.name.slice(1)},e("kritzel-icon",{name:t.icon}))}))),e("div",{key:"8b97a5bba3ac4992482e8f433d7ba6197918a914",class:{"scroll-indicator-right":!0,visible:this.canScrollRight&&!(r&&this.activeControl&&t)}}),r&&this.activeControl&&e("div",{class:{"kritzel-config-container":!0,visible:t},key:r.name},e("div",{key:"d9adef8c2acc8d9b9d745174050ce78960b89b58",class:{"config-gradient-left":!0,visible:this.needsScrolling}}),e("kritzel-tooltip",{key:"7605bbd2b6335c89c57aa68952293f26efad6b4b",anchorElement:this.host.shadowRoot?.querySelector(".kritzel-config-container"),triggerElement:this.configTriggerRef},e("kritzel-tool-config",{key:"27b0f41442215e78b692fa44bb665444a4993b89",tool:this.activeControl.tool,theme:this.theme,engine:this.kritzelEngine,onToolChange:t=>this.handleToolChange?.(t),onDisplayValuesChange:this.handleDisplayValuesChange,style:{width:"100%",height:"100%"}})),e("div",{key:"1fb5979b1c531593acf5086861b22b7d78d03e8d",tabIndex:t?0:-1,class:"kritzel-config","data-testid":"tool-config",ref:t=>{t&&(this.configTriggerRef=t)},onKeyDown:t=>{"Enter"===t.key&&t.target.click()},style:{cursor:"pointer"}},this.displayValues&&e("div",{key:"3713ef344630f6b4d88df2e83992018859ddb18c",class:"color-container"},e("kritzel-color",{key:"c2679f68efae77c6daeb98be9e03d5320d51a73a",value:this.displayValues.color,theme:this.theme,size:18,style:{borderRadius:"50%",border:"none"}}))))))}static get assetsDirs(){return["../assets"]}static get watchers(){return{controls:[{onControlsChange:0}],theme:[{onThemeChange:0}]}}};ct.style=":host{display:flex;flex-direction:column;user-select:none;max-width:100%;z-index:1}:host(.mobile){--kritzel-controls-control-hover-background-color:transparent;--kritzel-controls-control-active-background-color:transparent}.kritzel-controls{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:var(--kritzel-controls-gap, 8px);height:100%;padding:var(--kritzel-controls-padding, 8px);background-color:var(--kritzel-controls-background-color, #ffffff);border-radius:var(--kritzel-controls-border-radius, 16px);box-shadow:var(--kritzel-controls-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-controls-border, 1px solid #ebebeb);z-index:1;position:relative;max-width:100%;overflow:hidden}.kritzel-tools-scroll{display:flex;flex-direction:row;align-items:center;gap:var(--kritzel-controls-gap, 8px);overflow-x:auto;overflow-y:hidden;flex:1 1 auto;min-width:0;padding:4px;margin:-4px;scrollbar-width:none;-ms-overflow-style:none}.kritzel-tools-scroll::-webkit-scrollbar{display:none}.scroll-indicator-left,.scroll-indicator-right{position:absolute;top:0;bottom:0;width:32px;pointer-events:none;opacity:0;transition:opacity 0.2s ease-out;z-index:1}.scroll-indicator-left{left:0;background:linear-gradient(to right, var(--kritzel-controls-background-color, #ffffff), transparent);border-radius:var(--kritzel-controls-border-radius, 16px) 0 0 var(--kritzel-controls-border-radius, 16px)}.scroll-indicator-right{right:0;background:linear-gradient(to left, var(--kritzel-controls-background-color, #ffffff), transparent);border-radius:0 var(--kritzel-controls-border-radius, 16px) var(--kritzel-controls-border-radius, 16px) 0}.scroll-indicator-left.visible,.scroll-indicator-right.visible{opacity:1}.kritzel-control{display:flex;justify-content:center;align-items:center;color:var(--kritzel-controls-control-color, #000000);border-radius:var(--kritzel-controls-control-border-radius, 12px);padding:var(--kritzel-controls-control-padding, 8px);border:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);-webkit-tap-highlight-color:transparent;font-weight:bold}.kritzel-control:focus,.kritzel-control:hover{background-color:var(--kritzel-controls-control-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.kritzel-control:active{background-color:var(--kritzel-controls-control-active-background-color, hsl(0, 0%, 0%, 8.6%))}.kritzel-control.selected,.kritzel-control.selected:hover,.kritzel-control.selected:active{background-color:var(--kritzel-controls-control-selected-background-color, #007AFF) !important;color:var(--kritzel-controls-control-selected-color, #ffffff) !important}.kritzel-control.selected:focus{background-color:var(--kritzel-controls-control-selected-background-color, #007bffe3) !important}.kritzel-control-separator{width:1px;height:24px;background-color:var(--kritzel-controls-separator-color, #ebebeb);margin:0 4px}.kritzel-control-split{position:relative;display:flex;align-items:center;border-radius:var(--kritzel-controls-control-border-radius, 12px);color:var(--kritzel-controls-control-color, #000000)}.kritzel-control-split .kritzel-control-main{display:flex;justify-content:center;align-items:center;padding:var(--kritzel-controls-control-padding, 8px);border:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);-webkit-tap-highlight-color:transparent;border-radius:var(--kritzel-controls-control-border-radius, 12px);color:inherit}.kritzel-control-split.selected .kritzel-control-main{border-radius:var(--kritzel-controls-control-border-radius, 12px) 0 0 var(--kritzel-controls-control-border-radius, 12px)}.kritzel-control-split .kritzel-control-dropdown{display:flex;justify-content:center;align-items:center;align-self:stretch;border:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);-webkit-tap-highlight-color:transparent;border-radius:0 var(--kritzel-controls-control-border-radius, 12px) var(--kritzel-controls-control-border-radius, 12px) 0;color:inherit;width:0;padding:0;opacity:0;overflow:hidden;pointer-events:none;transition:width 0.15s ease-out, padding 0.15s ease-out, opacity 0.15s ease-out}.kritzel-control-split .kritzel-control-dropdown.visible{width:auto;padding:0 6px;opacity:1;pointer-events:auto}.kritzel-control-split .kritzel-control-main:focus,.kritzel-control-split .kritzel-control-main:hover,.kritzel-control-split .kritzel-control-dropdown:focus,.kritzel-control-split .kritzel-control-dropdown:hover{background-color:var(--kritzel-controls-control-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.kritzel-control-split .kritzel-control-main:active,.kritzel-control-split .kritzel-control-dropdown:active{background-color:var(--kritzel-controls-control-active-background-color, hsl(0, 0%, 0%, 8.6%))}.kritzel-control-split.selected{background-color:var(--kritzel-controls-control-selected-background-color, #007AFF) !important;color:var(--kritzel-controls-control-selected-color, #ffffff) !important}.kritzel-control-split.selected .kritzel-control-main:hover,.kritzel-control-split.selected .kritzel-control-dropdown:hover{background-color:rgba(255, 255, 255, 0.15)}.kritzel-submenu-content{display:flex;flex-direction:column;gap:var(--kritzel-submenu-gap, 4px);min-width:140px}.kritzel-submenu-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);border-radius:8px;color:var(--kritzel-controls-control-color, #000000);font-size:14px;text-align:left;white-space:nowrap;-webkit-tap-highlight-color:transparent}.kritzel-submenu-item:hover{background-color:var(--kritzel-controls-control-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.kritzel-submenu-item.active{background-color:var(--kritzel-controls-control-selected-background-color, #007AFF);color:var(--kritzel-controls-control-selected-color, #ffffff)}.kritzel-submenu-item.active:hover{background-color:var(--kritzel-controls-control-selected-background-color, #007AFF)}.kritzel-config-container{position:relative;display:flex;justify-content:center;align-items:center;height:40px;box-sizing:border-box;-webkit-tap-highlight-color:transparent;flex-shrink:0;width:0;opacity:0;overflow:hidden;pointer-events:none;margin-left:calc(-1 * var(--kritzel-controls-gap, 8px));transition:width 0.2s ease-out, opacity 0.2s ease-out, margin-left 0.2s ease-out}.kritzel-config-container.visible{width:40px;opacity:1;pointer-events:auto;margin-left:0;overflow:visible}.config-gradient-left{position:absolute;top:0;bottom:0;left:-32px;width:32px;background:linear-gradient(to right, transparent, var(--kritzel-controls-background-color, #ffffff));pointer-events:none;z-index:1;opacity:0;transition:opacity 0.2s ease-out}.config-gradient-left.visible{opacity:1}.kritzel-config{display:flex;justify-content:center;align-items:center;cursor:var(--kritzel-global-pointer-cursor, pointer);border-radius:50%}.color-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.font-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.no-config{height:24px;width:24px;border-radius:50%;border:1px dashed gray}kritzel-tooltip{z-index:10001}";const ht=class{constructor(e){t(this,e)}get host(){return r(this)}user;avatarSize=40;dialogRef;handleAvatarClick=t=>{t.stopPropagation(),this.dialogRef?.open()};render(){return e(i,{key:"a735cb9f16f4898fde0b52573affa2d270a8f1de"},e("kritzel-avatar",{key:"d449a515182718ab4ef3b26b2277696bbc7ab46f",user:this.user,size:this.avatarSize,onClick:this.handleAvatarClick}),e("kritzel-current-user-dialog",{key:"3542f6df43c9924218e344f70bdc398c74a8eae6",ref:t=>this.dialogRef=t,user:this.user}))}};ht.style=":host{display:inline-flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}kritzel-avatar{cursor:var(--kritzel-global-pointer-cursor, pointer);border-radius:50%}";const ut=class{constructor(e){t(this,e)}get host(){return r(this)}user;isDialogOpen=!1;async open(){this.isDialogOpen=!0}async close(){this.isDialogOpen=!1}closeDialog=()=>{this.isDialogOpen=!1};getDisplayName(){if(this.user)return this.user.displayName??([this.user.firstName,this.user.lastName].filter(Boolean).join(" ")||void 0)}render(){const t=this.getDisplayName();return e(i,{key:"40c1a1bed0ddf02f9835199b5f7d2363e4d1902b"},e("kritzel-dialog",{key:"a83c09eac66ddf51155591a32245e3f15e34943e",dialogTitle:"Account",isOpen:this.isDialogOpen,onDialogClose:this.closeDialog,size:"small",contained:!0},e("div",{key:"14f7100a881ee3c5ba6b672d509bf3a9161ccd62",class:"user-info"},e("kritzel-avatar",{key:"e3552a80db81db4c26f81c6cc699363afa6153ea",user:this.user,size:80}),t&&e("div",{key:"c54164be605ac2bd2fc8bac6bb4481f820119028",class:"user-name"},t),this.user?.email&&e("div",{key:"e6af7c44e45443eb24be0777768de96b0e3d249e",class:"user-email"},this.user.email))))}};ut.style=":host{display:contents}kritzel-dialog{--kritzel-dialog-width-small:380px}.user-info{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0}.user-name{font-size:18px;font-weight:600;color:var(--kritzel-current-user-dialog-name-color, #333333);text-align:center;margin-top:8px}.user-email{font-size:14px;color:var(--kritzel-current-user-dialog-email-color, #666666);text-align:center}";const dt=class{constructor(e){t(this,e)}core;cursorTrailPoints=[];isLeftButtonDown=!1;handleMouseDown(t){"mouse"===t.pointerType&&t.button===u.Left&&(this.isLeftButtonDown=!0,this.cursorTrailPoints=[]),"touch"===t.pointerType&&1===this.core.store.state.pointers.size&&(this.isLeftButtonDown=!0,this.cursorTrailPoints=[])}handlePointerMove(t){if(!this.isLeftButtonDown)return;const e=[{x:t.clientX,y:t.clientY,timestamp:Date.now()},...this.cursorTrailPoints];this.cursorTrailPoints=e.length>this.MAX_TRAIL_POINTS?e.slice(0,this.MAX_TRAIL_POINTS):e}handlePointerUp(t){"mouse"===t.pointerType&&t.button===u.Left&&(this.isLeftButtonDown=!1,this.cursorTrailPoints=[]),"touch"===t.pointerType&&0===this.core.store.state.pointers.size&&(this.isLeftButtonDown=!1,this.cursorTrailPoints=[])}trailCleanupIntervalId;TRAIL_DURATION_MS=100;MAX_TRAIL_POINTS=50;componentDidLoad(){this.trailCleanupIntervalId=window.setInterval((()=>{const t=Date.now(),e=this.cursorTrailPoints.filter((e=>t-e.timestamp<this.TRAIL_DURATION_MS));e.length!==this.cursorTrailPoints.length&&(this.cursorTrailPoints=e)}),50)}disconnectedCallback(){this.trailCleanupIntervalId&&window.clearInterval(this.trailCleanupIntervalId)}render(){return e(i,{key:"b427550b19a3e172cb25d05e34635121b82a61c5"},this.cursorTrailPoints.length>1&&e("svg",{key:"9685b563497e110f36c0feffbfde04ebeb38024b",class:"cursor-trail-svg",xmlns:"http://www.w3.org/2000/svg",style:{position:"absolute",left:"0",top:"0",width:"100%",height:"100%",pointerEvents:"none",opacity:"var(--kritzel-cursor-trail-opacity, 0.6)",zIndex:"9000"}},this.cursorTrailPoints.slice(1).map(((t,i)=>{const n=this.cursorTrailPoints[i],r=Date.now(),o=Math.max(0,Math.min(1,(r-t.timestamp)/this.TRAIL_DURATION_MS));if(o>=1)return null;const s=Math.max(2,15*(1-o));return e("line",{key:`trail-segment-${t.timestamp}`,x1:n.x.toString(),y1:n.y.toString(),x2:t.x.toString(),y2:t.y.toString(),stroke:"var(--kritzel-cursor-trail-color, rgb(228, 228, 228))","stroke-width":s.toString(),"stroke-linecap":"round"})}))))}};dt.style=":host{display:block;position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:9000}";class ft{static getNumericValueFromStyle(t,e){const i=window.getComputedStyle(t).getPropertyValue(e);return parseFloat(i)||0}static getScrollableParent(t){if(!t)return window;const e=t.parentNode?.host??t.parentElement;if(!e||"BODY"===e.tagName)return window;const i=window.getComputedStyle(e);return"auto"===i.overflow||"auto"===i.overflowY||"scroll"===i.overflow||"scroll"===i.overflowY?e:this.getScrollableParent(e)}static isElementInViewport(t){if(!t)return!1;const e=this.getScrollableParent(t),i=t.getBoundingClientRect();if(e===window){const t=window.innerHeight||document.documentElement.clientHeight,e=window.innerWidth||document.documentElement.clientWidth;return i.top>=0&&i.left>=0&&i.bottom<=t&&i.right<=e}const n=e.getBoundingClientRect();return i.top>=n.top&&i.left>=n.left&&i.bottom<=n.bottom&&i.right<=n.right}static getFocusableElements(t){if(!t)return[];const e=[],i=t=>{t instanceof HTMLElement&&t.matches('a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), details, [tabindex]:not([tabindex="-1"])')&&!t.hasAttribute("disabled")&&(t=>{const e=window.getComputedStyle(t);return"none"!==e.display&&"hidden"!==e.visibility})(t)&&e.push(t),t.shadowRoot&&Array.from(t.shadowRoot.children).forEach(i),"SLOT"===t.tagName&&t.assignedElements({flatten:!0}).forEach(i),t.shadowRoot||Array.from(t.children).forEach(i)};return i(t),e}}const pt=class{constructor(e){t(this,e),this.dialogOpen=n(this,"dialogOpen"),this.dialogClose=n(this,"dialogClose")}get host(){return r(this)}isOpen=!1;dialogTitle;closable=!0;closeOnBackdrop=!0;closeOnEscape=!0;autoFocus=!0;trapFocus=!0;size="medium";fullscreenOnMobile=!0;contained=!1;isAnimating=!1;mobileLockedHeight=null;containerRect=null;containerBorderRadius=null;dialogOpen;dialogClose;previousOverflow="";previousActiveElement=null;visualViewportListenersAttached=!1;containerElement=null;containerResizeObserver=null;containerTrackingFrame=null;handleIsOpenChange(t){t?this.openDialog():this.closeDialog()}handleKeyDown(t){this.isOpen&&("Escape"===t.key&&this.closeOnEscape&&(t.preventDefault(),t.stopPropagation(),this.emitClose("escape")),"Tab"===t.key&&this.trapFocus&&this.handleTabKey(t))}handleWindowResize(){this.isOpen&&this.lockMobileViewportHeight()}handleOrientationChange(){this.isOpen&&requestAnimationFrame((()=>this.lockMobileViewportHeight()))}async open(){this.isOpen||(this.isOpen=!0)}async close(t="programmatic"){this.emitClose(t)}async focusFirstElement(){this.focusFirst()}componentDidLoad(){this.isOpen&&this.openDialog()}disconnectedCallback(){this.removeVisualViewportListeners(),this.stopContainerTracking(),this.restoreBodyScroll()}openDialog(){this.isAnimating=!0,this.previousActiveElement=document.activeElement,this.contained?this.startContainerTracking():(this.lockBodyScroll(),this.addVisualViewportListeners()),this.lockMobileViewportHeight(),this.dialogOpen.emit(),this.autoFocus&&requestAnimationFrame((()=>{this.focusFirst()})),requestAnimationFrame((()=>{this.isAnimating=!1}))}closeDialog(){this.restoreBodyScroll(),this.removeVisualViewportListeners(),this.stopContainerTracking(),this.mobileLockedHeight=null,this.returnFocusToPreviousElement()}findContainerElement(){let t=this.host;for(;t;){if(t instanceof HTMLElement&&(t.hasAttribute("data-kritzel-dialog-container")||"KRITZEL-EDITOR"===t.tagName))return t;t=t.parentNode||(t instanceof ShadowRoot?t.host:null)}return null}startContainerTracking(){this.containerElement=this.findContainerElement(),this.containerElement?(this.updateContainerRect(),"undefined"!=typeof ResizeObserver&&(this.containerResizeObserver=new ResizeObserver((()=>this.updateContainerRect())),this.containerResizeObserver.observe(this.containerElement)),window.addEventListener("resize",this.handleContainerTrackingEvent,{passive:!0}),window.addEventListener("scroll",this.handleContainerTrackingEvent,{capture:!0,passive:!0})):this.containerRect=null}stopContainerTracking(){this.containerResizeObserver&&(this.containerResizeObserver.disconnect(),this.containerResizeObserver=null),window.removeEventListener("resize",this.handleContainerTrackingEvent),window.removeEventListener("scroll",this.handleContainerTrackingEvent,{capture:!0}),null!==this.containerTrackingFrame&&(cancelAnimationFrame(this.containerTrackingFrame),this.containerTrackingFrame=null),this.containerElement=null,this.containerRect=null,this.containerBorderRadius=null}handleContainerTrackingEvent=()=>{null===this.containerTrackingFrame&&(this.containerTrackingFrame=requestAnimationFrame((()=>{this.containerTrackingFrame=null,this.updateContainerRect()})))};updateContainerRect(){if(!this.containerElement)return;const t=this.containerElement.getBoundingClientRect(),e={top:t.top,left:t.left,width:t.width,height:t.height},i=this.containerRect;i&&i.top===e.top&&i.left===e.left&&i.width===e.width&&i.height===e.height||(this.containerRect=e);const n=this.findVisualBorderRadius(this.containerElement);this.containerBorderRadius!==n&&(this.containerBorderRadius=n)}findVisualBorderRadius(t){let e=t;for(;e&&e!==document.body&&e!==document.documentElement;){const t=window.getComputedStyle(e),i=t.borderTopLeftRadius,n=t.borderTopRightRadius,r=t.borderBottomRightRadius,o=t.borderBottomLeftRadius,s=t=>!t||"0px"===t||"0%"===t;if(!(s(i)&&s(n)&&s(r)&&s(o)))return`${i} ${n} ${r} ${o}`;e=e.parentElement}return null}emitClose(t){this.dialogClose.emit({reason:t})}lockBodyScroll(){this.previousOverflow=document.body.style.overflow,document.body.style.overflow="hidden"}lockMobileViewportHeight(){if(this.contained)return void(this.mobileLockedHeight=null);const t=this.getViewportWidth(),e=this.getViewportHeight();this.mobileLockedHeight=!this.fullscreenOnMobile||Math.min(t,e)>576?null:`${e}px`}getViewportWidth(){return Math.round(window.visualViewport?.width??window.innerWidth)}getViewportHeight(){return Math.round(window.visualViewport?.height??window.innerHeight)}addVisualViewportListeners(){const t=window.visualViewport;t&&!this.visualViewportListenersAttached&&(t.addEventListener("resize",this.handleVisualViewportChange),t.addEventListener("scroll",this.handleVisualViewportChange),this.visualViewportListenersAttached=!0)}removeVisualViewportListeners(){const t=window.visualViewport;t&&this.visualViewportListenersAttached&&(t.removeEventListener("resize",this.handleVisualViewportChange),t.removeEventListener("scroll",this.handleVisualViewportChange),this.visualViewportListenersAttached=!1)}handleVisualViewportChange=()=>{this.isOpen&&this.lockMobileViewportHeight()};restoreBodyScroll(){document.body.style.overflow=this.previousOverflow}returnFocusToPreviousElement(){this.previousActiveElement?.focus&&this.previousActiveElement.focus()}focusFirst(){const t=this.host.shadowRoot?.querySelector(".dialog-content");if(!t)return;const e=[...ft.getFocusableElements(t),...this.getSlottedFocusableElements()];e.length>0?e[0].focus():t.focus()}getSlottedFocusableElements(){const t=this.host.shadowRoot?.querySelectorAll("slot")??[],e=[];return t.forEach((t=>{t.assignedElements({flatten:!0}).forEach((t=>{const i=ft.getFocusableElements(t);e.push(...i)}))})),e}handleTabKey(t){const e=this.getSlottedFocusableElements(),i=this.host.shadowRoot?.querySelector(".close-button");if(i&&this.closable&&e.unshift(i),0===e.length)return;const n=e[0],r=e[e.length-1],o=this.getDeepActiveElement();t.shiftKey?o===n&&(t.preventDefault(),r.focus()):o===r&&(t.preventDefault(),n.focus())}getDeepActiveElement(){let t=document.activeElement;for(;t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;return t}handleBackdropClick=t=>{t.stopPropagation(),this.closeOnBackdrop&&this.emitClose("backdrop")};handleCloseButtonClick=t=>{t.stopPropagation(),this.emitClose("close-button")};handleContentClick=t=>{t.stopPropagation()};renderCloseButton(){return this.closable?e("button",{class:"close-button",type:"button","aria-label":"Close dialog",onClick:this.handleCloseButtonClick},e("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},e("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e("line",{x1:"6",y1:"6",x2:"18",y2:"18"}))):null}renderHeader(){const t=null!==this.host.querySelector('[slot="header"]'),i=!!this.dialogTitle;return t||i||this.closable?e("div",{class:"dialog-header"},t?e("slot",{name:"header"}):i?e("h2",{class:"dialog-title"},this.dialogTitle):null,this.renderCloseButton()):null}renderFooter(){return null!==this.host.querySelector('[slot="footer"]')?e("div",{class:"dialog-footer"},e("slot",{name:"footer"})):null}getBackdropStyle(){if(!this.contained||!this.containerRect)return;const{top:t,left:e,width:i,height:n}=this.containerRect,r={top:`${t}px`,left:`${e}px`,right:"auto",bottom:"auto",width:`${i}px`,height:`${n}px`};return this.containerBorderRadius&&(r.borderRadius=this.containerBorderRadius,r.overflow="hidden"),r}getDialogContentStyle(){const t={};if(this.contained&&this.containerRect){const{width:e,height:i}=this.containerRect;if(this.isContainerMobile())t.width=`${e}px`,t.height=`${i}px`,t.maxWidth=`${e}px`,t.maxHeight=`${i}px`,t.borderRadius="0";else{const n=Math.max(0,e-32),r=Math.max(0,i-32);t.maxWidth=`${n}px`,t.maxHeight=`${r}px`}}return this.mobileLockedHeight&&(t.height=this.mobileLockedHeight,t.maxHeight=this.mobileLockedHeight),Object.keys(t).length>0?t:void 0}isContainerMobile(){return!(!this.fullscreenOnMobile||!this.containerRect)&&Math.min(this.containerRect.width,this.containerRect.height)<=576}render(){if(!this.isOpen)return null;const t=this.contained&&this.isContainerMobile();return e(i,null,e("div",{class:{backdrop:!0,"is-animating":this.isAnimating,"contained-fullscreen":t},style:this.getBackdropStyle(),onClick:this.handleBackdropClick},e("div",{class:{"dialog-content":!0,"is-animating":this.isAnimating,[`size-${this.size}`]:!0,"fullscreen-on-mobile":this.fullscreenOnMobile,"contained-fullscreen":t},style:this.getDialogContentStyle(),role:"dialog","aria-modal":"true","aria-labelledby":this.dialogTitle?"dialog-title":void 0,tabIndex:-1,onClick:this.handleContentClick},this.renderHeader(),e("div",{class:"dialog-body"},e("slot",null)),this.renderFooter())))}static get watchers(){return{isOpen:[{handleIsOpenChange:0}]}}};pt.style=":host{display:contents}.dialog-content{text-align:start;line-height:normal}.backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10002;display:flex;align-items:center;justify-content:center;background-color:var(--kritzel-dialog-backdrop-color, rgba(0, 0, 0, 0.5));opacity:1;transition:opacity 150ms ease-out}.backdrop.is-animating{opacity:0}.dialog-content{position:relative;display:flex;flex-direction:column;background-color:var(--kritzel-dialog-background-color, #ffffff);border-radius:var(--kritzel-dialog-border-radius, 12px);box-shadow:var(--kritzel-dialog-box-shadow, 0 4px 20px rgba(0, 0, 0, 0.15));border:var(--kritzel-dialog-border, 1px solid #ebebeb);max-height:var(--kritzel-dialog-max-height, 90vh);max-width:var(--kritzel-dialog-max-width, 90vw);overflow:hidden;transform:scale(1);opacity:1;transition:transform 200ms ease-out, opacity 200ms ease-out;font-family:var(--kritzel-dialog-font-family, sans-serif)}.dialog-content.is-animating{transform:scale(0.95);opacity:0}.dialog-content.size-small{width:var(--kritzel-dialog-width-small, 320px);height:var(--kritzel-dialog-height-small, auto)}.dialog-content.size-medium{width:var(--kritzel-dialog-width-medium, 480px);height:var(--kritzel-dialog-height-medium, auto)}.dialog-content.size-large{width:var(--kritzel-dialog-width-large, 640px);height:var(--kritzel-dialog-height-large, auto)}.dialog-content.size-fullscreen{width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:0}.backdrop.contained-fullscreen{background-color:transparent}.dialog-content.contained-fullscreen{border-radius:0}.dialog-content.contained-fullscreen .dialog-body{display:flex;flex-direction:column}.dialog-content.contained-fullscreen .dialog-body ::slotted(*){flex:1;min-height:0}@media (max-width: 576px), (max-height: 576px) and (orientation: landscape){.backdrop:has(.fullscreen-on-mobile){background-color:transparent}.dialog-content.fullscreen-on-mobile{width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:0}.dialog-content.fullscreen-on-mobile .dialog-body{display:flex;flex-direction:column}.dialog-content.fullscreen-on-mobile .dialog-body ::slotted(*){flex:1;min-height:0}}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:var(--kritzel-dialog-header-padding, 16px 20px);border-bottom:var(--kritzel-dialog-header-border, 1px solid #ebebeb);gap:12px}.dialog-title{margin:0;font-size:var(--kritzel-dialog-title-font-size, 18px);font-weight:var(--kritzel-dialog-title-font-weight, 600);color:var(--kritzel-dialog-title-color, #1a1a1a);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.close-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:var(--kritzel-dialog-close-button-border-radius, 6px);background-color:var(--kritzel-dialog-close-button-background, transparent);color:var(--kritzel-dialog-close-button-color, #666666);cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 150ms ease, color 150ms ease;flex-shrink:0;-webkit-tap-highlight-color:transparent}.close-button:hover{background-color:var(--kritzel-dialog-close-button-hover-background, #f5f5f5);color:var(--kritzel-dialog-close-button-hover-color, #1a1a1a)}.close-button:active{background-color:var(--kritzel-dialog-close-button-active-background, #ebebeb)}.close-button:focus-visible{outline:revert;outline-offset:revert}.dialog-body{padding:var(--kritzel-dialog-body-padding, 20px);overflow-y:auto;flex:1;min-height:0;scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}.dialog-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--kritzel-dialog-footer-gap, 8px);padding:var(--kritzel-dialog-footer-padding, 16px 20px);border-top:var(--kritzel-dialog-footer-border, 1px solid #ebebeb)}::slotted([slot='header']){flex:1}::slotted([slot='footer']){display:contents}";const bt=class{constructor(e){t(this,e),this.valueChanged=n(this,"valueChanged")}get el(){return r(this)}options=[];optionsChanged(){this.updateInternalValue(this.internalValue,!0)}value;externalValueChanged(t){t!==this.internalValue&&this.updateInternalValue(t,!1)}width;selectStyles={};forceOpenDirection;internalValue;hasSuffixContent=!1;hasPrefixContent=!1;isOpen=!1;focusedIndex=-1;openDirection="down";valueChanged;suffixSlotElement;prefixSlotElement;triggerElement;menuElement;wrapperElement;componentWillLoad(){this.updateInternalValue(this.value,!1),this.evaluateSuffixContent(),this.evaluatePrefixContent()}disconnectedCallback(){this.isOpen&&(this.isOpen=!1)}handleDocumentClick(t){this.isOpen&&!this.el.contains(t.target)&&this.closeMenu()}handleDocumentKeydown(t){this.isOpen&&"Escape"===t.key&&(t.stopPropagation(),t.preventDefault(),this.closeMenu(),this.triggerElement?.focus())}updateInternalValue(t,e){let i=t;!i&&this.options&&this.options.length>0?i=this.options[0].value:i||(i=void 0),this.internalValue!==i&&(this.internalValue=i,(e||t!==i&&void 0!==t)&&this.valueChanged.emit(this.internalValue))}toggleMenu=()=>{this.isOpen?this.closeMenu():this.openMenu()};openMenu=()=>{this.calculateMenuDirection(),this.isOpen=!0;const t=this.options.findIndex((t=>t.value===this.internalValue));this.focusedIndex=t>=0?t:0,requestAnimationFrame((()=>{this.menuElement?.focus()}))};calculateMenuDirection=()=>{if(this.forceOpenDirection)return void(this.openDirection=this.forceOpenDirection);if(!this.wrapperElement)return void(this.openDirection="down");const t=this.wrapperElement.getBoundingClientRect(),e=window.innerHeight-t.bottom,i=t.top,n=Math.min(240,36*this.options.length+8);this.openDirection=e<n&&i>e?"up":"down"};closeMenu=()=>{this.isOpen=!1,this.focusedIndex=-1};selectOption=t=>{this.internalValue!==t.value&&(this.internalValue=t.value,this.valueChanged.emit(this.internalValue)),this.closeMenu(),this.triggerElement?.focus()};handleTriggerKeyDown=t=>{switch(t.key){case"Enter":case" ":case"ArrowDown":case"ArrowUp":t.preventDefault(),this.openMenu()}};handleMenuKeyDown=t=>{switch(t.key){case"ArrowDown":t.preventDefault(),this.focusedIndex=Math.min(this.focusedIndex+1,this.options.length-1),this.scrollFocusedOptionIntoView();break;case"ArrowUp":t.preventDefault(),this.focusedIndex=Math.max(this.focusedIndex-1,0),this.scrollFocusedOptionIntoView();break;case"Enter":case" ":t.preventDefault(),this.focusedIndex>=0&&this.focusedIndex<this.options.length&&this.selectOption(this.options[this.focusedIndex]);break;case"Home":t.preventDefault(),this.focusedIndex=0,this.scrollFocusedOptionIntoView();break;case"End":t.preventDefault(),this.focusedIndex=this.options.length-1,this.scrollFocusedOptionIntoView();break;case"Tab":this.closeMenu()}};scrollFocusedOptionIntoView=()=>{!this.menuElement||this.focusedIndex<0||requestAnimationFrame((()=>{const t=this.menuElement?.querySelector(".dropdown-option.is-focused");t&&t.scrollIntoView({block:"nearest",behavior:"smooth"})}))};handleOptionMouseEnter=t=>{this.focusedIndex=t};evaluateSuffixContent=()=>{if(this.suffixSlotElement){const t=this.suffixSlotElement.assignedNodes({flatten:!0}).length>0;this.hasSuffixContent!==t&&(this.hasSuffixContent=t)}else!1!==this.hasSuffixContent&&(this.hasSuffixContent=!1)};evaluatePrefixContent=()=>{if(this.prefixSlotElement){const t=this.prefixSlotElement.assignedNodes({flatten:!0}).length>0;this.hasPrefixContent!==t&&(this.hasPrefixContent=t)}else!1!==this.hasPrefixContent&&(this.hasPrefixContent=!1)};getSelectedLabel(){const t=this.options.find((t=>t.value===this.internalValue));return t?.label??""}getSelectedStyle(){const t=this.options.find((t=>t.value===this.internalValue));return t?.style}render(){const t={"dropdown-trigger":!0,"has-suffix-border":this.hasSuffixContent,"has-prefix-border":this.hasPrefixContent,"is-open":this.isOpen,"open-up":"up"===this.openDirection},n={"dropdown-menu":!0,"is-open":this.isOpen,"open-up":"up"===this.openDirection,"open-down":"down"===this.openDirection};return e(i,{key:"c606b338e55dc66396105fa7b4fbdf372f3866e6"},e("div",{key:"aa32b73cac337fa4142ecc124cf039a59e3b3118",class:"dropdown-wrapper",ref:t=>this.wrapperElement=t},e("slot",{key:"2cd8e9ef246a24c49d58f76f227f36aed4786178",name:"prefix",ref:t=>this.prefixSlotElement=t,onSlotchange:this.evaluatePrefixContent}),e("div",{key:"80df8155e1907017d508e92f155bab5ae12dffab",class:"dropdown-container",style:{width:this.width}},e("button",{key:"d86463de7ec58248f1611d6b5d46f0eafc117f36",type:"button",class:t,style:{...this.selectStyles,...this.getSelectedStyle()},onClick:this.toggleMenu,onKeyDown:this.handleTriggerKeyDown,"aria-haspopup":"listbox","aria-expanded":this.isOpen?"true":"false",ref:t=>this.triggerElement=t},e("span",{key:"4ef6a997f7a781fb409e97ed5bd6843d0eaff0bb",class:"dropdown-trigger-label"},this.getSelectedLabel()),e("span",{key:"6601efcd69d84af1f022d14ede628bac743cc1f1",class:"dropdown-trigger-arrow","aria-hidden":"true"},e("svg",{key:"6cb2efe7b4ca890562c10b0e24eb1dfdad90ec24",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},e("polyline",{key:"a340af5a61dccf5bc29c8a473726b58055c2e9db",points:"6 9 12 15 18 9"}))))),e("slot",{key:"5bd4e5ad4cc4642c7769ecac2106ba82bae626f2",name:"suffix",ref:t=>this.suffixSlotElement=t,onSlotchange:this.evaluateSuffixContent}),e("ul",{key:"e7a2be8ac261bc5fa1450940e2a57090d6be3315",class:n,role:"listbox",tabindex:"-1",onKeyDown:this.handleMenuKeyDown,ref:t=>this.menuElement=t},this.options.map(((t,i)=>{const n=t.value===this.internalValue;return e("li",{class:{"dropdown-option":!0,"is-selected":n,"is-focused":i===this.focusedIndex},role:"option","aria-selected":n?"true":"false",style:t.style,onClick:()=>this.selectOption(t),onMouseEnter:()=>this.handleOptionMouseEnter(i)},t.label,n&&e("span",{class:"dropdown-option-check","aria-hidden":"true"},e("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},e("polyline",{points:"20 6 9 17 4 12"}))))})))))}static get watchers(){return{options:[{optionsChanged:0}],value:[{externalValueChanged:0}]}}};bt.style=":host{display:inline-flex;vertical-align:middle;width:100%;position:relative}.dropdown-wrapper{display:flex;align-items:center;border:1px solid var(--kritzel-dropdown-border-color, #ebebeb);border-radius:var(--kritzel-dropdown-border-radius, 6px);overflow:visible;height:38px;width:100%;position:relative}.dropdown-wrapper:hover:not(:focus-within){border-color:var(--kritzel-dropdown-hover-border-color, #cccccc)}.dropdown-container{flex:1;height:100%;min-width:0}.dropdown-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 8px;height:100%;width:100%;box-sizing:border-box;border-radius:var(--kritzel-dropdown-border-radius, 6px);border:none;background-color:var(--kritzel-dropdown-background, #ffffff);cursor:var(--kritzel-global-pointer-cursor, pointer);outline:none;font-size:inherit;font-family:inherit;color:var(--kritzel-dropdown-text-color, #333333);-webkit-tap-highlight-color:transparent;text-align:left}.dropdown-trigger:focus-visible{outline:revert}.dropdown-trigger.has-suffix-border{border-right:1px solid var(--kritzel-global-border-color, #ebebeb);border-top-right-radius:0;border-bottom-right-radius:0}.dropdown-trigger.has-prefix-border{border-left:1px solid var(--kritzel-global-border-color, #ebebeb);border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-trigger-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.dropdown-trigger-arrow{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;transition:transform 0.2s ease}.dropdown-trigger-arrow svg{width:100%;height:100%}.dropdown-trigger.is-open .dropdown-trigger-arrow{transform:rotate(180deg)}.dropdown-trigger.is-open.open-up .dropdown-trigger-arrow{transform:rotate(0deg)}.dropdown-menu{position:absolute;left:0;right:0;margin:0;padding:4px 0;list-style:none;background-color:var(--kritzel-dropdown-background, #ffffff);border:1px solid var(--kritzel-global-border-color, #ebebeb);border-radius:var(--kritzel-dropdown-menu-border-radius, var(--kritzel-dropdown-border-radius, 6px));box-shadow:var(--kritzel-controls-box-shadow, 0 4px 12px rgba(0, 0, 0, 0.15));z-index:1000;max-height:240px;overflow-y:auto;opacity:0;visibility:hidden;transition:opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;outline:none}.dropdown-menu.open-down{top:calc(100% + 4px);bottom:auto;transform:translateY(-8px)}.dropdown-menu.open-up{bottom:calc(100% + 4px);top:auto;transform:translateY(8px)}.dropdown-menu.is-open{opacity:1;visibility:inherit;transform:translateY(0)}.dropdown-menu.open-up{box-shadow:var(--kritzel-controls-box-shadow, 0 -4px 12px rgba(0, 0, 0, 0.15))}.dropdown-option{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;cursor:var(--kritzel-global-pointer-cursor, pointer);color:var(--kritzel-dropdown-text-color, #333333);transition:background-color 0.1s ease;-webkit-tap-highlight-color:transparent}.dropdown-option.is-focused{background-color:var(--kritzel-dropdown-hover-background-color, #f0f0f0)}.dropdown-option.is-selected{font-weight:600;background-color:var(--kritzel-dropdown-selected-background-color, #007bff1a)}.dropdown-option-check{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;color:var(--kritzel-dropdown-accent-color, #007bff)}.dropdown-option-check svg{width:100%;height:100%}.dropdown-menu{scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}::slotted(*){height:100%;box-sizing:border-box}";const gt={shapeType:p.Rectangle,fillColor:{light:"transparent",dark:"transparent"},strokeColor:f[0],strokeWidth:4,opacity:1,fontColor:f[0],fontSize:16,fontFamily:"Arial",palette:[...f],sizes:[...d]},vt=1e3,kt=1e-4,mt={providers:[]},yt=class{constructor(e){t(this,e),this.isReady=n(this,"isReady"),this.activeWorkspaceChange=n(this,"activeWorkspaceChange"),this.objectsChange=n(this,"objectsChange"),this.objectsAdded=n(this,"objectsAdded"),this.objectsRemoved=n(this,"objectsRemoved"),this.objectsUpdated=n(this,"objectsUpdated"),this.undoStateChange=n(this,"undoStateChange"),this.themeChange=n(this,"themeChange"),this.viewportChange=n(this,"viewportChange"),this.logout=n(this,"logout"),this.login=n(this,"login"),this.isPublicChange=n(this,"isPublicChange"),this.awarenessChange=n(this,"awarenessChange")}get host(){return r(this)}scaleMax=vt;scaleMin=kt;lockDrawingScale=!0;viewportBoundaryLeft=-1/0;viewportBoundaryRight=1/0;viewportBoundaryTop=-1/0;viewportBoundaryBottom=1/0;wheelEnabled=!0;debugInfo={showViewportInfo:!1,showObjectInfo:!1,showSyncProviderInfo:!0,showMigrationInfo:!0};user;activeUsers;controls=[{name:"selection",type:"tool",isDefault:!0,tool:c,icon:"cursor"},{name:"brush",type:"tool",tool:g,icon:"pen",config:b},{name:"eraser",type:"tool",tool:v,icon:"eraser"},{name:"line",type:"tool",tool:m,icon:"arrow",config:k},{name:"shape",type:"tool",tool:y,icon:"shape-rectangle",config:gt,subOptions:[{id:"rectangle",icon:"shape-rectangle",label:"Rectangle",value:p.Rectangle,toolProperty:"shapeType"},{id:"ellipse",icon:"shape-ellipse",label:"Ellipse",value:p.Ellipse,toolProperty:"shapeType"},{id:"triangle",icon:"shape-triangle",label:"Triangle",value:p.Triangle,toolProperty:"shapeType"}]},{name:"text",type:"tool",tool:h,icon:"type",config:w},{name:"image",type:"tool",tool:x,icon:"image"},{name:"config",type:"config"}];globalContextMenuItems=[{label:"Paste",icon:"paste",disabled:async()=>0===(await this.engineRef.getCopiedObjects()).length,action:t=>this.engineRef.paste(t.x,t.y)},{label:"Select All",icon:"select-all",disabled:async()=>0===(await this.engineRef.getObjectsInViewport()).length,action:()=>this.selectAllObjectsInViewport()}];objectContextMenuItems=[{label:"Copy",icon:"copy",group:"clipboard",action:()=>this.engineRef.copy()},{label:"Cut",icon:"cut",group:"clipboard",action:()=>this.engineRef.cut()},{label:"Paste",icon:"paste",group:"clipboard",disabled:async()=>0===(await this.engineRef.getCopiedObjects()).length,action:t=>this.engineRef.paste(t.x,t.y)},{label:"Order",icon:"ordering",group:"other",children:[{label:"Bring to Front",icon:"bring-to-front",action:()=>this.engineRef.bringToFront()},{label:"Send to Back",icon:"send-to-back",action:()=>this.engineRef.sendToBack()},{label:"Move Up",icon:"arrow-up-from-dot",action:()=>this.engineRef.bringForward()},{label:"Move Down",icon:"arrow-down-from-dot",action:()=>this.engineRef.sendBackward()}]},{label:"Align",icon:"align",group:"other",disabled:async()=>(await this.engineRef.getSelectedObjects()).length<2,children:[{label:"Align Left",icon:"align-start-vertical",action:()=>this.engineRef.alignObjects(z.StartHorizontal)},{label:"Align Center Horizontally",icon:"align-center-horizontal",action:()=>this.engineRef.alignObjects(z.CenterHorizontal)},{label:"Align Right",icon:"align-end-vertical",action:()=>this.engineRef.alignObjects(z.EndHorizontal)},{label:"Align Top",icon:"align-start-horizontal",action:()=>this.engineRef.alignObjects(z.StartVertical)},{label:"Align Center Vertically",icon:"align-center-vertical",action:()=>this.engineRef.alignObjects(z.CenterVertical)},{label:"Align Bottom",icon:"align-end-horizontal",action:()=>this.engineRef.alignObjects(z.EndVertical)}]},{label:"Group",icon:"group",group:"other",children:[{label:"Group",icon:"group",disabled:async()=>(await this.engineRef.getSelectedObjects()).length<2,action:()=>this.engineRef.group()},{label:"Ungroup",icon:"ungroup",disabled:async()=>!(await this.engineRef.getSelectedObjects()).some((t=>"KritzelGroup"===t.__class__)),action:()=>this.engineRef.ungroup()}]},{label:"Export",icon:"download",group:"export",children:[{label:"Export as SVG",icon:"download",action:()=>this.engineRef.exportSelectedObjectsAsSvg()},{label:"Export as PNG",icon:"download",action:()=>this.engineRef.exportSelectedObjectsAsPng()}]},{label:"Delete",icon:"delete",group:"edit",action:()=>this.engineRef.delete()}];themes;theme="light";customSvgIcons={};isControlsVisible=!0;isUtilityPanelVisible=!0;isWorkspaceManagerVisible=!0;isMoreMenuVisible=!0;isObjectDistanceFadingActive=!1;syncConfig=mt;assetStorageConfig=C;cursorTarget;loginConfig;isLoading=!1;editorId;activeWorkspaceId;isReady;activeWorkspaceChange;objectsChange;objectsAdded;objectsRemoved;objectsUpdated;undoStateChange;themeChange;viewportChange;logout;login;isPublicChange;awarenessChange;isEngineReady=!1;isControlsReady=!1;isWorkspaceManagerReady=!1;workspaces=[];activeWorkspace;isVirtualKeyboardOpen=!1;undoState=null;isBackToContentButtonVisible=!1;shortcuts=[];currentIsPublic=!1;isEditorVisible=!1;onIsEngineReady(t){t&&this.isControlsReady&&this.checkIsReady()}onIsControlsReady(t){t&&this.isEngineReady&&this.checkIsReady()}onWorkspacesChange(t){const e=this.activeWorkspace;if(e){const i=t.find((t=>t.id===e.id));i&&i!==e&&(this.activeWorkspace=i)}if(this.activeWorkspaceId){const e=t.find((t=>t.id===this.activeWorkspaceId));e&&e!==this.activeWorkspace&&(this.activeWorkspace=e)}}onActiveWorkspaceChange(){this.updateCurrentIsPublic()}onActiveWorkspaceIdChange(t){if(!t)return;if(0===this.workspaces.length)return;const e=this.workspaces.find((e=>e.id===t));e?e!==this.activeWorkspace&&(this.activeWorkspace=e):console.warn(`[KritzelEditor] No workspace found with ID: ${t}`)}onCurrentThemeChange(){this.applyTheme(),setTimeout((()=>this.setOsSpecificCssVariables()),0),this.engineRef&&this.engineRef.saveSettings(this.currentSettingsConfig)}onThemesChange(){this.applyTheme()}onTouchStart(t){t.cancelable&&t.preventDefault()}async getObjectById(t){return this.engineRef.getObjectById(t)}async addObject(t){return this.engineRef.addObject(t)}async addObjects(t){return this.engineRef.addObjects(t)}async updateObject(t,e){return this.engineRef.updateObject(t,e)}async removeObject(t){return this.engineRef.removeObject(t)}async removeObjects(t){return this.engineRef.removeObjects(t)}async getSelectedObjects(){return this.engineRef.getSelectedObjects()}async selectObjects(t){return this.engineRef.selectObjects(t)}async selectAllObjectsInViewport(){return this.engineRef.selectAllObjectsInViewport()}async clearSelection(){this.engineRef.clearSelection()}async centerObjectInViewport(t){return this.engineRef.centerObjectInViewport(t)}async panToObject(t){return this.engineRef.panToObject(t)}async backToContent(){return this.engineRef.backToContent()}async centerAllObjects(t=!0){return this.engineRef.centerAllObjects(t)}async centerObjects(t,e=!0){return this.engineRef.centerObjects(t,e)}async setViewport(t,e,i){return this.engineRef.setViewport(t,e,i)}async panTo(t,e){return this.engineRef.panTo(t,e)}async zoomTo(t,e,i){return this.engineRef.zoomTo(t,e,i)}async zoomIn(t=1.6,e=200){return this.engineRef.zoomIn(t,e)}async zoomOut(t=1.6,e=200){return this.engineRef.zoomOut(t,e)}async getViewport(){return this.engineRef.getViewport()}async screenToWorld(t,e){return this.engineRef.screenToWorld(t,e)}async worldToScreen(t,e){return this.engineRef.worldToScreen(t,e)}async createWorkspace(t){return this.engineRef.createWorkspace(t)}async updateWorkspace(t){return this.engineRef.updateWorkspace(t)}async deleteWorkspace(t){return this.engineRef.deleteWorkspace(t)}async getWorkspaces(){return this.engineRef.getWorkspaces()}async getActiveWorkspace(){return this.engineRef.getActiveWorkspace()}async loadSharedWorkspace(t){return this.engineRef.loadSharedWorkspace(t)}async reinitSync(){return this.engineRef.reinitSync()}async registerTool(t,e,i){return this.engineRef.registerTool(t,e,i)}async changeActiveTool(t){return this.engineRef.changeActiveTool(t)}async changeActiveToolByName(t){return this.engineRef.changeActiveToolByName(t)}async disable(){return this.engineRef.disable()}async enable(){return this.engineRef.enable()}async copy(){return this.engineRef.copy()}async cut(){return this.engineRef.cut()}async paste(t,e){return this.engineRef.paste(t,e)}async delete(){return this.engineRef.delete()}async bringForward(t){return this.engineRef.bringForward(t)}async sendBackward(t){return this.engineRef.sendBackward(t)}async bringToFront(t){return this.engineRef.bringToFront(t)}async sendToBack(t){return this.engineRef.sendToBack(t)}async alignObjects(t){return this.engineRef.alignObjects(t)}async group(){return this.engineRef.group()}async ungroup(){return this.engineRef.ungroup()}async undo(){return this.engineRef.undo()}async redo(){return this.engineRef.redo()}async getScreenshot(t="png",e){return this.engineRef.getScreenshot(t,e)}async exportViewportAsPng(t){return this.engineRef.exportViewportAsPng(t)}async exportViewportAsSvg(t){return this.engineRef.exportViewportAsSvg(t)}async exportSelectedObjectsAsPng(){return this.engineRef.exportSelectedObjectsAsPng()}async exportSelectedObjectsAsSvg(){return this.engineRef.exportSelectedObjectsAsSvg()}async downloadAsJson(t){return this.engineRef.downloadAsJson(t)}async importFromFile(){return this.engineRef.importFromFile()}async loadObjectsFromJson(t){return this.engineRef.loadObjectsFromJson(t)}async getObjectsTotalCount(){return this.engineRef.getObjectsTotalCount()}async getAllObjects(){return this.engineRef.getAllObjects()}async findObjects(t){return this.engineRef.findObjects(t)}async getCopiedObjects(){return this.engineRef.getCopiedObjects()}async getObjectsInViewport(){return this.engineRef.getObjectsInViewport()}async hideContextMenu(){return this.engineRef.hideContextMenu()}async openContextMenu(t){return this.engineRef.openContextMenu(t)}async triggerSelectionChange(){return this.engineRef.triggerSelectionChange()}async getDisplayableShortcuts(){return this.engineRef.getDisplayableShortcuts()}engineRef;controlsRef;settingsRef;exportRef;splitButtonRef;shareDialogRef;loginDialogRef;componentWillLoad(){this.loadSettingsFromStorage(),this.applyTheme()}applyTheme(){const t=this.resolveThemeObject();S.applyThemeToElement(this.host,t)}resolveThemeObject(){return this.themes?.find((t=>t.name===this.theme))??("dark"===this.theme?I:M)}componentDidLoad(){this.registerCustomSvgIcons(),this.listenForMobileKeyboard(),this.setOsSpecificCssVariables()}async checkIsReady(){if(await customElements.whenDefined("kritzel-editor"),await customElements.whenDefined("kritzel-workspace-manager"),await customElements.whenDefined("kritzel-controls"),await customElements.whenDefined("kritzel-engine"),!(this.isEngineReady&&this.isControlsReady&&this.isWorkspaceManagerReady&&this.activeWorkspace))return;this.isEditorVisible=!0;const{id:t,name:e,isPublic:i,createdAt:n,updatedAt:r}=this.activeWorkspace;this.isReady.emit({host:this.host,activeWorkspace:{id:t,name:e,isPublic:i,createdAt:n,updatedAt:r},syncConfig:this.syncConfig,assetStorageConfig:this.assetStorageConfig,loginConfig:this.loginConfig,theme:this.theme})}async onEngineReady(t){this.isEngineReady=!0,t.detail.activeWorkspace&&(this.activeWorkspace=t.detail.activeWorkspace,this.workspaces=t.detail.workspaces,this.currentIsPublic=await this.engineRef.getIsPublic(),this.loadShortcuts())}handleWorkspacesChange(t){t.stopPropagation(),this.workspaces=t.detail}handleActiveWorkspaceChange(t){if(t.stopPropagation(),this.activeWorkspace=t.detail,!this.isEngineReady)return;const{id:e,name:i,isPublic:n,createdAt:r,updatedAt:o}=this.activeWorkspace;this.activeWorkspaceChange.emit({id:e,name:i,isPublic:n,createdAt:r,updatedAt:o})}handleObjectsChange(t){t.stopPropagation(),this.objectsChange.emit(t.detail)}handleObjectsAdded(t){t.stopPropagation(),this.objectsAdded.emit(t.detail)}handleObjectsRemoved(t){t.stopPropagation(),this.objectsRemoved.emit(t.detail)}handleObjectsUpdated(t){t.stopPropagation(),this.objectsUpdated.emit(t.detail)}handleUndoStateChange(t){t.stopPropagation(),this.undoStateChange.emit(t.detail),this.undoState=t.detail}async handleObjectsInViewportChange(t){t.stopPropagation();const e=this.getContentObjects(t.detail).length>0,i=this.getContentObjects(await this.engineRef.getAllObjects()).length>0;this.isBackToContentButtonVisible=!e&&i}handleViewportChange(t){t.stopPropagation(),this.viewportChange.emit(t.detail)}handleAwarenessChange(t){t.stopPropagation(),this.awarenessChange.emit(t.detail)}handleSettingsChange(t){this.scaleMin=t.detail.scaleMin,this.scaleMax=t.detail.scaleMax,this.lockDrawingScale=t.detail.lockDrawingScale,this.theme=t.detail.theme,this.viewportBoundaryLeft=t.detail.viewportBoundaryLeft??-1/0,this.viewportBoundaryRight=t.detail.viewportBoundaryRight??1/0,this.viewportBoundaryTop=t.detail.viewportBoundaryTop??-1/0,this.viewportBoundaryBottom=t.detail.viewportBoundaryBottom??1/0,this.debugInfo=t.detail.debugInfo,this.engineRef&&this.engineRef.saveSettings(t.detail),this.themeChange.emit(t.detail.theme)}get moreMenuItems(){return[{id:"share",label:"Share",icon:"share",action:()=>{this.isLoggedIn||!this.loginConfig?this.shareDialogRef.open():this.openLoginDialog()}},{id:"export",label:"Export",icon:"upload",action:async()=>{const t=await this.engineRef.getScreenshot("png");this.exportRef.open(t??void 0)}},{id:"import",label:"Import",icon:"download",action:()=>this.engineRef.importFromFile()},{id:"settings",label:"Settings",icon:"settings",action:()=>this.settingsRef.open()},{id:"logout",label:"Logout",icon:"log-out",color:"#ff3b30",isVisible:this.isLoggedIn,action:()=>this.logout.emit()}]}handleToggleIsPublic=async t=>{const e=t.detail,i=await this.engineRef.getActiveWorkspace();i.isPublic=e,await this.engineRef.updateWorkspace(i),this.activeWorkspace=i.clone(),this.isPublicChange.emit({isPublic:e,workspaceId:i.id})};updateCurrentIsPublic(){const t=this.activeWorkspace?.isPublic??!1,e=this.activeWorkspace?.id;this.currentIsPublic=t,e&&this.isPublicChange.emit({isPublic:t,workspaceId:e})}handleProviderLogin=t=>{this.login.emit(t.detail)};get isLoggedIn(){return!!this.user&&!this.user.isGuest}async openLoginDialog(){this.loginDialogRef?.open()}async setLoginLoading(t){this.loginDialogRef?.setLoading(t)}getSettingsStorageKey(){return this.editorId?`kritzel-settings-${this.editorId}`:"kritzel-settings"}loadSettingsFromStorage(){const t=localStorage.getItem(this.getSettingsStorageKey());if(t)try{const e=JSON.parse(t);"number"==typeof e.scaleMin&&(this.scaleMin=e.scaleMin),"number"==typeof e.scaleMax&&(this.scaleMax=e.scaleMax),"boolean"==typeof e.lockDrawingScale&&(this.lockDrawingScale=e.lockDrawingScale),"string"==typeof e.theme&&(this.theme=e.theme),"number"==typeof e.viewportBoundaryLeft&&(this.viewportBoundaryLeft=e.viewportBoundaryLeft),"number"==typeof e.viewportBoundaryRight&&(this.viewportBoundaryRight=e.viewportBoundaryRight),"number"==typeof e.viewportBoundaryTop&&(this.viewportBoundaryTop=e.viewportBoundaryTop),"number"==typeof e.viewportBoundaryBottom&&(this.viewportBoundaryBottom=e.viewportBoundaryBottom),e.debugInfo&&(this.debugInfo={...this.debugInfo,...e.debugInfo})}catch{}}async loadShortcuts(){this.shortcuts=await this.engineRef.getDisplayableShortcuts()}get currentSettingsConfig(){return{scaleMin:this.scaleMin,scaleMax:this.scaleMax,lockDrawingScale:this.lockDrawingScale,theme:this.theme,viewportBoundaryLeft:this.viewportBoundaryLeft,viewportBoundaryRight:this.viewportBoundaryRight,viewportBoundaryTop:this.viewportBoundaryTop,viewportBoundaryBottom:this.viewportBoundaryBottom,debugInfo:this.debugInfo}}getContentObjects(t){return t.filter((t=>!(t instanceof j||t instanceof $)))}registerCustomSvgIcons(){for(const[t,e]of Object.entries(this.customSvgIcons))T.register(t,e)}listenForMobileKeyboard(){A.onKeyboardVisibleChanged((t=>{this.isVirtualKeyboardOpen=t}))}setOsSpecificCssVariables(){switch(l.detectOS()){case"iOS":this.host.style.setProperty("--kritzel-editor-top-left-buttons-top","14px"),this.host.style.setProperty("--kritzel-editor-top-left-buttons-left","14px"),this.host.style.setProperty("--kritzel-editor-controls-bottom","14px"),this.host.style.setProperty("--kritzel-editor-controls-transition","cubic-bezier(0.25, 0.1, 0.25, 1.0)"),this.host.style.setProperty("--kritzel-editor-controls-transform","translateY(200%)"),this.host.style.setProperty("--kritzel-editor-controls-transition-duration","0.25s");break;case"Android":this.host.style.setProperty("--kritzel-editor-top-left-buttons-top","14px"),this.host.style.setProperty("--kritzel-editor-top-left-buttons-left","14px"),this.host.style.setProperty("--kritzel-editor-controls-bottom","24px"),this.host.style.setProperty("--kritzel-editor-controls-transition","cubic-bezier(0.25, 0.1, 0.25, 1.0)"),this.host.style.setProperty("--kritzel-editor-controls-transform","translateY(200%)"),this.host.style.setProperty("--kritzel-editor-controls-transition-duration","0.25s");break;default:this.host.style.setProperty("--kritzel-editor-top-left-buttons-top","14px"),this.host.style.setProperty("--kritzel-editor-top-left-buttons-left","14px"),this.host.style.setProperty("--kritzel-editor-controls-bottom","14px")}}render(){const t=this.isLoggedIn,n=t,r=this.isReady&&!!this.loginConfig&&!t;return e(i,{key:"ffacaea5d3df12a3a8b448d31db3c5949053156c",style:{opacity:this.isEditorVisible?"1":"0",visibility:this.isEditorVisible?"visible":"hidden",transition:"opacity 0.2s ease-in-out, visibility 0.2s ease-in-out"}},e("div",{key:"669eafee25b4f84c39469738a1337c21ab03e388",class:"top-left-buttons"},e("kritzel-workspace-manager",{key:"d6feb4a71c3286830fbe53a533f283c8af9a0385",visible:this.isWorkspaceManagerVisible,workspaces:this.workspaces,activeWorkspace:this.activeWorkspace,onWorkspaceChange:t=>this.activeWorkspace=t.detail,onIsWorkspaceManagerReady:()=>this.isWorkspaceManagerReady=!0}),e("kritzel-back-to-content",{key:"5bd0e6263d51119b197292b69879c1ae437f92fc",visible:this.isBackToContentButtonVisible,onBackToContent:()=>this.backToContent()})),e("kritzel-engine",{key:"468f17137c51c90fd61c9179d13c449b1ac8feb9",ref:t=>{t&&(this.engineRef=t)},workspace:this.activeWorkspace,activeWorkspaceId:this.activeWorkspaceId,editorId:this.editorId,syncConfig:this.syncConfig,assetStorageConfig:this.assetStorageConfig,user:this.user,scaleMax:this.scaleMax,lockDrawingScale:this.lockDrawingScale,isObjectDistanceFadingActive:this.isObjectDistanceFadingActive,scaleMin:this.scaleMin,cursorTarget:this.cursorTarget,isLoading:this.isLoading,viewportBoundaryLeft:this.viewportBoundaryLeft,viewportBoundaryRight:this.viewportBoundaryRight,viewportBoundaryTop:this.viewportBoundaryTop,viewportBoundaryBottom:this.viewportBoundaryBottom,wheelEnabled:this.wheelEnabled,theme:this.theme,themes:this.themes,debugInfo:this.debugInfo,globalContextMenuItems:this.globalContextMenuItems,objectContextMenuItems:this.objectContextMenuItems,onIsEngineReady:t=>this.onEngineReady(t),onWorkspacesChange:t=>this.handleWorkspacesChange(t),onActiveWorkspaceChange:t=>this.handleActiveWorkspaceChange(t),onObjectsChange:t=>this.handleObjectsChange(t),onObjectsAdded:t=>this.handleObjectsAdded(t),onObjectsRemoved:t=>this.handleObjectsRemoved(t),onObjectsUpdated:t=>this.handleObjectsUpdated(t),onUndoStateChange:t=>this.handleUndoStateChange(t),onObjectsInViewportChange:t=>this.handleObjectsInViewportChange(t),onViewportChange:t=>this.handleViewportChange(t),onAwarenessChange:t=>this.handleAwarenessChange(t)}),e("kritzel-controls",{key:"848c30b27fb916c8480b41745bd6ec844e0b23a2",visible:this.isControlsVisible,class:{"keyboard-open":this.isVirtualKeyboardOpen},ref:t=>{t&&(this.controlsRef=t)},controls:this.controls,isUtilityPanelVisible:this.isUtilityPanelVisible,undoState:this.undoState??void 0,theme:this.theme,onIsControlsReady:()=>this.isControlsReady=!0}),e("div",{key:"e998d60679c767d15617bd7ecde5ee77e781a92f",class:"top-right-buttons"},e("kritzel-settings",{key:"43b9cdb2d10de789cc03d2a9ef5df870b8ca7bfe",ref:t=>{t&&(this.settingsRef=t)},shortcuts:this.shortcuts,availableThemes:this.themes&&this.themes.length>0?this.themes.map((t=>t.name)):["light","dark"],settings:this.currentSettingsConfig,onSettingsChange:t=>this.handleSettingsChange(t)}),e("kritzel-export",{key:"74669624a1e5177125ef00e1667c880ce47cbce4",ref:t=>{t&&(this.exportRef=t)},workspaceName:this.activeWorkspace?.name||"workspace",onExportPng:()=>this.engineRef.exportViewportAsPng(),onExportSvg:()=>this.engineRef.exportViewportAsSvg(),onExportJson:t=>this.engineRef.downloadAsJson(t.detail)}),e("kritzel-active-users",{key:"18d925f32d021ff6713accb22d0594d259d70f2e",users:this.activeUsers}),n&&e("kritzel-current-user",{key:"bddd5c29c5f17cced47276c237c04cfdb711da38",user:this.user}),r&&e("kritzel-button",{key:"4eb6c85459f59863d6e644ecf21c2295da71bafc",onButtonClick:()=>this.loginDialogRef?.open()},"Sign in"),e("kritzel-more-menu",{key:"a5a323ec248bebc7bc07898f344e0926fac8db17",items:this.moreMenuItems,visible:this.isMoreMenuVisible}),e("kritzel-share-dialog",{key:"8cb3ddad95d36f5b7ad59d8c4f057df93cb2bfe3",ref:t=>{t&&(this.shareDialogRef=t)},isPublic:this.currentIsPublic,workspaceId:this.activeWorkspace?.id,onToggleIsPublic:this.handleToggleIsPublic}),this.loginConfig&&e("kritzel-login-dialog",{key:"35395d0faadcfeb021fba685aa46e180e47d2be2",ref:t=>{t&&(this.loginDialogRef=t)},providers:this.loginConfig.providers,dialogTitle:this.loginConfig.title,subtitle:this.loginConfig.subtitle,onProviderLogin:this.handleProviderLogin})))}static get watchers(){return{isEngineReady:[{onIsEngineReady:0}],isControlsReady:[{onIsControlsReady:0}],workspaces:[{onWorkspacesChange:0}],activeWorkspace:[{onActiveWorkspaceChange:0}],activeWorkspaceId:[{onActiveWorkspaceIdChange:0}],theme:[{onCurrentThemeChange:0}],themes:[{onThemesChange:0}]}}};yt.style="kritzel-editor{display:flex;margin:0;position:relative;overflow:hidden;width:100%;height:100%;align-items:center;justify-content:center;touch-action:manipulation;user-select:none;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:start;line-height:normal}kritzel-controls{position:absolute;left:0;right:0;margin-inline:auto;width:max-content;max-width:calc(100% - 16px);bottom:var(--kritzel-editor-controls-bottom, 14px);transition:transform var(--kritzel-editor-controls-transition-duration, 0.1s) var(--kritzel-editor-controls-transition, ease-in-out)}kritzel-controls.keyboard-open{transform:var(--kritzel-editor-controls-transform, translateY(300%))}.top-left-buttons{position:absolute;top:var(--kritzel-editor-top-left-buttons-top, 14px);left:var(--kritzel-editor-top-left-buttons-left, 14px);display:flex;align-items:flex-start;gap:8px}.top-right-buttons{position:absolute;top:var(--kritzel-editor-top-right-buttons-top, 14px);right:var(--kritzel-editor-top-right-buttons-right, 14px);display:flex;align-items:center;gap:8px}.top-right-button{display:flex;align-items:center;justify-content:center;width:50px;height:50px;padding:0;border:var(--kritzel-split-button-border, 1px solid #ebebeb);border-radius:var(--kritzel-split-button-border-radius, 12px);background-color:var(--kritzel-split-button-background-color, #ffffff);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:var(--kritzel-split-button-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));transition:background-color 150ms ease;-webkit-tap-highlight-color:transparent}.top-right-button:hover{background-color:#f5f5f5}.top-right-button:active{background-color:#ebebeb}";var wt,xt,zt,Ct={exports:{}},St=(wt||(wt=1,xt=Ct,zt=Ct.exports,function(){var t,e="Expected a function",i="__lodash_hash_undefined__",n="__lodash_placeholder__",r=32,o=128,s=1/0,a=9007199254740991,l=NaN,c=4294967295,h=[["ary",o],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",r],["partialRight",64],["rearg",256]],u="[object Arguments]",d="[object Array]",f="[object Boolean]",p="[object Date]",b="[object Error]",g="[object Function]",v="[object GeneratorFunction]",k="[object Map]",m="[object Number]",y="[object Object]",w="[object Promise]",x="[object RegExp]",z="[object Set]",C="[object String]",S="[object Symbol]",I="[object WeakMap]",M="[object ArrayBuffer]",j="[object DataView]",$="[object Float32Array]",T="[object Float64Array]",A="[object Int8Array]",O="[object Int16Array]",_="[object Int32Array]",E="[object Uint8Array]",D="[object Uint8ClampedArray]",F="[object Uint16Array]",R="[object Uint32Array]",L=/\b__p \+= '';/g,B=/\b(__p \+=) '' \+/g,P=/(__e\(.*?\)|\b__t\)) \+\n'';/g,W=/&(?:amp|lt|gt|quot|#39);/g,V=/[&<>"']/g,N=RegExp(W.source),K=RegExp(V.source),U=/<%-([\s\S]+?)%>/g,H=/<%([\s\S]+?)%>/g,G=/<%=([\s\S]+?)%>/g,Y=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,q=/^\w*$/,X=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Z=/[\\^$.*+?()[\]{}|]/g,J=RegExp(Z.source),tt=/^\s+/,et=/\s/,it=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,nt=/\{\n\/\* \[wrapped with (.+)\] \*/,rt=/,? & /,ot=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,st=/[()=,{}\[\]\/\s]/,at=/\\(\\)?/g,lt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ct=/\w*$/,ht=/^[-+]0x[0-9a-f]+$/i,ut=/^0b[01]+$/i,dt=/^\[object .+?Constructor\]$/,ft=/^0o[0-7]+$/i,pt=/^(?:0|[1-9]\d*)$/,bt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,gt=/($^)/,vt=/['\n\r\u2028\u2029\\]/g,kt="\\ud800-\\udfff",mt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",yt="\\u2700-\\u27bf",wt="a-z\\xdf-\\xf6\\xf8-\\xff",Ct="A-Z\\xc0-\\xd6\\xd8-\\xde",St="\\ufe0e\\ufe0f",It="\\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",Mt="["+kt+"]",jt="["+It+"]",$t="["+mt+"]",Tt="\\d+",At="["+yt+"]",Ot="["+wt+"]",_t="[^"+kt+It+Tt+yt+wt+Ct+"]",Et="\\ud83c[\\udffb-\\udfff]",Dt="[^"+kt+"]",Ft="(?:\\ud83c[\\udde6-\\uddff]){2}",Rt="[\\ud800-\\udbff][\\udc00-\\udfff]",Lt="["+Ct+"]",Bt="\\u200d",Pt="(?:"+Ot+"|"+_t+")",Wt="(?:"+Lt+"|"+_t+")",Vt="(?:['’](?:d|ll|m|re|s|t|ve))?",Nt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Kt="(?:"+$t+"|"+Et+")?",Ut="["+St+"]?",Ht=Ut+Kt+"(?:"+Bt+"(?:"+[Dt,Ft,Rt].join("|")+")"+Ut+Kt+")*",Gt="(?:"+[At,Ft,Rt].join("|")+")"+Ht,Yt="(?:"+[Dt+$t+"?",$t,Ft,Rt,Mt].join("|")+")",qt=RegExp("['’]","g"),Xt=RegExp($t,"g"),Zt=RegExp(Et+"(?="+Et+")|"+Yt+Ht,"g"),Jt=RegExp([Lt+"?"+Ot+"+"+Vt+"(?="+[jt,Lt,"$"].join("|")+")",Wt+"+"+Nt+"(?="+[jt,Lt+Pt,"$"].join("|")+")",Lt+"?"+Pt+"+"+Vt,Lt+"+"+Nt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Tt,Gt].join("|"),"g"),Qt=RegExp("["+Bt+kt+mt+St+"]"),te=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,ee=["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"],ie=-1,ne={};ne[$]=ne[T]=ne[A]=ne[O]=ne[_]=ne[E]=ne[D]=ne[F]=ne[R]=!0,ne[u]=ne[d]=ne[M]=ne[f]=ne[j]=ne[p]=ne[b]=ne[g]=ne[k]=ne[m]=ne[y]=ne[x]=ne[z]=ne[C]=ne[I]=!1;var re={};re[u]=re[d]=re[M]=re[j]=re[f]=re[p]=re[$]=re[T]=re[A]=re[O]=re[_]=re[k]=re[m]=re[y]=re[x]=re[z]=re[C]=re[S]=re[E]=re[D]=re[F]=re[R]=!0,re[b]=re[g]=re[I]=!1;var oe={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},se=parseFloat,ae=parseInt,le="object"==typeof Q&&Q&&Q.Object===Object&&Q,ce="object"==typeof self&&self&&self.Object===Object&&self,he=le||ce||Function("return this")(),ue=zt&&!zt.nodeType&&zt,de=ue&&xt&&!xt.nodeType&&xt,fe=de&&de.exports===ue,pe=fe&&le.process,be=function(){try{return de&&de.require&&de.require("util").types||pe&&pe.binding&&pe.binding("util")}catch(t){}}(),ge=be&&be.isArrayBuffer,ve=be&&be.isDate,ke=be&&be.isMap,me=be&&be.isRegExp,ye=be&&be.isSet,we=be&&be.isTypedArray;function xe(t,e,i){switch(i.length){case 0:return t.call(e);case 1:return t.call(e,i[0]);case 2:return t.call(e,i[0],i[1]);case 3:return t.call(e,i[0],i[1],i[2])}return t.apply(e,i)}function ze(t,e,i,n){for(var r=-1,o=null==t?0:t.length;++r<o;){var s=t[r];e(n,s,i(s),t)}return n}function Ce(t,e){for(var i=-1,n=null==t?0:t.length;++i<n&&!1!==e(t[i],i,t););return t}function Se(t,e){for(var i=null==t?0:t.length;i--&&!1!==e(t[i],i,t););return t}function Ie(t,e){for(var i=-1,n=null==t?0:t.length;++i<n;)if(!e(t[i],i,t))return!1;return!0}function Me(t,e){for(var i=-1,n=null==t?0:t.length,r=0,o=[];++i<n;){var s=t[i];e(s,i,t)&&(o[r++]=s)}return o}function je(t,e){return!(null==t||!t.length)&&Le(t,e,0)>-1}function $e(t,e,i){for(var n=-1,r=null==t?0:t.length;++n<r;)if(i(e,t[n]))return!0;return!1}function Te(t,e){for(var i=-1,n=null==t?0:t.length,r=Array(n);++i<n;)r[i]=e(t[i],i,t);return r}function Ae(t,e){for(var i=-1,n=e.length,r=t.length;++i<n;)t[r+i]=e[i];return t}function Oe(t,e,i,n){var r=-1,o=null==t?0:t.length;for(n&&o&&(i=t[++r]);++r<o;)i=e(i,t[r],r,t);return i}function _e(t,e,i,n){var r=null==t?0:t.length;for(n&&r&&(i=t[--r]);r--;)i=e(i,t[r],r,t);return i}function Ee(t,e){for(var i=-1,n=null==t?0:t.length;++i<n;)if(e(t[i],i,t))return!0;return!1}var De=Ve("length");function Fe(t,e,i){var n;return i(t,(function(t,i,r){if(e(t,i,r))return n=i,!1})),n}function Re(t,e,i,n){for(var r=t.length,o=i+(n?1:-1);n?o--:++o<r;)if(e(t[o],o,t))return o;return-1}function Le(t,e,i){return e==e?function(t,e,i){for(var n=i-1,r=t.length;++n<r;)if(t[n]===e)return n;return-1}(t,e,i):Re(t,Pe,i)}function Be(t,e,i,n){for(var r=i-1,o=t.length;++r<o;)if(n(t[r],e))return r;return-1}function Pe(t){return t!=t}function We(t,e){var i=null==t?0:t.length;return i?Ue(t,e)/i:l}function Ve(e){return function(i){return null==i?t:i[e]}}function Ne(e){return function(i){return null==e?t:e[i]}}function Ke(t,e,i,n,r){return r(t,(function(t,r,o){i=n?(n=!1,t):e(i,t,r,o)})),i}function Ue(e,i){for(var n,r=-1,o=e.length;++r<o;){var s=i(e[r]);s!==t&&(n=n===t?s:n+s)}return n}function He(t,e){for(var i=-1,n=Array(t);++i<t;)n[i]=e(i);return n}function Ge(t){return t?t.slice(0,hi(t)+1).replace(tt,""):t}function Ye(t){return function(e){return t(e)}}function qe(t,e){return Te(e,(function(e){return t[e]}))}function Xe(t,e){return t.has(e)}function Ze(t,e){for(var i=-1,n=t.length;++i<n&&Le(e,t[i],0)>-1;);return i}function Je(t,e){for(var i=t.length;i--&&Le(e,t[i],0)>-1;);return i}var Qe=Ne({À:"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"}),ti=Ne({"&":"&","<":"<",">":">",'"':""","'":"'"});function ei(t){return"\\"+oe[t]}function ii(t){return Qt.test(t)}function ni(t){var e=-1,i=Array(t.size);return t.forEach((function(t,n){i[++e]=[n,t]})),i}function ri(t,e){return function(i){return t(e(i))}}function oi(t,e){for(var i=-1,r=t.length,o=0,s=[];++i<r;){var a=t[i];a!==e&&a!==n||(t[i]=n,s[o++]=i)}return s}function si(t){var e=-1,i=Array(t.size);return t.forEach((function(t){i[++e]=t})),i}function ai(t){var e=-1,i=Array(t.size);return t.forEach((function(t){i[++e]=[t,t]})),i}function li(t){return ii(t)?function(t){for(var e=Zt.lastIndex=0;Zt.test(t);)++e;return e}(t):De(t)}function ci(t){return ii(t)?function(t){return t.match(Zt)||[]}(t):function(t){return t.split("")}(t)}function hi(t){for(var e=t.length;e--&&et.test(t.charAt(e)););return e}var ui=Ne({"&":"&","<":"<",">":">",""":'"',"'":"'"}),di=function Q(et){var kt,mt=(et=null==et?he:di.defaults(he.Object(),et,di.pick(he,ee))).Array,yt=et.Date,wt=et.Error,xt=et.Function,zt=et.Math,Ct=et.Object,St=et.RegExp,It=et.String,Mt=et.TypeError,jt=mt.prototype,$t=Ct.prototype,Tt=et["__core-js_shared__"],At=xt.prototype.toString,Ot=$t.hasOwnProperty,_t=0,Et=(kt=/[^.]+$/.exec(Tt&&Tt.keys&&Tt.keys.IE_PROTO||""))?"Symbol(src)_1."+kt:"",Dt=$t.toString,Ft=At.call(Ct),Rt=he._,Lt=St("^"+At.call(Ot).replace(Z,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Bt=fe?et.Buffer:t,Pt=et.Symbol,Wt=et.Uint8Array,Vt=Bt?Bt.allocUnsafe:t,Nt=ri(Ct.getPrototypeOf,Ct),Kt=Ct.create,Ut=$t.propertyIsEnumerable,Ht=jt.splice,Gt=Pt?Pt.isConcatSpreadable:t,Yt=Pt?Pt.iterator:t,Zt=Pt?Pt.toStringTag:t,Qt=function(){try{var t=ao(Ct,"defineProperty");return t({},"",{}),t}catch(t){}}(),oe=et.clearTimeout!==he.clearTimeout&&et.clearTimeout,le=yt&&yt.now!==he.Date.now&&yt.now,ce=et.setTimeout!==he.setTimeout&&et.setTimeout,ue=zt.ceil,de=zt.floor,pe=Ct.getOwnPropertySymbols,be=Bt?Bt.isBuffer:t,De=et.isFinite,Ne=jt.join,fi=ri(Ct.keys,Ct),pi=zt.max,bi=zt.min,gi=yt.now,vi=et.parseInt,ki=zt.random,mi=jt.reverse,yi=ao(et,"DataView"),wi=ao(et,"Map"),xi=ao(et,"Promise"),zi=ao(et,"Set"),Ci=ao(et,"WeakMap"),Si=ao(Ct,"create"),Ii=Ci&&new Ci,Mi={},ji=Eo(yi),$i=Eo(wi),Ti=Eo(xi),Ai=Eo(zi),Oi=Eo(Ci),_i=Pt?Pt.prototype:t,Ei=_i?_i.valueOf:t,Di=_i?_i.toString:t;function Fi(t){if(Zs(t)&&!Ps(t)&&!(t instanceof Pi)){if(t instanceof Bi)return t;if(Ot.call(t,"__wrapped__"))return Do(t)}return new Bi(t)}var Ri=function(){function e(){}return function(i){if(!Xs(i))return{};if(Kt)return Kt(i);e.prototype=i;var n=new e;return e.prototype=t,n}}();function Li(){}function Bi(e,i){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!i,this.__index__=0,this.__values__=t}function Pi(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=c,this.__views__=[]}function Wi(t){var e=-1,i=null==t?0:t.length;for(this.clear();++e<i;){var n=t[e];this.set(n[0],n[1])}}function Vi(t){var e=-1,i=null==t?0:t.length;for(this.clear();++e<i;){var n=t[e];this.set(n[0],n[1])}}function Ni(t){var e=-1,i=null==t?0:t.length;for(this.clear();++e<i;){var n=t[e];this.set(n[0],n[1])}}function Ki(t){var e=-1,i=null==t?0:t.length;for(this.__data__=new Ni;++e<i;)this.add(t[e])}function Ui(t){var e=this.__data__=new Vi(t);this.size=e.size}function Hi(t,e){var i=Ps(t),n=!i&&Bs(t),r=!i&&!n&&Ks(t),o=!i&&!n&&!r&&oa(t),s=i||n||r||o,a=s?He(t.length,It):[],l=a.length;for(var c in t)!e&&!Ot.call(t,c)||s&&("length"==c||r&&("offset"==c||"parent"==c)||o&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||bo(c,l))||a.push(c);return a}function Gi(e){var i=e.length;return i?e[Kn(0,i-1)]:t}function Yi(t,e){return Ao(Sr(t),rn(e,0,t.length))}function qi(t){return Ao(Sr(t))}function Xi(e,i,n){(n!==t&&!Fs(e[i],n)||n===t&&!(i in e))&&en(e,i,n)}function Zi(e,i,n){var r=e[i];Ot.call(e,i)&&Fs(r,n)&&(n!==t||i in e)||en(e,i,n)}function Ji(t,e){for(var i=t.length;i--;)if(Fs(t[i][0],e))return i;return-1}function Qi(t,e,i,n){return cn(t,(function(t,r,o){e(n,t,i(t),o)})),n}function tn(t,e){return t&&Ir(e,Ma(e),t)}function en(t,e,i){"__proto__"==e&&Qt?Qt(t,e,{configurable:!0,enumerable:!0,value:i,writable:!0}):t[e]=i}function nn(e,i){for(var n=-1,r=i.length,o=mt(r),s=null==e;++n<r;)o[n]=s?t:xa(e,i[n]);return o}function rn(e,i,n){return e==e&&(n!==t&&(e=e<=n?e:n),i!==t&&(e=e>=i?e:i)),e}function on(e,i,n,r,o,s){var a,l=1&i,c=2&i,h=4&i;if(n&&(a=o?n(e,r,o,s):n(e)),a!==t)return a;if(!Xs(e))return e;var d=Ps(e);if(d){if(a=function(t){var e=t.length,i=new t.constructor(e);return e&&"string"==typeof t[0]&&Ot.call(t,"index")&&(i.index=t.index,i.input=t.input),i}(e),!l)return Sr(e,a)}else{var b=ho(e),w=b==g||b==v;if(Ks(e))return mr(e,l);if(b==y||b==u||w&&!o){if(a=c||w?{}:fo(e),!l)return c?function(t,e){return Ir(t,co(t),e)}(e,function(t,e){return t&&Ir(e,ja(e),t)}(a,e)):function(t,e){return Ir(t,lo(t),e)}(e,tn(a,e))}else{if(!re[b])return o?e:{};a=function(t,e,i){var n=t.constructor;switch(e){case M:return yr(t);case f:case p:return new n(+t);case j:return function(t,e){var i=e?yr(t.buffer):t.buffer;return new t.constructor(i,t.byteOffset,t.byteLength)}(t,i);case $:case T:case A:case O:case _:case E:case D:case F:case R:return wr(t,i);case k:return new n;case m:case C:return new n(t);case x:return function(t){var e=new t.constructor(t.source,ct.exec(t));return e.lastIndex=t.lastIndex,e}(t);case z:return new n;case S:return Ei?Ct(Ei.call(t)):{}}}(e,b,l)}}s||(s=new Ui);var I=s.get(e);if(I)return I;s.set(e,a),ia(e)?e.forEach((function(t){a.add(on(t,i,n,t,e,s))})):Js(e)&&e.forEach((function(t,r){a.set(r,on(t,i,n,r,e,s))}));var L=d?t:(h?c?to:Qr:c?ja:Ma)(e);return Ce(L||e,(function(t,r){L&&(t=e[r=t]),Zi(a,r,on(t,i,n,r,e,s))})),a}function sn(e,i,n){var r=n.length;if(null==e)return!r;for(e=Ct(e);r--;){var o=n[r],s=e[o];if(s===t&&!(o in e)||!(0,i[o])(s))return!1}return!0}function an(i,n,r){if("function"!=typeof i)throw new Mt(e);return Mo((function(){i.apply(t,r)}),n)}function ln(t,e,i,n){var r=-1,o=je,s=!0,a=t.length,l=[],c=e.length;if(!a)return l;i&&(e=Te(e,Ye(i))),n?(o=$e,s=!1):e.length>=200&&(o=Xe,s=!1,e=new Ki(e));t:for(;++r<a;){var h=t[r],u=null==i?h:i(h);if(h=n||0!==h?h:0,s&&u==u){for(var d=c;d--;)if(e[d]===u)continue t;l.push(h)}else o(e,u,n)||l.push(h)}return l}Fi.templateSettings={escape:U,evaluate:H,interpolate:G,variable:"",imports:{_:Fi}},(Fi.prototype=Li.prototype).constructor=Fi,(Bi.prototype=Ri(Li.prototype)).constructor=Bi,(Pi.prototype=Ri(Li.prototype)).constructor=Pi,Wi.prototype.clear=function(){this.__data__=Si?Si(null):{},this.size=0},Wi.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},Wi.prototype.get=function(e){var n=this.__data__;if(Si){var r=n[e];return r===i?t:r}return Ot.call(n,e)?n[e]:t},Wi.prototype.has=function(e){var i=this.__data__;return Si?i[e]!==t:Ot.call(i,e)},Wi.prototype.set=function(e,n){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=Si&&n===t?i:n,this},Vi.prototype.clear=function(){this.__data__=[],this.size=0},Vi.prototype.delete=function(t){var e=this.__data__,i=Ji(e,t);return!(i<0||(i==e.length-1?e.pop():Ht.call(e,i,1),--this.size,0))},Vi.prototype.get=function(e){var i=this.__data__,n=Ji(i,e);return n<0?t:i[n][1]},Vi.prototype.has=function(t){return Ji(this.__data__,t)>-1},Vi.prototype.set=function(t,e){var i=this.__data__,n=Ji(i,t);return n<0?(++this.size,i.push([t,e])):i[n][1]=e,this},Ni.prototype.clear=function(){this.size=0,this.__data__={hash:new Wi,map:new(wi||Vi),string:new Wi}},Ni.prototype.delete=function(t){var e=oo(this,t).delete(t);return this.size-=e?1:0,e},Ni.prototype.get=function(t){return oo(this,t).get(t)},Ni.prototype.has=function(t){return oo(this,t).has(t)},Ni.prototype.set=function(t,e){var i=oo(this,t),n=i.size;return i.set(t,e),this.size+=i.size==n?0:1,this},Ki.prototype.add=Ki.prototype.push=function(t){return this.__data__.set(t,i),this},Ki.prototype.has=function(t){return this.__data__.has(t)},Ui.prototype.clear=function(){this.__data__=new Vi,this.size=0},Ui.prototype.delete=function(t){var e=this.__data__,i=e.delete(t);return this.size=e.size,i},Ui.prototype.get=function(t){return this.__data__.get(t)},Ui.prototype.has=function(t){return this.__data__.has(t)},Ui.prototype.set=function(t,e){var i=this.__data__;if(i instanceof Vi){var n=i.__data__;if(!wi||n.length<199)return n.push([t,e]),this.size=++i.size,this;i=this.__data__=new Ni(n)}return i.set(t,e),this.size=i.size,this};var cn=$r(vn),hn=$r(kn,!0);function un(t,e){var i=!0;return cn(t,(function(t,n,r){return i=!!e(t,n,r)})),i}function dn(e,i,n){for(var r=-1,o=e.length;++r<o;){var s=e[r],a=i(s);if(null!=a&&(l===t?a==a&&!ra(a):n(a,l)))var l=a,c=s}return c}function fn(t,e){var i=[];return cn(t,(function(t,n,r){e(t,n,r)&&i.push(t)})),i}function pn(t,e,i,n,r){var o=-1,s=t.length;for(i||(i=po),r||(r=[]);++o<s;){var a=t[o];e>0&&i(a)?e>1?pn(a,e-1,i,n,r):Ae(r,a):n||(r[r.length]=a)}return r}var bn=Tr(),gn=Tr(!0);function vn(t,e){return t&&bn(t,e,Ma)}function kn(t,e){return t&&gn(t,e,Ma)}function mn(t,e){return Me(e,(function(e){return Gs(t[e])}))}function yn(e,i){for(var n=0,r=(i=br(i,e)).length;null!=e&&n<r;)e=e[_o(i[n++])];return n&&n==r?e:t}function wn(t,e,i){var n=e(t);return Ps(t)?n:Ae(n,i(t))}function xn(e){return null==e?e===t?"[object Undefined]":"[object Null]":Zt&&Zt in Ct(e)?function(e){var i=Ot.call(e,Zt),n=e[Zt];try{e[Zt]=t;var r=!0}catch(t){}var o=Dt.call(e);return r&&(i?e[Zt]=n:delete e[Zt]),o}(e):function(t){return Dt.call(t)}(e)}function zn(t,e){return t>e}function Cn(t,e){return null!=t&&Ot.call(t,e)}function Sn(t,e){return null!=t&&e in Ct(t)}function In(e,i,n){for(var r=n?$e:je,o=e[0].length,s=e.length,a=s,l=mt(s),c=1/0,h=[];a--;){var u=e[a];a&&i&&(u=Te(u,Ye(i))),c=bi(u.length,c),l[a]=!n&&(i||o>=120&&u.length>=120)?new Ki(a&&u):t}u=e[0];var d=-1,f=l[0];t:for(;++d<o&&h.length<c;){var p=u[d],b=i?i(p):p;if(p=n||0!==p?p:0,!(f?Xe(f,b):r(h,b,n))){for(a=s;--a;){var g=l[a];if(!(g?Xe(g,b):r(e[a],b,n)))continue t}f&&f.push(b),h.push(p)}}return h}function Mn(e,i,n){var r=null==(e=Co(e,i=br(i,e)))?e:e[_o(Ho(i))];return null==r?t:xe(r,e,n)}function jn(t){return Zs(t)&&xn(t)==u}function $n(e,i,n,r,o){return e===i||(null==e||null==i||!Zs(e)&&!Zs(i)?e!=e&&i!=i:function(e,i,n,r,o,s){var a=Ps(e),l=Ps(i),c=a?d:ho(e),h=l?d:ho(i),g=(c=c==u?y:c)==y,v=(h=h==u?y:h)==y,w=c==h;if(w&&Ks(e)){if(!Ks(i))return!1;a=!0,g=!1}if(w&&!g)return s||(s=new Ui),a||oa(e)?Zr(e,i,n,r,o,s):function(t,e,i,n,r,o,s){switch(i){case j:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case M:return!(t.byteLength!=e.byteLength||!o(new Wt(t),new Wt(e)));case f:case p:case m:return Fs(+t,+e);case b:return t.name==e.name&&t.message==e.message;case x:case C:return t==e+"";case k:var a=ni;case z:if(a||(a=si),t.size!=e.size&&!(1&n))return!1;var l=s.get(t);if(l)return l==e;n|=2,s.set(t,e);var c=Zr(a(t),a(e),n,r,o,s);return s.delete(t),c;case S:if(Ei)return Ei.call(t)==Ei.call(e)}return!1}(e,i,c,n,r,o,s);if(!(1&n)){var I=g&&Ot.call(e,"__wrapped__"),$=v&&Ot.call(i,"__wrapped__");if(I||$){var T=I?e.value():e,A=$?i.value():i;return s||(s=new Ui),o(T,A,n,r,s)}}return!!w&&(s||(s=new Ui),function(e,i,n,r,o,s){var a=1&n,l=Qr(e),c=l.length;if(c!=Qr(i).length&&!a)return!1;for(var h=c;h--;){var u=l[h];if(!(a?u in i:Ot.call(i,u)))return!1}var d=s.get(e),f=s.get(i);if(d&&f)return d==i&&f==e;var p=!0;s.set(e,i),s.set(i,e);for(var b=a;++h<c;){var g=e[u=l[h]],v=i[u];if(r)var k=a?r(v,g,u,i,e,s):r(g,v,u,e,i,s);if(!(k===t?g===v||o(g,v,n,r,s):k)){p=!1;break}b||(b="constructor"==u)}if(p&&!b){var m=e.constructor,y=i.constructor;m==y||!("constructor"in e)||!("constructor"in i)||"function"==typeof m&&m instanceof m&&"function"==typeof y&&y instanceof y||(p=!1)}return s.delete(e),s.delete(i),p}(e,i,n,r,o,s))}(e,i,n,r,$n,o))}function Tn(e,i,n,r){var o=n.length,s=o,a=!r;if(null==e)return!s;for(e=Ct(e);o--;){var l=n[o];if(a&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++o<s;){var c=(l=n[o])[0],h=e[c],u=l[1];if(a&&l[2]){if(h===t&&!(c in e))return!1}else{var d=new Ui;if(r)var f=r(h,u,c,e,i,d);if(!(f===t?$n(u,h,3,r,d):f))return!1}}return!0}function An(t){return!(!Xs(t)||(e=t,Et&&Et in e))&&(Gs(t)?Lt:dt).test(Eo(t));var e}function On(t){return"function"==typeof t?t:null==t?Qa:"object"==typeof t?Ps(t)?Rn(t[0],t[1]):Fn(t):ll(t)}function _n(t){if(!yo(t))return fi(t);var e=[];for(var i in Ct(t))Ot.call(t,i)&&"constructor"!=i&&e.push(i);return e}function En(t,e){return t<e}function Dn(t,e){var i=-1,n=Vs(t)?mt(t.length):[];return cn(t,(function(t,r,o){n[++i]=e(t,r,o)})),n}function Fn(t){var e=so(t);return 1==e.length&&e[0][2]?xo(e[0][0],e[0][1]):function(i){return i===t||Tn(i,t,e)}}function Rn(e,i){return vo(e)&&wo(i)?xo(_o(e),i):function(n){var r=xa(n,e);return r===t&&r===i?za(n,e):$n(i,r,3)}}function Ln(e,i,n,r,o){e!==i&&bn(i,(function(s,a){if(o||(o=new Ui),Xs(s))!function(e,i,n,r,o,s,a){var l=So(e,n),c=So(i,n),h=a.get(c);if(h)Xi(e,n,h);else{var u=s?s(l,c,n+"",e,i,a):t,d=u===t;if(d){var f=Ps(c),p=!f&&Ks(c),b=!f&&!p&&oa(c);u=c,f||p||b?Ps(l)?u=l:Ns(l)?u=Sr(l):p?(d=!1,u=mr(c,!0)):b?(d=!1,u=wr(c,!0)):u=[]:ta(c)||Bs(c)?(u=l,Bs(l)?u=fa(l):Xs(l)&&!Gs(l)||(u=fo(c))):d=!1}d&&(a.set(c,u),o(u,c,r,s,a),a.delete(c)),Xi(e,n,u)}}(e,i,a,n,Ln,r,o);else{var l=r?r(So(e,a),s,a+"",e,i,o):t;l===t&&(l=s),Xi(e,a,l)}}),ja)}function Bn(e,i){var n=e.length;if(n)return bo(i+=i<0?n:0,n)?e[i]:t}function Pn(t,e,i){e=e.length?Te(e,(function(t){return Ps(t)?function(e){return yn(e,1===t.length?t[0]:t)}:t})):[Qa];var n=-1;e=Te(e,Ye(ro()));var r=Dn(t,(function(t){var i=Te(e,(function(e){return e(t)}));return{criteria:i,index:++n,value:t}}));return function(t){var e=t.length;for(t.sort((function(t,e){return function(t,e,i){for(var n=-1,r=t.criteria,o=e.criteria,s=r.length,a=i.length;++n<s;){var l=xr(r[n],o[n]);if(l)return n>=a?l:l*("desc"==i[n]?-1:1)}return t.index-e.index}(t,e,i)}));e--;)t[e]=t[e].value;return t}(r)}function Wn(t,e,i){for(var n=-1,r=e.length,o={};++n<r;){var s=e[n],a=yn(t,s);i(a,s)&&qn(o,br(s,t),a)}return o}function Vn(t,e,i,n){var r=n?Be:Le,o=-1,s=e.length,a=t;for(t===e&&(e=Sr(e)),i&&(a=Te(t,Ye(i)));++o<s;)for(var l=0,c=e[o],h=i?i(c):c;(l=r(a,h,l,n))>-1;)a!==t&&Ht.call(a,l,1),Ht.call(t,l,1);return t}function Nn(t,e){for(var i=t?e.length:0,n=i-1;i--;){var r=e[i];if(i==n||r!==o){var o=r;bo(r)?Ht.call(t,r,1):ar(t,r)}}return t}function Kn(t,e){return t+de(ki()*(e-t+1))}function Un(t,e){var i="";if(!t||e<1||e>a)return i;do{e%2&&(i+=t),(e=de(e/2))&&(t+=t)}while(e);return i}function Hn(t,e){return jo(zo(t,e,Qa),t+"")}function Gn(t){return Gi(Fa(t))}function Yn(t,e){var i=Fa(t);return Ao(i,rn(e,0,i.length))}function qn(e,i,n,r){if(!Xs(e))return e;for(var o=-1,s=(i=br(i,e)).length,a=s-1,l=e;null!=l&&++o<s;){var c=_o(i[o]),h=n;if("__proto__"===c||"constructor"===c||"prototype"===c)return e;if(o!=a){var u=l[c];(h=r?r(u,c,l):t)===t&&(h=Xs(u)?u:bo(i[o+1])?[]:{})}Zi(l,c,h),l=l[c]}return e}var Xn=Ii?function(t,e){return Ii.set(t,e),t}:Qa,Zn=Qt?function(t,e){return Qt(t,"toString",{configurable:!0,enumerable:!1,value:Xa(e),writable:!0})}:Qa;function Jn(t){return Ao(Fa(t))}function Qn(t,e,i){var n=-1,r=t.length;e<0&&(e=-e>r?0:r+e),(i=i>r?r:i)<0&&(i+=r),r=e>i?0:i-e>>>0,e>>>=0;for(var o=mt(r);++n<r;)o[n]=t[n+e];return o}function tr(t,e){var i;return cn(t,(function(t,n,r){return!(i=e(t,n,r))})),!!i}function er(t,e,i){var n=0,r=null==t?n:t.length;if("number"==typeof e&&e==e&&r<=2147483647){for(;n<r;){var o=n+r>>>1,s=t[o];null!==s&&!ra(s)&&(i?s<=e:s<e)?n=o+1:r=o}return r}return ir(t,e,Qa,i)}function ir(e,i,n,r){var o=0,s=null==e?0:e.length;if(0===s)return 0;for(var a=(i=n(i))!=i,l=null===i,c=ra(i),h=i===t;o<s;){var u=de((o+s)/2),d=n(e[u]),f=d!==t,p=null===d,b=d==d,g=ra(d);if(a)var v=r||b;else v=h?b&&(r||f):l?b&&f&&(r||!p):c?b&&f&&!p&&(r||!g):!p&&!g&&(r?d<=i:d<i);v?o=u+1:s=u}return bi(s,4294967294)}function nr(t,e){for(var i=-1,n=t.length,r=0,o=[];++i<n;){var s=t[i],a=e?e(s):s;if(!i||!Fs(a,l)){var l=a;o[r++]=0===s?0:s}}return o}function rr(t){return"number"==typeof t?t:ra(t)?l:+t}function or(t){if("string"==typeof t)return t;if(Ps(t))return Te(t,or)+"";if(ra(t))return Di?Di.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function sr(t,e,i){var n=-1,r=je,o=t.length,s=!0,a=[],l=a;if(i)s=!1,r=$e;else if(o>=200){var c=e?null:Ur(t);if(c)return si(c);s=!1,r=Xe,l=new Ki}else l=e?[]:a;t:for(;++n<o;){var h=t[n],u=e?e(h):h;if(h=i||0!==h?h:0,s&&u==u){for(var d=l.length;d--;)if(l[d]===u)continue t;e&&l.push(u),a.push(h)}else r(l,u,i)||(l!==a&&l.push(u),a.push(h))}return a}function ar(t,e){var i=-1,n=(e=br(e,t)).length;if(!n)return!0;for(;++i<n;){var r=_o(e[i]);if("__proto__"===r&&!Ot.call(t,"__proto__"))return!1;if(("constructor"===r||"prototype"===r)&&i<n-1)return!1}var o=Co(t,e);return null==o||delete o[_o(Ho(e))]}function lr(t,e,i,n){return qn(t,e,i(yn(t,e)),n)}function cr(t,e,i,n){for(var r=t.length,o=n?r:-1;(n?o--:++o<r)&&e(t[o],o,t););return i?Qn(t,n?0:o,n?o+1:r):Qn(t,n?o+1:0,n?r:o)}function hr(t,e){var i=t;return i instanceof Pi&&(i=i.value()),Oe(e,(function(t,e){return e.func.apply(e.thisArg,Ae([t],e.args))}),i)}function ur(t,e,i){var n=t.length;if(n<2)return n?sr(t[0]):[];for(var r=-1,o=mt(n);++r<n;)for(var s=t[r],a=-1;++a<n;)a!=r&&(o[r]=ln(o[r]||s,t[a],e,i));return sr(pn(o,1),e,i)}function dr(e,i,n){for(var r=-1,o=e.length,s=i.length,a={};++r<o;)n(a,e[r],r<s?i[r]:t);return a}function fr(t){return Ns(t)?t:[]}function pr(t){return"function"==typeof t?t:Qa}function br(t,e){return Ps(t)?t:vo(t,e)?[t]:Oo(pa(t))}var gr=Hn;function vr(e,i,n){var r=e.length;return n=n===t?r:n,!i&&n>=r?e:Qn(e,i,n)}var kr=oe||function(t){return he.clearTimeout(t)};function mr(t,e){if(e)return t.slice();var i=t.length,n=Vt?Vt(i):new t.constructor(i);return t.copy(n),n}function yr(t){var e=new t.constructor(t.byteLength);return new Wt(e).set(new Wt(t)),e}function wr(t,e){var i=e?yr(t.buffer):t.buffer;return new t.constructor(i,t.byteOffset,t.length)}function xr(e,i){if(e!==i){var n=e!==t,r=null===e,o=e==e,s=ra(e),a=i!==t,l=null===i,c=i==i,h=ra(i);if(!l&&!h&&!s&&e>i||s&&a&&c&&!l&&!h||r&&a&&c||!n&&c||!o)return 1;if(!r&&!s&&!h&&e<i||h&&n&&o&&!r&&!s||l&&n&&o||!a&&o||!c)return-1}return 0}function zr(t,e,i,n){for(var r=-1,o=t.length,s=i.length,a=-1,l=e.length,c=pi(o-s,0),h=mt(l+c),u=!n;++a<l;)h[a]=e[a];for(;++r<s;)(u||r<o)&&(h[i[r]]=t[r]);for(;c--;)h[a++]=t[r++];return h}function Cr(t,e,i,n){for(var r=-1,o=t.length,s=-1,a=i.length,l=-1,c=e.length,h=pi(o-a,0),u=mt(h+c),d=!n;++r<h;)u[r]=t[r];for(var f=r;++l<c;)u[f+l]=e[l];for(;++s<a;)(d||r<o)&&(u[f+i[s]]=t[r++]);return u}function Sr(t,e){var i=-1,n=t.length;for(e||(e=mt(n));++i<n;)e[i]=t[i];return e}function Ir(e,i,n,r){var o=!n;n||(n={});for(var s=-1,a=i.length;++s<a;){var l=i[s],c=r?r(n[l],e[l],l,n,e):t;c===t&&(c=e[l]),o?en(n,l,c):Zi(n,l,c)}return n}function Mr(t,e){return function(i,n){var r=Ps(i)?ze:Qi,o=e?e():{};return r(i,t,ro(n,2),o)}}function jr(e){return Hn((function(i,n){var r=-1,o=n.length,s=o>1?n[o-1]:t,a=o>2?n[2]:t;for(s=e.length>3&&"function"==typeof s?(o--,s):t,a&&go(n[0],n[1],a)&&(s=o<3?t:s,o=1),i=Ct(i);++r<o;){var l=n[r];l&&e(i,l,r,s)}return i}))}function $r(t,e){return function(i,n){if(null==i)return i;if(!Vs(i))return t(i,n);for(var r=i.length,o=e?r:-1,s=Ct(i);(e?o--:++o<r)&&!1!==n(s[o],o,s););return i}}function Tr(t){return function(e,i,n){for(var r=-1,o=Ct(e),s=n(e),a=s.length;a--;){var l=s[t?a:++r];if(!1===i(o[l],l,o))break}return e}}function Ar(e){return function(i){var n=ii(i=pa(i))?ci(i):t,r=n?n[0]:i.charAt(0),o=n?vr(n,1).join(""):i.slice(1);return r[e]()+o}}function Or(t){return function(e){return Oe(Ga(Ba(e).replace(qt,"")),t,"")}}function _r(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var i=Ri(t.prototype),n=t.apply(i,e);return Xs(n)?n:i}}function Er(e){return function(i,n,r){var o=Ct(i);if(!Vs(i)){var s=ro(n,3);i=Ma(i),n=function(t){return s(o[t],t,o)}}var a=e(i,n,r);return a>-1?o[s?i[a]:a]:t}}function Dr(i){return Jr((function(n){var r=n.length,o=r,s=Bi.prototype.thru;for(i&&n.reverse();o--;){var a=n[o];if("function"!=typeof a)throw new Mt(e);if(s&&!l&&"wrapper"==io(a))var l=new Bi([],!0)}for(o=l?o:r;++o<r;){var c=io(a=n[o]),h="wrapper"==c?eo(a):t;l=h&&ko(h[0])&&424==h[1]&&!h[4].length&&1==h[9]?l[io(h[0])].apply(l,h[3]):1==a.length&&ko(a)?l[c]():l.thru(a)}return function(){var t=arguments,e=t[0];if(l&&1==t.length&&Ps(e))return l.plant(e).value();for(var i=0,o=r?n[i].apply(this,t):e;++i<r;)o=n[i].call(this,o);return o}}))}function Fr(e,i,n,r,s,a,l,c,h,u){var d=i&o,f=1&i,p=2&i,b=24&i,g=512&i,v=p?t:_r(e);return function o(){for(var k=arguments.length,m=mt(k),y=k;y--;)m[y]=arguments[y];if(b)var w=no(o),x=function(t,e){for(var i=t.length,n=0;i--;)t[i]===e&&++n;return n}(m,w);if(r&&(m=zr(m,r,s,b)),a&&(m=Cr(m,a,l,b)),k-=x,b&&k<u){var z=oi(m,w);return Nr(e,i,Fr,o.placeholder,n,m,z,c,h,u-k)}var C=f?n:this,S=p?C[e]:e;return k=m.length,c?m=function(e,i){for(var n=e.length,r=bi(i.length,n),o=Sr(e);r--;){var s=i[r];e[r]=bo(s,n)?o[s]:t}return e}(m,c):g&&k>1&&m.reverse(),d&&h<k&&(m.length=h),this&&this!==he&&this instanceof o&&(S=v||_r(S)),S.apply(C,m)}}function Rr(t,e){return function(i,n){return function(t,e,i,n){return vn(t,(function(t,r,o){e(n,i(t),r,o)})),n}(i,t,e(n),{})}}function Lr(e,i){return function(n,r){var o;if(n===t&&r===t)return i;if(n!==t&&(o=n),r!==t){if(o===t)return r;"string"==typeof n||"string"==typeof r?(n=or(n),r=or(r)):(n=rr(n),r=rr(r)),o=e(n,r)}return o}}function Br(t){return Jr((function(e){return e=Te(e,Ye(ro())),Hn((function(i){var n=this;return t(e,(function(t){return xe(t,n,i)}))}))}))}function Pr(e,i){var n=(i=i===t?" ":or(i)).length;if(n<2)return n?Un(i,e):i;var r=Un(i,ue(e/li(i)));return ii(i)?vr(ci(r),0,e).join(""):r.slice(0,e)}function Wr(e){return function(i,n,r){return r&&"number"!=typeof r&&go(i,n,r)&&(n=r=t),i=ca(i),n===t?(n=i,i=0):n=ca(n),function(t,e,i,n){for(var r=-1,o=pi(ue((e-t)/(i||1)),0),s=mt(o);o--;)s[n?o:++r]=t,t+=i;return s}(i,n,r=r===t?i<n?1:-1:ca(r),e)}}function Vr(t){return function(e,i){return"string"==typeof e&&"string"==typeof i||(e=da(e),i=da(i)),t(e,i)}}function Nr(e,i,n,o,s,a,l,c,h,u){var d=8&i;i|=d?r:64,4&(i&=~(d?64:r))||(i&=-4);var f=[e,i,s,d?a:t,d?l:t,d?t:a,d?t:l,c,h,u],p=n.apply(t,f);return ko(e)&&Io(p,f),p.placeholder=o,$o(p,e,i)}function Kr(t){var e=zt[t];return function(t,i){if(t=da(t),(i=null==i?0:bi(ha(i),292))&&De(t)){var n=(pa(t)+"e").split("e");return+((n=(pa(e(n[0]+"e"+(+n[1]+i)))+"e").split("e"))[0]+"e"+(+n[1]-i))}return e(t)}}var Ur=zi&&1/si(new zi([,-0]))[1]==s?function(t){return new zi(t)}:rl;function Hr(t){return function(e){var i=ho(e);return i==k?ni(e):i==z?ai(e):function(t,e){return Te(e,(function(e){return[e,t[e]]}))}(e,t(e))}}function Gr(i,s,a,l,c,h,u,d){var f=2&s;if(!f&&"function"!=typeof i)throw new Mt(e);var p=l?l.length:0;if(p||(s&=-97,l=c=t),u=u===t?u:pi(ha(u),0),d=d===t?d:ha(d),p-=c?c.length:0,64&s){var b=l,g=c;l=c=t}var v=f?t:eo(i),k=[i,s,a,l,c,b,g,h,u,d];if(v&&function(t,e){var i=t[1],r=e[1],s=i|r;if(!(s<131||(r==o&&8==i||r==o&&256==i&&t[7].length<=e[8]||384==r&&e[7].length<=e[8]&&8==i)))return t;1&r&&(t[2]=e[2],s|=1&i?0:4);var a=e[3];if(a){var l=t[3];t[3]=l?zr(l,a,e[4]):a,t[4]=l?oi(t[3],n):e[4]}(a=e[5])&&(t[5]=(l=t[5])?Cr(l,a,e[6]):a,t[6]=l?oi(t[5],n):e[6]),(a=e[7])&&(t[7]=a),r&o&&(t[8]=null==t[8]?e[8]:bi(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=s}(k,v),i=k[0],s=k[1],a=k[2],l=k[3],c=k[4],!(d=k[9]=k[9]===t?f?0:i.length:pi(k[9]-p,0))&&24&s&&(s&=-25),s&&1!=s)m=8==s||16==s?function(e,i,n){var r=_r(e);return function o(){for(var s=arguments.length,a=mt(s),l=s,c=no(o);l--;)a[l]=arguments[l];var h=s<3&&a[0]!==c&&a[s-1]!==c?[]:oi(a,c);return(s-=h.length)<n?Nr(e,i,Fr,o.placeholder,t,a,h,t,t,n-s):xe(this&&this!==he&&this instanceof o?r:e,this,a)}}(i,s,d):s!=r&&33!=s||c.length?Fr.apply(t,k):function(t,e,i,n){var r=1&e,o=_r(t);return function e(){for(var s=-1,a=arguments.length,l=-1,c=n.length,h=mt(c+a),u=this&&this!==he&&this instanceof e?o:t;++l<c;)h[l]=n[l];for(;a--;)h[l++]=arguments[++s];return xe(u,r?i:this,h)}}(i,s,a,l);else var m=function(t,e,i){var n=1&e,r=_r(t);return function e(){return(this&&this!==he&&this instanceof e?r:t).apply(n?i:this,arguments)}}(i,s,a);return $o((v?Xn:Io)(m,k),i,s)}function Yr(e,i,n,r){return e===t||Fs(e,$t[n])&&!Ot.call(r,n)?i:e}function qr(e,i,n,r,o,s){return Xs(e)&&Xs(i)&&(s.set(i,e),Ln(e,i,t,qr,s),s.delete(i)),e}function Xr(e){return ta(e)?t:e}function Zr(e,i,n,r,o,s){var a=1&n,l=e.length,c=i.length;if(l!=c&&!(a&&c>l))return!1;var h=s.get(e),u=s.get(i);if(h&&u)return h==i&&u==e;var d=-1,f=!0,p=2&n?new Ki:t;for(s.set(e,i),s.set(i,e);++d<l;){var b=e[d],g=i[d];if(r)var v=a?r(g,b,d,i,e,s):r(b,g,d,e,i,s);if(v!==t){if(v)continue;f=!1;break}if(p){if(!Ee(i,(function(t,e){if(!Xe(p,e)&&(b===t||o(b,t,n,r,s)))return p.push(e)}))){f=!1;break}}else if(b!==g&&!o(b,g,n,r,s)){f=!1;break}}return s.delete(e),s.delete(i),f}function Jr(e){return jo(zo(e,t,Wo),e+"")}function Qr(t){return wn(t,Ma,lo)}function to(t){return wn(t,ja,co)}var eo=Ii?function(t){return Ii.get(t)}:rl;function io(t){for(var e=t.name+"",i=Mi[e],n=Ot.call(Mi,e)?i.length:0;n--;){var r=i[n],o=r.func;if(null==o||o==t)return r.name}return e}function no(t){return(Ot.call(Fi,"placeholder")?Fi:t).placeholder}function ro(){var t=Fi.iteratee||tl;return t=t===tl?On:t,arguments.length?t(arguments[0],arguments[1]):t}function oo(t,e){var i,n,r=t.__data__;return("string"==(n=typeof(i=e))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==i:null===i)?r["string"==typeof e?"string":"hash"]:r.map}function so(t){for(var e=Ma(t),i=e.length;i--;){var n=e[i],r=t[n];e[i]=[n,r,wo(r)]}return e}function ao(e,i){var n=function(e,i){return null==e?t:e[i]}(e,i);return An(n)?n:t}var lo=pe?function(t){return null==t?[]:(t=Ct(t),Me(pe(t),(function(e){return Ut.call(t,e)})))}:ul,co=pe?function(t){for(var e=[];t;)Ae(e,lo(t)),t=Nt(t);return e}:ul,ho=xn;function uo(t,e,i){for(var n=-1,r=(e=br(e,t)).length,o=!1;++n<r;){var s=_o(e[n]);if(!(o=null!=t&&i(t,s)))break;t=t[s]}return o||++n!=r?o:!!(r=null==t?0:t.length)&&qs(r)&&bo(s,r)&&(Ps(t)||Bs(t))}function fo(t){return"function"!=typeof t.constructor||yo(t)?{}:Ri(Nt(t))}function po(t){return Ps(t)||Bs(t)||!!(Gt&&t&&t[Gt])}function bo(t,e){var i=typeof t;return!!(e=null==e?a:e)&&("number"==i||"symbol"!=i&&pt.test(t))&&t>-1&&t%1==0&&t<e}function go(t,e,i){if(!Xs(i))return!1;var n=typeof e;return!!("number"==n?Vs(i)&&bo(e,i.length):"string"==n&&e in i)&&Fs(i[e],t)}function vo(t,e){if(Ps(t))return!1;var i=typeof t;return!("number"!=i&&"symbol"!=i&&"boolean"!=i&&null!=t&&!ra(t))||q.test(t)||!Y.test(t)||null!=e&&t in Ct(e)}function ko(t){var e=io(t),i=Fi[e];if("function"!=typeof i||!(e in Pi.prototype))return!1;if(t===i)return!0;var n=eo(i);return!!n&&t===n[0]}(yi&&ho(new yi(new ArrayBuffer(1)))!=j||wi&&ho(new wi)!=k||xi&&ho(xi.resolve())!=w||zi&&ho(new zi)!=z||Ci&&ho(new Ci)!=I)&&(ho=function(e){var i=xn(e),n=i==y?e.constructor:t,r=n?Eo(n):"";if(r)switch(r){case ji:return j;case $i:return k;case Ti:return w;case Ai:return z;case Oi:return I}return i});var mo=Tt?Gs:dl;function yo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||$t)}function wo(t){return t==t&&!Xs(t)}function xo(e,i){return function(n){return null!=n&&n[e]===i&&(i!==t||e in Ct(n))}}function zo(e,i,n){return i=pi(i===t?e.length-1:i,0),function(){for(var t=arguments,r=-1,o=pi(t.length-i,0),s=mt(o);++r<o;)s[r]=t[i+r];r=-1;for(var a=mt(i+1);++r<i;)a[r]=t[r];return a[i]=n(s),xe(e,this,a)}}function Co(t,e){return e.length<2?t:yn(t,Qn(e,0,-1))}function So(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var Io=To(Xn),Mo=ce||function(t,e){return he.setTimeout(t,e)},jo=To(Zn);function $o(t,e,i){var n=e+"";return jo(t,function(t,e){var i=e.length;if(!i)return t;var n=i-1;return e[n]=(i>1?"& ":"")+e[n],e=e.join(i>2?", ":" "),t.replace(it,"{\n/* [wrapped with "+e+"] */\n")}(n,function(t,e){return Ce(h,(function(i){var n="_."+i[0];e&i[1]&&!je(t,n)&&t.push(n)})),t.sort()}(function(t){var e=t.match(nt);return e?e[1].split(rt):[]}(n),i)))}function To(e){var i=0,n=0;return function(){var r=gi(),o=16-(r-n);if(n=r,o>0){if(++i>=800)return arguments[0]}else i=0;return e.apply(t,arguments)}}function Ao(e,i){var n=-1,r=e.length,o=r-1;for(i=i===t?r:i;++n<i;){var s=Kn(n,o),a=e[s];e[s]=e[n],e[n]=a}return e.length=i,e}var Oo=function(){var t=Ts((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(X,(function(t,i,n,r){e.push(n?r.replace(at,"$1"):i||t)})),e}),(function(t){return 500===e.size&&e.clear(),t})),e=t.cache;return t}();function _o(t){if("string"==typeof t||ra(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Eo(t){if(null!=t){try{return At.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function Do(t){if(t instanceof Pi)return t.clone();var e=new Bi(t.__wrapped__,t.__chain__);return e.__actions__=Sr(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var Fo=Hn((function(t,e){return Ns(t)?ln(t,pn(e,1,Ns,!0)):[]})),Ro=Hn((function(e,i){var n=Ho(i);return Ns(n)&&(n=t),Ns(e)?ln(e,pn(i,1,Ns,!0),ro(n,2)):[]})),Lo=Hn((function(e,i){var n=Ho(i);return Ns(n)&&(n=t),Ns(e)?ln(e,pn(i,1,Ns,!0),t,n):[]}));function Bo(t,e,i){var n=null==t?0:t.length;if(!n)return-1;var r=null==i?0:ha(i);return r<0&&(r=pi(n+r,0)),Re(t,ro(e,3),r)}function Po(e,i,n){var r=null==e?0:e.length;if(!r)return-1;var o=r-1;return n!==t&&(o=ha(n),o=n<0?pi(r+o,0):bi(o,r-1)),Re(e,ro(i,3),o,!0)}function Wo(t){return null!=t&&t.length?pn(t,1):[]}function Vo(e){return e&&e.length?e[0]:t}var No=Hn((function(t){var e=Te(t,fr);return e.length&&e[0]===t[0]?In(e):[]})),Ko=Hn((function(e){var i=Ho(e),n=Te(e,fr);return i===Ho(n)?i=t:n.pop(),n.length&&n[0]===e[0]?In(n,ro(i,2)):[]})),Uo=Hn((function(e){var i=Ho(e),n=Te(e,fr);return(i="function"==typeof i?i:t)&&n.pop(),n.length&&n[0]===e[0]?In(n,t,i):[]}));function Ho(e){var i=null==e?0:e.length;return i?e[i-1]:t}var Go=Hn(Yo);function Yo(t,e){return t&&t.length&&e&&e.length?Vn(t,e):t}var qo=Jr((function(t,e){var i=null==t?0:t.length,n=nn(t,e);return Nn(t,Te(e,(function(t){return bo(t,i)?+t:t})).sort(xr)),n}));function Xo(t){return null==t?t:mi.call(t)}var Zo=Hn((function(t){return sr(pn(t,1,Ns,!0))})),Jo=Hn((function(e){var i=Ho(e);return Ns(i)&&(i=t),sr(pn(e,1,Ns,!0),ro(i,2))})),Qo=Hn((function(e){var i=Ho(e);return i="function"==typeof i?i:t,sr(pn(e,1,Ns,!0),t,i)}));function ts(t){if(!t||!t.length)return[];var e=0;return t=Me(t,(function(t){if(Ns(t))return e=pi(t.length,e),!0})),He(e,(function(e){return Te(t,Ve(e))}))}function es(e,i){if(!e||!e.length)return[];var n=ts(e);return null==i?n:Te(n,(function(e){return xe(i,t,e)}))}var is=Hn((function(t,e){return Ns(t)?ln(t,e):[]})),ns=Hn((function(t){return ur(Me(t,Ns))})),rs=Hn((function(e){var i=Ho(e);return Ns(i)&&(i=t),ur(Me(e,Ns),ro(i,2))})),os=Hn((function(e){var i=Ho(e);return i="function"==typeof i?i:t,ur(Me(e,Ns),t,i)})),ss=Hn(ts),as=Hn((function(e){var i=e.length,n=i>1?e[i-1]:t;return n="function"==typeof n?(e.pop(),n):t,es(e,n)}));function ls(t){var e=Fi(t);return e.__chain__=!0,e}function cs(t,e){return e(t)}var hs=Jr((function(e){var i=e.length,n=i?e[0]:0,r=this.__wrapped__,o=function(t){return nn(t,e)};return!(i>1||this.__actions__.length)&&r instanceof Pi&&bo(n)?((r=r.slice(n,+n+(i?1:0))).__actions__.push({func:cs,args:[o],thisArg:t}),new Bi(r,this.__chain__).thru((function(e){return i&&!e.length&&e.push(t),e}))):this.thru(o)})),us=Mr((function(t,e,i){Ot.call(t,i)?++t[i]:en(t,i,1)})),ds=Er(Bo),fs=Er(Po);function ps(t,e){return(Ps(t)?Ce:cn)(t,ro(e,3))}function bs(t,e){return(Ps(t)?Se:hn)(t,ro(e,3))}var gs=Mr((function(t,e,i){Ot.call(t,i)?t[i].push(e):en(t,i,[e])})),vs=Hn((function(t,e,i){var n=-1,r="function"==typeof e,o=Vs(t)?mt(t.length):[];return cn(t,(function(t){o[++n]=r?xe(e,t,i):Mn(t,e,i)})),o})),ks=Mr((function(t,e,i){en(t,i,e)}));function ms(t,e){return(Ps(t)?Te:Dn)(t,ro(e,3))}var ys=Mr((function(t,e,i){t[i?0:1].push(e)}),(function(){return[[],[]]})),ws=Hn((function(t,e){if(null==t)return[];var i=e.length;return i>1&&go(t,e[0],e[1])?e=[]:i>2&&go(e[0],e[1],e[2])&&(e=[e[0]]),Pn(t,pn(e,1),[])})),xs=le||function(){return he.Date.now()};function zs(e,i,n){return i=n?t:i,Gr(e,o,t,t,t,t,i=e&&null==i?e.length:i)}function Cs(i,n){var r;if("function"!=typeof n)throw new Mt(e);return i=ha(i),function(){return--i>0&&(r=n.apply(this,arguments)),i<=1&&(n=t),r}}var Ss=Hn((function(t,e,i){var n=1;if(i.length){var o=oi(i,no(Ss));n|=r}return Gr(t,n,e,i,o)})),Is=Hn((function(t,e,i){var n=3;if(i.length){var o=oi(i,no(Is));n|=r}return Gr(e,n,t,i,o)}));function Ms(i,n,r){var o,s,a,l,c,h,u=0,d=!1,f=!1,p=!0;if("function"!=typeof i)throw new Mt(e);function b(e){var n=o,r=s;return o=s=t,u=e,l=i.apply(r,n)}function g(e){var i=e-h;return h===t||i>=n||i<0||f&&e-u>=a}function v(){var t=xs();if(g(t))return k(t);c=Mo(v,function(t){var e=n-(t-h);return f?bi(e,a-(t-u)):e}(t))}function k(e){return c=t,p&&o?b(e):(o=s=t,l)}function m(){var e=xs(),i=g(e);if(o=arguments,s=this,h=e,i){if(c===t)return function(t){return u=t,c=Mo(v,n),d?b(t):l}(h);if(f)return kr(c),c=Mo(v,n),b(h)}return c===t&&(c=Mo(v,n)),l}return n=da(n)||0,Xs(r)&&(d=!!r.leading,a=(f="maxWait"in r)?pi(da(r.maxWait)||0,n):a,p="trailing"in r?!!r.trailing:p),m.cancel=function(){c!==t&&kr(c),u=0,o=h=s=c=t},m.flush=function(){return c===t?l:k(xs())},m}var js=Hn((function(t,e){return an(t,1,e)})),$s=Hn((function(t,e,i){return an(t,da(e)||0,i)}));function Ts(t,i){if("function"!=typeof t||null!=i&&"function"!=typeof i)throw new Mt(e);var n=function(){var e=arguments,r=i?i.apply(this,e):e[0],o=n.cache;if(o.has(r))return o.get(r);var s=t.apply(this,e);return n.cache=o.set(r,s)||o,s};return n.cache=new(Ts.Cache||Ni),n}function As(t){if("function"!=typeof t)throw new Mt(e);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ts.Cache=Ni;var Os=gr((function(t,e){var i=(e=1==e.length&&Ps(e[0])?Te(e[0],Ye(ro())):Te(pn(e,1),Ye(ro()))).length;return Hn((function(n){for(var r=-1,o=bi(n.length,i);++r<o;)n[r]=e[r].call(this,n[r]);return xe(t,this,n)}))})),_s=Hn((function(e,i){var n=oi(i,no(_s));return Gr(e,r,t,i,n)})),Es=Hn((function(e,i){var n=oi(i,no(Es));return Gr(e,64,t,i,n)})),Ds=Jr((function(e,i){return Gr(e,256,t,t,t,i)}));function Fs(t,e){return t===e||t!=t&&e!=e}var Rs=Vr(zn),Ls=Vr((function(t,e){return t>=e})),Bs=jn(function(){return arguments}())?jn:function(t){return Zs(t)&&Ot.call(t,"callee")&&!Ut.call(t,"callee")},Ps=mt.isArray,Ws=ge?Ye(ge):function(t){return Zs(t)&&xn(t)==M};function Vs(t){return null!=t&&qs(t.length)&&!Gs(t)}function Ns(t){return Zs(t)&&Vs(t)}var Ks=be||dl,Us=ve?Ye(ve):function(t){return Zs(t)&&xn(t)==p};function Hs(t){if(!Zs(t))return!1;var e=xn(t);return e==b||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!ta(t)}function Gs(t){if(!Xs(t))return!1;var e=xn(t);return e==g||e==v||"[object AsyncFunction]"==e||"[object Proxy]"==e}function Ys(t){return"number"==typeof t&&t==ha(t)}function qs(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=a}function Xs(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Zs(t){return null!=t&&"object"==typeof t}var Js=ke?Ye(ke):function(t){return Zs(t)&&ho(t)==k};function Qs(t){return"number"==typeof t||Zs(t)&&xn(t)==m}function ta(t){if(!Zs(t)||xn(t)!=y)return!1;var e=Nt(t);if(null===e)return!0;var i=Ot.call(e,"constructor")&&e.constructor;return"function"==typeof i&&i instanceof i&&At.call(i)==Ft}var ea=me?Ye(me):function(t){return Zs(t)&&xn(t)==x},ia=ye?Ye(ye):function(t){return Zs(t)&&ho(t)==z};function na(t){return"string"==typeof t||!Ps(t)&&Zs(t)&&xn(t)==C}function ra(t){return"symbol"==typeof t||Zs(t)&&xn(t)==S}var oa=we?Ye(we):function(t){return Zs(t)&&qs(t.length)&&!!ne[xn(t)]},sa=Vr(En),aa=Vr((function(t,e){return t<=e}));function la(t){if(!t)return[];if(Vs(t))return na(t)?ci(t):Sr(t);if(Yt&&t[Yt])return function(t){for(var e,i=[];!(e=t.next()).done;)i.push(e.value);return i}(t[Yt]());var e=ho(t);return(e==k?ni:e==z?si:Fa)(t)}function ca(t){return t?(t=da(t))===s||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function ha(t){var e=ca(t),i=e%1;return e==e?i?e-i:e:0}function ua(t){return t?rn(ha(t),0,c):0}function da(t){if("number"==typeof t)return t;if(ra(t))return l;if(Xs(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Xs(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=Ge(t);var i=ut.test(t);return i||ft.test(t)?ae(t.slice(2),i?2:8):ht.test(t)?l:+t}function fa(t){return Ir(t,ja(t))}function pa(t){return null==t?"":or(t)}var ba=jr((function(t,e){if(yo(e)||Vs(e))Ir(e,Ma(e),t);else for(var i in e)Ot.call(e,i)&&Zi(t,i,e[i])})),ga=jr((function(t,e){Ir(e,ja(e),t)})),va=jr((function(t,e,i,n){Ir(e,ja(e),t,n)})),ka=jr((function(t,e,i,n){Ir(e,Ma(e),t,n)})),ma=Jr(nn),ya=Hn((function(e,i){e=Ct(e);var n=-1,r=i.length,o=r>2?i[2]:t;for(o&&go(i[0],i[1],o)&&(r=1);++n<r;)for(var s=i[n],a=ja(s),l=-1,c=a.length;++l<c;){var h=a[l],u=e[h];(u===t||Fs(u,$t[h])&&!Ot.call(e,h))&&(e[h]=s[h])}return e})),wa=Hn((function(e){return e.push(t,qr),xe(Ta,t,e)}));function xa(e,i,n){var r=null==e?t:yn(e,i);return r===t?n:r}function za(t,e){return null!=t&&uo(t,e,Sn)}var Ca=Rr((function(t,e,i){null!=e&&"function"!=typeof e.toString&&(e=Dt.call(e)),t[e]=i}),Xa(Qa)),Sa=Rr((function(t,e,i){null!=e&&"function"!=typeof e.toString&&(e=Dt.call(e)),Ot.call(t,e)?t[e].push(i):t[e]=[i]}),ro),Ia=Hn(Mn);function Ma(t){return Vs(t)?Hi(t):_n(t)}function ja(t){return Vs(t)?Hi(t,!0):function(t){if(!Xs(t))return function(t){var e=[];if(null!=t)for(var i in Ct(t))e.push(i);return e}(t);var e=yo(t),i=[];for(var n in t)("constructor"!=n||!e&&Ot.call(t,n))&&i.push(n);return i}(t)}var $a=jr((function(t,e,i){Ln(t,e,i)})),Ta=jr((function(t,e,i,n){Ln(t,e,i,n)})),Aa=Jr((function(t,e){var i={};if(null==t)return i;var n=!1;e=Te(e,(function(e){return e=br(e,t),n||(n=e.length>1),e})),Ir(t,to(t),i),n&&(i=on(i,7,Xr));for(var r=e.length;r--;)ar(i,e[r]);return i})),Oa=Jr((function(t,e){return null==t?{}:function(t,e){return Wn(t,e,(function(e,i){return za(t,i)}))}(t,e)}));function _a(t,e){if(null==t)return{};var i=Te(to(t),(function(t){return[t]}));return e=ro(e),Wn(t,i,(function(t,i){return e(t,i[0])}))}var Ea=Hr(Ma),Da=Hr(ja);function Fa(t){return null==t?[]:qe(t,Ma(t))}var Ra=Or((function(t,e,i){return e=e.toLowerCase(),t+(i?La(e):e)}));function La(t){return Ha(pa(t).toLowerCase())}function Ba(t){return(t=pa(t))&&t.replace(bt,Qe).replace(Xt,"")}var Pa=Or((function(t,e,i){return t+(i?"-":"")+e.toLowerCase()})),Wa=Or((function(t,e,i){return t+(i?" ":"")+e.toLowerCase()})),Va=Ar("toLowerCase"),Na=Or((function(t,e,i){return t+(i?"_":"")+e.toLowerCase()})),Ka=Or((function(t,e,i){return t+(i?" ":"")+Ha(e)})),Ua=Or((function(t,e,i){return t+(i?" ":"")+e.toUpperCase()})),Ha=Ar("toUpperCase");function Ga(e,i,n){return e=pa(e),(i=n?t:i)===t?function(t){return te.test(t)}(e)?function(t){return t.match(Jt)||[]}(e):function(t){return t.match(ot)||[]}(e):e.match(i)||[]}var Ya=Hn((function(e,i){try{return xe(e,t,i)}catch(t){return Hs(t)?t:new wt(t)}})),qa=Jr((function(t,e){return Ce(e,(function(e){e=_o(e),en(t,e,Ss(t[e],t))})),t}));function Xa(t){return function(){return t}}var Za=Dr(),Ja=Dr(!0);function Qa(t){return t}function tl(t){return On("function"==typeof t?t:on(t,1))}var el=Hn((function(t,e){return function(i){return Mn(i,t,e)}})),il=Hn((function(t,e){return function(i){return Mn(t,i,e)}}));function nl(t,e,i){var n=Ma(e),r=mn(e,n);null!=i||Xs(e)&&(r.length||!n.length)||(i=e,e=t,t=this,r=mn(e,Ma(e)));var o=!(Xs(i)&&"chain"in i&&!i.chain),s=Gs(t);return Ce(r,(function(i){var n=e[i];t[i]=n,s&&(t.prototype[i]=function(){var e=this.__chain__;if(o||e){var i=t(this.__wrapped__);return(i.__actions__=Sr(this.__actions__)).push({func:n,args:arguments,thisArg:t}),i.__chain__=e,i}return n.apply(t,Ae([this.value()],arguments))})})),t}function rl(){}var ol=Br(Te),sl=Br(Ie),al=Br(Ee);function ll(t){return vo(t)?Ve(_o(t)):function(t){return function(e){return yn(e,t)}}(t)}var cl=Wr(),hl=Wr(!0);function ul(){return[]}function dl(){return!1}var fl,pl=Lr((function(t,e){return t+e}),0),bl=Kr("ceil"),gl=Lr((function(t,e){return t/e}),1),vl=Kr("floor"),kl=Lr((function(t,e){return t*e}),1),ml=Kr("round"),yl=Lr((function(t,e){return t-e}),0);return Fi.after=function(t,i){if("function"!=typeof i)throw new Mt(e);return t=ha(t),function(){if(--t<1)return i.apply(this,arguments)}},Fi.ary=zs,Fi.assign=ba,Fi.assignIn=ga,Fi.assignInWith=va,Fi.assignWith=ka,Fi.at=ma,Fi.before=Cs,Fi.bind=Ss,Fi.bindAll=qa,Fi.bindKey=Is,Fi.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Ps(t)?t:[t]},Fi.chain=ls,Fi.chunk=function(e,i,n){i=(n?go(e,i,n):i===t)?1:pi(ha(i),0);var r=null==e?0:e.length;if(!r||i<1)return[];for(var o=0,s=0,a=mt(ue(r/i));o<r;)a[s++]=Qn(e,o,o+=i);return a},Fi.compact=function(t){for(var e=-1,i=null==t?0:t.length,n=0,r=[];++e<i;){var o=t[e];o&&(r[n++]=o)}return r},Fi.concat=function(){var t=arguments.length;if(!t)return[];for(var e=mt(t-1),i=arguments[0],n=t;n--;)e[n-1]=arguments[n];return Ae(Ps(i)?Sr(i):[i],pn(e,1))},Fi.cond=function(t){var i=null==t?0:t.length,n=ro();return t=i?Te(t,(function(t){if("function"!=typeof t[1])throw new Mt(e);return[n(t[0]),t[1]]})):[],Hn((function(e){for(var n=-1;++n<i;){var r=t[n];if(xe(r[0],this,e))return xe(r[1],this,e)}}))},Fi.conforms=function(t){return function(t){var e=Ma(t);return function(i){return sn(i,t,e)}}(on(t,1))},Fi.constant=Xa,Fi.countBy=us,Fi.create=function(t,e){var i=Ri(t);return null==e?i:tn(i,e)},Fi.curry=function e(i,n,r){var o=Gr(i,8,t,t,t,t,t,n=r?t:n);return o.placeholder=e.placeholder,o},Fi.curryRight=function e(i,n,r){var o=Gr(i,16,t,t,t,t,t,n=r?t:n);return o.placeholder=e.placeholder,o},Fi.debounce=Ms,Fi.defaults=ya,Fi.defaultsDeep=wa,Fi.defer=js,Fi.delay=$s,Fi.difference=Fo,Fi.differenceBy=Ro,Fi.differenceWith=Lo,Fi.drop=function(e,i,n){var r=null==e?0:e.length;return r?Qn(e,(i=n||i===t?1:ha(i))<0?0:i,r):[]},Fi.dropRight=function(e,i,n){var r=null==e?0:e.length;return r?Qn(e,0,(i=r-(i=n||i===t?1:ha(i)))<0?0:i):[]},Fi.dropRightWhile=function(t,e){return t&&t.length?cr(t,ro(e,3),!0,!0):[]},Fi.dropWhile=function(t,e){return t&&t.length?cr(t,ro(e,3),!0):[]},Fi.fill=function(e,i,n,r){var o=null==e?0:e.length;return o?(n&&"number"!=typeof n&&go(e,i,n)&&(n=0,r=o),function(e,i,n,r){var o=e.length;for((n=ha(n))<0&&(n=-n>o?0:o+n),(r=r===t||r>o?o:ha(r))<0&&(r+=o),r=n>r?0:ua(r);n<r;)e[n++]=i;return e}(e,i,n,r)):[]},Fi.filter=function(t,e){return(Ps(t)?Me:fn)(t,ro(e,3))},Fi.flatMap=function(t,e){return pn(ms(t,e),1)},Fi.flatMapDeep=function(t,e){return pn(ms(t,e),s)},Fi.flatMapDepth=function(e,i,n){return n=n===t?1:ha(n),pn(ms(e,i),n)},Fi.flatten=Wo,Fi.flattenDeep=function(t){return null!=t&&t.length?pn(t,s):[]},Fi.flattenDepth=function(e,i){return null!=e&&e.length?pn(e,i=i===t?1:ha(i)):[]},Fi.flip=function(t){return Gr(t,512)},Fi.flow=Za,Fi.flowRight=Ja,Fi.fromPairs=function(t){for(var e=-1,i=null==t?0:t.length,n={};++e<i;){var r=t[e];en(n,r[0],r[1])}return n},Fi.functions=function(t){return null==t?[]:mn(t,Ma(t))},Fi.functionsIn=function(t){return null==t?[]:mn(t,ja(t))},Fi.groupBy=gs,Fi.initial=function(t){return null!=t&&t.length?Qn(t,0,-1):[]},Fi.intersection=No,Fi.intersectionBy=Ko,Fi.intersectionWith=Uo,Fi.invert=Ca,Fi.invertBy=Sa,Fi.invokeMap=vs,Fi.iteratee=tl,Fi.keyBy=ks,Fi.keys=Ma,Fi.keysIn=ja,Fi.map=ms,Fi.mapKeys=function(t,e){var i={};return e=ro(e,3),vn(t,(function(t,n,r){en(i,e(t,n,r),t)})),i},Fi.mapValues=function(t,e){var i={};return e=ro(e,3),vn(t,(function(t,n,r){en(i,n,e(t,n,r))})),i},Fi.matches=function(t){return Fn(on(t,1))},Fi.matchesProperty=function(t,e){return Rn(t,on(e,1))},Fi.memoize=Ts,Fi.merge=$a,Fi.mergeWith=Ta,Fi.method=el,Fi.methodOf=il,Fi.mixin=nl,Fi.negate=As,Fi.nthArg=function(t){return t=ha(t),Hn((function(e){return Bn(e,t)}))},Fi.omit=Aa,Fi.omitBy=function(t,e){return _a(t,As(ro(e)))},Fi.once=function(t){return Cs(2,t)},Fi.orderBy=function(e,i,n,r){return null==e?[]:(Ps(i)||(i=null==i?[]:[i]),Ps(n=r?t:n)||(n=null==n?[]:[n]),Pn(e,i,n))},Fi.over=ol,Fi.overArgs=Os,Fi.overEvery=sl,Fi.overSome=al,Fi.partial=_s,Fi.partialRight=Es,Fi.partition=ys,Fi.pick=Oa,Fi.pickBy=_a,Fi.property=ll,Fi.propertyOf=function(e){return function(i){return null==e?t:yn(e,i)}},Fi.pull=Go,Fi.pullAll=Yo,Fi.pullAllBy=function(t,e,i){return t&&t.length&&e&&e.length?Vn(t,e,ro(i,2)):t},Fi.pullAllWith=function(e,i,n){return e&&e.length&&i&&i.length?Vn(e,i,t,n):e},Fi.pullAt=qo,Fi.range=cl,Fi.rangeRight=hl,Fi.rearg=Ds,Fi.reject=function(t,e){return(Ps(t)?Me:fn)(t,As(ro(e,3)))},Fi.remove=function(t,e){var i=[];if(!t||!t.length)return i;var n=-1,r=[],o=t.length;for(e=ro(e,3);++n<o;){var s=t[n];e(s,n,t)&&(i.push(s),r.push(n))}return Nn(t,r),i},Fi.rest=function(i,n){if("function"!=typeof i)throw new Mt(e);return Hn(i,n=n===t?n:ha(n))},Fi.reverse=Xo,Fi.sampleSize=function(e,i,n){return i=(n?go(e,i,n):i===t)?1:ha(i),(Ps(e)?Yi:Yn)(e,i)},Fi.set=function(t,e,i){return null==t?t:qn(t,e,i)},Fi.setWith=function(e,i,n,r){return r="function"==typeof r?r:t,null==e?e:qn(e,i,n,r)},Fi.shuffle=function(t){return(Ps(t)?qi:Jn)(t)},Fi.slice=function(e,i,n){var r=null==e?0:e.length;return r?(n&&"number"!=typeof n&&go(e,i,n)?(i=0,n=r):(i=null==i?0:ha(i),n=n===t?r:ha(n)),Qn(e,i,n)):[]},Fi.sortBy=ws,Fi.sortedUniq=function(t){return t&&t.length?nr(t):[]},Fi.sortedUniqBy=function(t,e){return t&&t.length?nr(t,ro(e,2)):[]},Fi.split=function(e,i,n){return n&&"number"!=typeof n&&go(e,i,n)&&(i=n=t),(n=n===t?c:n>>>0)?(e=pa(e))&&("string"==typeof i||null!=i&&!ea(i))&&!(i=or(i))&&ii(e)?vr(ci(e),0,n):e.split(i,n):[]},Fi.spread=function(t,i){if("function"!=typeof t)throw new Mt(e);return i=null==i?0:pi(ha(i),0),Hn((function(e){var n=e[i],r=vr(e,0,i);return n&&Ae(r,n),xe(t,this,r)}))},Fi.tail=function(t){var e=null==t?0:t.length;return e?Qn(t,1,e):[]},Fi.take=function(e,i,n){return e&&e.length?Qn(e,0,(i=n||i===t?1:ha(i))<0?0:i):[]},Fi.takeRight=function(e,i,n){var r=null==e?0:e.length;return r?Qn(e,(i=r-(i=n||i===t?1:ha(i)))<0?0:i,r):[]},Fi.takeRightWhile=function(t,e){return t&&t.length?cr(t,ro(e,3),!1,!0):[]},Fi.takeWhile=function(t,e){return t&&t.length?cr(t,ro(e,3)):[]},Fi.tap=function(t,e){return e(t),t},Fi.throttle=function(t,i,n){var r=!0,o=!0;if("function"!=typeof t)throw new Mt(e);return Xs(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),Ms(t,i,{leading:r,maxWait:i,trailing:o})},Fi.thru=cs,Fi.toArray=la,Fi.toPairs=Ea,Fi.toPairsIn=Da,Fi.toPath=function(t){return Ps(t)?Te(t,_o):ra(t)?[t]:Sr(Oo(pa(t)))},Fi.toPlainObject=fa,Fi.transform=function(t,e,i){var n=Ps(t),r=n||Ks(t)||oa(t);if(e=ro(e,4),null==i){var o=t&&t.constructor;i=r?n?new o:[]:Xs(t)&&Gs(o)?Ri(Nt(t)):{}}return(r?Ce:vn)(t,(function(t,n,r){return e(i,t,n,r)})),i},Fi.unary=function(t){return zs(t,1)},Fi.union=Zo,Fi.unionBy=Jo,Fi.unionWith=Qo,Fi.uniq=function(t){return t&&t.length?sr(t):[]},Fi.uniqBy=function(t,e){return t&&t.length?sr(t,ro(e,2)):[]},Fi.uniqWith=function(e,i){return i="function"==typeof i?i:t,e&&e.length?sr(e,t,i):[]},Fi.unset=function(t,e){return null==t||ar(t,e)},Fi.unzip=ts,Fi.unzipWith=es,Fi.update=function(t,e,i){return null==t?t:lr(t,e,pr(i))},Fi.updateWith=function(e,i,n,r){return r="function"==typeof r?r:t,null==e?e:lr(e,i,pr(n),r)},Fi.values=Fa,Fi.valuesIn=function(t){return null==t?[]:qe(t,ja(t))},Fi.without=is,Fi.words=Ga,Fi.wrap=function(t,e){return _s(pr(e),t)},Fi.xor=ns,Fi.xorBy=rs,Fi.xorWith=os,Fi.zip=ss,Fi.zipObject=function(t,e){return dr(t||[],e||[],Zi)},Fi.zipObjectDeep=function(t,e){return dr(t||[],e||[],qn)},Fi.zipWith=as,Fi.entries=Ea,Fi.entriesIn=Da,Fi.extend=ga,Fi.extendWith=va,nl(Fi,Fi),Fi.add=pl,Fi.attempt=Ya,Fi.camelCase=Ra,Fi.capitalize=La,Fi.ceil=bl,Fi.clamp=function(e,i,n){return n===t&&(n=i,i=t),n!==t&&(n=(n=da(n))==n?n:0),i!==t&&(i=(i=da(i))==i?i:0),rn(da(e),i,n)},Fi.clone=function(t){return on(t,4)},Fi.cloneDeep=function(t){return on(t,5)},Fi.cloneDeepWith=function(e,i){return on(e,5,i="function"==typeof i?i:t)},Fi.cloneWith=function(e,i){return on(e,4,i="function"==typeof i?i:t)},Fi.conformsTo=function(t,e){return null==e||sn(t,e,Ma(e))},Fi.deburr=Ba,Fi.defaultTo=function(t,e){return null==t||t!=t?e:t},Fi.divide=gl,Fi.endsWith=function(e,i,n){e=pa(e),i=or(i);var r=e.length,o=n=n===t?r:rn(ha(n),0,r);return(n-=i.length)>=0&&e.slice(n,o)==i},Fi.eq=Fs,Fi.escape=function(t){return(t=pa(t))&&K.test(t)?t.replace(V,ti):t},Fi.escapeRegExp=function(t){return(t=pa(t))&&J.test(t)?t.replace(Z,"\\$&"):t},Fi.every=function(e,i,n){var r=Ps(e)?Ie:un;return n&&go(e,i,n)&&(i=t),r(e,ro(i,3))},Fi.find=ds,Fi.findIndex=Bo,Fi.findKey=function(t,e){return Fe(t,ro(e,3),vn)},Fi.findLast=fs,Fi.findLastIndex=Po,Fi.findLastKey=function(t,e){return Fe(t,ro(e,3),kn)},Fi.floor=vl,Fi.forEach=ps,Fi.forEachRight=bs,Fi.forIn=function(t,e){return null==t?t:bn(t,ro(e,3),ja)},Fi.forInRight=function(t,e){return null==t?t:gn(t,ro(e,3),ja)},Fi.forOwn=function(t,e){return t&&vn(t,ro(e,3))},Fi.forOwnRight=function(t,e){return t&&kn(t,ro(e,3))},Fi.get=xa,Fi.gt=Rs,Fi.gte=Ls,Fi.has=function(t,e){return null!=t&&uo(t,e,Cn)},Fi.hasIn=za,Fi.head=Vo,Fi.identity=Qa,Fi.includes=function(t,e,i,n){t=Vs(t)?t:Fa(t),i=i&&!n?ha(i):0;var r=t.length;return i<0&&(i=pi(r+i,0)),na(t)?i<=r&&t.indexOf(e,i)>-1:!!r&&Le(t,e,i)>-1},Fi.indexOf=function(t,e,i){var n=null==t?0:t.length;if(!n)return-1;var r=null==i?0:ha(i);return r<0&&(r=pi(n+r,0)),Le(t,e,r)},Fi.inRange=function(e,i,n){return i=ca(i),n===t?(n=i,i=0):n=ca(n),function(t,e,i){return t>=bi(e,i)&&t<pi(e,i)}(e=da(e),i,n)},Fi.invoke=Ia,Fi.isArguments=Bs,Fi.isArray=Ps,Fi.isArrayBuffer=Ws,Fi.isArrayLike=Vs,Fi.isArrayLikeObject=Ns,Fi.isBoolean=function(t){return!0===t||!1===t||Zs(t)&&xn(t)==f},Fi.isBuffer=Ks,Fi.isDate=Us,Fi.isElement=function(t){return Zs(t)&&1===t.nodeType&&!ta(t)},Fi.isEmpty=function(t){if(null==t)return!0;if(Vs(t)&&(Ps(t)||"string"==typeof t||"function"==typeof t.splice||Ks(t)||oa(t)||Bs(t)))return!t.length;var e=ho(t);if(e==k||e==z)return!t.size;if(yo(t))return!_n(t).length;for(var i in t)if(Ot.call(t,i))return!1;return!0},Fi.isEqual=function(t,e){return $n(t,e)},Fi.isEqualWith=function(e,i,n){var r=(n="function"==typeof n?n:t)?n(e,i):t;return r===t?$n(e,i,t,n):!!r},Fi.isError=Hs,Fi.isFinite=function(t){return"number"==typeof t&&De(t)},Fi.isFunction=Gs,Fi.isInteger=Ys,Fi.isLength=qs,Fi.isMap=Js,Fi.isMatch=function(t,e){return t===e||Tn(t,e,so(e))},Fi.isMatchWith=function(e,i,n){return n="function"==typeof n?n:t,Tn(e,i,so(i),n)},Fi.isNaN=function(t){return Qs(t)&&t!=+t},Fi.isNative=function(t){if(mo(t))throw new wt("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return An(t)},Fi.isNil=function(t){return null==t},Fi.isNull=function(t){return null===t},Fi.isNumber=Qs,Fi.isObject=Xs,Fi.isObjectLike=Zs,Fi.isPlainObject=ta,Fi.isRegExp=ea,Fi.isSafeInteger=function(t){return Ys(t)&&t>=-9007199254740991&&t<=a},Fi.isSet=ia,Fi.isString=na,Fi.isSymbol=ra,Fi.isTypedArray=oa,Fi.isUndefined=function(e){return e===t},Fi.isWeakMap=function(t){return Zs(t)&&ho(t)==I},Fi.isWeakSet=function(t){return Zs(t)&&"[object WeakSet]"==xn(t)},Fi.join=function(t,e){return null==t?"":Ne.call(t,e)},Fi.kebabCase=Pa,Fi.last=Ho,Fi.lastIndexOf=function(e,i,n){var r=null==e?0:e.length;if(!r)return-1;var o=r;return n!==t&&(o=(o=ha(n))<0?pi(r+o,0):bi(o,r-1)),i==i?function(t,e,i){for(var n=i+1;n--;)if(t[n]===e)return n;return n}(e,i,o):Re(e,Pe,o,!0)},Fi.lowerCase=Wa,Fi.lowerFirst=Va,Fi.lt=sa,Fi.lte=aa,Fi.max=function(e){return e&&e.length?dn(e,Qa,zn):t},Fi.maxBy=function(e,i){return e&&e.length?dn(e,ro(i,2),zn):t},Fi.mean=function(t){return We(t,Qa)},Fi.meanBy=function(t,e){return We(t,ro(e,2))},Fi.min=function(e){return e&&e.length?dn(e,Qa,En):t},Fi.minBy=function(e,i){return e&&e.length?dn(e,ro(i,2),En):t},Fi.stubArray=ul,Fi.stubFalse=dl,Fi.stubObject=function(){return{}},Fi.stubString=function(){return""},Fi.stubTrue=function(){return!0},Fi.multiply=kl,Fi.nth=function(e,i){return e&&e.length?Bn(e,ha(i)):t},Fi.noConflict=function(){return he._===this&&(he._=Rt),this},Fi.noop=rl,Fi.now=xs,Fi.pad=function(t,e,i){t=pa(t);var n=(e=ha(e))?li(t):0;if(!e||n>=e)return t;var r=(e-n)/2;return Pr(de(r),i)+t+Pr(ue(r),i)},Fi.padEnd=function(t,e,i){t=pa(t);var n=(e=ha(e))?li(t):0;return e&&n<e?t+Pr(e-n,i):t},Fi.padStart=function(t,e,i){t=pa(t);var n=(e=ha(e))?li(t):0;return e&&n<e?Pr(e-n,i)+t:t},Fi.parseInt=function(t,e,i){return i||null==e?e=0:e&&(e=+e),vi(pa(t).replace(tt,""),e||0)},Fi.random=function(e,i,n){if(n&&"boolean"!=typeof n&&go(e,i,n)&&(i=n=t),n===t&&("boolean"==typeof i?(n=i,i=t):"boolean"==typeof e&&(n=e,e=t)),e===t&&i===t?(e=0,i=1):(e=ca(e),i===t?(i=e,e=0):i=ca(i)),e>i){var r=e;e=i,i=r}if(n||e%1||i%1){var o=ki();return bi(e+o*(i-e+se("1e-"+((o+"").length-1))),i)}return Kn(e,i)},Fi.reduce=function(t,e,i){var n=Ps(t)?Oe:Ke,r=arguments.length<3;return n(t,ro(e,4),i,r,cn)},Fi.reduceRight=function(t,e,i){var n=Ps(t)?_e:Ke,r=arguments.length<3;return n(t,ro(e,4),i,r,hn)},Fi.repeat=function(e,i,n){return i=(n?go(e,i,n):i===t)?1:ha(i),Un(pa(e),i)},Fi.replace=function(){var t=arguments,e=pa(t[0]);return t.length<3?e:e.replace(t[1],t[2])},Fi.result=function(e,i,n){var r=-1,o=(i=br(i,e)).length;for(o||(o=1,e=t);++r<o;){var s=null==e?t:e[_o(i[r])];s===t&&(r=o,s=n),e=Gs(s)?s.call(e):s}return e},Fi.round=ml,Fi.runInContext=Q,Fi.sample=function(t){return(Ps(t)?Gi:Gn)(t)},Fi.size=function(t){if(null==t)return 0;if(Vs(t))return na(t)?li(t):t.length;var e=ho(t);return e==k||e==z?t.size:_n(t).length},Fi.snakeCase=Na,Fi.some=function(e,i,n){var r=Ps(e)?Ee:tr;return n&&go(e,i,n)&&(i=t),r(e,ro(i,3))},Fi.sortedIndex=function(t,e){return er(t,e)},Fi.sortedIndexBy=function(t,e,i){return ir(t,e,ro(i,2))},Fi.sortedIndexOf=function(t,e){var i=null==t?0:t.length;if(i){var n=er(t,e);if(n<i&&Fs(t[n],e))return n}return-1},Fi.sortedLastIndex=function(t,e){return er(t,e,!0)},Fi.sortedLastIndexBy=function(t,e,i){return ir(t,e,ro(i,2),!0)},Fi.sortedLastIndexOf=function(t,e){if(null!=t&&t.length){var i=er(t,e,!0)-1;if(Fs(t[i],e))return i}return-1},Fi.startCase=Ka,Fi.startsWith=function(t,e,i){return t=pa(t),i=null==i?0:rn(ha(i),0,t.length),e=or(e),t.slice(i,i+e.length)==e},Fi.subtract=yl,Fi.sum=function(t){return t&&t.length?Ue(t,Qa):0},Fi.sumBy=function(t,e){return t&&t.length?Ue(t,ro(e,2)):0},Fi.template=function(e,i,n){var r=Fi.templateSettings;n&&go(e,i,n)&&(i=t),e=pa(e),i=ka({},i,r,Yr);var o=ka({},i.imports,r.imports,Yr),s=Ma(o),a=qe(o,s);Ce(s,(function(t){if(st.test(t))throw new wt("Invalid `imports` option passed into `_.template`")}));var l,c,h=0,u=i.interpolate||gt,d="__p += '",f=St((i.escape||gt).source+"|"+u.source+"|"+(u===G?lt:gt).source+"|"+(i.evaluate||gt).source+"|$","g"),p="//# sourceURL="+(Ot.call(i,"sourceURL")?(i.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++ie+"]")+"\n";e.replace(f,(function(t,i,n,r,o,s){return n||(n=r),d+=e.slice(h,s).replace(vt,ei),i&&(l=!0,d+="' +\n__e("+i+") +\n'"),o&&(c=!0,d+="';\n"+o+";\n__p += '"),n&&(d+="' +\n((__t = ("+n+")) == null ? '' : __t) +\n'"),h=s+t.length,t})),d+="';\n";var b=Ot.call(i,"variable")&&i.variable;if(b){if(st.test(b))throw new wt("Invalid `variable` option passed into `_.template`")}else d="with (obj) {\n"+d+"\n}\n";d=(c?d.replace(L,""):d).replace(B,"$1").replace(P,"$1;"),d="function("+(b||"obj")+") {\n"+(b?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(l?", __e = _.escape":"")+(c?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+d+"return __p\n}";var g=Ya((function(){return xt(s,p+"return "+d).apply(t,a)}));if(g.source=d,Hs(g))throw g;return g},Fi.times=function(t,e){if((t=ha(t))<1||t>a)return[];var i=c,n=bi(t,c);e=ro(e),t-=c;for(var r=He(n,e);++i<t;)e(i);return r},Fi.toFinite=ca,Fi.toInteger=ha,Fi.toLength=ua,Fi.toLower=function(t){return pa(t).toLowerCase()},Fi.toNumber=da,Fi.toSafeInteger=function(t){return t?rn(ha(t),-9007199254740991,a):0===t?t:0},Fi.toString=pa,Fi.toUpper=function(t){return pa(t).toUpperCase()},Fi.trim=function(e,i,n){if((e=pa(e))&&(n||i===t))return Ge(e);if(!e||!(i=or(i)))return e;var r=ci(e),o=ci(i);return vr(r,Ze(r,o),Je(r,o)+1).join("")},Fi.trimEnd=function(e,i,n){if((e=pa(e))&&(n||i===t))return e.slice(0,hi(e)+1);if(!e||!(i=or(i)))return e;var r=ci(e);return vr(r,0,Je(r,ci(i))+1).join("")},Fi.trimStart=function(e,i,n){if((e=pa(e))&&(n||i===t))return e.replace(tt,"");if(!e||!(i=or(i)))return e;var r=ci(e);return vr(r,Ze(r,ci(i))).join("")},Fi.truncate=function(e,i){var n=30,r="...";if(Xs(i)){var o="separator"in i?i.separator:o;n="length"in i?ha(i.length):n,r="omission"in i?or(i.omission):r}var s=(e=pa(e)).length;if(ii(e)){var a=ci(e);s=a.length}if(n>=s)return e;var l=n-li(r);if(l<1)return r;var c=a?vr(a,0,l).join(""):e.slice(0,l);if(o===t)return c+r;if(a&&(l+=c.length-l),ea(o)){if(e.slice(l).search(o)){var h,u=c;for(o.global||(o=St(o.source,pa(ct.exec(o))+"g")),o.lastIndex=0;h=o.exec(u);)var d=h.index;c=c.slice(0,d===t?l:d)}}else if(e.indexOf(or(o),l)!=l){var f=c.lastIndexOf(o);f>-1&&(c=c.slice(0,f))}return c+r},Fi.unescape=function(t){return(t=pa(t))&&N.test(t)?t.replace(W,ui):t},Fi.uniqueId=function(t){var e=++_t;return pa(t)+e},Fi.upperCase=Ua,Fi.upperFirst=Ha,Fi.each=ps,Fi.eachRight=bs,Fi.first=Vo,nl(Fi,(fl={},vn(Fi,(function(t,e){Ot.call(Fi.prototype,e)||(fl[e]=t)})),fl),{chain:!1}),Fi.VERSION="4.18.1",Ce(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Fi[t].placeholder=Fi})),Ce(["drop","take"],(function(e,i){Pi.prototype[e]=function(n){n=n===t?1:pi(ha(n),0);var r=this.__filtered__&&!i?new Pi(this):this.clone();return r.__filtered__?r.__takeCount__=bi(n,r.__takeCount__):r.__views__.push({size:bi(n,c),type:e+(r.__dir__<0?"Right":"")}),r},Pi.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),Ce(["filter","map","takeWhile"],(function(t,e){var i=e+1,n=1==i||3==i;Pi.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:ro(t,3),type:i}),e.__filtered__=e.__filtered__||n,e}})),Ce(["head","last"],(function(t,e){var i="take"+(e?"Right":"");Pi.prototype[t]=function(){return this[i](1).value()[0]}})),Ce(["initial","tail"],(function(t,e){var i="drop"+(e?"":"Right");Pi.prototype[t]=function(){return this.__filtered__?new Pi(this):this[i](1)}})),Pi.prototype.compact=function(){return this.filter(Qa)},Pi.prototype.find=function(t){return this.filter(t).head()},Pi.prototype.findLast=function(t){return this.reverse().find(t)},Pi.prototype.invokeMap=Hn((function(t,e){return"function"==typeof t?new Pi(this):this.map((function(i){return Mn(i,t,e)}))})),Pi.prototype.reject=function(t){return this.filter(As(ro(t)))},Pi.prototype.slice=function(e,i){e=ha(e);var n=this;return n.__filtered__&&(e>0||i<0)?new Pi(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),i!==t&&(n=(i=ha(i))<0?n.dropRight(-i):n.take(i-e)),n)},Pi.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Pi.prototype.toArray=function(){return this.take(c)},vn(Pi.prototype,(function(e,i){var n=/^(?:filter|find|map|reject)|While$/.test(i),r=/^(?:head|last)$/.test(i),o=Fi[r?"take"+("last"==i?"Right":""):i],s=r||/^find/.test(i);o&&(Fi.prototype[i]=function(){var i=this.__wrapped__,a=r?[1]:arguments,l=i instanceof Pi,c=a[0],h=l||Ps(i),u=function(t){var e=o.apply(Fi,Ae([t],a));return r&&d?e[0]:e};h&&n&&"function"==typeof c&&1!=c.length&&(l=h=!1);var d=this.__chain__,f=s&&!d,p=l&&!this.__actions__.length;if(!s&&h){i=p?i:new Pi(this);var b=e.apply(i,a);return b.__actions__.push({func:cs,args:[u],thisArg:t}),new Bi(b,d)}return f&&p?e.apply(this,a):(b=this.thru(u),f?r?b.value()[0]:b.value():b)})})),Ce(["pop","push","shift","sort","splice","unshift"],(function(t){var e=jt[t],i=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",n=/^(?:pop|shift)$/.test(t);Fi.prototype[t]=function(){var t=arguments;if(n&&!this.__chain__){var r=this.value();return e.apply(Ps(r)?r:[],t)}return this[i]((function(i){return e.apply(Ps(i)?i:[],t)}))}})),vn(Pi.prototype,(function(t,e){var i=Fi[e];if(i){var n=i.name+"";Ot.call(Mi,n)||(Mi[n]=[]),Mi[n].push({name:e,func:i})}})),Mi[Fr(t,2).name]=[{name:"wrapper",func:t}],Pi.prototype.clone=function(){var t=new Pi(this.__wrapped__);return t.__actions__=Sr(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=Sr(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=Sr(this.__views__),t},Pi.prototype.reverse=function(){if(this.__filtered__){var t=new Pi(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Pi.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,i=Ps(t),n=e<0,r=i?t.length:0,o=function(t,e,i){for(var n=-1,r=i.length;++n<r;){var o=i[n],s=o.size;switch(o.type){case"drop":t+=s;break;case"dropRight":e-=s;break;case"take":e=bi(e,t+s);break;case"takeRight":t=pi(t,e-s)}}return{start:t,end:e}}(0,r,this.__views__),s=o.start,a=o.end,l=a-s,c=n?a:s-1,h=this.__iteratees__,u=h.length,d=0,f=bi(l,this.__takeCount__);if(!i||!n&&r==l&&f==l)return hr(t,this.__actions__);var p=[];t:for(;l--&&d<f;){for(var b=-1,g=t[c+=e];++b<u;){var v=h[b],k=v.type,m=(0,v.iteratee)(g);if(2==k)g=m;else if(!m){if(1==k)continue t;break t}}p[d++]=g}return p},Fi.prototype.at=hs,Fi.prototype.chain=function(){return ls(this)},Fi.prototype.commit=function(){return new Bi(this.value(),this.__chain__)},Fi.prototype.next=function(){this.__values__===t&&(this.__values__=la(this.value()));var e=this.__index__>=this.__values__.length;return{done:e,value:e?t:this.__values__[this.__index__++]}},Fi.prototype.plant=function(e){for(var i,n=this;n instanceof Li;){var r=Do(n);r.__index__=0,r.__values__=t,i?o.__wrapped__=r:i=r;var o=r;n=n.__wrapped__}return o.__wrapped__=e,i},Fi.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof Pi){var i=e;return this.__actions__.length&&(i=new Pi(this)),(i=i.reverse()).__actions__.push({func:cs,args:[Xo],thisArg:t}),new Bi(i,this.__chain__)}return this.thru(Xo)},Fi.prototype.toJSON=Fi.prototype.valueOf=Fi.prototype.value=function(){return hr(this.__wrapped__,this.__actions__)},Fi.prototype.first=Fi.prototype.head,Yt&&(Fi.prototype[Yt]=function(){return this}),Fi}();de?((de.exports=di)._=di,ue._=di):he._=di}.call(Ct.exports)),Ct.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 It{_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,e){this._core=t,this._core.store.state.host=e,this._core.store.state.viewportWidth=e.clientWidth,this._core.store.state.viewportHeight=e.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=St.debounce((()=>{this._core.updateWorkspaceViewport(this._core.store.state.translateX,this._core.store.state.translateY,this._core.store.state.scale)}),300),this._debounceEndScaling=St.debounce((()=>{this._core.store.state.isScaling=!1,this._core.rerender()}),100)}cancelPendingUpdates(){this._debounceUpdate.cancel()}clampTranslate(t,e){const i=this._core.store.state,{scale:n,viewportWidth:r,viewportHeight:o}=i,{viewportBoundaryLeft:s,viewportBoundaryRight:a,viewportBoundaryTop:l,viewportBoundaryBottom:c}=i,h=-s*n,u=r-a*n,d=-l*n,f=o-c*n;let p=t,b=e;return Number.isFinite(u)&&Number.isFinite(h)?p=Math.max(u,Math.min(h,t)):Number.isFinite(u)?p=Math.max(u,t):Number.isFinite(h)&&(p=Math.min(h,t)),Number.isFinite(f)&&Number.isFinite(d)?b=Math.max(f,Math.min(d,e)):Number.isFinite(f)?b=Math.max(f,e):Number.isFinite(d)&&(b=Math.min(d,e)),{translateX:p,translateY:b}}getEffectiveMinScale(){const t=this._core.store.state,{viewportWidth:e,viewportHeight:i,scaleMin:n}=t,{viewportBoundaryLeft:r,viewportBoundaryRight:o,viewportBoundaryTop:s,viewportBoundaryBottom:a}=t,l=o-r,c=a-s;if(!Number.isFinite(l)||!Number.isFinite(c))return n;const h=Math.max(l>0?e/l:n,c>0?i/c:n);return Math.max(n,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 e=t.clientX-this._core.store.offsetX,i=t.clientY-this._core.store.offsetY;t.button===u.Right&&(this._core.store.state.isPanning=!0,this._core.store.state.startX=e,this._core.store.state.startY=i)}if("touch"===t.pointerType||"pen"===t.pointerType){const e=Array.from(this._core.store.state.pointers.values());if(1===e.length&&(this._touchStartScreenX=t.clientX,this._touchStartScreenY=t.clientY,this._touchCursorBroadcastActive=!1),2===e.length){this._core.store.objects?.clearCursorPosition();const t=this._core.store.currentPath;t&&this._core.store.objects.remove((e=>e.id===t.id)),this._core.store.state.isSelecting&&(this._core.store.state.isSelecting=!1,this._core.store.objects.remove((t=>t instanceof $)),this._core.store.setSelectionBox(null),this._core.store.selectedObjects.forEach((t=>{t.isSelected=!1}))),this._core.store.state.isScaling=!0;const i=e[0].clientX-this._core.store.offsetX,n=e[0].clientY-this._core.store.offsetY,r=e[1].clientX-this._core.store.offsetX,o=e[1].clientY-this._core.store.offsetY;this.initialTouchDistance=Math.sqrt(Math.pow(i-r,2)+Math.pow(n-o,2)),this.startX=(i+r)/2,this.startY=(n+o)/2,this._core.rerender()}}}handlePointerMove(t){if("mouse"===t.pointerType){const e=this._core.store.host.getBoundingClientRect(),i=t.clientX-e.left,n=t.clientY-e.top;if(this._core.store.state.pointerX=(i-this._core.store.state.translateX)/this._core.store.state.scale,this._core.store.state.pointerY=(n-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+(i-this._core.store.state.startX),this._core.store.state.translateY+(n-this._core.store.state.startY));this._core.store.state.translateX=t.translateX,this._core.store.state.translateY=t.translateY,this._core.store.state.startX=i,this._core.store.state.startY=n,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 e=this._core.store.host.getBoundingClientRect(),i=t.clientX-e.left,n=t.clientY-e.top,r=Array.from(this._core.store.state.pointers.values());if(this._core.store.state.isScaling||r.length>1)this._core.store.objects?.clearCursorPosition();else{if(this._core.store.state.pointerX=(i-this._core.store.state.translateX)/this._core.store.state.scale,this._core.store.state.pointerY=(n-this._core.store.state.translateY)/this._core.store.state.scale,!this._touchCursorBroadcastActive){const e=t.clientX-this._touchStartScreenX,i=t.clientY-this._touchStartScreenY;Math.sqrt(e*e+i*i)>=It.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===r.length){const t=r[0].clientX-this._core.store.offsetX,e=r[0].clientY-this._core.store.offsetY,i=r[1].clientX-this._core.store.offsetX,n=r[1].clientY-this._core.store.offsetY,o=Math.sqrt(Math.pow(t-i,2)+Math.pow(e-n,2)),s=(t+i)/2,a=(e+n)/2,l=o/this.initialTouchDistance,c=this._core.store.state.scale*l,h=this.getEffectiveMinScale();if(c>this._core.store.state.scaleMax||c<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)*(l-1),e=this._core.store.state.translateY+a-this.startY-(a-this._core.store.state.translateY)*(l-1);this._core.store.state.scale=c;const i=this.clampTranslate(t,e);this._core.store.state.translateX=i.translateX,this._core.store.state.translateY=i.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,e){const i=this._core.store.state;return{x:(t-i.translateX)/i.scale,y:(e-i.translateY)/i.scale}}worldToScreen(t,e){const i=this._core.store.state;return{x:t*i.scale+i.translateX,y:e*i.scale+i.translateY}}setViewport(t,e,i){const n=this._core.store.state,r=Math.min(n.scaleMax,Math.max(this.getEffectiveMinScale(),i));this.animateViewportTo(n.viewportWidth/2-t*r,n.viewportHeight/2-e*r,r)}panTo(t,e){this.setViewport(t,e,this._core.store.state.scale)}zoomTo(t,e,i){const n=this._core.store.state;void 0!==e&&void 0!==i?this.setViewport(e,i,t):this.setViewport((n.viewportWidth/2-n.translateX)/n.scale,(n.viewportHeight/2-n.translateY)/n.scale,t)}zoomIn(t,e){this.animateZoomAroundViewportCenter(t,e)}zoomOut(t,e){this.animateZoomAroundViewportCenter(1/t,e)}animateZoomAroundViewportCenter(t,e){this.cancelViewportAnimation();const i=this._core.store.state,n=i.scale,r=this.getEffectiveMinScale(),o=Math.min(i.scaleMax,Math.max(r,n*t)),s=i.viewportWidth/2,a=i.viewportHeight/2,l=(s-i.translateX)/n,c=(a-i.translateY)/n;if(o===n||e<=0)return this.applyZoomAroundCenter(o,s,a,l,c),i.isScaling=!0,this._core.rerender(),this._debounceUpdate(),void this._debounceEndScaling();const h=performance.now();i.isScaling=!0;const u=t=>{const r=Math.min((t-h)/e,1),d=r<.5?4*r*r*r:1-Math.pow(-2*r+2,3)/2;this.applyZoomAroundCenter(n+(o-n)*d,s,a,l,c),this._core.rerender(),r<1?this._animationFrameId=requestAnimationFrame(u):(this._animationFrameId=null,i.isScaling=!1,this._core.rerender(),this._debounceUpdate())};this._animationFrameId=requestAnimationFrame(u)}applyZoomAroundCenter(t,e,i,n,r){const o=this._core.store.state;o.scale=t;const s=this.clampTranslate(e-n*t,i-r*t);o.translateX=s.translateX,o.translateY=s.translateY,o.hasViewportChanged=!0}centerInViewport(t){const{scale:e,viewportWidth:i,viewportHeight:n}=this._core.store.state,{x:r,y:o,width:s,height:a}=t.rotatedBoundingBox,l=this.clampTranslate(i/2-(r+s/2)*e,n/2-(o+a/2)*e);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()}centerFitInViewport(t){const e=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),i=Math.max(e,this.getEffectiveMinScale());this._core.store.state.scale=i,this.centerInViewport(t)}centerFitInViewportIfNeeded(t){const e=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),i=Math.max(e,this.getEffectiveMinScale());i<this._core.store.state.scale&&(this._core.store.state.scale=i),this.centerInViewport(t)}fitInViewportIfNeeded(t){const e=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),i=Math.max(e,this.getEffectiveMinScale());i<this._core.store.state.scale&&(this._core.store.state.scale=i,this.centerInViewport(t))}bringIntoViewIfNeeded(t){const{scale:e,translateX:i,translateY:n,viewportWidth:r,viewportHeight:o}=this._core.store.state,s=t.rotatedBoundingBox;if(s.x*e+i>=0&&s.y*e+n>=0&&(s.x+s.width)*e+i<=r&&(s.y+s.height)*e+n<=o)return;const a=Math.min(r/(1.1*s.width),o/(1.1*s.height),this._core.store.state.scaleMax),l=Math.max(a,this.getEffectiveMinScale()),c=Math.min(l,e),h=this.clampTranslate(r/2-(s.x+s.width/2)*c,o/2-(s.y+s.height/2)*c);this.animateViewportTo(h.translateX,h.translateY,c)}handleZoom(t){this._core.store.state.isScaling=!0;const e=this._core.store.host.getBoundingClientRect(),i=t.clientX-e.left,n=t.clientY-e.top;this._core.store.state.pointerX=(i-this._core.store.state.translateX)/this._core.store.state.scale,this._core.store.state.pointerY=(n-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 r=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*r)),a=s/this._core.store.state.scale,l=(i-this._core.store.state.translateX)*(a-1),c=(n-this._core.store.state.translateY)*(a-1);this._core.store.state.scale=s;let h=this._core.store.state.translateX-l;0!==t.deltaX&&(h-=.8*t.deltaX);const u=this.clampTranslate(h,this._core.store.state.translateY-c);this._core.store.state.translateX=u.translateX,this._core.store.state.translateY=u.translateY,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),this._debounceUpdate(),this._debounceEndScaling()}handlePan(t){const e=this.clampTranslate(this._core.store.state.translateX-.8*t.deltaX,this._core.store.state.translateY-.8*t.deltaY);this._core.store.state.translateX=e.translateX,this._core.store.state.translateY=e.translateY,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),this._debounceUpdate()}cancelViewportAnimation(){null!==this._animationFrameId&&(cancelAnimationFrame(this._animationFrameId),this._animationFrameId=null)}animateViewportTo(t,e,i,n=150){this.cancelViewportAnimation();const r=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 l=c=>{const h=Math.min((c-a)/n,1),u=1-Math.pow(1-h,3);this._core.store.state.scale=s+(i-s)*u;const d=this.clampTranslate(r+(t-r)*u,o+(e-o)*u);this._core.store.state.translateX=d.translateX,this._core.store.state.translateY=d.translateY,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),h<1?this._animationFrameId=requestAnimationFrame(l):(this._animationFrameId=null,this._core.store.state.isScaling=!1,this._core.rerender(),this._debounceUpdate())};this._animationFrameId=requestAnimationFrame(l)}centerFitNearestContent(t=20){const e=this._core.store.allNonSelectionObjects;if(0===e.length)return!1;const i=-this._core.store.state.translateX/this._core.store.state.scale+this._core.store.state.viewportWidth/2/this._core.store.state.scale,n=-this._core.store.state.translateY/this._core.store.state.scale+this._core.store.state.viewportHeight/2/this._core.store.state.scale,r=e.map((t=>{const e=t.rotatedBoundingBox,r=e.y+e.height/2;return{obj:t,distance:Math.sqrt(Math.pow(e.x+e.width/2-i,2)+Math.pow(r-n,2))}}));r.sort(((t,e)=>t.distance-e.distance));const o=r.slice(0,t).map((t=>t.obj));let s=1/0,a=1/0,l=-1/0,c=-1/0;for(const t of o){const e=t.rotatedBoundingBox;s=Math.min(s,e.x),a=Math.min(a,e.y),l=Math.max(l,e.x+e.width),c=Math.max(c,e.y+e.height)}const h=l-s,u=c-a,d=s+h/2,f=a+u/2,p=Math.min(this._core.store.state.viewportWidth/(1.1*h),this._core.store.state.viewportHeight/(1.1*u),this._core.store.state.scaleMax),b=Math.max(p,this.getEffectiveMinScale());return this.animateViewportTo(this._core.store.state.viewportWidth/2-d*b,this._core.store.state.viewportHeight/2-f*b,b),!0}centerFitObjects(t,e=!0){if(0===t.length)return!1;let i=1/0,n=1/0,r=-1/0,o=-1/0;for(const e of t){const t=e.rotatedBoundingBox;i=Math.min(i,t.x),n=Math.min(n,t.y),r=Math.max(r,t.x+t.width),o=Math.max(o,t.y+t.height)}const s=r-i,a=o-n,l=i+s/2,c=n+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),u=Math.max(h,this.getEffectiveMinScale());return this.animateViewportTo(this._core.store.state.viewportWidth/2-l*u,this._core.store.state.viewportHeight/2-c*u,u,e?150:0),!0}centerFitAllObjects(t=!0){return this.centerFitObjects(this._core.store.allNonSelectionObjects,t)}}class Mt extends O{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 e=this._core.toolRegistry.getToolByIndex(t);e&&(this._core.store.setState("activeTool",e),this._core.deselectAllObjects(),e.onActivate())}handleKeyDown(t){if(this._core.store.state.isCtrlKeyPressed=t.ctrlKey,(this._core.store.activeText||this._core.store.activeShape)&&"Escape"!==t.key)return;const e=this.shortcuts.find((e=>e.key===t.key&&!!e.ctrl===t.ctrlKey&&!!e.shift===t.shiftKey&&(!e.condition||e.condition(this._core))));e&&(t.preventDefault(),e.action(this._core))}handleKeyUp(t){this._core.store.state.isCtrlKeyPressed=t.ctrlKey}getDisplayableShortcuts(){return this.shortcuts.map((({key:t,ctrl:e,shift:i,label:n,category:r})=>({key:t,ctrl:e,shift:i,label:n,category:r})))}}class jt extends O{globalContextMenuItems=[];objectContextMenuItems=[];constructor(t,e,i){super(t),this.globalContextMenuItems=e,this.objectContextMenuItems=i}handleContextMenu(t){if(!(this._core.store.state.activeTool instanceof c))return;if(this._core.store.state.skipContextMenu)return void(this._core.store.state.skipContextMenu=!1);const e=this._core.store.state.activeTool;e?.moveHandler?.cancelPendingDrag(),this._core.store.selectionBox&&(this._core.store.objects.remove((t=>t instanceof $)),this._core.store.setSelectionBox(null),this._core.store.state.isSelecting=!1);const i=this._core.getObjectFromPointerEvent(t,".object");if(i&&!(i instanceof j)&&!(i instanceof $)){const t=j.create(this._core);t.addOrRemove(i),t.isSelected=!0,t.rotation=i.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;const n=t.clientX-this._core.store.offsetX,r=t.clientY-this._core.store.offsetY,{translateX:o,translateY:s,scale:a}=this._core.store.state;this._core.store.state.contextMenuWorldX=(n-o)/a,this._core.store.state.contextMenuWorldY=(r-s)/a;let l=n,h=r;l+150>this._core.store.state.viewportWidth-10&&(l=this._core.store.state.viewportWidth-150-10),l=Math.max(10,l),h=Math.max(10,h),this._core.store.state.contextMenuX=l,this._core.store.state.contextMenuY=h,this._core.store.state.isContextMenuVisible=!0,this._core.store.state.isEnabled=!1,this._core.rerender()}open(t){const{x:e,y:i,objectId:n}=t;if(this._core.store.state.activeTool instanceof c){const t=this._core.store.state.activeTool;t?.moveHandler?.cancelPendingDrag()}if(this._core.store.selectionBox&&(this._core.store.objects.remove((t=>t instanceof $)),this._core.store.setSelectionBox(null),this._core.store.state.isSelecting=!1),n){const t=this._core.store.allObjects.find((t=>t.id===n));if(t&&!(t instanceof j)&&!(t instanceof $)){const e=j.create(this._core);e.addOrRemove(t),e.isSelected=!0,e.rotation=t.rotation,this._core.store.state.isSelecting=!1,this._core.store.selectionGroup&&this._core.removeSelectionGroup(),this._core.addSelectionGroup(e)}}this._core.store.state.contextMenuItems=this._core.store.selectionGroup?this.objectContextMenuItems:this.globalContextMenuItems,this._core.store.state.contextMenuWorldX=e,this._core.store.state.contextMenuWorldY=i;const{translateX:r,translateY:o,scale:s}=this._core.store.state;let a=e*s+r,l=i*s+o;a+150>this._core.store.state.viewportWidth-10&&(a=this._core.store.state.viewportWidth-150-10),a=Math.max(10,a),l=Math.max(10,l),this._core.store.state.contextMenuX=a,this._core.store.state.contextMenuY=l,this._core.store.state.isContextMenuVisible=!0,this._core.store.state.isEnabled=!1,this._core.rerender()}}class $t extends _{__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,e){const i=new $t(e);return i._core=t,i.id=i.generateId(),i.workspaceId=t.store.state.activeWorkspace.id,i.userId=t.user?.id,i}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,e,i,n){i<=1||n<=1||(this.width=i,this.height=n,this.translateX=t,this.translateY=e,this.element&&(this.element.style.width=`${i}px`,this.element.style.height=`${n}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 Tt{_core;constructor(t){this._core=t}revive(t){if(t&&"object"==typeof t){if(t.__class__){let e;switch(t.__class__){case"KritzelPath":e=o.create(this._core).deserialize(t);break;case"KritzelLine":e=s.create(this._core).deserialize(t);break;case"KritzelText":e=L.create(this._core,t.fontSize,t.fontFamily).deserialize(t);break;case"KritzelShape":e=R.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":e=F.create(this._core).deserialize(t);break;case"KritzelCustomElement":e=$t.create(this._core).deserialize(t);break;case"KritzelSelectionGroup":e=j.create(this._core).deserialize(t);break;case"KritzelGroup":e=D.create(this._core).deserialize(t);break;case"KritzelWorkspace":e=E.create(this._core,t).deserialize(t);break;case"KritzelBrushTool":e=new g(this._core);break;case"KritzelEraserTool":e=new v(this._core);break;case"KritzelImageTool":e=new x(this._core);break;case"KritzelSelectionTool":e=new c(this._core);break;case"KritzelTextTool":e=new h(this._core);break;case"KritzelLineTool":e=new m(this._core);break;case"KritzelShapeTool":e=new y(this._core);break;default:e=t}return e}const e=Array.isArray(t)?[]:{};for(const i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=this.revive(t[i]));return e}return t}}const At={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,contextMenuWorldX:0,contextMenuWorldY: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 Ot{static calculateSelectionBounds(t){const e=t.map((t=>t.rotatedBoundingBox));return{minX:Math.min(...e.map((t=>t.x))),minY:Math.min(...e.map((t=>t.y))),maxX:Math.max(...e.map((t=>t.x+t.width))),maxY:Math.max(...e.map((t=>t.y+t.height)))}}static calculateAlignedPositions(t,e){const i=new Map;if(t.length<2)return i;const n=this.calculateSelectionBounds(t);for(const r of t){const t=r.rotatedBoundingBox;let o=r.translateX,s=r.translateY;const a=t.x-r.translateX,l=t.y-r.translateY;switch(e){case z.StartHorizontal:o=n.minX-a;break;case z.CenterHorizontal:o=r.translateX+((n.minX+n.maxX)/2-(t.x+t.width/2));break;case z.EndHorizontal:o=r.translateX+(n.maxX-(t.x+t.width));break;case z.StartVertical:s=n.minY-l;break;case z.CenterVertical:s=r.translateY+((n.minY+n.maxY)/2-(t.y+t.height/2));break;case z.EndVertical:s=r.translateY+(n.maxY-(t.y+t.height))}i.set(r.id,{translateX:o,translateY:s})}return i}}class _t{core;registry={};constructor(t){this.core=t}registerTool(t,e){const i=new e(this.core);return i.name=t,this.registry[t]=i,i}hasTool(t){return t in this.registry}getTool(t){return this.registry[t]||(console.warn(`Unknown tool: ${t}`),null)}getToolByIndex(t){return Object.values(this.registry)[t]??null}}class Et{bounds;capacity;objects=[];children=null;_size=0;get size(){return this._size}constructor(t,e=16){this.bounds=t,this.capacity=e}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 e of this.children)if(e.insert(t))return this._size++,!0;return!1}update(t){const e=this.objects.findIndex((e=>e.id===t.id));if(-1!==e)return this.objects[e]=t,!0;if(null!==this.children)for(const e of this.children)if(e.update(t))return!0;return!1}remove(t){let e=0;const i=this.objects.findIndex((e=>t(e)));if(-1!==i&&(this.objects.splice(i,1),e++),null!==this.children)for(const i of this.children)e+=i.remove(t);return this._size-=e,e}query(t){const e=[];return this._queryInto(t,e),e}_queryInto(t,e){if(this.intersects(t,this.bounds)){for(const i of this.objects)this.intersects(i.rotatedBoundingBox,t)&&e.push(i);if(null!==this.children)for(const i of this.children)i._queryInto(t,e)}}filter(t){const e=[];return this._filterInto(t,e),e}_filterInto(t,e){for(const i of this.objects)t(i)&&e.push(i);if(null!==this.children)for(const i of this.children)i._filterInto(t,e)}allObjects(){const t=[];return this._collectAllInto(t),t}_collectAllInto(t){for(const e of this.objects)t.push(e);if(null!==this.children)for(const e of this.children)e._collectAllInto(t)}subdivide(){const{x:t,y:e,z:i,width:n,height:r}=this.bounds,o=n/2,s=r/2;this.children=[new Et({x:t,y:e,z:i,width:o,height:s},this.capacity),new Et({x:t+o,y:e,z:i,width:o,height:s},this.capacity),new Et({x:t,y:e+s,z:i,width:o,height:s},this.capacity),new Et({x:t+o,y:e+s,z:i,width:o,height:s},this.capacity)]}intersects(t,e){return!(t.x>=e.x+e.width||t.x+t.width<=e.x||t.y>=e.y+e.height||t.y+t.height<=e.y)}}class Dt{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 e=t.displayName||t.firstName||"Anonymous";this._awareness.setLocalStateField("user",{id:t.id,displayName:e,color:t.color||this.generateColorFromName(e)})}generateColorFromName(t){let e=0;for(let i=0;i<t.length;i++)e=t.charCodeAt(i)+((e<<5)-e);return`hsl(${Math.abs(e%360)}, 45%, 55%)`}updateCursorPosition(t,e){this._awareness&&this._awareness.setLocalStateField("cursor",{x:t,y:e})}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(),e=new Set;t.forEach((t=>{const i=t.user?.id;i&&e.add(i)}));const i=this._core?.user?.id,n=this.quadtree.filter((t=>t instanceof j&&null!=t.userId&&t.userId!==i&&!e.has(t.userId)));for(const t of n)this.quadtree.remove((e=>e.id===t.id)),this._idMap.delete(t.id),this._objectsMap&&this._ydoc.transact((()=>{this._objectsMap.delete(t.id)}),"local");n.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 Et({x:-1/0,y:-1/0,z:0,width:1/0,height:1/0},8)}async initialize(t,e,i){this._core=t,this._workspaceId=e,this._reviver=new Tt(t),this._ydoc=new J.Doc,this._objectsMap=this._ydoc.getMap("objects"),this._metadataMap=this._ydoc.getMap("metadata");const n=t.editorId?`kritzel-workspace-${t.editorId}-${e}`:`kritzel-workspace-${e}`,r=i??mt,o=!t.store?.state?.debugInfo?.showSyncProviderInfo;for(const t of r.providers){let e;e="function"==typeof t?new t(n,this._ydoc,{quiet:o}):t.create(n,this._ydoc,{quiet:o}),this._providers.push(e)}this._undoManager=new J.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,e)=>{"rejected"===t.status&&console.error(`[Kritzel] Sync provider "${s[e]?.constructor.name}" failed to connect:`,t.reason)}));for(const t of a)t.connect().catch((e=>{console.error(`[Kritzel] Network sync provider "${t.constructor.name}" failed to connect:`,e)}));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 e=Date.now(),i=e-this._lastAwarenessEmitTime;if(null!==this._awarenessEmitTimeout&&(clearTimeout(this._awarenessEmitTimeout),this._awarenessEmitTimeout=null),i>=this.AWARENESS_THROTTLE_INTERVAL){this._lastAwarenessEmitTime=e;const t=this._awareness.getStates();for(const e of this._awarenessChangeCallbacks)e(t)}else this._awarenessEmitTimeout=setTimeout((()=>{this._lastAwarenessEmitTime=Date.now(),this._awarenessEmitTimeout=null;const t=this._awareness.getStates();for(const e of this._awarenessChangeCallbacks)e(t)}),this.AWARENESS_THROTTLE_INTERVAL-i)},this._awareness.on("change",this._awarenessChangeHandler)),this.initializeMetadata("workspace",e,t.store?.state?.activeWorkspace?.name??""),B(this._ydoc,this._metadataMap,{objects:this._objectsMap},W,P,{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 e=Array.from(t.keysChanged),i=[],n=[],r=[];e.forEach((e=>{const o=t.changes.keys.get(e);if(o&&"delete"===o.action)r.push(e);else{const t=this._objectsMap?.get(e);if(t){const e=this._reviver?.revive(t);e instanceof j?n.push(e):i.push(e)}}})),r.forEach((t=>{this.quadtree.remove((e=>e.id===t)),this._idMap.delete(t)}));const o=[],s=[];i.forEach((t=>{if(this._idMap.has(t.id)){const e=this._idMap.get(t.id);e&&"function"==typeof t.adoptTransientStateFrom&&t.adoptTransientStateFrom(e),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(n.forEach((t=>{if(this._idMap.has(t.id)){const e=this._idMap.get(t.id);e&&"function"==typeof t.adoptTransientStateFrom&&t.adoptTransientStateFrom(e),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)})),i.length>0||r.length>0){const t=new Set([...i.map((t=>t.id)),...r]),e=this.quadtree.filter((t=>t instanceof j&&!a.has(t.id)));for(const i of e)i.objectIds.some((e=>t.has(e)))&&(i.invalidateObjectsCache(),i.refreshObjectDimensions(void 0,!0),i.captureUnchangedSnapshots(),this.quadtree.update(i))}if(this._core?.store.invalidateSelectionCache(),this._core?.rerender(),o.length>0&&this._core?.engine.emitObjectsAdded(o),r.length>0){const t=r.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,e,i){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",P),this._metadataMap?.set("workspaceId",e),this._metadataMap?.set("workspaceName",i)}),"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,e=[];this._objectsMap.forEach(((i,n)=>{const r=this._reviver?.revive(i);r instanceof j&&null!=r.userId&&r.userId!==t?e.push(n):r&&(this.quadtree.insert(r),this._idMap.set(r.id,r))})),e.length>0&&this._ydoc.transact((()=>{for(const t of e)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 e=t.serialize();this.markUndoBoundary(),this._ydoc?.transact((()=>{this._objectsMap?.set(t.id,e)}),"local")}return!0}update(t,e={}){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 i=t.serialize(),n=e.temporary?"temporary":"local";this._ydoc?.transact((()=>{this._objectsMap?.set(t.id,i)}),n)}return!0}remove(t){const e=this.quadtree.filter(t);if(0!==e.length){this.markUndoBoundary();for(const t of e)this.quadtree.remove((e=>e.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 $)}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 e=Math.min(this._temporaryItemsCount,t);if(e>1){for(let t=0;t<e;t++)this._undoManager.canUndo()&&this._undoManager.undo();this._ydoc?.transact((()=>{for(let t=e-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 e=0;e<t;e++)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 Ft{_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 j||t instanceof $))).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,e=this._state.viewportBoundaryRight,i=this._state.viewportBoundaryTop,n=this._state.viewportBoundaryBottom;return{x:Number.isFinite(t)?t:-1/0,y:Number.isFinite(i)?i:-1/0,z:0,width:Number.isFinite(t)&&Number.isFinite(e)?e-t:1/0,height:Number.isFinite(i)&&Number.isFinite(n)?n-i: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,e)=>t.zIndex-e.zIndex))}get allNonSelectionObjects(){return this.allObjects.filter((t=>!(t instanceof j||t instanceof $)))}get selectedObjects(){return this.allObjects.filter((t=>!(t instanceof j))).filter((t=>t.isSelected))}get selectionBox(){if(this._selectionBoxCacheValid)return this._cachedSelectionBox;const t=this.objects.filter((t=>t instanceof $));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 j));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 L&&t.isEditing));return t.length>0?t[0]:null}get activeShape(){const t=this.objects.filter((t=>t instanceof R&&t.isEditing));return t.length>0?t[0]:null}get currentPath(){const t=this.objects.filter((t=>t instanceof o&&!1===t.isCompleted));return t.length>0?t[0]:null}get currentLine(){const t=this.objects.filter((t=>t instanceof s&&!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,contextMenuItems:[...t.contextMenuItems],debugInfo:{...t.debugInfo},pointers:new Map(t.pointers),workspaces:[...t.workspaces],cursor:{...t.cursor}},this._state.objects=new Dt}onStateChange(t,e){this._listeners.has(t)||this._listeners.set(t,new Set);const i=this._listeners.get(t);if(!i)throw new Error(`Listeners set for property ${String(t)} was not initialized.`);i.add(e)}getState(t){return this._state[t]}setState(t,e){const i=this._state[t];if(i!==e){this._state[t]=e;const n=this._listeners.get(t);n&&n.forEach((n=>n(e,i,String(t))))}}}class Rt{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,e){this._core=t,this._ydoc=new J.Doc,this._workspacesMap=this._ydoc.getMap("workspaces"),this._metadataMap=this._ydoc.getMap("metadata");const i=e?.appStateId??this.getOrCreateAppStateInstanceId(t),n=t.editorId?`kritzel-app-state-${t.editorId}-${i}`:`kritzel-app-state-${i}`,r=e??mt,o=!t.store.state.debugInfo.showSyncProviderInfo;for(const t of r.providers){let e;e="function"==typeof t?new t(n,this._ydoc,{quiet:o}):t.create(n,this._ydoc,{quiet:o}),this._providers.push(e)}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,e)=>{"rejected"===t.status&&console.error(`[Kritzel] Sync provider "${s[e]?.constructor.name}" failed to connect:`,t.reason)}));for(const t of a)t.connect().catch((e=>{console.error(`[Kritzel] Network sync provider "${t.constructor.name}" failed to connect:`,e)}));this._isReady=!0,B(this._ydoc,this._metadataMap,{workspaces:this._workspacesMap},N,V,{quiet:!t.store.state.debugInfo.showMigrationInfo}),this.initializeMetadata("state"),this.loadFromYjs()}getOrCreateAppStateInstanceId(t){const e=globalThis.localStorage;if(!e)throw new Error("[KritzelAppStateMap] localStorage is unavailable. Cannot persist app-state document identity.");const i=t.getStorageKey("kritzel-app-state-instance-id");let n;try{n=e.getItem(i)}catch{throw new Error("[KritzelAppStateMap] Failed to read app-state instance id from localStorage.")}if(n)return n;const r=K.generateUUID();try{e.setItem(i,r)}catch{throw new Error("[KritzelAppStateMap] Failed to persist app-state instance id to localStorage.")}return r}handleWorkspacesChange(t){if("local"===t.transaction.origin)return void this._core?.rerender();if("migration"===t.transaction.origin)return;const e=Array.from(t.keysChanged),i=[],n=[];e.forEach((e=>{const r=t.changes.keys.get(e);if(r&&"delete"===r.action)n.push(e);else{const t=this._workspacesMap.get(e);if(t){const e=this.reviveWorkspace(t);i.push(e)}}})),n.forEach((t=>{this.map.delete(t)})),i.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 e=t.viewport;if(e&&"translateX"in e&&!("centerWorldX"in e)){const t=e.scale??1;e={centerWorldX:-(e.translateX??0)/t,centerWorldY:-(e.translateY??0)/t,scale:t}}const i=new E(t.id,t.name,e);return this._core&&(i._core=this._core),i.createdAt=new Date(t.createdAt),i.updatedAt=new Date(t.updatedAt),i.isPublic=t.isPublic??!1,i}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",V)}),"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,e)=>{const i=this.reviveWorkspace(t);this.map.set(e,i)})))}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 e=t.serialize();this._ydoc?.transact((()=>{this._workspacesMap?.set(t.id,e)}),"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 e=t.serialize();this._ydoc?.transact((()=>{this._workspacesMap?.set(t.id,e)}),"local")}return!0}remove(t){const e=Array.from(this.map.values()).find(t);return!!e&&(this.map.delete(e.id),this._workspacesMap&&this._ydoc?.transact((()=>{this._workspacesMap?.delete(e.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 Lt{_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",U.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 e=this._shadowRoot.elementsFromPoint(t.clientX,t.clientY);if(!e||0===e.length)return;const i=e.find((t=>t.classList.contains("resize-handle-overlay")));if(i){const t=this._core.store.selectionGroup,e=t?.rotationDegrees??0,n=i.classList.contains("top-left"),r=i.classList.contains("bottom-right");this._core.store.state.cursor={icon:"move-vertical",rotation:e+(n||r?-45:45)}}else this._core.store.state.cursor=e.find((t=>t.classList.contains("rotation-handle-overlay")))||e.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,e=this._core.store.isPointerDown,i=t.cursor?.icon,n=t.cursor?.iconActive??i,r=t.cursor?.rotation,o=U.getCursor({iconName:e?n:i,rotation:r});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 Bt{_kritzelEngine;_store;_syncConfig;_assetStorageConfig;_assetResolver;_appStateMap;_anchorManager;_cursorManager;_themeManager;_toolRegistry;_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 toolRegistry(){return this._toolRegistry}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,e){this._kritzelEngine=t,this._editorId=e,this._store=new Ft(At),this._appStateMap=new Rt,this._anchorManager=new H(this),this._cursorManager=new Lt(this),this._themeManager=new G(this),this._toolRegistry=new _t(this),this._assetResolver=new Y}get assetResolver(){return this._assetResolver}setSyncConfig(t){this._syncConfig=t}setAssetStorageConfig(t){this._assetStorageConfig=t}setEditorId(t){this._editorId=t,this._themeManager=new G(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((e=>e.id===t))}async initializeWorkspace(t,e){const i=this.loadWorkspacesFromAppState(),n=!t&&!!this._editorId,r=i.length>0?[...i].sort(((t,e)=>{const i=e.createdAt.getTime()-t.createdAt.getTime();return 0!==i?i:e.updatedAt.getTime()-t.updatedAt.getTime()}))[0]:null,o=localStorage.getItem(this.getStorageKey("kritzel-active-workspace-id")),s=o?i.find((t=>t.id===o)):null;let a;if(t)a=t,i.find((e=>e.id===t.id))||(a._core=this,this.saveWorkspaceToAppState(a));else if(s)a=s;else if(r&&!n)a=r;else{if(e?.skipFallbackCreation)return this._store.state.workspaces=i,this._store.state.activeWorkspace=null,void this.rerender();a=new E(K.generateUUID(),"New Workspace"),a._core=this,this.saveWorkspaceToAppState(a)}localStorage.setItem(this.getStorageKey("kritzel-active-workspace-id"),a.id),this._store.objects&&this._store.objects.isReady&&this._store.objects.destroy();const l=new Dt;this._store.state.objects=l,this._store.state.activeWorkspace=a,this._store.state.workspaces=this.loadWorkspacesFromAppState();const c=a.viewport??{centerWorldX:0,centerWorldY:0,scale:1},h=c.scale??1,u=this._store.state.viewportHeight;this._store.state.translateX=this._store.state.viewportWidth/2-(c.centerWorldX??0)*h,this._store.state.translateY=u/2-(c.centerWorldY??0)*h,this._store.state.scale=h,await l.initialize(this,a.id,this._syncConfig),this._user&&l.setLocalUser(this._user),l.onAwarenessChange((t=>{this.engine.emitAwarenessChange(t)})),this._anchorManager.rebuildIndex(),this.engine.emitObjectsChange(),this.rerender()}async loadSharedWorkspace(t){const e=t;let i=this.getWorkspaces().find((t=>t.id===e));i?i.isPublic=!0:(i=new E(e,"Shared Workspace"),i.isPublic=!0,this.createWorkspace(i)),await this.initializeWorkspace(i)}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 j||t instanceof $))).sort(((t,e)=>t.zIndex-e.zIndex)):[]}rerender(){this._kritzelEngine&&this._kritzelEngine.forceUpdate++}findObjectById(t){for(const e of this._store.allObjects)if(e.id===t)return e;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 e=this._store.state.workspaces,i=e.findIndex((e=>e.id===t.id));-1!==i&&(e[i]=t,this._store.state.workspaces=e)}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,e,i){const n=this._store.state.activeWorkspace;n&&this._store.state.workspaces.some((t=>t.id===n.id))&&(n.viewport={centerWorldX:(this._store.state.viewportWidth/2-t)/i,centerWorldY:(this._store.state.viewportHeight/2-e)/i,scale:i},n.updatedAt=new Date,this.saveWorkspaceToAppState(n))}getIsPublic(){return this._store.state.activeWorkspace?.isPublic??!1}addObject(t){this._store.objects.insert(t)}removeObject(t,e=!1){q.isInstanceOf(t,"KritzelGroup")&&!e&&[...t.children].forEach((t=>{this.removeObject(t)})),q.isInstanceOf(t,"KritzelLine")?this._anchorManager.handleLineDeleted(t.id):this._anchorManager.handleObjectDeleted(t.id),t.isMounted=!1,this._store.objects.remove((e=>e.id===t.id))}updateObject(t,e){const i=[];for(const n in e)if(e.hasOwnProperty(n)){const r=e[n];void 0!==r&&(t[n]=r,i.push(n))}t.onAfterUpdate(i),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((e=>e.id===t.id)),this._store.setSelectionGroup(null),this._kritzelEngine.triggerSelectionChange())}removeSelectionBox(){const t=this._store.selectionBox;t&&(this._store.objects.remove((e=>e.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 e=this.findObjectById(t);e&&(this.removeObject(e),this.engine.emitObjectsInViewportChange(),this.rerender())}copy(){const t=this._store.selectionGroup;if(t){const e=new Map,i=t.objects.sort(((t,e)=>t.zIndex-e.zIndex)).map((t=>{const i=t.copy();return e.set(i.id,t.id),i}));this._store.state.copiedObjects=i,this._store.state.copiedObjectIdMapping=e}}cut(){this._store.selectionGroup&&(this.copy(),this.delete())}paste(t,e){const i=this._store.state.copiedObjects;if(!i||0===i.length)return;const n=this._store.state.activeWorkspace,r=this._store.state.copiedObjectIdMapping,o=i.some((t=>t.workspaceId!==n.id)),s=Math.min(...i.map((t=>t.translateX))),a=Math.min(...i.map((t=>t.translateY)));let l,c;void 0!==t&&void 0!==e?(l=t,c=e):o?(l=s,c=a):(l=s+25/this._store.state.scale,c=a+25/this._store.state.scale);const h=l-s,u=c-a;this.removeSelectionGroup(),this.removeSelectionBox();const d=j.create(this),f=new Map;r&&r.forEach(((t,e)=>{f.set(t,e)}));const p=this._store.currentZIndex;this._store.objects.transaction((()=>{const t=(e,i)=>{if(0===e._pendingChildren.length)return;const r=e._pendingChildren;e._pendingChildren=[],r.forEach(((e,r)=>{e.workspaceId!==n.id&&(e.workspaceId=n.id),e.updatePosition(e.translateX+h,e.translateY+u),e.zIndex=i+r+1,q.isInstanceOf(e,"KritzelGroup")&&t(e,e.zIndex),this.addObject(e)})),e.finalize()},e=[];i.forEach(((i,r)=>{i.workspaceId!==n.id&&(i.workspaceId=n.id),i.updatePosition(i.translateX+h,i.translateY+u),i.zIndex=p+r,q.isInstanceOf(i,"KritzelGroup")&&t(i,i.zIndex),this.addObject(i),e.push(i),d.addOrRemove(i)})),this.engine.emitObjectsAdded(e),i.forEach((t=>{if(q.isInstanceOf(t,"KritzelLine")){let e=!1;t.startAnchor&&f.has(t.startAnchor.objectId)&&(t.startAnchor={objectId:f.get(t.startAnchor.objectId)},e=!0),t.endAnchor&&f.has(t.endAnchor.objectId)&&(t.endAnchor={objectId:f.get(t.endAnchor.objectId)},e=!0),e&&this._store.objects.update(t)}}))})),this._anchorManager.rebuildIndex(),d.isSelected=!0,1===i.length&&(d.rotation=i[0].rotation),o&&(void 0!==t&&void 0!==e?d.updatePosition(t,e):d.centerInViewport()),this.addSelectionGroup(d),this.engine.viewport.bringIntoViewIfNeeded(d),this._store.state.isSelecting=!1,requestAnimationFrame((()=>{const t=this._store.selectionGroup;if(t){const e=new Map,i=t.objects.sort(((t,e)=>t.zIndex-e.zIndex)).map((t=>{const i=t.copy();return e.set(i.id,t.id),i}));this._store.state.copiedObjects=i,this._store.state.copiedObjectIdMapping=e}})),this._store.setState("activeTool",this._toolRegistry.getTool("selection")),this.engine.emitObjectsChange(),this.rerender()}bringForward(t){const e=this._store.selectionGroup,i=t?[t]:e?.objects||[],n=this._store.allNonSelectionObjects.filter((t=>-1===i.findIndex((e=>e.id===t.id)))),r=n.length>0?Math.max(...n.map((t=>t.zIndex)))+1:0;i.forEach((t=>{t.zIndex!==r&&this.updateObject(t,{zIndex:t.zIndex+1})})),this.rerender()}sendBackward(t){const e=this._store.selectionGroup,i=t?[t]:e?.objects||[],n=this._store.allNonSelectionObjects.filter((t=>-1===i.findIndex((e=>e.id===t.id)))),r=n.length>0?Math.min(...n.map((t=>t.zIndex)))-1:0;i.forEach((t=>{t.zIndex!==r&&this.updateObject(t,{zIndex:t.zIndex-1})})),this.rerender()}bringToFront(t){const e=this._store.selectionGroup,i=t?[t]:e?.objects||[],n=this._store.allNonSelectionObjects.filter((t=>-1===i.findIndex((e=>e.id===t.id)))),r=Math.max(...n.map((t=>t.zIndex)))+1;i.forEach((t=>{this.updateObject(t,{zIndex:r})})),this.rerender()}sendToBack(t){const e=this._store.selectionGroup,i=t?[t]:e?.objects||[],n=this._store.allNonSelectionObjects.filter((t=>-1===i.findIndex((e=>e.id===t.id)))),r=Math.min(...n.map((t=>t.zIndex)))-1;i.forEach((t=>{this.updateObject(t,{zIndex:r})})),this.rerender()}alignObjects(t){const e=this._store.selectionGroup;if(!e||e.objects.length<2)return;const i=e.objects,n=Ot.calculateAlignedPositions(i,t);this._store.objects.transaction((()=>{for(const t of i){const e=n.get(t.id);e&&this.updateObject(t,{translateX:e.translateX,translateY:e.translateY})}})),e.refreshObjectDimensions(),this.rerender()}group(){const t=this._store.selectionGroup;if(!t||t.objects.length<2)return;const e=D.createFromObjects(this,t.objects);this.addObject(e),this.removeSelectionGroup();const i=j.create(this);i.addOrRemove(e),i.isSelected=!0,i.rotation=e.rotation,this.addSelectionGroup(i),this.engine.emitObjectsChange(),this.rerender()}ungroup(){const t=this._store.selectionGroup;if(!t)return;const e=t.objects.filter((t=>q.isInstanceOf(t,"KritzelGroup")));if(0===e.length)return;const i=[],n=t.objects.filter((t=>!q.isInstanceOf(t,"KritzelGroup")));e.forEach((t=>{const e=t.ungroup();i.push(...e),this.removeObject(t,!0)})),this.removeSelectionGroup();const r=j.create(this);[...i,...n].forEach((t=>{r.addOrRemove(t)})),r.isSelected=!0,this.addSelectionGroup(r),this.engine.emitObjectsChange(),this.rerender()}selectObjects(t){if(0===t.length)return;const e=j.create(this);t.forEach((t=>{t.isSelected=!1,e.addOrRemove(t)})),e.isSelected=!0,1===t.length&&(e.rotation=e.objects[0].rotation),this.addSelectionGroup(e),this.rerender()}selectAllObjects(){const t=this._store.objects.allObjects().filter((t=>!(t instanceof j||t instanceof $||t instanceof at)));if(t.length>0){const e=j.create(this);t.forEach((t=>{t.isSelected=!1,e.addOrRemove(t)})),e.isSelected=!0,this._store.state.isSelecting=!1,1===t.length&&(e.rotation=e.objects[0].rotation),this.addSelectionGroup(e),this._store.setState("activeTool",this._toolRegistry.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 j||t instanceof $||t instanceof at)));if(t.length>0){const e=j.create(this);t.forEach((t=>{t.isSelected=!1,e.addOrRemove(t)})),e.isSelected=!0,this._store.state.isSelecting=!1,1===t.length&&(e.rotation=e.objects[0].rotation),this.addSelectionGroup(e),this._store.setState("activeTool",this._toolRegistry.getTool("selection")),this.rerender()}}clearSelection(){this.removeSelectionGroup();const t=this._user?.id;this._store.objects.remove((e=>e instanceof $||e instanceof j&&(null==t||e.userId===t||null==e.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,e=".object"){const i=this._store.state.host?.shadowRoot;if(!i)return null;const n=t.clientX,r=t.clientY,o=i.elementFromPoint(n,r);if(!o)return null;const s=o.closest(e);if(s){const t=this._store.allObjects.find((t=>s.id===t.id));return t&&t.hitTest(n,r)?t:null}return null}getObjectsFromPointerEvent(t,e=".object"){const i=this._store.state.host?.shadowRoot;if(!i)return[];const n=i.elementsFromPoint(t.clientX,t.clientY);if(!n||0===n.length)return[];const r=new Set;return n.forEach((t=>{const i=t.closest(e);i&&i.id&&r.add(i.id)})),r.size>0?this._store.allObjects.filter((t=>r.has(t.id))).sort(((t,e)=>e.zIndex-t.zIndex)):[]}getElementsAtPoint(t,e){const i=this._store.state.host?.shadowRoot;if(!i)return[];const n=i.elementsFromPoint(t.clientX,t.clientY);return n&&0!==n.length?n.filter((t=>t.matches(e))):[]}isPointerOverElement(t,e){return this.getElementsAtPoint(t,e).length>0}getCanvasPoint(t){if(!this._store.state.host)return{x:0,y:0};const e=this._store.state.host.getBoundingClientRect();return{x:(t.clientX-e.left-this._store.state.translateX)/this._store.state.scale,y:(t.clientY-e.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",this._toolRegistry.getTool("selection"))}displaySelectionGroupUI(t){if(!t.isSelected)return!1;if(t instanceof j&&null!=this._user?.id&&null!=t.userId&&t.userId!==this._user.id)return!0;const e=this._store.selectionGroup;return e?e.objects.length>1||(1!==e.objects.length||!(e.objects[0]instanceof s)):!(t instanceof s)}displaySelectionLineUI(t){if(!(t instanceof s))return!1;const e=this._store.selectionGroup;if(!e)return t.isSelected;if(!e.isSelected)return!1;if(1===e.objects.length){const i=e.objects[0];return i instanceof s&&i.id===t.id}return!1}}class Pt{static calculateCombinedBounds(t){if(!t||0===t.length)return null;let e=1/0,i=1/0,n=-1/0,r=-1/0;for(const o of t){const t=o.rotatedBoundingBox;e=Math.min(e,t.x),i=Math.min(i,t.y),n=Math.max(n,t.x+t.width),r=Math.max(r,t.y+t.height)}return{x:e,y:i,z:1,width:n-e,height:r-i}}static generateSvg(t,e={}){const{theme:i,padding:n=0,includeXmlDeclaration:r=!0}=e;if(!t||0===t.length)return"";const o=this.flattenObjects(t),s=this.calculateCombinedBounds(o);if(!s)return"";const a=s.x-n,l=s.y-n,c=s.width+2*n,h=s.height+2*n,u=this.collectDefs(o,i),d=t.sort(((t,e)=>t.zIndex-e.zIndex)).map((t=>this.objectToSvgElement(t,i))).filter(Boolean).join("\n ");return`${r?'<?xml version="1.0" encoding="UTF-8"?>\n':""}<svg xmlns="http://www.w3.org/2000/svg" viewBox="${a} ${l} ${c} ${h}" width="${c}" height="${h}">${u.length>0?`\n <defs>\n ${u.join("\n ")}\n </defs>`:""}\n ${d}\n</svg>`}static flattenObjects(t){const e=[];for(const i of t)q.isInstanceOf(i,"KritzelGroup")?e.push(...this.flattenObjects(i.children)):e.push(i);return e}static collectDefs(t,e){const i=[];for(const n of t)q.isInstanceOf(n,"KritzelLine")&&(n.hasStartArrow&&i.push(this.generateArrowMarker(n,"start",e)),n.hasEndArrow&&i.push(this.generateArrowMarker(n,"end",e)));return i}static generateArrowMarker(t,e,i){const n="start"===e?t.startMarkerId:t.endMarkerId,r=t.getArrowSize(e),o=t.getArrowFill(e);return`<marker id="${n}" markerWidth="${r}" markerHeight="${r}" refX="0" refY="${r/2}" orient="${"start"===e?"auto-start-reverse":"auto"}" markerUnits="userSpaceOnUse">\n <path d="${t.getArrowPath("start"===e?t.arrows?.start?.style:t.arrows?.end?.style)}" fill="${o}" transform="scale(${r/10})"/>\n </marker>`}static objectToSvgElement(t,e){return q.isInstanceOf(t,"KritzelPath")?this.pathToSvg(t,e):q.isInstanceOf(t,"KritzelLine")?this.lineToSvg(t,e):q.isInstanceOf(t,"KritzelShape")?this.shapeToSvg(t,e):q.isInstanceOf(t,"KritzelText")?this.textToSvg(t,e):q.isInstanceOf(t,"KritzelImage")?this.imageToSvg(t):q.isInstanceOf(t,"KritzelGroup")?this.groupToSvg(t,e):""}static pathToSvg(t,e){const i=this.buildTransform(t),n=a.resolveThemeColor(t.fill,e),r=a.resolveThemeColor(t.stroke,e);return`<g transform="${i}"${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="${n||"none"}" stroke="${r||"none"}"${t.strokeWidth?` stroke-width="${t.strokeWidth}"`:""}/>\n </svg>\n </g>`}static lineToSvg(t,e){const i=this.buildTransform(t),n=a.resolveThemeColor(t.stroke,e);return`<g transform="${i}"${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="${n}" 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,e){const i=this.buildTransform(t),n=a.resolveThemeColor(t.fillColor,e),r=a.resolveThemeColor(t.strokeColor,e),o=1!==t.opacity?` opacity="${t.opacity}"`:"",s=t.getSvgPath();let l="";if(t.editor&&!t.editor.state.doc.textContent.trim());else if(t.content){const i=this.prosemirrorToHtml(t.content,t,e);if(i){const n=a.resolveThemeColor(t.fontColor,e);l=`\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: ${n}; overflow: hidden;">\n ${i}\n </div>\n </foreignObject>`}}return`<g transform="${i}"${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="${n||"transparent"}" stroke="${r}" stroke-width="${t.strokeWidth}"/>${l}\n </svg>\n </g>`}static textToSvg(t,e){const i=this.buildTransform(t),n=1!==t.opacity?` opacity="${t.opacity}"`:"",r=a.resolveThemeColor(t.fontColor,e),o=a.resolveThemeColor(t.backgroundColor,e),s=this.prosemirrorToHtml(t.content,t,e);return`<g transform="${i}"${n}>\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: ${r}; 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,e){const i=t.children.sort(((t,e)=>t.zIndex-e.zIndex)).map((t=>this.objectToSvgElement(t,e))).filter(Boolean).join("\n ");return i?`<g${1!==t.opacity?` opacity="${t.opacity}"`:""}>\n ${i}\n </g>`:""}static buildTransform(t){const e=[];if(e.push(`translate(${t.translateX}, ${t.translateY})`),0!==t.rotation){const i=t.rotation*(180/Math.PI);e.push(`rotate(${i}, ${t.totalWidth/2/t.scale}, ${t.totalHeight/2/t.scale})`)}return e.join(" ")}static prosemirrorToHtml(t,e,i){return t&&t.content?t.content.map((t=>this.nodeToHtml(t,i))).join(""):""}static nodeToHtml(t,e){if(!t)return"";switch(t.type){case"paragraph":return`<p style="margin: 0;">${(t.content?t.content.map((t=>this.nodeToHtml(t,e))).join(""):"")||"<br/>"}</p>`;case"text":let i=this.escapeHtml(t.text||"");if(t.marks)for(const n of t.marks)i=this.applyMark(i,n,e);return i;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,e))).join(""):""}</ul>`;case"ordered_list":return`<ol style="margin: 0; padding-left: 1.5em;">${t.content?t.content.map((t=>this.nodeToHtml(t,e))).join(""):""}</ol>`;case"list_item":return`<li>${t.content?t.content.map((t=>this.nodeToHtml(t,e))).join(""):""}</li>`;default:return t.content?t.content.map((t=>this.nodeToHtml(t,e))).join(""):""}}static applyMark(t,e,i){switch(e.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(e.attrs?.href||"#")}">${t}</a>`;default:return t}}static escapeHtml(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}}const Wt=(()=>{let t=0;return()=>(t+=1,`u${`0000${(Math.random()*36**4|0).toString(36)}`.slice(-4)}${t}`)})();function Vt(t){const e=[];for(let i=0,n=t.length;i<n;i++)e.push(t[i]);return e}let Nt=null;function Kt(t={}){return Nt||(t.includeStyleProperties?(Nt=t.includeStyleProperties,Nt):(Nt=Vt(window.getComputedStyle(document.documentElement)),Nt))}function Ut(t,e){const i=(t.ownerDocument.defaultView||window).getComputedStyle(t).getPropertyValue(e);return i?parseFloat(i.replace("px","")):0}function Ht(t,e={}){return{width:e.width||function(t){const e=Ut(t,"border-left-width"),i=Ut(t,"border-right-width");return t.clientWidth+e+i}(t),height:e.height||function(t){const e=Ut(t,"border-top-width"),i=Ut(t,"border-bottom-width");return t.clientHeight+e+i}(t)}}const Gt=16384;function Yt(t){return new Promise(((e,i)=>{const n=new Image;n.onload=()=>{n.decode().then((()=>{requestAnimationFrame((()=>e(n)))}))},n.onerror=i,n.crossOrigin="anonymous",n.decoding="async",n.src=t}))}const qt=(t,e)=>{if(t instanceof e)return!0;const i=Object.getPrototypeOf(t);return null!==i&&(i.constructor.name===e.name||qt(i,e))};function Xt(t,e,i,n){const r=window.getComputedStyle(t,i),o=r.getPropertyValue("content");if(""===o||"none"===o)return;const s=Wt();try{e.className=`${e.className} ${s}`}catch(t){return}const a=document.createElement("style");a.appendChild(function(t,e,i,n){const r=`.${t}:${e}`,o=i.cssText?function(t){const e=t.getPropertyValue("content");return`${t.cssText} content: '${e.replace(/'|"/g,"")}';`}(i):function(t,e){return Kt(e).map((e=>`${e}: ${t.getPropertyValue(e)}${t.getPropertyPriority(e)?" !important":""};`)).join(" ")}(i,n);return document.createTextNode(`${r}{${o}}`)}(s,i,r,n)),e.appendChild(a)}const Zt="application/font-woff",Jt="image/jpeg",Qt={woff:Zt,woff2:Zt,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:Jt,jpeg:Jt,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml",webp:"image/webp"};function te(t){const e=function(t){const e=/\.([^./]*?)$/g.exec(t);return e?e[1]:""}(t).toLowerCase();return Qt[e]||""}function ee(t){return-1!==t.search(/^(data:)/)}async function ie(t,e,i){const n=await fetch(t,e);if(404===n.status)throw new Error(`Resource "${n.url}" not found`);const r=await n.blob();return new Promise(((t,e)=>{const o=new FileReader;o.onerror=e,o.onloadend=()=>{try{t(i({res:n,result:o.result}))}catch(t){e(t)}},o.readAsDataURL(r)}))}const ne={};async function re(t,e,i){const n=function(t,e,i){let n=t.replace(/\?.*/,"");return i&&(n=t),/ttf|otf|eot|woff2?/i.test(n)&&(n=n.replace(/.*\//,"")),e?`[${e}]${n}`:n}(t,e,i.includeQueryParams);if(null!=ne[n])return ne[n];let r;i.cacheBust&&(t+=(/\?/.test(t)?"&":"?")+(new Date).getTime());try{const n=await ie(t,i.fetchRequestInit,(({res:t,result:i})=>(e||(e=t.headers.get("Content-Type")||""),function(t){return t.split(/,/)[1]}(i))));r=function(t,e){return`data:${e};base64,${t}`}(n,e)}catch(e){r=i.imagePlaceholder||"";let n=`Failed to fetch resource: ${t}`;e&&(n="string"==typeof e?e:e.message),n&&console.warn(n)}return ne[n]=r,r}const oe=t=>null!=t.tagName&&"SLOT"===t.tagName.toUpperCase(),se=t=>null!=t.tagName&&"SVG"===t.tagName.toUpperCase();async function ae(t,e,i){return i||!e.filter||e.filter(t)?Promise.resolve(t).then((t=>async function(t,e){return qt(t,HTMLCanvasElement)?async function(t){const e=t.toDataURL();return"data:,"===e?t.cloneNode(!1):Yt(e)}(t):qt(t,HTMLVideoElement)?async function(t,e){if(t.currentSrc){const e=document.createElement("canvas"),i=e.getContext("2d");return e.width=t.clientWidth,e.height=t.clientHeight,null==i||i.drawImage(t,0,0,e.width,e.height),Yt(e.toDataURL())}const i=t.poster,n=te(i);return Yt(await re(i,n,e))}(t,e):qt(t,HTMLIFrameElement)?async function(t,e){var i;try{if(null===(i=null==t?void 0:t.contentDocument)||void 0===i?void 0:i.body)return await ae(t.contentDocument.body,e,!0)}catch(t){}return t.cloneNode(!1)}(t,e):t.cloneNode(se(t))}(t,e))).then((i=>async function(t,e,i){var n,r;if(se(e))return e;let o=[];return o=oe(t)&&t.assignedNodes?Vt(t.assignedNodes()):qt(t,HTMLIFrameElement)&&(null===(n=t.contentDocument)||void 0===n?void 0:n.body)?Vt(t.contentDocument.body.childNodes):Vt((null!==(r=t.shadowRoot)&&void 0!==r?r:t).childNodes),0===o.length||qt(t,HTMLVideoElement)||await o.reduce(((t,n)=>t.then((()=>ae(n,i))).then((t=>{t&&e.appendChild(t)}))),Promise.resolve()),e}(t,i,e))).then((i=>function(t,e,i){return qt(e,Element)&&(function(t,e,i){const n=e.style;if(!n)return;const r=window.getComputedStyle(t);r.cssText?(n.cssText=r.cssText,n.transformOrigin=r.transformOrigin):Kt(i).forEach((i=>{let o=r.getPropertyValue(i);if("font-size"===i&&o.endsWith("px")){const t=Math.floor(parseFloat(o.substring(0,o.length-2)))-.1;o=`${t}px`}qt(t,HTMLIFrameElement)&&"display"===i&&"inline"===o&&(o="block"),"d"===i&&e.getAttribute("d")&&(o=`path(${e.getAttribute("d")})`),n.setProperty(i,o,r.getPropertyPriority(i))}))}(t,e,i),function(t,e,i){Xt(t,e,":before",i),Xt(t,e,":after",i)}(t,e,i),function(t,e){qt(t,HTMLTextAreaElement)&&(e.innerHTML=t.value),qt(t,HTMLInputElement)&&e.setAttribute("value",t.value)}(t,e),function(t,e){if(qt(t,HTMLSelectElement)){const i=Array.from(e.children).find((e=>t.value===e.getAttribute("value")));i&&i.setAttribute("selected","")}}(t,e)),e}(t,i,e))).then((t=>async function(t,e){const i=t.querySelectorAll?t.querySelectorAll("use"):[];if(0===i.length)return t;const n={};for(let r=0;r<i.length;r++){const o=i[r].getAttribute("xlink:href");if(o){const i=t.querySelector(o),r=document.querySelector(o);i||!r||n[o]||(n[o]=await ae(r,e,!0))}}const r=Object.values(n);if(r.length){const e="http://www.w3.org/1999/xhtml",i=document.createElementNS(e,"svg");i.setAttribute("xmlns",e),i.style.position="absolute",i.style.width="0",i.style.height="0",i.style.overflow="hidden",i.style.display="none";const n=document.createElementNS(e,"defs");i.appendChild(n);for(let t=0;t<r.length;t++)n.appendChild(r[t]);t.appendChild(i)}return t}(t,e))):null}const le=/url\((['"]?)([^'"]+?)\1\)/g,ce=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,he=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function ue(t){return-1!==t.search(le)}async function de(t,e,i){if(!ue(t))return t;const n=function(t,{preferredFontFormat:e}){return e?t.replace(he,(t=>{for(;;){const[i,,n]=ce.exec(t)||[];if(!n)return"";if(n===e)return`src: ${i};`}})):t}(t,i),r=function(t){const e=[];return t.replace(le,((t,i,n)=>(e.push(n),t))),e.filter((t=>!ee(t)))}(n);return r.reduce(((t,n)=>t.then((t=>async function(t,e,i,n){try{const r=i?function(t,e){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 i=document.implementation.createHTMLDocument(),n=i.createElement("base"),r=i.createElement("a");return i.head.appendChild(n),i.body.appendChild(r),e&&(n.href=e),r.href=t,r.href}(e,i):e,o=te(e);let s;return s=await re(r,o,n),t.replace(function(t){const e=t.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1");return new RegExp(`(url\\(['"]?)(${e})(['"]?\\))`,"g")}(e),`$1${s}$3`)}catch(t){}return t}(t,n,e,i)))),Promise.resolve(n))}async function fe(t,e,i){var n;const r=null===(n=e.style)||void 0===n?void 0:n.getPropertyValue(t);if(r){const n=await de(r,null,i);return e.style.setProperty(t,n,e.style.getPropertyPriority(t)),!0}return!1}async function pe(t,e){qt(t,Element)&&(await async function(t,e){await fe("background",t,e)||await fe("background-image",t,e),await fe("mask",t,e)||await fe("-webkit-mask",t,e)||await fe("mask-image",t,e)||await fe("-webkit-mask-image",t,e)}(t,e),await async function(t,e){const i=qt(t,HTMLImageElement);if((!i||ee(t.src))&&(!qt(t,SVGImageElement)||ee(t.href.baseVal)))return;const n=i?t.src:t.href.baseVal,r=await re(n,te(n),e);await new Promise(((n,o)=>{t.onload=n,t.onerror=e.onImageErrorHandler?(...t)=>{try{n(e.onImageErrorHandler(...t))}catch(t){o(t)}}:o;const s=t;s.decode&&(s.decode=n),"lazy"===s.loading&&(s.loading="eager"),i?(t.srcset="",t.src=r):t.href.baseVal=r}))}(t,e),await async function(t,e){const i=Vt(t.childNodes).map((t=>pe(t,e)));await Promise.all(i).then((()=>t))}(t,e))}const be={};async function ge(t){let e=be[t];if(null!=e)return e;const i=await fetch(t);return e={url:t,cssText:await i.text()},be[t]=e,e}async function ve(t,e){let i=t.cssText;const n=/url\(["']?([^"')]+)["']?\)/g,r=(i.match(/url\([^)]+\)/g)||[]).map((async r=>{let o=r.replace(n,"$1");return o.startsWith("https://")||(o=new URL(o,t.url).href),ie(o,e.fetchRequestInit,(({result:t})=>(i=i.replace(r,`url(${t})`),[r,t])))}));return Promise.all(r).then((()=>i))}function ke(t){if(null==t)return[];const e=[];let i=t.replace(/(\/\*[\s\S]*?\*\/)/gi,"");const n=new RegExp("((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})","gi");for(;;){const t=n.exec(i);if(null===t)break;e.push(t[0])}i=i.replace(n,"");const r=/@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=r.exec(i);if(null===t){if(t=o.exec(i),null===t)break;r.lastIndex=o.lastIndex}else o.lastIndex=r.lastIndex;e.push(t[0])}return e}function me(t){return t.trim().replace(/["']/g,"")}async function ye(t,e){const i=await async function(t,e){if(null==t.ownerDocument)throw new Error("Provided element is not within a Document");const i=Vt(t.ownerDocument.styleSheets),n=await async function(t,e){const i=[],n=[];return t.forEach((i=>{if("cssRules"in i)try{Vt(i.cssRules||[]).forEach(((t,r)=>{if(t.type===CSSRule.IMPORT_RULE){let o=r+1;const s=ge(t.href).then((t=>ve(t,e))).then((t=>ke(t).forEach((t=>{try{i.insertRule(t,t.startsWith("@import")?o+=1:i.cssRules.length)}catch(e){console.error("Error inserting rule from remote css",{rule:t,error:e})}})))).catch((t=>{console.error("Error loading remote css",t.toString())}));n.push(s)}}))}catch(r){const o=t.find((t=>null==t.href))||document.styleSheets[0];null!=i.href&&n.push(ge(i.href).then((t=>ve(t,e))).then((t=>ke(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",r)}})),Promise.all(n).then((()=>(t.forEach((t=>{if("cssRules"in t)try{Vt(t.cssRules||[]).forEach((t=>{i.push(t)}))}catch(e){console.error(`Error while reading CSS rules from ${t.href}`,e)}})),i)))}(i,e);return function(t){return t.filter((t=>t.type===CSSRule.FONT_FACE_RULE)).filter((t=>ue(t.style.getPropertyValue("src"))))}(n)}(t,e),n=function(t){const e=new Set;return function t(i){(i.style.fontFamily||getComputedStyle(i).fontFamily).split(",").forEach((t=>{e.add(me(t))})),Array.from(i.children).forEach((e=>{e instanceof HTMLElement&&t(e)}))}(t),e}(t);return(await Promise.all(i.filter((t=>n.has(me(t.style.fontFamily)))).map((t=>de(t.cssText,t.parentStyleSheet?t.parentStyleSheet.href:null,e))))).join("\n")}async function we(t,e={}){const{width:i,height:n}=Ht(t,e),r=await ae(t,e,!0);return await async function(t,e){const i=null!=e.fontEmbedCSS?e.fontEmbedCSS:e.skipFonts?null:await ye(t,e);if(i){const e=document.createElement("style"),n=document.createTextNode(i);e.appendChild(n),t.firstChild?t.insertBefore(e,t.firstChild):t.appendChild(e)}}(r,e),await pe(r,e),function(t,e){const{style:i}=t;e.backgroundColor&&(i.backgroundColor=e.backgroundColor),e.width&&(i.width=`${e.width}px`),e.height&&(i.height=`${e.height}px`);const n=e.style;null!=n&&Object.keys(n).forEach((t=>{i[t]=n[t]}))}(r,e),await async function(t,e,i){const n="http://www.w3.org/2000/svg",r=document.createElementNS(n,"svg"),o=document.createElementNS(n,"foreignObject");return r.setAttribute("width",`${e}`),r.setAttribute("height",`${i}`),r.setAttribute("viewBox",`0 0 ${e} ${i}`),o.setAttribute("width","100%"),o.setAttribute("height","100%"),o.setAttribute("x","0"),o.setAttribute("y","0"),o.setAttribute("externalResourcesRequired","true"),r.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}`))}(r)}(r,i,n)}const xe=class{get host(){return r(this)}workspace;async onWorkspaceChange(t){const e=t?.id;if(!e)return;await Promise.resolve();const i=this.core.store.state.activeWorkspace?.id;i!==e&&(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;onGlobalContextMenuItemsChange(t){this.contextMenuHandler&&(this.contextMenuHandler.globalContextMenuItems=t??[])}objectContextMenuItems;onObjectContextMenuItemsChange(t){this.contextMenuHandler&&(this.contextMenuHandler.objectContextMenuItems=t??[])}scaleMax=vt;validateScaleMax(t){t>vt?(console.warn("scaleMax cannot be greater than 1000."),this.scaleMax=vt,this.core.store.state.scaleMax=this.scaleMax):this.core.store.state.scaleMax=t}scaleMin=kt;validateScaleMin(t){t<kt?(console.warn("scaleMin cannot be less than 0.0001."),this.scaleMin=kt,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}isObjectDistanceFadingActive=!1;onIsObjectDistanceFadingActiveChange(){this.core.rerender()}theme="light";onThemeChange(t){this.core.themeManager.setTheme(t)}themes;onThemesChange(t){t&&t.length>0&&(this.core.themeManager.registerThemes(t),this.core.themeManager.applyTheme(this.core.themeManager.currentTheme))}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||(l.isTouchDevice()&&X.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=St.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 e=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(),e&&(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 HTMLElement&&("DIALOG"===t.tagName||"KRITZEL-DIALOG"===t.tagName||"dialog"===t.getAttribute?.("role")||"alertdialog"===t.getAttribute?.("role")))))return!1;const i=e[0];return!(i instanceof HTMLElement&&i.matches?.('input, textarea, select, [contenteditable="true"], [contenteditable=""]'))}preventDoubleTapZoomOnTouchDevices(t){t.cancelable&&t.preventDefault()}async registerTool(t,e,i){if("function"!=typeof e)return console.error(`Failed to register tool "${t}": Tool class must be a constructor function`),null;if(this.core.toolRegistry.hasTool(t)){const e=this.core.toolRegistry.getTool(t);return i&&this.applyToolConfig(e,i),e}const n=this.core.toolRegistry.registerTool(t,e);return i&&this.applyToolConfig(n,i),Promise.resolve(n)}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 changeActiveToolByName(t){const e=this.core.toolRegistry.getTool(t);e?await this.changeActiveTool(e):console.warn(`[KritzelEngine] No tool registered with name: ${t}`)}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,e){this.core.paste(t,e)}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 $)),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 openContextMenu(t){this.contextMenuHandler.open(t)}async getObjectById(t){return this.core.store.allObjects.find((e=>e.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=t.scale??this.core.store.state.scale,t.zIndex=this.core.store.currentZIndex,t.workspaceId=this.core.store.state.activeWorkspace.id,q.isInstanceOf(t,"KritzelImage")&&await t.prepareForInsert(),q.isInstanceOf(t,"KritzelText")){const e=t.content;t.editor=t.createEditor(),e&&t.setContent(e)}if(q.isInstanceOf(t,"KritzelGroup")&&t._pendingChildren.length>0){const e=new Map,i=[],n=t=>{if(0===t._pendingChildren.length)return;const r=t._pendingChildren;t._pendingChildren=[],t.childIds=[],r.forEach((r=>{const o=r.id;r.id=r.generateId(),r._core=this.core,r.scale=r.scale??this.core.store.state.scale,r.zIndex=this.core.store.currentZIndex,r.workspaceId=this.core.store.state.activeWorkspace.id,e.set(o,r.id),t.childIds.push(r.id),i.push(r),q.isInstanceOf(r,"KritzelGroup")&&n(r)}))};n(t),i.forEach((t=>{q.isInstanceOf(t,"KritzelLine")&&(t.startAnchor&&e.has(t.startAnchor.objectId)&&(t.startAnchor={objectId:e.get(t.startAnchor.objectId)}),t.endAnchor&&e.has(t.endAnchor.objectId)&&(t.endAnchor={objectId:e.get(t.endAnchor.objectId)}))})),i.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 addObjects(t){if(0===t.length)return[];for(const e of t)e._core=this.core,q.isInstanceOf(e,"KritzelImage")&&await e.prepareForInsert();return this.core.store.objects.transaction((()=>{for(const e of t){if(e.id=e.generateId(),e._core=this.core,e.zIndex=this.core.store.currentZIndex,e.workspaceId=this.core.store.state.activeWorkspace.id,q.isInstanceOf(e,"KritzelText")){const t=e.content;e.editor=e.createEditor(),t&&e.setContent(t)}if(q.isInstanceOf(e,"KritzelGroup")&&e._pendingChildren.length>0){const t=new Map,i=[],n=e=>{if(0===e._pendingChildren.length)return;const r=e._pendingChildren;e._pendingChildren=[],e.childIds=[],r.forEach((r=>{const o=r.id;r.id=r.generateId(),r._core=this.core,r.zIndex=this.core.store.currentZIndex,r.workspaceId=this.core.store.state.activeWorkspace.id,t.set(o,r.id),e.childIds.push(r.id),i.push(r),q.isInstanceOf(r,"KritzelGroup")&&n(r)}))};n(e),i.forEach((e=>{q.isInstanceOf(e,"KritzelLine")&&(e.startAnchor&&t.has(e.startAnchor.objectId)&&(e.startAnchor={objectId:t.get(e.startAnchor.objectId)}),e.endAnchor&&t.has(e.endAnchor.objectId)&&(e.endAnchor={objectId:t.get(e.endAnchor.objectId)}))})),i.forEach((t=>{this.core.addObject(t)})),e.finalize(),this.core.anchorManager.rebuildIndex()}this.core.addObject(e)}})),this.core.rerender(),await new Promise((t=>{requestAnimationFrame((()=>requestAnimationFrame((()=>t()))))})),this.emitObjectsAdded(t),t}async updateObject(t,e){return this.core.deselectAllObjects(),this.core.updateObject(t,e),this.core.rerender(),this.emitObjectsUpdated([{object:t,changedProperties:Object.keys(e)}]),t}async removeObject(t){const e=this.core.store.objects;return e?(this.core.deselectAllObjects(),e.remove((e=>e.id===t.id)),this.core.rerender(),this.emitObjectsRemoved([t]),t):null}async removeObjects(t){const e=this.core.store.objects;return e&&0!==t.length?(e.transaction((()=>{for(const e of t)this.core.removeObject(e)})),this.core.rerender(),this.emitObjectsRemoved(t),t):[]}async getSelectedObjects(){const t=this.core.store.selectionGroup;return t?t.objects:[]}async getDisplayableShortcuts(){return this.keyHandler.getDisplayableShortcuts()}async selectObjects(t){const e=this.core.toolRegistry.getTool("selection");e&&(this.core.store.state.activeTool?.onDeactivate(),this.core.store.setState("activeTool",e),this.core.deselectAllObjects(),this.core.selectObjects(t))}async selectAllObjectsInViewport(){const t=this.core.toolRegistry.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 panToObject(t){this.viewport.panTo(t.centerX,t.centerY)}async backToContent(){return this.viewport.centerFitNearestContent(20)}async centerAllObjects(t=!0){return this.viewport.centerFitAllObjects(t)}async centerObjects(t,e=!0){return this.viewport.centerFitObjects(t,e)}async setViewport(t,e,i){this.viewport.setViewport(t,e,i)}async panTo(t,e){this.viewport.panTo(t,e)}async zoomTo(t,e,i){this.viewport.zoomTo(t,e,i)}async zoomIn(t,e){this.viewport.zoomIn(t,e)}async zoomOut(t,e){this.viewport.zoomOut(t,e)}async getViewport(){return this.viewport.getViewport()}async screenToWorld(t,e){return this.viewport.screenToWorld(t,e)}async worldToScreen(t,e){return this.viewport.worldToScreen(t,e)}async getCopiedObjects(){return this.core.store.state.copiedObjects||[]}async getObjectsInViewport(){return this.core.getObjectsInViewport()}async getScreenshot(t="png",e){if(!this.host)return null;const i={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},n={filter:t=>!("KRITZEL-CONTEXT-MENU"===t.tagName||"KRITZEL-AWARENESS-CURSORS"===t.tagName||t.classList&&t.classList.contains("debug-panel"))};let r;(e?.includeBackground??1)||(n.backgroundColor="transparent");try{r="svg"===t?await we(this.host,n):await async function(t,e={}){return(await async function(t,e={}){const{width:i,height:n}=Ht(t,e),r=await we(t,e),o=await Yt(r),s=document.createElement("canvas"),a=s.getContext("2d"),l=e.pixelRatio||function(){let t,e;try{e=process}catch(t){}const i=e&&e.env?e.env.devicePixelRatio:null;return i&&(t=parseInt(i,10),Number.isNaN(t)&&(t=1)),t||window.devicePixelRatio||1}(),c=e.canvasWidth||i,h=e.canvasHeight||n;return s.width=c*l,s.height=h*l,e.skipAutoScale||function(t){(t.width>Gt||t.height>Gt)&&(t.width>Gt&&t.height>Gt?t.width>t.height?(t.height*=Gt/t.width,t.width=Gt):(t.width*=Gt/t.height,t.height=Gt):t.width>Gt?(t.height*=Gt/t.width,t.width=Gt):(t.width*=Gt/t.height,t.height=Gt))}(s),s.style.width=`${c}`,s.style.height=`${h}`,e.backgroundColor&&(a.fillStyle=e.backgroundColor,a.fillRect(0,0,s.width,s.height)),a.drawImage(o,0,0,s.width,s.height),s}(t,e)).toDataURL()}(this.host,n)}finally{this.core.store.state.objects=i.objects,this.core.store.state.activeWorkspace=i.activeWorkspace,this.core.store.state.workspaces=i.workspaces,this.core.store.state.activeTool=i.activeTool,this.core.store.state.isReady=i.isReady,this.core.store.state.translateX=i.translateX,this.core.store.state.translateY=i.translateY,this.core.store.state.scale=i.scale,this.core.rerender()}return r}async exportViewportAsPng(t){try{const e=`${this.core.store.state?.activeWorkspace?.name||"workspace"}-${(new Date).toISOString().replace(/[:.]/g,"-")}.png`,i=await this.getScreenshot("png",t);if(!i)return void console.error("Failed to export viewport as PNG: screenshot could not be generated");const n=document.createElement("a");n.download=e,n.href=i,n.click()}catch(t){console.error("Failed to export viewport as PNG:",t)}}async exportViewportAsSvg(t){try{const e=`${this.core.store.state?.activeWorkspace?.name||"workspace"}-${(new Date).toISOString().replace(/[:.]/g,"-")}.svg`,i=await this.getScreenshot("svg",t);if(!i)return void console.error("Failed to export viewport as SVG: screenshot could not be generated");const n=document.createElement("a");n.download=e,n.href=i,n.click()}catch(t){console.error("Failed to export viewport as SVG:",t)}}async getSelectedObjectsAsSvgString(t){const e=await this.getSelectedObjects();if(!e||0===e.length)return null;const i=t?.theme??this.core.themeManager.getStoredTheme();return Pt.generateSvg(e,{theme:i,padding:t?.padding??0,includeXmlDeclaration:!0})}async exportSelectedObjectsAsSvg(t){try{const e=await this.getSelectedObjectsAsSvgString(t);if(!e)return void console.warn("No objects selected for SVG export");const i=`selection-${(new Date).toISOString().replace(/[:.]/g,"-")}.svg`,n=new Blob([e],{type:"image/svg+xml;charset=utf-8"}),r=URL.createObjectURL(n),o=document.createElement("a");o.download=i,o.href=r,o.click(),URL.revokeObjectURL(r)}catch(t){console.error("Failed to export selected objects as SVG:",t)}}async getSelectedObjectsAsPngDataUrl(t){const e=await this.getSelectedObjectsAsSvgString({theme:t?.theme,padding:t?.padding});if(!e)return null;const i=t?.scale??2;return new Promise(((t,n)=>{const r=new Image,o=new Blob([e],{type:"image/svg+xml;charset=utf-8"}),s=URL.createObjectURL(o);r.onload=()=>{const e=document.createElement("canvas");e.width=r.width*i,e.height=r.height*i;const o=e.getContext("2d");if(!o)return URL.revokeObjectURL(s),void n(new Error("Failed to get canvas context"));o.scale(i,i),o.drawImage(r,0,0),URL.revokeObjectURL(s),t(e.toDataURL("image/png"))},r.onerror=()=>{URL.revokeObjectURL(s),n(new Error("Failed to load SVG for PNG conversion"))},r.src=s}))}async exportSelectedObjectsAsPng(t){try{const e=await this.getSelectedObjectsAsPngDataUrl(t);if(!e)return void console.warn("No objects selected for PNG export");const i=`selection-${(new Date).toISOString().replace(/[:.]/g,"-")}.png`,n=document.createElement("a");n.download=i,n.href=e,n.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 e=t.serialize({includeObjects:!0});return JSON.stringify(e,null,2)}async importFromJson(t){const e=JSON.parse(t);if(!e.__class__||"KritzelWorkspace"!==e.__class__)throw new Error("Invalid workspace data: missing or incorrect __class__ identifier");e.version&&e.version!==Z&&console.warn(`Workspace version mismatch: expected ${Z}, got ${e.version}`);const i=K.generateUUID();let n=e.viewport||{centerWorldX:0,centerWorldY:0,scale:1};if("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 r=new E(i,e.name||"Imported Workspace",n);if(this.core.createWorkspace(r),this.workspacesChange.emit(this.core.store.state.workspaces),this.core.beforeWorkspaceChange(),await this.core.initializeWorkspace(r),e.objects&&Array.isArray(e.objects)){const t=new Tt(this.core);for(const n of e.objects){const e=t.revive(n);e&&(e.workspaceId=i,this.core.addObject(e))}}this.core.rerender(),this.activeWorkspaceChange.emit(r)}async loadObjectsFromJson(t){const e=JSON.parse(t);if(!e.__class__||"KritzelWorkspace"!==e.__class__)throw new Error("Invalid workspace data: missing or incorrect __class__ identifier");e.version&&e.version!==Z&&console.warn(`Workspace version mismatch: expected ${Z}, got ${e.version}`);const i=this.core.store.state.activeWorkspace;if(!i)throw new Error("Cannot load objects: no active workspace is loaded");const n=i.id;let r=0;if(e.objects&&Array.isArray(e.objects)){const t=new Tt(this.core);for(const i of e.objects){const e=t.revive(i);e&&(e.workspaceId=n,this.core.addObject(e),r++)}}return this.core.rerender(),r}async downloadAsJson(t){try{const e=await this.exportAsJson(),i=this.core.store.state?.activeWorkspace?.name||"workspace",n=(new Date).toISOString().replace(/[:.]/g,"-"),r=t||`${i}-${n}`,o=new Blob([e],{type:"application/json;charset=utf-8"}),s=URL.createObjectURL(o),a=document.createElement("a");a.download=`${r}.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,e)=>{const i=document.createElement("input");i.type="file",i.accept=".json,application/json",i.style.display="none";const n=()=>{i.removeEventListener("change",r),i.removeEventListener("cancel",o),document.body.removeChild(i)},r=async i=>{const r=i.target,o=r.files?.[0];if(!o)return n(),void t();try{const i=new FileReader;i.onload=async i=>{try{const e=i.target?.result;await this.importFromJson(e),n(),t()}catch(t){n(),console.error("Failed to import workspace from file:",t),e(t)}},i.onerror=()=>{n(),console.error("Failed to read file:",i.error),e(i.error)},i.readAsText(o)}catch(t){n(),console.error("Failed to process file:",t),e(t)}},o=()=>{n(),t()};i.addEventListener("change",r),i.addEventListener("cancel",o),document.body.appendChild(i),i.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 e=t;let i=this.core.getWorkspaces().find((t=>t.id===e));i?i.isPublic=!0:(i=new E(e,"Shared Workspace"),i.isPublic=!0,this.core.createWorkspace(i)),this.workspacesChange.emit(this.core.store.state.workspaces),this.core.beforeWorkspaceChange(),await this.initializeWorkspaceIfNeeded(i),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()}async saveSettings(t){const e=this.core.getStorageKey("kritzel-settings");localStorage.setItem(e,JSON.stringify(t))}async loadSettings(){const t=this.core.getStorageKey("kritzel-settings"),e=localStorage.getItem(t);if(!e)return null;try{return JSON.parse(e)}catch{return null}}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};_objectDistanceFadeNearScale=1;_objectDistanceFadeFarScale=.15;_objectDistanceFadeMinOpacity=0;_objectDistanceFadeCloseStartScale=2;_objectDistanceFadeCloseMaxScale=4;_objectDistanceFadeCloseMinOpacity=0;syncLoadingState(){this.core.store.state.isLoading=this._isWorkspaceLoading||this.isLoading}applyToolConfig(t,e){if(Object.entries(e).forEach((([e,i])=>{t[e]=i})),"palettes"in e&&"type"in e){const i=e.palettes[e.type];i&&(t.palette=i)}if("sizes"in e&&null!=e.sizes&&"type"in e){const i=e,n=i.sizes?.[i.type];n&&(t.sizes=n)}}get isSelecting(){return this.core.store.state.activeTool instanceof c&&this.core.store.state.isSelecting}get isSelectionActive(){return this.core.store.state.activeTool instanceof c&&null!==this.core.store.selectionGroup}constructor(e){t(this,e),this.isEngineReady=n(this,"isEngineReady"),this.activeToolChange=n(this,"activeToolChange"),this.objectsSelectionChange=n(this,"objectsSelectionChange"),this.workspacesChange=n(this,"workspacesChange"),this.activeWorkspaceChange=n(this,"activeWorkspaceChange"),this.longpress=n(this,"longpress"),this.objectsChange=n(this,"objectsChange"),this.objectsAdded=n(this,"objectsAdded"),this.objectsRemoved=n(this,"objectsRemoved"),this.objectsUpdated=n(this,"objectsUpdated"),this.undoStateChange=n(this,"undoStateChange"),this.objectsInViewportChange=n(this,"objectsInViewportChange"),this.viewportChange=n(this,"viewportChange"),this.awarenessChange=n(this,"awarenessChange"),this.core=new Bt(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.themes&&this.themes.length>0&&this.core.themeManager.registerThemes(this.themes);const t=this.host.closest("kritzel-editor");this.core.themeManager.injectThemeEarly(t||this.host),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 jt(this.core,this.globalContextMenuItems,this.objectContextMenuItems),this.keyHandler=new Mt(this.core),this.viewport=new It(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 e=this.core.store.state.activeWorkspace;e&&this.activeWorkspaceChange.emit(e),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,e=!0){const i=this.core.getWorkspaces().find((e=>e.id===t));i?this.core.store.state.activeWorkspace?.id!==i.id&&(this.core.beforeWorkspaceChange(),await this.initializeWorkspaceIfNeeded(i),this.activeWorkspaceChange.emit(this.core.store.state.activeWorkspace)):e&&console.warn(`[KritzelEngine] No workspace found with ID: ${t}`)}async initializeWorkspaceIfNeeded(t,e){const i=t?.id??null,n=i??(e?.skipFallbackCreation?"__NO_FALLBACK__":"__AUTO__");if(i&&this.core.store.state.activeWorkspace?.id===i)return;if(this._workspaceInitializationPromise&&this._workspaceInitializationTargetKey===n)return void await this._workspaceInitializationPromise;this._isWorkspaceLoading=!0,this.syncLoadingState();const r=this.core.initializeWorkspace(t,e);this._workspaceInitializationPromise=r,this._workspaceInitializationTargetKey=n;try{await r}finally{this._workspaceInitializationPromise===r&&(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 e=t.undoState,i=null!==this.core.store.selectionGroup;this.objectsChange.emit(this.core.store.allObjects),this.undoStateChange.emit(e),this._lastHadSelectionGroup!==i&&(this._lastHadSelectionGroup=i,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 c||(this.core.clearSelection(),this.core.store.objects?.remove((t=>t instanceof $)),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 h||this.core.resetActiveText(),t instanceof y||this.core.resetActiveShape(),this.core.store.state.skipContextMenu=!1,this.core.store.state.copiedObjects=void 0,t&&this.activeToolChange.emit(t),A.forceHideKeyboard(),this.core.rerender()}getObjectDistanceFadeMultiplier(t,e){if(!this.isObjectDistanceFadingActive)return 1;const i=Math.max(Number.isFinite(e)?e:1,Number.EPSILON)/Math.max(Number.isFinite(t)?t:1,Number.EPSILON),n=this.getFarDistanceFadeMultiplier(i),r=this.getCloseDistanceFadeMultiplier(i);return Math.min(n,r)}getFarDistanceFadeMultiplier(t){if(t>=this._objectDistanceFadeNearScale)return 1;if(t<=this._objectDistanceFadeFarScale)return this._objectDistanceFadeMinOpacity;const e=(this._objectDistanceFadeNearScale-t)/(this._objectDistanceFadeNearScale-this._objectDistanceFadeFarScale);return 1-e*e*(3-2*e)*(1-this._objectDistanceFadeMinOpacity)}getCloseDistanceFadeMultiplier(t){if(t<=this._objectDistanceFadeCloseStartScale)return 1;if(t>=this._objectDistanceFadeCloseMaxScale)return this._objectDistanceFadeCloseMinOpacity;const e=(t-this._objectDistanceFadeCloseStartScale)/(this._objectDistanceFadeCloseMaxScale-this._objectDistanceFadeCloseStartScale);return 1-e*e*(3-2*e)*(1-this._objectDistanceFadeCloseMinOpacity)}shouldApplyDistanceFade(t){return!q.isInstanceOf(t,"KritzelSelectionGroup")&&!q.isInstanceOf(t,"KritzelSelectionBox")}getObjectEffectiveOpacity(t,e){const i=Number.isFinite(t.opacity)?t.opacity:1,n=this.shouldApplyDistanceFade(t)?this.getObjectDistanceFadeMultiplier(t.scale,e):1;return{multiplied:(t.markedForRemoval?.5:1)*i*n,overridden:((t.markedForRemoval?.5:i)*n).toString()}}render(){if(!this.viewport)return e(i,null,this.core.store.state.isLoading&&e("div",{class:"workspace-loading-overlay"},e("span",{class:"workspace-loading-spinner"}),"Loading..."));const t=this.core.themeManager.getStoredTheme(),n=window.getComputedStyle(this.host).getPropertyValue("--kritzel-selection-handle-size").trim()||"6px",r=parseFloat(n),o=2*r<14?14:r,s=this.core.store.state.scale,l=this.core.store.state.viewportWidth/2+this.core.store.state.translateX,c=this.core.store.state.viewportHeight/2+this.core.store.state.translateY,h=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()),e(i,null,this.core.store.state.isLoading&&e("div",{class:"workspace-loading-overlay"},e("span",{class:"workspace-loading-spinner"}),"Loading..."),this.core.store.state.debugInfo.showViewportInfo&&e("div",{class:"debug-panel"},e("div",null,"ActiveWorkspaceId: ",this.core.store.state?.activeWorkspace?.id),e("div",null,"ActiveWorkspaceName: ",this.core.store.state?.activeWorkspace?.name),e("div",null,"TranslateX: ",this.core.store.state?.translateX),e("div",null,"TranslateY: ",this.core.store.state?.translateY),e("div",null,"ViewportWidth: ",this.core.store.state?.viewportWidth),e("div",null,"ViewportHeight: ",this.core.store.state?.viewportHeight),e("div",null,"PointerCount: ",this.core.store.state.pointers.size),e("div",null,"Scale: ",this.core.store.state?.scale),e("div",null,"ActiveTool: ",this.core.store.state?.activeTool?.name),e("div",null,"HasViewportChanged: ",this.core.store.state?.hasViewportChanged?"true":"false"),e("div",null,"IsEnabled: ",this.core.store.state?.isEnabled?"true":"false"),e("div",null,"IsScaling: ",this.core.store.state?.isScaling?"true":"false"),e("div",null,"IsPanning: ",this.core.store.state?.isPanning?"true":"false"),e("div",null,"IsSelecting: ",this.isSelecting?"true":"false"),e("div",null,"IsSelectionActive: ",this.isSelectionActive?"true":"false"),e("div",null,"IsResizeHandleSelected: ",this.core.store.state.isResizeHandleSelected?"true":"false"),e("div",null,"IsRotationHandleSelected: ",this.core.store.state.isRotationHandleSelected?"true":"false"),e("div",null,"IsRotationHandleHovered: ",this.core.store.state.isRotationHandleHovered?"true":"false"),e("div",null,"IsDrawing: ",this.core.store.state.isDrawing?"true":"false"),e("div",null,"IsWriting: ",this.core.store.state.isWriting?"true":"false"),e("div",null,"IsPointerDown: ",this.core.store.isPointerDown?"true":"false"),e("div",null,"PointerX: ",this.core.store.state?.pointerX),e("div",null,"PointerY: ",this.core.store.state?.pointerY),e("div",null,"TotalObjects: ",this.core.store.totalObjectCount),e("div",null,"ObjectsInViewport: ",this.core.store.objectsInViewport.length),e("div",null,"SelectedObjects: ",this.core.store.selectionGroup?.objects.length||0),e("div",null,"ViewportCenter: (",l.toFixed(2),", ",c.toFixed(2),")")),e("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})`}},h?.map((i=>{const{multiplied:n,overridden:l}=this.getObjectEffectiveOpacity(i,s);return e("div",{key:i.id,id:i.id,class:"object",style:{transform:i?.transformationMatrix,transformOrigin:"top left",position:"absolute",zIndex:i.zIndex.toString(),pointerEvents:this.core.store.state.isScaling?"none":"auto"}},q.isInstanceOf(i,"KritzelPath")&&e("svg",{ref:t=>t&&i.mount(t),xmlns:"http://www.w3.org/2000/svg",style:{height:i?.totalHeight+"px",width:i?.totalWidth+"px",left:"0",top:"0",position:"absolute",transform:0!==i.rotationDegrees?`rotate(${i.rotationDegrees}deg)`:void 0,transformOrigin:0!==i.rotationDegrees?`${i.totalWidth/2}px ${i.totalHeight/2}px`:void 0,pointerEvents:i.markedForRemoval?"none":"auto",overflow:"visible"},viewBox:i?.viewBox},e("path",{d:i?.d,fill:a.applyOpacity(i.fill,n,t),stroke:a.applyOpacity(i?.stroke,n,t),"shape-rendering":i.isLowRes()?"optimizeSpeed":"auto"})),q.isInstanceOf(i,"KritzelLine")&&e("svg",{ref:t=>t&&i.mount(t),xmlns:"http://www.w3.org/2000/svg",style:{height:i?.totalHeight+"px",width:i?.totalWidth+"px",left:"0",top:"0",position:"absolute",transform:0!==i.rotationDegrees?`rotate(${i.rotationDegrees}deg)`:void 0,transformOrigin:0!==i.rotationDegrees?`${i.totalWidth/2}px ${i.totalHeight/2}px`:void 0,pointerEvents:i.markedForRemoval?"none":"auto",overflow:"visible"},viewBox:i?.viewBox},(i.hasStartArrow||i.hasEndArrow)&&e("defs",null,i.hasStartArrow&&e("marker",{id:i.startMarkerId,markerWidth:i.getArrowSize("start"),markerHeight:i.getArrowSize("start"),refX:0,refY:i.getArrowSize("start")/2,orient:"auto-start-reverse",markerUnits:"userSpaceOnUse"},e("path",{d:i.getArrowPath(i.arrows?.start?.style),fill:a.applyOpacity(i.getArrowFill("start"),n),transform:`scale(${i.getArrowSize("start")/10})`})),i.hasEndArrow&&e("marker",{id:i.endMarkerId,markerWidth:i.getArrowSize("end"),markerHeight:i.getArrowSize("end"),refX:0,refY:i.getArrowSize("end")/2,orient:"auto",markerUnits:"userSpaceOnUse"},e("path",{d:i.getArrowPath(i.arrows?.end?.style),fill:a.applyOpacity(i.getArrowFill("end"),n),transform:`scale(${i.getArrowSize("end")/10})`}))),e("path",{d:this.core.anchorManager.computeClippedLinePath(i),fill:"none",stroke:"transparent","stroke-width":Math.max(i?.strokeWidth||0,10),"stroke-linecap":"round"}),e("path",{d:this.core.anchorManager.computeClippedLinePath(i),fill:"none",stroke:a.applyOpacity(i?.stroke,n,t),"stroke-width":i?.strokeWidth,"stroke-linecap":"round","marker-start":i.hasStartArrow?`url(#${i.startMarkerId})`:void 0,"marker-end":i.hasEndArrow?`url(#${i.endMarkerId})`:void 0})),q.isInstanceOf(i,"KritzelImage")&&"ready"===i.loadState&&e("img",{ref:t=>t&&i.mount(t),src:i.resolvedSrc||i.src,style:{position:"absolute",left:"0",top:"0",width:i.totalWidth+"px",height:i.totalHeight+"px",transform:0!==i.rotationDegrees?`rotate(${i.rotationDegrees}deg)`:void 0,transformOrigin:0!==i.rotationDegrees?`${i.totalWidth/2}px ${i.totalHeight/2}px`:void 0,opacity:l,pointerEvents:i.markedForRemoval?"none":"auto",backgroundColor:a.resolveThemeColor(i.backgroundColor,t),borderColor:a.resolveThemeColor(i.borderColor,t),borderWidth:i.borderWidth+"px",borderStyle:"solid",padding:i.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()}),q.isInstanceOf(i,"KritzelImage")&&"ready"!==i.loadState&&e("div",{ref:()=>i.ensureLoaded(),style:{position:"absolute",left:"0",top:"0",width:i.totalWidth+"px",height:i.totalHeight+"px",transform:0!==i.rotationDegrees?`rotate(${i.rotationDegrees}deg)`:void 0,transformOrigin:0!==i.rotationDegrees?`${i.totalWidth/2}px ${i.totalHeight/2}px`:void 0,opacity:l,pointerEvents:i.markedForRemoval?"none":"auto",backgroundColor:a.resolveThemeColor({light:"#e5e7eb",dark:"#2a2a2a"},t),borderColor:a.resolveThemeColor("error"===i.loadState?{light:"#9ca3af",dark:"#6b7280"}:i.borderColor,t),borderWidth:"error"===i.loadState?"1px":i.borderWidth+"px",borderStyle:"solid",padding:i.padding+"px",overflow:"hidden",userSelect:"none",display:"flex",alignItems:"center",justifyContent:"center"}},e("kritzel-icon",{name:"error"===i.loadState?"image-off":"image",size:Math.max(16,.3*Math.min(i.totalWidth,i.totalHeight)),style:{color:a.resolveThemeColor({light:"#9ca3af",dark:"#6b7280"},t)}})),q.isInstanceOf(i,"KritzelCustomElement")&&e("div",{ref:t=>t&&i.mount(t),style:{position:"absolute",left:"0",top:"0",width:i.totalWidth+"px",height:i.totalHeight+"px",transform:0!==i.rotationDegrees?`rotate(${i.rotationDegrees}deg)`:void 0,transformOrigin:0!==i.rotationDegrees?`${i.totalWidth/2}px ${i.totalHeight/2}px`:void 0,opacity:l,pointerEvents:i.markedForRemoval?"none":"auto",backgroundColor:a.resolveThemeColor(i.backgroundColor,t),borderColor:a.resolveThemeColor(i.borderColor,t),borderWidth:i.borderWidth+"px",borderStyle:"solid",padding:i.padding+"px",overflow:"hidden",display:"block"}}),q.isInstanceOf(i,"KritzelSelectionGroup")&&!this.core.displaySelectionLineUI(i)&&e("div",{ref:t=>t&&i.mount(t),style:{position:"absolute",left:"0",top:"0",width:i.totalWidth+"px",height:i.totalHeight+"px",transform:0!==i.rotationDegrees?`rotate(${i.rotationDegrees}deg)`:void 0,transformOrigin:0!==i.rotationDegrees?`${i.totalWidth/2}px ${i.totalHeight/2}px`:void 0,opacity:i.markedForRemoval?"0.5":i.opacity.toString(),pointerEvents:i.markedForRemoval?"none":"auto"}}),q.isInstanceOf(i,"KritzelSelectionBox")&&e("div",{ref:t=>t&&i.mount(t),style:{position:"absolute",left:"0",top:"0",width:i.totalWidth+"px",height:i.totalHeight+"px",transform:0!==i.rotationDegrees?`rotate(${i.rotationDegrees}deg)`:void 0,transformOrigin:0!==i.rotationDegrees?`${i.totalWidth/2}px ${i.totalHeight/2}px`:void 0,opacity:i.markedForRemoval?"0.5":i.opacity.toString(),pointerEvents:i.markedForRemoval?"none":"auto",backgroundColor:a.resolveThemeColor(i.backgroundColor,t),borderColor:a.resolveThemeColor(i.borderColor,t),borderWidth:i.borderWidth+"px",borderStyle:"solid"}}),q.isInstanceOf(i,"KritzelText")&&e("div",{style:{position:"absolute",left:"0",top:"0",width:i.totalWidth+"px",height:i.totalHeight+"px",transform:0!==i.rotationDegrees?`rotate(${i.rotationDegrees}deg)`:void 0,transformOrigin:0!==i.rotationDegrees?`${i.totalWidth/2}px ${i.totalHeight/2}px`:void 0,opacity:l,pointerEvents:i.markedForRemoval?"none":"auto"}},e("div",{id:"text-object",ref:t=>t&&i.mount(t),onPointerDown:t=>i.handlePointerDown(t),onPointerMove:t=>i.handlePointerMove(t),onPointerUp:t=>i.handlePointerUp(t),style:{minWidth:i.initialWidth+"px",minHeight:i.initialHeight+"px",maxWidth:"500px",height:"auto",width:"max-content",transformOrigin:"top left",transform:`scale(${i.scaleFactor})`,backgroundColor:a.resolveThemeColor(i.backgroundColor,t),overflow:"visible"}})),q.isInstanceOf(i,"KritzelShape")&&(()=>{const r=a.resolveThemeColor(i.fillColor,t),o=a.resolveThemeColor(i.strokeColor,t),s=!!r&&"transparent"!==r&&o===r;return e("div",{ref:t=>t&&i.mount(t),onPointerDown:t=>i.handlePointerDown(t),onPointerMove:t=>i.handlePointerMove(t),onPointerUp:t=>i.handlePointerUp(t),style:{position:"absolute",left:"0",top:"0",width:i.totalWidth+"px",height:i.totalHeight+"px",transform:0!==i.rotationDegrees?`rotate(${i.rotationDegrees}deg)`:void 0,transformOrigin:0!==i.rotationDegrees?`${i.totalWidth/2}px ${i.totalHeight/2}px`:void 0,pointerEvents:i.markedForRemoval?"none":"auto",overflow:"visible"}},e("svg",{xmlns:"http://www.w3.org/2000/svg",style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",overflow:"visible",pointerEvents:"none"},viewBox:i.viewBox,preserveAspectRatio:"none"},e("path",{d:i.getSvgPath(),fill:a.applyOpacity(i.fillColor,n,t),stroke:s?"none":a.applyOpacity(i.strokeColor,n,t),"stroke-width":s?0:i.strokeWidth})),e("div",{ref:t=>t&&i.mountTextEditor(t),style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",textAlign:"center",overflow:"hidden",pointerEvents:i.isEditing?"auto":"none"}}))})(),this.core.store.state.debugInfo.showObjectInfo&&i.isDebugInfoVisible&&e("div",{style:{pointerEvents:"none",position:"absolute",left:`${i.totalWidth}px`,top:"0",zIndex:(i.zIndex+2).toString()}},e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"Id: ",i.id),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"userId: ",i.userId),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"width: ",i.width),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"height: ",i.height),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"translateX: ",i.translateX),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"translateY: ",i.translateY),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"scale: ",i.scale),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"rotationDegrees: ",i.rotationDegrees),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"zIndex: ",i.zIndex),q.isInstanceOf(i,"KritzelImage")&&e("div",null,e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"assetId: ",i.assetId),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"mimeType: ",i.mimeType))),(this.core.displaySelectionGroupUI(i)||this.core.displaySelectionLineUI(i))&&(()=>{const n=q.isInstanceOf(i,"KritzelSelectionGroup"),s=this.core.store.objects?.localClientId,l=this.core.store.objects?.awareness?.getStates(),c=n&&(null!=i.userId&&null!=this.core.user?.id&&i.userId!==this.core.user.id||null!=i.userId&&null!=this.core.user?.id&&i.userId===this.core.user.id&&null!=i.clientId&&null!=s&&i.clientId!==s&&!0===l?.has(i.clientId));let h;if(c&&l&&(n&&null!=i.clientId&&(h=l.get(i.clientId)?.user?.color),!h))for(const t of l.values())if(t.user?.id===i.userId){h=t.user.color;break}const u=h??(a.resolveThemeColor(i.borderColor,t)||"var(--kritzel-selection-border-color, #007AFF)"),d=h??"var(--kritzel-selection-handle-stroke-color, #007AFF)";return e("svg",{xmlns:"http://www.w3.org/2000/svg",style:{zIndex:(i.zIndex+1).toString(),height:i?.totalHeight.toString(),width:i?.totalWidth.toString(),left:"0",top:"0",position:"absolute",transform:`rotate(${i.rotationDegrees}deg)`,transformOrigin:`${i.totalWidth/2}px ${i.totalHeight/2}px`,overflow:"visible",pointerEvents:"none"}},this.core.displaySelectionGroupUI(i)&&e("g",{class:"selection-group-ui",style:{pointerEvents:"none"}},(()=>{const t=c&&q.isInstanceOf(i,"KritzelSelectionGroup")&&1===i.objects.length&&q.isInstanceOf(i.objects[0],"KritzelLine")?i.objects[0]:null;return t?e("g",{class:"selection-line-borders"},e("path",{class:"selection-line-border",d:this.core.anchorManager.computeClippedLinePath(t,!0),style:{stroke:u,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${i.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"round",fill:"none"}})):e("g",{class:"selection-group-borders"},e("line",{x1:"0",y1:"0",x2:i.totalWidth,y2:"0",style:{stroke:u,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${i.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),e("line",{x1:"0",y1:"0",x2:"0",y2:i.totalHeight,style:{stroke:u,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${i.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),e("line",{x1:"0",y1:i.totalHeight,x2:i.totalWidth,y2:i.totalHeight,style:{stroke:u,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${i.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),e("line",{x1:i.totalWidth,y1:"0",x2:i.totalWidth,y2:i.totalHeight,style:{stroke:u,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${i.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}))})(),!this.isSelecting&&!c&&e("g",{class:"selection-group-handles",style:{pointerEvents:"auto"}},e("rect",{class:"resize-handle top-left",x:""+-(r-1)*i.scale/this.core.store.state?.scale,y:""+-(r-1)*i.scale/this.core.store.state?.scale,width:""+2*(r-1)*i.scale/this.core.store.state?.scale,height:""+2*(r-1)*i.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:d,strokeWidth:`calc(2px * ${i.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),e("rect",{class:"resize-handle-overlay top-left",x:""+-o*i.scale/this.core.store.state?.scale,y:""+-o*i.scale/this.core.store.state?.scale,width:""+2*o*i.scale/this.core.store.state?.scale,height:""+2*o*i.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),e("rect",{class:"resize-handle top-right",x:""+(i.totalWidth-(r-1)*i.scale/this.core.store.state?.scale),y:""+-(r-1)*i.scale/this.core.store.state?.scale,width:""+2*(r-1)*i.scale/this.core.store.state?.scale,height:""+2*(r-1)*i.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:d,strokeWidth:`calc(2px * ${i.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),e("rect",{class:"resize-handle-overlay top-right",x:""+(i.totalWidth-o*i.scale/this.core.store.state?.scale),y:""+-o*i.scale/this.core.store.state?.scale,width:""+2*o*i.scale/this.core.store.state?.scale,height:""+2*o*i.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),e("rect",{class:"resize-handle bottom-left",x:""+-(r-1)*i.scale/this.core.store.state?.scale,y:""+(i.totalHeight-(r-1)*i.scale/this.core.store.state?.scale),width:""+2*(r-1)*i.scale/this.core.store.state?.scale,height:""+2*(r-1)*i.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:d,strokeWidth:`calc(2px * ${i.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),e("rect",{class:"resize-handle-overlay bottom-left",x:""+-o*i.scale/this.core.store.state?.scale,y:""+(i.totalHeight-o*i.scale/this.core.store.state?.scale),width:""+2*o*i.scale/this.core.store.state?.scale,height:""+2*o*i.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),e("rect",{class:"resize-handle bottom-right",x:""+(i.totalWidth-(r-1)*i.scale/this.core.store.state?.scale),y:""+(i.totalHeight-(r-1)*i.scale/this.core.store.state?.scale),width:""+2*(r-1)*i.scale/this.core.store.state?.scale,height:""+2*(r-1)*i.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:d,strokeWidth:`calc(2px * ${i.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),e("rect",{class:"resize-handle-overlay bottom-right",x:""+(i.totalWidth-o*i.scale/this.core.store.state?.scale),y:""+(i.totalHeight-o*i.scale/this.core.store.state?.scale),width:""+2*o*i.scale/this.core.store.state?.scale,height:""+2*o*i.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),e("line",{x1:i.totalWidth/2,y1:"0",x2:i.totalWidth/2,y2:-15*i.scale/this.core.store.state?.scale,style:{stroke:u,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${i.scale} / ${this.core.store.state?.scale})`}}),e("circle",{class:"rotation-handle",cx:i.totalWidth/2,cy:-15*i.scale/this.core.store.state?.scale,r:""+(r-1)*i.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:d,strokeWidth:`calc(2px * ${i.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),e("circle",{class:"rotation-handle-overlay",cx:i.totalWidth/2,cy:-15*i.scale/this.core.store.state?.scale,r:""+o*i.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}))),this.core.displaySelectionLineUI(i)&&q.isInstanceOf(i,"KritzelLine")&&e("g",{class:"selection-line-ui",style:{pointerEvents:"none"}},e("g",{class:"selection-line-borders"},e("path",{class:"selection-line-border",d:this.core.anchorManager.computeClippedLinePath(i,!0),style:{stroke:u,strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${i.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"round",fill:"none"}})),!this.isSelecting&&!c&&e("g",{class:"selection-line-handles",style:{pointerEvents:"auto"}},e("circle",{class:"selection-line-handle start",cx:i.startX-i.x,cy:i.startY-i.y,r:""+(r-1)*i.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",stroke:d,strokeWidth:`calc(2px * ${i.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),e("circle",{class:"selection-line-handle-overlay start","data-testid":"line-handle-start",cx:i.startX-i.x,cy:i.startY-i.y,r:""+o*i.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),e("circle",{class:"selection-line-handle center",cx:void 0!==i.controlX?(i.startX+2*i.controlX+i.endX)/4-i.x:(i.startX-i.x+i.endX-i.x)/2,cy:void 0!==i.controlY?(i.startY+2*i.controlY+i.endY)/4-i.y:(i.startY-i.y+i.endY-i.y)/2,r:""+(r-1)*i.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",stroke:d,strokeWidth:`calc(2px * ${i.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),e("circle",{class:"selection-line-handle-overlay center","data-testid":"line-handle-center",cx:void 0!==i.controlX?(i.startX+2*i.controlX+i.endX)/4-i.x:(i.startX-i.x+i.endX-i.x)/2,cy:void 0!==i.controlY?(i.startY+2*i.controlY+i.endY)/4-i.y:(i.startY-i.y+i.endY-i.y)/2,r:""+o*i.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),e("circle",{class:"selection-line-handle end",cx:i.endX-i.x,cy:i.endY-i.y,r:""+(r-1)*i.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",stroke:d,strokeWidth:`calc(2px * ${i.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),e("circle",{class:"selection-line-handle-overlay end","data-testid":"line-handle-end",cx:i.endX-i.x,cy:i.endY-i.y,r:""+o*i.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}))))})())})),(()=>{const t=this.core.anchorManager.getAnchorLinesRenderData();return t?e("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&&e("g",{class:"anchor-line-start"},t.startAnchorViz.pathD?e("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"}}):e("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"}}),e("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&&e("g",{class:"anchor-line-end"},t.endAnchorViz.pathD?e("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"}}):e("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"}}),e("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?e("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"}},e("g",null,t.snapLinePath?e("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&&e("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"}}),e("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&&e("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:"absolute",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.contextMenuWorldX,y:this.core.store.state.contextMenuWorldY},this.core.store.selectionGroup?.objects||[]),this.hideContextMenu()},onClose:()=>this.hideContextMenu()}),this.core.store.objects?.hasAwareness&&e("kritzel-awareness-cursors",{core:this.core}),this.core.store.state?.activeTool instanceof v&&!this.core.store.state.isScaling&&e("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}],globalContextMenuItems:[{onGlobalContextMenuItemsChange:0}],objectContextMenuItems:[{onObjectContextMenuItemsChange:0}],scaleMax:[{validateScaleMax:0}],scaleMin:[{validateScaleMin:0}],cursorTarget:[{onCursorTargetChange:0}],lockDrawingScale:[{onLockDrawingScaleChange:0}],isObjectDistanceFadingActive:[{onIsObjectDistanceFadingActiveChange:0}],theme:[{onThemeChange:0}],themes:[{onThemesChange:0}],viewportBoundaryLeft:[{onViewportBoundaryLeftChange:0}],viewportBoundaryRight:[{onViewportBoundaryRightChange:0}],viewportBoundaryTop:[{onViewportBoundaryTopChange:0}],viewportBoundaryBottom:[{onViewportBoundaryBottomChange:0}],debugInfo:[{onDebugInfoChange:0}],isLoading:[{onIsLoadingChange:0}]}}};xe.style=":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}";const ze=class{constructor(e){t(this,e),this.exportPng=n(this,"exportPng"),this.exportSvg=n(this,"exportSvg"),this.exportJson=n(this,"exportJson")}workspaceName="workspace";isDialogOpen=!1;previewUrl;isLoading=!1;activeTab="viewport";exportFilename="";viewportExportFormat="png";exportPng;exportSvg;exportJson;tabs=[{id:"viewport",label:"Export Viewport"},{id:"workspace",label:"Export Workspace"}];viewportFormatOptions=[{value:"png",label:"PNG"},{value:"svg",label:"SVG"}];async open(t){this.previewUrl=t,this.activeTab="viewport",this.viewportExportFormat="png",this.exportFilename=this.generateDefaultFilename(),this.isDialogOpen=!0}generateDefaultFilename(){const t=(new Date).toISOString().replace(/[:.]/g,"-").slice(0,-5);return`${this.workspaceName}-${t}`}handleFilenameChange=t=>{this.exportFilename=t.detail};closeDialog=()=>{this.isDialogOpen=!1};handleTabChange=t=>{this.activeTab=t.detail};handleViewportFormatChange=t=>{this.viewportExportFormat=t.detail};handleExport=()=>{"viewport"===this.activeTab?"png"===this.viewportExportFormat?this.exportPng.emit():this.exportSvg.emit():this.exportJson.emit(this.exportFilename||this.generateDefaultFilename()),this.closeDialog()};renderViewportExport(){return e("div",{class:"export-tab-content"},this.previewUrl&&e("div",{class:"preview-container"},e("img",{src:this.previewUrl,alt:"Viewport Preview"})),e("kritzel-input",{label:"Filename",value:this.exportFilename,placeholder:"Enter filename",suffix:`.${this.viewportExportFormat}`,onValueChange:this.handleFilenameChange}),e("div",{class:"format-selection"},e("label",null,"Format"),e("kritzel-dropdown",{options:this.viewportFormatOptions,value:this.viewportExportFormat,forceOpenDirection:"up",onValueChanged:this.handleViewportFormatChange})))}renderWorkspaceExport(){return e("div",{class:"export-tab-content"},e("kritzel-input",{label:"Filename",value:this.exportFilename,placeholder:"Enter filename",suffix:".json",onValueChange:this.handleFilenameChange}))}render(){return e(i,{key:"efeea781325e672e3f4c1579a50da1c928dc88b5"},e("kritzel-dialog",{key:"60e27233f484e70fd12bcc0f8a72b89d2f72d596",isOpen:this.isDialogOpen,dialogTitle:"Export",closable:!0,contained:!0,onDialogClose:this.closeDialog},e("div",{key:"e58e1d9804fdc8cb3d4c053ead641e2301b99ea5",class:"export-content"},e("kritzel-pill-tabs",{key:"409f4c2d64f5477dc57c72a8e32ae0a12dfb7eda",tabs:this.tabs,value:this.activeTab,onValueChange:this.handleTabChange}),"viewport"===this.activeTab&&this.renderViewportExport(),"workspace"===this.activeTab&&this.renderWorkspaceExport(),e("button",{key:"7166aee26e0dbbdf6e7348428f7a740614948e5e",class:"export-primary-button",onClick:this.handleExport},"Export"))))}};ze.style=":host{display:flex;flex-direction:column;min-height:0}.export-content{display:flex;flex-direction:column;gap:16px;padding:0;flex:1}.export-content kritzel-pill-tabs{align-self:center}.export-tab-content{display:flex;flex-direction:column;gap:16px;min-height:330px}.format-selection{display:flex;flex-direction:column;gap:6px}.format-selection label{font-size:14px;font-weight:500;color:var(--kritzel-global-text-primary, #333)}.export-primary-button{width:100%;padding:12px 24px;background-color:var(--kritzel-global-primary-color, #007AFF);color:var(--kritzel-global-primary-text-color, #fff);border:none;border-radius:var(--kritzel-button-border-radius, 8px);font-size:14px;font-weight:600;cursor:pointer;transition:background-color 0.2s ease;-webkit-tap-highlight-color:transparent}.export-primary-button:hover{background-color:var(--kritzel-global-primary-hover-color, #0066d6)}.export-primary-button:focus-visible{outline:revert;outline-offset:revert}.preview-container{width:100%;display:flex;justify-content:center;align-items:center;box-sizing:border-box;margin-bottom:8px}.preview-container img{max-width:100%;max-height:250px;object-fit:contain;box-shadow:0 4px 8px rgba(0, 0, 0, 0.15);border-radius:4px;border:1px solid var(--kritzel-global-border-color, #dbdbdb)}.export-content p{margin:0;color:var(--kritzel-global-text-secondary, #666)}@media (max-width: 576px){.export-tab-content{flex:1;min-height:0}}";const Ce=class{constructor(e){t(this,e)}fontFamily="Arial, sans-serif";size=24;color="#000000";render(){return e(i,{key:"6eef9e7df004469faeeaf458d9b9967f94f8536d"},e("div",{key:"9926c54a57245c40d605077e191f62cebf3700b1",class:"font-preview",style:{fontFamily:this.fontFamily,fontSize:`${this.size}px`,color:this.color}},"A"))}};Ce.style=":host{display:block}.font-preview{color:var(--kritzel-font-size-text-color, #333333);line-height:1;text-align:center;font-weight:bold}";const Se=class{constructor(e){t(this,e),this.fontFamilyChange=n(this,"fontFamilyChange")}fontOptions=[{value:"arial",label:"Arial"},{value:"verdana",label:"Verdana"},{value:"helvetica",label:"Helvetica"},{value:"tahoma",label:"Tahoma"},{value:"trebuchet ms",label:"Trebuchet MS"},{value:"times new roman",label:"Times New Roman"},{value:"georgia",label:"Georgia"},{value:"garamond",label:"Garamond"},{value:"courier new",label:"Courier New"},{value:"brush script mt",label:"Brush Script MT"}];selectedFontFamily;fontFamilyChange;componentWillLoad(){if(this.fontOptions&&this.fontOptions.length>0){const t=this.fontOptions.some((t=>t.value===this.selectedFontFamily));this.selectedFontFamily&&t||(this.selectedFontFamily=this.fontOptions[0].value)}}handleDropdownValueChange=t=>{this.fontFamilyChange.emit(t.detail)};render(){const t=this.fontOptions.map((t=>({value:t.value,label:t.label,style:{fontFamily:t.value}})));return e(i,{key:"0123dbdff9b7051d2ebc9dcf8d1f9c7c4c161dc4"},e("kritzel-dropdown",{key:"5d4e289161502ecc60cef3d0c6d546a64817a12a",options:t,value:this.selectedFontFamily,onValueChanged:this.handleDropdownValueChange,selectStyles:{fontFamily:this.selectedFontFamily}}))}};Se.style=":host{display:flex;align-items:flex-start;gap:8px;padding:0;box-sizing:border-box;width:100%}.font-style-button{display:flex;justify-content:center;align-items:center;width:42px;height:32px;padding:0;border:none;outline:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);border-radius:0;color:var(--control-text-color);font-weight:bold;-webkit-tap-highlight-color:transparent}.font-style-button:not(:last-child){border-right:1px solid #333333}.font-style-button:hover{background-color:var(--control-hover-bg)}.font-style-button:active{background-color:var(--control-active-bg)}.font-style-button.selected,.font-style-button.selected:hover,.font-style-button.selected:active{background-color:var(--control-selected-bg);color:var(--control-selected-color)}.font-style-button.italic-text{font-style:italic}";const Ie=class{constructor(e){t(this,e),this.sizeChange=n(this,"sizeChange")}sizes=[8,10,12,16,20,24];selectedSize=null;fontFamily="Arial";sizeChange;handleSizeClick(t){this.selectedSize=t,this.sizeChange.emit(t)}handleKeyDown(t,e){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.handleSizeClick(e))}render(){return e(i,{key:"efb5ad516a0ebfea0fee5c78a1d3b4d0af4a6bc9"},this.sizes.map((t=>e("div",{tabIndex:0,class:{"size-container":!0,selected:this.selectedSize===t},onClick:()=>this.handleSizeClick(t),onKeyDown:e=>this.handleKeyDown(e,t)},e("kritzel-font",{fontFamily:this.fontFamily,size:t,color:"var(--kritzel-global-text-primary)"})))))}};Ie.style=":host{display:flex;align-items:flex-start;gap:8px;padding:0;box-sizing:border-box}.size-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:4px;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;border-radius:50%}.size-container:hover{background-color:var(--kritzel-font-size-hover-background-color, #ebebeb)}.size-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-font-size-selected-background-color, #e0e0e0)}";const Me=class{constructor(e){t(this,e)}name;label;size=24;render(){const t=T.get(this.name);return t?e(i,{style:{width:`${this.size}px`,height:`${this.size}px`}},e("span",{"aria-hidden":!this.label,role:this.label?"img":void 0,"aria-label":this.label,innerHTML:t})):(console.error(`[kritzel-icon] Icon "${this.name}" not found in registry.`),e("span",{class:"error-icon","aria-label":`Error: Icon ${this.name} not found`},"?"))}};Me.style=":host{display:inline-flex;justify-content:center;align-items:center;color:var(--kritzel-icon-color, inherited)}span{display:flex;align-items:center;width:100%;height:100%;}span>svg{width:100%;height:100%}";const je=class{constructor(e){t(this,e),this.valueChange=n(this,"valueChange")}value="";label="";placeholder="";suffix="";type="text";disabled=!1;valueChange;inputValue="";onValueChange(t){this.inputValue=t??""}componentWillLoad(){this.inputValue=this.value??""}handleInput=t=>{const e=t.target;this.inputValue=e.value,this.value=e.value,this.valueChange.emit(e.value)};render(){return e(i,{key:"3fd1f42a3ad5edfac752c05f70558ef73bbfebc3"},e("div",{key:"78468652ce95508090495fefa9381af175415be8",class:"input-container"},this.label&&e("label",{key:"f368e0370df4848fa9448ed53382152ad8cc8816",class:"input-label"},this.label),e("div",{key:"c775c0c0a9f4b6c78ba83ced6237a744b7d3cf20",class:{"input-wrapper":!0,"has-suffix":!!this.suffix}},e("input",{key:"aa5ce0bb5e3c56755bc6134a4328ce6294bda1ff",type:this.type,class:"text-input",value:this.inputValue,placeholder:this.placeholder,disabled:this.disabled,onInput:this.handleInput}),this.suffix&&e("span",{key:"687cec4294e4cd10247db88caf157b33a3f16290",class:"input-suffix"},this.suffix))))}static get watchers(){return{value:[{onValueChange:0}]}}};je.style=":host{display:block}.input-container{display:flex;flex-direction:column;gap:6px}.input-label{font-size:14px;font-weight:500;color:var(--kritzel-text-input-label-color, #333333)}.input-wrapper{display:flex;align-items:center;border:1px solid var(--kritzel-text-input-border-color, #ebebeb);border-radius:var(--kritzel-text-input-border-radius, 6px);overflow:hidden;background:var(--kritzel-text-input-background, #ffffff);transition:border-color 150ms ease}.input-wrapper:hover:not(:focus-within){border-color:var(--kritzel-text-input-hover-border-color, #cccccc)}.input-wrapper:focus-within{border-color:var(--kritzel-text-input-focus-border-color, #007AFF);border-width:2px}.text-input{flex:1;padding:10px 12px;border:none;outline:none;font-size:14px;font-family:inherit;background:transparent;color:var(--kritzel-text-input-text-color, #333333);box-sizing:border-box}.text-input::placeholder{color:var(--kritzel-text-input-placeholder-color, #999999)}.text-input::selection{background-color:var(--kritzel-text-input-selection-background, #007AFF);color:var(--kritzel-text-input-selection-color, #ffffff)}.text-input:disabled{cursor:not-allowed;opacity:0.6}.input-suffix{padding:10px 12px;background:var(--kritzel-text-input-suffix-background, #f5f5f5);color:var(--kritzel-text-input-suffix-color, #666666);font-size:14px;border-left:1px solid var(--kritzel-text-input-border-color, #ebebeb);flex-shrink:0}";const $e=class{constructor(e){t(this,e),this.valueChange=n(this,"valueChange")}styles=["none","triangle"];value;valueChange;getStartEnding(){return this.value?.start?.enabled?this.value.start.style??"triangle":"none"}getEndEnding(){return this.value?.end?.enabled?this.value.end.style??"triangle":"none"}handleStartChange(t){const e={...this.value,start:"none"===t?{enabled:!1}:{enabled:!0,style:t}};this.value=e,this.valueChange.emit(e)}handleEndChange(t){const e={...this.value,end:"none"===t?{enabled:!1}:{enabled:!0,style:t}};this.value=e,this.valueChange.emit(e)}getEndingPath(t){switch(t){case"triangle":return"M 0 0 L 10 5 L 0 10 Z";case"open":return"M 0 0 L 10 5 L 0 10";case"diamond":return"M 0 5 L 5 0 L 10 5 L 5 10 Z";case"circle":return"M 10 5 A 5 5 0 1 1 0 5 A 5 5 0 1 1 10 5 Z";default:return""}}renderEndingIcon(t,i){const n="var(--kritzel-global-text-primary)";if("none"===t)return e("svg",{viewBox:"0 0 24 12",class:"ending-icon"},e("line",{x1:i?4:2,y1:"6",x2:i?22:20,y2:"6",stroke:n,"stroke-width":"2","stroke-linecap":"round"}));const r=this.getEndingPath(t),o="open"===t;return e("svg",{viewBox:"0 0 24 12",class:"ending-icon"},i?e("g",null,e("line",{x1:"12",y1:"6",x2:"22",y2:"6",stroke:n,"stroke-width":"2","stroke-linecap":"round"}),e("g",{transform:"translate(2, 1) scale(1, 1)"},e("path",{d:r,fill:o?"none":n,stroke:n,"stroke-width":o?2:0,"stroke-linecap":"round","stroke-linejoin":"round",transform:"scale(-1, 1) translate(-10, 0)"}))):e("g",null,e("line",{x1:"2",y1:"6",x2:"12",y2:"6",stroke:n,"stroke-width":"2","stroke-linecap":"round"}),e("g",{transform:"translate(12, 1)"},e("path",{d:r,fill:o?"none":n,stroke:n,"stroke-width":o?2:0,"stroke-linecap":"round","stroke-linejoin":"round"}))))}render(){const t=this.getStartEnding(),n=this.getEndEnding();return e(i,{key:"60115b8a2840ffe21e0846fdc2678c6ba24b22c0"},e("div",{key:"3b63aa05ca78699172c645fdd404efdc55bc4536",class:"endings-section"},e("div",{key:"9538369e8d2bb26600d6054ddbbc13d6c960bd56",class:"endings-row"},this.styles.map((i=>e("button",{class:{"ending-option":!0,selected:t===i},onClick:()=>this.handleStartChange(i),title:"none"===i?"No start arrow":`${i} start arrow`},this.renderEndingIcon(i,!0)))))),e("div",{key:"ecec29740c09a61190938bab4955ccde6b84cfa2",class:"endings-section"},e("div",{key:"ea054597c3e3566e7921f2c04c07d74e4f4331a1",class:"endings-row"},this.styles.map((t=>e("button",{class:{"ending-option":!0,selected:n===t},onClick:()=>this.handleEndChange(t),title:"none"===t?"No end arrow":`${t} end arrow`},this.renderEndingIcon(t,!1)))))))}};$e.style=":host{display:flex;flex-direction:column;gap:12px;padding:0;box-sizing:border-box}.endings-section{display:flex;flex-direction:column;gap:6px}.section-label{font-size:12px;font-weight:500;color:var(--kritzel-line-endings-label-color, #666666);padding-left:4px}.endings-row{display:flex;align-items:center;gap:4px}.ending-option{display:flex;justify-content:center;align-items:center;width:48px;height:32px;border-radius:6px;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;background:var(--kritzel-line-endings-option-background, #ffffff);padding:4px;transition:background-color 0.15s ease, border-color 0.15s ease}.ending-option:hover{background-color:var(--kritzel-line-endings-hover-background-color, #ebebeb)}.ending-option.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-line-endings-selected-background-color, #ebebeb)}.ending-option:focus{outline:none;box-shadow:0 0 0 2px var(--kritzel-global-focus-ring-color, rgba(0, 122, 255, 0.3))}.ending-icon{width:100%;height:100%}";const Te=class{constructor(e){t(this,e),this.providerLogin=n(this,"providerLogin"),this.dialogClosed=n(this,"dialogClosed")}get host(){return r(this)}providers=[];dialogTitle="Sign in";subtitle;isDialogOpen=!1;loadingProvider=null;providerLogin;dialogClosed;async open(){this.loadingProvider=null,this.isDialogOpen=!0}async close(){this.isDialogOpen=!1,this.loadingProvider=null}async setLoading(t){this.loadingProvider=t}handleProviderClick=t=>{this.loadingProvider||(this.loadingProvider=t.name,this.providerLogin.emit({provider:t.name}))};closeDialog=()=>{this.isDialogOpen=!1,this.loadingProvider=null,this.dialogClosed.emit()};render(){return e(i,{key:"8cac83db48fef2531f1669c3f601526b1e5cdefa"},e("kritzel-dialog",{key:"34e7208c8c34550292c2b7503759bf103cfb49a6",dialogTitle:this.dialogTitle,isOpen:this.isDialogOpen,onDialogClose:this.closeDialog,size:"small",contained:!0},e("div",{key:"b0a0d8e0f38adc8d9b9545a02c5fc879f64a24de",class:"login-content"},this.subtitle&&e("p",{key:"a51b5f0a8b402aaf979d4bf47c6f9c3ba7e14bfe",class:"login-subtitle"},this.subtitle),e("div",{key:"b6d8f8748eadf1462dd4161f089130b7ded31b59",class:"login-providers"},this.providers.map((t=>e("button",{key:t.name,class:{"provider-button":!0,"is-loading":this.loadingProvider===t.name,"is-disabled":null!==this.loadingProvider&&this.loadingProvider!==t.name},disabled:null!==this.loadingProvider&&this.loadingProvider!==t.name,onClick:()=>this.handleProviderClick(t)},this.loadingProvider===t.name?e("span",{class:"spinner"}):t.icon&&e("kritzel-icon",{name:t.icon,size:20}),e("span",{class:"provider-label"},t.label))))))))}};Te.style=":host{display:contents}kritzel-dialog{--kritzel-dialog-width-small:380px}.login-content{display:flex;flex-direction:column;gap:20px}.login-subtitle{font-size:13px;color:var(--kritzel-login-dialog-subtitle-color, #666666);margin:0;line-height:1.5;text-align:center}.login-providers{display:flex;flex-direction:column;gap:10px}.provider-button{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:12px 16px;border:1px solid var(--kritzel-login-dialog-button-border-color, #e0e0e0);border-radius:8px;background:var(--kritzel-login-dialog-button-background, #ffffff);color:var(--kritzel-login-dialog-button-text-color, #333333);font-size:14px;font-weight:500;font-family:inherit;cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 0.15s ease, border-color 0.15s ease, opacity 0.15s ease;-webkit-tap-highlight-color:transparent}.provider-button:hover:not(:disabled){background:var(--kritzel-login-dialog-button-hover-background, #f5f5f5);border-color:var(--kritzel-login-dialog-button-hover-border-color, #cccccc)}.provider-button:active:not(:disabled){background:var(--kritzel-login-dialog-button-active-background, #ebebeb)}.provider-button:focus-visible{outline:revert;outline-offset:revert}.provider-button.is-disabled{opacity:0.5;cursor:default;pointer-events:none}.provider-button.is-loading{cursor:default}.provider-label{flex-shrink:0}.provider-button.is-loading .provider-label{opacity:0.7}@keyframes kritzel-login-spin{to{transform:rotate(360deg)}}.spinner{width:20px;height:20px;box-sizing:border-box;display:block;flex-shrink:0;border:2px solid var(--kritzel-login-dialog-spinner-color, #cccccc);border-top-color:var(--kritzel-login-dialog-spinner-active-color, #333333);border-radius:50%;animation:kritzel-login-spin 0.6s linear infinite}";const Ae=class{constructor(e){t(this,e),this.itemSelect=n(this,"itemSelect")}get host(){return r(this)}items=[];selectedItemId;itemSelect;focusedIndex=-1;showMobileDetail=!1;tabRefs=[];watchSelectedItemId(t,e){t!==e&&(this.showMobileDetail=!0)}componentWillRender(){this.tabRefs=[]}handleItemClick=t=>{t.disabled||(this.itemSelect.emit({item:t}),this.showMobileDetail=!0)};handleBackClick=()=>{this.showMobileDetail=!1};handleKeyDown=(t,e,i)=>{const n=this.items.map(((t,e)=>t.disabled?-1:e)).filter((t=>-1!==t)),r=n.indexOf(i);switch(t.key){case"ArrowDown":t.preventDefault(),this.focusTab(n[(r+1)%n.length]);break;case"ArrowUp":t.preventDefault(),this.focusTab(n[(r-1+n.length)%n.length]);break;case"Home":t.preventDefault(),this.focusTab(n[0]);break;case"End":t.preventDefault(),this.focusTab(n[n.length-1]);break;case"Enter":case" ":t.preventDefault(),this.handleItemClick(e)}};focusTab(t){this.focusedIndex=t;const e=this.tabRefs[t];e&&e.focus()}handleFocus=t=>{this.focusedIndex=t};handleBlur=()=>{this.focusedIndex=-1};setTabRef=(t,e)=>{t&&(this.tabRefs[e]=t)};getTabIndex(t,e){return t.disabled?-1:0}render(){const t=this.items.find((t=>t.id===this.selectedItemId)),n="master-detail-panel",r=t?`tab-${t.id}`:void 0;return e(i,{key:"59479b50a3e79ee854c75d78e1a41c1cb0551dab"},e("div",{key:"0fdfa2d5a28c8f5800b2eeb80c545bdfcd252f6b",class:{"master-detail-container":!0,"is-mobile-detail-visible":this.showMobileDetail}},e("nav",{key:"f055346bdaf528e27136dffc680a5e2c6ddb95a7",class:"master-menu",role:"tablist","aria-orientation":"vertical","aria-label":"Settings categories"},this.items.map(((t,i)=>e("button",{key:t.id,id:`tab-${t.id}`,ref:t=>this.setTabRef(t,i),class:{"menu-item":!0,"is-selected":t.id===this.selectedItemId,"is-disabled":!!t.disabled,"is-focused":i===this.focusedIndex},role:"tab","aria-selected":t.id===this.selectedItemId?"true":"false","aria-controls":n,"aria-disabled":t.disabled?"true":void 0,tabIndex:this.getTabIndex(t,i),disabled:t.disabled,onClick:()=>this.handleItemClick(t),onKeyDown:e=>this.handleKeyDown(e,t,i),onFocus:()=>this.handleFocus(i),onBlur:this.handleBlur},t.icon&&e("kritzel-icon",{name:t.icon,size:20,class:"menu-item-icon"}),e("span",{class:"menu-item-label"},t.label),e("span",{class:"menu-item-chevron","aria-hidden":"true"},e("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"},e("path",{d:"m9 18 6-6-6-6"}))))))),e("div",{key:"296ff692092eae9b73c673def66539aa4eb36053",id:n,class:"detail-panel",role:"tabpanel","aria-labelledby":r},e("button",{key:"72c65aa2825aa373daa3b1d6fd48d8dd84ab25f1",class:"mobile-back-button",onClick:this.handleBackClick,"aria-label":"Back to menu"},e("kritzel-icon",{key:"2241991dc0da3f53f77dc415e61f026a5734ad48",name:"chevron-left",size:20,class:"mobile-back-icon"}),"Back"),e("slot",{key:"6ecdc24e462faf0d95e295d5536b44ea2f9181c9"}))))}static get watchers(){return{selectedItemId:[{watchSelectedItemId:0}]}}};Ae.style=":host{display:block;width:100%;height:100%}.master-detail-container{display:flex;width:100%;height:100%;min-height:var(--kritzel-master-detail-min-height, 300px);gap:var(--kritzel-master-detail-gap, 0);background-color:var(--kritzel-master-detail-background-color, transparent)}.master-menu{display:flex;flex-direction:column;width:var(--kritzel-master-detail-menu-width, 200px);min-width:var(--kritzel-master-detail-menu-min-width, 160px);padding:var(--kritzel-master-detail-menu-padding, 8px);background-color:var(--kritzel-master-detail-menu-background-color, #ffffff);border-right:var(--kritzel-master-detail-menu-border-right, 1px solid #ebebeb);gap:var(--kritzel-master-detail-menu-gap, 4px);overflow-y:auto}.menu-item{display:flex;align-items:center;gap:var(--kritzel-master-detail-menu-item-gap, 10px);padding:var(--kritzel-master-detail-menu-item-padding, 10px 12px);border:none;border-radius:var(--kritzel-master-detail-menu-item-border-radius, 6px);background-color:var(--kritzel-master-detail-menu-item-background-color, transparent);color:var(--kritzel-master-detail-menu-item-color, #333333);font-family:inherit;font-size:var(--kritzel-master-detail-menu-item-font-size, 14px);font-weight:var(--kritzel-master-detail-menu-item-font-weight, 400);text-align:left;cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 150ms ease, color 150ms ease;-webkit-tap-highlight-color:transparent}.menu-item:hover:not(.is-disabled){background-color:var(--kritzel-master-detail-menu-item-hover-background-color, #ebebeb)}.menu-item:active:not(.is-disabled){background-color:var(--kritzel-master-detail-menu-item-active-background-color, #e0e0e0)}.menu-item.is-selected{background-color:var(--kritzel-master-detail-menu-item-selected-background-color, #0066cc);color:var(--kritzel-master-detail-menu-item-selected-color, #ffffff);font-weight:var(--kritzel-master-detail-menu-item-selected-font-weight, 500)}.menu-item.is-selected:hover{background-color:var(--kritzel-master-detail-menu-item-selected-hover-background-color, #0052a3)}.menu-item.is-disabled{color:var(--kritzel-master-detail-menu-item-disabled-color, #999999);cursor:not-allowed;opacity:0.6}.menu-item:focus-visible{outline:var(--kritzel-master-detail-menu-item-focus-outline, revert);outline-offset:var(--kritzel-master-detail-menu-item-focus-outline-offset, revert)}.menu-item-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.menu-item-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detail-panel{flex:1;min-height:0;padding:var(--kritzel-master-detail-detail-padding, 16px);background-color:var(--kritzel-master-detail-detail-background-color, #ffffff);overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}.detail-panel:focus{outline:none}.detail-panel:focus-visible{outline:var(--kritzel-master-detail-detail-focus-outline, revert);outline-offset:var(--kritzel-master-detail-detail-focus-outline-offset, revert)}.mobile-back-button{display:none;align-items:center;gap:8px;background:none;border:none;padding:0 0 16px 0;cursor:pointer;-webkit-tap-highlight-color:transparent;color:var(--kritzel-master-detail-back-button-color, #333333);font-weight:500;font-size:14px;font-family:inherit}.mobile-back-icon{display:flex;align-items:center;flex-shrink:0}.menu-item-chevron{display:none;flex-shrink:0;margin-left:auto;color:var(--kritzel-master-detail-menu-item-chevron-color, #999999)}.menu-item-chevron svg{width:16px;height:16px;stroke:currentColor}@media (max-width: 768px){.master-menu{width:100%;border-right:none}.detail-panel{display:none;width:100%}.master-detail-container.is-mobile-detail-visible .master-menu{display:none}.master-detail-container.is-mobile-detail-visible .detail-panel{display:block}.mobile-back-button{display:flex}.menu-item.is-selected{background-color:transparent;color:var(--kritzel-master-detail-menu-item-color, #333333);font-weight:var(--kritzel-master-detail-menu-item-font-weight, 400)}.menu-item.is-selected:hover{background-color:var(--kritzel-master-detail-menu-item-hover-background-color, #ebebeb)}.menu-item-chevron{display:flex;align-items:center}}";const Oe=class{constructor(e){t(this,e),this.itemSelect=n(this,"itemSelect"),this.itemSave=n(this,"itemSave"),this.itemCancel=n(this,"itemCancel"),this.itemToggleChildMenu=n(this,"itemToggleChildMenu"),this.itemCloseChildMenu=n(this,"itemCloseChildMenu"),this.close=n(this,"close")}get host(){return r(this)}items;parent=null;itemSelect;itemSave;itemCancel;itemToggleChildMenu;itemCloseChildMenu;close;selectedIndex=null;async setScrollTop(t){this.host.scrollTop=t,this.host.scrollTo({top:t,behavior:"auto"})}async setFocus(){const t=this.host.shadowRoot.querySelector("kritzel-menu-item");t&&t.focus()}get openChildMenuItem(){return this.items.find((t=>t.isChildMenuOpen))}get editingMenuItem(){return this.items.find((t=>t.isEditing))}onOverlayClick=t=>{t.stopPropagation(),this.itemCloseChildMenu.emit(this.openChildMenuItem)};handleItemSelect=t=>{t.stopPropagation(),this.itemSelect.emit(t.detail)};handleSave=t=>{t.stopPropagation(),this.itemSave.emit(t.detail)};handleCancel=t=>{t.stopPropagation(),this.itemCancel.emit(t.detail)};handleToggleChildMenu=t=>{t.stopPropagation(),this.itemToggleChildMenu.emit(t.detail)};handleCloseChildMenu=t=>{t.stopPropagation(),this.itemCloseChildMenu.emit(t.detail)};render(){return e(i,{key:"2d6d46fc8135133ed3e42d65399c8549bc5f6bb5",tabIndex:0,onClick:t=>t.stopPropagation()},this.openChildMenuItem&&e("div",{key:"b5b3910cc82f7cb451730792fe6e3b3a254036f3",class:"has-open-child-overlay",onClick:this.onOverlayClick}),this.items.map((t=>e("kritzel-menu-item",{key:t.id,"data-testid":`menu-item-${t.id}`,item:t,parent:this.parent,style:{pointerEvents:this.editingMenuItem&&!t.isEditing?"none":"auto"},onItemSelect:this.handleItemSelect,onItemSave:this.handleSave,onItemCancel:this.handleCancel,onItemToggleChildMenu:this.handleToggleChildMenu,onItemCloseChildMenu:this.handleCloseChildMenu}))))}};Oe.style=":host{position:relative;display:flex;flex-direction:column;background-color:var(--kritzel-menu-background-color, #ffffff);width:var(--kritzel-menu-width, 200px);padding:var(--kritzel-menu-padding, 8px);border-radius:var(--kritzel-menu-border-radius, 12px);box-shadow:var(--kritzel-menu-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-menu-border, 1px solid #ebebeb);z-index:2;gap:var(--kritzel-menu-gap, 4px);overflow-y:auto;scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin;max-height:var(--kritzel-portal-max-height, 300px);box-sizing:border-box;-webkit-tap-highlight-color:transparent;outline:none;clip-path:inset(0 round var(--kritzel-menu-border-radius, 12px))}:host:focus-visible{outline:auto}.has-open-child-overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:3}";const _e=class{constructor(e){t(this,e),this.itemSelect=n(this,"itemSelect"),this.itemSave=n(this,"itemSave"),this.itemCancel=n(this,"itemCancel"),this.itemToggleChildMenu=n(this,"itemToggleChildMenu"),this.itemCloseChildMenu=n(this,"itemCloseChildMenu")}get host(){return r(this)}item;onItemChange(t,e){t!==e&&(this.isDirty=!1)}parent=null;itemSelect;itemSave;itemCancel;itemToggleChildMenu;itemCloseChildMenu;isDirty=!1;inputRef;focusInput(){this.item.isEditing&&!this.isDirty&&requestAnimationFrame((()=>{if(this.inputRef)if(this.inputRef.focus(),l.isIOS()){const t=this.inputRef.value.length;this.inputRef.setSelectionRange(t,t)}else this.inputRef.select()}))}componentDidLoad(){this.setDeviceSpecificStyles(),this.focusInput()}componentDidUpdate(){this.focusInput()}setDeviceSpecificStyles=()=>{l.isTouchDevice()&&(this.host.style.setProperty("--kritzel-menu-item-overlay-background-color","transparent"),this.host.style.setProperty("--kritzel-menu-item-button-hover-background-color","transparent"))};handleItemSelect=t=>{t.stopPropagation(),this.itemSelect.emit({item:this.item,parent:this.parent})};handleInputChange=t=>{t.stopPropagation(),this.item.label=t.target.value,this.isDirty=!0};handleSave=t=>{t.stopPropagation(),this.host.focus(),this.itemSave.emit(this.item)};handleCancel=t=>{t.stopPropagation(),this.host.focus(),this.itemCancel.emit(this.item)};handleMenuToggle=t=>{t.stopPropagation(),this.itemToggleChildMenu.emit({item:this.item,childMenuAnchor:t.target})};handleMenuClose=()=>{this.itemCloseChildMenu.emit(this.item)};renderViewMode(){return[e("div",{class:"menu-item-content left"},this.item.icon&&e("span",{title:this.item.iconTooltip},e("kritzel-icon",{name:this.item.icon,size:16,style:this.item.color?{"--kritzel-icon-color":this.item.color}:void 0})),e("div",{style:this.item.color?{color:this.item.color}:void 0},this.item.label)),e("div",{class:"menu-item-content right"},this.item.children&&this.item.children.length>0&&[e("button",{id:"child-menu-toggle",class:"action-button",onClick:this.handleMenuToggle,disabled:this.item.isDisabled},e("kritzel-icon",{name:"ellipsis-vertical",size:16})),e("kritzel-portal",{anchor:this.item.childMenuAnchor,offsetY:4,onClose:this.handleMenuClose},e("kritzel-menu",{items:this.item.children,parent:this.item,onItemSelect:t=>this.itemSelect.emit(t.detail),onItemSave:t=>this.itemSave.emit(t.detail),onItemCancel:t=>this.itemCancel.emit(t.detail),onClose:this.handleMenuClose}))])]}renderEditMode(){return[e("div",{class:"menu-item-content left"},e("input",{ref:t=>this.inputRef=t,type:"text",class:"edit-input",value:this.item.label,onInput:this.handleInputChange})),e("div",{class:"menu-item-content right"},e("div",{tabIndex:0,class:"action-button",onClick:this.handleCancel},e("kritzel-icon",{name:"x",size:16})),e("div",{tabIndex:this.isDirty||this.item.isNewItem?0:-1,class:{"action-button":!0,disabled:!this.isDirty&&!this.item.isNewItem},onClick:this.handleSave},e("kritzel-icon",{name:"check",size:16})))]}render(){return e(i,{key:"ae5057ce9101dc08e2365455c544914715be468e",tabIndex:this.item.isDisabled?-1:0,class:{selected:this.item.isSelected,editing:this.item.isEditing,disabled:this.item.isDisabled,"child-open":this.item.isChildMenuOpen},onClick:this.handleItemSelect},e("div",{key:"973fc68404ea95c2f0459565b8a3d124d31ae090",class:"menu-item-overlay"}),this.item.isEditing?this.renderEditMode():this.renderViewMode())}static get watchers(){return{item:[{onItemChange:0}]}}};_e.style=":host{position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--kritzel-menu-item-padding, 8px);box-sizing:border-box;gap:16px;height:var(--kritzel-menu-item-height, 40px);min-height:var(--kritzel-menu-item-min-height, 40px);font-family:sans-serif;font-size:var(--kritzel-menu-item-font-size, 14px);color:var(--kritzel-menu-item-color, #333333);border-radius:var(--kritzel-menu-item-border-radius, 12px);-webkit-tap-highlight-color:transparent}:host:focus:not(:focus-visible){outline:none}:host(:hover) .menu-item-overlay,:host(:focus-within) .menu-item-overlay{background-color:var(--kritzel-menu-item-overlay-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.selected){background-color:var(--kritzel-menu-item-selected-background-color, #007aff);color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected) .action-button{color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected.editing){background-color:var(--kritzel-menu-item-selected-background-color, #007aff)}:host(.selected) .edit-input{color:var(--kritzel-menu-item-selected-color, #ffffff);caret-color:var(--kritzel-menu-item-input-caret-color-on-selected, #ffffff);border-color:var(--kritzel-menu-item-input-border-color-on-selected, #ffffff)}:host(.selected) .action-button kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-selected-color, #ffffff)}kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-color, #333333)}:host(.selected) kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected) .edit-input::selection{background-color:var(--kritzel-menu-item-input-selection-color-on-selected, rgba(255, 255, 255, 0.3));color:var(--kritzel-menu-item-input-selection-text-color-on-selected, #ffffff)}:host(.editing){background-color:var(--kritzel-menu-item-editing-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.disabled){opacity:0.5;pointer-events:none !important}:host(.child-open){background-color:var(--kritzel-menu-item-child-open-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.child-open.selected){background-color:var(--kritzel-menu-item-selected-background-color, #007aff)}.menu-item-overlay{position:absolute;inset:0;background-color:transparent;z-index:0;pointer-events:none;border-radius:var(--kritzel-menu-item-border-radius, 12px)}.menu-item-content{display:flex;align-items:center;gap:8px;position:relative;z-index:1;height:100%}.menu-item-content span{display:flex;align-items:center;line-height:0}.left{justify-content:flex-start;flex:1;min-width:0}.left>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.right{justify-content:flex-end}.edit-input{flex:1;height:var(--kritzel-menu-item-input-height, 24px);padding:0;background-color:transparent;border-radius:0;border:none;border-bottom:var(--kritzel-menu-item-input-border, 1px solid #ccc);font-size:var(--kritzel-menu-item-font-size, 14px);width:100%;min-width:0;box-sizing:border-box;outline:none;color:inherit}.edit-input{caret-color:var(--kritzel-menu-item-input-caret-color, currentColor)}.edit-input::selection{background-color:var(--kritzel-menu-item-input-selection-color, #007bff);color:var(--kritzel-menu-item-input-selection-text-color, #ffffff)}.action-button{padding:4px;border-radius:8px;border:none;cursor:var(--kritzel-global-pointer-cursor, pointer);display:flex;align-items:center;justify-content:center;background-color:transparent;background:transparent;-webkit-tap-highlight-color:transparent}.action-button:hover,.action-button:focus{background-color:var(--kritzel-menu-item-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.action-button.disabled{pointer-events:none;opacity:0.5}";const Ee=class{constructor(e){t(this,e),this.itemSelect=n(this,"itemSelect")}get host(){return r(this)}visible=!1;items=[];icon="ellipsis-vertical";iconSize=24;offsetY=4;itemSelect;menuAnchor=null;isTouchDevice=l.isTouchDevice();toggleMenu=t=>{t.stopPropagation(),this.menuAnchor?this.closeMenu():(window.dispatchEvent(new CustomEvent("kritzel-dismiss-menus")),this.menuAnchor=this.host)};closeMenu=()=>{this.menuAnchor=null};get visibleItems(){return this.items.filter((t=>!1!==t.isVisible))}handleMenuItemSelect=t=>{const{item:e,parent:i}=t.detail;e.action&&e.action(e,i),this.itemSelect.emit(t.detail),this.closeMenu()};render(){return e(i,{key:"93bee9fc14d532a74f1b077098fb0a470655d2fe",class:{mobile:this.isTouchDevice},style:{display:this.visible?"":"none"}},e("div",{key:"1783013acb533de9580698f29a7c8ae212b583fc",class:{"more-menu-wrapper":!0,visible:this.visible}},e("button",{key:"8dc2f098377e78db0bf6efc05daaf02496cef527",class:"more-menu-button","data-testid":"more-menu-button",onClick:this.toggleMenu,"aria-label":"More options"},e("kritzel-icon",{key:"876a229226b0f79f1d5ef5d0b7793f362b884923",name:this.icon,size:this.iconSize})),e("kritzel-portal",{key:"57f7a69408b00c1bb9e5a08d22e224c6e6bcdea4",anchor:this.menuAnchor,offsetY:this.offsetY,onClose:this.closeMenu},e("kritzel-menu",{key:"73a2aacd1b7c0ec79d7fa1695fbc02b1a0bde1b5",items:this.visibleItems,onItemSelect:this.handleMenuItemSelect}))))}};Ee.style=":host{display:inline-flex;z-index:1}.more-menu-wrapper{display:inline-flex;padding:var(--kritzel-more-menu-padding, 4px);background-color:var(--kritzel-more-menu-background-color, #ffffff);border-radius:var(--kritzel-more-menu-border-radius, 12px);box-shadow:var(--kritzel-more-menu-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-more-menu-border, 1px solid #ebebeb);opacity:0;pointer-events:none;transition:opacity 0.2s ease-out}.more-menu-wrapper.visible{opacity:1;pointer-events:auto}:host(.mobile){--kritzel-more-menu-button-hover-background-color:transparent;--kritzel-more-menu-button-active-background-color:transparent}.more-menu-button{display:flex;align-items:center;justify-content:center;width:var(--kritzel-more-menu-button-width, 40px);height:var(--kritzel-more-menu-button-height, 40px);padding:0;border:none;border-radius:var(--kritzel-more-menu-inner-border-radius, 12px);background-color:transparent;cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:none;transition:background-color 150ms ease;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:var(--kritzel-more-menu-button-color, currentColor)}.more-menu-button:hover{background-color:var(--kritzel-more-menu-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.more-menu-button:focus-visible{background-color:var(--kritzel-more-menu-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.more-menu-button:active{background-color:var(--kritzel-more-menu-button-active-background-color, hsl(0, 0%, 0%, 4.3%))}";const De=class{constructor(e){t(this,e),this.valueChange=n(this,"valueChange")}value;min=Number.MIN_SAFE_INTEGER;max=Number.MAX_SAFE_INTEGER;step=1;label="";placeholder="";valueChange;inputValue="";onValueChange(t){this.inputValue=this.shouldShowEmpty(t)?"":String(t)}componentWillLoad(){this.inputValue=this.shouldShowEmpty(this.value)?"":String(this.value)}shouldShowEmpty(t){return void 0===t||t===1/0||t===-1/0}normalizeValue(t){return isNaN(t)?this.value??0:Math.min(this.max,Math.max(this.min,t))}getDecimalPlaces(){const t=String(this.step),e=t.indexOf(".");return-1===e?0:t.length-e-1}roundToStep(t){const e=this.getDecimalPlaces(),i=Math.pow(10,e);return Math.round(t*i)/i}handleInput=t=>{this.inputValue=t.target.value};handleBlur=()=>{this.commitValue()};handleKeyDown=t=>{"Enter"===t.key&&this.commitValue()};handleInvalid=t=>{t.preventDefault()};commitValue(){if(""===this.inputValue.trim())return this.value=void 0,void this.valueChange.emit(void 0);const t=parseFloat(this.inputValue),e=this.normalizeValue(t);this.value=e,this.inputValue=String(e),this.valueChange.emit(e)}handleIncrement=()=>{const t=parseFloat(this.inputValue),e=isNaN(t)?this.value??0:t,i=this.normalizeValue(this.roundToStep(e+this.step));this.value=i,this.inputValue=String(i),this.valueChange.emit(i)};handleDecrement=()=>{const t=parseFloat(this.inputValue),e=isNaN(t)?this.value??0:t,i=this.normalizeValue(this.roundToStep(e-this.step));this.value=i,this.inputValue=String(i),this.valueChange.emit(i)};render(){return e(i,{key:"18cd66a764c334a78e2dccd444f448235b41c38c"},e("div",{key:"73305950e3e840e51466d720a2ef4f834a16adc1",class:"input-container"},this.label&&e("label",{key:"f9521cb0137f5f8c676ced5c76989d8d03256f68",class:"input-label"},this.label),e("div",{key:"07581a242db247a833cfa879b90c6da5dd06b116",class:"input-wrapper"},e("input",{key:"7faa7a9a2c8923e2b2a24c435bc47a03998ac8ad",type:"number",class:"numeric-input",title:"",min:this.min===Number.MIN_SAFE_INTEGER?void 0:this.min,max:this.max===Number.MAX_SAFE_INTEGER?void 0:this.max,step:this.step,value:this.inputValue,placeholder:this.placeholder,onInput:this.handleInput,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown,onInvalid:this.handleInvalid}),e("div",{key:"d3920c978a4d97032f5aec550e6ca7e74c9c2e94",class:"spinner-buttons"},e("button",{key:"ae27375f0ba66a9ca6cf53fe4a05fa219bf47711",type:"button",class:"spinner-button spinner-up",onClick:this.handleIncrement,tabIndex:-1,"aria-label":"Increase value"},e("svg",{key:"8a6e40c12468bb44400c1ad015463c830d0af13e",viewBox:"0 0 10 6",class:"spinner-icon"},e("path",{key:"70b8ee3cc3b00d7f83822078f73e0437e24a98aa",d:"M1 5L5 1L9 5",stroke:"currentColor","stroke-width":"1.5",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"}))),e("button",{key:"e26968c85480cbf4cd0f3bd9d6db59f1d6ade88c",type:"button",class:"spinner-button spinner-down",onClick:this.handleDecrement,tabIndex:-1,"aria-label":"Decrease value"},e("svg",{key:"a8c72dd2909b89ceb3797d0a77e531d0b5374e1d",viewBox:"0 0 10 6",class:"spinner-icon"},e("path",{key:"16c95c8cbc90c9d49d081745384c3920620591fb",d:"M1 1L5 5L9 1",stroke:"currentColor","stroke-width":"1.5",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"})))))))}static get watchers(){return{value:[{onValueChange:0}]}}};De.style=":host{display:block}.input-container{display:flex;flex-direction:column;gap:6px}.input-label{font-size:14px;font-weight:500;color:var(--kritzel-numeric-input-label-color, #333333)}.input-wrapper{display:flex;position:relative}.numeric-input{flex:1;padding:8px 36px 8px 12px;border:1px solid var(--kritzel-numeric-input-border-color, #ebebeb);border-radius:var(--kritzel-numeric-input-border-radius, 6px);font-size:14px;color:var(--kritzel-numeric-input-text-color, #333333);background-color:var(--kritzel-numeric-input-input-background, #ffffff);outline:none;transition:border-color 150ms ease;box-sizing:border-box}.numeric-input::-webkit-outer-spin-button,.numeric-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.numeric-input[type='number']{-moz-appearance:textfield}.numeric-input::selection{background-color:var(--kritzel-numeric-input-selection-background, #007AFF);color:var(--kritzel-numeric-input-selection-color, #ffffff)}.numeric-input:hover{border-color:var(--kritzel-numeric-input-hover-border-color, #cccccc)}.numeric-input:focus{border-color:var(--kritzel-numeric-input-focus-border-color, #0066ff);border-width:2px;padding:7px 35px 7px 11px}.spinner-buttons{position:absolute;right:1px;top:1px;bottom:1px;display:flex;flex-direction:column;border-left:1px solid var(--kritzel-numeric-input-border-color, #ebebeb);border-radius:0 var(--kritzel-numeric-input-spinner-border-radius, 5px) var(--kritzel-numeric-input-spinner-border-radius, 5px) 0;overflow:hidden}.spinner-button{flex:1;display:flex;align-items:center;justify-content:center;width:24px;padding:0;border:none;background-color:var(--kritzel-numeric-input-spinner-background, #f5f5f5);color:var(--kritzel-numeric-input-spinner-color, #666666);cursor:pointer;transition:background-color 150ms ease}.spinner-button:hover{background-color:var(--kritzel-numeric-input-spinner-hover-background, #ebebeb)}.spinner-button:active{background-color:var(--kritzel-numeric-input-spinner-active-background, #dddddd)}.spinner-up{border-bottom:1px solid var(--kritzel-numeric-input-border-color, #ebebeb)}.spinner-icon{width:10px;height:6px}";const Fe=class{constructor(e){t(this,e),this.valueChange=n(this,"valueChange")}value=1;min=0;max=1;step=.01;previewColor="#000000";valueChange;handleInput(t){const e=parseFloat(t.target.value);this.value=e,this.valueChange.emit(e)}getPercentage(){return Math.round(100*this.value)}render(){const t=this.getPercentage();return e(i,{key:"988ad7b9ee8d3825c8577d951c6f1d00efbb45eb"},e("div",{key:"4dad6a7d422333fbcaff55b2b374550b496a3adc",class:"opacity-container"},e("div",{key:"7a0ceedd10f2e939dbf189410cc7263c7df498db",class:"slider-wrapper"},e("input",{key:"453e8fbae27023fcbf3c453445fcb8567cb5db00",type:"range",class:"opacity-slider",min:this.min,max:this.max,step:this.step,value:this.value,onInput:t=>this.handleInput(t),style:{"--slider-progress":`${t}%`,"--kritzel-opacity-slider-thumb-border-color":this.previewColor}}))))}};Fe.style=":host{display:flex;flex-direction:column;padding:0;box-sizing:border-box}.opacity-container{display:flex;align-items:center;width:232px}.slider-wrapper{flex:1;display:flex;align-items:center}.opacity-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:linear-gradient( to right, var(--kritzel-opacity-slider-active-color, #007AFF) 0%, var(--kritzel-opacity-slider-active-color, #007AFF) var(--slider-progress, 100%), var(--kritzel-opacity-slider-track-color, #e0e0e0) var(--slider-progress, 100%), var(--kritzel-opacity-slider-track-color, #e0e0e0) 100% );outline:none;cursor:var(--kritzel-global-pointer-cursor, pointer)}.opacity-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--kritzel-opacity-slider-thumb-color, #ffffff);border:2px solid var(--kritzel-opacity-slider-thumb-border-color, #007AFF);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);transition:transform 0.1s ease}.opacity-slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.opacity-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--kritzel-opacity-slider-thumb-color, #ffffff);border:2px solid var(--kritzel-opacity-slider-thumb-border-color, #007AFF);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);transition:transform 0.1s ease}.opacity-slider::-moz-range-thumb:hover{transform:scale(1.1)}.opacity-slider::-moz-range-track{height:6px;border-radius:3px;background:transparent}.opacity-slider:focus{outline:none}.opacity-slider:focus::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--kritzel-global-focus-ring-color, rgba(0, 122, 255, 0.3))}.opacity-slider:focus::-moz-range-thumb{box-shadow:0 0 0 2px var(--kritzel-global-focus-ring-color, rgba(0, 122, 255, 0.3))}";const Re=class{constructor(e){t(this,e),this.valueChange=n(this,"valueChange")}tabs=[];value;valueChange;handleTabClick(t){this.value!==t&&(this.value=t,this.valueChange.emit(t))}handleKeyDown(t,e){const i=this.tabs;let n=e;switch(t.key){case"ArrowLeft":t.preventDefault(),n=e>0?e-1:i.length-1;break;case"ArrowRight":t.preventDefault(),n=e<i.length-1?e+1:0;break;case"Home":t.preventDefault(),n=0;break;case"End":t.preventDefault(),n=i.length-1;break;default:return}this.handleTabClick(i[n].id);const r=t.currentTarget.parentElement,o=r?.querySelectorAll("button");o?.[n]?.focus()}render(){return e(i,{key:"f02f93ada5ec002695b62f511c847de201a8cbe4"},e("div",{key:"bb08ae773f1b993cb330556a5778d71fc5e91ce1",class:"pill-tabs-container",role:"tablist"},this.tabs.map(((t,i)=>e("button",{key:t.id,class:{"pill-tab":!0,selected:this.value===t.id},role:"tab","aria-selected":this.value===t.id?"true":"false",tabIndex:this.value===t.id?0:-1,onClick:()=>this.handleTabClick(t.id),onKeyDown:t=>this.handleKeyDown(t,i)},t.icon&&e("kritzel-icon",{name:t.icon,size:16}),e("span",{class:"pill-tab-label"},t.label))))))}};Re.style=":host{display:block}.pill-tabs-container{display:inline-flex;align-items:center;gap:4px;padding:4px;border-radius:var(--kritzel-pill-tabs-border-radius, 10px);background:var(--kritzel-pill-tabs-background, #f0f0f0);box-sizing:border-box}.pill-tab{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border:none;border-radius:var(--kritzel-pill-tabs-tab-border-radius, 8px);background:var(--kritzel-pill-tabs-tab-background, transparent);color:var(--kritzel-pill-tabs-tab-text-color, #666666);font-family:inherit;font-size:14px;font-weight:500;cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;white-space:nowrap}.pill-tab:hover:not(.selected){background:var(--kritzel-pill-tabs-tab-background-hover, rgba(0, 0, 0, 0.05))}.pill-tab.selected{background:var(--kritzel-pill-tabs-tab-background-selected, #ffffff);color:var(--kritzel-pill-tabs-tab-text-color-selected, #000000);box-shadow:var(--kritzel-pill-tabs-tab-shadow-selected, 0 1px 3px rgba(0, 0, 0, 0.1))}.pill-tab:focus{outline:none}.pill-tab:focus-visible{box-shadow:0 0 0 2px var(--kritzel-global-focus-ring-color, rgba(0, 122, 255, 0.3))}.pill-tab-label{line-height:1}.pill-tab kritzel-icon{flex-shrink:0}";const Le=class{constructor(e){t(this,e),this.close=n(this,"close")}get host(){return r(this)}anchor;anchorChanged(t){t?(this.openPortal(),requestAnimationFrame((()=>{this.calculatePosition(),this.autoFocus&&this.focusFirstElement()}))):this.closePortal()}offsetX;offsetY;autoFocus=!0;close;handleDismissMenus(){this.portal&&(this.close.emit(),this.closePortal())}handleOutsideClick(t){this.lastAddedPortal===this.portal&&(this.host.contains(t.target)||(this.close.emit(),this.closePortal()))}handleOutsidePointerDown(t){if(!this.portal)return;if(this.lastAddedPortal!==this.portal)return;const e=t.composedPath(),i=e.some((t=>t===this.host)),n=this.anchor&&e.some((t=>t===this.anchor));i||n||(t.stopPropagation(),t.preventDefault(),this.close.emit(),this.closePortal())}handleKeyDown(t){if(this.lastAddedPortal===this.portal){if("Escape"===t.key)return t.stopPropagation(),this.anchor.focus(),this.close.emit(),void this.closePortal();if("Tab"!==t.key){if("Enter"===t.key){const e=this.getDeepActiveElement();e?.click&&(t.preventDefault(),e.click())}}else this.trapFocus(t)}}handleResize(){this.calculatePosition()}handleWindowScroll(){if(!ft.isElementInViewport(this.anchor))return this.anchor?.blur(),void this.closePortal();this.calculatePosition()}portal;id=`portal-${K.generateUUID()}`;defaultOffset=0;minLeft=0;themeObserver;focusFirstElement(){requestAnimationFrame((()=>{this.firstFocusableElement?.focus?.()}))}getDeepActiveElement(){let t=document.activeElement;for(;t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;return t}trapFocus(t){const e=ft.getFocusableElements(this.host);if(0===e.length)return;const i=e[0],n=e[e.length-1],r=this.getDeepActiveElement();t.shiftKey?r===i&&(n.focus(),t.preventDefault()):r===n&&(i.focus(),t.preventDefault())}get firstFocusableElement(){const t=this.host.shadowRoot?.querySelector("slot"),e=t?.assignedElements({flatten:!0})[0];return e?ft.getFocusableElements(e)[0]??e:null}get lastAddedPortal(){const t=Array.from(document.querySelectorAll('[id^="portal-"]'));return t.length?t[t.length-1]:null}calculateLeft(){if(!this.anchor||!this.portal)return 0;const t=this.anchor.getBoundingClientRect(),e=this.portal.getBoundingClientRect(),i=this.offsetX??this.defaultOffset;let n;n=t.left+t.width/2>window.innerWidth/2?t.right-e.width-i:t.left+i;const r=window.innerWidth-e.width-this.minLeft;return n<this.minLeft&&(n=this.minLeft),n>r&&(n=r),Math.round(n+window.scrollX)}calculateTop(){if(!this.anchor||!this.portal)return 0;const t=this.anchor.getBoundingClientRect(),e=this.portal.getBoundingClientRect(),i=this.offsetY??this.defaultOffset;let n=t.bottom+i;const r=window.innerHeight-t.bottom-i-8,o=t.top-i-8;return this.host.style.removeProperty("--kritzel-portal-max-height"),e.height<=r?n=t.bottom+i:e.height<=o?n=t.top-e.height-i:r>=o?(n=t.bottom+i,this.host.style.setProperty("--kritzel-portal-max-height",`${r}px`)):(n=8,this.host.style.setProperty("--kritzel-portal-max-height",`${o}px`)),Math.round(n+window.scrollY)}getThemeProvider(){if(!this.anchor)return null;let t=this.anchor;for(;t;){const e=t.closest("kritzel-editor");if(e instanceof HTMLElement)return e;const i=t.closest('[id^="portal-"]');if(i instanceof HTMLElement)return i;const n=t.getRootNode();if(!(n instanceof ShadowRoot))return null;t=n.host}return null}openPortal(){this.portal=document.createElement("div"),this.portal.setAttribute("id",this.id),this.portal.style.zIndex="1",this.portal.style.position="absolute",this.portal.style.top="0px",this.portal.style.left="0px",this.portal.style.visibility="hidden";const t=this.getThemeProvider();if(t){const e=()=>{if(this.portal)for(let e=0;e<t.style.length;e++){const i=t.style[e];i.startsWith("--kritzel-")&&this.portal.style.setProperty(i,t.style.getPropertyValue(i))}};e(),this.themeObserver=new MutationObserver((()=>e())),this.themeObserver.observe(t,{attributes:!0,attributeFilter:["style"]})}this.portal.appendChild(this.host),document.body.append(this.portal)}closePortal(){this.themeObserver?.disconnect(),this.themeObserver=null;const t=document.getElementById(this.id);t&&(document.body.removeChild(t),this.host.remove())}calculatePosition(){if(!this.anchor||!this.portal)return;const t=this.calculateTop(),e=this.calculateLeft();this.portal.style.top=`${t}px`,this.portal.style.left=`${e}px`,this.portal.style.visibility="visible"}render(){return e(i,{key:"ea4b3c0bdaeb94a1aa03714537c3b68c972ad9c5",style:{display:this.anchor?"block":"none"}},e("slot",{key:"cd9060be1fbb801e3b72546d465576d5d79b3c82"}))}static get watchers(){return{anchor:[{anchorChanged:0}]}}},Be=-1/0,Pe=1/0,We=-1/0,Ve=1/0,Ne={showViewportInfo:!1,showObjectInfo:!1,showSyncProviderInfo:!0,showMigrationInfo:!0},Ke=[{id:"general",label:"General",icon:"settings"},{id:"viewport",label:"Viewport",icon:"viewport"},{id:"shortcuts",label:"Keyboard Shortcuts",icon:"command"},{id:"developer",label:"Developer Options",icon:"braces"},{id:"about",label:"About",icon:"info"}],Ue=class{constructor(e){t(this,e),this.settingsChange=n(this,"settingsChange")}get host(){return r(this)}availableThemes=["light","dark"];shortcuts=[];settings;onSettingsPropChange(t){t&&this.applySettings(t)}isDialogOpen=!1;selectedCategoryId=Ke[0].id;scaleMin=1e-4;scaleMax=1e3;lockDrawingScale=!0;theme="light";viewportBoundaryLeft=Be;viewportBoundaryRight=Pe;viewportBoundaryTop=We;viewportBoundaryBottom=Ve;debugInfo={...Ne};settingsChange;componentWillLoad(){this.settings&&this.applySettings(this.settings)}applySettings(t){"number"==typeof t.scaleMin&&(this.scaleMin=t.scaleMin),"number"==typeof t.scaleMax&&(this.scaleMax=t.scaleMax),"boolean"==typeof t.lockDrawingScale&&(this.lockDrawingScale=t.lockDrawingScale),"string"==typeof t.theme&&(this.theme=t.theme),"number"==typeof t.viewportBoundaryLeft&&(this.viewportBoundaryLeft=t.viewportBoundaryLeft),"number"==typeof t.viewportBoundaryRight&&(this.viewportBoundaryRight=t.viewportBoundaryRight),"number"==typeof t.viewportBoundaryTop&&(this.viewportBoundaryTop=t.viewportBoundaryTop),"number"==typeof t.viewportBoundaryBottom&&(this.viewportBoundaryBottom=t.viewportBoundaryBottom),t.debugInfo&&(this.debugInfo={...Ne,...t.debugInfo})}emitSettings(){this.settingsChange.emit({scaleMin:this.scaleMin,scaleMax:this.scaleMax,lockDrawingScale:this.lockDrawingScale,theme:this.theme,viewportBoundaryLeft:this.viewportBoundaryLeft,viewportBoundaryRight:this.viewportBoundaryRight,viewportBoundaryTop:this.viewportBoundaryTop,viewportBoundaryBottom:this.viewportBoundaryBottom,debugInfo:this.debugInfo})}handleScaleMinChange=t=>{this.scaleMin=t.detail,this.emitSettings()};handleScaleMaxChange=t=>{this.scaleMax=t.detail,this.emitSettings()};handleLockDrawingScaleChange=t=>{this.lockDrawingScale=t.detail,this.emitSettings()};handleThemeChange=t=>{this.theme=t.detail,this.emitSettings()};handleViewportBoundaryLeftChange=t=>{this.viewportBoundaryLeft=t.detail??Be,this.emitSettings()};handleViewportBoundaryRightChange=t=>{this.viewportBoundaryRight=t.detail??Pe,this.emitSettings()};handleViewportBoundaryTopChange=t=>{this.viewportBoundaryTop=t.detail??We,this.emitSettings()};handleViewportBoundaryBottomChange=t=>{this.viewportBoundaryBottom=t.detail??Ve,this.emitSettings()};handleDebugInfoChange=t=>e=>{this.debugInfo={...this.debugInfo,[t]:e.detail},this.emitSettings()};async open(){this.isDialogOpen=!0}closeDialog=()=>{this.isDialogOpen=!1};handleCategorySelect=t=>{this.selectedCategoryId=t.detail.item.id};formatKeyCombo(t){const e=[];return t.ctrl&&e.push("Ctrl"),t.shift&&e.push("Shift"),e.push(this.formatKey(t.key)),e.join("+")}formatKey(t){return{Escape:"Esc",Delete:"Del"," ":"Space"}[t]??t.toUpperCase()}groupShortcutsByCategory(){const t=new Map;for(const e of this.shortcuts){const i=t.get(e.category)||[];i.push(e),t.set(e.category,i)}return t}renderCategoryContent(){switch(this.selectedCategoryId){case"general":return e("div",{class:"settings-content"},e("h3",null,"General Settings"),e("div",{class:"settings-group"},e("div",{class:"settings-item"},e("label",{class:"settings-label"},"Theme"),e("p",{class:"settings-description"},"Select a registered color theme for the editor interface."),e("kritzel-dropdown",{options:this.availableThemes.map((t=>({value:t,label:t}))),value:this.theme,onValueChanged:this.handleThemeChange})),e("div",{class:"settings-item"},e("label",{class:"settings-label"},"Lock Drawing Scale"),e("p",{class:"settings-description"},"When enabled, drawn objects maintain a fixed visual size regardless of the current zoom level."),e("kritzel-slide-toggle",{checked:this.lockDrawingScale,label:"Lock Drawing Scale",onCheckedChange:this.handleLockDrawingScaleChange}))));case"viewport":return e("div",{class:"settings-content"},e("h3",null,"Viewport Settings"),e("div",{class:"settings-group"},e("div",{class:"settings-item"},e("label",{class:"settings-label"},"Minimum Zoom Level"),e("p",{class:"settings-description"},"Sets the minimum zoom level. Lower values allow zooming out further to see more of the canvas."),e("kritzel-numeric-input",{value:this.scaleMin,min:1e-4,max:1,step:1e-4,onValueChange:this.handleScaleMinChange})),e("div",{class:"settings-item"},e("label",{class:"settings-label"},"Maximum Zoom Level"),e("p",{class:"settings-description"},"Sets the maximum zoom level. Higher values allow zooming in closer for detailed work."),e("kritzel-numeric-input",{value:this.scaleMax,min:1,max:1e3,step:1,onValueChange:this.handleScaleMaxChange})),e("div",{class:"settings-item"},e("label",{class:"settings-label"},"Viewport Boundary Left"),e("p",{class:"settings-description"},"Left boundary in world coordinates. Set to limit how far left the viewport can pan."),e("kritzel-numeric-input",{value:this.viewportBoundaryLeft,step:100,placeholder:"Infinite",onValueChange:this.handleViewportBoundaryLeftChange})),e("div",{class:"settings-item"},e("label",{class:"settings-label"},"Viewport Boundary Right"),e("p",{class:"settings-description"},"Right boundary in world coordinates. Set to limit how far right the viewport can pan."),e("kritzel-numeric-input",{value:this.viewportBoundaryRight,step:100,placeholder:"Infinite",onValueChange:this.handleViewportBoundaryRightChange})),e("div",{class:"settings-item"},e("label",{class:"settings-label"},"Viewport Boundary Top"),e("p",{class:"settings-description"},"Top boundary in world coordinates. Set to limit how far up the viewport can pan."),e("kritzel-numeric-input",{value:this.viewportBoundaryTop,step:100,placeholder:"Infinite",onValueChange:this.handleViewportBoundaryTopChange})),e("div",{class:"settings-item"},e("label",{class:"settings-label"},"Viewport Boundary Bottom"),e("p",{class:"settings-description"},"Bottom boundary in world coordinates. Set to limit how far down the viewport can pan."),e("kritzel-numeric-input",{value:this.viewportBoundaryBottom,step:100,placeholder:"Infinite",onValueChange:this.handleViewportBoundaryBottomChange}))));case"shortcuts":return e("div",{class:"settings-content"},e("h3",null,"Keyboard Shortcuts"),e("div",{class:"shortcuts-list"},Array.from(this.groupShortcutsByCategory()).map((([t,i])=>e("div",{class:"shortcuts-category",key:t},e("h4",{class:"shortcuts-category-title"},t),e("div",{class:"shortcuts-group"},i.map((t=>e("div",{class:"shortcut-item",key:t.key+t.label},e("span",{class:"shortcut-label"},t.label),e("kbd",{class:"shortcut-key"},this.formatKeyCombo(t)))))))))));case"developer":return e("div",{class:"settings-content"},e("h3",null,"Developer Options"),e("div",{class:"settings-group"},e("div",{class:"settings-item"},e("label",{class:"settings-label"},"Show Viewport Info"),e("p",{class:"settings-description"},"Display viewport debug information such as position, zoom level, and boundaries."),e("kritzel-slide-toggle",{checked:this.debugInfo.showViewportInfo,label:"Show Viewport Info",onCheckedChange:this.handleDebugInfoChange("showViewportInfo")})),e("div",{class:"settings-item"},e("label",{class:"settings-label"},"Show Object Info"),e("p",{class:"settings-description"},"Display debug information about objects on the canvas."),e("kritzel-slide-toggle",{checked:this.debugInfo.showObjectInfo,label:"Show Object Info",onCheckedChange:this.handleDebugInfoChange("showObjectInfo")})),e("div",{class:"settings-item"},e("label",{class:"settings-label"},"Show Sync Provider Info"),e("p",{class:"settings-description"},"Display debug information about the sync provider connection status."),e("kritzel-slide-toggle",{checked:this.debugInfo.showSyncProviderInfo,label:"Show Sync Provider Info",onCheckedChange:this.handleDebugInfoChange("showSyncProviderInfo")})),e("div",{class:"settings-item"},e("label",{class:"settings-label"},"Show Migration Info"),e("p",{class:"settings-description"},"Display debug information about data migrations."),e("kritzel-slide-toggle",{checked:this.debugInfo.showMigrationInfo,label:"Show Migration Info",onCheckedChange:this.handleDebugInfoChange("showMigrationInfo")}))));case"about":return e("div",{class:"settings-content"},e("h3",null,"About"),e("p",null,"Kritzel - A drawing application"),e("p",{class:"version-info"},"Version ","0.3.14"),e("p",{class:"version-info"},"App-State Schema v",V),e("p",{class:"version-info"},"Workspace Schema v",P));default:return null}}render(){return e(i,{key:"46c6792ae9cdd932d3dc71526862c9281c0cefc1"},e("kritzel-dialog",{key:"1cd288cdf8b26bea378665c54bfc14577597fe49",isOpen:this.isDialogOpen,dialogTitle:"Settings",size:"large",contained:!0,onDialogClose:this.closeDialog},e("kritzel-master-detail",{key:"4d07e94ebb09035807356bab4bc7eaca57c36c6c",items:Ke,selectedItemId:this.selectedCategoryId,onItemSelect:this.handleCategorySelect},this.renderCategoryContent())))}static get watchers(){return{settings:[{onSettingsPropChange:0}]}}};Ue.style=":host{display:contents}kritzel-dialog{--kritzel-dialog-body-padding:0;--kritzel-dialog-width-large:800px;--kritzel-dialog-height-large:500px}.footer-button{padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px}.cancel-button{border:1px solid #ebebeb;background:#fff;color:inherit}.cancel-button:hover{background:#f5f5f5}.settings-content{padding:0}.settings-content h3{margin:0 0 16px 0;font-size:18px;font-weight:600;color:var(--kritzel-settings-content-heading-color, #333333)}.settings-content p{margin:0;font-size:14px;color:var(--kritzel-settings-content-text-color, #666666);line-height:1.5}.settings-group{display:flex;flex-direction:column;gap:24px}.settings-item{display:flex;flex-direction:column;gap:8px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.settings-label{font-size:14px;font-weight:600;color:var(--kritzel-settings-label-color, #333333);margin:0 0 4px 0}.settings-description{font-size:12px;color:var(--kritzel-settings-description-color, #888888);margin:0;line-height:1.4}.shortcuts-list{display:flex;flex-direction:column;gap:24px}.shortcuts-category{display:flex;flex-direction:column;gap:8px}.shortcuts-category-title{font-size:14px;font-weight:600;color:var(--kritzel-settings-label-color, #333333);margin:0 0 4px 0}.shortcuts-group{display:flex;flex-direction:column;gap:4px}.shortcut-item{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;border-radius:4px;background:var(--kritzel-settings-shortcut-item-bg, rgba(0, 0, 0, 0.02))}.shortcut-label{font-size:14px;color:var(--kritzel-settings-content-text-color, #666666)}.shortcut-key{font-family:monospace;font-size:12px;padding:2px 8px;border-radius:4px;background:var(--kritzel-settings-shortcut-key-bg, #f0f0f0);color:var(--kritzel-settings-shortcut-key-color, #333333);border:1px solid var(--kritzel-settings-shortcut-key-border, #ddd)}";const He=class{constructor(e){t(this,e),this.valueChange=n(this,"valueChange")}value="transparent";valueChange;handleFillChange(t){this.value=t,this.valueChange.emit(t)}renderFillIcon(t){const i="var(--kritzel-global-text-primary)";return e("svg",{viewBox:"0 0 24 24",class:"fill-icon"},e("rect","transparent"===t?{x:"4",y:"4",width:"16",height:"16",rx:"2",fill:"none",stroke:i,"stroke-width":"2"}:{x:"4",y:"4",width:"16",height:"16",rx:"2",fill:i,stroke:i,"stroke-width":"2"}))}render(){return e(i,{key:"6d38a9af2e4c4c7f86ab994c63fc074007c86b48"},e("div",{key:"cf58f26cb0e56e274873d11024209c6908d317bb",class:"fill-row"},e("button",{key:"c75eed70fe0c2fcbf0fd136bb6fce75b2dbfb45d",class:{"fill-option":!0,selected:"transparent"===this.value},onClick:()=>this.handleFillChange("transparent"),title:"Transparent background"},this.renderFillIcon("transparent")),e("button",{key:"5d6ede439b5d5e55598cd8c20b5851fb9f210463",class:{"fill-option":!0,selected:"filled"===this.value},onClick:()=>this.handleFillChange("filled"),title:"Filled background"},this.renderFillIcon("filled"))))}};He.style=":host{display:flex;flex-direction:column;gap:12px;padding:0;box-sizing:border-box}.fill-row{display:flex;align-items:center;gap:4px}.fill-option{display:flex;justify-content:center;align-items:center;width:48px;height:32px;border-radius:6px;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;background:var(--kritzel-shape-fill-option-background, #ffffff);padding:4px;transition:background-color 0.15s ease, border-color 0.15s ease}.fill-option:hover{background-color:var(--kritzel-shape-fill-hover-background-color, #ebebeb)}.fill-option.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-shape-fill-selected-background-color, #ebebeb)}.fill-option:focus{outline:none;box-shadow:0 0 0 2px var(--kritzel-global-focus-ring-color, rgba(0, 122, 255, 0.3))}.fill-icon{width:100%;height:100%}";const Ge=class{constructor(e){t(this,e),this.toggleIsPublic=n(this,"toggleIsPublic"),this.dialogClosed=n(this,"dialogClosed")}get host(){return r(this)}isPublic=!1;workspaceId=void 0;onIsPublicChange(t){this.internalIsPublic=t}isDialogOpen=!1;internalIsPublic=!1;copySuccess=!1;toggleIsPublic;dialogClosed;async open(){this.internalIsPublic=this.isPublic,this.isDialogOpen=!0}async close(){this.isDialogOpen=!1}handleToggleChange=t=>{const e=t.detail;this.internalIsPublic=e,this.toggleIsPublic.emit(e)};getShareUrl(){if(!this.workspaceId)return"";const t=new URL(this.workspaceId,window.location.origin);return t.searchParams.set("share","true"),t.toString()}handleCopyUrl=async()=>{const t=this.getShareUrl();if(t)try{await navigator.clipboard.writeText(t),this.copySuccess=!0,setTimeout((()=>{this.copySuccess=!1}),2e3)}catch{const e=document.createElement("textarea");e.value=t,document.body.appendChild(e),e.select(),document.execCommand("copy"),document.body.removeChild(e),this.copySuccess=!0,setTimeout((()=>{this.copySuccess=!1}),2e3)}};closeDialog=()=>{this.isDialogOpen=!1,this.dialogClosed.emit()};render(){return e(i,{key:"a104c14b2492d97f3ada98c9eaaa845d63074063"},e("kritzel-dialog",{key:"1b12b27504153e54aeb0cb4e6b1030a0d43b9735",dialogTitle:"Share Workspace",size:"small",isOpen:this.isDialogOpen,onDialogClose:this.closeDialog,contained:!0},e("div",{key:"652f23e37876be356beb6f93abf5930e91d82cea",class:"share-content"},e("div",{key:"aaf336f2ac86fe23cac79cef920a9d67681046e2",class:"share-section"},e("div",{key:"8075a7b3fff47c4b924d3b2d92b1377641920939",class:"share-row"},e("div",{key:"41e98a74a5d4aede50fd75a7de62cbef9b5a5a31",class:"share-label-group"},e("label",{key:"8a4f53e13d5a81497dd31316a49971c7245d82a2",class:"share-label"},"Link sharing"),e("p",{key:"907a59d50e595734f03067f70830cf96defdf8d8",class:"share-description"},this.internalIsPublic?"Anyone with the link can access this workspace.":"Link sharing is disabled. Only you can access this workspace.")),e("kritzel-slide-toggle",{key:"0d75cfeeb63c33d20380ffe9a7e4c27148548ef9",checked:this.internalIsPublic,onCheckedChange:this.handleToggleChange,label:"Enable link sharing"}))),this.internalIsPublic&&e("div",{key:"a8a10c74fd326c5097e4a5f0ee165602c3606ade",class:"share-section"},e("div",{key:"6261a9fc6cb2be2a50856fb8a990b9da3fee84bf",class:"share-url-container"},e("input",{key:"26ee72eebfee88d06a50c338cccc9af296c8ba4c",type:"text",class:"share-url-input",value:this.getShareUrl(),readOnly:!0,onClick:t=>t.target.select()}),e("button",{key:"4b1ec06fa27c95d9d0bb93f8cbb851a02fdd52cc",class:{"copy-button":!0,"copy-success":this.copySuccess},onClick:this.handleCopyUrl,title:this.copySuccess?"Copied!":"Copy link"},e("kritzel-icon",{key:"d9eea56b3523fcc3557d9868f3da7f28449a9447",name:this.copySuccess?"check":"copy",size:18})))))))}static get watchers(){return{isPublic:[{onIsPublicChange:0}]}}};Ge.style=":host{display:contents}kritzel-dialog{--kritzel-dialog-width-small:420px}.share-content{display:flex;flex-direction:column;gap:20px}.share-section{display:flex;flex-direction:column;gap:8px}.share-section-revoke{padding-top:12px;border-top:1px solid var(--kritzel-share-dialog-border-color, #e5e5e5)}.share-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.share-label-group{display:flex;flex-direction:column;gap:8px;flex:1}.share-label{font-size:14px;font-weight:600;color:var(--kritzel-share-dialog-label-color, #333333);margin:0}.share-description{font-size:12px;color:var(--kritzel-share-dialog-description-color, #666666);margin:0;line-height:1.4}.share-url-container{display:flex;align-items:center;gap:8px;background:var(--kritzel-share-dialog-input-background, #f5f5f5);border:1px solid var(--kritzel-share-dialog-input-border-color, #e0e0e0);border-radius:6px;padding:4px 4px 4px 12px}.share-url-input{flex:1;border:none;background:transparent;font-size:13px;color:var(--kritzel-share-dialog-input-text-color, #333333);outline:none;min-width:0;padding:8px 0}.share-url-input:focus{outline:none}.share-url-input::selection{background:var(--kritzel-share-dialog-selection-color, #cce5ff)}.copy-button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:4px;background:var(--kritzel-share-dialog-copy-button-background, #ffffff);color:var(--kritzel-share-dialog-copy-button-color, #666666);cursor:pointer;transition:all 0.15s ease;flex-shrink:0}.copy-button:hover{background:var(--kritzel-share-dialog-copy-button-hover-background, #e8e8e8);color:var(--kritzel-share-dialog-copy-button-hover-color, #333333)}.copy-button.copy-success{background:var(--kritzel-share-dialog-copy-success-background, #d4edda);color:var(--kritzel-share-dialog-copy-success-color, #28a745)}.revoke-button{align-self:flex-start;padding:8px 16px;border:1px solid var(--kritzel-share-dialog-revoke-button-border-color, #dc3545);border-radius:6px;background:transparent;color:var(--kritzel-share-dialog-revoke-button-color, #dc3545);font-size:13px;font-weight:500;cursor:pointer;transition:all 0.15s ease}.revoke-button:hover{background:var(--kritzel-share-dialog-revoke-button-hover-background, #dc3545);color:var(--kritzel-share-dialog-revoke-button-hover-color, #ffffff)}kritzel-dropdown{--kritzel-dropdown-trigger-padding:8px 12px;--kritzel-dropdown-trigger-font-size:13px}";const Ye=class{constructor(e){t(this,e),this.checkedChange=n(this,"checkedChange")}checked=!1;disabled=!1;label;checkedChange;handleToggle=()=>{this.disabled||(this.checked=!this.checked,this.checkedChange.emit(this.checked))};handleKeyDown=t=>{" "!==t.key&&"Enter"!==t.key||(t.preventDefault(),this.handleToggle())};render(){return e(i,{key:"8a1f816240f815905cc7def7cac92eb7ddac0df2",class:{checked:this.checked,disabled:this.disabled},tabIndex:this.disabled?-1:0,role:"switch","aria-checked":this.checked?"true":"false","aria-disabled":this.disabled?"true":"false","aria-label":this.label,onClick:this.handleToggle,onKeyDown:this.handleKeyDown},e("div",{key:"d5fa5091ad54032f81dad3879149c4d8ec7ea37b",class:"toggle-track"},e("div",{key:"cce0d61431ed65a26926b0a496a5c22eb4169577",class:"toggle-thumb"})))}};Ye.style=":host{display:inline-flex;align-items:center;cursor:var(--kritzel-global-pointer-cursor, pointer);outline:none;z-index:1;-webkit-tap-highlight-color:transparent}:host(:focus-visible) .toggle-track{box-shadow:0 0 0 2px var(--kritzel-global-focus-ring-color, rgba(0, 122, 255, 0.3))}:host(.disabled){opacity:0.5;pointer-events:none;cursor:default}.toggle-track{position:relative;width:var(--kritzel-slide-toggle-width, 40px);height:var(--kritzel-slide-toggle-height, 22px);background-color:var(--kritzel-slide-toggle-track-color, #ccc);border-radius:var(--kritzel-slide-toggle-border-radius, 11px);transition:background-color var(--kritzel-slide-toggle-transition-duration, 0.2s) ease}:host(.checked) .toggle-track{background-color:var(--kritzel-slide-toggle-track-checked-color, #007AFF)}.toggle-thumb{position:absolute;top:50%;left:2px;transform:translateY(-50%);width:var(--kritzel-slide-toggle-thumb-size, 18px);height:var(--kritzel-slide-toggle-thumb-size, 18px);background-color:var(--kritzel-slide-toggle-thumb-color, #fff);border-radius:50%;box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);transition:left var(--kritzel-slide-toggle-transition-duration, 0.2s) ease}:host(.checked) .toggle-thumb{left:calc(var(--kritzel-slide-toggle-width, 40px) - var(--kritzel-slide-toggle-thumb-size, 18px) - 2px)}";const qe=class{constructor(e){t(this,e),this.mainButtonClick=n(this,"mainButtonClick"),this.itemSelect=n(this,"itemSelect"),this.itemSave=n(this,"itemSave"),this.itemCancel=n(this,"itemCancel"),this.itemToggleChildMenu=n(this,"itemToggleChildMenu"),this.itemCloseChildMenu=n(this,"itemCloseChildMenu"),this.menuOpen=n(this,"menuOpen"),this.menuClose=n(this,"menuClose")}get host(){return r(this)}buttonIcon="plus";dropdownIcon="chevron-down";items=[];mainButtonDisabled=!1;menuButtonDisabled=!1;mainButtonClick;itemSelect;itemSave;itemCancel;itemToggleChildMenu;itemCloseChildMenu;menuOpen;menuClose;isMenuOpen=!1;isTouchDevice=l.isTouchDevice();anchorElement;menuScrollTop=0;splitMenuButtonRef;menuRef;async open(){this.isMenuOpen||(window.dispatchEvent(new CustomEvent("kritzel-dismiss-menus")),this.isMenuOpen=!0,this.anchorElement=this.host,this.menuOpen.emit())}async focusMenu(){this.menuRef&&await this.menuRef.setFocus()}handleButtonClick=t=>{t.stopPropagation(),this.mainButtonClick.emit()};toggleMenu=t=>{t.stopPropagation(),this.isMenuOpen?this.closeMenu():this.openMenu(t)};openMenu=t=>{t.stopPropagation(),window.dispatchEvent(new CustomEvent("kritzel-dismiss-menus")),this.isMenuOpen=!0,this.anchorElement=this.host,this.menuOpen.emit(),requestAnimationFrame((()=>{this.menuRef?.setScrollTop(this.menuScrollTop)}))};closeMenu=()=>{this.isMenuOpen=!1,this.anchorElement=null,this.splitMenuButtonRef?.blur(),this.menuClose.emit()};handleItemSelect=t=>{this.itemSelect.emit(t.detail)};handleItemSave=t=>{this.itemSave.emit(t.detail)};handleItemCancel=t=>{this.itemCancel.emit(t.detail)};handleItemToggleChildMenu=t=>{this.itemToggleChildMenu.emit(t.detail)};handleItemCloseChildMenu=t=>{this.itemCloseChildMenu.emit(t.detail)};handleScroll=t=>{this.menuScrollTop=t.target.scrollTop};render(){return e(i,{key:"794fdb5cb4d110d93b6b2cb060fe34241f29db57",class:{mobile:this.isTouchDevice}},e("button",{key:"7202a40f05bf6fc256996a05db55bcfa3baba615",class:"split-main-button",tabIndex:0,onClick:this.handleButtonClick,disabled:this.mainButtonDisabled,"aria-label":"Main action"},this.buttonIcon&&e("kritzel-icon",{key:"3156c6c4e757d9ebbd3f5e3719ee1bf9bf81f71b",name:this.buttonIcon})),e("div",{key:"4c5a3a9791ecfd00d36fc0eb885c1d227200cfc7",class:"split-divider"}),e("button",{key:"fe0ee44d11ddb34f7719b986406905c47bc1f152",ref:t=>this.splitMenuButtonRef=t,class:"split-menu-button",tabIndex:0,onClick:this.toggleMenu,disabled:this.menuButtonDisabled,"aria-label":"Open menu"},e("kritzel-icon",{key:"b3d84e4599dc408ccc8afe17e487b501cbde89a4",name:this.dropdownIcon})),e("kritzel-portal",{key:"6800329ebe3c94a661e9ad852b6bf256defc291f",anchor:this.anchorElement,offsetY:4,onClose:this.closeMenu},e("kritzel-menu",{key:"0c98abe2327e0cc3182a55caf50c89316b526049",ref:t=>this.menuRef=t,items:this.items,onItemSelect:this.handleItemSelect,onItemSave:this.handleItemSave,onItemCancel:this.handleItemCancel,onItemToggleChildMenu:this.handleItemToggleChildMenu,onItemCloseChildMenu:this.handleItemCloseChildMenu,onClose:this.closeMenu,onScroll:this.handleScroll})))}};qe.style=":host{position:relative;display:flex;align-items:center;font-family:sans-serif;z-index:1;padding:var(--kritzel-split-button-padding, 4px);background-color:var(--kritzel-split-button-background-color, #ffffff);border-radius:var(--kritzel-split-button-border-radius, 12px);box-shadow:var(--kritzel-split-button-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-split-button-border, 1px solid #ebebeb);gap:var(--kritzel-split-button-gap, 4px)}:host(.mobile){--kritzel-split-button-hover-background-color:transparent}button{border:none;background-color:transparent;padding:0;margin:0;font-family:inherit;font-size:inherit;color:var(--kritzel-split-button-color, #000000);-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:var(--kritzel-global-pointer-cursor, pointer);text-align:center;display:flex;align-items:center;justify-content:center;pointer-events:all;-webkit-tap-highlight-color:transparent}.split-main-button,.split-menu-button{height:auto;display:flex;align-items:center;padding:var(--kritzel-split-button-padding, 8px);background-color:var(--kritzel-split-button-background-color, #ffffff);border-radius:var(--kritzel-split-button-border-radius, 12px);font-size:var(--kritzel-split-button-font-size, 14px)}.split-main-button:hover,.split-menu-button:hover{background-color:var(--kritzel-split-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.split-main-button:focus,.split-menu-button:focus{background-color:var(--kritzel-split-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.split-main-button{gap:var(--kritzel-split-button-gap, 4px)}.split-menu-button{border-left:none;justify-content:center}.split-divider{width:var(--kritzel-split-button-divider-width, 1px);height:24px;background-color:var(--kritzel-split-button-divider-background-color, hsl(0, 0%, 0%, 4.3%))}:disabled{pointer-events:none;opacity:0.5}";const Xe=class{constructor(e){t(this,e),this.sizeChange=n(this,"sizeChange")}sizes=[4,6,8,12,16,24];selectedSize=null;sizeChange;handleSizeClick(t){this.selectedSize=t,this.sizeChange.emit(t)}render(){return e(i,{key:"514d87732c9b15cddd5a905407ff7ce9069c06d7"},e("div",{key:"170c9a8abfe8298116d8a269338da95fbc2aac7b",class:"size-grid"},this.sizes.map((t=>e("div",{tabIndex:0,class:{"size-container":!0,selected:this.selectedSize===t},onClick:()=>this.handleSizeClick(t)},e("kritzel-color",{value:"var(--kritzel-global-text-primary)",size:t}))))))}};Xe.style=":host{display:flex;align-items:flex-start;gap:0;padding:0;width:100%;box-sizing:border-box}.size-grid{width:100%;display:grid;grid-template-columns:repeat(auto-fill, 32px);gap:8px;justify-items:center}.size-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box}.size-container:hover{background-color:var(--kritzel-stroke-size-hover-background-color, #ebebeb)}.size-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-stroke-size-selected-background-color, #ebebeb)}";const Ze=class{constructor(e){t(this,e),this.toolChange=n(this,"toolChange"),this.displayValuesChange=n(this,"displayValuesChange")}tool;handleToolChange(t,e){const i=lt.getToolConfig(t);if(e&&t&&"shape"===i?.type){const n=lt.getToolConfig(e);"shape"===n?.type&&[i.colorProperty,i.sizeProperty,i.opacityProperty,"fillColor"].forEach((i=>{i&&void 0!==e[i]&&(t[i]=e[i])}))}this.config=i,this.config&&(this.updatePalette(),this.updateSizes(),this.currentOpacity=t[this.config.opacityProperty]??1,this.emitDisplayValues())}isExpanded=!1;theme;engine;handleSelectionChangeBound=this.handleSelectionChange.bind(this);onThemeChange(){this.emitDisplayValues()}handleEngineChange(t,e){e&&e.removeEventListener("objectsSelectionChange",this.handleSelectionChangeBound),t&&t.addEventListener("objectsSelectionChange",this.handleSelectionChangeBound)}toolChange;displayValuesChange;config;palette=[];sizes=[];currentOpacity=1;updateTrigger=0;handleSelectionChange(){this.tool instanceof c&&(this.config=lt.getToolConfig(this.tool),this.config&&(this.updatePalette(),this.updateSizes(),this.currentOpacity=this.tool[this.config.opacityProperty]??1,this.emitDisplayValues()))}disconnectedCallback(){this.engine&&this.engine.removeEventListener("objectsSelectionChange",this.handleSelectionChangeBound)}componentWillLoad(){this.config=lt.getToolConfig(this.tool),this.config&&(this.updatePalette(),this.updateSizes(),this.currentOpacity=this.tool[this.config.opacityProperty]??1,this.emitDisplayValues()),this.engine&&this.engine.addEventListener("objectsSelectionChange",this.handleSelectionChangeBound)}emitDisplayValues(){if(!this.config)return;const t=this.tool[this.config.sizeProperty],e={color:a.applyOpacity(this.tool[this.config.colorProperty],this.currentOpacity,this.theme),size:t};this.tool instanceof h&&(e.fontFamily=this.tool.fontFamily),this.displayValuesChange.emit(e)}updatePalette(){this.config&&(this.palette="none"===this.config.paletteSource?[]:this.tool.palette||[])}updateSizes(){this.config&&(this.sizes="none"===this.config.sizesSource?[]:this.tool.sizes||[])}handleToggleExpand=()=>{this.isExpanded=!this.isExpanded};handleColorChange=t=>{if(this.tool[this.config.colorProperty]=t.detail,"shape"===this.config.type||"selection"===this.config.type){const e=this.tool;("string"==typeof e.fillColor?"transparent"===e.fillColor:"transparent"===e.fillColor.light&&"transparent"===e.fillColor.dark)||(e.fillColor=t.detail)}this.emitDisplayValues(),this.toolChange.emit(this.tool),this.updateTrigger++};handleSizeChange=t=>{this.tool[this.config.sizeProperty]=t.detail,this.emitDisplayValues(),this.toolChange.emit(this.tool),this.updateTrigger++};handleOpacityChange=t=>{this.tool[this.config.opacityProperty]=t.detail,this.currentOpacity=t.detail,this.emitDisplayValues(),this.toolChange.emit(this.tool)};handlePropertyChange=(t,e)=>{if("shape"!==this.config.type&&"selection"!==this.config.type||"fillColor"!==t)this.tool[t]=e,"fontFamily"===t&&this.emitDisplayValues();else{const t="filled"===e?this.tool[this.config.colorProperty]:{light:"transparent",dark:"transparent"};this.tool.fillColor=t,"filled"===e&&(this.tool[this.config.colorProperty]=t)}this.toolChange.emit(this.tool),this.updateTrigger++};getShapeFillValue(){const t=this.tool.fillColor;return("string"==typeof t?"transparent"===t:"transparent"===t.light&&"transparent"===t.dark)?"transparent":"filled"}renderControl(t){const i=this.tool[t.propertyName];switch(t.type){case"stroke-size":return e("kritzel-stroke-size",{key:t.type,sizes:this.sizes.length>0?this.sizes:void 0,selectedSize:i,onSizeChange:this.handleSizeChange});case"font-size":return e("kritzel-font-size",{key:t.type,sizes:this.sizes.length>0?this.sizes:void 0,selectedSize:i,fontFamily:this.tool.fontFamily,onSizeChange:this.handleSizeChange});case"line-endings":return e("kritzel-line-endings",{key:t.type,value:i,onValueChange:e=>this.handlePropertyChange(t.propertyName,e.detail)});case"shape-fill":return e("kritzel-shape-fill",{key:t.type,value:this.getShapeFillValue(),onValueChange:e=>this.handlePropertyChange(t.propertyName,e.detail)});case"font-family":return e("kritzel-font-family",{key:t.type,selectedFontFamily:i,onFontFamilyChange:e=>this.handlePropertyChange(t.propertyName,e.detail)});default:return null}}render(){if(!this.config)return null;const t=this.palette.length>6||"text"===this.config.type,n=this.palette.length>0,r=this.config.controls.find((t=>"stroke-size"===t.type||"font-size"===t.type)),o=this.config.controls.filter((t=>"stroke-size"!==t.type&&"font-size"!==t.type));return e(i,null,e("div",{style:{display:"flex",flexDirection:"row",gap:"8px",width:"100%"}},e("div",{style:{display:"flex",flexDirection:"column",gap:"12px",flex:"1"}},n&&e("kritzel-color-palette",{colors:this.palette,selectedColor:this.tool[this.config.colorProperty],isExpanded:this.isExpanded,isOpaque:!0,opacity:this.currentOpacity,theme:this.theme,onColorChange:this.handleColorChange}),r&&this.renderControl(r),e("kritzel-opacity-slider",{value:this.tool[this.config.opacityProperty],previewColor:this.tool[this.config.colorProperty],onValueChange:this.handleOpacityChange}),o.map((t=>[e("div",{class:"divider"}),this.renderControl(t)]))),t&&e("div",{style:{display:"flex",alignItems:"flex-start"}},e("button",{class:"expand-toggle",onClick:this.handleToggleExpand,title:this.isExpanded?"Collapse":"Expand"},e("kritzel-icon",{name:this.isExpanded?"chevron-up":"chevron-down"})))))}static get watchers(){return{tool:[{handleToolChange:0}],theme:[{onThemeChange:0}],engine:[{handleEngineChange:0}]}}};Ze.style=".expand-toggle{background:none;border:none;cursor:var(--kritzel-global-pointer-cursor, pointer);padding:0;margin:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--kritzel-icon-color, currentColor);transition:transform 0.2s ease}.expand-toggle:hover{opacity:0.7}.expand-toggle:focus{outline:none}.expand-toggle:focus-visible{outline:2px solid var(--kritzel-focus-color, #007acc);outline-offset:2px}.expand-toggle:active{transform:scale(0.95)}.divider{height:1px;background-color:var(--kritzel-divider-color, #e0e0e0);margin:4px 0;width:100%}";const Je=class{constructor(e){t(this,e),this.tooltipClosed=n(this,"tooltipClosed"),this.tooltipOpened=n(this,"tooltipOpened")}get host(){return r(this)}isVisible=!1;anchorElement;triggerElement;offsetY=24;tooltipClosed;tooltipOpened;positionX=0;positionY=0;handleOutsideClick(t){if(!this.isVisible)return;const e=t.composedPath(),i=e.some((t=>t===this.host)),n=this.triggerElement&&e.some((t=>t===this.triggerElement));i||n||this.close()}handleOutsidePointerDown(t){if(!this.isVisible)return;const e=t.composedPath(),i=e.some((t=>t===this.host)),n=this.triggerElement&&e.some((t=>t===this.triggerElement));i||n||(t.stopPropagation(),t.preventDefault(),this.close())}handleCloseAll(t){t.detail!==this.host&&this.close()}handleWindowResize(){this.calculateAdjustedPosition()}handleTriggerElementChange(t,e){e&&e.removeEventListener("click",this.handleTriggerClick),t&&t.addEventListener("click",this.handleTriggerClick)}handleVisibilityChange(t){t&&(this.calculateAdjustedPosition(),requestAnimationFrame((()=>{this.focusContent()})))}async open(){this.isVisible||(document.dispatchEvent(new CustomEvent("kritzelTooltipCloseAll",{detail:this.host})),this.isVisible=!0,this.tooltipOpened.emit())}async close(){this.isVisible&&(this.isVisible=!1,this.tooltipClosed.emit())}async toggle(){this.isVisible?this.close():this.open()}async focusContent(){const t=ft.getFocusableElements(this.host);t.length>0&&t[0].focus()}connectedCallback(){this.triggerElement&&this.triggerElement.addEventListener("click",this.handleTriggerClick)}componentDidLoad(){this.triggerElement&&this.triggerElement.addEventListener("click",this.handleTriggerClick)}componentWillLoad(){this.calculateAdjustedPosition()}componentWillUpdate(){this.calculateAdjustedPosition()}disconnectedCallback(){this.triggerElement&&this.triggerElement.removeEventListener("click",this.handleTriggerClick)}handleTriggerClick=t=>{t.stopPropagation(),this.toggle()};calculateAdjustedPosition(){if(this.isVisible&&this.anchorElement){const t=this.anchorElement.getBoundingClientRect(),e=this.host.shadowRoot?.querySelector(".tooltip-content"),i=e?.getBoundingClientRect(),n=i?.width||0,r=12,o=window.innerWidth-n-r;this.positionX=Math.max(r,Math.min(t.left+t.width/2-n/2,o)),this.positionY=window.innerHeight-t.top+this.offsetY}}render(){return e(i,{key:"10bff4d14ff1f724d59463afc059f254e9485175",style:{position:"fixed",zIndex:"9999",transition:"opacity 0.3s ease-in-out, transform 0.3s ease-in-out",visibility:this.isVisible?"visible":"hidden",left:`${this.positionX}px`,bottom:`${this.positionY}px`}},e("div",{key:"6bfc8f2fe731d758c74319abeb82c4b84616f8b6",class:"tooltip-content",onClick:t=>t.stopPropagation(),onPointerDown:t=>t.stopPropagation(),onMouseDown:t=>t.stopPropagation()},e("slot",{key:"2a92ad23f4424b2d17035f86983be66a81fee81d"})))}static get watchers(){return{triggerElement:[{handleTriggerElementChange:0}],isVisible:[{handleVisibilityChange:0}]}}};Je.style=":host{width:auto}.tooltip-content{position:relative;padding:8px 12px;border-radius:4px;width:fit-content;background-color:var(--kritzel-tooltip-background-color, #ffffff);color:var(--kritzel-tooltip-color, #000000);padding:var(--kritzel-tooltip-padding, 12px);border:var(--kritzel-tooltip-border, 1px solid #ebebeb);border-radius:var(--kritzel-tooltip-border-radius, 16px);white-space:nowrap;box-shadow:var(--kritzel-tooltip-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12))}";const Qe=class{constructor(e){t(this,e),this.undo=n(this,"undo"),this.redo=n(this,"redo"),this.delete=n(this,"delete")}undoState=null;undo;redo;delete;handleUndo(t){t.cancelable&&(t.preventDefault(),t.stopPropagation(),this.undo.emit())}handleRedo(t){t.preventDefault(),t.stopPropagation(),this.redo.emit()}render(){return e(i,{key:"b49f6db6c0e574dc8a5a733c749ecda6f24f9d25"},e("button",{key:"e6306e54c8f660c3e92d032527fad1ea45ca0cf8",class:"utility-button","data-testid":"utility-undo",disabled:!this.undoState?.canUndo,onClick:t=>this.handleUndo(t),"aria-label":"Undo"},e("kritzel-icon",{key:"5bb1293049a1e3004504289d92ccc79958786f3f",name:"undo"})),e("button",{key:"8102b0403d7f328ce4bfeb79767d5bd99d879013",class:"utility-button","data-testid":"utility-redo",disabled:!this.undoState?.canRedo,onClick:t=>this.handleRedo(t),"aria-label":"Redo"},e("kritzel-icon",{key:"5db3047bec5d8ab695a2dc67780a5dbecbae64d2",name:"redo"})),e("div",{key:"e894d9f2aaa2cad7aa980d3b839eca05a8d9c9df",class:"utility-separator"}),e("button",{key:"f0a7de5ab91f82a2e5e8df75cc1903ec647abdac",class:"utility-button","data-testid":"utility-delete",onClick:()=>this.delete.emit(),"aria-label":"Delete selected items"},e("kritzel-icon",{key:"5b146375394299bae946a95545c3c42c2bf36766",name:"delete"})))}};Qe.style=":host{display:flex;flex-direction:row;align-items:center;padding:4px;gap:8px;border-top-left-radius:12px;border-top-right-radius:12px;background-color:var(--kritzel-utility-panel-background-color, #e2e2e2);width:fit-content;user-select:none;z-index:1}.utility-button{display:flex;justify-content:center;align-items:center;width:28px;height:28px;padding:8px 4px;border:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);color:var(--kritzel-utility-panel-button-color, #333333);--kritzel-icon-color:var(--kritzel-utility-panel-button-color, #333333);-webkit-tap-highlight-color:transparent;border-radius:var(--kritzel-utility-panel-button-border-radius, 8px)}.utility-button:hover,.utility-button:focus-visible{background-color:var(--kritzel-utility-panel-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.utility-button:disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}.utility-separator{width:1px;height:16px;background-color:var(--kritzel-utility-panel-separator-color, hsl(0, 0%, 0%, 8%))}";const ti=class{constructor(e){t(this,e),this.isWorkspaceManagerReady=n(this,"isWorkspaceManagerReady"),this.workspaceChange=n(this,"workspaceChange")}get host(){return r(this)}visible=!1;activeWorkspace;workspaces=[];isWorkspaceManagerReady;workspaceChange;childMenuAnchor=null;openChildMenuItem=null;newWorkspace=null;editingItemId=null;handleWheel(t){t.ctrlKey&&t.preventDefault()}kritzelEngineRef=null;splitButtonRef;get sortedWorkspaces(){return[this.newWorkspace,...this.workspaces].filter((t=>null!=t)).sort(((t,e)=>e.createdAt.getTime()-t.createdAt.getTime()))}async componentWillLoad(){await this.initializeEngine(),this.isWorkspaceManagerReady.emit()}async initializeEngine(){await customElements.whenDefined("kritzel-engine");const t=this.host.closest("kritzel-editor");this.kritzelEngineRef=t?.querySelector("kritzel-engine")??null,this.kritzelEngineRef||console.warn("kritzel-engine not found in kritzel-editor.")}async select(t,e){this.editingItemId||(t.action?t.action(t,e):this.workspaceChange.emit(t.value))}async add(){await this.splitButtonRef.open(),this.newWorkspace=new E(K.generateUUID(),"New Workspace"),this.editingItemId=this.newWorkspace.id}edit(t){this.openChildMenuItem=null,this.childMenuAnchor=null,requestAnimationFrame((()=>{this.editingItemId=t.id}))}async save(t){if(this.newWorkspace)this.newWorkspace.name=t.label,await(this.kritzelEngineRef?.createWorkspace(this.newWorkspace)),this.workspaceChange.emit(this.newWorkspace);else{const e=t.value;e.name=t.label,await(this.kritzelEngineRef?.updateWorkspace(e))}this.editingItemId=null,this.newWorkspace=null}cancel(){this.newWorkspace=null,this.editingItemId=null}async delete(t){this.openChildMenuItem=null,this.childMenuAnchor=null,await(this.kritzelEngineRef?.deleteWorkspace(t.value)),t.value.id===this.activeWorkspace?.id&&(this.activeWorkspace=this.sortedWorkspaces.find((e=>e.id!==t.value.id))||null,this.workspaceChange.emit(this.activeWorkspace)),await this.splitButtonRef.focusMenu()}toggleChildMenu(t,e){this.openChildMenuItem=t,this.childMenuAnchor=e}closeChildMenu(){this.openChildMenuItem=null,this.childMenuAnchor=null}handleMenuOpen(){}handleMenuClose(){this.cancel(),this.closeChildMenu()}render(){const t=this.sortedWorkspaces.sort(((t,e)=>e.createdAt.getTime()-t.createdAt.getTime())).filter((t=>null!==t)).map((t=>({id:t.id,label:t.name,icon:t.isPublic?"users-round":void 0,iconTooltip:t.isPublic?"Shared workspace":void 0,value:t,isEditing:this.editingItemId===t.id,isSelected:this.activeWorkspace?.id===t.id,isNewItem:this.newWorkspace?.id===t.id,isChildMenuOpen:this.openChildMenuItem?.id===t.id,childMenuAnchor:this.openChildMenuItem?.id===t.id?this.childMenuAnchor:null,children:[{id:`${t.id}-rename`,label:"Rename",value:"rename",action:(t,e)=>this.edit(e)},{id:`${t.id}-delete`,label:"Delete",value:"delete",isDisabled:this.sortedWorkspaces.length<=1,action:(t,e)=>this.delete(e)}]})));return e(i,{style:{display:this.visible?"":"none"}},e("div",{class:{manager:!0,visible:this.visible}},e("kritzel-split-button",{ref:t=>this.splitButtonRef=t,items:t,mainButtonDisabled:null!=this.editingItemId,onMainButtonClick:()=>this.add(),onItemSelect:t=>this.select(t.detail.item,t.detail.parent),onItemToggleChildMenu:t=>this.toggleChildMenu(t.detail.item,t.detail.childMenuAnchor),onItemSave:t=>this.save(t.detail),onItemCancel:()=>this.cancel(),onItemCloseChildMenu:()=>this.closeChildMenu(),onMenuOpen:()=>this.handleMenuOpen(),onMenuClose:()=>this.handleMenuClose()})))}};ti.style=":host{display:flex;flex-direction:column;z-index:1}.manager{opacity:0;pointer-events:none;transition:opacity 0.2s ease-out}.manager.visible{opacity:1;pointer-events:auto}";export{tt as kritzel_active_users,et as kritzel_avatar,it as kritzel_awareness_cursors,nt as kritzel_back_to_content,rt as kritzel_button,ot as kritzel_color,st as kritzel_color_palette,at as kritzel_context_menu,ct as kritzel_controls,ht as kritzel_current_user,ut as kritzel_current_user_dialog,dt as kritzel_cursor_trail,pt as kritzel_dialog,bt as kritzel_dropdown,yt as kritzel_editor,xe as kritzel_engine,ze as kritzel_export,Ce as kritzel_font,Se as kritzel_font_family,Ie as kritzel_font_size,Me as kritzel_icon,je as kritzel_input,$e as kritzel_line_endings,Te as kritzel_login_dialog,Ae as kritzel_master_detail,Oe as kritzel_menu,_e as kritzel_menu_item,Ee as kritzel_more_menu,De as kritzel_numeric_input,Fe as kritzel_opacity_slider,Re as kritzel_pill_tabs,Le as kritzel_portal,Ue as kritzel_settings,He as kritzel_shape_fill,Ge as kritzel_share_dialog,Ye as kritzel_slide_toggle,qe as kritzel_split_button,Xe as kritzel_stroke_size,Ze as kritzel_tool_config,Je as kritzel_tooltip,Qe as kritzel_utility_panel,ti as kritzel_workspace_manager}
|