kritzel-stencil 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{default-line-tool.config-SdMGkNhv.js → default-line-tool.config-MA02HCrH.js} +635 -118
- package/dist/cjs/{index-BeKMS-Zt.js → index-Bj0n7fQQ.js} +84 -7
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/kritzel-brush-style.cjs.entry.js +1 -1
- package/dist/cjs/{kritzel-color_22.cjs.entry.js → kritzel-color_24.cjs.entry.js} +870 -769
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/stencil.cjs.js +3 -3
- package/dist/collection/classes/core/core.class.js +2 -0
- package/dist/collection/classes/core/viewport.class.js +43 -3
- package/dist/collection/classes/objects/line.class.js +1 -0
- package/dist/collection/classes/objects/path.class.js +1 -0
- package/dist/collection/classes/objects/shape.class.js +1 -0
- package/dist/collection/classes/objects/text.class.js +4 -3
- package/dist/collection/classes/providers/indexeddb-sync-provider.class.js +0 -1
- package/dist/collection/classes/tools/brush-tool.class.js +5 -0
- package/dist/collection/classes/tools/line-tool.class.js +31 -1
- package/dist/collection/classes/tools/selection-tool.class.js +193 -0
- package/dist/collection/classes/tools/shape-tool.class.js +2 -0
- package/dist/collection/classes/tools/text-tool.class.js +3 -0
- package/dist/collection/collection-manifest.json +5 -3
- package/dist/collection/components/core/kritzel-cursor-trail/kritzel-cursor-trail.js +3 -2
- package/dist/collection/components/core/kritzel-editor/kritzel-editor.js +37 -19
- package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +108 -36
- package/dist/collection/components/shared/kritzel-color/kritzel-color.js +2 -2
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.css +1 -1
- package/dist/collection/components/shared/kritzel-color-palette/kritzel-color-palette.js +24 -2
- package/dist/collection/components/shared/kritzel-font/kritzel-font.js +1 -1
- package/dist/collection/components/shared/kritzel-font-family/kritzel-font-family.css +1 -1
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.css +1 -1
- package/dist/collection/components/shared/kritzel-font-size/kritzel-font-size.js +1 -1
- package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.css +60 -0
- package/dist/collection/components/shared/kritzel-line-endings/kritzel-line-endings.js +187 -0
- package/dist/collection/components/shared/kritzel-menu/kritzel-menu.js +15 -8
- package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.js +16 -9
- package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.css +85 -0
- package/dist/collection/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.js +163 -0
- package/dist/collection/components/shared/kritzel-portal/kritzel-portal.js +1 -1
- package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.css +47 -0
- package/dist/collection/components/shared/kritzel-shape-fill/kritzel-shape-fill.js +93 -0
- package/dist/collection/components/shared/kritzel-split-button/kritzel-split-button.js +13 -7
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.css +11 -2
- package/dist/collection/components/shared/kritzel-stroke-size/kritzel-stroke-size.js +2 -2
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.css +1 -1
- package/dist/collection/components/shared/kritzel-tooltip/kritzel-tooltip.js +6 -4
- package/dist/collection/components/ui/kritzel-context-menu/kritzel-context-menu.js +6 -3
- package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +95 -14
- package/dist/collection/components/ui/kritzel-tool-config/kritzel-tool-config.css +38 -0
- package/dist/collection/components/ui/kritzel-tool-config/kritzel-tool-config.js +321 -0
- package/dist/collection/components/ui/kritzel-utility-panel/kritzel-utility-panel.js +3 -2
- package/dist/collection/components/ui/kritzel-workspace-manager/kritzel-workspace-manager.js +6 -3
- package/dist/collection/configs/default-brush-tool.config.js +2 -52
- package/dist/collection/configs/default-line-tool.config.js +2 -26
- package/dist/collection/configs/default-shape-tool.config.js +2 -15
- package/dist/collection/configs/default-text-tool.config.js +2 -26
- package/dist/collection/constants/color-palette.constants.js +30 -0
- package/dist/collection/helpers/color.helper.js +31 -0
- package/dist/collection/helpers/tool-config.helper.js +65 -0
- package/dist/collection/interfaces/tool-config.interface.js +1 -0
- package/dist/components/index.d.ts +8 -4
- package/dist/components/index.js +1 -1
- package/dist/components/kritzel-brush-style.js +1 -1
- package/dist/components/kritzel-color-palette.js +1 -1
- package/dist/components/kritzel-color.js +1 -1
- package/dist/components/kritzel-context-menu.js +1 -1
- package/dist/components/kritzel-controls.js +1 -1
- package/dist/components/kritzel-cursor-trail.js +1 -1
- package/dist/components/kritzel-dropdown.js +1 -1
- package/dist/components/kritzel-editor.js +1 -1
- package/dist/components/kritzel-engine.js +1 -1
- package/dist/components/kritzel-font-family.js +1 -1
- package/dist/components/kritzel-font-size.js +1 -1
- package/dist/components/kritzel-font.js +1 -1
- package/dist/components/kritzel-icon.js +1 -1
- package/dist/components/kritzel-line-endings.d.ts +11 -0
- package/dist/components/kritzel-line-endings.js +1 -0
- package/dist/components/kritzel-menu-item.js +1 -1
- package/dist/components/kritzel-menu.js +1 -1
- package/dist/components/kritzel-opacity-slider.d.ts +11 -0
- package/dist/components/kritzel-opacity-slider.js +1 -0
- package/dist/components/kritzel-portal.js +1 -1
- package/dist/components/kritzel-shape-fill.d.ts +11 -0
- package/dist/components/kritzel-shape-fill.js +1 -0
- package/dist/components/kritzel-split-button.js +1 -1
- package/dist/components/kritzel-stroke-size.js +1 -1
- package/dist/components/kritzel-tool-config.d.ts +11 -0
- package/dist/components/kritzel-tool-config.js +1 -0
- package/dist/components/kritzel-tooltip.js +1 -1
- package/dist/components/kritzel-utility-panel.js +1 -1
- package/dist/components/kritzel-workspace-manager.js +1 -1
- package/dist/components/p-83YX0-FS.js +1 -0
- package/dist/components/p-8iEiCuEN.js +1 -0
- package/dist/components/p-9XZbc_qK.js +1 -0
- package/dist/components/p-B3P64-gH.js +9 -0
- package/dist/components/p-B8QjTqOY.js +1 -0
- package/dist/components/p-BF6MdW17.js +1 -0
- package/dist/components/p-BVIY50lR.js +1 -0
- package/dist/components/p-BbqT9o1F.js +1 -0
- package/dist/components/{p-CXzfYQ_u.js → p-BnidlyU0.js} +1 -1
- package/dist/components/{p-Bj_Og27M.js → p-BxS4Pdpz.js} +1 -1
- package/dist/components/{p-g0N9j_uT.js → p-CCj8nmQH.js} +1 -1
- package/dist/components/{p-1z-ds26_.js → p-CLOnpu42.js} +1 -1
- package/dist/components/{p-D1tfzpy8.js → p-CSGeDE4f.js} +1 -1
- package/dist/components/p-CbuHMNa9.js +1 -0
- package/dist/components/p-ClMFs3KI.js +1 -0
- package/dist/components/{p-IAqZFssU.js → p-Cnpk2hfo.js} +1 -1
- package/dist/components/{p-Cy77SpWt.js → p-Ctv4NAxk.js} +1 -1
- package/dist/components/p-CyHZWbkS.js +1 -0
- package/dist/components/{p-C4krHoUl.js → p-D8GeJNUv.js} +1 -1
- package/dist/components/{p-XGgKC_Fe.js → p-DKgqzi2Y.js} +1 -1
- package/dist/components/p-DOF5fWDU.js +1 -0
- package/dist/components/{p-4FEa4ADy.js → p-DV_h5Jo2.js} +1 -1
- package/dist/components/{p-DTezr6w9.js → p-DgCGSL2Q.js} +1 -1
- package/dist/components/{p-D5ZsALCP.js → p-wRXL928z.js} +1 -1
- package/dist/esm/{default-line-tool.config-Cw8mdDpt.js → default-line-tool.config-DLpNl6R9.js} +634 -110
- package/dist/esm/{index-BqhmuUH2.js → index-OLdaFN6W.js} +84 -7
- package/dist/esm/index.js +2 -2
- package/dist/esm/kritzel-brush-style.entry.js +1 -1
- package/dist/esm/{kritzel-color_22.entry.js → kritzel-color_24.entry.js} +859 -760
- package/dist/esm/loader.js +3 -3
- package/dist/esm/stencil.js +4 -4
- package/dist/stencil/index.esm.js +1 -1
- package/dist/stencil/{p-09295079.entry.js → p-802bc7cf.entry.js} +1 -1
- package/dist/stencil/p-DLpNl6R9.js +1 -0
- package/dist/stencil/p-OLdaFN6W.js +2 -0
- package/dist/stencil/p-caf30edb.entry.js +9 -0
- package/dist/stencil/stencil.esm.js +1 -1
- package/dist/types/classes/core/viewport.class.d.ts +6 -0
- package/dist/types/classes/objects/shape.class.d.ts +1 -0
- package/dist/types/classes/tools/brush-tool.class.d.ts +1 -0
- package/dist/types/classes/tools/line-tool.class.d.ts +2 -1
- package/dist/types/classes/tools/selection-tool.class.d.ts +22 -0
- package/dist/types/classes/tools/shape-tool.class.d.ts +1 -0
- package/dist/types/classes/tools/text-tool.class.d.ts +1 -0
- package/dist/types/components/core/kritzel-engine/kritzel-engine.d.ts +2 -0
- package/dist/types/components/shared/kritzel-color-palette/kritzel-color-palette.d.ts +1 -0
- package/dist/types/components/shared/kritzel-line-endings/kritzel-line-endings.d.ts +23 -0
- package/dist/types/components/shared/kritzel-opacity-slider/kritzel-opacity-slider.d.ts +17 -0
- package/dist/types/components/shared/kritzel-shape-fill/kritzel-shape-fill.d.ts +10 -0
- package/dist/types/components/ui/kritzel-controls/kritzel-controls.d.ts +9 -0
- package/dist/types/components/ui/kritzel-tool-config/kritzel-tool-config.d.ts +25 -0
- package/dist/types/components.d.ts +235 -82
- package/dist/types/constants/color-palette.constants.d.ts +5 -0
- package/dist/types/helpers/color.helper.d.ts +9 -0
- package/dist/types/helpers/tool-config.helper.d.ts +4 -0
- package/dist/types/interfaces/line-options.interface.d.ts +1 -0
- package/dist/types/interfaces/path-options.interface.d.ts +1 -0
- package/dist/types/interfaces/tool-config.interface.d.ts +26 -0
- package/dist/types/stencil-public-runtime.d.ts +29 -0
- package/package.json +5 -3
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.css +0 -19
- package/dist/collection/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.js +0 -134
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.css +0 -19
- package/dist/collection/components/ui/kritzel-control-text-config/kritzel-control-text-config.js +0 -114
- package/dist/components/kritzel-control-brush-config.d.ts +0 -11
- package/dist/components/kritzel-control-brush-config.js +0 -1
- package/dist/components/kritzel-control-text-config.d.ts +0 -11
- package/dist/components/kritzel-control-text-config.js +0 -1
- package/dist/components/p-BXaWhpO2.js +0 -1
- package/dist/components/p-BtuXeItZ.js +0 -1
- package/dist/components/p-C-d2IH4v.js +0 -1
- package/dist/components/p-C3UriJh7.js +0 -1
- package/dist/components/p-CF5L2Gdl.js +0 -1
- package/dist/components/p-CeKT_dTd.js +0 -1
- package/dist/components/p-Cp15toXH.js +0 -1
- package/dist/components/p-D4n7UbGY.js +0 -1
- package/dist/components/p-Du1vxHy8.js +0 -1
- package/dist/components/p-exWKDgI8.js +0 -9
- package/dist/stencil/p-BqhmuUH2.js +0 -2
- package/dist/stencil/p-Cw8mdDpt.js +0 -1
- package/dist/stencil/p-d21a009f.entry.js +0 -9
- package/dist/types/components/ui/kritzel-control-brush-config/kritzel-control-brush-config.d.ts +0 -15
- package/dist/types/components/ui/kritzel-control-text-config/kritzel-control-text-config.d.ts +0 -12
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import{r as t,h as e,H as i,c as n,g as r}from"./p-OLdaFN6W.js";import{Z as o,_ as s,$ as a,a0 as l,a1 as c,R as h,J as u,L as f,P as d,a2 as p,a3 as b,a4 as v,W as g,Y as k,M as y,X as m,N as w,U as x,a5 as z,a6 as C,a7 as S,a8 as M,a9 as I,aa as j,I as _,F as T,K as A,G as F,E,ab as O,ac as D,ad as W,Q as R,T as $,V as P,ae as L,af as U}from"./p-DLpNl6R9.js";var V="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};const K=class{constructor(e){t(this,e)}value;size=24;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.isLightColor(this.value);return e(i,{key:"5d9fa3dd0fa30dd8e6589459efafd63a71c317bb"},e("div",{key:"fe35227ea4636234de62b7eec42f11a58ca788bb",class:"checkerboard-bg",style:{width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",display:"inline-block",position:"relative"}},e("div",{key:"37f99d30a6f238e9e1f9976d2419364d2f83bbd8",class:{"color-circle":!0,white:t},style:{backgroundColor:this.value,width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",position:"absolute",top:"0",left:"0",display:"inline-block"}})))}};K.style=":host{display:flex}.checkerboard-bg{background:repeating-conic-gradient(#ccc 0% 25%, #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)}";class N{static applyOpacity(t,e){if(e>=1)return t;const i=t.startsWith("#")?t.slice(1):t;let n,r,o;if(3===i.length)n=parseInt(i[0]+i[0],16),r=parseInt(i[1]+i[1],16),o=parseInt(i[2]+i[2],16);else{if(6!==i.length)return t;n=parseInt(i.substring(0,2),16),r=parseInt(i.substring(2,4),16),o=parseInt(i.substring(4,6),16)}return isNaN(n)||isNaN(r)||isNaN(o)?t:`rgba(${n}, ${r}, ${o}, ${e})`}}const B=class{constructor(e){t(this,e),this.colorChange=n(this,"colorChange")}colors=[];selectedColor=null;isExpanded=!1;isOpaque=!1;opacity=1;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"}render(){const t=this.isExpanded?this.colors:this.colors.slice(0,6),n=this.isExpanded?this.calculateHeight():"32px";return e(i,{key:"5d7861ab8510af002d4f0f4171a38bf4624d70cb"},e("div",{key:"d8b65ecf9aa36e0a158170e12aec27d112f5e0de",class:{"color-grid":!0,expanded:this.isExpanded},style:{height:n}},t.map((t=>e("div",{tabIndex:0,class:{"color-container":!0,selected:this.selectedColor===t},onClick:()=>this.handleColorClick(t),onKeyDown:e=>this.handleKeyDown(e,t)},e("kritzel-color",{value:N.applyOpacity(t,this.opacity)}))))))}};B.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-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 H=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=[];handleOutsideClick(t){t.composedPath().includes(this.host)||this.close.emit()}componentWillLoad(){this.updateMenuItems()}componentDidLoad(){this.adjustPositionToViewport()}componentDidUpdate(){this.adjustPositionToViewport()}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`)}handleItemClick(t,e){e||this.actionSelected.emit(t)}async updateMenuItems(){const t=[];for(const e of this.items)if(await this.evaluateProperty(e.visible,!0)){const i=await this.evaluateProperty(e.disabled,!1);t.push({item:e,isDisabled:i})}this.processedItems=t}async evaluateProperty(t,e){return"boolean"==typeof t?t:"function"==typeof t?await Promise.resolve(t(null,this.objects)):e}render(){return e(i,{key:"f57688eb3c0921c0a2d85cab7bbe9273ecf4fdab"},e("div",{key:"8082568dd09f4ad5ef07885308d752e8c924f02e",class:"menu-container"},this.processedItems.map((({item:t,isDisabled:i},n)=>e("button",{key:`${t.label}-${n}`,class:{"menu-item":!0,disabled:i},onClick:()=>this.handleItemClick(t,i),disabled:i},t.icon&&e("kritzel-icon",{name:t.icon,size:16}),e("span",{class:"label"},t.label))))))}static get watchers(){return{items:[{onItemsChanged:0}]}}};H.style=":host{display:block}.menu-container{display:flex;flex-direction:column;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)}.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-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}.menu-item:not(.disabled):hover{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 kritzel-icon{opacity:0.8;flex-shrink:0}.menu-item.disabled kritzel-icon{opacity:0.4}.label{flex-grow:1}";class Y extends o{shapeType=s.Rectangle;fillColor="transparent";strokeColor="#000000";strokeWidth=4;opacity=1;fontFamily="Arial";fontSize=16;fontColor="#000000";palette=["#000000","#FFFFFF","#FF0000","#00FF00","#0000FF","#FFFF00","#FF00FF","#00FFFF","#808080","#C0C0C0","#800000","#008000","#000080","#808000","#800080"];startX=0;startY=0;isDrawing=!1;currentShape=null;constructor(t){super(t)}handlePointerDown(t){if(t.cancelable&&t.preventDefault(),"mouse"===t.pointerType){const e=t.composedPath().slice(1).find((t=>t.classList&&t.classList.contains("object"))),i=this._core.findObjectById(e?.id),n=this._core.store.activeShape;if(null===n&&i instanceof a)return void i.edit(t);if(null!==n&&i instanceof a)return n.save(),void i.edit(t);if(null!==n&&i instanceof a==0)return this._core.resetActiveShape(),void this._core.store.setState("activeTool",l.getTool("selection"));if(!1===c.isLeftClick(t))return;this.startDrawing(t.clientX,t.clientY)}if("touch"===t.pointerType){const e=Array.from(this._core.store.state.pointers.values()),i=t.composedPath().slice(1).find((t=>t.classList&&t.classList.contains("object"))),n=this._core.findObjectById(i?.id),r=this._core.store.activeShape;if(null===r&&n instanceof a)return void n.edit(t);if(null!==r&&n instanceof a)return r.save(),void n.edit(t);if(null!==r&&n instanceof a==0)return this._core.resetActiveShape(),void this._core.store.setState("activeTool",l.getTool("selection"));if(e.length>1)return;const o=Math.round(e[0].clientX),s=Math.round(e[0].clientY);this.startDrawing(o,s)}}handlePointerMove(t){if(t.cancelable&&t.preventDefault(),this.isDrawing&&this.currentShape&&("mouse"===t.pointerType&&this.updateShapeSize(t.clientX,t.clientY),"touch"===t.pointerType)){const t=Array.from(this._core.store.state.pointers.values());if(1===t.length){const e=Math.round(t[0].clientX),i=Math.round(t[0].clientY);this.updateShapeSize(e,i)}}}handlePointerUp(t){t.cancelable&&t.preventDefault(),this.isDrawing&&this.currentShape&&this.finishDrawing()}startDrawing(t,e){this.startX=t-this._core.store.offsetX,this.startY=e-this._core.store.offsetY,this.isDrawing=!0,this.currentShape=a.create(this._core,{x:this.startX,y:this.startY,translateX:-this._core.store.state.translateX,translateY:-this._core.store.state.translateY,width:1,height:1,shapeType:this.shapeType,fillColor:this.fillColor,strokeColor:this.strokeColor,strokeWidth:this.strokeWidth,opacity:this.opacity,fontSize:this.fontSize,fontFamily:this.fontFamily,fontColor:this.fontColor}),this._core.store.state.objects.insert(this.currentShape),this._core.rerender()}updateShapeSize(t,e){if(!this.currentShape)return;const i=t-this._core.store.offsetX,n=e-this._core.store.offsetY,r=Math.min(this.startX,i),o=Math.min(this.startY,n),s=Math.abs(i-this.startX),a=Math.abs(n-this.startY);this.currentShape.x=r,this.currentShape.y=o,this.currentShape.width=Math.max(1,s),this.currentShape.height=Math.max(1,a),this.currentShape.translateX=-this._core.store.state.translateX,this.currentShape.translateY=-this._core.store.state.translateY,this.currentShape.updateDimensions(),this._core.store.state.objects.update(this.currentShape)}finishDrawing(){if(this.currentShape){if(this.currentShape.width<10&&this.currentShape.height<10){const t=this.currentShape.id;this._core.store.state.objects.remove((e=>e.id===t))}else this.currentShape.zIndex=this._core.store.currentZIndex,this._core.store.state.objects.update(this.currentShape),this._core.engine.emitObjectsChange(),this._core.selectObjects([this.currentShape]),this._core.store.setState("activeTool",l.getTool("selection"));this.isDrawing=!1,this.currentShape=null,this._core.rerender()}}}class X{static getToolConfig(t){return t instanceof h?t.getToolConfig():t instanceof u?{type:"brush",colorProperty:"color",sizeProperty:"size",opacityProperty:"opacity",paletteSource:"palettes",controls:[{type:"stroke-size",propertyName:"size"}]}:t instanceof f?{type:"line",colorProperty:"color",sizeProperty:"size",opacityProperty:"opacity",paletteSource:"palette",controls:[{type:"stroke-size",propertyName:"size"},{type:"line-endings",propertyName:"arrows",additionalProps:{}}]}:t instanceof Y?{type:"shape",colorProperty:"strokeColor",sizeProperty:"strokeWidth",opacityProperty:"opacity",paletteSource:"palette",controls:[{type:"stroke-size",propertyName:"strokeWidth"},{type:"shape-fill",propertyName:"fillColor",additionalProps:{}}]}:t instanceof d?{type:"text",colorProperty:"fontColor",sizeProperty:"fontSize",opacityProperty:"opacity",paletteSource:"palette",controls:[{type:"font-size",propertyName:"fontSize",additionalProps:{}},{type:"font-family",propertyName:"fontFamily"}]}:null}}const q=class{constructor(e){t(this,e),this.isControlsReady=n(this,"isControlsReady")}get host(){return r(this)}controls=[];activeControl=null;isUtilityPanelVisible=!0;undoState=null;isControlsReady;firstConfig=null;isTooltipVisible=!1;isTouchDevice=p.isTouchDevice();selectedSubOptions=new Map;openSubMenuControl=null;canScrollLeft=!1;canScrollRight=!1;displayValues=null;handleDocumentClick(t){this.kritzelEngine&&(t.composedPath().some((t=>{const e=t;return!!e.tagName&&("kritzel-tooltip"===e.tagName.toLowerCase()||e.classList?.contains("kritzel-tooltip"))}))||(this.isTooltipVisible=!1))}handleKeyDown(t){"Escape"===t.key&&(t.preventDefault(),this.closeTooltip(),this.openSubMenuControl=null,this.kritzelEngine?.enable())}async handleActiveToolChange(t){this.activeControl=this.controls.find((e=>e.tool===t.detail))||null,this.activeControl?.tool&&this.updateDisplayValues(this.activeControl.tool)}handleSelectionChange(){this.activeControl?.tool instanceof h&&this.updateDisplayValues(this.activeControl.tool)}async closeTooltip(){this.isTooltipVisible=!1}kritzelEngine=null;tooltipRef=null;toolsScrollRef=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=X.getToolConfig(t);if(!e)return void(this.displayValues=null);const i=t[e.sizeProperty],n={color:N.applyOpacity(t[e.colorProperty],t[e.opacityProperty]??1),size:i};t instanceof d&&(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()}updateScrollIndicators(){if(!this.toolsScrollRef)return;const{scrollLeft:t,scrollWidth:e,clientWidth:i}=this.toolsScrollRef;this.canScrollLeft=t>2,this.canScrollRight=t+i<e-2}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.")}async initializeTools(){for(const t of this.controls)"tool"===t.type&&t.tool&&(t.tool=await this.kritzelEngine.registerTool(t.name,t.tool,t.config)),"tool"===t.type&&t.isDefault&&t.tool&&(await this.kritzelEngine.changeActiveTool(t.tool),this.activeControl=t,this.updateDisplayValues(t.tool)),"config"===t.type&&(null===this.firstConfig?this.firstConfig=t:console.warn("Only one config control is allowed. The first one will be used."))}async handleControlClick(t){this.activeControl=t,"tool"===this.activeControl.type&&(this.updateDisplayValues(this.activeControl.tool),await this.kritzelEngine.changeActiveTool(this.activeControl.tool))}handleConfigClick(t){t.stopPropagation(),this.isTooltipVisible=!this.isTooltipVisible,this.isTooltipVisible?this.kritzelEngine?.disable():this.kritzelEngine?.enable(),setTimeout((()=>{this.tooltipRef?.focusContent()}),100)}async handleToolChange(t){this.activeControl={...this.activeControl,tool:t.detail},await this.kritzelEngine.changeActiveTool(this.activeControl.tool)}handleTooltipClosed(){this.isTooltipVisible=!1,this.kritzelEngine?.enable()}getSelectedSubOption(t){if(t.subOptions?.length)return this.selectedSubOptions.get(t.name)||t.subOptions[0]}toggleSubMenu(t,e){t.stopPropagation(),this.openSubMenuControl=this.openSubMenuControl?.name===e.name?null:e}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.openSubMenuControl=null,await this.handleControlClick(t)}render(){const t=this.activeControl?.tool instanceof u||this.activeControl?.tool instanceof d||this.activeControl?.tool instanceof f||this.activeControl?.tool instanceof Y||this.activeControl?.tool instanceof h&&this.activeControl.tool.hasSelection(),n=this.controls.filter((t=>"tool"===t.type)),r=this.controls.find((t=>"config"===t.type&&t.name===this.firstConfig?.name));return e(i,{key:"db2a043a2a32d10d7f27c01123da63115781941c",class:{mobile:this.isTouchDevice}},this.isUtilityPanelVisible&&e("kritzel-utility-panel",{key:"09104351c9f178b8d0dbc0636cf9cc230b2bca53",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:"22f95249dddcf05a75425f96ab5381fe8a4824d4",class:"kritzel-controls"},e("div",{key:"fcca99e2a56f401b28205b8806497c46b7f9a94b",class:{"scroll-indicator-left":!0,visible:this.canScrollLeft}}),e("div",{key:"145802334aa83b0190a70dd2a3aca4389cb8b88c",class:"kritzel-tools-scroll",ref:t=>{this.toolsScrollRef=t,t&&this.updateScrollIndicators()},onScroll:this.handleToolsScroll},n.map((t=>{if(t.subOptions?.length){const i=this.getSelectedSubOption(t),n=this.activeControl?.name===t.name,r=this.openSubMenuControl?.name===t.name;return e("div",{class:{"kritzel-control-split":!0,selected:n},key:t.name,ref:e=>{e&&(t._anchorRef=e)}},e("button",{class:"kritzel-control-main",onClick:()=>this.handleControlClick(t),title:i?.label},e("kritzel-icon",{name:i?.icon||t.icon})),e("button",{class:{"kritzel-control-dropdown":!0,visible:n},onClick:e=>this.toggleSubMenu(e,t),"aria-label":"Select shape type","aria-expanded":r?"true":"false",tabIndex:n?0:-1},e("kritzel-icon",{name:"chevron-down",size:12})),e("kritzel-tooltip",{isVisible:r,anchorElement:t._anchorRef,onTooltipClosed:()=>{this.openSubMenuControl=null}},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,onClick:()=>this.selectSubOption(t,n)},e("kritzel-icon",{name:n.icon,size:20}),e("span",null,n.label)))))))}return e("button",{class:{"kritzel-control":!0,selected:this.activeControl?.name===t?.name},key:t.name,onClick:()=>this.handleControlClick?.(t)},e("kritzel-icon",{name:t.icon}))}))),e("div",{key:"43e7811998855f57097b743998363fd6866bfb29",class:{"scroll-indicator-right":!0,visible:this.canScrollRight}}),r&&this.activeControl&&e("div",{class:{"kritzel-config-container":!0,visible:t},key:r.name},e("div",{key:"c1ff98f16c41d45666915b96931f23e0cf12ed6f",class:"config-gradient-left"}),e("kritzel-tooltip",{key:"eac68125daa371d751b65ac561e33848cad3bd69",ref:t=>this.tooltipRef=t,isVisible:this.isTooltipVisible,anchorElement:this.host.shadowRoot?.querySelector(".kritzel-config-container"),onTooltipClosed:()=>this.handleTooltipClosed()},e("kritzel-tool-config",{key:"83ed025386d9d1b3ec8b52e99930645c4c35b20a",tool:this.activeControl.tool,onToolChange:t=>this.handleToolChange?.(t),onDisplayValuesChange:this.handleDisplayValuesChange,style:{width:"100%",height:"100%"}})),e("div",{key:"cf18abb832c10826685fb41794a42b8b6a6a7486",tabIndex:t?0:-1,class:"kritzel-config",onClick:t=>this.handleConfigClick?.(t),onKeyDown:t=>{"Enter"===t.key&&this.handleConfigClick?.(t)},style:{cursor:"pointer"}},this.activeControl.tool instanceof d&&this.displayValues?e("div",{class:"font-container"},e("kritzel-font",{fontFamily:this.displayValues.fontFamily,size:this.displayValues.size,color:this.displayValues.color})):this.displayValues&&e("div",{class:"color-container"},e("kritzel-color",{value:this.displayValues.color,size:this.displayValues.size,style:{borderRadius:"50%",border:"none"}}))))))}static get assetsDirs(){return["../assets"]}};q.style=":host{display:flex;flex-direction:column;user-select:none;max-width:calc(100vw - 28px)}: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:10000;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;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:24px;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-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-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-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-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-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:-16px;width:16px;background:linear-gradient(to right, transparent, var(--kritzel-controls-background-color, #ffffff));pointer-events:none;z-index:1}.kritzel-config{display:flex;justify-content:center;align-items:center;cursor:var(--kritzel-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-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-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 G=class{constructor(e){t(this,e)}core;cursorTrailPoints=[];isLeftButtonDown=!1;handleMouseDown(t){"mouse"===t.pointerType&&t.button===b.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===b.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:"65563f09091c0014046b65d424b4cecf89d4a407"},this.cursorTrailPoints.length>1&&e("svg",{key:"9634426566a9cd69cbc63f419726af16826e45f9",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"})}))))}};G.style=":host{display:block;position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:9000}";const Z=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={};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()}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;if(this.options&&this.options.length>0){const t=this.options.some((t=>t.value===i));i&&t||(i=this.options[0].value)}else 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.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:"29d076eb2ef76527c0930ab82ace0d05c896ab6c"},e("div",{key:"1afac5cc0b7f408849670b8cb62fe0bd0f3b27f1",class:"dropdown-wrapper",ref:t=>this.wrapperElement=t},e("slot",{key:"3cfcf787c3b3eedbd6bf30c7506a0a4912429672",name:"prefix",ref:t=>this.prefixSlotElement=t,onSlotchange:this.evaluatePrefixContent}),e("div",{key:"b88120ed3e44871220e6ba61e8bef457651a2086",class:"dropdown-container",style:{width:this.width}},e("button",{key:"79082189066f3d0b4f5797420ec222847792fe52",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:"a490bb6689ec1820144fe82f6833bee82e6ead0e",class:"dropdown-trigger-label"},this.getSelectedLabel()),e("span",{key:"8bd7768f6fdd3c507bbca54d7d135adabe04901f",class:"dropdown-trigger-arrow","aria-hidden":"true"},e("svg",{key:"e1b854d2c93e3067181108f8d782e1393ddb615c",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:"3622cbf8964f4e50aa55be5209240dfd252f1d84",points:"6 9 12 15 18 9"}))))),e("slot",{key:"b91317736904cbeee0f87058b822bd77c6b163ca",name:"suffix",ref:t=>this.suffixSlotElement=t,onSlotchange:this.evaluateSuffixContent}),e("ul",{key:"0ca8690345974e9b7ad184f4c7ab7cf5367b183c",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}]}}};Z.style=":host{display:inline-flex;vertical-align:middle;width:100%;position:relative}.dropdown-wrapper{display:flex;align-items:center;border:1px solid #333333;border-radius:var(--kritzel-controls-control-border-radius, 12px);overflow:visible;height:32px;width:100%;position:relative}.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-controls-control-border-radius, 12px);border:none;background-color:#fff;cursor:var(--kritzel-pointer-cursor, pointer);outline:none;font-size:inherit;font-family:inherit;color:var(--kritzel-controls-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 #333333;border-top-right-radius:0;border-bottom-right-radius:0}.dropdown-trigger.has-prefix-border{border-left:1px solid #333333;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:#fff;border:1px solid #333333;border-radius:var(--kritzel-controls-control-border-radius, 12px);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:visible;transform:translateY(0)}.dropdown-menu.open-up{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-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-bg, #f0f0f0)}.dropdown-option.is-selected{font-weight:600;background-color:var(--kritzel-dropdown-selected-bg, #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:#ebebeb transparent;scrollbar-width:thin}::slotted(*){height:100%;box-sizing:border-box}";const J={shapeType:s.Rectangle,fillColor:"transparent",strokeColor:"#000000",strokeWidth:4,fontColor:"#000000",fontSize:16,fontFamily:"Arial",palette:[...v]},Q=1e3,tt=1e-4,et=class{constructor(e){t(this,e),this.isReady=n(this,"isReady"),this.objectsChange=n(this,"objectsChange"),this.undoStateChange=n(this,"undoStateChange")}get host(){return r(this)}scaleMax=Q;scaleMin=tt;controls=[{name:"selection",type:"tool",isDefault:!0,tool:h,icon:"cursor"},{name:"brush",type:"tool",tool:u,icon:"pen",config:g},{name:"line",type:"tool",tool:f,icon:"arrow",config:k},{name:"eraser",type:"tool",tool:y,icon:"eraser"},{name:"text",type:"tool",tool:d,icon:"type",config:m},{name:"shape",type:"tool",tool:Y,icon:"shape-rectangle",config:J,subOptions:[{id:"rectangle",icon:"shape-rectangle",label:"Rectangle",value:s.Rectangle,toolProperty:"shapeType"},{id:"ellipse",icon:"shape-ellipse",label:"Ellipse",value:s.Ellipse,toolProperty:"shapeType"},{id:"triangle",icon:"shape-triangle",label:"Triangle",value:s.Triangle,toolProperty:"shapeType"}]},{name:"image",type:"tool",tool:w,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",action:()=>this.selectAllObjectsInViewport()}];objectContextMenuItems=[{label:"Copy",icon:"copy",action:()=>this.engineRef.copy()},{label:"Paste",icon:"paste",disabled:async()=>0===(await this.engineRef.getCopiedObjects()).length,action:t=>this.engineRef.paste(t.x,t.y)},{label:"Delete",icon:"delete",action:()=>this.engineRef.delete()},{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:"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()}];customSvgIcons={};isControlsVisible=!0;isUtilityPanelVisible=!0;syncConfig;isReady;objectsChange;undoStateChange;isEngineReady=!1;isControlsReady=!1;isWorkspaceManagerReady=!1;workspaces=[];activeWorkspace;isVirtualKeyboardOpen=!1;undoState=null;onIsEngineReady(t){t&&this.isControlsReady&&this.checkIsReady()}onIsControlsReady(t){t&&this.isEngineReady&&this.checkIsReady()}onWorkspacesChange(t){if(this.activeWorkspace){const e=t.find((t=>t.id===this.activeWorkspace.id));e&&e!==this.activeWorkspace&&(this.activeWorkspace=e)}}onTouchStart(t){t.cancelable&&t.preventDefault()}async getObjectById(t){return this.engineRef.getObjectById(t)}async addObject(t){return this.engineRef.addObject(t)}async updateObject(t,e){return this.engineRef.updateObject(t,e)}async removeObject(t){return this.engineRef.removeObject(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 createWorkspace(t,e){const i=new x(`workspace-${Date.now()}`,t,e);return this.engineRef.createWorkspace(i)}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()}engineRef;controlsRef;splitButtonRef;componentDidLoad(){this.registerCustomSvgIcons(),this.listenForMobileKeyboard(),this.setOsSpecificCssVariables()}async checkIsReady(){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.isReady.emit(this.host)}onEngineReady(t){this.isEngineReady=!0,this.activeWorkspace=t.detail.activeWorkspace,this.workspaces=t.detail.workspaces}handleWorkspacesChange(t){this.workspaces=t.detail}handleObjectsChange(t){this.objectsChange.emit(t.detail)}handleUndoStateChange(t){this.undoStateChange.emit(t.detail),this.undoState=t.detail}registerCustomSvgIcons(){for(const[t,e]of Object.entries(this.customSvgIcons))z.register(t,e)}listenForMobileKeyboard(){C.onKeyboardVisibleChanged((t=>{this.isVirtualKeyboardOpen=t}))}setOsSpecificCssVariables(){switch(p.detectOS()){case"iOS":this.host.style.setProperty("--kritzel-editor-workspace-manager-top","14px"),this.host.style.setProperty("--kritzel-editor-workspace-manager-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-workspace-manager-top","14px"),this.host.style.setProperty("--kritzel-editor-workspace-manager-left","14px"),this.host.style.setProperty("--kritzel-editor-controls-bottom","24px");break;default:this.host.style.setProperty("--kritzel-editor-workspace-manager-top","14px"),this.host.style.setProperty("--kritzel-editor-workspace-manager-left","14px"),this.host.style.setProperty("--kritzel-editor-controls-bottom","14px")}}render(){return e(i,{key:"46500c70e4c5321532eddc7f6aa96210c0fe73c8"},e("kritzel-workspace-manager",{key:"70f780b4d42281c6c37b3fd16acab1541cc84ee1",workspaces:this.workspaces,activeWorkspace:this.activeWorkspace,onWorkspaceChange:t=>this.activeWorkspace=t.detail,onIsWorkspaceManagerReady:()=>this.isWorkspaceManagerReady=!0}),e("kritzel-engine",{key:"a4906f8ac2d42126a4e55ad7c16697aca25763fb",ref:t=>this.engineRef=t,workspace:this.activeWorkspace,syncConfig:this.syncConfig,scaleMax:this.scaleMax,scaleMin:this.scaleMin,globalContextMenuItems:this.globalContextMenuItems,objectContextMenuItems:this.objectContextMenuItems,onIsEngineReady:t=>this.onEngineReady(t),onWorkspacesChange:t=>this.handleWorkspacesChange(t),onObjectsChange:t=>this.handleObjectsChange(t),onUndoStateChange:t=>this.handleUndoStateChange(t)}),e("kritzel-controls",{key:"4d08c06fa2c6e4f5c3c75c5e5a60bddb61083b98",class:{"keyboard-open":this.isVirtualKeyboardOpen},style:{display:this.isControlsVisible?"flex":"none"},ref:t=>this.controlsRef=t,controls:this.controls,isUtilityPanelVisible:this.isUtilityPanelVisible,undoState:this.undoState,onIsControlsReady:()=>this.isControlsReady=!0}))}static get watchers(){return{isEngineReady:[{onIsEngineReady:0}],isControlsReady:[{onIsControlsReady:0}],workspaces:[{onWorkspacesChange:0}]}}};et.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}kritzel-workspace-manager{position:absolute;top:var(--kritzel-editor-workspace-manager-top, 14px);left:var(--kritzel-editor-workspace-manager-left, 14px)}kritzel-controls{position:absolute;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%))}";var it,nt,rt,ot={exports:{}},st=(it||(it=1,nt=ot,rt=ot.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]",f="[object Array]",d="[object Boolean]",p="[object Date]",b="[object Error]",v="[object Function]",g="[object GeneratorFunction]",k="[object Map]",y="[object Number]",m="[object Object]",w="[object Promise]",x="[object RegExp]",z="[object Set]",C="[object String]",S="[object Symbol]",M="[object WeakMap]",I="[object ArrayBuffer]",j="[object DataView]",_="[object Float32Array]",T="[object Float64Array]",A="[object Int8Array]",F="[object Int16Array]",E="[object Int32Array]",O="[object Uint8Array]",D="[object Uint8ClampedArray]",W="[object Uint16Array]",R="[object Uint32Array]",$=/\b__p \+= '';/g,P=/\b(__p \+=) '' \+/g,L=/(__e\(.*?\)|\b__t\)) \+\n'';/g,U=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>"']/g,N=RegExp(U.source),B=RegExp(K.source),H=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,X=/<%=([\s\S]+?)%>/g,q=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,G=/^\w*$/,Z=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,J=/[\\^$.*+?()[\]{}|]/g,Q=RegExp(J.source),tt=/^\s+/,et=/\s/,it=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,ot=/\{\n\/\* \[wrapped with (.+)\] \*/,st=/,? & /,at=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,lt=/[()=,{}\[\]\/\s]/,ct=/\\(\\)?/g,ht=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ut=/\w*$/,ft=/^[-+]0x[0-9a-f]+$/i,dt=/^0b[01]+$/i,pt=/^\[object .+?Constructor\]$/,bt=/^0o[0-7]+$/i,vt=/^(?:0|[1-9]\d*)$/,gt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,kt=/($^)/,yt=/['\n\r\u2028\u2029\\]/g,mt="\\ud800-\\udfff",wt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",xt="\\u2700-\\u27bf",zt="a-z\\xdf-\\xf6\\xf8-\\xff",Ct="A-Z\\xc0-\\xd6\\xd8-\\xde",St="\\ufe0e\\ufe0f",Mt="\\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",It="["+mt+"]",jt="["+Mt+"]",_t="["+wt+"]",Tt="\\d+",At="["+xt+"]",Ft="["+zt+"]",Et="[^"+mt+Mt+Tt+xt+zt+Ct+"]",Ot="\\ud83c[\\udffb-\\udfff]",Dt="[^"+mt+"]",Wt="(?:\\ud83c[\\udde6-\\uddff]){2}",Rt="[\\ud800-\\udbff][\\udc00-\\udfff]",$t="["+Ct+"]",Pt="\\u200d",Lt="(?:"+Ft+"|"+Et+")",Ut="(?:"+$t+"|"+Et+")",Vt="(?:['’](?:d|ll|m|re|s|t|ve))?",Kt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Nt="(?:"+_t+"|"+Ot+")?",Bt="["+St+"]?",Ht=Bt+Nt+"(?:"+Pt+"(?:"+[Dt,Wt,Rt].join("|")+")"+Bt+Nt+")*",Yt="(?:"+[At,Wt,Rt].join("|")+")"+Ht,Xt="(?:"+[Dt+_t+"?",_t,Wt,Rt,It].join("|")+")",qt=RegExp("['’]","g"),Gt=RegExp(_t,"g"),Zt=RegExp(Ot+"(?="+Ot+")|"+Xt+Ht,"g"),Jt=RegExp([$t+"?"+Ft+"+"+Vt+"(?="+[jt,$t,"$"].join("|")+")",Ut+"+"+Kt+"(?="+[jt,$t+Lt,"$"].join("|")+")",$t+"?"+Lt+"+"+Vt,$t+"+"+Kt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Tt,Yt].join("|"),"g"),Qt=RegExp("["+Pt+mt+wt+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[F]=ne[E]=ne[O]=ne[D]=ne[W]=ne[R]=!0,ne[u]=ne[f]=ne[I]=ne[d]=ne[j]=ne[p]=ne[b]=ne[v]=ne[k]=ne[y]=ne[m]=ne[x]=ne[z]=ne[C]=ne[M]=!1;var re={};re[u]=re[f]=re[I]=re[j]=re[d]=re[p]=re[_]=re[T]=re[A]=re[F]=re[E]=re[k]=re[y]=re[m]=re[x]=re[z]=re[C]=re[S]=re[O]=re[D]=re[W]=re[R]=!0,re[b]=re[v]=re[M]=!1;var oe={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},se=parseFloat,ae=parseInt,le="object"==typeof V&&V&&V.Object===Object&&V,ce="object"==typeof self&&self&&self.Object===Object&&self,he=le||ce||Function("return this")(),ue=rt&&!rt.nodeType&&rt,fe=ue&&nt&&!nt.nodeType&&nt,de=fe&&fe.exports===ue,pe=de&&le.process,be=function(){try{return fe&&fe.require&&fe.require("util").types||pe&&pe.binding&&pe.binding("util")}catch(t){}}(),ve=be&&be.isArrayBuffer,ge=be&&be.isDate,ke=be&&be.isMap,ye=be&&be.isRegExp,me=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 Me(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 Ie(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)&&$e(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 Fe(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 Ee(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 Oe(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 We(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 $e(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,Le,i)}function Pe(t,e,i,n){for(var r=i-1,o=t.length;++r<o;)if(n(t[r],e))return r;return-1}function Le(t){return t!=t}function Ue(t,e){var i=null==t?0:t.length;return i?Be(t,e)/i:l}function Ve(e){return function(i){return null==i?t:i[e]}}function Ke(e){return function(i){return null==e?t:e[i]}}function Ne(t,e,i,n,r){return r(t,(function(t,r,o){i=n?(n=!1,t):e(i,t,r,o)})),i}function Be(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 Ye(t){return t?t.slice(0,hi(t)+1).replace(tt,""):t}function Xe(t){return function(e){return t(e)}}function qe(t,e){return Te(e,(function(e){return t[e]}))}function Ge(t,e){return t.has(e)}function Ze(t,e){for(var i=-1,n=t.length;++i<n&&$e(e,t[i],0)>-1;);return i}function Je(t,e){for(var i=t.length;i--&&$e(e,t[i],0)>-1;);return i}var Qe=Ke({À:"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=Ke({"&":"&","<":"<",">":">",'"':""","'":"'"});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=Ke({"&":"&","<":"<",">":">",""":'"',"'":"'"}),fi=function V(et){var nt,rt=(et=null==et?he:fi.defaults(he.Object(),et,fi.pick(he,ee))).Array,mt=et.Date,wt=et.Error,xt=et.Function,zt=et.Math,Ct=et.Object,St=et.RegExp,Mt=et.String,It=et.TypeError,jt=rt.prototype,_t=Ct.prototype,Tt=et["__core-js_shared__"],At=xt.prototype.toString,Ft=_t.hasOwnProperty,Et=0,Ot=(nt=/[^.]+$/.exec(Tt&&Tt.keys&&Tt.keys.IE_PROTO||""))?"Symbol(src)_1."+nt:"",Dt=_t.toString,Wt=At.call(Ct),Rt=he._,$t=St("^"+At.call(Ft).replace(J,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Pt=de?et.Buffer:t,Lt=et.Symbol,Ut=et.Uint8Array,Vt=Pt?Pt.allocUnsafe:t,Kt=ri(Ct.getPrototypeOf,Ct),Nt=Ct.create,Bt=_t.propertyIsEnumerable,Ht=jt.splice,Yt=Lt?Lt.isConcatSpreadable:t,Xt=Lt?Lt.iterator:t,Zt=Lt?Lt.toStringTag:t,Qt=function(){try{var t=ao(Ct,"defineProperty");return t({},"",{}),t}catch(t){}}(),oe=et.clearTimeout!==he.clearTimeout&&et.clearTimeout,le=mt&&mt.now!==he.Date.now&&mt.now,ce=et.setTimeout!==he.setTimeout&&et.setTimeout,ue=zt.ceil,fe=zt.floor,pe=Ct.getOwnPropertySymbols,be=Pt?Pt.isBuffer:t,De=et.isFinite,Ke=jt.join,di=ri(Ct.keys,Ct),pi=zt.max,bi=zt.min,vi=mt.now,gi=et.parseInt,ki=zt.random,yi=jt.reverse,mi=ao(et,"DataView"),wi=ao(et,"Map"),xi=ao(et,"Promise"),zi=ao(et,"Set"),Ci=ao(et,"WeakMap"),Si=ao(Ct,"create"),Mi=Ci&&new Ci,Ii={},ji=Wo(mi),_i=Wo(wi),Ti=Wo(xi),Ai=Wo(zi),Fi=Wo(Ci),Ei=Lt?Lt.prototype:t,Oi=Ei?Ei.valueOf:t,Di=Ei?Ei.toString:t;function Wi(t){if(Qs(t)&&!Vs(t)&&!(t instanceof Li)){if(t instanceof Pi)return t;if(Ft.call(t,"__wrapped__"))return Ro(t)}return new Pi(t)}var Ri=function(){function e(){}return function(i){if(!Js(i))return{};if(Nt)return Nt(i);e.prototype=i;var n=new e;return e.prototype=t,n}}();function $i(){}function Pi(e,i){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!i,this.__index__=0,this.__values__=t}function Li(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=c,this.__views__=[]}function Ui(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 Ki(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.__data__=new Ki;++e<i;)this.add(t[e])}function Bi(t){var e=this.__data__=new Vi(t);this.size=e.size}function Hi(t,e){var i=Vs(t),n=!i&&Us(t),r=!i&&!n&&Hs(t),o=!i&&!n&&!r&&aa(t),s=i||n||r||o,a=s?He(t.length,Mt):[],l=a.length;for(var c in t)!e&&!Ft.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 Yi(e){var i=e.length;return i?e[Nn(0,i-1)]:t}function Xi(t,e){return Ao(Sr(t),rn(e,0,t.length))}function qi(t){return Ao(Sr(t))}function Gi(e,i,n){(n!==t&&!$s(e[i],n)||n===t&&!(i in e))&&en(e,i,n)}function Zi(e,i,n){var r=e[i];Ft.call(e,i)&&$s(r,n)&&(n!==t||i in e)||en(e,i,n)}function Ji(t,e){for(var i=t.length;i--;)if($s(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&&Mr(e,_a(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=rt(r),s=null==e;++n<r;)o[n]=s?t:Ca(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(!Js(e))return e;var f=Vs(e);if(f){if(a=function(t){var e=t.length,i=new t.constructor(e);return e&&"string"==typeof t[0]&&Ft.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==v||b==g;if(Hs(e))return yr(e,l);if(b==m||b==u||w&&!o){if(a=c||w?{}:fo(e),!l)return c?function(t,e){return Mr(t,co(t),e)}(e,function(t,e){return t&&Mr(e,Ta(e),t)}(a,e)):function(t,e){return Mr(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 I:return mr(t);case d:case p:return new n(+t);case j:return function(t,e){var i=e?mr(t.buffer):t.buffer;return new t.constructor(i,t.byteOffset,t.byteLength)}(t,i);case _:case T:case A:case F:case E:case O:case D:case W:case R:return wr(t,i);case k:return new n;case y:case C:return new n(t);case x:return function(t){var e=new t.constructor(t.source,ut.exec(t));return e.lastIndex=t.lastIndex,e}(t);case z:return new n;case S:return Oi?Ct(Oi.call(t)):{}}}(e,b,l)}}s||(s=new Bi);var M=s.get(e);if(M)return M;s.set(e,a),ra(e)?e.forEach((function(t){a.add(on(t,i,n,t,e,s))})):ta(e)&&e.forEach((function(t,r){a.set(r,on(t,i,n,r,e,s))}));var $=f?t:(h?c?to:Qr:c?Ta:_a)(e);return Ce($||e,(function(t,r){$&&(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 It(e);return Io((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,Xe(i))),n?(o=_e,s=!1):e.length>=200&&(o=Ge,s=!1,e=new Ni(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 f=c;f--;)if(e[f]===u)continue t;l.push(h)}else o(e,u,n)||l.push(h)}return l}Wi.templateSettings={escape:H,evaluate:Y,interpolate:X,variable:"",imports:{_:Wi}},(Wi.prototype=$i.prototype).constructor=Wi,(Pi.prototype=Ri($i.prototype)).constructor=Pi,(Li.prototype=Ri($i.prototype)).constructor=Li,Ui.prototype.clear=function(){this.__data__=Si?Si(null):{},this.size=0},Ui.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},Ui.prototype.get=function(e){var n=this.__data__;if(Si){var r=n[e];return r===i?t:r}return Ft.call(n,e)?n[e]:t},Ui.prototype.has=function(e){var i=this.__data__;return Si?i[e]!==t:Ft.call(i,e)},Ui.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},Ki.prototype.clear=function(){this.size=0,this.__data__={hash:new Ui,map:new(wi||Vi),string:new Ui}},Ki.prototype.delete=function(t){var e=oo(this,t).delete(t);return this.size-=e?1:0,e},Ki.prototype.get=function(t){return oo(this,t).get(t)},Ki.prototype.has=function(t){return oo(this,t).has(t)},Ki.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},Ni.prototype.add=Ni.prototype.push=function(t){return this.__data__.set(t,i),this},Ni.prototype.has=function(t){return this.__data__.has(t)},Bi.prototype.clear=function(){this.__data__=new Vi,this.size=0},Bi.prototype.delete=function(t){var e=this.__data__,i=e.delete(t);return this.size=e.size,i},Bi.prototype.get=function(t){return this.__data__.get(t)},Bi.prototype.has=function(t){return this.__data__.has(t)},Bi.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 Ki(n)}return i.set(t,e),this.size=i.size,this};var cn=_r(gn),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 fn(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&&!sa(a):n(a,l)))var l=a,c=s}return c}function dn(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(),vn=Tr(!0);function gn(t,e){return t&&bn(t,e,_a)}function kn(t,e){return t&&vn(t,e,_a)}function yn(t,e){return Ie(e,(function(e){return qs(t[e])}))}function mn(e,i){for(var n=0,r=(i=br(i,e)).length;null!=e&&n<r;)e=e[Do(i[n++])];return n&&n==r?e:t}function wn(t,e,i){var n=e(t);return Vs(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=Ft.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&&Ft.call(t,e)}function Sn(t,e){return null!=t&&e in Ct(t)}function Mn(e,i,n){for(var r=n?_e:je,o=e[0].length,s=e.length,a=s,l=rt(s),c=1/0,h=[];a--;){var u=e[a];a&&i&&(u=Te(u,Xe(i))),c=bi(u.length,c),l[a]=!n&&(i||o>=120&&u.length>=120)?new Ni(a&&u):t}u=e[0];var f=-1,d=l[0];t:for(;++f<o&&h.length<c;){var p=u[f],b=i?i(p):p;if(p=n||0!==p?p:0,!(d?Ge(d,b):r(h,b,n))){for(a=s;--a;){var v=l[a];if(!(v?Ge(v,b):r(e[a],b,n)))continue t}d&&d.push(b),h.push(p)}}return h}function In(e,i,n){var r=null==(e=Co(e,i=br(i,e)))?e:e[Do(Xo(i))];return null==r?t:xe(r,e,n)}function jn(t){return Qs(t)&&xn(t)==u}function _n(e,i,n,r,o){return e===i||(null==e||null==i||!Qs(e)&&!Qs(i)?e!=e&&i!=i:function(e,i,n,r,o,s){var a=Vs(e),l=Vs(i),c=a?f:ho(e),h=l?f:ho(i),v=(c=c==u?m:c)==m,g=(h=h==u?m:h)==m,w=c==h;if(w&&Hs(e)){if(!Hs(i))return!1;a=!0,v=!1}if(w&&!v)return s||(s=new Bi),a||aa(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 I:return!(t.byteLength!=e.byteLength||!o(new Ut(t),new Ut(e)));case d:case p:case y:return $s(+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(Oi)return Oi.call(t)==Oi.call(e)}return!1}(e,i,c,n,r,o,s);if(!(1&n)){var M=v&&Ft.call(e,"__wrapped__"),_=g&&Ft.call(i,"__wrapped__");if(M||_){var T=M?e.value():e,A=_?i.value():i;return s||(s=new Bi),o(T,A,n,r,s)}}return!!w&&(s||(s=new Bi),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:Ft.call(i,u)))return!1}var f=s.get(e),d=s.get(i);if(f&&d)return f==i&&d==e;var p=!0;s.set(e,i),s.set(i,e);for(var b=a;++h<c;){var v=e[u=l[h]],g=i[u];if(r)var k=a?r(g,v,u,i,e,s):r(v,g,u,e,i,s);if(!(k===t?v===g||o(v,g,n,r,s):k)){p=!1;break}b||(b="constructor"==u)}if(p&&!b){var y=e.constructor,m=i.constructor;y==m||!("constructor"in e)||!("constructor"in i)||"function"==typeof y&&y instanceof y&&"function"==typeof m&&m instanceof m||(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 f=new Bi;if(r)var d=r(h,u,c,e,i,f);if(!(d===t?_n(u,h,3,r,f):d))return!1}}return!0}function An(t){return!(!Js(t)||(e=t,Ot&&Ot in e))&&(qs(t)?$t:pt).test(Wo(t));var e}function Fn(t){return"function"==typeof t?t:null==t?el:"object"==typeof t?Vs(t)?Rn(t[0],t[1]):Wn(t):hl(t)}function En(t){if(!mo(t))return di(t);var e=[];for(var i in Ct(t))Ft.call(t,i)&&"constructor"!=i&&e.push(i);return e}function On(t,e){return t<e}function Dn(t,e){var i=-1,n=Ns(t)?rt(t.length):[];return cn(t,(function(t,r,o){n[++i]=e(t,r,o)})),n}function Wn(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 go(e)&&wo(i)?xo(Do(e),i):function(n){var r=Ca(n,e);return r===t&&r===i?Sa(n,e):_n(i,r,3)}}function $n(e,i,n,r,o){e!==i&&bn(i,(function(s,a){if(o||(o=new Bi),Js(s))!function(e,i,n,r,o,s,a){var l=So(e,n),c=So(i,n),h=a.get(c);if(h)Gi(e,n,h);else{var u=s?s(l,c,n+"",e,i,a):t,f=u===t;if(f){var d=Vs(c),p=!d&&Hs(c),b=!d&&!p&&aa(c);u=c,d||p||b?Vs(l)?u=l:Bs(l)?u=Sr(l):p?(f=!1,u=yr(c,!0)):b?(f=!1,u=wr(c,!0)):u=[]:ia(c)||Us(c)?(u=l,Us(l)?u=ba(l):Js(l)&&!qs(l)||(u=fo(c))):f=!1}f&&(a.set(c,u),o(u,c,r,s,a),a.delete(c)),Gi(e,n,u)}}(e,i,a,n,$n,r,o);else{var l=r?r(So(e,a),s,a+"",e,i,o):t;l===t&&(l=s),Gi(e,a,l)}}),Ta)}function Pn(e,i){var n=e.length;if(n)return bo(i+=i<0?n:0,n)?e[i]:t}function Ln(t,e,i){e=e.length?Te(e,(function(t){return Vs(t)?function(e){return mn(e,1===t.length?t[0]:t)}:t})):[el];var n=-1;e=Te(e,Xe(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 Un(t,e,i){for(var n=-1,r=e.length,o={};++n<r;){var s=e[n],a=mn(t,s);i(a,s)&&qn(o,br(s,t),a)}return o}function Vn(t,e,i,n){var r=n?Pe:$e,o=-1,s=e.length,a=t;for(t===e&&(e=Sr(e)),i&&(a=Te(t,Xe(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 Kn(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 Nn(t,e){return t+fe(ki()*(e-t+1))}function Bn(t,e){var i="";if(!t||e<1||e>a)return i;do{e%2&&(i+=t),(e=fe(e/2))&&(t+=t)}while(e);return i}function Hn(t,e){return jo(zo(t,e,el),t+"")}function Yn(t){return Yi($a(t))}function Xn(t,e){var i=$a(t);return Ao(i,rn(e,0,i.length))}function qn(e,i,n,r){if(!Js(e))return e;for(var o=-1,s=(i=br(i,e)).length,a=s-1,l=e;null!=l&&++o<s;){var c=Do(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=Js(u)?u:bo(i[o+1])?[]:{})}Zi(l,c,h),l=l[c]}return e}var Gn=Mi?function(t,e){return Mi.set(t,e),t}:el,Zn=Qt?function(t,e){return Qt(t,"toString",{configurable:!0,enumerable:!1,value:Ja(e),writable:!0})}:el;function Jn(t){return Ao($a(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=rt(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&&!sa(s)&&(i?s<=e:s<e)?n=o+1:r=o}return r}return ir(t,e,el,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=sa(i),h=i===t;o<s;){var u=fe((o+s)/2),f=n(e[u]),d=f!==t,p=null===f,b=f==f,v=sa(f);if(a)var g=r||b;else g=h?b&&(r||d):l?b&&d&&(r||!p):c?b&&d&&!p&&(r||!v):!p&&!v&&(r?f<=i:f<i);g?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||!$s(a,l)){var l=a;o[r++]=0===s?0:s}}return o}function rr(t){return"number"==typeof t?t:sa(t)?l:+t}function or(t){if("string"==typeof t)return t;if(Vs(t))return Te(t,or)+"";if(sa(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:Br(t);if(c)return si(c);s=!1,r=Ge,l=new Ni}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 f=l.length;f--;)if(l[f]===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){return null==(t=Co(t,e=br(e,t)))||delete t[Do(Xo(e))]}function lr(t,e,i,n){return qn(t,e,i(mn(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 Li&&(i=i.value()),Fe(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=rt(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 fr(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 dr(t){return Bs(t)?t:[]}function pr(t){return"function"==typeof t?t:el}function br(t,e){return Vs(t)?t:go(t,e)?[t]:Oo(va(t))}var vr=Hn;function gr(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 yr(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 mr(t){var e=new t.constructor(t.byteLength);return new Ut(e).set(new Ut(t)),e}function wr(t,e){var i=e?mr(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=sa(e),a=i!==t,l=null===i,c=i==i,h=sa(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=rt(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=rt(h+c),f=!n;++r<h;)u[r]=t[r];for(var d=r;++l<c;)u[d+l]=e[l];for(;++s<a;)(f||r<o)&&(u[d+i[s]]=t[r++]);return u}function Sr(t,e){var i=-1,n=t.length;for(e||(e=rt(n));++i<n;)e[i]=t[i];return e}function Mr(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 Ir(t,e){return function(i,n){var r=Vs(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&&vo(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(!Ns(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=va(i))?ci(i):t,r=n?n[0]:i.charAt(0),o=n?gr(n,1).join(""):i.slice(1);return r[e]()+o}}function Fr(t){return function(e){return Fe(qa(Ua(e).replace(qt,"")),t,"")}}function Er(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 Js(n)?n:i}}function Or(e){return function(i,n,r){var o=Ct(i);if(!Ns(i)){var s=ro(n,3);i=_a(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=Pi.prototype.thru;for(i&&n.reverse();o--;){var a=n[o];if("function"!=typeof a)throw new It(e);if(s&&!l&&"wrapper"==io(a))var l=new Pi([],!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&&Vs(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 Wr(e,i,n,r,s,a,l,c,h,u){var f=i&o,d=1&i,p=2&i,b=24&i,v=512&i,g=p?t:Er(e);return function o(){for(var k=arguments.length,y=rt(k),m=k;m--;)y[m]=arguments[m];if(b)var w=no(o),x=function(t,e){for(var i=t.length,n=0;i--;)t[i]===e&&++n;return n}(y,w);if(r&&(y=zr(y,r,s,b)),a&&(y=Cr(y,a,l,b)),k-=x,b&&k<u){var z=oi(y,w);return Kr(e,i,Wr,o.placeholder,n,y,z,c,h,u-k)}var C=d?n:this,S=p?C[e]:e;return k=y.length,c?y=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}(y,c):v&&k>1&&y.reverse(),f&&h<k&&(y.length=h),this&&this!==he&&this instanceof o&&(S=g||Er(S)),S.apply(C,y)}}function Rr(t,e){return function(i,n){return function(t,e,i,n){return gn(t,(function(t,r,o){e(n,i(t),r,o)})),n}(i,t,e(n),{})}}function $r(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 Pr(t){return Jr((function(e){return e=Te(e,Xe(ro())),Hn((function(i){var n=this;return t(e,(function(t){return xe(t,n,i)}))}))}))}function Lr(e,i){var n=(i=i===t?" ":or(i)).length;if(n<2)return n?Bn(i,e):i;var r=Bn(i,ue(e/li(i)));return ii(i)?gr(ci(r),0,e).join(""):r.slice(0,e)}function Ur(e){return function(i,n,r){return r&&"number"!=typeof r&&vo(i,n,r)&&(n=r=t),i=ua(i),n===t?(n=i,i=0):n=ua(n),function(t,e,i,n){for(var r=-1,o=pi(ue((e-t)/(i||1)),0),s=rt(o);o--;)s[n?o:++r]=t,t+=i;return s}(i,n,r=r===t?i<n?1:-1:ua(r),e)}}function Vr(t){return function(e,i){return"string"==typeof e&&"string"==typeof i||(e=pa(e),i=pa(i)),t(e,i)}}function Kr(e,i,n,o,s,a,l,c,h,u){var f=8&i;i|=f?r:64,4&(i&=~(f?64:r))||(i&=-4);var d=[e,i,s,f?a:t,f?l:t,f?t:a,f?t:l,c,h,u],p=n.apply(t,d);return ko(e)&&Mo(p,d),p.placeholder=o,_o(p,e,i)}function Nr(t){var e=zt[t];return function(t,i){if(t=pa(t),(i=null==i?0:bi(fa(i),292))&&De(t)){var n=(va(t)+"e").split("e");return+((n=(va(e(n[0]+"e"+(+n[1]+i)))+"e").split("e"))[0]+"e"+(+n[1]-i))}return e(t)}}var Br=zi&&1/si(new zi([,-0]))[1]==s?function(t){return new zi(t)}:sl;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 Yr(i,s,a,l,c,h,u,f){var d=2&s;if(!d&&"function"!=typeof i)throw new It(e);var p=l?l.length:0;if(p||(s&=-97,l=c=t),u=u===t?u:pi(fa(u),0),f=f===t?f:fa(f),p-=c?c.length:0,64&s){var b=l,v=c;l=c=t}var g=d?t:eo(i),k=[i,s,a,l,c,b,v,h,u,f];if(g&&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,g),i=k[0],s=k[1],a=k[2],l=k[3],c=k[4],!(f=k[9]=k[9]===t?d?0:i.length:pi(k[9]-p,0))&&24&s&&(s&=-25),s&&1!=s)y=8==s||16==s?function(e,i,n){var r=Er(e);return function o(){for(var s=arguments.length,a=rt(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?Kr(e,i,Wr,o.placeholder,t,a,h,t,t,n-s):xe(this&&this!==he&&this instanceof o?r:e,this,a)}}(i,s,f):s!=r&&33!=s||c.length?Wr.apply(t,k):function(t,e,i,n){var r=1&e,o=Er(t);return function e(){for(var s=-1,a=arguments.length,l=-1,c=n.length,h=rt(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 y=function(t,e,i){var n=1&e,r=Er(t);return function e(){return(this&&this!==he&&this instanceof e?r:t).apply(n?i:this,arguments)}}(i,s,a);return _o((g?Gn:Mo)(y,k),i,s)}function Xr(e,i,n,r){return e===t||$s(e,_t[n])&&!Ft.call(r,n)?i:e}function qr(e,i,n,r,o,s){return Js(e)&&Js(i)&&(s.set(i,e),$n(e,i,t,qr,s),s.delete(i)),e}function Gr(e){return ia(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 f=-1,d=!0,p=2&n?new Ni:t;for(s.set(e,i),s.set(i,e);++f<l;){var b=e[f],v=i[f];if(r)var g=a?r(v,b,f,i,e,s):r(b,v,f,e,i,s);if(g!==t){if(g)continue;d=!1;break}if(p){if(!Oe(i,(function(t,e){if(!Ge(p,e)&&(b===t||o(b,t,n,r,s)))return p.push(e)}))){d=!1;break}}else if(b!==v&&!o(b,v,n,r,s)){d=!1;break}}return s.delete(e),s.delete(i),d}function Jr(e){return jo(zo(e,t,Ko),e+"")}function Qr(t){return wn(t,_a,lo)}function to(t){return wn(t,Ta,co)}var eo=Mi?function(t){return Mi.get(t)}:sl;function io(t){for(var e=t.name+"",i=Ii[e],n=Ft.call(Ii,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(Ft.call(Wi,"placeholder")?Wi:t).placeholder}function ro(){var t=Wi.iteratee||il;return t=t===il?Fn: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=_a(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),Ie(pe(t),(function(e){return Bt.call(t,e)})))}:dl,co=pe?function(t){for(var e=[];t;)Ae(e,lo(t)),t=Kt(t);return e}:dl,ho=xn;function uo(t,e,i){for(var n=-1,r=(e=br(e,t)).length,o=!1;++n<r;){var s=Do(e[n]);if(!(o=null!=t&&i(t,s)))break;t=t[s]}return o||++n!=r?o:!!(r=null==t?0:t.length)&&Zs(r)&&bo(s,r)&&(Vs(t)||Us(t))}function fo(t){return"function"!=typeof t.constructor||mo(t)?{}:Ri(Kt(t))}function po(t){return Vs(t)||Us(t)||!!(Yt&&t&&t[Yt])}function bo(t,e){var i=typeof t;return!!(e=null==e?a:e)&&("number"==i||"symbol"!=i&&vt.test(t))&&t>-1&&t%1==0&&t<e}function vo(t,e,i){if(!Js(i))return!1;var n=typeof e;return!!("number"==n?Ns(i)&&bo(e,i.length):"string"==n&&e in i)&&$s(i[e],t)}function go(t,e){if(Vs(t))return!1;var i=typeof t;return!("number"!=i&&"symbol"!=i&&"boolean"!=i&&null!=t&&!sa(t))||G.test(t)||!q.test(t)||null!=e&&t in Ct(e)}function ko(t){var e=io(t),i=Wi[e];if("function"!=typeof i||!(e in Li.prototype))return!1;if(t===i)return!0;var n=eo(i);return!!n&&t===n[0]}(mi&&ho(new mi(new ArrayBuffer(1)))!=j||wi&&ho(new wi)!=k||xi&&ho(xi.resolve())!=w||zi&&ho(new zi)!=z||Ci&&ho(new Ci)!=M)&&(ho=function(e){var i=xn(e),n=i==m?e.constructor:t,r=n?Wo(n):"";if(r)switch(r){case ji:return j;case _i:return k;case Ti:return w;case Ai:return z;case Fi:return M}return i});var yo=Tt?qs:pl;function mo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||_t)}function wo(t){return t==t&&!Js(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=rt(o);++r<o;)s[r]=t[i+r];r=-1;for(var a=rt(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:mn(t,Qn(e,0,-1))}function So(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var Mo=To(Gn),Io=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(ot);return e?e[1].split(st):[]}(n),i)))}function To(e){var i=0,n=0;return function(){var r=vi(),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=Nn(n,o),a=e[s];e[s]=e[n],e[n]=a}return e.length=i,e}var Fo,Eo,Oo=(Fo=Fs((function(t){var e=[];return 46===t.charCodeAt(0)&&e.push(""),t.replace(Z,(function(t,i,n,r){e.push(n?r.replace(ct,"$1"):i||t)})),e}),(function(t){return 500===Eo.size&&Eo.clear(),t})),Eo=Fo.cache,Fo);function Do(t){if("string"==typeof t||sa(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Wo(t){if(null!=t){try{return At.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function Ro(t){if(t instanceof Li)return t.clone();var e=new Pi(t.__wrapped__,t.__chain__);return e.__actions__=Sr(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var $o=Hn((function(t,e){return Bs(t)?ln(t,pn(e,1,Bs,!0)):[]})),Po=Hn((function(e,i){var n=Xo(i);return Bs(n)&&(n=t),Bs(e)?ln(e,pn(i,1,Bs,!0),ro(n,2)):[]})),Lo=Hn((function(e,i){var n=Xo(i);return Bs(n)&&(n=t),Bs(e)?ln(e,pn(i,1,Bs,!0),t,n):[]}));function Uo(t,e,i){var n=null==t?0:t.length;if(!n)return-1;var r=null==i?0:fa(i);return r<0&&(r=pi(n+r,0)),Re(t,ro(e,3),r)}function Vo(e,i,n){var r=null==e?0:e.length;if(!r)return-1;var o=r-1;return n!==t&&(o=fa(n),o=n<0?pi(r+o,0):bi(o,r-1)),Re(e,ro(i,3),o,!0)}function Ko(t){return null!=t&&t.length?pn(t,1):[]}function No(e){return e&&e.length?e[0]:t}var Bo=Hn((function(t){var e=Te(t,dr);return e.length&&e[0]===t[0]?Mn(e):[]})),Ho=Hn((function(e){var i=Xo(e),n=Te(e,dr);return i===Xo(n)?i=t:n.pop(),n.length&&n[0]===e[0]?Mn(n,ro(i,2)):[]})),Yo=Hn((function(e){var i=Xo(e),n=Te(e,dr);return(i="function"==typeof i?i:t)&&n.pop(),n.length&&n[0]===e[0]?Mn(n,t,i):[]}));function Xo(e){var i=null==e?0:e.length;return i?e[i-1]:t}var qo=Hn(Go);function Go(t,e){return t&&t.length&&e&&e.length?Vn(t,e):t}var Zo=Jr((function(t,e){var i=null==t?0:t.length,n=nn(t,e);return Kn(t,Te(e,(function(t){return bo(t,i)?+t:t})).sort(xr)),n}));function Jo(t){return null==t?t:yi.call(t)}var Qo=Hn((function(t){return sr(pn(t,1,Bs,!0))})),ts=Hn((function(e){var i=Xo(e);return Bs(i)&&(i=t),sr(pn(e,1,Bs,!0),ro(i,2))})),es=Hn((function(e){var i=Xo(e);return i="function"==typeof i?i:t,sr(pn(e,1,Bs,!0),t,i)}));function is(t){if(!t||!t.length)return[];var e=0;return t=Ie(t,(function(t){if(Bs(t))return e=pi(t.length,e),!0})),He(e,(function(e){return Te(t,Ve(e))}))}function ns(e,i){if(!e||!e.length)return[];var n=is(e);return null==i?n:Te(n,(function(e){return xe(i,t,e)}))}var rs=Hn((function(t,e){return Bs(t)?ln(t,e):[]})),os=Hn((function(t){return ur(Ie(t,Bs))})),ss=Hn((function(e){var i=Xo(e);return Bs(i)&&(i=t),ur(Ie(e,Bs),ro(i,2))})),as=Hn((function(e){var i=Xo(e);return i="function"==typeof i?i:t,ur(Ie(e,Bs),t,i)})),ls=Hn(is),cs=Hn((function(e){var i=e.length,n=i>1?e[i-1]:t;return n="function"==typeof n?(e.pop(),n):t,ns(e,n)}));function hs(t){var e=Wi(t);return e.__chain__=!0,e}function us(t,e){return e(t)}var fs=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 Li&&bo(n)?((r=r.slice(n,+n+(i?1:0))).__actions__.push({func:us,args:[o],thisArg:t}),new Pi(r,this.__chain__).thru((function(e){return i&&!e.length&&e.push(t),e}))):this.thru(o)})),ds=Ir((function(t,e,i){Ft.call(t,i)?++t[i]:en(t,i,1)})),ps=Or(Uo),bs=Or(Vo);function vs(t,e){return(Vs(t)?Ce:cn)(t,ro(e,3))}function gs(t,e){return(Vs(t)?Se:hn)(t,ro(e,3))}var ks=Ir((function(t,e,i){Ft.call(t,i)?t[i].push(e):en(t,i,[e])})),ys=Hn((function(t,e,i){var n=-1,r="function"==typeof e,o=Ns(t)?rt(t.length):[];return cn(t,(function(t){o[++n]=r?xe(e,t,i):In(t,e,i)})),o})),ms=Ir((function(t,e,i){en(t,i,e)}));function ws(t,e){return(Vs(t)?Te:Dn)(t,ro(e,3))}var xs=Ir((function(t,e,i){t[i?0:1].push(e)}),(function(){return[[],[]]})),zs=Hn((function(t,e){if(null==t)return[];var i=e.length;return i>1&&vo(t,e[0],e[1])?e=[]:i>2&&vo(e[0],e[1],e[2])&&(e=[e[0]]),Ln(t,pn(e,1),[])})),Cs=le||function(){return he.Date.now()};function Ss(e,i,n){return i=n?t:i,Yr(e,o,t,t,t,t,i=e&&null==i?e.length:i)}function Ms(i,n){var r;if("function"!=typeof n)throw new It(e);return i=fa(i),function(){return--i>0&&(r=n.apply(this,arguments)),i<=1&&(n=t),r}}var Is=Hn((function(t,e,i){var n=1;if(i.length){var o=oi(i,no(Is));n|=r}return Yr(t,n,e,i,o)})),js=Hn((function(t,e,i){var n=3;if(i.length){var o=oi(i,no(js));n|=r}return Yr(e,n,t,i,o)}));function _s(i,n,r){var o,s,a,l,c,h,u=0,f=!1,d=!1,p=!0;if("function"!=typeof i)throw new It(e);function b(e){var n=o,r=s;return o=s=t,u=e,l=i.apply(r,n)}function v(e){var i=e-h;return h===t||i>=n||i<0||d&&e-u>=a}function g(){var t=Cs();if(v(t))return k(t);c=Io(g,function(t){var e=n-(t-h);return d?bi(e,a-(t-u)):e}(t))}function k(e){return c=t,p&&o?b(e):(o=s=t,l)}function y(){var e=Cs(),i=v(e);if(o=arguments,s=this,h=e,i){if(c===t)return function(t){return u=t,c=Io(g,n),f?b(t):l}(h);if(d)return kr(c),c=Io(g,n),b(h)}return c===t&&(c=Io(g,n)),l}return n=pa(n)||0,Js(r)&&(f=!!r.leading,a=(d="maxWait"in r)?pi(pa(r.maxWait)||0,n):a,p="trailing"in r?!!r.trailing:p),y.cancel=function(){c!==t&&kr(c),u=0,o=h=s=c=t},y.flush=function(){return c===t?l:k(Cs())},y}var Ts=Hn((function(t,e){return an(t,1,e)})),As=Hn((function(t,e,i){return an(t,pa(e)||0,i)}));function Fs(t,i){if("function"!=typeof t||null!=i&&"function"!=typeof i)throw new It(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(Fs.Cache||Ki),n}function Es(t){if("function"!=typeof t)throw new It(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)}}Fs.Cache=Ki;var Os=vr((function(t,e){var i=(e=1==e.length&&Vs(e[0])?Te(e[0],Xe(ro())):Te(pn(e,1),Xe(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)}))})),Ds=Hn((function(e,i){var n=oi(i,no(Ds));return Yr(e,r,t,i,n)})),Ws=Hn((function(e,i){var n=oi(i,no(Ws));return Yr(e,64,t,i,n)})),Rs=Jr((function(e,i){return Yr(e,256,t,t,t,i)}));function $s(t,e){return t===e||t!=t&&e!=e}var Ps=Vr(zn),Ls=Vr((function(t,e){return t>=e})),Us=jn(function(){return arguments}())?jn:function(t){return Qs(t)&&Ft.call(t,"callee")&&!Bt.call(t,"callee")},Vs=rt.isArray,Ks=ve?Xe(ve):function(t){return Qs(t)&&xn(t)==I};function Ns(t){return null!=t&&Zs(t.length)&&!qs(t)}function Bs(t){return Qs(t)&&Ns(t)}var Hs=be||pl,Ys=ge?Xe(ge):function(t){return Qs(t)&&xn(t)==p};function Xs(t){if(!Qs(t))return!1;var e=xn(t);return e==b||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!ia(t)}function qs(t){if(!Js(t))return!1;var e=xn(t);return e==v||e==g||"[object AsyncFunction]"==e||"[object Proxy]"==e}function Gs(t){return"number"==typeof t&&t==fa(t)}function Zs(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=a}function Js(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Qs(t){return null!=t&&"object"==typeof t}var ta=ke?Xe(ke):function(t){return Qs(t)&&ho(t)==k};function ea(t){return"number"==typeof t||Qs(t)&&xn(t)==y}function ia(t){if(!Qs(t)||xn(t)!=m)return!1;var e=Kt(t);if(null===e)return!0;var i=Ft.call(e,"constructor")&&e.constructor;return"function"==typeof i&&i instanceof i&&At.call(i)==Wt}var na=ye?Xe(ye):function(t){return Qs(t)&&xn(t)==x},ra=me?Xe(me):function(t){return Qs(t)&&ho(t)==z};function oa(t){return"string"==typeof t||!Vs(t)&&Qs(t)&&xn(t)==C}function sa(t){return"symbol"==typeof t||Qs(t)&&xn(t)==S}var aa=we?Xe(we):function(t){return Qs(t)&&Zs(t.length)&&!!ne[xn(t)]},la=Vr(On),ca=Vr((function(t,e){return t<=e}));function ha(t){if(!t)return[];if(Ns(t))return oa(t)?ci(t):Sr(t);if(Xt&&t[Xt])return function(t){for(var e,i=[];!(e=t.next()).done;)i.push(e.value);return i}(t[Xt]());var e=ho(t);return(e==k?ni:e==z?si:$a)(t)}function ua(t){return t?(t=pa(t))===s||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function fa(t){var e=ua(t),i=e%1;return e==e?i?e-i:e:0}function da(t){return t?rn(fa(t),0,c):0}function pa(t){if("number"==typeof t)return t;if(sa(t))return l;if(Js(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Js(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=Ye(t);var i=dt.test(t);return i||bt.test(t)?ae(t.slice(2),i?2:8):ft.test(t)?l:+t}function ba(t){return Mr(t,Ta(t))}function va(t){return null==t?"":or(t)}var ga=jr((function(t,e){if(mo(e)||Ns(e))Mr(e,_a(e),t);else for(var i in e)Ft.call(e,i)&&Zi(t,i,e[i])})),ka=jr((function(t,e){Mr(e,Ta(e),t)})),ya=jr((function(t,e,i,n){Mr(e,Ta(e),t,n)})),ma=jr((function(t,e,i,n){Mr(e,_a(e),t,n)})),wa=Jr(nn),xa=Hn((function(e,i){e=Ct(e);var n=-1,r=i.length,o=r>2?i[2]:t;for(o&&vo(i[0],i[1],o)&&(r=1);++n<r;)for(var s=i[n],a=Ta(s),l=-1,c=a.length;++l<c;){var h=a[l],u=e[h];(u===t||$s(u,_t[h])&&!Ft.call(e,h))&&(e[h]=s[h])}return e})),za=Hn((function(e){return e.push(t,qr),xe(Fa,t,e)}));function Ca(e,i,n){var r=null==e?t:mn(e,i);return r===t?n:r}function Sa(t,e){return null!=t&&uo(t,e,Sn)}var Ma=Rr((function(t,e,i){null!=e&&"function"!=typeof e.toString&&(e=Dt.call(e)),t[e]=i}),Ja(el)),Ia=Rr((function(t,e,i){null!=e&&"function"!=typeof e.toString&&(e=Dt.call(e)),Ft.call(t,e)?t[e].push(i):t[e]=[i]}),ro),ja=Hn(In);function _a(t){return Ns(t)?Hi(t):En(t)}function Ta(t){return Ns(t)?Hi(t,!0):function(t){if(!Js(t))return function(t){var e=[];if(null!=t)for(var i in Ct(t))e.push(i);return e}(t);var e=mo(t),i=[];for(var n in t)("constructor"!=n||!e&&Ft.call(t,n))&&i.push(n);return i}(t)}var Aa=jr((function(t,e,i){$n(t,e,i)})),Fa=jr((function(t,e,i,n){$n(t,e,i,n)})),Ea=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})),Mr(t,to(t),i),n&&(i=on(i,7,Gr));for(var r=e.length;r--;)ar(i,e[r]);return i})),Oa=Jr((function(t,e){return null==t?{}:function(t,e){return Un(t,e,(function(e,i){return Sa(t,i)}))}(t,e)}));function Da(t,e){if(null==t)return{};var i=Te(to(t),(function(t){return[t]}));return e=ro(e),Un(t,i,(function(t,i){return e(t,i[0])}))}var Wa=Hr(_a),Ra=Hr(Ta);function $a(t){return null==t?[]:qe(t,_a(t))}var Pa=Fr((function(t,e,i){return e=e.toLowerCase(),t+(i?La(e):e)}));function La(t){return Xa(va(t).toLowerCase())}function Ua(t){return(t=va(t))&&t.replace(gt,Qe).replace(Gt,"")}var Va=Fr((function(t,e,i){return t+(i?"-":"")+e.toLowerCase()})),Ka=Fr((function(t,e,i){return t+(i?" ":"")+e.toLowerCase()})),Na=Ar("toLowerCase"),Ba=Fr((function(t,e,i){return t+(i?"_":"")+e.toLowerCase()})),Ha=Fr((function(t,e,i){return t+(i?" ":"")+Xa(e)})),Ya=Fr((function(t,e,i){return t+(i?" ":"")+e.toUpperCase()})),Xa=Ar("toUpperCase");function qa(e,i,n){return e=va(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(at)||[]}(e):e.match(i)||[]}var Ga=Hn((function(e,i){try{return xe(e,t,i)}catch(t){return Xs(t)?t:new wt(t)}})),Za=Jr((function(t,e){return Ce(e,(function(e){e=Do(e),en(t,e,Is(t[e],t))})),t}));function Ja(t){return function(){return t}}var Qa=Dr(),tl=Dr(!0);function el(t){return t}function il(t){return Fn("function"==typeof t?t:on(t,1))}var nl=Hn((function(t,e){return function(i){return In(i,t,e)}})),rl=Hn((function(t,e){return function(i){return In(t,i,e)}}));function ol(t,e,i){var n=_a(e),r=yn(e,n);null!=i||Js(e)&&(r.length||!n.length)||(i=e,e=t,t=this,r=yn(e,_a(e)));var o=!(Js(i)&&"chain"in i&&!i.chain),s=qs(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 sl(){}var al=Pr(Te),ll=Pr(Me),cl=Pr(Oe);function hl(t){return go(t)?Ve(Do(t)):function(t){return function(e){return mn(e,t)}}(t)}var ul=Ur(),fl=Ur(!0);function dl(){return[]}function pl(){return!1}var bl,vl=$r((function(t,e){return t+e}),0),gl=Nr("ceil"),kl=$r((function(t,e){return t/e}),1),yl=Nr("floor"),ml=$r((function(t,e){return t*e}),1),wl=Nr("round"),xl=$r((function(t,e){return t-e}),0);return Wi.after=function(t,i){if("function"!=typeof i)throw new It(e);return t=fa(t),function(){if(--t<1)return i.apply(this,arguments)}},Wi.ary=Ss,Wi.assign=ga,Wi.assignIn=ka,Wi.assignInWith=ya,Wi.assignWith=ma,Wi.at=wa,Wi.before=Ms,Wi.bind=Is,Wi.bindAll=Za,Wi.bindKey=js,Wi.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Vs(t)?t:[t]},Wi.chain=hs,Wi.chunk=function(e,i,n){i=(n?vo(e,i,n):i===t)?1:pi(fa(i),0);var r=null==e?0:e.length;if(!r||i<1)return[];for(var o=0,s=0,a=rt(ue(r/i));o<r;)a[s++]=Qn(e,o,o+=i);return a},Wi.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},Wi.concat=function(){var t=arguments.length;if(!t)return[];for(var e=rt(t-1),i=arguments[0],n=t;n--;)e[n-1]=arguments[n];return Ae(Vs(i)?Sr(i):[i],pn(e,1))},Wi.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 It(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)}}))},Wi.conforms=function(t){return function(t){var e=_a(t);return function(i){return sn(i,t,e)}}(on(t,1))},Wi.constant=Ja,Wi.countBy=ds,Wi.create=function(t,e){var i=Ri(t);return null==e?i:tn(i,e)},Wi.curry=function e(i,n,r){var o=Yr(i,8,t,t,t,t,t,n=r?t:n);return o.placeholder=e.placeholder,o},Wi.curryRight=function e(i,n,r){var o=Yr(i,16,t,t,t,t,t,n=r?t:n);return o.placeholder=e.placeholder,o},Wi.debounce=_s,Wi.defaults=xa,Wi.defaultsDeep=za,Wi.defer=Ts,Wi.delay=As,Wi.difference=$o,Wi.differenceBy=Po,Wi.differenceWith=Lo,Wi.drop=function(e,i,n){var r=null==e?0:e.length;return r?Qn(e,(i=n||i===t?1:fa(i))<0?0:i,r):[]},Wi.dropRight=function(e,i,n){var r=null==e?0:e.length;return r?Qn(e,0,(i=r-(i=n||i===t?1:fa(i)))<0?0:i):[]},Wi.dropRightWhile=function(t,e){return t&&t.length?cr(t,ro(e,3),!0,!0):[]},Wi.dropWhile=function(t,e){return t&&t.length?cr(t,ro(e,3),!0):[]},Wi.fill=function(e,i,n,r){var o=null==e?0:e.length;return o?(n&&"number"!=typeof n&&vo(e,i,n)&&(n=0,r=o),function(e,i,n,r){var o=e.length;for((n=fa(n))<0&&(n=-n>o?0:o+n),(r=r===t||r>o?o:fa(r))<0&&(r+=o),r=n>r?0:da(r);n<r;)e[n++]=i;return e}(e,i,n,r)):[]},Wi.filter=function(t,e){return(Vs(t)?Ie:dn)(t,ro(e,3))},Wi.flatMap=function(t,e){return pn(ws(t,e),1)},Wi.flatMapDeep=function(t,e){return pn(ws(t,e),s)},Wi.flatMapDepth=function(e,i,n){return n=n===t?1:fa(n),pn(ws(e,i),n)},Wi.flatten=Ko,Wi.flattenDeep=function(t){return null!=t&&t.length?pn(t,s):[]},Wi.flattenDepth=function(e,i){return null!=e&&e.length?pn(e,i=i===t?1:fa(i)):[]},Wi.flip=function(t){return Yr(t,512)},Wi.flow=Qa,Wi.flowRight=tl,Wi.fromPairs=function(t){for(var e=-1,i=null==t?0:t.length,n={};++e<i;){var r=t[e];n[r[0]]=r[1]}return n},Wi.functions=function(t){return null==t?[]:yn(t,_a(t))},Wi.functionsIn=function(t){return null==t?[]:yn(t,Ta(t))},Wi.groupBy=ks,Wi.initial=function(t){return null!=t&&t.length?Qn(t,0,-1):[]},Wi.intersection=Bo,Wi.intersectionBy=Ho,Wi.intersectionWith=Yo,Wi.invert=Ma,Wi.invertBy=Ia,Wi.invokeMap=ys,Wi.iteratee=il,Wi.keyBy=ms,Wi.keys=_a,Wi.keysIn=Ta,Wi.map=ws,Wi.mapKeys=function(t,e){var i={};return e=ro(e,3),gn(t,(function(t,n,r){en(i,e(t,n,r),t)})),i},Wi.mapValues=function(t,e){var i={};return e=ro(e,3),gn(t,(function(t,n,r){en(i,n,e(t,n,r))})),i},Wi.matches=function(t){return Wn(on(t,1))},Wi.matchesProperty=function(t,e){return Rn(t,on(e,1))},Wi.memoize=Fs,Wi.merge=Aa,Wi.mergeWith=Fa,Wi.method=nl,Wi.methodOf=rl,Wi.mixin=ol,Wi.negate=Es,Wi.nthArg=function(t){return t=fa(t),Hn((function(e){return Pn(e,t)}))},Wi.omit=Ea,Wi.omitBy=function(t,e){return Da(t,Es(ro(e)))},Wi.once=function(t){return Ms(2,t)},Wi.orderBy=function(e,i,n,r){return null==e?[]:(Vs(i)||(i=null==i?[]:[i]),Vs(n=r?t:n)||(n=null==n?[]:[n]),Ln(e,i,n))},Wi.over=al,Wi.overArgs=Os,Wi.overEvery=ll,Wi.overSome=cl,Wi.partial=Ds,Wi.partialRight=Ws,Wi.partition=xs,Wi.pick=Oa,Wi.pickBy=Da,Wi.property=hl,Wi.propertyOf=function(e){return function(i){return null==e?t:mn(e,i)}},Wi.pull=qo,Wi.pullAll=Go,Wi.pullAllBy=function(t,e,i){return t&&t.length&&e&&e.length?Vn(t,e,ro(i,2)):t},Wi.pullAllWith=function(e,i,n){return e&&e.length&&i&&i.length?Vn(e,i,t,n):e},Wi.pullAt=Zo,Wi.range=ul,Wi.rangeRight=fl,Wi.rearg=Rs,Wi.reject=function(t,e){return(Vs(t)?Ie:dn)(t,Es(ro(e,3)))},Wi.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 Kn(t,r),i},Wi.rest=function(i,n){if("function"!=typeof i)throw new It(e);return Hn(i,n=n===t?n:fa(n))},Wi.reverse=Jo,Wi.sampleSize=function(e,i,n){return i=(n?vo(e,i,n):i===t)?1:fa(i),(Vs(e)?Xi:Xn)(e,i)},Wi.set=function(t,e,i){return null==t?t:qn(t,e,i)},Wi.setWith=function(e,i,n,r){return r="function"==typeof r?r:t,null==e?e:qn(e,i,n,r)},Wi.shuffle=function(t){return(Vs(t)?qi:Jn)(t)},Wi.slice=function(e,i,n){var r=null==e?0:e.length;return r?(n&&"number"!=typeof n&&vo(e,i,n)?(i=0,n=r):(i=null==i?0:fa(i),n=n===t?r:fa(n)),Qn(e,i,n)):[]},Wi.sortBy=zs,Wi.sortedUniq=function(t){return t&&t.length?nr(t):[]},Wi.sortedUniqBy=function(t,e){return t&&t.length?nr(t,ro(e,2)):[]},Wi.split=function(e,i,n){return n&&"number"!=typeof n&&vo(e,i,n)&&(i=n=t),(n=n===t?c:n>>>0)?(e=va(e))&&("string"==typeof i||null!=i&&!na(i))&&!(i=or(i))&&ii(e)?gr(ci(e),0,n):e.split(i,n):[]},Wi.spread=function(t,i){if("function"!=typeof t)throw new It(e);return i=null==i?0:pi(fa(i),0),Hn((function(e){var n=e[i],r=gr(e,0,i);return n&&Ae(r,n),xe(t,this,r)}))},Wi.tail=function(t){var e=null==t?0:t.length;return e?Qn(t,1,e):[]},Wi.take=function(e,i,n){return e&&e.length?Qn(e,0,(i=n||i===t?1:fa(i))<0?0:i):[]},Wi.takeRight=function(e,i,n){var r=null==e?0:e.length;return r?Qn(e,(i=r-(i=n||i===t?1:fa(i)))<0?0:i,r):[]},Wi.takeRightWhile=function(t,e){return t&&t.length?cr(t,ro(e,3),!1,!0):[]},Wi.takeWhile=function(t,e){return t&&t.length?cr(t,ro(e,3)):[]},Wi.tap=function(t,e){return e(t),t},Wi.throttle=function(t,i,n){var r=!0,o=!0;if("function"!=typeof t)throw new It(e);return Js(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),_s(t,i,{leading:r,maxWait:i,trailing:o})},Wi.thru=us,Wi.toArray=ha,Wi.toPairs=Wa,Wi.toPairsIn=Ra,Wi.toPath=function(t){return Vs(t)?Te(t,Do):sa(t)?[t]:Sr(Oo(va(t)))},Wi.toPlainObject=ba,Wi.transform=function(t,e,i){var n=Vs(t),r=n||Hs(t)||aa(t);if(e=ro(e,4),null==i){var o=t&&t.constructor;i=r?n?new o:[]:Js(t)&&qs(o)?Ri(Kt(t)):{}}return(r?Ce:gn)(t,(function(t,n,r){return e(i,t,n,r)})),i},Wi.unary=function(t){return Ss(t,1)},Wi.union=Qo,Wi.unionBy=ts,Wi.unionWith=es,Wi.uniq=function(t){return t&&t.length?sr(t):[]},Wi.uniqBy=function(t,e){return t&&t.length?sr(t,ro(e,2)):[]},Wi.uniqWith=function(e,i){return i="function"==typeof i?i:t,e&&e.length?sr(e,t,i):[]},Wi.unset=function(t,e){return null==t||ar(t,e)},Wi.unzip=is,Wi.unzipWith=ns,Wi.update=function(t,e,i){return null==t?t:lr(t,e,pr(i))},Wi.updateWith=function(e,i,n,r){return r="function"==typeof r?r:t,null==e?e:lr(e,i,pr(n),r)},Wi.values=$a,Wi.valuesIn=function(t){return null==t?[]:qe(t,Ta(t))},Wi.without=rs,Wi.words=qa,Wi.wrap=function(t,e){return Ds(pr(e),t)},Wi.xor=os,Wi.xorBy=ss,Wi.xorWith=as,Wi.zip=ls,Wi.zipObject=function(t,e){return fr(t||[],e||[],Zi)},Wi.zipObjectDeep=function(t,e){return fr(t||[],e||[],qn)},Wi.zipWith=cs,Wi.entries=Wa,Wi.entriesIn=Ra,Wi.extend=ka,Wi.extendWith=ya,ol(Wi,Wi),Wi.add=vl,Wi.attempt=Ga,Wi.camelCase=Pa,Wi.capitalize=La,Wi.ceil=gl,Wi.clamp=function(e,i,n){return n===t&&(n=i,i=t),n!==t&&(n=(n=pa(n))==n?n:0),i!==t&&(i=(i=pa(i))==i?i:0),rn(pa(e),i,n)},Wi.clone=function(t){return on(t,4)},Wi.cloneDeep=function(t){return on(t,5)},Wi.cloneDeepWith=function(e,i){return on(e,5,i="function"==typeof i?i:t)},Wi.cloneWith=function(e,i){return on(e,4,i="function"==typeof i?i:t)},Wi.conformsTo=function(t,e){return null==e||sn(t,e,_a(e))},Wi.deburr=Ua,Wi.defaultTo=function(t,e){return null==t||t!=t?e:t},Wi.divide=kl,Wi.endsWith=function(e,i,n){e=va(e),i=or(i);var r=e.length,o=n=n===t?r:rn(fa(n),0,r);return(n-=i.length)>=0&&e.slice(n,o)==i},Wi.eq=$s,Wi.escape=function(t){return(t=va(t))&&B.test(t)?t.replace(K,ti):t},Wi.escapeRegExp=function(t){return(t=va(t))&&Q.test(t)?t.replace(J,"\\$&"):t},Wi.every=function(e,i,n){var r=Vs(e)?Me:un;return n&&vo(e,i,n)&&(i=t),r(e,ro(i,3))},Wi.find=ps,Wi.findIndex=Uo,Wi.findKey=function(t,e){return We(t,ro(e,3),gn)},Wi.findLast=bs,Wi.findLastIndex=Vo,Wi.findLastKey=function(t,e){return We(t,ro(e,3),kn)},Wi.floor=yl,Wi.forEach=vs,Wi.forEachRight=gs,Wi.forIn=function(t,e){return null==t?t:bn(t,ro(e,3),Ta)},Wi.forInRight=function(t,e){return null==t?t:vn(t,ro(e,3),Ta)},Wi.forOwn=function(t,e){return t&&gn(t,ro(e,3))},Wi.forOwnRight=function(t,e){return t&&kn(t,ro(e,3))},Wi.get=Ca,Wi.gt=Ps,Wi.gte=Ls,Wi.has=function(t,e){return null!=t&&uo(t,e,Cn)},Wi.hasIn=Sa,Wi.head=No,Wi.identity=el,Wi.includes=function(t,e,i,n){t=Ns(t)?t:$a(t),i=i&&!n?fa(i):0;var r=t.length;return i<0&&(i=pi(r+i,0)),oa(t)?i<=r&&t.indexOf(e,i)>-1:!!r&&$e(t,e,i)>-1},Wi.indexOf=function(t,e,i){var n=null==t?0:t.length;if(!n)return-1;var r=null==i?0:fa(i);return r<0&&(r=pi(n+r,0)),$e(t,e,r)},Wi.inRange=function(e,i,n){return i=ua(i),n===t?(n=i,i=0):n=ua(n),function(t,e,i){return t>=bi(e,i)&&t<pi(e,i)}(e=pa(e),i,n)},Wi.invoke=ja,Wi.isArguments=Us,Wi.isArray=Vs,Wi.isArrayBuffer=Ks,Wi.isArrayLike=Ns,Wi.isArrayLikeObject=Bs,Wi.isBoolean=function(t){return!0===t||!1===t||Qs(t)&&xn(t)==d},Wi.isBuffer=Hs,Wi.isDate=Ys,Wi.isElement=function(t){return Qs(t)&&1===t.nodeType&&!ia(t)},Wi.isEmpty=function(t){if(null==t)return!0;if(Ns(t)&&(Vs(t)||"string"==typeof t||"function"==typeof t.splice||Hs(t)||aa(t)||Us(t)))return!t.length;var e=ho(t);if(e==k||e==z)return!t.size;if(mo(t))return!En(t).length;for(var i in t)if(Ft.call(t,i))return!1;return!0},Wi.isEqual=function(t,e){return _n(t,e)},Wi.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},Wi.isError=Xs,Wi.isFinite=function(t){return"number"==typeof t&&De(t)},Wi.isFunction=qs,Wi.isInteger=Gs,Wi.isLength=Zs,Wi.isMap=ta,Wi.isMatch=function(t,e){return t===e||Tn(t,e,so(e))},Wi.isMatchWith=function(e,i,n){return n="function"==typeof n?n:t,Tn(e,i,so(i),n)},Wi.isNaN=function(t){return ea(t)&&t!=+t},Wi.isNative=function(t){if(yo(t))throw new wt("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return An(t)},Wi.isNil=function(t){return null==t},Wi.isNull=function(t){return null===t},Wi.isNumber=ea,Wi.isObject=Js,Wi.isObjectLike=Qs,Wi.isPlainObject=ia,Wi.isRegExp=na,Wi.isSafeInteger=function(t){return Gs(t)&&t>=-9007199254740991&&t<=a},Wi.isSet=ra,Wi.isString=oa,Wi.isSymbol=sa,Wi.isTypedArray=aa,Wi.isUndefined=function(e){return e===t},Wi.isWeakMap=function(t){return Qs(t)&&ho(t)==M},Wi.isWeakSet=function(t){return Qs(t)&&"[object WeakSet]"==xn(t)},Wi.join=function(t,e){return null==t?"":Ke.call(t,e)},Wi.kebabCase=Va,Wi.last=Xo,Wi.lastIndexOf=function(e,i,n){var r=null==e?0:e.length;if(!r)return-1;var o=r;return n!==t&&(o=(o=fa(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,Le,o,!0)},Wi.lowerCase=Ka,Wi.lowerFirst=Na,Wi.lt=la,Wi.lte=ca,Wi.max=function(e){return e&&e.length?fn(e,el,zn):t},Wi.maxBy=function(e,i){return e&&e.length?fn(e,ro(i,2),zn):t},Wi.mean=function(t){return Ue(t,el)},Wi.meanBy=function(t,e){return Ue(t,ro(e,2))},Wi.min=function(e){return e&&e.length?fn(e,el,On):t},Wi.minBy=function(e,i){return e&&e.length?fn(e,ro(i,2),On):t},Wi.stubArray=dl,Wi.stubFalse=pl,Wi.stubObject=function(){return{}},Wi.stubString=function(){return""},Wi.stubTrue=function(){return!0},Wi.multiply=ml,Wi.nth=function(e,i){return e&&e.length?Pn(e,fa(i)):t},Wi.noConflict=function(){return he._===this&&(he._=Rt),this},Wi.noop=sl,Wi.now=Cs,Wi.pad=function(t,e,i){t=va(t);var n=(e=fa(e))?li(t):0;if(!e||n>=e)return t;var r=(e-n)/2;return Lr(fe(r),i)+t+Lr(ue(r),i)},Wi.padEnd=function(t,e,i){t=va(t);var n=(e=fa(e))?li(t):0;return e&&n<e?t+Lr(e-n,i):t},Wi.padStart=function(t,e,i){t=va(t);var n=(e=fa(e))?li(t):0;return e&&n<e?Lr(e-n,i)+t:t},Wi.parseInt=function(t,e,i){return i||null==e?e=0:e&&(e=+e),gi(va(t).replace(tt,""),e||0)},Wi.random=function(e,i,n){if(n&&"boolean"!=typeof n&&vo(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=ua(e),i===t?(i=e,e=0):i=ua(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 Nn(e,i)},Wi.reduce=function(t,e,i){var n=Vs(t)?Fe:Ne,r=arguments.length<3;return n(t,ro(e,4),i,r,cn)},Wi.reduceRight=function(t,e,i){var n=Vs(t)?Ee:Ne,r=arguments.length<3;return n(t,ro(e,4),i,r,hn)},Wi.repeat=function(e,i,n){return i=(n?vo(e,i,n):i===t)?1:fa(i),Bn(va(e),i)},Wi.replace=function(){var t=arguments,e=va(t[0]);return t.length<3?e:e.replace(t[1],t[2])},Wi.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[Do(i[r])];s===t&&(r=o,s=n),e=qs(s)?s.call(e):s}return e},Wi.round=wl,Wi.runInContext=V,Wi.sample=function(t){return(Vs(t)?Yi:Yn)(t)},Wi.size=function(t){if(null==t)return 0;if(Ns(t))return oa(t)?li(t):t.length;var e=ho(t);return e==k||e==z?t.size:En(t).length},Wi.snakeCase=Ba,Wi.some=function(e,i,n){var r=Vs(e)?Oe:tr;return n&&vo(e,i,n)&&(i=t),r(e,ro(i,3))},Wi.sortedIndex=function(t,e){return er(t,e)},Wi.sortedIndexBy=function(t,e,i){return ir(t,e,ro(i,2))},Wi.sortedIndexOf=function(t,e){var i=null==t?0:t.length;if(i){var n=er(t,e);if(n<i&&$s(t[n],e))return n}return-1},Wi.sortedLastIndex=function(t,e){return er(t,e,!0)},Wi.sortedLastIndexBy=function(t,e,i){return ir(t,e,ro(i,2),!0)},Wi.sortedLastIndexOf=function(t,e){if(null!=t&&t.length){var i=er(t,e,!0)-1;if($s(t[i],e))return i}return-1},Wi.startCase=Ha,Wi.startsWith=function(t,e,i){return t=va(t),i=null==i?0:rn(fa(i),0,t.length),e=or(e),t.slice(i,i+e.length)==e},Wi.subtract=xl,Wi.sum=function(t){return t&&t.length?Be(t,el):0},Wi.sumBy=function(t,e){return t&&t.length?Be(t,ro(e,2)):0},Wi.template=function(e,i,n){var r=Wi.templateSettings;n&&vo(e,i,n)&&(i=t),e=va(e),i=ya({},i,r,Xr);var o,s,a=ya({},i.imports,r.imports,Xr),l=_a(a),c=qe(a,l),h=0,u=i.interpolate||kt,f="__p += '",d=St((i.escape||kt).source+"|"+u.source+"|"+(u===X?ht:kt).source+"|"+(i.evaluate||kt).source+"|$","g"),p="//# sourceURL="+(Ft.call(i,"sourceURL")?(i.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++ie+"]")+"\n";e.replace(d,(function(t,i,n,r,a,l){return n||(n=r),f+=e.slice(h,l).replace(yt,ei),i&&(o=!0,f+="' +\n__e("+i+") +\n'"),a&&(s=!0,f+="';\n"+a+";\n__p += '"),n&&(f+="' +\n((__t = ("+n+")) == null ? '' : __t) +\n'"),h=l+t.length,t})),f+="';\n";var b=Ft.call(i,"variable")&&i.variable;if(b){if(lt.test(b))throw new wt("Invalid `variable` option passed into `_.template`")}else f="with (obj) {\n"+f+"\n}\n";f=(s?f.replace($,""):f).replace(P,"$1").replace(L,"$1;"),f="function("+(b||"obj")+") {\n"+(b?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(s?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+f+"return __p\n}";var v=Ga((function(){return xt(l,p+"return "+f).apply(t,c)}));if(v.source=f,Xs(v))throw v;return v},Wi.times=function(t,e){if((t=fa(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},Wi.toFinite=ua,Wi.toInteger=fa,Wi.toLength=da,Wi.toLower=function(t){return va(t).toLowerCase()},Wi.toNumber=pa,Wi.toSafeInteger=function(t){return t?rn(fa(t),-9007199254740991,a):0===t?t:0},Wi.toString=va,Wi.toUpper=function(t){return va(t).toUpperCase()},Wi.trim=function(e,i,n){if((e=va(e))&&(n||i===t))return Ye(e);if(!e||!(i=or(i)))return e;var r=ci(e),o=ci(i);return gr(r,Ze(r,o),Je(r,o)+1).join("")},Wi.trimEnd=function(e,i,n){if((e=va(e))&&(n||i===t))return e.slice(0,hi(e)+1);if(!e||!(i=or(i)))return e;var r=ci(e);return gr(r,0,Je(r,ci(i))+1).join("")},Wi.trimStart=function(e,i,n){if((e=va(e))&&(n||i===t))return e.replace(tt,"");if(!e||!(i=or(i)))return e;var r=ci(e);return gr(r,Ze(r,ci(i))).join("")},Wi.truncate=function(e,i){var n=30,r="...";if(Js(i)){var o="separator"in i?i.separator:o;n="length"in i?fa(i.length):n,r="omission"in i?or(i.omission):r}var s=(e=va(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?gr(a,0,l).join(""):e.slice(0,l);if(o===t)return c+r;if(a&&(l+=c.length-l),na(o)){if(e.slice(l).search(o)){var h,u=c;for(o.global||(o=St(o.source,va(ut.exec(o))+"g")),o.lastIndex=0;h=o.exec(u);)var f=h.index;c=c.slice(0,f===t?l:f)}}else if(e.indexOf(or(o),l)!=l){var d=c.lastIndexOf(o);d>-1&&(c=c.slice(0,d))}return c+r},Wi.unescape=function(t){return(t=va(t))&&N.test(t)?t.replace(U,ui):t},Wi.uniqueId=function(t){var e=++Et;return va(t)+e},Wi.upperCase=Ya,Wi.upperFirst=Xa,Wi.each=vs,Wi.eachRight=gs,Wi.first=No,ol(Wi,(bl={},gn(Wi,(function(t,e){Ft.call(Wi.prototype,e)||(bl[e]=t)})),bl),{chain:!1}),Wi.VERSION="4.17.21",Ce(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Wi[t].placeholder=Wi})),Ce(["drop","take"],(function(e,i){Li.prototype[e]=function(n){n=n===t?1:pi(fa(n),0);var r=this.__filtered__&&!i?new Li(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},Li.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;Li.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":"");Li.prototype[t]=function(){return this[i](1).value()[0]}})),Ce(["initial","tail"],(function(t,e){var i="drop"+(e?"":"Right");Li.prototype[t]=function(){return this.__filtered__?new Li(this):this[i](1)}})),Li.prototype.compact=function(){return this.filter(el)},Li.prototype.find=function(t){return this.filter(t).head()},Li.prototype.findLast=function(t){return this.reverse().find(t)},Li.prototype.invokeMap=Hn((function(t,e){return"function"==typeof t?new Li(this):this.map((function(i){return In(i,t,e)}))})),Li.prototype.reject=function(t){return this.filter(Es(ro(t)))},Li.prototype.slice=function(e,i){e=fa(e);var n=this;return n.__filtered__&&(e>0||i<0)?new Li(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),i!==t&&(n=(i=fa(i))<0?n.dropRight(-i):n.take(i-e)),n)},Li.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},Li.prototype.toArray=function(){return this.take(c)},gn(Li.prototype,(function(e,i){var n=/^(?:filter|find|map|reject)|While$/.test(i),r=/^(?:head|last)$/.test(i),o=Wi[r?"take"+("last"==i?"Right":""):i],s=r||/^find/.test(i);o&&(Wi.prototype[i]=function(){var i=this.__wrapped__,a=r?[1]:arguments,l=i instanceof Li,c=a[0],h=l||Vs(i),u=function(t){var e=o.apply(Wi,Ae([t],a));return r&&f?e[0]:e};h&&n&&"function"==typeof c&&1!=c.length&&(l=h=!1);var f=this.__chain__,d=s&&!f,p=l&&!this.__actions__.length;if(!s&&h){i=p?i:new Li(this);var b=e.apply(i,a);return b.__actions__.push({func:us,args:[u],thisArg:t}),new Pi(b,f)}return d&&p?e.apply(this,a):(b=this.thru(u),d?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);Wi.prototype[t]=function(){var t=arguments;if(n&&!this.__chain__){var r=this.value();return e.apply(Vs(r)?r:[],t)}return this[i]((function(i){return e.apply(Vs(i)?i:[],t)}))}})),gn(Li.prototype,(function(t,e){var i=Wi[e];if(i){var n=i.name+"";Ft.call(Ii,n)||(Ii[n]=[]),Ii[n].push({name:e,func:i})}})),Ii[Wr(t,2).name]=[{name:"wrapper",func:t}],Li.prototype.clone=function(){var t=new Li(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},Li.prototype.reverse=function(){if(this.__filtered__){var t=new Li(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},Li.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,i=Vs(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,f=0,d=bi(l,this.__takeCount__);if(!i||!n&&r==l&&d==l)return hr(t,this.__actions__);var p=[];t:for(;l--&&f<d;){for(var b=-1,v=t[c+=e];++b<u;){var g=h[b],k=g.type,y=(0,g.iteratee)(v);if(2==k)v=y;else if(!y){if(1==k)continue t;break t}}p[f++]=v}return p},Wi.prototype.at=fs,Wi.prototype.chain=function(){return hs(this)},Wi.prototype.commit=function(){return new Pi(this.value(),this.__chain__)},Wi.prototype.next=function(){this.__values__===t&&(this.__values__=ha(this.value()));var e=this.__index__>=this.__values__.length;return{done:e,value:e?t:this.__values__[this.__index__++]}},Wi.prototype.plant=function(e){for(var i,n=this;n instanceof $i;){var r=Ro(n);r.__index__=0,r.__values__=t,i?o.__wrapped__=r:i=r;var o=r;n=n.__wrapped__}return o.__wrapped__=e,i},Wi.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof Li){var i=e;return this.__actions__.length&&(i=new Li(this)),(i=i.reverse()).__actions__.push({func:us,args:[Jo],thisArg:t}),new Pi(i,this.__chain__)}return this.thru(Jo)},Wi.prototype.toJSON=Wi.prototype.valueOf=Wi.prototype.value=function(){return hr(this.__wrapped__,this.__actions__)},Wi.prototype.first=Wi.prototype.head,Xt&&(Wi.prototype[Xt]=function(){return this}),Wi}();fe?((fe.exports=fi)._=fi,ue._=fi):he._=fi}.call(ot.exports)),ot.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 at{_core;_debounceUpdate;_debounceEndScaling;_velocityX=0;_velocityY=0;_panRafId=null;_friction=.92;_minVelocity=.5;initialTouchDistance=0;startX=0;startY=0;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()}handleResize(){this._core.store.state.viewportWidth=this._core.store.state.host.clientWidth,this._core.store.state.viewportHeight=this._core.store.state.host.clientHeight,this._core.store.state.hasViewportChanged=!0,this._core.rerender()}handlePointerDown(t){if("mouse"===t.pointerType){const e=t.clientX-this._core.store.offsetX,i=t.clientY-this._core.store.offsetY;t.button===b.Right&&(this._core.store.state.isPanning=!0,this._core.store.state.startX=e,this._core.store.state.startY=i)}if("touch"===t.pointerType){const t=Array.from(this._core.store.state.pointers.values());if(2===t.length){const e=this._core.store.currentPath;e&&this._core.store.state.objects.remove((t=>t.id===e.id)),this._core.store.state.isScaling=!0;const i=t[0].clientX-this._core.store.offsetX,n=t[0].clientY-this._core.store.offsetY,r=t[1].clientX-this._core.store.offsetX,o=t[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.state.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.state.isPanning){const t=n-this._core.store.state.startY;this._core.store.state.translateX+=i-this._core.store.state.startX,this._core.store.state.translateY+=t,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){const e=this._core.store.state.host.getBoundingClientRect(),i=t.clientY-e.top;this._core.store.state.pointerX=(t.clientX-e.left-this._core.store.state.translateX)/this._core.store.state.scale,this._core.store.state.pointerY=(i-this._core.store.state.translateY)/this._core.store.state.scale;const n=Array.from(this._core.store.state.pointers.values());if(2===n.length){const t=n[0].clientX-this._core.store.offsetX,e=n[0].clientY-this._core.store.offsetY,i=n[1].clientX-this._core.store.offsetX,r=n[1].clientY-this._core.store.offsetY,o=Math.sqrt(Math.pow(t-i,2)+Math.pow(e-r,2)),s=(t+i)/2,a=(e+r)/2,l=o/this.initialTouchDistance,c=this._core.store.state.scale*l;if(c>this._core.store.state.scaleMax||c<this._core.store.state.scaleMin)this._core.store.state.translateX=this._core.store.state.translateX+s-this.startX,this._core.store.state.translateY=this._core.store.state.translateY+a-this.startY;else{const t=(a-this._core.store.state.translateY)*(l-1);this._core.store.state.translateX=this._core.store.state.translateX+s-this.startX-(s-this._core.store.state.translateX)*(l-1),this._core.store.state.translateY=this._core.store.state.translateY+a-this.startY-t,this._core.store.state.scale=c,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&&0===this._core.store.state.pointers.size&&this._debounceEndScaling()}handleWheel(t){t.preventDefault(),!0===t.ctrlKey&&Math.abs(t.deltaY)>0&&0===Math.abs(t.deltaX)&&this.handleZoom(t),t.ctrlKey||this.handlePan(t)}centerInViewport(t){const{scale:e,viewportWidth:i,viewportHeight:n}=this._core.store.state,{x:r,y:o,width:s,height:a}=t.rotatedBoundingBox,l=o+a/2;this._core.store.state.translateX=i/2-(r+s/2)*e,this._core.store.state.translateY=n/2-l*e,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._core.store.state.scaleMin);this._core.store.state.scale=i,this.centerInViewport(t)}handleZoom(t){this._core.store.state.isScaling=!0;const e=this._core.store.state.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;const r=Math.max(.8,Math.min(1.2,1+-.012*t.deltaY)),o=Math.min(this._core.store.state.scaleMax,Math.max(this._core.store.state.scaleMin,this._core.store.state.scale*r)),s=o/this._core.store.state.scale,a=(i-this._core.store.state.translateX)*(s-1),l=(n-this._core.store.state.translateY)*(s-1);this._core.store.state.scale=o,this._core.store.state.translateX=this._core.store.state.translateX-a,this._core.store.state.translateY=this._core.store.state.translateY-l,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),this._debounceUpdate(),this._debounceEndScaling()}handlePan(t){let e=t.deltaX,i=t.deltaY;1===t.deltaMode?(e*=16,i*=16):2===t.deltaMode&&(e*=window.innerWidth,i*=window.innerHeight),this._velocityX=.8*-e,this._velocityY=.8*-i,null===this._panRafId&&this._animatePan()}_animatePan(){this._core.store.state.translateX+=this._velocityX,this._core.store.state.translateY+=this._velocityY,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),this._velocityX*=this._friction,this._velocityY*=this._friction,Math.abs(this._velocityX)>this._minVelocity||Math.abs(this._velocityY)>this._minVelocity?this._panRafId=requestAnimationFrame((()=>this._animatePan())):(this._velocityX=0,this._velocityY=0,this._panRafId=null,this._debounceUpdate())}}class lt extends S{shortcuts=[{key:"Escape",condition:t=>!!t.store.selectionGroup,action:t=>t.clearSelection()},{key:"Delete",condition:t=>!!t.store.selectionGroup,action:t=>t.delete()},{key:"z",ctrl:!0,action:t=>t.undo()},{key:"y",ctrl:!0,action:t=>t.redo()},{key:"s",ctrl:!0,action:()=>this.switchTool("selection")},{key:"b",ctrl:!0,action:()=>this.switchTool("brush")},{key:"e",ctrl:!0,action:()=>this.switchTool("eraser")},{key:"i",ctrl:!0,action:()=>this.switchTool("image")},{key:"x",ctrl:!0,action:()=>this.switchTool("text")},{key:"c",ctrl:!0,condition:t=>!!t.store.selectionGroup,action:t=>{t.copy(),t.rerender()}},{key:"v",ctrl:!0,condition:t=>!!t.store.state.copiedObjects&&!t.store.activeText,action:t=>t.paste()},{key:"+",ctrl:!0,condition:t=>!!t.store.selectionGroup,action:t=>t.bringForward()},{key:"-",ctrl:!0,condition:t=>!!t.store.selectionGroup,action:t=>t.sendBackward()},{key:"*",shift:!0,condition:t=>!!t.store.selectionGroup,action:t=>t.bringToFront()},{key:"_",shift:!0,condition:t=>!!t.store.selectionGroup,action:t=>t.sendToBack()},{key:"g",ctrl:!0,condition:t=>!!t.store.selectionGroup&&t.store.selectionGroup.objects.length>=2,action:t=>t.group()},{key:"G",ctrl:!0,shift:!0,condition:t=>!!t.store.selectionGroup,action:t=>t.ungroup()}];constructor(t){super(t)}switchTool(t){const e=l.getTool(t);this._core.store.setState("activeTool",e),this._core.deselectAllObjects(),e.onActivate()}handleKeyDown(t){this._core.store.state.isCtrlKeyPressed=t.ctrlKey;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}}class ct extends S{globalContextMenuItems=[];objectContextMenuItems=[];constructor(t,e,i){super(t),this.globalContextMenuItems=e,this.objectContextMenuItems=i}handleContextMenu(t){if(!(this._core.store.state.activeTool instanceof h))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.state.objects.remove((t=>t instanceof M)),this._core.store.state.isSelecting=!1);const i=this._core.getObjectFromPointerEvent(t,".object");if(i&&!(i instanceof I)&&!(i instanceof M)){const t=I.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;let n=t.clientX-this._core.store.offsetX,r=t.clientY-this._core.store.offsetY;const o=10;n+150>window.innerWidth-o&&(n=window.innerWidth-150-o),r+200>window.innerHeight-o&&(r=window.innerHeight-200-o),n=Math.max(o,n),r=Math.max(o,r),this._core.store.state.contextMenuX=n,this._core.store.state.contextMenuY=r,this._core.store.state.isContextMenuVisible=!0,this._core.store.state.isEnabled=!1,this._core.rerender()}}const ht={activeWorkspace:null,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,isCtrlKeyPressed:!1,isContextMenuVisible:!1,contextMenuItems:[],contextMenuX:0,contextMenuY:0,skipContextMenu:!1,debugInfo:{showObjectInfo:!1,showViewportInfo:!1},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"}};class ut extends j{__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 ut(e);return i._core=t,i.id=i.generateId(),i.workspaceId=t.store.state.activeWorkspace.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.state.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 ft{_core;constructor(t){this._core=t}revive(t){if(t&&"object"==typeof t){if(t.__class__){let e;switch(t.__class__){case"KritzelPath":e=E.create(this._core).deserialize(t);break;case"KritzelLine":e=F.create(this._core).deserialize(t);break;case"KritzelText":e=A.create(this._core,t.fontSize,t.fontFamily).deserialize(t);break;case"KritzelShape":e=a.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=T.create(this._core).deserialize(t);break;case"KritzelCustomElement":e=ut.create(this._core).deserialize(t);break;case"KritzelSelectionGroup":e=I.create(this._core).deserialize(t);break;case"KritzelGroup":e=_.create(this._core).deserialize(t);break;case"KritzelWorkspace":e=x.create(this._core,t).deserialize(t);break;case"KritzelBrushTool":e=new u(this._core);break;case"KritzelEraserTool":e=new y(this._core);break;case"KritzelImageTool":e=new w(this._core);break;case"KritzelSelectionTool":e=new h(this._core);break;case"KritzelTextTool":e=new d(this._core);break;case"KritzelLineTool":e=new f(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}}class dt{bounds;capacity;objects=[];children=null;constructor(t,e=16){this.bounds=t,this.capacity=e}reset(){this.objects=[],this.children=null}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),!0;null===this.children&&this.subdivide();for(const e of this.children)if(e.insert(t))return!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){const e=this.objects.findIndex((e=>t(e)));if(-1!==e&&this.objects.splice(e,1),null!==this.children)for(const e of this.children)e.remove(t)}query(t){const e=[];if(!this.intersects(t,this.bounds))return e;for(const i of this.objects)this.intersects(i.rotatedBoundingBox,t)&&e.push(i);if(null!==this.children)for(const i of this.children)e.push(...i.query(t));return e}filter(t){const e=this.objects.filter((e=>t(e)));if(null!==this.children)for(const i of this.children)e.push(...i.filter(t));return e}allObjects(){const t=[...this.objects];if(null!==this.children)for(const e of this.children)t.push(...e.allObjects());return t}subdivide(){const{x:t,y:e,z:i,width:n,height:r}=this.bounds,o=n/2,s=r/2;this.children=[new dt({x:t,y:e,z:i,width:o,height:s},this.capacity),new dt({x:t+o,y:e,z:i,width:o,height:s},this.capacity),new dt({x:t,y:e+s,z:i,width:o,height:s},this.capacity),new dt({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 pt{quadtree;_ydoc=null;_objectsMap=null;_providers=[];_undoManager=null;_reviver=null;_core=null;_workspaceId=null;_isReady=!1;_temporaryItemsCount=0;get isReady(){return this._isReady}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}}constructor(){this.quadtree=new dt({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 ft(t),this._ydoc=new O,this._objectsMap=this._ydoc.getMap("objects");const n=`kritzel-workspace-${e}`,r=i??D;for(const t of r.providers){let e;e="function"==typeof t?new t(n,this._ydoc):t.create(n,this._ydoc),this._providers.push(e)}this._undoManager=new W([this._objectsMap],{captureTimeout:200,trackedOrigins:new Set(["local","temporary"]),ignoreRemoteMapChanges:!0}),this._undoManager.on("stack-item-added",(t=>{"undo"===t.type&&"temporary"===t.origin&&this._temporaryItemsCount++})),this._undoManager.on("stack-item-popped",(t=>{"undo"===t.type&&"temporary"===t.origin&&this._temporaryItemsCount>0&&this._temporaryItemsCount--})),this._objectsMap.observe((t=>{this.handleObjectsChange(t)})),await Promise.all(this._providers.map((t=>t.connect()))),this._isReady=!0,this.loadFromYjs()}handleObjectsChange(t){if("local"===t.transaction.origin||"temporary"===t.transaction.origin)return void this._core?.rerender();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 I?n.push(e):i.push(e)}}})),r.forEach((t=>{this.quadtree.remove((e=>e.id===t))})),i.forEach((t=>{this.quadtree.filter((e=>e.id===t.id)).length>0?this.quadtree.update(t):this.quadtree.insert(t)})),n.forEach((t=>{this.quadtree.filter((e=>e.id===t.id)).length>0?this.quadtree.update(t):this.quadtree.insert(t)})),this._core?.rerender()}transaction(t){this._ydoc&&this._ydoc.transact(t,"local")}loadFromYjs(){this._objectsMap&&this._reviver&&(this.quadtree.reset(),this._objectsMap.forEach((t=>{const e=this._reviver.revive(t);this.quadtree.insert(e)})))}reset(){this.quadtree.reset(),this._ydoc.transact((()=>{this._objectsMap.clear()}),"local")}insert(t){if(!t.id)return!1;if(this.quadtree.insert(t),this._objectsMap&&this.isPersistable(t)){const e=t.serialize();this._ydoc.transact((()=>{this._objectsMap.set(t.id,e)}),"local")}return!0}update(t,e={}){if(!t.id)return!1;if(!(this.quadtree.filter((e=>e.id===t.id)).length>0))return!1;if(this.quadtree.update(t),this._objectsMap&&this.isPersistable(t)){const i=t.serialize();this._ydoc.transact((()=>{this._objectsMap.set(t.id,i)}),e.temporary?"temporary":"local")}return!0}remove(t){const e=this.quadtree.filter(t);for(const t of e)this.quadtree.remove((e=>e.id===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 M)}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._providers.forEach((t=>t.destroy())),this._providers=[],this._ydoc&&this._ydoc.destroy()}}class bt{_state;_listeners=new Map;get state(){return this._state}get currentZIndex(){return Math.max(0,...this._state.objects.filter((t=>!(t instanceof I||t instanceof M))).map((t=>t.zIndex)))+1}get allObjects(){return this._state.objects.allObjects()}get allNonSelectionObjects(){return this._state.objects.allObjects().filter((t=>!(t instanceof I||t instanceof M)))}get selectedObjects(){return this.allObjects.filter((t=>!(t instanceof I))).filter((t=>t.isSelected))}get selectionBox(){const t=this._state.objects.filter((t=>t instanceof M));return t.length>0?t[0]:null}get selectionGroup(){const t=this._state.objects.filter((t=>t instanceof I));return t.length>0?t[0]:null}get activeText(){const t=this._state.objects.filter((t=>t instanceof A&&t.isEditing));return t.length>0?t[0]:null}get activeShape(){const t=this._state.objects.filter((t=>t instanceof a&&t.isEditing));return t.length>0?t[0]:null}get currentPath(){const t=this._state.objects.filter((t=>t instanceof E&&!1===t.isCompleted));return t.length>0?t[0]:null}get currentLine(){const t=this._state.objects.filter((t=>t instanceof F&&!1===t.isCompleted));return t.length>0?t[0]:null}get offsetX(){return this._state.host.getBoundingClientRect().left}get offsetY(){return this._state.host.getBoundingClientRect().top}get isDisabled(){return!1===this._state.isEnabled||!1===this._state.isReady||null===this._state.activeWorkspace}get isPointerDown(){return this._state.pointers.size>0}constructor(t){this._state=t,this._state.objects=new pt}onStateChange(t,e){this._listeners.has(t)||this._listeners.set(t,new Set),this._listeners.get(t).add(e)}getState(t){return this._state[t]}setState(t,e){const i=this._state[t];i!==e&&(this._state[t]=e,this._listeners.has(t)&&this._listeners.get(t).forEach((n=>n(e,i,String(t)))))}}class vt{_core;_targetElement=null;_shadowRoot=null;constructor(t){this._core=t}setTargetElement(t){this._targetElement&&(this._targetElement.style.cursor="",this._targetElement.style.removeProperty("--kritzel-pointer-cursor")),this._targetElement=t,this._targetElement&&this._targetElement.style.setProperty("--kritzel-pointer-cursor",R.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=R.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 gt{_kritzelEngine;_store;_syncConfig;_appStateMap;_anchorManager;_cursorManager;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}constructor(t){this._kritzelEngine=t,this._store=new bt(ht),this._appStateMap=new $,this._anchorManager=new P(this),this._cursorManager=new vt(this)}setSyncConfig(t){this._syncConfig=t}async initializeYjs(){await this._appStateMap.initialize(this,this._syncConfig)}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){const e=this.loadWorkspacesFromAppState(),i=e.length>0?[...e].sort(((t,e)=>e.updatedAt.getTime()-t.updatedAt.getTime()))[0]:null,n=localStorage.getItem("kritzel-active-workspace-id"),r=n?e.find((t=>t.id===n)):null;let o;t?(o=t,e.find((e=>e.id===t.id))||(o._core=this,this.saveWorkspaceToAppState(o))):r?o=r:i?o=i:(o=new x(L.generateUUID(),"New Workspace"),o._core=this,this.saveWorkspaceToAppState(o)),localStorage.setItem("kritzel-active-workspace-id",o.id),this._store.state.objects&&this._store.state.objects.isReady&&this._store.state.objects.destroy();const s=new pt;this._store.state.objects=s,this._store.state.activeWorkspace=o,this._store.state.workspaces=this.loadWorkspacesFromAppState();const a=o.viewport??{translateX:0,translateY:0,scale:1};this._store.state.translateX=a.translateX??0,this._store.state.translateY=a.translateY??0,this._store.state.scale=a.scale??1,await s.initialize(this,o.id,this._syncConfig),this._anchorManager.rebuildIndex(),this.engine.emitObjectsChange(),this.rerender()}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);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._store.state.objects?.destroy(),this.deleteWorkspaceFromAppState(t.id),this._store.state.workspaces=this.loadWorkspacesFromAppState(),window.indexedDB.deleteDatabase(`kritzel-workspace-${t.id}`)}updateWorkspaceViewport(t,e,i){const n=this._store.state.activeWorkspace;n&&(n.viewport={translateX:t,translateY:e,scale:i},n.updatedAt=new Date,this.saveWorkspaceToAppState(n))}addObject(t){this._store.state.objects.insert(t)}removeObject(t,e=!1){t instanceof _&&!e&&[...t.children].forEach((t=>{this.removeObject(t)})),t instanceof F?this._anchorManager.handleLineDeleted(t.id):this._anchorManager.handleObjectDeleted(t.id),t.isMounted=!1,this._store.state.objects.remove((e=>e.id===t.id))}updateObject(t,e){for(const i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);this._store.state.objects.update(t)}addSelectionGroup(t){this.removeSelectionGroup(),this.removeSelectionBox(),this._store.state.objects.insert(t),this._kritzelEngine.triggerSelectionChange()}removeSelectionGroup(){const t=this._store.selectionGroup;t&&(this._store.state.objects.remove((e=>e.id===t.id)),this._kritzelEngine.triggerSelectionChange())}removeSelectionBox(){const t=this._store.selectionBox;t&&this._store.state.objects.remove((e=>e.id===t.id))}deselectAllObjects(){this.removeSelectionGroup(),this.rerender()}delete(){const t=this._store.selectionGroup;t&&(t.objects.forEach((t=>this.removeObject(t))),this.removeSelectionGroup(),this.rerender())}undo(){this._store.state.objects?.undo()}redo(){this._store.state.objects?.redo()}deleteObject(t){const e=this.findObjectById(t);e&&(this.removeObject(e),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}}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 c,h;void 0!==t&&void 0!==e?(c=t,h=e):o?(c=s,h=a):(c=s+25/this._store.state.scale,h=a+25/this._store.state.scale);const u=c-s,f=h-a;this.removeSelectionGroup(),this.removeSelectionBox();const d=I.create(this),p=new Map;r&&r.forEach(((t,e)=>{p.set(t,e)})),i.forEach(((t,e)=>{if(t.workspaceId!==n.id&&(t.workspaceId=n.id),t.updatePosition(t.translateX+u,t.translateY+f),t.zIndex=this._store.currentZIndex+e,t instanceof _){const i=t._pendingChildren;i&&(i.forEach(((t,i)=>{t.workspaceId!==n.id&&(t.workspaceId=n.id),t.updatePosition(t.translateX+u,t.translateY+f),t.zIndex=this._store.currentZIndex+e+i,this.addObject(t)})),delete t._pendingChildren,t.finalize())}this.addObject(t),d.addOrRemove(t)})),i.forEach((t=>{if(t instanceof F){let e=!1;t.startAnchor&&p.has(t.startAnchor.objectId)&&(t.startAnchor={objectId:p.get(t.startAnchor.objectId)},e=!0),t.endAnchor&&p.has(t.endAnchor.objectId)&&(t.endAnchor={objectId:p.get(t.endAnchor.objectId)},e=!0),e&&this._store.state.objects.update(t)}})),this._anchorManager.rebuildIndex(),d.isSelected=!0,1===i.length&&(d.rotation=i[0].rotation),this.addSelectionGroup(d),o&&(void 0!==t&&void 0!==e?d.updatePosition(t,e):d.centerInViewport(),this.engine.viewport.centerFitInViewport(d)),this._store.state.isSelecting=!1;const b=this._store.selectionGroup;if(b){const t=new Map,e=b.objects.sort(((t,e)=>t.zIndex-e.zIndex)).map((e=>{const i=e.copy();return t.set(i.id,e.id),i}));this._store.state.copiedObjects=e,this._store.state.copiedObjectIdMapping=t}this._store.setState("activeTool",l.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()}group(){const t=this._store.selectionGroup;if(!t||t.objects.length<2)return;const e=_.createFromObjects(this,t.objects);this.addObject(e),this.removeSelectionGroup();const i=I.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=>t instanceof _));if(0===e.length)return;const i=[],n=t.objects.filter((t=>!(t instanceof _)));e.forEach((t=>{const e=t.ungroup();i.push(...e),this.removeObject(t,!0)})),this.removeSelectionGroup();const r=I.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=I.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()}selectAllObjectsInViewport(){const t=this._store.state.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 I||t instanceof M||t instanceof H)));if(t.length>0){const e=I.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",l.getTool("selection")),this.rerender()}}clearSelection(){this.removeSelectionGroup(),this._store.state.objects.remove((t=>t instanceof M||t instanceof I)),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=null,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)),e=t?.hitTest(n,r);return e?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",l.getTool("selection"))}displaySelectionGroupUI(t){if(!t.isSelected)return!1;const e=this._store.selectionGroup;return e?e.objects.length>1||(1!==e.objects.length||!(e.objects[0]instanceof F)):!(t instanceof F)}displaySelectionLineUI(t){if(!(t instanceof F))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 F&&i.id===t.id}return!1}}const kt=class{get host(){return r(this)}workspace;syncConfig;onWorkspaceChange(t){const e=this.core.store.state.activeWorkspace?.id,i=t?.id;e!==i&&(this.core.beforeWorkspaceChange(),this.core.initializeWorkspace(t))}activeTool;globalContextMenuItems;objectContextMenuItems;scaleMax=Q;validateScaleMax(t){t>Q?(console.warn("scaleMax cannot be greater than 1000."),this.scaleMax=Q,this.core.store.state.scaleMax=this.scaleMax):this.core.store.state.scaleMax=t}scaleMin=tt;validateScaleMin(t){t<tt?(console.warn("scaleMin cannot be less than 0.0001."),this.scaleMin=tt,this.core.store.state.scaleMin=this.scaleMin):this.core.store.state.scaleMin=t}cursorTarget;onCursorTargetChange(t){this.core.cursorManager.setTargetElement(t||document.body)}isEngineReady;activeToolChange;objectsSelectionChange;workspacesChange;longpress;objectsChange;undoStateChange;forceUpdate=0;async triggerSelectionChange(){this.objectsSelectionChange.emit()}throttledWheel=st.throttle((t=>{this.viewport.handleWheel(t),this.core.store.state?.activeTool?.handleWheel(t)}),16);handleWheel(t){this.core.store.isDisabled||(this.core.store.state.isContextMenuVisible&&this.hideContextMenu(),this.throttledWheel(t))}handlePointerDown(t){this.core.store.isDisabled||(p.isTouchDevice()&&c.onLongPress(t,(t=>this.longpress.emit(t))),this.host.setPointerCapture(t.pointerId),this.core.store.state.pointers.set(t.pointerId,t),this.viewport.handlePointerDown(t),this.core.store.state?.activeTool?.handlePointerDown(t))}throttledPointerMoveMulti=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){this.core.store.isDisabled||(this.core.store.state.pointers.delete(t.pointerId),this.host.releasePointerCapture(t.pointerId),0===this.core.store.state.pointers.size&&this.core.cursorManager.resetToDefault(),this.viewport.handlePointerUp(t),this.core.store.state?.activeTool?.handlePointerUp(t))}handlePointerCancel(t){this.core.store.isDisabled||(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))}handleLongPress(t){this.contextMenuHandler.handleContextMenu(t.detail)}handleContextMenu(t){t.preventDefault(),this.core.store.isDisabled||"touch"!==t.pointerType&&this.contextMenuHandler.handleContextMenu(t)}handleResize(){this.viewport.handleResize()}handleKeyDown(t){this.core.store.isDisabled||this.keyHandler.handleKeyDown(t)}handleKeyUp(t){this.core.store.isDisabled||this.keyHandler.handleKeyUp(t)}preventDoubleTapZoomOnTouchDevices(t){t.preventDefault()}async registerTool(t,e,i){if("function"!=typeof e||!(e.prototype instanceof o))return console.error(`Failed to register tool "${t}": Tool class must be a constructor function`),null;const n=l.registerTool(t,e,this.core);return i&&Object.entries(i).forEach((([t,e])=>{n[t]=e})),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 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 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 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.state.objects.remove((t=>t instanceof M)),this.core.store.state.isSelecting=!1,this.core.store.state.isEnabled=!0,this.core.rerender()}async getObjectById(t){return this.core.store.allObjects.find((e=>e.id===t))||null}async addObject(t){return this.core.deselectAllObjects(),t.id=t.generateId(),t._core=this.core,t.scale=t.scale?t.scale:this.core.store.state.scale,t.zIndex=this.core.store.currentZIndex,this.core.addObject(t),this.core.rerender(),t}async updateObject(t,e){return this.core.deselectAllObjects(),this.core.updateObject(t,e),this.core.rerender(),t}async removeObject(t){return this.core.deselectAllObjects(),this.core.store.state.objects.remove((e=>e.id===t.id)),this.core.rerender(),t}async getSelectedObjects(){const t=this.core.store.selectionGroup;return t?t.objects:[]}async selectObjects(t){this.core.store.state.activeTool?.onDeactivate(),this.core.store.setState("activeTool",l.getTool("selection")),this.core.deselectAllObjects(),this.core.selectObjects(t)}async selectAllObjectsInViewport(){this.core.store.state.activeTool?.onDeactivate(),this.core.store.setState("activeTool",l.getTool("selection")),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 getCopiedObjects(){return this.core.store.state.copiedObjects||[]}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(){return this.core.store.state.activeWorkspace}core;viewport;contextMenuHandler;keyHandler;contextMenuElement=null;get isSelecting(){return this.core.store.state.activeTool instanceof h&&this.core.store.state.isSelecting}get isSelectionActive(){return this.core.store.state.activeTool instanceof h&&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.longpress=n(this,"longpress"),this.objectsChange=n(this,"objectsChange"),this.undoStateChange=n(this,"undoStateChange"),this.core=new gt(this)}disconnectedCallback(){this.throttledWheel.cancel(),this.throttledPointerMoveMulti.cancel(),this.core.cursorManager.cleanup()}componentWillLoad(){this.validateScaleMax(this.scaleMax),this.validateScaleMin(this.scaleMin)}async componentDidLoad(){this.contextMenuHandler=new ct(this.core,this.globalContextMenuItems,this.objectContextMenuItems),this.keyHandler=new lt(this.core),this.viewport=new at(this.core,this.host),this.core.cursorManager.setTargetElement(this.cursorTarget||document.body),this.core.cursorManager.setShadowRoot(this.host.shadowRoot),this.syncConfig&&this.core.setSyncConfig(this.syncConfig),await this.core.initializeYjs(),await this.core.initializeWorkspace(this.workspace),this.core.appStateMap.onRemoteChange((()=>{this.workspacesChange.emit(this.core.store.state.workspaces)})),this._registerStateChangeListeners(),!1===this.core.store.state.isReady&&(this.core.store.state.isReady=!0,this.isEngineReady.emit(this.core.store.state))}emitObjectsChange(){const t=this.core.store.state.objects.undoState;this.objectsChange.emit(this.core.store.allObjects),this.undoStateChange.emit(t)}_registerStateChangeListeners(){this.core.store.onStateChange("activeTool",this._handleActiveToolChange.bind(this))}_handleActiveToolChange(t){t instanceof h||(this.core.clearSelection(),this.core.store.state.objects.remove((t=>t instanceof M)),this.core.store.state.isSelecting=!1,this.core.store.state.isResizeHandleSelected=!1,this.core.store.state.isRotationHandleSelected=!1),this.core.store.state.skipContextMenu=!1,this.core.store.state.copiedObjects=null,this.activeToolChange.emit(t),C.forceHideKeyboard(),this.core.rerender()}render(){const t=window.getComputedStyle(this.host).getPropertyValue("--kritzel-selection-handle-size").trim()||"6px",n=parseFloat(t),r=2*n<14?14:n,o=this.core.store.state.viewportWidth/2+this.core.store.state.translateX,s=this.core.store.state.viewportHeight/2+this.core.store.state.translateY,a=this.core.store.state.objects.query({x:-this.core.store.state.translateX/this.core.store.state.scale,y:-this.core.store.state.translateY/this.core.store.state.scale,z:this.core.store.state.scale,width:this.core.store.state.viewportWidth/this.core.store.state.scale,height:this.core.store.state.viewportHeight/this.core.store.state.scale,depth:100}).sort(((t,e)=>t.zIndex-e.zIndex));return this.core.cursorManager.applyCursor(),e(i,{key:"49fbba9ba7044acb82cb23627bf08435f8683b80"},this.core.store.state.debugInfo.showViewportInfo&&e("div",{key:"7e18e66bdbae71ec35a6ea14bfdcd735e537a37b",class:"debug-panel"},e("div",{key:"562ff35d3803b80f3c02c075741f1c4b81ba0739"},"ActiveWorkspaceId: ",this.core.store.state?.activeWorkspace?.id),e("div",{key:"82d08ac0527017c9f3674e1d551a071b0002477e"},"ActiveWorkspaceName: ",this.core.store.state?.activeWorkspace?.name),e("div",{key:"e4e3b8c6f18714dbf141a900768b2fb78ef8ec3a"},"TranslateX: ",this.core.store.state?.translateX),e("div",{key:"68823a22db98800c7ec7b18770f38f03dd53f826"},"TranslateY: ",this.core.store.state?.translateY),e("div",{key:"4683676eca0796b927ac8c10fe9ea48770366ee5"},"ViewportWidth: ",this.core.store.state?.viewportWidth),e("div",{key:"fcbd728c4483f06cffe1e9d581399a9619b3c172"},"ViewportHeight: ",this.core.store.state?.viewportHeight),e("div",{key:"f713005a414bd05b187327b5ffa021c51f227d97"},"PointerCount: ",this.core.store.state.pointers.size),e("div",{key:"fdb4892c0b5df0a599d4e457d656ca8e71086033"},"Scale: ",this.core.store.state?.scale),e("div",{key:"7c1ceb6398ceccb891d5854a731467771d88e688"},"ActiveTool: ",this.core.store.state?.activeTool?.name),e("div",{key:"fddfb8b396ab095dd99158b32bf4c9a06745c65f"},"HasViewportChanged: ",this.core.store.state?.hasViewportChanged?"true":"false"),e("div",{key:"8b807879e83bada98ff44a9124dddc7e7f8d8516"},"IsEnabled: ",this.core.store.state?.isEnabled?"true":"false"),e("div",{key:"93827fa7bf4c27db8b3165a1d2be5d0cde5a65b6"},"IsScaling: ",this.core.store.state?.isScaling?"true":"false"),e("div",{key:"923455fb261bc9aa8d6cd22c74894e41dc6a2f93"},"IsPanning: ",this.core.store.state?.isPanning?"true":"false"),e("div",{key:"33579a767be0a80bed4a177da9577e6304d4900c"},"IsSelecting: ",this.isSelecting?"true":"false"),e("div",{key:"950c340bf725d7c8c92a51c61066c1aa7d09aa41"},"IsSelectionActive: ",this.isSelectionActive?"true":"false"),e("div",{key:"2a8ce1e6d68ea030f42521b25615bf60a1a8267e"},"IsResizeHandleSelected: ",this.core.store.state.isResizeHandleSelected?"true":"false"),e("div",{key:"9fd5a4b1a842c9aa178dc98dc9a210cf7d947615"},"IsRotationHandleSelected: ",this.core.store.state.isRotationHandleSelected?"true":"false"),e("div",{key:"81f9c6f9f5c38b48db1faaa8da08476cd747e906"},"IsRotationHandleHovered: ",this.core.store.state.isRotationHandleHovered?"true":"false"),e("div",{key:"bbea182105ab1f1856d8ffe7ee6dae2c96cefbae"},"IsDrawing: ",this.core.store.state.isDrawing?"true":"false"),e("div",{key:"0e57b3b517fc6f4780a6bf8b13a18e7d595e2e91"},"IsWriting: ",this.core.store.state.isWriting?"true":"false"),e("div",{key:"5be12fd92b4ccb6890680e725aea0f29fa16eda4"},"IsPointerDown: ",this.core.store.isPointerDown?"true":"false"),e("div",{key:"51402f4730b8e482ee534bb83944c50462d895af"},"PointerX: ",this.core.store.state?.pointerX),e("div",{key:"dddf5bed76a1755aec71ae7f30eab8dd0c39fdb0"},"PointerY: ",this.core.store.state?.pointerY),e("div",{key:"367166d068f34090eb895116d8ac1ddd3ab5aaad"},"SelectedObjects: ",this.core.store.selectionGroup?.objects.length||0),e("div",{key:"e88d10e302e4ff3e8cb877a509a883e2cffcc067"},"ViewportCenter: (",o.toFixed(2),", ",s.toFixed(2),")")),e("div",{key:"12bf294a8640947230611690f71b8c8116e861f4",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})`}},a?.map((t=>e("div",{key:t.id,style:{transform:t?.transformationMatrix,transformOrigin:"top left",position:"absolute",pointerEvents:this.core.store.state.isScaling?"none":"auto"}},e("svg",{xmlns:"http://www.w3.org/2000/svg",id:t.id,class:"object",style:{zIndex:t.zIndex.toString(),height:t?.totalHeight+"px",width:t?.totalWidth+"px",left:"0",top:"0",position:"absolute",transform:0!==t.rotationDegrees?`rotate(${t.rotationDegrees}deg)`:void 0,transformOrigin:0!==t.rotationDegrees?`${t.totalWidth/2}px ${t.totalHeight/2}px`:void 0,opacity:t.markedForRemoval?"0.5":t.opacity.toString(),pointerEvents:t.markedForRemoval?"none":"auto"}},U.isInstanceOf(t,"KritzelPath")&&e("svg",{ref:e=>t.mount(e),xmlns:"http://www.w3.org/2000/svg",style:{overflow:"visible"},viewBox:t?.viewBox},e("path",{d:t?.d,fill:t.fill,stroke:t?.stroke,"shape-rendering":t.isLowRes()?"optimizeSpeed":"auto"})),U.isInstanceOf(t,"KritzelLine")&&e("svg",{ref:e=>t.mount(e),xmlns:"http://www.w3.org/2000/svg",style:{overflow:"visible"},viewBox:t?.viewBox},e("defs",null,t.hasStartArrow&&e("marker",{id:t.startMarkerId,markerWidth:t.getArrowSize("start"),markerHeight:t.getArrowSize("start"),refX:0,refY:t.getArrowSize("start")/2,orient:"auto-start-reverse",markerUnits:"userSpaceOnUse"},e("path",{d:t.getArrowPath(t.arrows?.start?.style),fill:t.getArrowFill("start"),transform:`scale(${t.getArrowSize("start")/10})`})),t.hasEndArrow&&e("marker",{id:t.endMarkerId,markerWidth:t.getArrowSize("end"),markerHeight:t.getArrowSize("end"),refX:0,refY:t.getArrowSize("end")/2,orient:"auto",markerUnits:"userSpaceOnUse"},e("path",{d:t.getArrowPath(t.arrows?.end?.style),fill:t.getArrowFill("end"),transform:`scale(${t.getArrowSize("end")/10})`}))),e("path",{d:this.core.anchorManager.computeClippedLinePath(t),fill:"none",stroke:"transparent","stroke-width":Math.max(t?.strokeWidth||0,10),"stroke-linecap":"round"}),e("path",{d:this.core.anchorManager.computeClippedLinePath(t),fill:"none",stroke:t?.stroke,"stroke-width":t?.strokeWidth,"stroke-linecap":"round","marker-start":t.hasStartArrow?`url(#${t.startMarkerId})`:void 0,"marker-end":t.hasEndArrow?`url(#${t.endMarkerId})`:void 0})),e("foreignObject",{x:"0",y:"0",width:t.totalWidth.toString(),height:t.totalHeight.toString(),style:{minHeight:"0",minWidth:"0",backgroundColor:t.backgroundColor,borderColor:t.borderColor,borderWidth:t.borderWidth+"px",borderStyle:"solid",padding:t.padding+"px",overflow:"visible",display:U.isInstanceOf(t,"KritzelLine")||U.isInstanceOf(t,"KritzelPath")?"none":"block"}},U.isInstanceOf(t,"KritzelImage")&&e("img",{ref:e=>t.mount(e),src:t.src,style:{width:"100%",height:"100%",userSelect:"none",pointerEvents:"none",imageRendering:this.core.store.state.isScaling||this.core.store.state.isPanning?"pixelated":"auto"},draggable:!1,onDragStart:t=>t.preventDefault()}),U.isInstanceOf(t,"KritzelText")&&e("div",{id:"text-object",ref:e=>t.mount(e),onPointerDown:e=>t.handlePointerDown(e),onPointerMove:e=>t.handlePointerMove(e),onPointerUp:e=>t.handlePointerUp(e),style:{minWidth:t.initialWidth+"px",minHeight:t.initialHeight+"px",maxWidth:"500px",height:"auto",width:"max-content",transformOrigin:"top left",transform:`scale(${t.scaleFactor})`,backgroundColor:t.backgroundColor,overflow:"visible",textRendering:this.core.store.state.isScaling||this.core.store.state.isPanning?"optimizeSpeed":"auto"}}),U.isInstanceOf(t,"KritzelShape")&&e("div",{ref:e=>t.mount(e),onPointerDown:e=>t.handlePointerDown(e),onPointerMove:e=>t.handlePointerMove(e),onPointerUp:e=>t.handlePointerUp(e),style:{width:"100%",height:"100%",position:"relative",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:t.viewBox,preserveAspectRatio:"none"},e("path",{d:t.getSvgPath(),fill:t.fillColor,stroke:t.strokeColor,"stroke-width":t.strokeWidth})),e("div",{ref:e=>t.mountTextEditor(e),style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",textAlign:"center",overflow:"hidden",pointerEvents:t.isEditing?"auto":"none"}})),U.isInstanceOf(t,"KritzelCustomElement")&&e("div",{ref:e=>t.mount(e),style:{width:"100%",height:"100%",pointerEvents:"auto",overflow:"hidden",display:"block"}}),U.isInstanceOf(t,"KritzelSelectionGroup")&&!this.core.displaySelectionLineUI(t)&&e("div",{ref:e=>t.mount(e),style:{width:"100%",height:"100%"}}),U.isInstanceOf(t,"KritzelSelectionBox")&&e("div",{ref:e=>t.mount(e),style:{width:"100%",height:"100%",backgroundColor:p.isFirefox()?t.backgroundColor:"transparent",borderWidth:p.isFirefox()?t.borderWidth+"px":"0",borderStyle:p.isFirefox()?"solid":"none",borderColor:p.isFirefox()?t.borderColor:"transparent"}}))),this.core.store.state.debugInfo.showObjectInfo&&t.isDebugInfoVisible&&e("div",{style:{pointerEvents:"none",position:"absolute",left:`${t.totalWidth}px`,top:"0",zIndex:(t.zIndex+2).toString()}},e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"Id: ",t.id),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"width: ",t.width),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"height: ",t.height),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"translateX: ",t.translateX),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"translateY: ",t.translateY),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"rotationDegrees: ",t.rotationDegrees),e("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"zIndex: ",t.zIndex)),e("svg",{xmlns:"http://www.w3.org/2000/svg",style:{zIndex:(t.zIndex+1).toString(),height:t?.totalHeight.toString(),width:t?.totalWidth.toString(),left:"0",top:"0",position:"absolute",transform:`rotate(${t.rotationDegrees}deg)`,transformOrigin:`${t.totalWidth/2}px ${t.totalHeight/2}px`,overflow:"visible",pointerEvents:"none"}},this.core.displaySelectionGroupUI(t)&&e("g",{class:"selection-group-ui",style:{pointerEvents:"none"}},e("g",{class:"selection-group-borders"},e("line",{x1:"0",y1:"0",x2:t.totalWidth,y2:"0",style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),e("line",{x1:"0",y1:"0",x2:"0",y2:t.totalHeight,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),e("line",{x1:"0",y1:t.totalHeight,x2:t.totalWidth,y2:t.totalHeight,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),e("line",{x1:t.totalWidth,y1:"0",x2:t.totalWidth,y2:t.totalHeight,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}})),!this.isSelecting&&e("g",{class:"selection-group-handles",style:{pointerEvents:"auto"}},e("circle",{class:"resize-handle top-left",cx:"0",cy:"0",r:""+n*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),e("circle",{class:"resize-handle-overlay top-left",cx:"0",cy:"0",r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),e("circle",{class:"resize-handle top-right",cx:t.totalWidth,cy:"0",r:""+n*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),e("circle",{class:"resize-handle-overlay top-right",cx:t.totalWidth,cy:"0",r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),e("circle",{class:"resize-handle bottom-left",cx:"0",cy:t.totalHeight,r:""+n*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),e("circle",{class:"resize-handle-overlay bottom-left",cx:"0",cy:t.totalHeight,r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),e("circle",{class:"resize-handle bottom-right",cx:t.totalWidth,cy:t.totalHeight,r:""+n*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),e("circle",{class:"resize-handle-overlay bottom-right",cx:t.totalWidth,cy:t.totalHeight,r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),e("line",{x1:t.totalWidth/2,y1:"0",x2:t.totalWidth/2,y2:-15*t.scale/this.core.store.state?.scale,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${this.core.store.state?.scale})`}}),e("circle",{class:"rotation-handle",cx:t.totalWidth/2,cy:-15*t.scale/this.core.store.state?.scale,r:""+n*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),e("circle",{class:"rotation-handle-overlay",cx:t.totalWidth/2,cy:-15*t.scale/this.core.store.state?.scale,r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}))),this.core.displaySelectionLineUI(t)&&U.isInstanceOf(t,"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(t,!0),style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"round",fill:"none"}})),!this.isSelecting&&e("g",{class:"selection-line-handles",style:{pointerEvents:"auto"}},e("circle",{class:"selection-line-handle start",cx:t.startX-t.x,cy:t.startY-t.y,r:""+n*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),e("circle",{class:"selection-line-handle-overlay start",cx:t.startX-t.x,cy:t.startY-t.y,r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),e("circle",{class:"selection-line-handle center",cx:void 0!==t.controlX?(t.startX+2*t.controlX+t.endX)/4-t.x:(t.startX-t.x+t.endX-t.x)/2,cy:void 0!==t.controlY?(t.startY+2*t.controlY+t.endY)/4-t.y:(t.startY-t.y+t.endY-t.y)/2,r:""+n*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),e("circle",{class:"selection-line-handle-overlay center",cx:void 0!==t.controlX?(t.startX+2*t.controlX+t.endX)/4-t.x:(t.startX-t.x+t.endX-t.x)/2,cy:void 0!==t.controlY?(t.startY+2*t.controlY+t.endY)/4-t.y:(t.startY-t.y+t.endY-t.y)/2,r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),e("circle",{class:"selection-line-handle end",cx:t.endX-t.x,cy:t.endY-t.y,r:""+n*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),e("circle",{class:"selection-line-handle-overlay end",cx:t.endX-t.x,cy:t.endY-t.y,r:""+r*t.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",{key:"9d17520994c59b7eca2940d1a05f4f150b790767",class:"context-menu",ref:t=>this.contextMenuElement=t,items:this.core.store.state.contextMenuItems,objects:this.core.store.selectionGroup?.objects||[],style:{position:"fixed",left:`${this.core.store.state.contextMenuX}px`,top:`${this.core.store.state.contextMenuY}px`,zIndex:"10002"},onActionSelected:t=>{t.detail.action({x:(-this.core.store.state.translateX+this.core.store.state.contextMenuX)/this.core.store.state.scale,y:(-this.core.store.state.translateY+this.core.store.state.contextMenuY)/this.core.store.state.scale},this.core.store.selectionGroup?.objects),this.hideContextMenu()},onClose:()=>this.hideContextMenu()}),this.core.store.state?.activeTool instanceof y&&!this.core.store.state.isScaling&&e("kritzel-cursor-trail",{key:"b86989f2a710324e420994f74bd8c4990cc52060",core:this.core}))}static get watchers(){return{workspace:[{onWorkspaceChange:0}],scaleMax:[{validateScaleMax:0}],scaleMin:[{validateScaleMin:0}],cursorTarget:[{onCursorTargetChange:0}]}}};kt.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}.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 yt=class{constructor(e){t(this,e)}fontFamily="Arial, sans-serif";size=24;color="#000000";render(){return e(i,{key:"47e1580b093d5c9039a5bc1a7764e345afb7700b"},e("div",{key:"1d6d36e895ab4e1fd76383b0847f81918e14dbb0",class:"font-preview",style:{fontFamily:this.fontFamily,fontSize:`${this.size}px`,color:this.color}},"A"))}};yt.style=":host{display:block}.font-preview{color:var(--kritzel-font-size-text-color, #333333);line-height:1;text-align:center;font-weight:bold}";const mt=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:"74f27d2d9f73ee8589448a24bed64e885ef6d2d8"},e("kritzel-dropdown",{key:"58abc26a54b124f253841faaa4ca4227a23baac2",options:t,value:this.selectedFontFamily,onValueChanged:this.handleDropdownValueChange,selectStyles:{fontFamily:this.selectedFontFamily}}))}};mt.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-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 wt=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:"ea8461f3b921c6adec6360ffcca69832a30e5808"},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})))))}};wt.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-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 xt=class{constructor(e){t(this,e)}name;label;size=24;render(){const t=z.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`},"?"))}};xt.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 zt=class{constructor(e){t(this,e),this.valueChange=n(this,"valueChange")}styles=["none","triangle"];value;strokeColor="#000000";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="#000000";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:"395c2c7e54986d9edffe7b1329361d9e0727d086"},e("div",{key:"9f29cb35182b74d73fe82a89f91be42da3e43d3f",class:"endings-section"},e("div",{key:"61f3e2bc9e3c2739e241213e68af71dd1091774e",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:"1e39f687277ebdd0786f56b9be40101df42495d2",class:"endings-section"},e("div",{key:"fbe2ea8393cbf82b7c7aff7d6d8ca16abab1020a",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)))))))}};zt.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-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-focus-ring-color, rgba(0, 122, 255, 0.3))}.ending-icon{width:100%;height:100%}";const Ct=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:"7143a116ad361651851491bce048901d6c0a02a0",tabIndex:0,onClick:t=>t.stopPropagation()},this.openChildMenuItem&&e("div",{key:"8a5524ca7516955e1be34d10b8495c7b40ac05dd",class:"has-open-child-overlay",onClick:this.onOverlayClick}),this.items.map((t=>e("kritzel-menu-item",{key: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}))))}};Ct.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:#ebebeb transparent;scrollbar-width:thin;max-height:var(--kritzel-portal-max-height, 300px);box-sizing:border-box}.has-open-child-overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:3}";const St=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(){if(this.item.isEditing&&this.inputRef&&!this.isDirty)if(this.inputRef.focus(),p.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=()=>{p.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"},e("div",null,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:"59a53dc472dd624f78dd773eb20a8722720ed465",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:"22665fedfa83e2483d97480a9c9e45da9d296319",class:"menu-item-overlay"}),this.item.isEditing?this.renderEditMode():this.renderViewMode())}static get watchers(){return{item:[{onItemChange:0}]}}};St.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)}: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-bg, #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-bg, #007aff)}:host(.selected) .edit-input{color:var(--kritzel-menu-item-selected-color, #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) .edit-input::selection{background-color:var(--kritzel-menu-item-input-selection-color, rgba(255, 255, 255, 0.16))}: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-bg, #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%}.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:1px solid var(--kritzel-menu-item-input-border, #ccc);font-size:var(--kritzel-context-menu-item-font-size, 14px);width:100%;min-width:0;box-sizing:border-box;outline:none}.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-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 Mt=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:"e1409175b038e78d2659356452c48ccc7d79b8de"},e("div",{key:"1de138f56f699fc54623ed8d7b8b5c6d3eda3c67",class:"opacity-container"},e("div",{key:"1dd5d0d36c8d025ba46a0623a20f040990cc749a",class:"slider-wrapper"},e("input",{key:"7b555aa0a4a9abfdcdadc86bffa5878c9336d1e4",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}%`}}))))}};Mt.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-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-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-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 3px var(--kritzel-focus-ring-color, rgba(0, 122, 255, 0.3))}.opacity-slider:focus::-moz-range-thumb{box-shadow:0 0 0 3px var(--kritzel-focus-ring-color, rgba(0, 122, 255, 0.3))}";class It{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")&&null!==t.offsetParent&&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 jt=class{constructor(e){t(this,e),this.close=n(this,"close")}get host(){return r(this)}anchor;anchorChanged(t){t?(this.openPortal(),this.calculatePosition(),this.autoFocus&&this.focusFirstElement()):this.closePortal()}offsetX;offsetY;autoFocus=!0;close;handleOutsideClick(t){t.stopPropagation(),this.lastAddedPortal===this.portal&&(this.host.contains(t.target)||(this.close.emit(),this.closePortal()))}handleKeyDown(t){if(t.stopPropagation(),this.lastAddedPortal===this.portal&&("Escape"===t.key&&(this.anchor.focus(),this.close.emit(),this.closePortal()),"Tab"===t.key&&this.trapFocus(t),"Enter"===t.key)){const e=this.getDeepActiveElement();e?.click&&(t.preventDefault(),e.click())}}handleResize(){this.calculatePosition()}handleWindowScroll(){if(!It.isElementInViewport(this.anchor))return this.anchor?.blur(),void this.closePortal();this.calculatePosition()}portal;id=`portal-${L.generateUUID()}`;defaultOffset=0;minLeft=0;focusFirstElement(){requestAnimationFrame((()=>{this.firstFocusableElement?.focus?.()}))}getDeepActiveElement(){let t=document.activeElement;for(;t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;return t}trapFocus(t){const e=It.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?It.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();let i=t.left+(this.offsetX??this.defaultOffset);const n=window.innerWidth-e.width-this.minLeft;return i<this.minLeft&&(i=this.minLeft),i>n&&(i=n),Math.round(i+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)}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.appendChild(this.host),document.body.append(this.portal)}closePortal(){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`}render(){return e(i,{key:"c70a1f7c4b2801346fc7a711b44e951337f42f77",style:{display:this.anchor?"block":"none"}},e("slot",{key:"654bd6dd3ec83d77984a500d505ed1f3c04a0c26"}))}static get watchers(){return{anchor:[{anchorChanged:0}]}}},_t=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="#000000";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:"7935296eb495557672cc96ab838ff4996953b220"},e("div",{key:"69011629ff2dbdd38c7fb03b873fe5411b712de3",class:"fill-row"},e("button",{key:"8a16a43b1ed8f316bc698a304d76667397a83015",class:{"fill-option":!0,selected:"transparent"===this.value},onClick:()=>this.handleFillChange("transparent"),title:"Transparent background"},this.renderFillIcon("transparent")),e("button",{key:"f51854da5ece9f18242b4b91ac9645e13efc41b3",class:{"fill-option":!0,selected:"filled"===this.value},onClick:()=>this.handleFillChange("filled"),title:"Filled background"},this.renderFillIcon("filled"))))}};_t.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-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-focus-ring-color, rgba(0, 122, 255, 0.3))}.fill-icon{width:100%;height:100%}";const Tt=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=p.isTouchDevice();anchorElement;menuScrollTop=0;splitMenuButtonRef;menuRef;async open(){this.isMenuOpen||(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(),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:"cdfb795efe513061f464c76650aa226cd7d5ac81",class:{mobile:this.isTouchDevice}},e("button",{key:"5c38c82b57f35c2e39b0dbba71b3ccfd99ebcc5c",class:"split-main-button",tabIndex:0,onClick:this.handleButtonClick,disabled:this.mainButtonDisabled},this.buttonIcon&&e("kritzel-icon",{key:"862d96cca7ec5aef55284ac6a65ce16b07a03dda",name:this.buttonIcon})),e("div",{key:"41849e36e756af257d10baf82d2cb0c9cd1e441f",class:"split-divider"}),e("button",{key:"0c54c40c84dcf5cf1b94b024353334e4be0e3404",ref:t=>this.splitMenuButtonRef=t,class:"split-menu-button",tabIndex:0,onClick:this.toggleMenu,disabled:this.menuButtonDisabled},e("kritzel-icon",{key:"15b0d07c9afa584105180fb5f0701c15974f11aa",name:this.dropdownIcon})),e("kritzel-portal",{key:"23014ad95c3ee688b9348f480cc33cdb1c970244",anchor:this.anchorElement,offsetY:4,onClose:this.closeMenu},e("kritzel-menu",{key:"90f4f29429a80f5700d16b1e99f3dd6315464bbb",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})))}};Tt.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:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:var(--kritzel-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 At=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:"891f899a41844bba03305e3dd7cbf428d4471ff9"},e("div",{key:"773a756d54d0632c9ea6b3aebb743abad2274244",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:"#000000",size:t}))))))}};At.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(6, 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-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 Ft=class{constructor(e){t(this,e),this.toolChange=n(this,"toolChange"),this.displayValuesChange=n(this,"displayValuesChange")}tool;handleToolChange(t,e){const i=X.getToolConfig(t);if(e&&t&&"shape"===i?.type){const n=X.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.currentOpacity=t[this.config.opacityProperty]??1,this.emitDisplayValues())}isExpanded=!1;toolChange;displayValuesChange;config;palette=[];currentOpacity=1;updateTrigger=0;handleSelectionChange(){this.tool instanceof h&&(this.config=X.getToolConfig(this.tool),this.config&&(this.updatePalette(),this.currentOpacity=this.tool[this.config.opacityProperty]??1,this.emitDisplayValues()))}componentWillLoad(){this.config=X.getToolConfig(this.tool),this.config&&(this.updatePalette(),this.currentOpacity=this.tool[this.config.opacityProperty]??1,this.emitDisplayValues())}emitDisplayValues(){if(!this.config)return;const t=this.tool[this.config.sizeProperty],e={color:N.applyOpacity(this.tool[this.config.colorProperty],this.currentOpacity),size:t};this.tool instanceof d&&(e.fontFamily=this.tool.fontFamily),this.displayValuesChange.emit(e)}updatePalette(){if(this.config)if("palettes"===this.config.paletteSource){const t=this.tool;this.palette=t.palettes[t.type]||[]}else"palette"===this.config.paletteSource&&(this.palette=this.tool.palette||[])}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;"transparent"!==e.fillColor&&(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)if("brush"===this.config.type&&"type"===t){const t=this.tool;t.type=e,this.palette=t.palettes[e],t.color=this.palette[0],this.emitDisplayValues()}else this.tool[t]=e,"fontFamily"===t&&this.emitDisplayValues();else{const t="filled"===e?this.tool[this.config.colorProperty]:"transparent";this.tool.fillColor=t,"filled"===e&&(this.tool[this.config.colorProperty]=t)}this.toolChange.emit(this.tool),this.updateTrigger++};getShapeFillValue(){return"transparent"===this.tool.fillColor?"transparent":"filled"}renderControl(t){const i=this.tool[t.propertyName];switch(t.type){case"stroke-size":return e("kritzel-stroke-size",{key:t.type,selectedSize:i,onSizeChange:this.handleSizeChange});case"font-size":return e("kritzel-font-size",{key:t.type,selectedSize:i,fontFamily:this.tool.fontFamily,onSizeChange:this.handleSizeChange});case"line-endings":return e("kritzel-line-endings",{key:t.type,value:i,strokeColor:this.tool[this.config.colorProperty],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.config.controls.find((t=>"stroke-size"===t.type||"font-size"===t.type)),r=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"}},e("kritzel-color-palette",{colors:this.palette,selectedColor:this.tool[this.config.colorProperty],isExpanded:this.isExpanded,isOpaque:!0,opacity:this.currentOpacity,onColorChange:this.handleColorChange}),n&&this.renderControl(n),e("kritzel-opacity-slider",{value:this.tool[this.config.opacityProperty],previewColor:this.tool[this.config.colorProperty],onValueChange:this.handleOpacityChange}),r.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}]}}};Ft.style=".expand-toggle{background:none;border:none;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 Et=class{constructor(e){t(this,e),this.tooltipClosed=n(this,"tooltipClosed")}get host(){return r(this)}isVisible=!1;anchorElement;offsetY=24;tooltipClosed;positionX=0;positionY=0;handleOutsideClick(t){this.isVisible&&(t.composedPath().some((t=>t===this.host))||this.tooltipClosed.emit())}handleWindowResize(){this.calculateAdjustedPosition()}async focusContent(){const t=It.getFocusableElements(this.host);t.length>0&&t[0].focus()}componentDidLoad(){this.focusSlottedContent()}componentWillLoad(){this.calculateAdjustedPosition()}componentWillUpdate(){this.calculateAdjustedPosition()}focusSlottedContent(){const t=this.host.shadowRoot?.querySelector("slot"),e=t?.assignedElements()||[];e.length>0&&e[0].focus()}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:"104ad4a160e4f47454955696e5f0e7a28873c3f5",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:"283eec8d84ea29caefdb1f0c4f129c57d30bc133",class:"tooltip-content",onClick:t=>t.stopPropagation(),onPointerDown:t=>t.stopPropagation(),onMouseDown:t=>t.stopPropagation()},e("slot",{key:"1c6e2d9bcb69f8deec08b6c10384b4c7593babd3"})))}};Et.style=":host{width:auto}.tooltip-content{position:relative;padding:8px 12px;border-radius:4px;width:fit-content;background-color:var(--kritzel-controls-tooltip-background-color, #ffffff);color:var(--kritzel-controls-tooltip-color, #000000);padding:var(--kritzel-controls-tooltip-padding, 12px);border-radius:var(--kritzel-controls-tooltip-border-radius, 16px);white-space:nowrap;box-shadow:var(--kritzel-controls-tooltip-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12))}";const Ot=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:"b0994bdfd10e1bfbad18d7df2810575b19a9e67d"},e("button",{key:"4bcb8106f6977ff1472477b6a689942e7eedd8b7",class:"utility-button",disabled:!this.undoState?.canUndo,onClick:t=>this.handleUndo(t)},e("kritzel-icon",{key:"05c9a0b6a926eeb236cda9bf8c333dd6a0b563cb",name:"undo"})),e("button",{key:"88b008c4c37de9440da414617a0b2e144e47e830",class:"utility-button",disabled:!this.undoState?.canRedo,onClick:t=>this.handleRedo(t)},e("kritzel-icon",{key:"ec921af2eca35fd1d1aad88d88d5f0a0804e4c44",name:"redo"})),e("div",{key:"94b7eec2edee8a41296726ab79d61bccba1940d8",class:"utility-separator"}),e("button",{key:"50be446ae7510d5133b7767e0dd382b7e1c87c3f",class:"utility-button"},e("kritzel-icon",{key:"d11d988dafc42c250b7361f5bba532fa9f81d97e",name:"delete",onClick:()=>this.delete.emit()})))}};Ot.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:rgb(226, 226, 226);width:fit-content;user-select:none}.utility-button{display:flex;justify-content:center;align-items:center;width:28px;height:28px;padding:8px 4px;border:none;background:none;cursor:var(--kritzel-pointer-cursor, pointer);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-controls-control-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:hsl(0, 0%, 0%, 4.3%)}";const Dt=class{constructor(e){t(this,e),this.isWorkspaceManagerReady=n(this,"isWorkspaceManagerReady"),this.workspaceChange=n(this,"workspaceChange")}get host(){return r(this)}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(){if(await customElements.whenDefined("kritzel-engine"),this.kritzelEngineRef=this.host.parentElement.querySelector("kritzel-engine"),!this.kritzelEngineRef)throw new Error("kritzel-engine not found in parent element.")}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 x(L.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(){this.kritzelEngineRef.disable()}handleMenuClose(){this.cancel(),this.closeChildMenu(),this.kritzelEngineRef.enable()}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,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,null,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()}))}};Dt.style=":host{display:flex;flex-direction:column;z-index:1}";export{K as kritzel_color,B as kritzel_color_palette,H as kritzel_context_menu,q as kritzel_controls,G as kritzel_cursor_trail,Z as kritzel_dropdown,et as kritzel_editor,kt as kritzel_engine,yt as kritzel_font,mt as kritzel_font_family,wt as kritzel_font_size,xt as kritzel_icon,zt as kritzel_line_endings,Ct as kritzel_menu,St as kritzel_menu_item,Mt as kritzel_opacity_slider,jt as kritzel_portal,_t as kritzel_shape_fill,Tt as kritzel_split_button,At as kritzel_stroke_size,Ft as kritzel_tool_config,Et as kritzel_tooltip,Ot as kritzel_utility_panel,Dt as kritzel_workspace_manager}
|