kritzel-stencil 0.1.21 → 0.1.22

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.
Files changed (32) hide show
  1. package/dist/cjs/{default-line-tool.config-Bva9deYM.js → default-line-tool.config-DSutud0N.js} +22 -6
  2. package/dist/cjs/index.cjs.js +1 -1
  3. package/dist/cjs/kritzel-back-to-content_32.cjs.entry.js +39 -49
  4. package/dist/collection/classes/objects/text.class.js +19 -3
  5. package/dist/collection/classes/tools/text-tool.class.js +3 -3
  6. package/dist/collection/components/core/kritzel-engine/kritzel-engine.js +20 -34
  7. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.js +17 -13
  8. package/dist/collection/constants/version.js +1 -1
  9. package/dist/components/index.js +1 -1
  10. package/dist/components/kritzel-controls.js +1 -1
  11. package/dist/components/kritzel-editor.js +1 -1
  12. package/dist/components/kritzel-engine.js +1 -1
  13. package/dist/components/kritzel-settings.js +1 -1
  14. package/dist/components/kritzel-tool-config.js +1 -1
  15. package/dist/components/p-B6WmB4Lk.js +1 -0
  16. package/dist/components/{p-CYX7RMRZ.js → p-BAVx6TLg.js} +1 -1
  17. package/dist/components/{p-Dmy0R-7y.js → p-BP6ggkYA.js} +1 -1
  18. package/dist/components/{p-BbHELXEC.js → p-CEHVU-Ri.js} +2 -2
  19. package/dist/components/{p-BsvZ2juR.js → p-DBUd8DTC.js} +1 -1
  20. package/dist/esm/{default-line-tool.config-DDIFE6oX.js → default-line-tool.config-_PqPRv7q.js} +22 -6
  21. package/dist/esm/index.js +2 -2
  22. package/dist/esm/kritzel-back-to-content_32.entry.js +39 -49
  23. package/dist/stencil/index.esm.js +1 -1
  24. package/dist/stencil/p-0472bdc3.entry.js +9 -0
  25. package/dist/stencil/p-_PqPRv7q.js +1 -0
  26. package/dist/stencil/stencil.esm.js +1 -1
  27. package/dist/types/components/ui/kritzel-controls/kritzel-controls.d.ts +1 -0
  28. package/dist/types/constants/version.d.ts +1 -1
  29. package/package.json +1 -1
  30. package/dist/components/p-DqtvAhfs.js +0 -1
  31. package/dist/stencil/p-3fc743ee.entry.js +0 -9
  32. package/dist/stencil/p-DDIFE6oX.js +0 -1
@@ -0,0 +1,9 @@
1
+ import{r as t,c as e,h as i,H as n,g as r}from"./p-k35gVcuU.js";import{a0 as o,a1 as s,a2 as a,a3 as l,a4 as c,a5 as h,a6 as u,R as d,J as f,L as p,P as b,a7 as g,a8 as v,W as k,Y as m,M as y,X as x,N as w,U as z,a9 as C,aa as S,ab as M,ac as I,ad as j,ae as T,I as _,F as $,K as E,G as A,E as F,af as O,ag as D,ah as R,Q as P,T as W,V as L,$ as V,ai as U,aj as B}from"./p-_PqPRv7q.js";var K="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};const H=class{constructor(i){t(this,i),this.backToContent=e(this,"backToContent")}visible=!1;text="Back to content";backToContent;handleClick=()=>{this.backToContent.emit()};render(){return i(n,{key:"59ac36a6c71802ed71a9e77660c273e5888a4ee6"},i("button",{key:"2423c460b3cf9df5c04ea0ff2ccc378a85a7f714",class:{"back-to-content-button":!0,visible:this.visible},onClick:this.handleClick},i("kritzel-icon",{key:"1ae10674d9920d522b20c171a78e3b9a6f35cca5",name:"chevrons-left"})))}};H.style=":host{display:block;z-index:var(--kritzel-back-to-content-z-index, 1000)}.back-to-content-button{display:flex;align-items:center;justify-content:center;height:var(--kritzel-back-to-content-height, 50px);box-sizing:border-box;gap:var(--kritzel-back-to-content-gap, 6px);padding:var(--kritzel-back-to-content-padding, 0 16px);border:var(--kritzel-back-to-content-border, 1px solid #ebebeb);border-radius:var(--kritzel-back-to-content-border-radius, 12px);background-color:var(--kritzel-back-to-content-background-color, #ffffff);color:var(--kritzel-back-to-content-color, #000000);font-size:var(--kritzel-back-to-content-font-size, 14px);font-weight:var(--kritzel-back-to-content-font-weight, 500);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:var(--kritzel-back-to-content-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));opacity:0;pointer-events:none;transition:opacity 0.2s ease-out, transform 0.2s ease-out, background-color 0.15s ease-out;-webkit-tap-highlight-color:transparent;user-select:none}.back-to-content-button.visible{opacity:1;pointer-events:auto}@media (hover: hover){.back-to-content-button:hover{background-color:var(--kritzel-back-to-content-hover-background-color, hsl(0, 0%, 0%, 4.3%))}}.back-to-content-button:active{background-color:var(--kritzel-back-to-content-active-background-color, hsl(0, 0%, 0%, 8.6%))}";const N=class{constructor(e){t(this,e)}value;theme;size=24;resolveColor(){return this.value?"string"==typeof this.value?this.value:o.resolveThemeColor(this.value,this.theme):""}isLightColor(t){if(!t)return!1;let e=0,i=0,n=0,r=t.startsWith("#")?t.slice(1):t;if(3===r.length)e=parseInt(r[0]+r[0],16),i=parseInt(r[1]+r[1],16),n=parseInt(r[2]+r[2],16);else{if(6!==r.length)return!1;e=parseInt(r.substring(0,2),16),i=parseInt(r.substring(2,4),16),n=parseInt(r.substring(4,6),16)}return!(isNaN(e)||isNaN(i)||isNaN(n))&&.299*e+.587*i+.114*n>220}render(){const t=this.resolveColor(),e=this.isLightColor(t);return i(n,{key:"cc21931159df6c91704d89f6b314fc3e55730b33"},i("div",{key:"2754b47d810f30d13e69dbc3cf045e2136524f64",class:"checkerboard-bg",style:{width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",display:"inline-block",position:"relative"}},i("div",{key:"a63e33e060b31cddeae74ddecea5e8961a59d88c",class:{"color-circle":!0,white:e},style:{backgroundColor:t,width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",position:"absolute",top:"0",left:"0",display:"inline-block"}})))}};N.style=":host{display:flex}.checkerboard-bg{background:repeating-conic-gradient( var(--kritzel-checkerboard-color-dark, #ccc) 0% 25%, var(--kritzel-checkerboard-color-light, #fff) 0% 50% ) 50% / 8px 8px;position:relative;overflow:hidden}.color-circle{width:24px;height:24px;border-radius:50%;box-sizing:border-box;display:block}.color-circle.white{border:1px solid var(--kritzel-color-palette-circle-border-color, #dddcdc)}";const Y=class{constructor(i){t(this,i),this.colorChange=e(this,"colorChange")}colors=[];selectedColor=null;isExpanded=!1;isOpaque=!1;opacity=1;theme;colorChange;handleColorClick(t){this.selectedColor=t,this.colorChange.emit(t)}handleKeyDown(t,e){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.handleColorClick(e))}calculateHeight(){const t=Math.ceil(this.colors.length/6);return 32*t+8*(t-1)+"px"}areColorsEqual(t,e){return!!t&&t.light===e.light&&t.dark===e.dark}render(){const t=this.isExpanded?this.colors:this.colors.slice(0,6),e=this.isExpanded?this.calculateHeight():"32px";return i(n,{key:"87895a22dd181ffb62c30c830086b2d32dbc59f0"},i("div",{key:"b33514a42dd690344eb5a2372e03334eebbaf2f9",class:{"color-grid":!0,expanded:this.isExpanded},style:{height:e}},t.map((t=>i("div",{tabIndex:0,class:{"color-container":!0,selected:this.areColorsEqual(this.selectedColor,t)},onClick:()=>this.handleColorClick(t),onKeyDown:e=>this.handleKeyDown(e,t)},i("kritzel-color",{value:o.applyOpacity(t,this.opacity,this.theme),theme:this.theme}))))))}};Y.style=":host{display:flex;align-items:flex-start;gap:8px;padding:0;width:100%;box-sizing:border-box}.color-grid{width:100%;display:grid;grid-template-columns:repeat(6, 32px);gap:8px;justify-items:center;overflow:hidden;height:40px;transition:height 0.1s ease-in-out}.color-grid.expanded{height:500px}.color-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box}.color-container:hover{background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.color-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-color-palette-selected-background-color)}";const q=class{constructor(i){t(this,i),this.actionSelected=e(this,"actionSelected"),this.close=e(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 i(n,{key:"f57688eb3c0921c0a2d85cab7bbe9273ecf4fdab"},i("div",{key:"8082568dd09f4ad5ef07885308d752e8c924f02e",class:"menu-container"},this.processedItems.map((({item:t,isDisabled:e},n)=>i("button",{key:`${t.label}-${n}`,class:{"menu-item":!0,disabled:e},onClick:()=>this.handleItemClick(t,e),disabled:e},t.icon&&i("kritzel-icon",{name:t.icon,size:16}),i("span",{class:"label"},t.label))))))}static get watchers(){return{items:[{onItemsChanged:0}]}}};q.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-global-pointer-cursor, pointer);font-size:var(--kritzel-context-menu-item-font-size, 14px);color:var(--kritzel-context-menu-item-color, #333333);white-space:nowrap;-webkit-tap-highlight-color:transparent}.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 G extends s{shapeType=a.Rectangle;fillColor={light:"transparent",dark:"transparent"};strokeColor=l[0];strokeWidth=4;opacity=1;fontFamily="Arial";fontSize=16;fontColor=l[0];palette=[...l];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 c)return void i.edit(t);if(null!==n&&i instanceof c)return n.save(),void i.edit(t);if(null!==n&&i instanceof c==0)return this._core.resetActiveShape(),void this._core.store.setState("activeTool",h.getTool("selection"));if(!1===u.isLeftClick(t))return;this.startDrawing(t.clientX,t.clientY)}if("touch"===t.pointerType||"pen"===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 c)return void n.edit(t);if(null!==r&&n instanceof c)return r.save(),void n.edit(t);if(null!==r&&n instanceof c==0)return this._core.resetActiveShape(),void this._core.store.setState("activeTool",h.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||"pen"===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){const i=this._core.store.state.scale,n=this._core.store.state.lockDrawingScale,r=n?i:1;this.startX=(t-this._core.store.offsetX)/r,this.startY=(e-this._core.store.offsetY)/r,this.isDrawing=!0,this.currentShape=c.create(this._core,{x:this.startX,y:this.startY,translateX:-this._core.store.state.translateX/r,translateY:-this._core.store.state.translateY/r,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,scale:n?1:i}),this._core.store.state.objects.insert(this.currentShape),this._core.rerender()}updateShapeSize(t,e){if(!this.currentShape)return;const i=this._core.store.state.lockDrawingScale?this._core.store.state.scale:1,n=(t-this._core.store.offsetX)/i,r=(e-this._core.store.offsetY)/i,o=Math.min(this.startX,n),s=Math.min(this.startY,r),a=Math.abs(n-this.startX),l=Math.abs(r-this.startY);this.currentShape.x=o,this.currentShape.y=s,this.currentShape.width=Math.max(1,a),this.currentShape.height=Math.max(1,l),this.currentShape.translateX=-this._core.store.state.translateX/i,this.currentShape.translateY=-this._core.store.state.translateY/i,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",h.getTool("selection"));this.isDrawing=!1,this.currentShape=null,this._core.rerender()}}}class X{static getToolConfig(t){return t instanceof d?t.getToolConfig():t instanceof f?{type:"brush",colorProperty:"color",sizeProperty:"size",opacityProperty:"opacity",paletteSource:"palette",controls:[{type:"stroke-size",propertyName:"size"}]}:t instanceof p?{type:"line",colorProperty:"color",sizeProperty:"size",opacityProperty:"opacity",paletteSource:"palette",controls:[{type:"stroke-size",propertyName:"size"},{type:"line-endings",propertyName:"arrows",additionalProps:{}}]}:t instanceof G?{type:"shape",colorProperty:"strokeColor",sizeProperty:"strokeWidth",opacityProperty:"opacity",paletteSource:"palette",controls:[{type:"stroke-size",propertyName:"strokeWidth"},{type:"shape-fill",propertyName:"fillColor",additionalProps:{}}]}:t instanceof b?{type:"text",colorProperty:"fontColor",sizeProperty:"fontSize",opacityProperty:"opacity",paletteSource:"palette",controls:[{type:"font-size",propertyName:"fontSize",additionalProps:{}},{type:"font-family",propertyName:"fontFamily"}]}:null}}const Z=class{constructor(i){t(this,i),this.isControlsReady=e(this,"isControlsReady")}get host(){return r(this)}controls=[];activeControl=null;isUtilityPanelVisible=!0;undoState=null;theme;isControlsReady;firstConfig=null;isTooltipVisible=!1;isTouchDevice=g.isTouchDevice();selectedSubOptions=new Map;openSubMenuControl=null;canScrollLeft=!1;canScrollRight=!1;needsScrolling=!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),this.isTooltipVisible=!1,this.openSubMenuControl=null}handleSelectionChange(){this.activeControl?.tool instanceof d&&this.updateDisplayValues(this.activeControl.tool)}onThemeChange(){this.activeControl?.tool&&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:o.applyOpacity(t[e.colorProperty],t[e.opacityProperty]??1,this.theme),size:i};t instanceof b&&(n.fontFamily=t.fontFamily),this.displayValues&&this.displayValues.color===n.color&&this.displayValues.size===n.size&&this.displayValues.fontFamily===n.fontFamily||(this.displayValues=n)}async componentWillLoad(){await this.initializeEngine(),await this.initializeTools(),this.isControlsReady.emit()}componentDidLoad(){this.updateScrollIndicators()}componentDidRender(){this.updateScrollIndicators()}updateScrollIndicators(){if(!this.toolsScrollRef)return;const{scrollLeft:t,scrollWidth:e,clientWidth:i}=this.toolsScrollRef,n=t>2,r=t+i<e-2,o=e>i;this.canScrollLeft!==n&&(this.canScrollLeft=n),this.canScrollRight!==r&&(this.canScrollRight=r),this.needsScrolling!==o&&(this.needsScrolling=o)}handleToolsScroll=()=>{this.updateScrollIndicators()};async initializeEngine(){if(await customElements.whenDefined("kritzel-engine"),this.kritzelEngine=this.host.parentElement.querySelector("kritzel-engine"),!this.kritzelEngine)throw new Error("kritzel-engine not found in parent element.")}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,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}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 f||this.activeControl?.tool instanceof b||this.activeControl?.tool instanceof p||this.activeControl?.tool instanceof G||this.activeControl?.tool instanceof d&&this.activeControl.tool.hasSelection(),e=this.controls.filter((t=>"tool"===t.type)),r=this.controls.find((t=>"config"===t.type&&t.name===this.firstConfig?.name));return i(n,{key:"7e6687a1c3aa5da1a3f70f93fbc31ff27071a5d8",class:{mobile:this.isTouchDevice}},this.isUtilityPanelVisible&&i("kritzel-utility-panel",{key:"ba600940a33609b8150aacf5a63a781c06d9d9fe",style:{position:"absolute",bottom:"56px",left:"12px"},undoState:this.undoState,onUndo:()=>this.kritzelEngine?.undo(),onRedo:()=>this.kritzelEngine?.redo(),onDelete:()=>this.kritzelEngine?.delete()}),i("div",{key:"6c31fb4ccf4c1022426847d0b3684f6dd54c6cbf",class:"kritzel-controls"},i("div",{key:"aad8c170278b0d46bef5a9e94546dec502b179db",class:{"scroll-indicator-left":!0,visible:this.canScrollLeft}}),i("div",{key:"7652a3ed5536f845899481ef98540ed6c09a31d5",class:"kritzel-tools-scroll",ref:t=>this.toolsScrollRef=t,onScroll:this.handleToolsScroll},e.map((t=>{if(t.subOptions?.length){const e=this.getSelectedSubOption(t),n=this.activeControl?.name===t.name,r=this.openSubMenuControl?.name===t.name;return i("div",{class:{"kritzel-control-split":!0,selected:n},key:t.name,ref:e=>{e&&(t._anchorRef=e)}},i("button",{class:"kritzel-control-main",onClick:()=>this.handleControlClick(t),title:e?.label},i("kritzel-icon",{name:e?.icon||t.icon})),i("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},i("kritzel-icon",{name:"chevron-down",size:12})),i("kritzel-tooltip",{isVisible:r,anchorElement:t._anchorRef,onTooltipClosed:()=>{this.openSubMenuControl=null}},i("div",{class:"kritzel-submenu-content"},t.subOptions.map((n=>i("button",{class:{"kritzel-submenu-item":!0,active:n.id===e?.id},key:n.id,onClick:()=>this.selectSubOption(t,n)},i("kritzel-icon",{name:n.icon,size:20}),i("span",null,n.label)))))))}return i("button",{class:{"kritzel-control":!0,selected:this.activeControl?.name===t?.name},key:t.name,onClick:()=>this.handleControlClick?.(t)},i("kritzel-icon",{name:t.icon}))}))),i("div",{key:"f1dd9f702185a32004fecf48798f5767e20c99e7",class:{"scroll-indicator-right":!0,visible:this.canScrollRight&&!(r&&this.activeControl&&t)}}),r&&this.activeControl&&i("div",{class:{"kritzel-config-container":!0,visible:t},key:r.name},i("div",{key:"ad44b915f2ebe292fa8f17de771e637b22089396",class:{"config-gradient-left":!0,visible:this.needsScrolling}}),i("kritzel-tooltip",{key:"9e750ed1f0e37f4a07bb99446effdc1fe7d2d7ce",ref:t=>this.tooltipRef=t,isVisible:this.isTooltipVisible,anchorElement:this.host.shadowRoot?.querySelector(".kritzel-config-container"),onTooltipClosed:()=>this.handleTooltipClosed()},i("kritzel-tool-config",{key:"4f87a184a3b395368c94752e5fedcf66164f0baa",tool:this.activeControl.tool,theme:this.theme,onToolChange:t=>this.handleToolChange?.(t),onDisplayValuesChange:this.handleDisplayValuesChange,style:{width:"100%",height:"100%"}})),i("div",{key:"37cb99e360419fe35820e9de8ac042f44b71e496",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 b&&this.displayValues?i("div",{class:"font-container"},i("kritzel-font",{fontFamily:this.displayValues.fontFamily,size:this.displayValues.size,color:this.displayValues.color})):this.displayValues&&i("div",{class:"color-container"},i("kritzel-color",{value:this.displayValues.color,theme:this.theme,size:this.displayValues.size,style:{borderRadius:"50%",border:"none"}}))))))}static get assetsDirs(){return["../assets"]}static get watchers(){return{theme:[{onThemeChange:0}]}}};Z.style=":host{display:flex;flex-direction:column;user-select:none;max-width:calc(100vw - 16px)}: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;padding:4px;margin:-4px;scrollbar-width:none;-ms-overflow-style:none}.kritzel-tools-scroll::-webkit-scrollbar{display:none}.scroll-indicator-left,.scroll-indicator-right{position:absolute;top:0;bottom:0;width:32px;pointer-events:none;opacity:0;transition:opacity 0.2s ease-out;z-index:1}.scroll-indicator-left{left:0;background:linear-gradient(to right, var(--kritzel-controls-background-color, #ffffff), transparent);border-radius:var(--kritzel-controls-border-radius, 16px) 0 0 var(--kritzel-controls-border-radius, 16px)}.scroll-indicator-right{right:0;background:linear-gradient(to left, var(--kritzel-controls-background-color, #ffffff), transparent);border-radius:0 var(--kritzel-controls-border-radius, 16px) var(--kritzel-controls-border-radius, 16px) 0}.scroll-indicator-left.visible,.scroll-indicator-right.visible{opacity:1}.kritzel-control{display:flex;justify-content:center;align-items:center;color:var(--kritzel-controls-control-color, #000000);border-radius:var(--kritzel-controls-control-border-radius, 12px);padding:var(--kritzel-controls-control-padding, 8px);border:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);-webkit-tap-highlight-color:transparent;font-weight:bold}.kritzel-control:focus,.kritzel-control:hover{background-color:var(--kritzel-controls-control-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.kritzel-control:active{background-color:var(--kritzel-controls-control-active-background-color, hsl(0, 0%, 0%, 8.6%))}.kritzel-control.selected,.kritzel-control.selected:hover,.kritzel-control.selected:active{background-color:var(--kritzel-controls-control-selected-background-color, #007AFF) !important;color:var(--kritzel-controls-control-selected-color, #ffffff) !important}.kritzel-control.selected:focus{background-color:var(--kritzel-controls-control-selected-background-color, #007bffe3) !important}.kritzel-control-split{position:relative;display:flex;align-items:center;border-radius:var(--kritzel-controls-control-border-radius, 12px);color:var(--kritzel-controls-control-color, #000000)}.kritzel-control-split .kritzel-control-main{display:flex;justify-content:center;align-items:center;padding:var(--kritzel-controls-control-padding, 8px);border:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);-webkit-tap-highlight-color:transparent;border-radius:var(--kritzel-controls-control-border-radius, 12px);color:inherit}.kritzel-control-split.selected .kritzel-control-main{border-radius:var(--kritzel-controls-control-border-radius, 12px) 0 0 var(--kritzel-controls-control-border-radius, 12px)}.kritzel-control-split .kritzel-control-dropdown{display:flex;justify-content:center;align-items:center;align-self:stretch;border:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);-webkit-tap-highlight-color:transparent;border-radius:0 var(--kritzel-controls-control-border-radius, 12px) var(--kritzel-controls-control-border-radius, 12px) 0;color:inherit;width:0;padding:0;opacity:0;overflow:hidden;pointer-events:none;transition:width 0.15s ease-out, padding 0.15s ease-out, opacity 0.15s ease-out}.kritzel-control-split .kritzel-control-dropdown.visible{width:auto;padding:0 6px;opacity:1;pointer-events:auto}.kritzel-control-split .kritzel-control-main:focus,.kritzel-control-split .kritzel-control-main:hover,.kritzel-control-split .kritzel-control-dropdown:focus,.kritzel-control-split .kritzel-control-dropdown:hover{background-color:var(--kritzel-controls-control-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.kritzel-control-split .kritzel-control-main:active,.kritzel-control-split .kritzel-control-dropdown:active{background-color:var(--kritzel-controls-control-active-background-color, hsl(0, 0%, 0%, 8.6%))}.kritzel-control-split.selected{background-color:var(--kritzel-controls-control-selected-background-color, #007AFF) !important;color:var(--kritzel-controls-control-selected-color, #ffffff) !important}.kritzel-control-split.selected .kritzel-control-main:hover,.kritzel-control-split.selected .kritzel-control-dropdown:hover{background-color:rgba(255, 255, 255, 0.15)}.kritzel-submenu-content{display:flex;flex-direction:column;gap:var(--kritzel-submenu-gap, 4px);min-width:140px}.kritzel-submenu-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);border-radius:8px;color:var(--kritzel-controls-control-color, #000000);font-size:14px;text-align:left;white-space:nowrap;-webkit-tap-highlight-color:transparent}.kritzel-submenu-item:hover{background-color:var(--kritzel-controls-control-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.kritzel-submenu-item.active{background-color:var(--kritzel-controls-control-selected-background-color, #007AFF);color:var(--kritzel-controls-control-selected-color, #ffffff)}.kritzel-submenu-item.active:hover{background-color:var(--kritzel-controls-control-selected-background-color, #007AFF)}.kritzel-config-container{position:relative;display:flex;justify-content:center;align-items:center;height:40px;box-sizing:border-box;-webkit-tap-highlight-color:transparent;flex-shrink:0;width:0;opacity:0;overflow:hidden;pointer-events:none;margin-left:calc(-1 * var(--kritzel-controls-gap, 8px));transition:width 0.2s ease-out, opacity 0.2s ease-out, margin-left 0.2s ease-out}.kritzel-config-container.visible{width:40px;opacity:1;pointer-events:auto;margin-left:0;overflow:visible}.config-gradient-left{position:absolute;top:0;bottom:0;left:-32px;width:32px;background:linear-gradient(to right, transparent, var(--kritzel-controls-background-color, #ffffff));pointer-events:none;z-index:1;opacity:0;transition:opacity 0.2s ease-out}.config-gradient-left.visible{opacity:1}.kritzel-config{display:flex;justify-content:center;align-items:center;cursor:var(--kritzel-global-pointer-cursor, pointer);border-radius:50%}.color-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.font-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.no-config{height:24px;width:24px;border-radius:50%;border:1px dashed gray}kritzel-tooltip{z-index:10001}";const J=class{constructor(e){t(this,e)}core;cursorTrailPoints=[];isLeftButtonDown=!1;handleMouseDown(t){"mouse"===t.pointerType&&t.button===v.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===v.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 i(n,{key:"5bb40688111e544ec102739c3d606ef34273fbab"},this.cursorTrailPoints.length>1&&i("svg",{key:"91782bcfaae5d97d534a3e44535e85ed28f960b5",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,e)=>{const n=this.cursorTrailPoints[e],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 i("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"})}))))}};J.style=":host{display:block;position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:9000}";class Q{static getNumericValueFromStyle(t,e){const i=window.getComputedStyle(t).getPropertyValue(e);return parseFloat(i)||0}static getScrollableParent(t){if(!t)return window;const e=t.parentNode?.host??t.parentElement;if(!e||"BODY"===e.tagName)return window;const i=window.getComputedStyle(e);return"auto"===i.overflow||"auto"===i.overflowY||"scroll"===i.overflow||"scroll"===i.overflowY?e:this.getScrollableParent(e)}static isElementInViewport(t){if(!t)return!1;const e=this.getScrollableParent(t),i=t.getBoundingClientRect();if(e===window){const t=window.innerHeight||document.documentElement.clientHeight,e=window.innerWidth||document.documentElement.clientWidth;return i.top>=0&&i.left>=0&&i.bottom<=t&&i.right<=e}const n=e.getBoundingClientRect();return i.top>=n.top&&i.left>=n.left&&i.bottom<=n.bottom&&i.right<=n.right}static getFocusableElements(t){if(!t)return[];const e=[],i=t=>{t instanceof HTMLElement&&t.matches('a[href], button:not([disabled]), input:not([disabled]), textarea:not([disabled]), select:not([disabled]), details, [tabindex]:not([tabindex="-1"])')&&!t.hasAttribute("disabled")&&(t=>{const e=window.getComputedStyle(t);return"none"!==e.display&&"hidden"!==e.visibility})(t)&&e.push(t),t.shadowRoot&&Array.from(t.shadowRoot.children).forEach(i),"SLOT"===t.tagName&&t.assignedElements({flatten:!0}).forEach(i),t.shadowRoot||Array.from(t.children).forEach(i)};return i(t),e}}const tt=class{constructor(i){t(this,i),this.dialogOpen=e(this,"dialogOpen"),this.dialogClose=e(this,"dialogClose")}get host(){return r(this)}isOpen=!1;dialogTitle;closable=!0;closeOnBackdrop=!0;closeOnEscape=!0;autoFocus=!0;trapFocus=!0;size="medium";fullscreenOnMobile=!0;isAnimating=!1;dialogOpen;dialogClose;previousOverflow="";previousActiveElement=null;handleIsOpenChange(t){t?this.openDialog():this.closeDialog()}handleKeyDown(t){this.isOpen&&("Escape"===t.key&&this.closeOnEscape&&(t.preventDefault(),t.stopPropagation(),this.emitClose("escape")),"Tab"===t.key&&this.trapFocus&&this.handleTabKey(t))}async open(){this.isOpen||(this.isOpen=!0)}async close(t="programmatic"){this.emitClose(t)}async focusFirstElement(){this.focusFirst()}componentDidLoad(){this.isOpen&&this.openDialog()}disconnectedCallback(){this.restoreBodyScroll()}openDialog(){this.isAnimating=!0,this.previousActiveElement=document.activeElement,this.lockBodyScroll(),this.dialogOpen.emit(),this.autoFocus&&requestAnimationFrame((()=>{this.focusFirst()})),requestAnimationFrame((()=>{this.isAnimating=!1}))}closeDialog(){this.restoreBodyScroll(),this.returnFocusToPreviousElement()}emitClose(t){this.dialogClose.emit({reason:t})}lockBodyScroll(){this.previousOverflow=document.body.style.overflow,document.body.style.overflow="hidden"}restoreBodyScroll(){document.body.style.overflow=this.previousOverflow}returnFocusToPreviousElement(){this.previousActiveElement?.focus&&this.previousActiveElement.focus()}focusFirst(){const t=this.host.shadowRoot?.querySelector(".dialog-content");if(!t)return;const e=[...Q.getFocusableElements(t),...this.getSlottedFocusableElements()];e.length>0?e[0].focus():t.focus()}getSlottedFocusableElements(){const t=this.host.shadowRoot?.querySelectorAll("slot")??[],e=[];return t.forEach((t=>{t.assignedElements({flatten:!0}).forEach((t=>{const i=Q.getFocusableElements(t);e.push(...i)}))})),e}handleTabKey(t){const e=this.getSlottedFocusableElements(),i=this.host.shadowRoot?.querySelector(".close-button");if(i&&this.closable&&e.unshift(i),0===e.length)return;const n=e[0],r=e[e.length-1],o=this.getDeepActiveElement();t.shiftKey?o===n&&(t.preventDefault(),r.focus()):o===r&&(t.preventDefault(),n.focus())}getDeepActiveElement(){let t=document.activeElement;for(;t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;return t}handleBackdropClick=t=>{t.stopPropagation(),this.closeOnBackdrop&&this.emitClose("backdrop")};handleCloseButtonClick=t=>{t.stopPropagation(),this.emitClose("close-button")};handleContentClick=t=>{t.stopPropagation()};renderCloseButton(){return this.closable?i("button",{class:"close-button",type:"button","aria-label":"Close dialog",onClick:this.handleCloseButtonClick},i("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},i("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),i("line",{x1:"6",y1:"6",x2:"18",y2:"18"}))):null}renderHeader(){const t=null!==this.host.querySelector('[slot="header"]'),e=!!this.dialogTitle;return t||e||this.closable?i("div",{class:"dialog-header"},t?i("slot",{name:"header"}):e?i("h2",{class:"dialog-title"},this.dialogTitle):null,this.renderCloseButton()):null}renderFooter(){return null!==this.host.querySelector('[slot="footer"]')?i("div",{class:"dialog-footer"},i("slot",{name:"footer"})):null}render(){return this.isOpen?i(n,null,i("div",{class:{backdrop:!0,"is-animating":this.isAnimating},onClick:this.handleBackdropClick},i("div",{class:{"dialog-content":!0,"is-animating":this.isAnimating,[`size-${this.size}`]:!0,"fullscreen-on-mobile":this.fullscreenOnMobile},role:"dialog","aria-modal":"true","aria-labelledby":this.dialogTitle?"dialog-title":void 0,tabIndex:-1,onClick:this.handleContentClick},this.renderHeader(),i("div",{class:"dialog-body"},i("slot",null)),this.renderFooter()))):null}static get watchers(){return{isOpen:[{handleIsOpenChange:0}]}}};tt.style=":host{display:contents}.backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10002;display:flex;align-items:center;justify-content:center;background-color:var(--kritzel-dialog-backdrop-color, rgba(0, 0, 0, 0.5));opacity:1;transition:opacity 150ms ease-out}.backdrop.is-animating{opacity:0}.dialog-content{position:relative;display:flex;flex-direction:column;background-color:var(--kritzel-dialog-background-color, #ffffff);border-radius:var(--kritzel-dialog-border-radius, 12px);box-shadow:var(--kritzel-dialog-box-shadow, 0 4px 20px rgba(0, 0, 0, 0.15));border:var(--kritzel-dialog-border, 1px solid #ebebeb);max-height:var(--kritzel-dialog-max-height, 90vh);max-width:var(--kritzel-dialog-max-width, 90vw);overflow:hidden;transform:scale(1);opacity:1;transition:transform 200ms ease-out, opacity 200ms ease-out;font-family:var(--kritzel-dialog-font-family, sans-serif)}.dialog-content.is-animating{transform:scale(0.95);opacity:0}.dialog-content.size-small{width:var(--kritzel-dialog-width-small, 320px);height:var(--kritzel-dialog-height-small, auto)}.dialog-content.size-medium{width:var(--kritzel-dialog-width-medium, 480px);height:var(--kritzel-dialog-height-medium, auto)}.dialog-content.size-large{width:var(--kritzel-dialog-width-large, 640px);height:var(--kritzel-dialog-height-large, auto)}.dialog-content.size-fullscreen{width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:0}@media (max-width: 576px){.backdrop:has(.fullscreen-on-mobile){background-color:transparent}.dialog-content.fullscreen-on-mobile{width:100vw;height:100vh;height:100dvh;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:0}}.dialog-header{display:flex;align-items:center;justify-content:space-between;padding:var(--kritzel-dialog-header-padding, 16px 20px);border-bottom:var(--kritzel-dialog-header-border, 1px solid #ebebeb);gap:12px}.dialog-title{margin:0;font-size:var(--kritzel-dialog-title-font-size, 18px);font-weight:var(--kritzel-dialog-title-font-weight, 600);color:var(--kritzel-dialog-title-color, #1a1a1a);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.close-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:var(--kritzel-dialog-close-button-border-radius, 6px);background-color:var(--kritzel-dialog-close-button-background, transparent);color:var(--kritzel-dialog-close-button-color, #666666);cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 150ms ease, color 150ms ease;flex-shrink:0;-webkit-tap-highlight-color:transparent}.close-button:hover{background-color:var(--kritzel-dialog-close-button-hover-background, #f5f5f5);color:var(--kritzel-dialog-close-button-hover-color, #1a1a1a)}.close-button:active{background-color:var(--kritzel-dialog-close-button-active-background, #ebebeb)}.close-button:focus-visible{outline:revert;outline-offset:revert}.dialog-body{padding:var(--kritzel-dialog-body-padding, 20px);overflow-y:auto;flex:1;scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}.dialog-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--kritzel-dialog-footer-gap, 8px);padding:var(--kritzel-dialog-footer-padding, 16px 20px);border-top:var(--kritzel-dialog-footer-border, 1px solid #ebebeb)}::slotted([slot='header']){flex:1}::slotted([slot='footer']){display:contents}";const et=class{constructor(i){t(this,i),this.valueChanged=e(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()}disconnectedCallback(){this.isOpen&&(this.isOpen=!1)}handleDocumentClick(t){this.isOpen&&!this.el.contains(t.target)&&this.closeMenu()}handleDocumentKeydown(t){this.isOpen&&"Escape"===t.key&&(t.stopPropagation(),t.preventDefault(),this.closeMenu(),this.triggerElement?.focus())}updateInternalValue(t,e){let i=t;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},e={"dropdown-menu":!0,"is-open":this.isOpen,"open-up":"up"===this.openDirection,"open-down":"down"===this.openDirection};return i(n,{key:"83e46921e04c655ed185bfe3de524a61e9510447"},i("div",{key:"251ee0af926e24e13a2b07fa6b8b41d02212434d",class:"dropdown-wrapper",ref:t=>this.wrapperElement=t},i("slot",{key:"2cf811d76e5e626d19aa746e4f59b4d25ca45ae0",name:"prefix",ref:t=>this.prefixSlotElement=t,onSlotchange:this.evaluatePrefixContent}),i("div",{key:"1d54e16f12814c150d842266f6ee6ae8891a0130",class:"dropdown-container",style:{width:this.width}},i("button",{key:"3c99b3dd4a25a59579eed072953c3d7f502f7a21",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},i("span",{key:"1bfa6da63ffdd6bf2b022f92425ce212e009d507",class:"dropdown-trigger-label"},this.getSelectedLabel()),i("span",{key:"e08ae142512344ffcd0ecfb477133a18fcfb3f34",class:"dropdown-trigger-arrow","aria-hidden":"true"},i("svg",{key:"8386ae9c934762f8e054f42c580cf750c5a9440a",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"},i("polyline",{key:"024d4ecbc8a3ab9879edc02c890df7ceabef1f8a",points:"6 9 12 15 18 9"}))))),i("slot",{key:"028de1fa2049c7d682b967f34a3a5e9c39d32fe2",name:"suffix",ref:t=>this.suffixSlotElement=t,onSlotchange:this.evaluateSuffixContent}),i("ul",{key:"51cd0ecefc1dcb0cd869d7e67c56f1944847efef",class:e,role:"listbox",tabindex:"-1",onKeyDown:this.handleMenuKeyDown,ref:t=>this.menuElement=t},this.options.map(((t,e)=>{const n=t.value===this.internalValue;return i("li",{class:{"dropdown-option":!0,"is-selected":n,"is-focused":e===this.focusedIndex},role:"option","aria-selected":n?"true":"false",style:t.style,onClick:()=>this.selectOption(t),onMouseEnter:()=>this.handleOptionMouseEnter(e)},t.label,n&&i("span",{class:"dropdown-option-check","aria-hidden":"true"},i("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"},i("polyline",{points:"20 6 9 17 4 12"}))))})))))}static get watchers(){return{options:[{optionsChanged:0}],value:[{externalValueChanged:0}]}}};et.style=":host{display:inline-flex;vertical-align:middle;width:100%;position:relative}.dropdown-wrapper{display:flex;align-items:center;border:1px solid var(--kritzel-global-border-color, #ebebeb);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:var(--kritzel-controls-background-color, #ffffff);cursor:var(--kritzel-global-pointer-cursor, pointer);outline:none;font-size:inherit;font-family:inherit;color:var(--kritzel-dropdown-text-color, #333333);-webkit-tap-highlight-color:transparent;text-align:left}.dropdown-trigger:focus-visible{outline:revert}.dropdown-trigger.has-suffix-border{border-right:1px solid var(--kritzel-global-border-color, #ebebeb);border-top-right-radius:0;border-bottom-right-radius:0}.dropdown-trigger.has-prefix-border{border-left:1px solid var(--kritzel-global-border-color, #ebebeb);border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-trigger-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.dropdown-trigger-arrow{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;transition:transform 0.2s ease}.dropdown-trigger-arrow svg{width:100%;height:100%}.dropdown-trigger.is-open .dropdown-trigger-arrow{transform:rotate(180deg)}.dropdown-trigger.is-open.open-up .dropdown-trigger-arrow{transform:rotate(0deg)}.dropdown-menu{position:absolute;left:0;right:0;margin:0;padding:4px 0;list-style:none;background-color:var(--kritzel-controls-background-color, #ffffff);border:1px solid var(--kritzel-global-border-color, #ebebeb);border-radius:var(--kritzel-controls-control-border-radius, 12px);box-shadow:var(--kritzel-controls-box-shadow, 0 4px 12px rgba(0, 0, 0, 0.15));z-index:1000;max-height:240px;overflow-y:auto;opacity:0;visibility:hidden;transition:opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;outline:none}.dropdown-menu.open-down{top:calc(100% + 4px);bottom:auto;transform:translateY(-8px)}.dropdown-menu.open-up{bottom:calc(100% + 4px);top:auto;transform:translateY(8px)}.dropdown-menu.is-open{opacity:1;visibility:inherit;transform:translateY(0)}.dropdown-menu.open-up{box-shadow:var(--kritzel-controls-box-shadow, 0 -4px 12px rgba(0, 0, 0, 0.15))}.dropdown-option{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;cursor:var(--kritzel-global-pointer-cursor, pointer);color:var(--kritzel-dropdown-text-color, #333333);transition:background-color 0.1s ease;-webkit-tap-highlight-color:transparent}.dropdown-option.is-focused{background-color:var(--kritzel-dropdown-hover-background-color, #f0f0f0)}.dropdown-option.is-selected{font-weight:600;background-color:var(--kritzel-dropdown-selected-background-color, #007bff1a)}.dropdown-option-check{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;color:var(--kritzel-dropdown-accent-color, #007bff)}.dropdown-option-check svg{width:100%;height:100%}.dropdown-menu{scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}::slotted(*){height:100%;box-sizing:border-box}";const it={shapeType:a.Rectangle,fillColor:{light:"transparent",dark:"transparent"},strokeColor:l[0],strokeWidth:4,fontColor:l[0],fontSize:16,fontFamily:"Arial",palette:[...l]},nt=1e3,rt=1e-4,ot=class{constructor(i){t(this,i),this.isReady=e(this,"isReady"),this.objectsChange=e(this,"objectsChange"),this.undoStateChange=e(this,"undoStateChange"),this.themeChange=e(this,"themeChange")}get host(){return r(this)}scaleMax=nt;scaleMin=rt;lockDrawingScale=!0;controls=[{name:"selection",type:"tool",isDefault:!0,tool:d,icon:"cursor"},{name:"brush",type:"tool",tool:f,icon:"pen",config:k},{name:"line",type:"tool",tool:p,icon:"arrow",config:m},{name:"eraser",type:"tool",tool:y,icon:"eraser"},{name:"text",type:"tool",tool:b,icon:"type",config:x},{name:"shape",type:"tool",tool:G,icon:"shape-rectangle",config:it,subOptions:[{id:"rectangle",icon:"shape-rectangle",label:"Rectangle",value:a.Rectangle,toolProperty:"shapeType"},{id:"ellipse",icon:"shape-ellipse",label:"Ellipse",value:a.Ellipse,toolProperty:"shapeType"},{id:"triangle",icon:"shape-triangle",label:"Triangle",value:a.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;themeChange;isEngineReady=!1;isControlsReady=!1;isWorkspaceManagerReady=!1;workspaces=[];activeWorkspace;isVirtualKeyboardOpen=!1;undoState=null;isBackToContentButtonVisible=!1;currentTheme="light";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)}}onCurrentThemeChange(){setTimeout((()=>this.setOsSpecificCssVariables()),0)}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 backToContent(){return this.engineRef.backToContent()}async createWorkspace(t,e){const i=new z(`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;settingsRef;exportRef;splitButtonRef;componentWillLoad(){this.loadSettingsFromStorage()}componentDidLoad(){this.registerCustomSvgIcons(),this.listenForMobileKeyboard(),this.setOsSpecificCssVariables()}loadSettingsFromStorage(){const t=localStorage.getItem("kritzel-settings");if(t)try{const e=JSON.parse(t);"number"==typeof e.scaleMin&&(this.scaleMin=e.scaleMin),"number"==typeof e.scaleMax&&(this.scaleMax=e.scaleMax),"boolean"==typeof e.lockDrawingScale&&(this.lockDrawingScale=e.lockDrawingScale),"light"!==e.theme&&"dark"!==e.theme||(this.currentTheme=e.theme)}catch{}}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}handleObjectsInViewportChange(t){this.isBackToContentButtonVisible=!(t.detail.length>0)}handleSettingsChange(t){this.scaleMin=t.detail.scaleMin,this.scaleMax=t.detail.scaleMax,this.lockDrawingScale=t.detail.lockDrawingScale,this.currentTheme=t.detail.theme,this.themeChange.emit(t.detail.theme)}async handleMoreMenuItemSelect(t){const{item:e}=t.detail;if("settings"===e.id&&this.settingsRef.open(),"export"===e.id){const t=await this.engineRef.getScreenshot("png");this.exportRef.open(t)}}registerCustomSvgIcons(){for(const[t,e]of Object.entries(this.customSvgIcons))C.register(t,e)}listenForMobileKeyboard(){S.onKeyboardVisibleChanged((t=>{this.isVirtualKeyboardOpen=t}))}setOsSpecificCssVariables(){switch(g.detectOS()){case"iOS":this.host.style.setProperty("--kritzel-editor-top-left-buttons-top","14px"),this.host.style.setProperty("--kritzel-editor-top-left-buttons-left","14px"),this.host.style.setProperty("--kritzel-editor-controls-bottom","14px"),this.host.style.setProperty("--kritzel-editor-controls-transition","cubic-bezier(0.25, 0.1, 0.25, 1.0)"),this.host.style.setProperty("--kritzel-editor-controls-transform","translateY(200%)"),this.host.style.setProperty("--kritzel-editor-controls-transition-duration","0.25s");break;case"Android":this.host.style.setProperty("--kritzel-editor-top-left-buttons-top","14px"),this.host.style.setProperty("--kritzel-editor-top-left-buttons-left","14px"),this.host.style.setProperty("--kritzel-editor-controls-bottom","24px");break;default:this.host.style.setProperty("--kritzel-editor-top-left-buttons-top","14px"),this.host.style.setProperty("--kritzel-editor-top-left-buttons-left","14px"),this.host.style.setProperty("--kritzel-editor-controls-bottom","14px")}}render(){return i(n,{key:"8abd16c01cedfeb14a955c035527de9c888674b9"},i("div",{key:"6bef3409a2b41de3aaf09c993662ba956578bc6a",class:"top-left-buttons"},i("kritzel-workspace-manager",{key:"ab4bcb8af52faa2b91380ea1591ecd5e59e3e18e",workspaces:this.workspaces,activeWorkspace:this.activeWorkspace,onWorkspaceChange:t=>this.activeWorkspace=t.detail,onIsWorkspaceManagerReady:()=>this.isWorkspaceManagerReady=!0}),i("kritzel-back-to-content",{key:"953502a6f1e6e8dd8478d57e3613c97e138aae63",visible:this.isBackToContentButtonVisible,onBackToContent:()=>this.backToContent()})),i("kritzel-engine",{key:"fcea81bc67cdb078a9ebbfa63211e34766512ef0",ref:t=>this.engineRef=t,workspace:this.activeWorkspace,syncConfig:this.syncConfig,scaleMax:this.scaleMax,lockDrawingScale:this.lockDrawingScale,scaleMin:this.scaleMin,theme:this.currentTheme,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),onObjectsInViewportChange:t=>this.handleObjectsInViewportChange(t)}),i("kritzel-controls",{key:"da63adcab7cbd5a349f7ad6027789b3efffed9ac",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,theme:this.currentTheme,onIsControlsReady:()=>this.isControlsReady=!0}),i("div",{key:"baf7dedb8f514dba4aac7bcc44c0ba5c02cc0cf8",class:"top-right-buttons"},i("kritzel-settings",{key:"8f283f3a7138a4f84a2ca8165beb4310cedb939c",ref:t=>this.settingsRef=t,onSettingsChange:t=>this.handleSettingsChange(t)}),i("kritzel-export",{key:"8f89c247b842f5d56ef3754e17330edfe1a6e3c2",ref:t=>this.exportRef=t,onExportPng:()=>this.engineRef.exportViewportAsPng(),onExportSvg:()=>this.engineRef.exportViewportAsSvg()}),i("kritzel-more-menu",{key:"053e9de589cad9a05ead53c2cbcbdd8a15527a9c",onItemSelect:t=>this.handleMoreMenuItemSelect(t)})))}static get watchers(){return{isEngineReady:[{onIsEngineReady:0}],isControlsReady:[{onIsControlsReady:0}],workspaces:[{onWorkspacesChange:0}],currentTheme:[{onCurrentThemeChange:0}]}}};ot.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{}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%))}.top-left-buttons{position:absolute;top:var(--kritzel-editor-top-left-buttons-top, 14px);left:var(--kritzel-editor-top-left-buttons-left, 14px);display:flex;align-items:flex-start;gap:8px}.top-right-buttons{position:absolute;top:var(--kritzel-editor-top-right-buttons-top, 14px);right:var(--kritzel-editor-top-right-buttons-right, 14px);display:flex;align-items:center;gap:8px}.top-right-button{display:flex;align-items:center;justify-content:center;width:50px;height:50px;padding:0;border:var(--kritzel-split-button-border, 1px solid #ebebeb);border-radius:var(--kritzel-split-button-border-radius, 12px);background-color:var(--kritzel-split-button-background-color, #ffffff);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:var(--kritzel-split-button-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));transition:background-color 150ms ease;-webkit-tap-highlight-color:transparent}.top-right-button:hover{background-color:#f5f5f5}.top-right-button:active{background-color:#ebebeb}";var st,at,lt,ct={exports:{}},ht=(st||(st=1,at=ct,lt=ct.exports,function(){var t,e="Expected a function",i="__lodash_hash_undefined__",n="__lodash_placeholder__",r=32,o=128,s=1/0,a=9007199254740991,l=NaN,c=4294967295,h=[["ary",o],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",r],["partialRight",64],["rearg",256]],u="[object Arguments]",d="[object Array]",f="[object Boolean]",p="[object Date]",b="[object Error]",g="[object Function]",v="[object GeneratorFunction]",k="[object Map]",m="[object Number]",y="[object Object]",x="[object Promise]",w="[object RegExp]",z="[object Set]",C="[object String]",S="[object Symbol]",M="[object WeakMap]",I="[object ArrayBuffer]",j="[object DataView]",T="[object Float32Array]",_="[object Float64Array]",$="[object Int8Array]",E="[object Int16Array]",A="[object Int32Array]",F="[object Uint8Array]",O="[object Uint8ClampedArray]",D="[object Uint16Array]",R="[object Uint32Array]",P=/\b__p \+= '';/g,W=/\b(__p \+=) '' \+/g,L=/(__e\(.*?\)|\b__t\)) \+\n'';/g,V=/&(?:amp|lt|gt|quot|#39);/g,U=/[&<>"']/g,B=RegExp(V.source),H=RegExp(U.source),N=/<%-([\s\S]+?)%>/g,Y=/<%([\s\S]+?)%>/g,q=/<%=([\s\S]+?)%>/g,G=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,X=/^\w*$/,Z=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,J=/[\\^$.*+?()[\]{}|]/g,Q=RegExp(J.source),tt=/^\s+/,et=/\s/,it=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,nt=/\{\n\/\* \[wrapped with (.+)\] \*/,rt=/,? & /,ot=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,st=/[()=,{}\[\]\/\s]/,ct=/\\(\\)?/g,ht=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ut=/\w*$/,dt=/^[-+]0x[0-9a-f]+$/i,ft=/^0b[01]+$/i,pt=/^\[object .+?Constructor\]$/,bt=/^0o[0-7]+$/i,gt=/^(?:0|[1-9]\d*)$/,vt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,kt=/($^)/,mt=/['\n\r\u2028\u2029\\]/g,yt="\\ud800-\\udfff",xt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",wt="\\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="["+yt+"]",jt="["+Mt+"]",Tt="["+xt+"]",_t="\\d+",$t="["+wt+"]",Et="["+zt+"]",At="[^"+yt+Mt+_t+wt+zt+Ct+"]",Ft="\\ud83c[\\udffb-\\udfff]",Ot="[^"+yt+"]",Dt="(?:\\ud83c[\\udde6-\\uddff]){2}",Rt="[\\ud800-\\udbff][\\udc00-\\udfff]",Pt="["+Ct+"]",Wt="\\u200d",Lt="(?:"+Et+"|"+At+")",Vt="(?:"+Pt+"|"+At+")",Ut="(?:['’](?:d|ll|m|re|s|t|ve))?",Bt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Kt="(?:"+Tt+"|"+Ft+")?",Ht="["+St+"]?",Nt=Ht+Kt+"(?:"+Wt+"(?:"+[Ot,Dt,Rt].join("|")+")"+Ht+Kt+")*",Yt="(?:"+[$t,Dt,Rt].join("|")+")"+Nt,qt="(?:"+[Ot+Tt+"?",Tt,Dt,Rt,It].join("|")+")",Gt=RegExp("['’]","g"),Xt=RegExp(Tt,"g"),Zt=RegExp(Ft+"(?="+Ft+")|"+qt+Nt,"g"),Jt=RegExp([Pt+"?"+Et+"+"+Ut+"(?="+[jt,Pt,"$"].join("|")+")",Vt+"+"+Bt+"(?="+[jt,Pt+Lt,"$"].join("|")+")",Pt+"?"+Lt+"+"+Ut,Pt+"+"+Bt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",_t,Yt].join("|"),"g"),Qt=RegExp("["+Wt+yt+xt+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[T]=ne[_]=ne[$]=ne[E]=ne[A]=ne[F]=ne[O]=ne[D]=ne[R]=!0,ne[u]=ne[d]=ne[I]=ne[f]=ne[j]=ne[p]=ne[b]=ne[g]=ne[k]=ne[m]=ne[y]=ne[w]=ne[z]=ne[C]=ne[M]=!1;var re={};re[u]=re[d]=re[I]=re[j]=re[f]=re[p]=re[T]=re[_]=re[$]=re[E]=re[A]=re[k]=re[m]=re[y]=re[w]=re[z]=re[C]=re[S]=re[F]=re[O]=re[D]=re[R]=!0,re[b]=re[g]=re[M]=!1;var oe={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},se=parseFloat,ae=parseInt,le="object"==typeof K&&K&&K.Object===Object&&K,ce="object"==typeof self&&self&&self.Object===Object&&self,he=le||ce||Function("return this")(),ue=lt&&!lt.nodeType&&lt,de=ue&&at&&!at.nodeType&&at,fe=de&&de.exports===ue,pe=fe&&le.process,be=function(){try{return de&&de.require&&de.require("util").types||pe&&pe.binding&&pe.binding("util")}catch(t){}}(),ge=be&&be.isArrayBuffer,ve=be&&be.isDate,ke=be&&be.isMap,me=be&&be.isRegExp,ye=be&&be.isSet,xe=be&&be.isTypedArray;function we(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)&&Pe(t,e,0)>-1}function Te(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 _e(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 $e(t,e){for(var i=-1,n=e.length,r=t.length;++i<n;)t[r+i]=e[i];return t}function Ee(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 Ae(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 Fe(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 Oe=Ue("length");function De(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 Pe(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 We(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 Ve(t,e){var i=null==t?0:t.length;return i?He(t,e)/i:l}function Ue(e){return function(i){return null==i?t:i[e]}}function Be(e){return function(i){return null==e?t:e[i]}}function Ke(t,e,i,n,r){return r(t,(function(t,r,o){i=n?(n=!1,t):e(i,t,r,o)})),i}function He(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 Ne(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 qe(t){return function(e){return t(e)}}function Ge(t,e){return _e(e,(function(e){return t[e]}))}function Xe(t,e){return t.has(e)}function Ze(t,e){for(var i=-1,n=t.length;++i<n&&Pe(e,t[i],0)>-1;);return i}function Je(t,e){for(var i=t.length;i--&&Pe(e,t[i],0)>-1;);return i}var Qe=Be({À:"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=Be({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"});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):Oe(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=Be({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),di=function K(et){var at,lt=(et=null==et?he:di.defaults(he.Object(),et,di.pick(he,ee))).Array,yt=et.Date,xt=et.Error,wt=et.Function,zt=et.Math,Ct=et.Object,St=et.RegExp,Mt=et.String,It=et.TypeError,jt=lt.prototype,Tt=Ct.prototype,_t=et["__core-js_shared__"],$t=wt.prototype.toString,Et=Tt.hasOwnProperty,At=0,Ft=(at=/[^.]+$/.exec(_t&&_t.keys&&_t.keys.IE_PROTO||""))?"Symbol(src)_1."+at:"",Ot=Tt.toString,Dt=$t.call(Ct),Rt=he._,Pt=St("^"+$t.call(Et).replace(J,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Wt=fe?et.Buffer:t,Lt=et.Symbol,Vt=et.Uint8Array,Ut=Wt?Wt.allocUnsafe:t,Bt=ri(Ct.getPrototypeOf,Ct),Kt=Ct.create,Ht=Tt.propertyIsEnumerable,Nt=jt.splice,Yt=Lt?Lt.isConcatSpreadable:t,qt=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=yt&&yt.now!==he.Date.now&&yt.now,ce=et.setTimeout!==he.setTimeout&&et.setTimeout,ue=zt.ceil,de=zt.floor,pe=Ct.getOwnPropertySymbols,be=Wt?Wt.isBuffer:t,Oe=et.isFinite,Be=jt.join,fi=ri(Ct.keys,Ct),pi=zt.max,bi=zt.min,gi=yt.now,vi=et.parseInt,ki=zt.random,mi=jt.reverse,yi=ao(et,"DataView"),xi=ao(et,"Map"),wi=ao(et,"Promise"),zi=ao(et,"Set"),Ci=ao(et,"WeakMap"),Si=ao(Ct,"create"),Mi=Ci&&new Ci,Ii={},ji=Fo(yi),Ti=Fo(xi),_i=Fo(wi),$i=Fo(zi),Ei=Fo(Ci),Ai=Lt?Lt.prototype:t,Fi=Ai?Ai.valueOf:t,Oi=Ai?Ai.toString:t;function Di(t){if(Zs(t)&&!Ls(t)&&!(t instanceof Li)){if(t instanceof Wi)return t;if(Et.call(t,"__wrapped__"))return Oo(t)}return new Wi(t)}var Ri=function(){function e(){}return function(i){if(!Xs(i))return{};if(Kt)return Kt(i);e.prototype=i;var n=new e;return e.prototype=t,n}}();function Pi(){}function Wi(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 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 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 Bi(t){var e=-1,i=null==t?0:t.length;for(this.clear();++e<i;){var n=t[e];this.set(n[0],n[1])}}function Ki(t){var e=-1,i=null==t?0:t.length;for(this.__data__=new Bi;++e<i;)this.add(t[e])}function Hi(t){var e=this.__data__=new Ui(t);this.size=e.size}function Ni(t,e){var i=Ls(t),n=!i&&Ws(t),r=!i&&!n&&Ks(t),o=!i&&!n&&!r&&oa(t),s=i||n||r||o,a=s?Ne(t.length,Mt):[],l=a.length;for(var c in t)!e&&!Et.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[Kn(0,i-1)]:t}function qi(t,e){return $o(Sr(t),rn(e,0,t.length))}function Gi(t){return $o(Sr(t))}function Xi(e,i,n){(n!==t&&!Ds(e[i],n)||n===t&&!(i in e))&&en(e,i,n)}function Zi(e,i,n){var r=e[i];Et.call(e,i)&&Ds(r,n)&&(n!==t||i in e)||en(e,i,n)}function Ji(t,e){for(var i=t.length;i--;)if(Ds(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,Ia(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=lt(r),s=null==e;++n<r;)o[n]=s?t:wa(e,i[n]);return o}function rn(e,i,n){return e==e&&(n!==t&&(e=e<=n?e:n),i!==t&&(e=e>=i?e:i)),e}function on(e,i,n,r,o,s){var a,l=1&i,c=2&i,h=4&i;if(n&&(a=o?n(e,r,o,s):n(e)),a!==t)return a;if(!Xs(e))return e;var d=Ls(e);if(d){if(a=function(t){var e=t.length,i=new t.constructor(e);return e&&"string"==typeof t[0]&&Et.call(t,"index")&&(i.index=t.index,i.input=t.input),i}(e),!l)return Sr(e,a)}else{var b=ho(e),x=b==g||b==v;if(Ks(e))return mr(e,l);if(b==y||b==u||x&&!o){if(a=c||x?{}:fo(e),!l)return c?function(t,e){return Mr(t,co(t),e)}(e,function(t,e){return t&&Mr(e,ja(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 yr(t);case f:case p:return new n(+t);case j:return function(t,e){var i=e?yr(t.buffer):t.buffer;return new t.constructor(i,t.byteOffset,t.byteLength)}(t,i);case T:case _:case $:case E:case A:case F:case O:case D:case R:return xr(t,i);case k:return new n;case m:case C:return new n(t);case w: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 Fi?Ct(Fi.call(t)):{}}}(e,b,l)}}s||(s=new Hi);var M=s.get(e);if(M)return M;s.set(e,a),ia(e)?e.forEach((function(t){a.add(on(t,i,n,t,e,s))})):Js(e)&&e.forEach((function(t,r){a.set(r,on(t,i,n,r,e,s))}));var P=d?t:(h?c?to:Qr:c?ja:Ia)(e);return Ce(P||e,(function(t,r){P&&(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=_e(e,qe(i))),n?(o=Te,s=!1):e.length>=200&&(o=Xe,s=!1,e=new Ki(e));t:for(;++r<a;){var h=t[r],u=null==i?h:i(h);if(h=n||0!==h?h:0,s&&u==u){for(var d=c;d--;)if(e[d]===u)continue t;l.push(h)}else o(e,u,n)||l.push(h)}return l}Di.templateSettings={escape:N,evaluate:Y,interpolate:q,variable:"",imports:{_:Di}},(Di.prototype=Pi.prototype).constructor=Di,(Wi.prototype=Ri(Pi.prototype)).constructor=Wi,(Li.prototype=Ri(Pi.prototype)).constructor=Li,Vi.prototype.clear=function(){this.__data__=Si?Si(null):{},this.size=0},Vi.prototype.delete=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e},Vi.prototype.get=function(e){var n=this.__data__;if(Si){var r=n[e];return r===i?t:r}return Et.call(n,e)?n[e]:t},Vi.prototype.has=function(e){var i=this.__data__;return Si?i[e]!==t:Et.call(i,e)},Vi.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},Ui.prototype.clear=function(){this.__data__=[],this.size=0},Ui.prototype.delete=function(t){var e=this.__data__,i=Ji(e,t);return!(i<0||(i==e.length-1?e.pop():Nt.call(e,i,1),--this.size,0))},Ui.prototype.get=function(e){var i=this.__data__,n=Ji(i,e);return n<0?t:i[n][1]},Ui.prototype.has=function(t){return Ji(this.__data__,t)>-1},Ui.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},Bi.prototype.clear=function(){this.size=0,this.__data__={hash:new Vi,map:new(xi||Ui),string:new Vi}},Bi.prototype.delete=function(t){var e=oo(this,t).delete(t);return this.size-=e?1:0,e},Bi.prototype.get=function(t){return oo(this,t).get(t)},Bi.prototype.has=function(t){return oo(this,t).has(t)},Bi.prototype.set=function(t,e){var i=oo(this,t),n=i.size;return i.set(t,e),this.size+=i.size==n?0:1,this},Ki.prototype.add=Ki.prototype.push=function(t){return this.__data__.set(t,i),this},Ki.prototype.has=function(t){return this.__data__.has(t)},Hi.prototype.clear=function(){this.__data__=new Ui,this.size=0},Hi.prototype.delete=function(t){var e=this.__data__,i=e.delete(t);return this.size=e.size,i},Hi.prototype.get=function(t){return this.__data__.get(t)},Hi.prototype.has=function(t){return this.__data__.has(t)},Hi.prototype.set=function(t,e){var i=this.__data__;if(i instanceof Ui){var n=i.__data__;if(!xi||n.length<199)return n.push([t,e]),this.size=++i.size,this;i=this.__data__=new Bi(n)}return i.set(t,e),this.size=i.size,this};var cn=Tr(vn),hn=Tr(kn,!0);function un(t,e){var i=!0;return cn(t,(function(t,n,r){return i=!!e(t,n,r)})),i}function dn(e,i,n){for(var r=-1,o=e.length;++r<o;){var s=e[r],a=i(s);if(null!=a&&(l===t?a==a&&!ra(a):n(a,l)))var l=a,c=s}return c}function fn(t,e){var i=[];return cn(t,(function(t,n,r){e(t,n,r)&&i.push(t)})),i}function pn(t,e,i,n,r){var o=-1,s=t.length;for(i||(i=po),r||(r=[]);++o<s;){var a=t[o];e>0&&i(a)?e>1?pn(a,e-1,i,n,r):$e(r,a):n||(r[r.length]=a)}return r}var bn=_r(),gn=_r(!0);function vn(t,e){return t&&bn(t,e,Ia)}function kn(t,e){return t&&gn(t,e,Ia)}function mn(t,e){return Ie(e,(function(e){return Ys(t[e])}))}function yn(e,i){for(var n=0,r=(i=br(i,e)).length;null!=e&&n<r;)e=e[Ao(i[n++])];return n&&n==r?e:t}function xn(t,e,i){var n=e(t);return Ls(t)?n:$e(n,i(t))}function wn(e){return null==e?e===t?"[object Undefined]":"[object Null]":Zt&&Zt in Ct(e)?function(e){var i=Et.call(e,Zt),n=e[Zt];try{e[Zt]=t;var r=!0}catch(t){}var o=Ot.call(e);return r&&(i?e[Zt]=n:delete e[Zt]),o}(e):function(t){return Ot.call(t)}(e)}function zn(t,e){return t>e}function Cn(t,e){return null!=t&&Et.call(t,e)}function Sn(t,e){return null!=t&&e in Ct(t)}function Mn(e,i,n){for(var r=n?Te:je,o=e[0].length,s=e.length,a=s,l=lt(s),c=1/0,h=[];a--;){var u=e[a];a&&i&&(u=_e(u,qe(i))),c=bi(u.length,c),l[a]=!n&&(i||o>=120&&u.length>=120)?new Ki(a&&u):t}u=e[0];var d=-1,f=l[0];t:for(;++d<o&&h.length<c;){var p=u[d],b=i?i(p):p;if(p=n||0!==p?p:0,!(f?Xe(f,b):r(h,b,n))){for(a=s;--a;){var g=l[a];if(!(g?Xe(g,b):r(e[a],b,n)))continue t}f&&f.push(b),h.push(p)}}return h}function In(e,i,n){var r=null==(e=Co(e,i=br(i,e)))?e:e[Ao(No(i))];return null==r?t:we(r,e,n)}function jn(t){return Zs(t)&&wn(t)==u}function Tn(e,i,n,r,o){return e===i||(null==e||null==i||!Zs(e)&&!Zs(i)?e!=e&&i!=i:function(e,i,n,r,o,s){var a=Ls(e),l=Ls(i),c=a?d:ho(e),h=l?d:ho(i),g=(c=c==u?y:c)==y,v=(h=h==u?y:h)==y,x=c==h;if(x&&Ks(e)){if(!Ks(i))return!1;a=!0,g=!1}if(x&&!g)return s||(s=new Hi),a||oa(e)?Zr(e,i,n,r,o,s):function(t,e,i,n,r,o,s){switch(i){case j:if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case I:return!(t.byteLength!=e.byteLength||!o(new Vt(t),new Vt(e)));case f:case p:case m:return Ds(+t,+e);case b:return t.name==e.name&&t.message==e.message;case w: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(Fi)return Fi.call(t)==Fi.call(e)}return!1}(e,i,c,n,r,o,s);if(!(1&n)){var M=g&&Et.call(e,"__wrapped__"),T=v&&Et.call(i,"__wrapped__");if(M||T){var _=M?e.value():e,$=T?i.value():i;return s||(s=new Hi),o(_,$,n,r,s)}}return!!x&&(s||(s=new Hi),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:Et.call(i,u)))return!1}var d=s.get(e),f=s.get(i);if(d&&f)return d==i&&f==e;var p=!0;s.set(e,i),s.set(i,e);for(var b=a;++h<c;){var g=e[u=l[h]],v=i[u];if(r)var k=a?r(v,g,u,i,e,s):r(g,v,u,e,i,s);if(!(k===t?g===v||o(g,v,n,r,s):k)){p=!1;break}b||(b="constructor"==u)}if(p&&!b){var m=e.constructor,y=i.constructor;m==y||!("constructor"in e)||!("constructor"in i)||"function"==typeof m&&m instanceof m&&"function"==typeof y&&y instanceof y||(p=!1)}return s.delete(e),s.delete(i),p}(e,i,n,r,o,s))}(e,i,n,r,Tn,o))}function _n(e,i,n,r){var o=n.length,s=o,a=!r;if(null==e)return!s;for(e=Ct(e);o--;){var l=n[o];if(a&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++o<s;){var c=(l=n[o])[0],h=e[c],u=l[1];if(a&&l[2]){if(h===t&&!(c in e))return!1}else{var d=new Hi;if(r)var f=r(h,u,c,e,i,d);if(!(f===t?Tn(u,h,3,r,d):f))return!1}}return!0}function $n(t){return!(!Xs(t)||(e=t,Ft&&Ft in e))&&(Ys(t)?Pt:pt).test(Fo(t));var e}function En(t){return"function"==typeof t?t:null==t?Qa:"object"==typeof t?Ls(t)?Rn(t[0],t[1]):Dn(t):ll(t)}function An(t){if(!yo(t))return fi(t);var e=[];for(var i in Ct(t))Et.call(t,i)&&"constructor"!=i&&e.push(i);return e}function Fn(t,e){return t<e}function On(t,e){var i=-1,n=Us(t)?lt(t.length):[];return cn(t,(function(t,r,o){n[++i]=e(t,r,o)})),n}function Dn(t){var e=so(t);return 1==e.length&&e[0][2]?wo(e[0][0],e[0][1]):function(i){return i===t||_n(i,t,e)}}function Rn(e,i){return vo(e)&&xo(i)?wo(Ao(e),i):function(n){var r=wa(n,e);return r===t&&r===i?za(n,e):Tn(i,r,3)}}function Pn(e,i,n,r,o){e!==i&&bn(i,(function(s,a){if(o||(o=new Hi),Xs(s))!function(e,i,n,r,o,s,a){var l=So(e,n),c=So(i,n),h=a.get(c);if(h)Xi(e,n,h);else{var u=s?s(l,c,n+"",e,i,a):t,d=u===t;if(d){var f=Ls(c),p=!f&&Ks(c),b=!f&&!p&&oa(c);u=c,f||p||b?Ls(l)?u=l:Bs(l)?u=Sr(l):p?(d=!1,u=mr(c,!0)):b?(d=!1,u=xr(c,!0)):u=[]:ta(c)||Ws(c)?(u=l,Ws(l)?u=fa(l):Xs(l)&&!Ys(l)||(u=fo(c))):d=!1}d&&(a.set(c,u),o(u,c,r,s,a),a.delete(c)),Xi(e,n,u)}}(e,i,a,n,Pn,r,o);else{var l=r?r(So(e,a),s,a+"",e,i,o):t;l===t&&(l=s),Xi(e,a,l)}}),ja)}function Wn(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?_e(e,(function(t){return Ls(t)?function(e){return yn(e,1===t.length?t[0]:t)}:t})):[Qa];var n=-1;e=_e(e,qe(ro()));var r=On(t,(function(t){var i=_e(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=wr(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 Vn(t,e,i){for(var n=-1,r=e.length,o={};++n<r;){var s=e[n],a=yn(t,s);i(a,s)&&Gn(o,br(s,t),a)}return o}function Un(t,e,i,n){var r=n?We:Pe,o=-1,s=e.length,a=t;for(t===e&&(e=Sr(e)),i&&(a=_e(t,qe(i)));++o<s;)for(var l=0,c=e[o],h=i?i(c):c;(l=r(a,h,l,n))>-1;)a!==t&&Nt.call(a,l,1),Nt.call(t,l,1);return t}function Bn(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)?Nt.call(t,r,1):ar(t,r)}}return t}function Kn(t,e){return t+de(ki()*(e-t+1))}function Hn(t,e){var i="";if(!t||e<1||e>a)return i;do{e%2&&(i+=t),(e=de(e/2))&&(t+=t)}while(e);return i}function Nn(t,e){return jo(zo(t,e,Qa),t+"")}function Yn(t){return Yi(Da(t))}function qn(t,e){var i=Da(t);return $o(i,rn(e,0,i.length))}function Gn(e,i,n,r){if(!Xs(e))return e;for(var o=-1,s=(i=br(i,e)).length,a=s-1,l=e;null!=l&&++o<s;){var c=Ao(i[o]),h=n;if("__proto__"===c||"constructor"===c||"prototype"===c)return e;if(o!=a){var u=l[c];(h=r?r(u,c,l):t)===t&&(h=Xs(u)?u:bo(i[o+1])?[]:{})}Zi(l,c,h),l=l[c]}return e}var Xn=Mi?function(t,e){return Mi.set(t,e),t}:Qa,Zn=Qt?function(t,e){return Qt(t,"toString",{configurable:!0,enumerable:!1,value:Xa(e),writable:!0})}:Qa;function Jn(t){return $o(Da(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=lt(r);++n<r;)o[n]=t[n+e];return o}function tr(t,e){var i;return cn(t,(function(t,n,r){return!(i=e(t,n,r))})),!!i}function er(t,e,i){var n=0,r=null==t?n:t.length;if("number"==typeof e&&e==e&&r<=2147483647){for(;n<r;){var o=n+r>>>1,s=t[o];null!==s&&!ra(s)&&(i?s<=e:s<e)?n=o+1:r=o}return r}return ir(t,e,Qa,i)}function ir(e,i,n,r){var o=0,s=null==e?0:e.length;if(0===s)return 0;for(var a=(i=n(i))!=i,l=null===i,c=ra(i),h=i===t;o<s;){var u=de((o+s)/2),d=n(e[u]),f=d!==t,p=null===d,b=d==d,g=ra(d);if(a)var v=r||b;else v=h?b&&(r||f):l?b&&f&&(r||!p):c?b&&f&&!p&&(r||!g):!p&&!g&&(r?d<=i:d<i);v?o=u+1:s=u}return bi(s,4294967294)}function nr(t,e){for(var i=-1,n=t.length,r=0,o=[];++i<n;){var s=t[i],a=e?e(s):s;if(!i||!Ds(a,l)){var l=a;o[r++]=0===s?0:s}}return o}function rr(t){return"number"==typeof t?t:ra(t)?l:+t}function or(t){if("string"==typeof t)return t;if(Ls(t))return _e(t,or)+"";if(ra(t))return Oi?Oi.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=Te;else if(o>=200){var c=e?null:Hr(t);if(c)return si(c);s=!1,r=Xe,l=new Ki}else l=e?[]:a;t:for(;++n<o;){var h=t[n],u=e?e(h):h;if(h=i||0!==h?h:0,s&&u==u){for(var d=l.length;d--;)if(l[d]===u)continue t;e&&l.push(u),a.push(h)}else r(l,u,i)||(l!==a&&l.push(u),a.push(h))}return a}function ar(t,e){var i=-1,n=(e=br(e,t)).length;if(!n)return!0;for(var r=null==t||"object"!=typeof t&&"function"!=typeof t;++i<n;){var o=e[i];if("string"==typeof o){if("__proto__"===o&&!Et.call(t,"__proto__"))return!1;if("constructor"===o&&i+1<n&&"string"==typeof e[i+1]&&"prototype"===e[i+1]){if(r&&0===i)continue;return!1}}}var s=Co(t,e);return null==s||delete s[Ao(No(e))]}function lr(t,e,i,n){return Gn(t,e,i(yn(t,e)),n)}function cr(t,e,i,n){for(var r=t.length,o=n?r:-1;(n?o--:++o<r)&&e(t[o],o,t););return i?Qn(t,n?0:o,n?o+1:r):Qn(t,n?o+1:0,n?r:o)}function hr(t,e){var i=t;return i instanceof Li&&(i=i.value()),Ee(e,(function(t,e){return e.func.apply(e.thisArg,$e([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=lt(n);++r<n;)for(var s=t[r],a=-1;++a<n;)a!=r&&(o[r]=ln(o[r]||s,t[a],e,i));return sr(pn(o,1),e,i)}function dr(e,i,n){for(var r=-1,o=e.length,s=i.length,a={};++r<o;)n(a,e[r],r<s?i[r]:t);return a}function fr(t){return Bs(t)?t:[]}function pr(t){return"function"==typeof t?t:Qa}function br(t,e){return Ls(t)?t:vo(t,e)?[t]:Eo(pa(t))}var gr=Nn;function vr(e,i,n){var r=e.length;return n=n===t?r:n,!i&&n>=r?e:Qn(e,i,n)}var kr=oe||function(t){return he.clearTimeout(t)};function mr(t,e){if(e)return t.slice();var i=t.length,n=Ut?Ut(i):new t.constructor(i);return t.copy(n),n}function yr(t){var e=new t.constructor(t.byteLength);return new Vt(e).set(new Vt(t)),e}function xr(t,e){var i=e?yr(t.buffer):t.buffer;return new t.constructor(i,t.byteOffset,t.length)}function wr(e,i){if(e!==i){var n=e!==t,r=null===e,o=e==e,s=ra(e),a=i!==t,l=null===i,c=i==i,h=ra(i);if(!l&&!h&&!s&&e>i||s&&a&&c&&!l&&!h||r&&a&&c||!n&&c||!o)return 1;if(!r&&!s&&!h&&e<i||h&&n&&o&&!r&&!s||l&&n&&o||!a&&o||!c)return-1}return 0}function zr(t,e,i,n){for(var r=-1,o=t.length,s=i.length,a=-1,l=e.length,c=pi(o-s,0),h=lt(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=lt(h+c),d=!n;++r<h;)u[r]=t[r];for(var f=r;++l<c;)u[f+l]=e[l];for(;++s<a;)(d||r<o)&&(u[f+i[s]]=t[r++]);return u}function Sr(t,e){var i=-1,n=t.length;for(e||(e=lt(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=Ls(i)?ze:Qi,o=e?e():{};return r(i,t,ro(n,2),o)}}function jr(e){return Nn((function(i,n){var r=-1,o=n.length,s=o>1?n[o-1]:t,a=o>2?n[2]:t;for(s=e.length>3&&"function"==typeof s?(o--,s):t,a&&go(n[0],n[1],a)&&(s=o<3?t:s,o=1),i=Ct(i);++r<o;){var l=n[r];l&&e(i,l,r,s)}return i}))}function Tr(t,e){return function(i,n){if(null==i)return i;if(!Us(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 _r(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 $r(e){return function(i){var n=ii(i=pa(i))?ci(i):t,r=n?n[0]:i.charAt(0),o=n?vr(n,1).join(""):i.slice(1);return r[e]()+o}}function Er(t){return function(e){return Ee(Ya(Wa(e).replace(Gt,"")),t,"")}}function Ar(t){return function(){var e=arguments;switch(e.length){case 0:return new t;case 1:return new t(e[0]);case 2:return new t(e[0],e[1]);case 3:return new t(e[0],e[1],e[2]);case 4:return new t(e[0],e[1],e[2],e[3]);case 5:return new t(e[0],e[1],e[2],e[3],e[4]);case 6:return new t(e[0],e[1],e[2],e[3],e[4],e[5]);case 7:return new t(e[0],e[1],e[2],e[3],e[4],e[5],e[6])}var i=Ri(t.prototype),n=t.apply(i,e);return Xs(n)?n:i}}function Fr(e){return function(i,n,r){var o=Ct(i);if(!Us(i)){var s=ro(n,3);i=Ia(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 Or(i){return Jr((function(n){var r=n.length,o=r,s=Wi.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 Wi([],!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&&Ls(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 Dr(e,i,n,r,s,a,l,c,h,u){var d=i&o,f=1&i,p=2&i,b=24&i,g=512&i,v=p?t:Ar(e);return function o(){for(var k=arguments.length,m=lt(k),y=k;y--;)m[y]=arguments[y];if(b)var x=no(o),w=function(t,e){for(var i=t.length,n=0;i--;)t[i]===e&&++n;return n}(m,x);if(r&&(m=zr(m,r,s,b)),a&&(m=Cr(m,a,l,b)),k-=w,b&&k<u){var z=oi(m,x);return Br(e,i,Dr,o.placeholder,n,m,z,c,h,u-k)}var C=f?n:this,S=p?C[e]:e;return k=m.length,c?m=function(e,i){for(var n=e.length,r=bi(i.length,n),o=Sr(e);r--;){var s=i[r];e[r]=bo(s,n)?o[s]:t}return e}(m,c):g&&k>1&&m.reverse(),d&&h<k&&(m.length=h),this&&this!==he&&this instanceof o&&(S=v||Ar(S)),S.apply(C,m)}}function Rr(t,e){return function(i,n){return function(t,e,i,n){return vn(t,(function(t,r,o){e(n,i(t),r,o)})),n}(i,t,e(n),{})}}function Pr(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 Wr(t){return Jr((function(e){return e=_e(e,qe(ro())),Nn((function(i){var n=this;return t(e,(function(t){return we(t,n,i)}))}))}))}function Lr(e,i){var n=(i=i===t?" ":or(i)).length;if(n<2)return n?Hn(i,e):i;var r=Hn(i,ue(e/li(i)));return ii(i)?vr(ci(r),0,e).join(""):r.slice(0,e)}function Vr(e){return function(i,n,r){return r&&"number"!=typeof r&&go(i,n,r)&&(n=r=t),i=ca(i),n===t?(n=i,i=0):n=ca(n),function(t,e,i,n){for(var r=-1,o=pi(ue((e-t)/(i||1)),0),s=lt(o);o--;)s[n?o:++r]=t,t+=i;return s}(i,n,r=r===t?i<n?1:-1:ca(r),e)}}function Ur(t){return function(e,i){return"string"==typeof e&&"string"==typeof i||(e=da(e),i=da(i)),t(e,i)}}function Br(e,i,n,o,s,a,l,c,h,u){var d=8&i;i|=d?r:64,4&(i&=~(d?64:r))||(i&=-4);var f=[e,i,s,d?a:t,d?l:t,d?t:a,d?t:l,c,h,u],p=n.apply(t,f);return ko(e)&&Mo(p,f),p.placeholder=o,To(p,e,i)}function Kr(t){var e=zt[t];return function(t,i){if(t=da(t),(i=null==i?0:bi(ha(i),292))&&Oe(t)){var n=(pa(t)+"e").split("e");return+((n=(pa(e(n[0]+"e"+(+n[1]+i)))+"e").split("e"))[0]+"e"+(+n[1]-i))}return e(t)}}var Hr=zi&&1/si(new zi([,-0]))[1]==s?function(t){return new zi(t)}:rl;function Nr(t){return function(e){var i=ho(e);return i==k?ni(e):i==z?ai(e):function(t,e){return _e(e,(function(e){return[e,t[e]]}))}(e,t(e))}}function Yr(i,s,a,l,c,h,u,d){var f=2&s;if(!f&&"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(ha(u),0),d=d===t?d:ha(d),p-=c?c.length:0,64&s){var b=l,g=c;l=c=t}var v=f?t:eo(i),k=[i,s,a,l,c,b,g,h,u,d];if(v&&function(t,e){var i=t[1],r=e[1],s=i|r;if(!(s<131||(r==o&&8==i||r==o&&256==i&&t[7].length<=e[8]||384==r&&e[7].length<=e[8]&&8==i)))return t;1&r&&(t[2]=e[2],s|=1&i?0:4);var a=e[3];if(a){var l=t[3];t[3]=l?zr(l,a,e[4]):a,t[4]=l?oi(t[3],n):e[4]}(a=e[5])&&(t[5]=(l=t[5])?Cr(l,a,e[6]):a,t[6]=l?oi(t[5],n):e[6]),(a=e[7])&&(t[7]=a),r&o&&(t[8]=null==t[8]?e[8]:bi(t[8],e[8])),null==t[9]&&(t[9]=e[9]),t[0]=e[0],t[1]=s}(k,v),i=k[0],s=k[1],a=k[2],l=k[3],c=k[4],!(d=k[9]=k[9]===t?f?0:i.length:pi(k[9]-p,0))&&24&s&&(s&=-25),s&&1!=s)m=8==s||16==s?function(e,i,n){var r=Ar(e);return function o(){for(var s=arguments.length,a=lt(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?Br(e,i,Dr,o.placeholder,t,a,h,t,t,n-s):we(this&&this!==he&&this instanceof o?r:e,this,a)}}(i,s,d):s!=r&&33!=s||c.length?Dr.apply(t,k):function(t,e,i,n){var r=1&e,o=Ar(t);return function e(){for(var s=-1,a=arguments.length,l=-1,c=n.length,h=lt(c+a),u=this&&this!==he&&this instanceof e?o:t;++l<c;)h[l]=n[l];for(;a--;)h[l++]=arguments[++s];return we(u,r?i:this,h)}}(i,s,a,l);else var m=function(t,e,i){var n=1&e,r=Ar(t);return function e(){return(this&&this!==he&&this instanceof e?r:t).apply(n?i:this,arguments)}}(i,s,a);return To((v?Xn:Mo)(m,k),i,s)}function qr(e,i,n,r){return e===t||Ds(e,Tt[n])&&!Et.call(r,n)?i:e}function Gr(e,i,n,r,o,s){return Xs(e)&&Xs(i)&&(s.set(i,e),Pn(e,i,t,Gr,s),s.delete(i)),e}function Xr(e){return ta(e)?t:e}function Zr(e,i,n,r,o,s){var a=1&n,l=e.length,c=i.length;if(l!=c&&!(a&&c>l))return!1;var h=s.get(e),u=s.get(i);if(h&&u)return h==i&&u==e;var d=-1,f=!0,p=2&n?new Ki:t;for(s.set(e,i),s.set(i,e);++d<l;){var b=e[d],g=i[d];if(r)var v=a?r(g,b,d,i,e,s):r(b,g,d,e,i,s);if(v!==t){if(v)continue;f=!1;break}if(p){if(!Fe(i,(function(t,e){if(!Xe(p,e)&&(b===t||o(b,t,n,r,s)))return p.push(e)}))){f=!1;break}}else if(b!==g&&!o(b,g,n,r,s)){f=!1;break}}return s.delete(e),s.delete(i),f}function Jr(e){return jo(zo(e,t,Vo),e+"")}function Qr(t){return xn(t,Ia,lo)}function to(t){return xn(t,ja,co)}var eo=Mi?function(t){return Mi.get(t)}:rl;function io(t){for(var e=t.name+"",i=Ii[e],n=Et.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(Et.call(Di,"placeholder")?Di:t).placeholder}function ro(){var t=Di.iteratee||tl;return t=t===tl?En: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=Ia(t),i=e.length;i--;){var n=e[i],r=t[n];e[i]=[n,r,xo(r)]}return e}function ao(e,i){var n=function(e,i){return null==e?t:e[i]}(e,i);return $n(n)?n:t}var lo=pe?function(t){return null==t?[]:(t=Ct(t),Ie(pe(t),(function(e){return Ht.call(t,e)})))}:ul,co=pe?function(t){for(var e=[];t;)$e(e,lo(t)),t=Bt(t);return e}:ul,ho=wn;function uo(t,e,i){for(var n=-1,r=(e=br(e,t)).length,o=!1;++n<r;){var s=Ao(e[n]);if(!(o=null!=t&&i(t,s)))break;t=t[s]}return o||++n!=r?o:!!(r=null==t?0:t.length)&&Gs(r)&&bo(s,r)&&(Ls(t)||Ws(t))}function fo(t){return"function"!=typeof t.constructor||yo(t)?{}:Ri(Bt(t))}function po(t){return Ls(t)||Ws(t)||!!(Yt&&t&&t[Yt])}function bo(t,e){var i=typeof t;return!!(e=null==e?a:e)&&("number"==i||"symbol"!=i&&gt.test(t))&&t>-1&&t%1==0&&t<e}function go(t,e,i){if(!Xs(i))return!1;var n=typeof e;return!!("number"==n?Us(i)&&bo(e,i.length):"string"==n&&e in i)&&Ds(i[e],t)}function vo(t,e){if(Ls(t))return!1;var i=typeof t;return!("number"!=i&&"symbol"!=i&&"boolean"!=i&&null!=t&&!ra(t))||X.test(t)||!G.test(t)||null!=e&&t in Ct(e)}function ko(t){var e=io(t),i=Di[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]}(yi&&ho(new yi(new ArrayBuffer(1)))!=j||xi&&ho(new xi)!=k||wi&&ho(wi.resolve())!=x||zi&&ho(new zi)!=z||Ci&&ho(new Ci)!=M)&&(ho=function(e){var i=wn(e),n=i==y?e.constructor:t,r=n?Fo(n):"";if(r)switch(r){case ji:return j;case Ti:return k;case _i:return x;case $i:return z;case Ei:return M}return i});var mo=_t?Ys:dl;function yo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Tt)}function xo(t){return t==t&&!Xs(t)}function wo(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=lt(o);++r<o;)s[r]=t[i+r];r=-1;for(var a=lt(i+1);++r<i;)a[r]=t[r];return a[i]=n(s),we(e,this,a)}}function Co(t,e){return e.length<2?t:yn(t,Qn(e,0,-1))}function So(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]}var Mo=_o(Xn),Io=ce||function(t,e){return he.setTimeout(t,e)},jo=_o(Zn);function To(t,e,i){var n=e+"";return jo(t,function(t,e){var i=e.length;if(!i)return t;var n=i-1;return e[n]=(i>1?"& ":"")+e[n],e=e.join(i>2?", ":" "),t.replace(it,"{\n/* [wrapped with "+e+"] */\n")}(n,function(t,e){return Ce(h,(function(i){var n="_."+i[0];e&i[1]&&!je(t,n)&&t.push(n)})),t.sort()}(function(t){var e=t.match(nt);return e?e[1].split(rt):[]}(n),i)))}function _o(e){var i=0,n=0;return function(){var r=gi(),o=16-(r-n);if(n=r,o>0){if(++i>=800)return arguments[0]}else i=0;return e.apply(t,arguments)}}function $o(e,i){var n=-1,r=e.length,o=r-1;for(i=i===t?r:i;++n<i;){var s=Kn(n,o),a=e[s];e[s]=e[n],e[n]=a}return e.length=i,e}var Eo=function(){var t=_s((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===e.size&&e.clear(),t})),e=t.cache;return t}();function Ao(t){if("string"==typeof t||ra(t))return t;var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function Fo(t){if(null!=t){try{return $t.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function Oo(t){if(t instanceof Li)return t.clone();var e=new Wi(t.__wrapped__,t.__chain__);return e.__actions__=Sr(t.__actions__),e.__index__=t.__index__,e.__values__=t.__values__,e}var Do=Nn((function(t,e){return Bs(t)?ln(t,pn(e,1,Bs,!0)):[]})),Ro=Nn((function(e,i){var n=No(i);return Bs(n)&&(n=t),Bs(e)?ln(e,pn(i,1,Bs,!0),ro(n,2)):[]})),Po=Nn((function(e,i){var n=No(i);return Bs(n)&&(n=t),Bs(e)?ln(e,pn(i,1,Bs,!0),t,n):[]}));function Wo(t,e,i){var n=null==t?0:t.length;if(!n)return-1;var r=null==i?0:ha(i);return r<0&&(r=pi(n+r,0)),Re(t,ro(e,3),r)}function Lo(e,i,n){var r=null==e?0:e.length;if(!r)return-1;var o=r-1;return n!==t&&(o=ha(n),o=n<0?pi(r+o,0):bi(o,r-1)),Re(e,ro(i,3),o,!0)}function Vo(t){return null!=t&&t.length?pn(t,1):[]}function Uo(e){return e&&e.length?e[0]:t}var Bo=Nn((function(t){var e=_e(t,fr);return e.length&&e[0]===t[0]?Mn(e):[]})),Ko=Nn((function(e){var i=No(e),n=_e(e,fr);return i===No(n)?i=t:n.pop(),n.length&&n[0]===e[0]?Mn(n,ro(i,2)):[]})),Ho=Nn((function(e){var i=No(e),n=_e(e,fr);return(i="function"==typeof i?i:t)&&n.pop(),n.length&&n[0]===e[0]?Mn(n,t,i):[]}));function No(e){var i=null==e?0:e.length;return i?e[i-1]:t}var Yo=Nn(qo);function qo(t,e){return t&&t.length&&e&&e.length?Un(t,e):t}var Go=Jr((function(t,e){var i=null==t?0:t.length,n=nn(t,e);return Bn(t,_e(e,(function(t){return bo(t,i)?+t:t})).sort(wr)),n}));function Xo(t){return null==t?t:mi.call(t)}var Zo=Nn((function(t){return sr(pn(t,1,Bs,!0))})),Jo=Nn((function(e){var i=No(e);return Bs(i)&&(i=t),sr(pn(e,1,Bs,!0),ro(i,2))})),Qo=Nn((function(e){var i=No(e);return i="function"==typeof i?i:t,sr(pn(e,1,Bs,!0),t,i)}));function ts(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})),Ne(e,(function(e){return _e(t,Ue(e))}))}function es(e,i){if(!e||!e.length)return[];var n=ts(e);return null==i?n:_e(n,(function(e){return we(i,t,e)}))}var is=Nn((function(t,e){return Bs(t)?ln(t,e):[]})),ns=Nn((function(t){return ur(Ie(t,Bs))})),rs=Nn((function(e){var i=No(e);return Bs(i)&&(i=t),ur(Ie(e,Bs),ro(i,2))})),os=Nn((function(e){var i=No(e);return i="function"==typeof i?i:t,ur(Ie(e,Bs),t,i)})),ss=Nn(ts),as=Nn((function(e){var i=e.length,n=i>1?e[i-1]:t;return n="function"==typeof n?(e.pop(),n):t,es(e,n)}));function ls(t){var e=Di(t);return e.__chain__=!0,e}function cs(t,e){return e(t)}var hs=Jr((function(e){var i=e.length,n=i?e[0]:0,r=this.__wrapped__,o=function(t){return nn(t,e)};return!(i>1||this.__actions__.length)&&r instanceof Li&&bo(n)?((r=r.slice(n,+n+(i?1:0))).__actions__.push({func:cs,args:[o],thisArg:t}),new Wi(r,this.__chain__).thru((function(e){return i&&!e.length&&e.push(t),e}))):this.thru(o)})),us=Ir((function(t,e,i){Et.call(t,i)?++t[i]:en(t,i,1)})),ds=Fr(Wo),fs=Fr(Lo);function ps(t,e){return(Ls(t)?Ce:cn)(t,ro(e,3))}function bs(t,e){return(Ls(t)?Se:hn)(t,ro(e,3))}var gs=Ir((function(t,e,i){Et.call(t,i)?t[i].push(e):en(t,i,[e])})),vs=Nn((function(t,e,i){var n=-1,r="function"==typeof e,o=Us(t)?lt(t.length):[];return cn(t,(function(t){o[++n]=r?we(e,t,i):In(t,e,i)})),o})),ks=Ir((function(t,e,i){en(t,i,e)}));function ms(t,e){return(Ls(t)?_e:On)(t,ro(e,3))}var ys=Ir((function(t,e,i){t[i?0:1].push(e)}),(function(){return[[],[]]})),xs=Nn((function(t,e){if(null==t)return[];var i=e.length;return i>1&&go(t,e[0],e[1])?e=[]:i>2&&go(e[0],e[1],e[2])&&(e=[e[0]]),Ln(t,pn(e,1),[])})),ws=le||function(){return he.Date.now()};function zs(e,i,n){return i=n?t:i,Yr(e,o,t,t,t,t,i=e&&null==i?e.length:i)}function Cs(i,n){var r;if("function"!=typeof n)throw new It(e);return i=ha(i),function(){return--i>0&&(r=n.apply(this,arguments)),i<=1&&(n=t),r}}var Ss=Nn((function(t,e,i){var n=1;if(i.length){var o=oi(i,no(Ss));n|=r}return Yr(t,n,e,i,o)})),Ms=Nn((function(t,e,i){var n=3;if(i.length){var o=oi(i,no(Ms));n|=r}return Yr(e,n,t,i,o)}));function Is(i,n,r){var o,s,a,l,c,h,u=0,d=!1,f=!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 g(e){var i=e-h;return h===t||i>=n||i<0||f&&e-u>=a}function v(){var t=ws();if(g(t))return k(t);c=Io(v,function(t){var e=n-(t-h);return f?bi(e,a-(t-u)):e}(t))}function k(e){return c=t,p&&o?b(e):(o=s=t,l)}function m(){var e=ws(),i=g(e);if(o=arguments,s=this,h=e,i){if(c===t)return function(t){return u=t,c=Io(v,n),d?b(t):l}(h);if(f)return kr(c),c=Io(v,n),b(h)}return c===t&&(c=Io(v,n)),l}return n=da(n)||0,Xs(r)&&(d=!!r.leading,a=(f="maxWait"in r)?pi(da(r.maxWait)||0,n):a,p="trailing"in r?!!r.trailing:p),m.cancel=function(){c!==t&&kr(c),u=0,o=h=s=c=t},m.flush=function(){return c===t?l:k(ws())},m}var js=Nn((function(t,e){return an(t,1,e)})),Ts=Nn((function(t,e,i){return an(t,da(e)||0,i)}));function _s(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(_s.Cache||Bi),n}function $s(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)}}_s.Cache=Bi;var Es=gr((function(t,e){var i=(e=1==e.length&&Ls(e[0])?_e(e[0],qe(ro())):_e(pn(e,1),qe(ro()))).length;return Nn((function(n){for(var r=-1,o=bi(n.length,i);++r<o;)n[r]=e[r].call(this,n[r]);return we(t,this,n)}))})),As=Nn((function(e,i){var n=oi(i,no(As));return Yr(e,r,t,i,n)})),Fs=Nn((function(e,i){var n=oi(i,no(Fs));return Yr(e,64,t,i,n)})),Os=Jr((function(e,i){return Yr(e,256,t,t,t,i)}));function Ds(t,e){return t===e||t!=t&&e!=e}var Rs=Ur(zn),Ps=Ur((function(t,e){return t>=e})),Ws=jn(function(){return arguments}())?jn:function(t){return Zs(t)&&Et.call(t,"callee")&&!Ht.call(t,"callee")},Ls=lt.isArray,Vs=ge?qe(ge):function(t){return Zs(t)&&wn(t)==I};function Us(t){return null!=t&&Gs(t.length)&&!Ys(t)}function Bs(t){return Zs(t)&&Us(t)}var Ks=be||dl,Hs=ve?qe(ve):function(t){return Zs(t)&&wn(t)==p};function Ns(t){if(!Zs(t))return!1;var e=wn(t);return e==b||"[object DOMException]"==e||"string"==typeof t.message&&"string"==typeof t.name&&!ta(t)}function Ys(t){if(!Xs(t))return!1;var e=wn(t);return e==g||e==v||"[object AsyncFunction]"==e||"[object Proxy]"==e}function qs(t){return"number"==typeof t&&t==ha(t)}function Gs(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=a}function Xs(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Zs(t){return null!=t&&"object"==typeof t}var Js=ke?qe(ke):function(t){return Zs(t)&&ho(t)==k};function Qs(t){return"number"==typeof t||Zs(t)&&wn(t)==m}function ta(t){if(!Zs(t)||wn(t)!=y)return!1;var e=Bt(t);if(null===e)return!0;var i=Et.call(e,"constructor")&&e.constructor;return"function"==typeof i&&i instanceof i&&$t.call(i)==Dt}var ea=me?qe(me):function(t){return Zs(t)&&wn(t)==w},ia=ye?qe(ye):function(t){return Zs(t)&&ho(t)==z};function na(t){return"string"==typeof t||!Ls(t)&&Zs(t)&&wn(t)==C}function ra(t){return"symbol"==typeof t||Zs(t)&&wn(t)==S}var oa=xe?qe(xe):function(t){return Zs(t)&&Gs(t.length)&&!!ne[wn(t)]},sa=Ur(Fn),aa=Ur((function(t,e){return t<=e}));function la(t){if(!t)return[];if(Us(t))return na(t)?ci(t):Sr(t);if(qt&&t[qt])return function(t){for(var e,i=[];!(e=t.next()).done;)i.push(e.value);return i}(t[qt]());var e=ho(t);return(e==k?ni:e==z?si:Da)(t)}function ca(t){return t?(t=da(t))===s||t===-1/0?17976931348623157e292*(t<0?-1:1):t==t?t:0:0===t?t:0}function ha(t){var e=ca(t),i=e%1;return e==e?i?e-i:e:0}function ua(t){return t?rn(ha(t),0,c):0}function da(t){if("number"==typeof t)return t;if(ra(t))return l;if(Xs(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=Xs(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=Ye(t);var i=ft.test(t);return i||bt.test(t)?ae(t.slice(2),i?2:8):dt.test(t)?l:+t}function fa(t){return Mr(t,ja(t))}function pa(t){return null==t?"":or(t)}var ba=jr((function(t,e){if(yo(e)||Us(e))Mr(e,Ia(e),t);else for(var i in e)Et.call(e,i)&&Zi(t,i,e[i])})),ga=jr((function(t,e){Mr(e,ja(e),t)})),va=jr((function(t,e,i,n){Mr(e,ja(e),t,n)})),ka=jr((function(t,e,i,n){Mr(e,Ia(e),t,n)})),ma=Jr(nn),ya=Nn((function(e,i){e=Ct(e);var n=-1,r=i.length,o=r>2?i[2]:t;for(o&&go(i[0],i[1],o)&&(r=1);++n<r;)for(var s=i[n],a=ja(s),l=-1,c=a.length;++l<c;){var h=a[l],u=e[h];(u===t||Ds(u,Tt[h])&&!Et.call(e,h))&&(e[h]=s[h])}return e})),xa=Nn((function(e){return e.push(t,Gr),we(_a,t,e)}));function wa(e,i,n){var r=null==e?t:yn(e,i);return r===t?n:r}function za(t,e){return null!=t&&uo(t,e,Sn)}var Ca=Rr((function(t,e,i){null!=e&&"function"!=typeof e.toString&&(e=Ot.call(e)),t[e]=i}),Xa(Qa)),Sa=Rr((function(t,e,i){null!=e&&"function"!=typeof e.toString&&(e=Ot.call(e)),Et.call(t,e)?t[e].push(i):t[e]=[i]}),ro),Ma=Nn(In);function Ia(t){return Us(t)?Ni(t):An(t)}function ja(t){return Us(t)?Ni(t,!0):function(t){if(!Xs(t))return function(t){var e=[];if(null!=t)for(var i in Ct(t))e.push(i);return e}(t);var e=yo(t),i=[];for(var n in t)("constructor"!=n||!e&&Et.call(t,n))&&i.push(n);return i}(t)}var Ta=jr((function(t,e,i){Pn(t,e,i)})),_a=jr((function(t,e,i,n){Pn(t,e,i,n)})),$a=Jr((function(t,e){var i={};if(null==t)return i;var n=!1;e=_e(e,(function(e){return e=br(e,t),n||(n=e.length>1),e})),Mr(t,to(t),i),n&&(i=on(i,7,Xr));for(var r=e.length;r--;)ar(i,e[r]);return i})),Ea=Jr((function(t,e){return null==t?{}:function(t,e){return Vn(t,e,(function(e,i){return za(t,i)}))}(t,e)}));function Aa(t,e){if(null==t)return{};var i=_e(to(t),(function(t){return[t]}));return e=ro(e),Vn(t,i,(function(t,i){return e(t,i[0])}))}var Fa=Nr(Ia),Oa=Nr(ja);function Da(t){return null==t?[]:Ge(t,Ia(t))}var Ra=Er((function(t,e,i){return e=e.toLowerCase(),t+(i?Pa(e):e)}));function Pa(t){return Na(pa(t).toLowerCase())}function Wa(t){return(t=pa(t))&&t.replace(vt,Qe).replace(Xt,"")}var La=Er((function(t,e,i){return t+(i?"-":"")+e.toLowerCase()})),Va=Er((function(t,e,i){return t+(i?" ":"")+e.toLowerCase()})),Ua=$r("toLowerCase"),Ba=Er((function(t,e,i){return t+(i?"_":"")+e.toLowerCase()})),Ka=Er((function(t,e,i){return t+(i?" ":"")+Na(e)})),Ha=Er((function(t,e,i){return t+(i?" ":"")+e.toUpperCase()})),Na=$r("toUpperCase");function Ya(e,i,n){return e=pa(e),(i=n?t:i)===t?function(t){return te.test(t)}(e)?function(t){return t.match(Jt)||[]}(e):function(t){return t.match(ot)||[]}(e):e.match(i)||[]}var qa=Nn((function(e,i){try{return we(e,t,i)}catch(t){return Ns(t)?t:new xt(t)}})),Ga=Jr((function(t,e){return Ce(e,(function(e){e=Ao(e),en(t,e,Ss(t[e],t))})),t}));function Xa(t){return function(){return t}}var Za=Or(),Ja=Or(!0);function Qa(t){return t}function tl(t){return En("function"==typeof t?t:on(t,1))}var el=Nn((function(t,e){return function(i){return In(i,t,e)}})),il=Nn((function(t,e){return function(i){return In(t,i,e)}}));function nl(t,e,i){var n=Ia(e),r=mn(e,n);null!=i||Xs(e)&&(r.length||!n.length)||(i=e,e=t,t=this,r=mn(e,Ia(e)));var o=!(Xs(i)&&"chain"in i&&!i.chain),s=Ys(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,$e([this.value()],arguments))})})),t}function rl(){}var ol=Wr(_e),sl=Wr(Me),al=Wr(Fe);function ll(t){return vo(t)?Ue(Ao(t)):function(t){return function(e){return yn(e,t)}}(t)}var cl=Vr(),hl=Vr(!0);function ul(){return[]}function dl(){return!1}var fl,pl=Pr((function(t,e){return t+e}),0),bl=Kr("ceil"),gl=Pr((function(t,e){return t/e}),1),vl=Kr("floor"),kl=Pr((function(t,e){return t*e}),1),ml=Kr("round"),yl=Pr((function(t,e){return t-e}),0);return Di.after=function(t,i){if("function"!=typeof i)throw new It(e);return t=ha(t),function(){if(--t<1)return i.apply(this,arguments)}},Di.ary=zs,Di.assign=ba,Di.assignIn=ga,Di.assignInWith=va,Di.assignWith=ka,Di.at=ma,Di.before=Cs,Di.bind=Ss,Di.bindAll=Ga,Di.bindKey=Ms,Di.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Ls(t)?t:[t]},Di.chain=ls,Di.chunk=function(e,i,n){i=(n?go(e,i,n):i===t)?1:pi(ha(i),0);var r=null==e?0:e.length;if(!r||i<1)return[];for(var o=0,s=0,a=lt(ue(r/i));o<r;)a[s++]=Qn(e,o,o+=i);return a},Di.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},Di.concat=function(){var t=arguments.length;if(!t)return[];for(var e=lt(t-1),i=arguments[0],n=t;n--;)e[n-1]=arguments[n];return $e(Ls(i)?Sr(i):[i],pn(e,1))},Di.cond=function(t){var i=null==t?0:t.length,n=ro();return t=i?_e(t,(function(t){if("function"!=typeof t[1])throw new It(e);return[n(t[0]),t[1]]})):[],Nn((function(e){for(var n=-1;++n<i;){var r=t[n];if(we(r[0],this,e))return we(r[1],this,e)}}))},Di.conforms=function(t){return function(t){var e=Ia(t);return function(i){return sn(i,t,e)}}(on(t,1))},Di.constant=Xa,Di.countBy=us,Di.create=function(t,e){var i=Ri(t);return null==e?i:tn(i,e)},Di.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},Di.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},Di.debounce=Is,Di.defaults=ya,Di.defaultsDeep=xa,Di.defer=js,Di.delay=Ts,Di.difference=Do,Di.differenceBy=Ro,Di.differenceWith=Po,Di.drop=function(e,i,n){var r=null==e?0:e.length;return r?Qn(e,(i=n||i===t?1:ha(i))<0?0:i,r):[]},Di.dropRight=function(e,i,n){var r=null==e?0:e.length;return r?Qn(e,0,(i=r-(i=n||i===t?1:ha(i)))<0?0:i):[]},Di.dropRightWhile=function(t,e){return t&&t.length?cr(t,ro(e,3),!0,!0):[]},Di.dropWhile=function(t,e){return t&&t.length?cr(t,ro(e,3),!0):[]},Di.fill=function(e,i,n,r){var o=null==e?0:e.length;return o?(n&&"number"!=typeof n&&go(e,i,n)&&(n=0,r=o),function(e,i,n,r){var o=e.length;for((n=ha(n))<0&&(n=-n>o?0:o+n),(r=r===t||r>o?o:ha(r))<0&&(r+=o),r=n>r?0:ua(r);n<r;)e[n++]=i;return e}(e,i,n,r)):[]},Di.filter=function(t,e){return(Ls(t)?Ie:fn)(t,ro(e,3))},Di.flatMap=function(t,e){return pn(ms(t,e),1)},Di.flatMapDeep=function(t,e){return pn(ms(t,e),s)},Di.flatMapDepth=function(e,i,n){return n=n===t?1:ha(n),pn(ms(e,i),n)},Di.flatten=Vo,Di.flattenDeep=function(t){return null!=t&&t.length?pn(t,s):[]},Di.flattenDepth=function(e,i){return null!=e&&e.length?pn(e,i=i===t?1:ha(i)):[]},Di.flip=function(t){return Yr(t,512)},Di.flow=Za,Di.flowRight=Ja,Di.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},Di.functions=function(t){return null==t?[]:mn(t,Ia(t))},Di.functionsIn=function(t){return null==t?[]:mn(t,ja(t))},Di.groupBy=gs,Di.initial=function(t){return null!=t&&t.length?Qn(t,0,-1):[]},Di.intersection=Bo,Di.intersectionBy=Ko,Di.intersectionWith=Ho,Di.invert=Ca,Di.invertBy=Sa,Di.invokeMap=vs,Di.iteratee=tl,Di.keyBy=ks,Di.keys=Ia,Di.keysIn=ja,Di.map=ms,Di.mapKeys=function(t,e){var i={};return e=ro(e,3),vn(t,(function(t,n,r){en(i,e(t,n,r),t)})),i},Di.mapValues=function(t,e){var i={};return e=ro(e,3),vn(t,(function(t,n,r){en(i,n,e(t,n,r))})),i},Di.matches=function(t){return Dn(on(t,1))},Di.matchesProperty=function(t,e){return Rn(t,on(e,1))},Di.memoize=_s,Di.merge=Ta,Di.mergeWith=_a,Di.method=el,Di.methodOf=il,Di.mixin=nl,Di.negate=$s,Di.nthArg=function(t){return t=ha(t),Nn((function(e){return Wn(e,t)}))},Di.omit=$a,Di.omitBy=function(t,e){return Aa(t,$s(ro(e)))},Di.once=function(t){return Cs(2,t)},Di.orderBy=function(e,i,n,r){return null==e?[]:(Ls(i)||(i=null==i?[]:[i]),Ls(n=r?t:n)||(n=null==n?[]:[n]),Ln(e,i,n))},Di.over=ol,Di.overArgs=Es,Di.overEvery=sl,Di.overSome=al,Di.partial=As,Di.partialRight=Fs,Di.partition=ys,Di.pick=Ea,Di.pickBy=Aa,Di.property=ll,Di.propertyOf=function(e){return function(i){return null==e?t:yn(e,i)}},Di.pull=Yo,Di.pullAll=qo,Di.pullAllBy=function(t,e,i){return t&&t.length&&e&&e.length?Un(t,e,ro(i,2)):t},Di.pullAllWith=function(e,i,n){return e&&e.length&&i&&i.length?Un(e,i,t,n):e},Di.pullAt=Go,Di.range=cl,Di.rangeRight=hl,Di.rearg=Os,Di.reject=function(t,e){return(Ls(t)?Ie:fn)(t,$s(ro(e,3)))},Di.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 Bn(t,r),i},Di.rest=function(i,n){if("function"!=typeof i)throw new It(e);return Nn(i,n=n===t?n:ha(n))},Di.reverse=Xo,Di.sampleSize=function(e,i,n){return i=(n?go(e,i,n):i===t)?1:ha(i),(Ls(e)?qi:qn)(e,i)},Di.set=function(t,e,i){return null==t?t:Gn(t,e,i)},Di.setWith=function(e,i,n,r){return r="function"==typeof r?r:t,null==e?e:Gn(e,i,n,r)},Di.shuffle=function(t){return(Ls(t)?Gi:Jn)(t)},Di.slice=function(e,i,n){var r=null==e?0:e.length;return r?(n&&"number"!=typeof n&&go(e,i,n)?(i=0,n=r):(i=null==i?0:ha(i),n=n===t?r:ha(n)),Qn(e,i,n)):[]},Di.sortBy=xs,Di.sortedUniq=function(t){return t&&t.length?nr(t):[]},Di.sortedUniqBy=function(t,e){return t&&t.length?nr(t,ro(e,2)):[]},Di.split=function(e,i,n){return n&&"number"!=typeof n&&go(e,i,n)&&(i=n=t),(n=n===t?c:n>>>0)?(e=pa(e))&&("string"==typeof i||null!=i&&!ea(i))&&!(i=or(i))&&ii(e)?vr(ci(e),0,n):e.split(i,n):[]},Di.spread=function(t,i){if("function"!=typeof t)throw new It(e);return i=null==i?0:pi(ha(i),0),Nn((function(e){var n=e[i],r=vr(e,0,i);return n&&$e(r,n),we(t,this,r)}))},Di.tail=function(t){var e=null==t?0:t.length;return e?Qn(t,1,e):[]},Di.take=function(e,i,n){return e&&e.length?Qn(e,0,(i=n||i===t?1:ha(i))<0?0:i):[]},Di.takeRight=function(e,i,n){var r=null==e?0:e.length;return r?Qn(e,(i=r-(i=n||i===t?1:ha(i)))<0?0:i,r):[]},Di.takeRightWhile=function(t,e){return t&&t.length?cr(t,ro(e,3),!1,!0):[]},Di.takeWhile=function(t,e){return t&&t.length?cr(t,ro(e,3)):[]},Di.tap=function(t,e){return e(t),t},Di.throttle=function(t,i,n){var r=!0,o=!0;if("function"!=typeof t)throw new It(e);return Xs(n)&&(r="leading"in n?!!n.leading:r,o="trailing"in n?!!n.trailing:o),Is(t,i,{leading:r,maxWait:i,trailing:o})},Di.thru=cs,Di.toArray=la,Di.toPairs=Fa,Di.toPairsIn=Oa,Di.toPath=function(t){return Ls(t)?_e(t,Ao):ra(t)?[t]:Sr(Eo(pa(t)))},Di.toPlainObject=fa,Di.transform=function(t,e,i){var n=Ls(t),r=n||Ks(t)||oa(t);if(e=ro(e,4),null==i){var o=t&&t.constructor;i=r?n?new o:[]:Xs(t)&&Ys(o)?Ri(Bt(t)):{}}return(r?Ce:vn)(t,(function(t,n,r){return e(i,t,n,r)})),i},Di.unary=function(t){return zs(t,1)},Di.union=Zo,Di.unionBy=Jo,Di.unionWith=Qo,Di.uniq=function(t){return t&&t.length?sr(t):[]},Di.uniqBy=function(t,e){return t&&t.length?sr(t,ro(e,2)):[]},Di.uniqWith=function(e,i){return i="function"==typeof i?i:t,e&&e.length?sr(e,t,i):[]},Di.unset=function(t,e){return null==t||ar(t,e)},Di.unzip=ts,Di.unzipWith=es,Di.update=function(t,e,i){return null==t?t:lr(t,e,pr(i))},Di.updateWith=function(e,i,n,r){return r="function"==typeof r?r:t,null==e?e:lr(e,i,pr(n),r)},Di.values=Da,Di.valuesIn=function(t){return null==t?[]:Ge(t,ja(t))},Di.without=is,Di.words=Ya,Di.wrap=function(t,e){return As(pr(e),t)},Di.xor=ns,Di.xorBy=rs,Di.xorWith=os,Di.zip=ss,Di.zipObject=function(t,e){return dr(t||[],e||[],Zi)},Di.zipObjectDeep=function(t,e){return dr(t||[],e||[],Gn)},Di.zipWith=as,Di.entries=Fa,Di.entriesIn=Oa,Di.extend=ga,Di.extendWith=va,nl(Di,Di),Di.add=pl,Di.attempt=qa,Di.camelCase=Ra,Di.capitalize=Pa,Di.ceil=bl,Di.clamp=function(e,i,n){return n===t&&(n=i,i=t),n!==t&&(n=(n=da(n))==n?n:0),i!==t&&(i=(i=da(i))==i?i:0),rn(da(e),i,n)},Di.clone=function(t){return on(t,4)},Di.cloneDeep=function(t){return on(t,5)},Di.cloneDeepWith=function(e,i){return on(e,5,i="function"==typeof i?i:t)},Di.cloneWith=function(e,i){return on(e,4,i="function"==typeof i?i:t)},Di.conformsTo=function(t,e){return null==e||sn(t,e,Ia(e))},Di.deburr=Wa,Di.defaultTo=function(t,e){return null==t||t!=t?e:t},Di.divide=gl,Di.endsWith=function(e,i,n){e=pa(e),i=or(i);var r=e.length,o=n=n===t?r:rn(ha(n),0,r);return(n-=i.length)>=0&&e.slice(n,o)==i},Di.eq=Ds,Di.escape=function(t){return(t=pa(t))&&H.test(t)?t.replace(U,ti):t},Di.escapeRegExp=function(t){return(t=pa(t))&&Q.test(t)?t.replace(J,"\\$&"):t},Di.every=function(e,i,n){var r=Ls(e)?Me:un;return n&&go(e,i,n)&&(i=t),r(e,ro(i,3))},Di.find=ds,Di.findIndex=Wo,Di.findKey=function(t,e){return De(t,ro(e,3),vn)},Di.findLast=fs,Di.findLastIndex=Lo,Di.findLastKey=function(t,e){return De(t,ro(e,3),kn)},Di.floor=vl,Di.forEach=ps,Di.forEachRight=bs,Di.forIn=function(t,e){return null==t?t:bn(t,ro(e,3),ja)},Di.forInRight=function(t,e){return null==t?t:gn(t,ro(e,3),ja)},Di.forOwn=function(t,e){return t&&vn(t,ro(e,3))},Di.forOwnRight=function(t,e){return t&&kn(t,ro(e,3))},Di.get=wa,Di.gt=Rs,Di.gte=Ps,Di.has=function(t,e){return null!=t&&uo(t,e,Cn)},Di.hasIn=za,Di.head=Uo,Di.identity=Qa,Di.includes=function(t,e,i,n){t=Us(t)?t:Da(t),i=i&&!n?ha(i):0;var r=t.length;return i<0&&(i=pi(r+i,0)),na(t)?i<=r&&t.indexOf(e,i)>-1:!!r&&Pe(t,e,i)>-1},Di.indexOf=function(t,e,i){var n=null==t?0:t.length;if(!n)return-1;var r=null==i?0:ha(i);return r<0&&(r=pi(n+r,0)),Pe(t,e,r)},Di.inRange=function(e,i,n){return i=ca(i),n===t?(n=i,i=0):n=ca(n),function(t,e,i){return t>=bi(e,i)&&t<pi(e,i)}(e=da(e),i,n)},Di.invoke=Ma,Di.isArguments=Ws,Di.isArray=Ls,Di.isArrayBuffer=Vs,Di.isArrayLike=Us,Di.isArrayLikeObject=Bs,Di.isBoolean=function(t){return!0===t||!1===t||Zs(t)&&wn(t)==f},Di.isBuffer=Ks,Di.isDate=Hs,Di.isElement=function(t){return Zs(t)&&1===t.nodeType&&!ta(t)},Di.isEmpty=function(t){if(null==t)return!0;if(Us(t)&&(Ls(t)||"string"==typeof t||"function"==typeof t.splice||Ks(t)||oa(t)||Ws(t)))return!t.length;var e=ho(t);if(e==k||e==z)return!t.size;if(yo(t))return!An(t).length;for(var i in t)if(Et.call(t,i))return!1;return!0},Di.isEqual=function(t,e){return Tn(t,e)},Di.isEqualWith=function(e,i,n){var r=(n="function"==typeof n?n:t)?n(e,i):t;return r===t?Tn(e,i,t,n):!!r},Di.isError=Ns,Di.isFinite=function(t){return"number"==typeof t&&Oe(t)},Di.isFunction=Ys,Di.isInteger=qs,Di.isLength=Gs,Di.isMap=Js,Di.isMatch=function(t,e){return t===e||_n(t,e,so(e))},Di.isMatchWith=function(e,i,n){return n="function"==typeof n?n:t,_n(e,i,so(i),n)},Di.isNaN=function(t){return Qs(t)&&t!=+t},Di.isNative=function(t){if(mo(t))throw new xt("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return $n(t)},Di.isNil=function(t){return null==t},Di.isNull=function(t){return null===t},Di.isNumber=Qs,Di.isObject=Xs,Di.isObjectLike=Zs,Di.isPlainObject=ta,Di.isRegExp=ea,Di.isSafeInteger=function(t){return qs(t)&&t>=-9007199254740991&&t<=a},Di.isSet=ia,Di.isString=na,Di.isSymbol=ra,Di.isTypedArray=oa,Di.isUndefined=function(e){return e===t},Di.isWeakMap=function(t){return Zs(t)&&ho(t)==M},Di.isWeakSet=function(t){return Zs(t)&&"[object WeakSet]"==wn(t)},Di.join=function(t,e){return null==t?"":Be.call(t,e)},Di.kebabCase=La,Di.last=No,Di.lastIndexOf=function(e,i,n){var r=null==e?0:e.length;if(!r)return-1;var o=r;return n!==t&&(o=(o=ha(n))<0?pi(r+o,0):bi(o,r-1)),i==i?function(t,e,i){for(var n=i+1;n--;)if(t[n]===e)return n;return n}(e,i,o):Re(e,Le,o,!0)},Di.lowerCase=Va,Di.lowerFirst=Ua,Di.lt=sa,Di.lte=aa,Di.max=function(e){return e&&e.length?dn(e,Qa,zn):t},Di.maxBy=function(e,i){return e&&e.length?dn(e,ro(i,2),zn):t},Di.mean=function(t){return Ve(t,Qa)},Di.meanBy=function(t,e){return Ve(t,ro(e,2))},Di.min=function(e){return e&&e.length?dn(e,Qa,Fn):t},Di.minBy=function(e,i){return e&&e.length?dn(e,ro(i,2),Fn):t},Di.stubArray=ul,Di.stubFalse=dl,Di.stubObject=function(){return{}},Di.stubString=function(){return""},Di.stubTrue=function(){return!0},Di.multiply=kl,Di.nth=function(e,i){return e&&e.length?Wn(e,ha(i)):t},Di.noConflict=function(){return he._===this&&(he._=Rt),this},Di.noop=rl,Di.now=ws,Di.pad=function(t,e,i){t=pa(t);var n=(e=ha(e))?li(t):0;if(!e||n>=e)return t;var r=(e-n)/2;return Lr(de(r),i)+t+Lr(ue(r),i)},Di.padEnd=function(t,e,i){t=pa(t);var n=(e=ha(e))?li(t):0;return e&&n<e?t+Lr(e-n,i):t},Di.padStart=function(t,e,i){t=pa(t);var n=(e=ha(e))?li(t):0;return e&&n<e?Lr(e-n,i)+t:t},Di.parseInt=function(t,e,i){return i||null==e?e=0:e&&(e=+e),vi(pa(t).replace(tt,""),e||0)},Di.random=function(e,i,n){if(n&&"boolean"!=typeof n&&go(e,i,n)&&(i=n=t),n===t&&("boolean"==typeof i?(n=i,i=t):"boolean"==typeof e&&(n=e,e=t)),e===t&&i===t?(e=0,i=1):(e=ca(e),i===t?(i=e,e=0):i=ca(i)),e>i){var r=e;e=i,i=r}if(n||e%1||i%1){var o=ki();return bi(e+o*(i-e+se("1e-"+((o+"").length-1))),i)}return Kn(e,i)},Di.reduce=function(t,e,i){var n=Ls(t)?Ee:Ke,r=arguments.length<3;return n(t,ro(e,4),i,r,cn)},Di.reduceRight=function(t,e,i){var n=Ls(t)?Ae:Ke,r=arguments.length<3;return n(t,ro(e,4),i,r,hn)},Di.repeat=function(e,i,n){return i=(n?go(e,i,n):i===t)?1:ha(i),Hn(pa(e),i)},Di.replace=function(){var t=arguments,e=pa(t[0]);return t.length<3?e:e.replace(t[1],t[2])},Di.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[Ao(i[r])];s===t&&(r=o,s=n),e=Ys(s)?s.call(e):s}return e},Di.round=ml,Di.runInContext=K,Di.sample=function(t){return(Ls(t)?Yi:Yn)(t)},Di.size=function(t){if(null==t)return 0;if(Us(t))return na(t)?li(t):t.length;var e=ho(t);return e==k||e==z?t.size:An(t).length},Di.snakeCase=Ba,Di.some=function(e,i,n){var r=Ls(e)?Fe:tr;return n&&go(e,i,n)&&(i=t),r(e,ro(i,3))},Di.sortedIndex=function(t,e){return er(t,e)},Di.sortedIndexBy=function(t,e,i){return ir(t,e,ro(i,2))},Di.sortedIndexOf=function(t,e){var i=null==t?0:t.length;if(i){var n=er(t,e);if(n<i&&Ds(t[n],e))return n}return-1},Di.sortedLastIndex=function(t,e){return er(t,e,!0)},Di.sortedLastIndexBy=function(t,e,i){return ir(t,e,ro(i,2),!0)},Di.sortedLastIndexOf=function(t,e){if(null!=t&&t.length){var i=er(t,e,!0)-1;if(Ds(t[i],e))return i}return-1},Di.startCase=Ka,Di.startsWith=function(t,e,i){return t=pa(t),i=null==i?0:rn(ha(i),0,t.length),e=or(e),t.slice(i,i+e.length)==e},Di.subtract=yl,Di.sum=function(t){return t&&t.length?He(t,Qa):0},Di.sumBy=function(t,e){return t&&t.length?He(t,ro(e,2)):0},Di.template=function(e,i,n){var r=Di.templateSettings;n&&go(e,i,n)&&(i=t),e=pa(e),i=va({},i,r,qr);var o,s,a=va({},i.imports,r.imports,qr),l=Ia(a),c=Ge(a,l),h=0,u=i.interpolate||kt,d="__p += '",f=St((i.escape||kt).source+"|"+u.source+"|"+(u===q?ht:kt).source+"|"+(i.evaluate||kt).source+"|$","g"),p="//# sourceURL="+(Et.call(i,"sourceURL")?(i.sourceURL+"").replace(/\s/g," "):"lodash.templateSources["+ ++ie+"]")+"\n";e.replace(f,(function(t,i,n,r,a,l){return n||(n=r),d+=e.slice(h,l).replace(mt,ei),i&&(o=!0,d+="' +\n__e("+i+") +\n'"),a&&(s=!0,d+="';\n"+a+";\n__p += '"),n&&(d+="' +\n((__t = ("+n+")) == null ? '' : __t) +\n'"),h=l+t.length,t})),d+="';\n";var b=Et.call(i,"variable")&&i.variable;if(b){if(st.test(b))throw new xt("Invalid `variable` option passed into `_.template`")}else d="with (obj) {\n"+d+"\n}\n";d=(s?d.replace(P,""):d).replace(W,"$1").replace(L,"$1;"),d="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")+d+"return __p\n}";var g=qa((function(){return wt(l,p+"return "+d).apply(t,c)}));if(g.source=d,Ns(g))throw g;return g},Di.times=function(t,e){if((t=ha(t))<1||t>a)return[];var i=c,n=bi(t,c);e=ro(e),t-=c;for(var r=Ne(n,e);++i<t;)e(i);return r},Di.toFinite=ca,Di.toInteger=ha,Di.toLength=ua,Di.toLower=function(t){return pa(t).toLowerCase()},Di.toNumber=da,Di.toSafeInteger=function(t){return t?rn(ha(t),-9007199254740991,a):0===t?t:0},Di.toString=pa,Di.toUpper=function(t){return pa(t).toUpperCase()},Di.trim=function(e,i,n){if((e=pa(e))&&(n||i===t))return Ye(e);if(!e||!(i=or(i)))return e;var r=ci(e),o=ci(i);return vr(r,Ze(r,o),Je(r,o)+1).join("")},Di.trimEnd=function(e,i,n){if((e=pa(e))&&(n||i===t))return e.slice(0,hi(e)+1);if(!e||!(i=or(i)))return e;var r=ci(e);return vr(r,0,Je(r,ci(i))+1).join("")},Di.trimStart=function(e,i,n){if((e=pa(e))&&(n||i===t))return e.replace(tt,"");if(!e||!(i=or(i)))return e;var r=ci(e);return vr(r,Ze(r,ci(i))).join("")},Di.truncate=function(e,i){var n=30,r="...";if(Xs(i)){var o="separator"in i?i.separator:o;n="length"in i?ha(i.length):n,r="omission"in i?or(i.omission):r}var s=(e=pa(e)).length;if(ii(e)){var a=ci(e);s=a.length}if(n>=s)return e;var l=n-li(r);if(l<1)return r;var c=a?vr(a,0,l).join(""):e.slice(0,l);if(o===t)return c+r;if(a&&(l+=c.length-l),ea(o)){if(e.slice(l).search(o)){var h,u=c;for(o.global||(o=St(o.source,pa(ut.exec(o))+"g")),o.lastIndex=0;h=o.exec(u);)var d=h.index;c=c.slice(0,d===t?l:d)}}else if(e.indexOf(or(o),l)!=l){var f=c.lastIndexOf(o);f>-1&&(c=c.slice(0,f))}return c+r},Di.unescape=function(t){return(t=pa(t))&&B.test(t)?t.replace(V,ui):t},Di.uniqueId=function(t){var e=++At;return pa(t)+e},Di.upperCase=Ha,Di.upperFirst=Na,Di.each=ps,Di.eachRight=bs,Di.first=Uo,nl(Di,(fl={},vn(Di,(function(t,e){Et.call(Di.prototype,e)||(fl[e]=t)})),fl),{chain:!1}),Di.VERSION="4.17.23",Ce(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){Di[t].placeholder=Di})),Ce(["drop","take"],(function(e,i){Li.prototype[e]=function(n){n=n===t?1:pi(ha(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(Qa)},Li.prototype.find=function(t){return this.filter(t).head()},Li.prototype.findLast=function(t){return this.reverse().find(t)},Li.prototype.invokeMap=Nn((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($s(ro(t)))},Li.prototype.slice=function(e,i){e=ha(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=ha(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)},vn(Li.prototype,(function(e,i){var n=/^(?:filter|find|map|reject)|While$/.test(i),r=/^(?:head|last)$/.test(i),o=Di[r?"take"+("last"==i?"Right":""):i],s=r||/^find/.test(i);o&&(Di.prototype[i]=function(){var i=this.__wrapped__,a=r?[1]:arguments,l=i instanceof Li,c=a[0],h=l||Ls(i),u=function(t){var e=o.apply(Di,$e([t],a));return r&&d?e[0]:e};h&&n&&"function"==typeof c&&1!=c.length&&(l=h=!1);var d=this.__chain__,f=s&&!d,p=l&&!this.__actions__.length;if(!s&&h){i=p?i:new Li(this);var b=e.apply(i,a);return b.__actions__.push({func:cs,args:[u],thisArg:t}),new Wi(b,d)}return f&&p?e.apply(this,a):(b=this.thru(u),f?r?b.value()[0]:b.value():b)})})),Ce(["pop","push","shift","sort","splice","unshift"],(function(t){var e=jt[t],i=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",n=/^(?:pop|shift)$/.test(t);Di.prototype[t]=function(){var t=arguments;if(n&&!this.__chain__){var r=this.value();return e.apply(Ls(r)?r:[],t)}return this[i]((function(i){return e.apply(Ls(i)?i:[],t)}))}})),vn(Li.prototype,(function(t,e){var i=Di[e];if(i){var n=i.name+"";Et.call(Ii,n)||(Ii[n]=[]),Ii[n].push({name:e,func:i})}})),Ii[Dr(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=Ls(t),n=e<0,r=i?t.length:0,o=function(t,e,i){for(var n=-1,r=i.length;++n<r;){var o=i[n],s=o.size;switch(o.type){case"drop":t+=s;break;case"dropRight":e-=s;break;case"take":e=bi(e,t+s);break;case"takeRight":t=pi(t,e-s)}}return{start:t,end:e}}(0,r,this.__views__),s=o.start,a=o.end,l=a-s,c=n?a:s-1,h=this.__iteratees__,u=h.length,d=0,f=bi(l,this.__takeCount__);if(!i||!n&&r==l&&f==l)return hr(t,this.__actions__);var p=[];t:for(;l--&&d<f;){for(var b=-1,g=t[c+=e];++b<u;){var v=h[b],k=v.type,m=(0,v.iteratee)(g);if(2==k)g=m;else if(!m){if(1==k)continue t;break t}}p[d++]=g}return p},Di.prototype.at=hs,Di.prototype.chain=function(){return ls(this)},Di.prototype.commit=function(){return new Wi(this.value(),this.__chain__)},Di.prototype.next=function(){this.__values__===t&&(this.__values__=la(this.value()));var e=this.__index__>=this.__values__.length;return{done:e,value:e?t:this.__values__[this.__index__++]}},Di.prototype.plant=function(e){for(var i,n=this;n instanceof Pi;){var r=Oo(n);r.__index__=0,r.__values__=t,i?o.__wrapped__=r:i=r;var o=r;n=n.__wrapped__}return o.__wrapped__=e,i},Di.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:cs,args:[Xo],thisArg:t}),new Wi(i,this.__chain__)}return this.thru(Xo)},Di.prototype.toJSON=Di.prototype.valueOf=Di.prototype.value=function(){return hr(this.__wrapped__,this.__actions__)},Di.prototype.first=Di.prototype.head,qt&&(Di.prototype[qt]=function(){return this}),Di}();de?((de.exports=di)._=di,ue._=di):he._=di}.call(ct.exports)),ct.exports);
2
+ /**
3
+ * @license
4
+ * Lodash <https://lodash.com/>
5
+ * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
6
+ * Released under MIT license <https://lodash.com/license>
7
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
8
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
9
+ */class ut{_core;_debounceUpdate;_debounceEndScaling;_animationFrameId=null;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=ht.debounce((()=>{this._core.updateWorkspaceViewport(this._core.store.state.translateX,this._core.store.state.translateY,this._core.store.state.scale)}),300),this._debounceEndScaling=ht.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(this.cancelViewportAnimation(),"mouse"===t.pointerType){const e=t.clientX-this._core.store.offsetX,i=t.clientY-this._core.store.offsetY;t.button===v.Right&&(this._core.store.state.isPanning=!0,this._core.store.state.startX=e,this._core.store.state.startY=i)}if("touch"===t.pointerType||"pen"===t.pointerType){const 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.isSelecting&&(this._core.store.state.isSelecting=!1,this._core.store.state.objects.remove((t=>t instanceof M)),this._core.store.allNonSelectionObjects.forEach((t=>{t.isSelected=!1}))),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||"pen"===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&&"pen"!==t.pointerType||0===this._core.store.state.pointers.size&&this._debounceEndScaling()}handleWheel(t){this.cancelViewportAnimation(),t.ctrlKey?this.handleZoom(t):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,0!==t.deltaX&&(this._core.store.state.translateX-=.8*t.deltaX),this._core.store.state.hasViewportChanged=!0,this._core.rerender(),this._debounceUpdate(),this._debounceEndScaling()}handlePan(t){this._core.store.state.translateX=this._core.store.state.translateX-.8*t.deltaX,this._core.store.state.translateY=this._core.store.state.translateY-.8*t.deltaY,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),this._debounceUpdate()}cancelViewportAnimation(){null!==this._animationFrameId&&(cancelAnimationFrame(this._animationFrameId),this._animationFrameId=null)}animateViewportTo(t,e,i,n=150){this.cancelViewportAnimation();const r=this._core.store.state.translateX,o=this._core.store.state.translateY,s=this._core.store.state.scale,a=performance.now(),l=c=>{const h=Math.min((c-a)/n,1),u=1-Math.pow(1-h,3);this._core.store.state.translateX=r+(t-r)*u,this._core.store.state.translateY=o+(e-o)*u,this._core.store.state.scale=s+(i-s)*u,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),h<1?this._animationFrameId=requestAnimationFrame(l):(this._animationFrameId=null,this._debounceUpdate())};this._animationFrameId=requestAnimationFrame(l)}centerFitNearestContent(t=20){const e=this._core.store.allNonSelectionObjects;if(0===e.length)return!1;const i=-this._core.store.state.translateX/this._core.store.state.scale+this._core.store.state.viewportWidth/2/this._core.store.state.scale,n=-this._core.store.state.translateY/this._core.store.state.scale+this._core.store.state.viewportHeight/2/this._core.store.state.scale,r=e.map((t=>{const e=t.rotatedBoundingBox,r=e.y+e.height/2;return{obj:t,distance:Math.sqrt(Math.pow(e.x+e.width/2-i,2)+Math.pow(r-n,2))}}));r.sort(((t,e)=>t.distance-e.distance));const o=r.slice(0,t).map((t=>t.obj));let s=1/0,a=1/0,l=-1/0,c=-1/0;for(const t of o){const e=t.rotatedBoundingBox;s=Math.min(s,e.x),a=Math.min(a,e.y),l=Math.max(l,e.x+e.width),c=Math.max(c,e.y+e.height)}const h=l-s,u=c-a,d=s+h/2,f=a+u/2,p=Math.min(this._core.store.state.viewportWidth/(1.1*h),this._core.store.state.viewportHeight/(1.1*u),this._core.store.state.scaleMax),b=Math.max(p,this._core.store.state.scaleMin);return this.animateViewportTo(this._core.store.state.viewportWidth/2-d*b,this._core.store.state.viewportHeight/2-f*b,b),!0}}class dt extends I{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=h.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 ft extends I{globalContextMenuItems=[];objectContextMenuItems=[];constructor(t,e,i){super(t),this.globalContextMenuItems=e,this.objectContextMenuItems=i}handleContextMenu(t){if(!(this._core.store.state.activeTool instanceof d))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 j)&&!(i instanceof M)){const t=j.create(this._core);t.addOrRemove(i),t.isSelected=!0,t.rotation=i.rotation,this._core.store.state.isSelecting=!1,this._core.store.selectionGroup&&this._core.removeSelectionGroup(),this._core.addSelectionGroup(t),this._core.rerender()}this._core.store.state.contextMenuItems=this._core.store.selectionGroup?this.objectContextMenuItems:this.globalContextMenuItems;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 pt={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"},lockDrawingScale:!0};class bt extends T{__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 bt(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 gt{_core;constructor(t){this._core=t}revive(t){if(t&&"object"==typeof t){if(t.__class__){let e;switch(t.__class__){case"KritzelPath":e=F.create(this._core).deserialize(t);break;case"KritzelLine":e=A.create(this._core).deserialize(t);break;case"KritzelText":e=E.create(this._core,t.fontSize,t.fontFamily).deserialize(t);break;case"KritzelShape":e=c.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=$.create(this._core).deserialize(t);break;case"KritzelCustomElement":e=bt.create(this._core).deserialize(t);break;case"KritzelSelectionGroup":e=j.create(this._core).deserialize(t);break;case"KritzelGroup":e=_.create(this._core).deserialize(t);break;case"KritzelWorkspace":e=z.create(this._core,t).deserialize(t);break;case"KritzelBrushTool":e=new f(this._core);break;case"KritzelEraserTool":e=new y(this._core);break;case"KritzelImageTool":e=new w(this._core);break;case"KritzelSelectionTool":e=new d(this._core);break;case"KritzelTextTool":e=new b(this._core);break;case"KritzelLineTool":e=new p(this._core);break;case"KritzelShapeTool":e=new G(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 vt{bounds;capacity;objects=[];children=null;_size=0;get size(){return this._size}constructor(t,e=16){this.bounds=t,this.capacity=e}reset(){this.objects=[],this.children=null,this._size=0}insert(t){if(!this.intersects(t.rotatedBoundingBox,this.bounds))return!1;if(this.objects.length<this.capacity&&null===this.children)return this.objects.push(t),this._size++,!0;null===this.children&&this.subdivide();for(const e of this.children)if(e.insert(t))return this._size++,!0;return!1}update(t){const e=this.objects.findIndex((e=>e.id===t.id));if(-1!==e)return this.objects[e]=t,!0;if(null!==this.children)for(const e of this.children)if(e.update(t))return!0;return!1}remove(t){let e=0;const i=this.objects.findIndex((e=>t(e)));if(-1!==i&&(this.objects.splice(i,1),e++),null!==this.children)for(const i of this.children)e+=i.remove(t);return this._size-=e,e}query(t){const e=[];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 vt({x:t,y:e,z:i,width:o,height:s},this.capacity),new vt({x:t+o,y:e,z:i,width:o,height:s},this.capacity),new vt({x:t,y:e+s,z:i,width:o,height:s},this.capacity),new vt({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 kt{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}}get totalCount(){return this.quadtree.size}constructor(){this.quadtree=new vt({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 gt(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 R([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 j?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 mt{_state;_listeners=new Map;get state(){return this._state}get currentZIndex(){return Math.max(0,...this._state.objects.filter((t=>!(t instanceof j||t instanceof M))).map((t=>t.zIndex)))+1}get totalObjectCount(){return this._state.objects.totalCount}get allObjects(){return this._state.objects.allObjects()}get objectsInViewport(){return this._state.objects.query({x:-this._state.translateX/this._state.scale,y:-this._state.translateY/this._state.scale,z:this._state.scale,width:this._state.viewportWidth/this._state.scale,height:this._state.viewportHeight/this._state.scale,depth:100}).filter((t=>!(t instanceof j||t instanceof M))).sort(((t,e)=>t.zIndex-e.zIndex))}get allNonSelectionObjects(){return this._state.objects.allObjects().filter((t=>!(t instanceof j||t instanceof M)))}get selectedObjects(){return this.allObjects.filter((t=>!(t instanceof j))).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 j));return t.length>0?t[0]:null}get activeText(){const t=this._state.objects.filter((t=>t instanceof E&&t.isEditing));return t.length>0?t[0]:null}get activeShape(){const t=this._state.objects.filter((t=>t instanceof c&&t.isEditing));return t.length>0?t[0]:null}get currentPath(){const t=this._state.objects.filter((t=>t instanceof F&&!1===t.isCompleted));return t.length>0?t[0]:null}get currentLine(){const t=this._state.objects.filter((t=>t instanceof A&&!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 kt}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 yt{_core;_targetElement=null;_shadowRoot=null;constructor(t){this._core=t}setTargetElement(t){this._targetElement&&(this._targetElement.style.cursor="",this._targetElement.style.removeProperty("--kritzel-global-pointer-cursor")),this._targetElement=t,this._targetElement&&this._targetElement.style.setProperty("--kritzel-global-pointer-cursor",P.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=P.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 xt{_kritzelEngine;_store;_syncConfig;_appStateMap;_anchorManager;_cursorManager;_themeManager;get engine(){return this._kritzelEngine}get store(){return this._store}get appStateMap(){return this._appStateMap}get anchorManager(){return this._anchorManager}get cursorManager(){return this._cursorManager}get themeManager(){return this._themeManager}constructor(t){this._kritzelEngine=t,this._store=new mt(pt),this._appStateMap=new W,this._anchorManager=new L(this),this._cursorManager=new yt(this),this._themeManager=new V(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 z(U.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 kt;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()}getObjectsInViewport(){return 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 instanceof j||t instanceof M))).sort(((t,e)=>t.zIndex-e.zIndex))}rerender(){this._kritzelEngine&&this._kritzelEngine.forceUpdate++}findObjectById(t){for(const e of this._store.allObjects)if(e.id===t)return e;return null}getWorkspaces(){return this.loadWorkspacesFromAppState()}createWorkspace(t){t._core=this,t.createdAt=new Date,t.updatedAt=new Date,this.saveWorkspaceToAppState(t),this._store.state.workspaces=this.loadWorkspacesFromAppState()}updateWorkspace(t){t.updatedAt=new Date,this.saveWorkspaceToAppState(t);const e=this._store.state.workspaces,i=e.findIndex((e=>e.id===t.id));-1!==i&&(e[i]=t,this._store.state.workspaces=e)}deleteWorkspace(t){this._store.state.activeWorkspace?.id===t.id&&(this.engine.viewport?.cancelPendingUpdates(),this._store.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&&this._store.state.workspaces.some((t=>t.id===n.id))&&(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 A?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){const i=[];for(const n in e)e.hasOwnProperty(n)&&(t[n]=e[n],i.push(n));t.onAfterUpdate(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 l,c;void 0!==t&&void 0!==e?(l=t,c=e):o?(l=s,c=a):(l=s+25/this._store.state.scale,c=a+25/this._store.state.scale);const u=l-s,d=c-a;this.removeSelectionGroup(),this.removeSelectionBox();const f=j.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+d),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+d),t.zIndex=this._store.currentZIndex+e+i,this.addObject(t)})),delete t._pendingChildren,t.finalize())}this.addObject(t),f.addOrRemove(t)})),i.forEach((t=>{if(t instanceof A){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(),f.isSelected=!0,1===i.length&&(f.rotation=i[0].rotation),this.addSelectionGroup(f),o&&(void 0!==t&&void 0!==e?f.updatePosition(t,e):f.centerInViewport(),this.engine.viewport.centerFitInViewport(f)),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",h.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=j.create(this);i.addOrRemove(e),i.isSelected=!0,i.rotation=e.rotation,this.addSelectionGroup(i),this.engine.emitObjectsChange(),this.rerender()}ungroup(){const t=this._store.selectionGroup;if(!t)return;const e=t.objects.filter((t=>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=j.create(this);[...i,...n].forEach((t=>{r.addOrRemove(t)})),r.isSelected=!0,this.addSelectionGroup(r),this.engine.emitObjectsChange(),this.rerender()}selectObjects(t){if(0===t.length)return;const e=j.create(this);t.forEach((t=>{t.isSelected=!1,e.addOrRemove(t)})),e.isSelected=!0,1===t.length&&(e.rotation=e.objects[0].rotation),this.addSelectionGroup(e),this.rerender()}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 j||t instanceof M||t instanceof q)));if(t.length>0){const e=j.create(this);t.forEach((t=>{t.isSelected=!1,e.addOrRemove(t)})),e.isSelected=!0,this._store.state.isSelecting=!1,1===t.length&&(e.rotation=e.objects[0].rotation),this.addSelectionGroup(e),this._store.setState("activeTool",h.getTool("selection")),this.rerender()}}clearSelection(){this.removeSelectionGroup(),this._store.state.objects.remove((t=>t instanceof M||t instanceof j)),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",h.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 A)):!(t instanceof A)}displaySelectionLineUI(t){if(!(t instanceof A))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 A&&i.id===t.id}return!1}}const wt=(()=>{let t=0;return()=>(t+=1,`u${`0000${(Math.random()*36**4|0).toString(36)}`.slice(-4)}${t}`)})();function zt(t){const e=[];for(let i=0,n=t.length;i<n;i++)e.push(t[i]);return e}let Ct=null;function St(t={}){return Ct||(t.includeStyleProperties?(Ct=t.includeStyleProperties,Ct):(Ct=zt(window.getComputedStyle(document.documentElement)),Ct))}function Mt(t,e){const i=(t.ownerDocument.defaultView||window).getComputedStyle(t).getPropertyValue(e);return i?parseFloat(i.replace("px","")):0}function It(t,e={}){return{width:e.width||function(t){const e=Mt(t,"border-left-width"),i=Mt(t,"border-right-width");return t.clientWidth+e+i}(t),height:e.height||function(t){const e=Mt(t,"border-top-width"),i=Mt(t,"border-bottom-width");return t.clientHeight+e+i}(t)}}const jt=16384;function Tt(t){return new Promise(((e,i)=>{const n=new Image;n.onload=()=>{n.decode().then((()=>{requestAnimationFrame((()=>e(n)))}))},n.onerror=i,n.crossOrigin="anonymous",n.decoding="async",n.src=t}))}const _t=(t,e)=>{if(t instanceof e)return!0;const i=Object.getPrototypeOf(t);return null!==i&&(i.constructor.name===e.name||_t(i,e))};function $t(t,e,i,n){const r=window.getComputedStyle(t,i),o=r.getPropertyValue("content");if(""===o||"none"===o)return;const s=wt();try{e.className=`${e.className} ${s}`}catch(t){return}const a=document.createElement("style");a.appendChild(function(t,e,i,n){const r=`.${t}:${e}`,o=i.cssText?function(t){const e=t.getPropertyValue("content");return`${t.cssText} content: '${e.replace(/'|"/g,"")}';`}(i):function(t,e){return St(e).map((e=>`${e}: ${t.getPropertyValue(e)}${t.getPropertyPriority(e)?" !important":""};`)).join(" ")}(i,n);return document.createTextNode(`${r}{${o}}`)}(s,i,r,n)),e.appendChild(a)}const Et="application/font-woff",At="image/jpeg",Ft={woff:Et,woff2:Et,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:At,jpeg:At,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml",webp:"image/webp"};function Ot(t){const e=function(t){const e=/\.([^./]*?)$/g.exec(t);return e?e[1]:""}(t).toLowerCase();return Ft[e]||""}function Dt(t){return-1!==t.search(/^(data:)/)}async function Rt(t,e,i){const n=await fetch(t,e);if(404===n.status)throw new Error(`Resource "${n.url}" not found`);const r=await n.blob();return new Promise(((t,e)=>{const o=new FileReader;o.onerror=e,o.onloadend=()=>{try{t(i({res:n,result:o.result}))}catch(t){e(t)}},o.readAsDataURL(r)}))}const Pt={};async function Wt(t,e,i){const n=function(t,e,i){let n=t.replace(/\?.*/,"");return i&&(n=t),/ttf|otf|eot|woff2?/i.test(n)&&(n=n.replace(/.*\//,"")),e?`[${e}]${n}`:n}(t,e,i.includeQueryParams);if(null!=Pt[n])return Pt[n];let r;i.cacheBust&&(t+=(/\?/.test(t)?"&":"?")+(new Date).getTime());try{const n=await Rt(t,i.fetchRequestInit,(({res:t,result:i})=>(e||(e=t.headers.get("Content-Type")||""),function(t){return t.split(/,/)[1]}(i))));r=function(t,e){return`data:${e};base64,${t}`}(n,e)}catch(e){r=i.imagePlaceholder||"";let n=`Failed to fetch resource: ${t}`;e&&(n="string"==typeof e?e:e.message),n&&console.warn(n)}return Pt[n]=r,r}const Lt=t=>null!=t.tagName&&"SLOT"===t.tagName.toUpperCase(),Vt=t=>null!=t.tagName&&"SVG"===t.tagName.toUpperCase();async function Ut(t,e,i){return i||!e.filter||e.filter(t)?Promise.resolve(t).then((t=>async function(t,e){return _t(t,HTMLCanvasElement)?async function(t){const e=t.toDataURL();return"data:,"===e?t.cloneNode(!1):Tt(e)}(t):_t(t,HTMLVideoElement)?async function(t,e){if(t.currentSrc){const e=document.createElement("canvas"),i=e.getContext("2d");return e.width=t.clientWidth,e.height=t.clientHeight,null==i||i.drawImage(t,0,0,e.width,e.height),Tt(e.toDataURL())}const i=t.poster,n=Ot(i);return Tt(await Wt(i,n,e))}(t,e):_t(t,HTMLIFrameElement)?async function(t,e){var i;try{if(null===(i=null==t?void 0:t.contentDocument)||void 0===i?void 0:i.body)return await Ut(t.contentDocument.body,e,!0)}catch(t){}return t.cloneNode(!1)}(t,e):t.cloneNode(Vt(t))}(t,e))).then((i=>async function(t,e,i){var n,r;if(Vt(e))return e;let o=[];return o=Lt(t)&&t.assignedNodes?zt(t.assignedNodes()):_t(t,HTMLIFrameElement)&&(null===(n=t.contentDocument)||void 0===n?void 0:n.body)?zt(t.contentDocument.body.childNodes):zt((null!==(r=t.shadowRoot)&&void 0!==r?r:t).childNodes),0===o.length||_t(t,HTMLVideoElement)||await o.reduce(((t,n)=>t.then((()=>Ut(n,i))).then((t=>{t&&e.appendChild(t)}))),Promise.resolve()),e}(t,i,e))).then((i=>function(t,e,i){return _t(e,Element)&&(function(t,e,i){const n=e.style;if(!n)return;const r=window.getComputedStyle(t);r.cssText?(n.cssText=r.cssText,n.transformOrigin=r.transformOrigin):St(i).forEach((i=>{let o=r.getPropertyValue(i);if("font-size"===i&&o.endsWith("px")){const t=Math.floor(parseFloat(o.substring(0,o.length-2)))-.1;o=`${t}px`}_t(t,HTMLIFrameElement)&&"display"===i&&"inline"===o&&(o="block"),"d"===i&&e.getAttribute("d")&&(o=`path(${e.getAttribute("d")})`),n.setProperty(i,o,r.getPropertyPriority(i))}))}(t,e,i),function(t,e,i){$t(t,e,":before",i),$t(t,e,":after",i)}(t,e,i),function(t,e){_t(t,HTMLTextAreaElement)&&(e.innerHTML=t.value),_t(t,HTMLInputElement)&&e.setAttribute("value",t.value)}(t,e),function(t,e){if(_t(t,HTMLSelectElement)){const i=Array.from(e.children).find((e=>t.value===e.getAttribute("value")));i&&i.setAttribute("selected","")}}(t,e)),e}(t,i,e))).then((t=>async function(t,e){const i=t.querySelectorAll?t.querySelectorAll("use"):[];if(0===i.length)return t;const n={};for(let r=0;r<i.length;r++){const o=i[r].getAttribute("xlink:href");if(o){const i=t.querySelector(o),r=document.querySelector(o);i||!r||n[o]||(n[o]=await Ut(r,e,!0))}}const r=Object.values(n);if(r.length){const e="http://www.w3.org/1999/xhtml",i=document.createElementNS(e,"svg");i.setAttribute("xmlns",e),i.style.position="absolute",i.style.width="0",i.style.height="0",i.style.overflow="hidden",i.style.display="none";const n=document.createElementNS(e,"defs");i.appendChild(n);for(let t=0;t<r.length;t++)n.appendChild(r[t]);t.appendChild(i)}return t}(t,e))):null}const Bt=/url\((['"]?)([^'"]+?)\1\)/g,Kt=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,Ht=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function Nt(t){return-1!==t.search(Bt)}async function Yt(t,e,i){if(!Nt(t))return t;const n=function(t,{preferredFontFormat:e}){return e?t.replace(Ht,(t=>{for(;;){const[i,,n]=Kt.exec(t)||[];if(!n)return"";if(n===e)return`src: ${i};`}})):t}(t,i),r=function(t){const e=[];return t.replace(Bt,((t,i,n)=>(e.push(n),t))),e.filter((t=>!Dt(t)))}(n);return r.reduce(((t,n)=>t.then((t=>async function(t,e,i,n){try{const r=i?function(t,e){if(t.match(/^[a-z]+:\/\//i))return t;if(t.match(/^\/\//))return window.location.protocol+t;if(t.match(/^[a-z]+:/i))return t;const i=document.implementation.createHTMLDocument(),n=i.createElement("base"),r=i.createElement("a");return i.head.appendChild(n),i.body.appendChild(r),e&&(n.href=e),r.href=t,r.href}(e,i):e,o=Ot(e);let s;return s=await Wt(r,o,n),t.replace(function(t){const e=t.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1");return new RegExp(`(url\\(['"]?)(${e})(['"]?\\))`,"g")}(e),`$1${s}$3`)}catch(t){}return t}(t,n,e,i)))),Promise.resolve(n))}async function qt(t,e,i){var n;const r=null===(n=e.style)||void 0===n?void 0:n.getPropertyValue(t);if(r){const n=await Yt(r,null,i);return e.style.setProperty(t,n,e.style.getPropertyPriority(t)),!0}return!1}async function Gt(t,e){_t(t,Element)&&(await async function(t,e){await qt("background",t,e)||await qt("background-image",t,e),await qt("mask",t,e)||await qt("-webkit-mask",t,e)||await qt("mask-image",t,e)||await qt("-webkit-mask-image",t,e)}(t,e),await async function(t,e){const i=_t(t,HTMLImageElement);if((!i||Dt(t.src))&&(!_t(t,SVGImageElement)||Dt(t.href.baseVal)))return;const n=i?t.src:t.href.baseVal,r=await Wt(n,Ot(n),e);await new Promise(((n,o)=>{t.onload=n,t.onerror=e.onImageErrorHandler?(...t)=>{try{n(e.onImageErrorHandler(...t))}catch(t){o(t)}}:o;const s=t;s.decode&&(s.decode=n),"lazy"===s.loading&&(s.loading="eager"),i?(t.srcset="",t.src=r):t.href.baseVal=r}))}(t,e),await async function(t,e){const i=zt(t.childNodes).map((t=>Gt(t,e)));await Promise.all(i).then((()=>t))}(t,e))}const Xt={};async function Zt(t){let e=Xt[t];if(null!=e)return e;const i=await fetch(t);return e={url:t,cssText:await i.text()},Xt[t]=e,e}async function Jt(t,e){let i=t.cssText;const n=/url\(["']?([^"')]+)["']?\)/g,r=(i.match(/url\([^)]+\)/g)||[]).map((async r=>{let o=r.replace(n,"$1");return o.startsWith("https://")||(o=new URL(o,t.url).href),Rt(o,e.fetchRequestInit,(({result:t})=>(i=i.replace(r,`url(${t})`),[r,t])))}));return Promise.all(r).then((()=>i))}function Qt(t){if(null==t)return[];const e=[];let i=t.replace(/(\/\*[\s\S]*?\*\/)/gi,"");const n=new RegExp("((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})","gi");for(;;){const t=n.exec(i);if(null===t)break;e.push(t[0])}i=i.replace(n,"");const r=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,o=new RegExp("((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})","gi");for(;;){let t=r.exec(i);if(null===t){if(t=o.exec(i),null===t)break;r.lastIndex=o.lastIndex}else o.lastIndex=r.lastIndex;e.push(t[0])}return e}function te(t){return t.trim().replace(/["']/g,"")}async function ee(t,e){const i=await async function(t,e){if(null==t.ownerDocument)throw new Error("Provided element is not within a Document");const i=zt(t.ownerDocument.styleSheets),n=await async function(t,e){const i=[],n=[];return t.forEach((i=>{if("cssRules"in i)try{zt(i.cssRules||[]).forEach(((t,r)=>{if(t.type===CSSRule.IMPORT_RULE){let o=r+1;const s=Zt(t.href).then((t=>Jt(t,e))).then((t=>Qt(t).forEach((t=>{try{i.insertRule(t,t.startsWith("@import")?o+=1:i.cssRules.length)}catch(e){console.error("Error inserting rule from remote css",{rule:t,error:e})}})))).catch((t=>{console.error("Error loading remote css",t.toString())}));n.push(s)}}))}catch(r){const o=t.find((t=>null==t.href))||document.styleSheets[0];null!=i.href&&n.push(Zt(i.href).then((t=>Jt(t,e))).then((t=>Qt(t).forEach((t=>{o.insertRule(t,o.cssRules.length)})))).catch((t=>{console.error("Error loading remote stylesheet",t)}))),console.error("Error inlining remote css file",r)}})),Promise.all(n).then((()=>(t.forEach((t=>{if("cssRules"in t)try{zt(t.cssRules||[]).forEach((t=>{i.push(t)}))}catch(e){console.error(`Error while reading CSS rules from ${t.href}`,e)}})),i)))}(i,e);return function(t){return t.filter((t=>t.type===CSSRule.FONT_FACE_RULE)).filter((t=>Nt(t.style.getPropertyValue("src"))))}(n)}(t,e),n=function(t){const e=new Set;return function t(i){(i.style.fontFamily||getComputedStyle(i).fontFamily).split(",").forEach((t=>{e.add(te(t))})),Array.from(i.children).forEach((e=>{e instanceof HTMLElement&&t(e)}))}(t),e}(t);return(await Promise.all(i.filter((t=>n.has(te(t.style.fontFamily)))).map((t=>Yt(t.cssText,t.parentStyleSheet?t.parentStyleSheet.href:null,e))))).join("\n")}async function ie(t,e={}){const{width:i,height:n}=It(t,e),r=await Ut(t,e,!0);return await async function(t,e){const i=null!=e.fontEmbedCSS?e.fontEmbedCSS:e.skipFonts?null:await ee(t,e);if(i){const e=document.createElement("style"),n=document.createTextNode(i);e.appendChild(n),t.firstChild?t.insertBefore(e,t.firstChild):t.appendChild(e)}}(r,e),await Gt(r,e),function(t,e){const{style:i}=t;e.backgroundColor&&(i.backgroundColor=e.backgroundColor),e.width&&(i.width=`${e.width}px`),e.height&&(i.height=`${e.height}px`);const n=e.style;null!=n&&Object.keys(n).forEach((t=>{i[t]=n[t]}))}(r,e),await async function(t,e,i){const n="http://www.w3.org/2000/svg",r=document.createElementNS(n,"svg"),o=document.createElementNS(n,"foreignObject");return r.setAttribute("width",`${e}`),r.setAttribute("height",`${i}`),r.setAttribute("viewBox",`0 0 ${e} ${i}`),o.setAttribute("width","100%"),o.setAttribute("height","100%"),o.setAttribute("x","0"),o.setAttribute("y","0"),o.setAttribute("externalResourcesRequired","true"),r.appendChild(o),o.appendChild(t),async function(t){return Promise.resolve().then((()=>(new XMLSerializer).serializeToString(t))).then(encodeURIComponent).then((t=>`data:image/svg+xml;charset=utf-8,${t}`))}(r)}(r,i,n)}const ne=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=nt;validateScaleMax(t){t>nt?(console.warn("scaleMax cannot be greater than 1000."),this.scaleMax=nt,this.core.store.state.scaleMax=this.scaleMax):this.core.store.state.scaleMax=t}scaleMin=rt;validateScaleMin(t){t<rt?(console.warn("scaleMin cannot be less than 0.0001."),this.scaleMin=rt,this.core.store.state.scaleMin=this.scaleMin):this.core.store.state.scaleMin=t}cursorTarget;onCursorTargetChange(t){this.core.cursorManager.setTargetElement(t||document.body)}lockDrawingScale=!0;onLockDrawingScaleChange(t){this.core.store.state.lockDrawingScale=t}theme="light";onThemeChange(t){this.core.themeManager.setTheme(t)}isEngineReady;activeToolChange;objectsSelectionChange;workspacesChange;longpress;objectsChange;undoStateChange;objectsInViewportChange;forceUpdate=0;async triggerSelectionChange(){this.objectsSelectionChange.emit()}handleWheel(t){this.core.store.isDisabled||(this.core.store.state.isContextMenuVisible&&this.hideContextMenu(),this.viewport.handleWheel(t),this.core.store.state?.activeTool?.handleWheel(t))}handlePointerDown(t){this.core.store.isDisabled||(g.isTouchDevice()&&u.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=ht.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.hasPointerCapture(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.hasPointerCapture(t.pointerId)&&this.host.releasePointerCapture(t.pointerId),this.core.store.state.pointers.delete(t.pointerId),0===this.core.store.state.pointers.size&&this.core.cursorManager.resetToDefault(),this.viewport.handlePointerUp(t),this.core.store.state?.activeTool?.handlePointerUp(t))}handleLongPress(t){this.contextMenuHandler.handleContextMenu(t.detail)}handleContextMenu(t){t.preventDefault(),this.core.store.isDisabled||"touch"!==t.pointerType&&"pen"!==t.pointerType&&this.contextMenuHandler.handleContextMenu(t)}handleResize(){this.viewport.handleResize()}handleKeyDown(t){this.core.store.isDisabled||this.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 s))return console.error(`Failed to register tool "${t}": Tool class must be a constructor function`),null;const n=h.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",h.getTool("selection")),this.core.deselectAllObjects(),this.core.selectObjects(t)}async selectAllObjectsInViewport(){this.core.store.state.activeTool?.onDeactivate(),this.core.store.setState("activeTool",h.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 backToContent(){return this.viewport.centerFitNearestContent(20)}async getCopiedObjects(){return this.core.store.state.copiedObjects||[]}async getScreenshot(t="png"){if(!this.host)return null;const e={objects:this.core.store.state.objects,activeWorkspace:this.core.store.state.activeWorkspace,workspaces:this.core.store.state.workspaces,activeTool:this.core.store.state.activeTool,isReady:this.core.store.state.isReady,translateX:this.core.store.state.translateX,translateY:this.core.store.state.translateY,scale:this.core.store.state.scale},i={filter:t=>!("KRITZEL-CONTEXT-MENU"===t.tagName||t.classList&&t.classList.contains("debug-panel"))};let n;try{n="svg"===t?await ie(this.host,i):await async function(t,e={}){return(await async function(t,e={}){const{width:i,height:n}=It(t,e),r=await ie(t,e),o=await Tt(r),s=document.createElement("canvas"),a=s.getContext("2d"),l=e.pixelRatio||function(){let t,e;try{e=process}catch(t){}const i=e&&e.env?e.env.devicePixelRatio:null;return i&&(t=parseInt(i,10),Number.isNaN(t)&&(t=1)),t||window.devicePixelRatio||1}(),c=e.canvasWidth||i,h=e.canvasHeight||n;return s.width=c*l,s.height=h*l,e.skipAutoScale||function(t){(t.width>jt||t.height>jt)&&(t.width>jt&&t.height>jt?t.width>t.height?(t.height*=jt/t.width,t.width=jt):(t.width*=jt/t.height,t.height=jt):t.width>jt?(t.height*=jt/t.width,t.width=jt):(t.width*=jt/t.height,t.height=jt))}(s),s.style.width=`${c}`,s.style.height=`${h}`,e.backgroundColor&&(a.fillStyle=e.backgroundColor,a.fillRect(0,0,s.width,s.height)),a.drawImage(o,0,0,s.width,s.height),s}(t,e)).toDataURL()}(this.host,i)}finally{this.core.store.state.objects=e.objects,this.core.store.state.activeWorkspace=e.activeWorkspace,this.core.store.state.workspaces=e.workspaces,this.core.store.state.activeTool=e.activeTool,this.core.store.state.isReady=e.isReady,this.core.store.state.translateX=e.translateX,this.core.store.state.translateY=e.translateY,this.core.store.state.scale=e.scale,this.core.rerender()}return n}async exportViewportAsPng(){try{const t=`${this.core.store.state?.activeWorkspace?.name||"workspace"}-${(new Date).toISOString().replace(/[:.]/g,"-")}.png`,e=await this.getScreenshot("png"),i=document.createElement("a");i.download=t,i.href=e,i.click()}catch(t){console.error("Failed to export viewport as PNG:",t)}}async exportViewportAsSvg(){try{const t=`${this.core.store.state?.activeWorkspace?.name||"workspace"}-${(new Date).toISOString().replace(/[:.]/g,"-")}.svg`,e=await this.getScreenshot("svg"),i=document.createElement("a");i.download=t,i.href=e,i.click()}catch(t){console.error("Failed to export viewport as SVG:",t)}}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;_lastHadSelectionGroup=!1;get isSelecting(){return this.core.store.state.activeTool instanceof d&&this.core.store.state.isSelecting}get isSelectionActive(){return this.core.store.state.activeTool instanceof d&&null!==this.core.store.selectionGroup}constructor(i){t(this,i),this.isEngineReady=e(this,"isEngineReady"),this.activeToolChange=e(this,"activeToolChange"),this.objectsSelectionChange=e(this,"objectsSelectionChange"),this.workspacesChange=e(this,"workspacesChange"),this.longpress=e(this,"longpress"),this.objectsChange=e(this,"objectsChange"),this.undoStateChange=e(this,"undoStateChange"),this.objectsInViewportChange=e(this,"objectsInViewportChange"),this.core=new xt(this)}disconnectedCallback(){this.throttledPointerMoveMulti.cancel(),this.core.cursorManager.cleanup()}componentWillLoad(){this.validateScaleMax(this.scaleMax),this.validateScaleMin(this.scaleMin),this.core.store.state.lockDrawingScale=this.lockDrawingScale}async componentDidLoad(){this.contextMenuHandler=new ft(this.core,this.globalContextMenuItems,this.objectContextMenuItems),this.keyHandler=new dt(this.core),this.viewport=new ut(this.core,this.host),this.core.cursorManager.setTargetElement(this.cursorTarget||document.body),this.core.cursorManager.setShadowRoot(this.host.shadowRoot);const t=this.host.closest("kritzel-editor");this.core.themeManager.setTargetElement(t||this.host),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,e=null!==this.core.store.selectionGroup;this.objectsChange.emit(this.core.store.allObjects),this.undoStateChange.emit(t),this._lastHadSelectionGroup!==e&&(this._lastHadSelectionGroup=e,this.objectsSelectionChange.emit())}_registerStateChangeListeners(){this.core.store.onStateChange("activeTool",this._handleActiveToolChange.bind(this))}_handleActiveToolChange(t){t instanceof d||(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),S.forceHideKeyboard(),this.core.rerender()}render(){const t=V.getStoredTheme(),e=window.getComputedStyle(this.host).getPropertyValue("--kritzel-selection-handle-size").trim()||"6px",r=parseFloat(e),s=2*r<14?14:r,a=this.core.store.state.viewportWidth/2+this.core.store.state.translateX,l=this.core.store.state.viewportHeight/2+this.core.store.state.translateY,c=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(),this.core.store.totalObjectCount>0&&this.objectsInViewportChange.emit(c),i(n,{key:"6cc974d4e3fdcfe1b185a014fa9eb6b1243dde91"},this.core.store.state.debugInfo.showViewportInfo&&i("div",{key:"8f8ac08f2d643b664e2b39fbaf50e0c474c5255d",class:"debug-panel"},i("div",{key:"79ad4f3db958d8b17b2efdb3a1a6ab24d81bb436"},"ActiveWorkspaceId: ",this.core.store.state?.activeWorkspace?.id),i("div",{key:"0cdaa6abeebc865eec1c3026d5fd38e00bd388a7"},"ActiveWorkspaceName: ",this.core.store.state?.activeWorkspace?.name),i("div",{key:"125ca4bb69ca2fcc647bd55e9cb8c4072fbaa600"},"TranslateX: ",this.core.store.state?.translateX),i("div",{key:"02aee9b8359b9cdefa2f54afc26d328dab984ea3"},"TranslateY: ",this.core.store.state?.translateY),i("div",{key:"8398e28a5c70318dace386182633088e5e3267d5"},"ViewportWidth: ",this.core.store.state?.viewportWidth),i("div",{key:"0e17a7fbf96acbe1cbf2769b0fa853eaf7fb6f3b"},"ViewportHeight: ",this.core.store.state?.viewportHeight),i("div",{key:"d214e66618d2c38ca94154e7b06f681d815ffadc"},"PointerCount: ",this.core.store.state.pointers.size),i("div",{key:"35695f7f82605bf6ba0fd512f814a7da723f623c"},"Scale: ",this.core.store.state?.scale),i("div",{key:"6935c9e5cedb8f7bd6d81a5d02b383fbb0e4d3a2"},"ActiveTool: ",this.core.store.state?.activeTool?.name),i("div",{key:"6a7490a07ca3019157d6a4b10b9164d3a504c4c0"},"HasViewportChanged: ",this.core.store.state?.hasViewportChanged?"true":"false"),i("div",{key:"ba70d5d01cad9e0fb6e80a4955e3361723af3531"},"IsEnabled: ",this.core.store.state?.isEnabled?"true":"false"),i("div",{key:"be3a408762c8bada64224c4da92baf987ae62f6d"},"IsScaling: ",this.core.store.state?.isScaling?"true":"false"),i("div",{key:"9cf44848dbcb7e8b1a40618db1ee6cf019e01720"},"IsPanning: ",this.core.store.state?.isPanning?"true":"false"),i("div",{key:"b53633b5c099b338089294c897cfbc32973d360d"},"IsSelecting: ",this.isSelecting?"true":"false"),i("div",{key:"0cab012a88532c69ba0aeb1daa7646e91c4f029d"},"IsSelectionActive: ",this.isSelectionActive?"true":"false"),i("div",{key:"1c47bfd56352b70a8eafb771470d9912240e9885"},"IsResizeHandleSelected: ",this.core.store.state.isResizeHandleSelected?"true":"false"),i("div",{key:"1147a866a58f3d50c8751fc02f6614e899b13bc0"},"IsRotationHandleSelected: ",this.core.store.state.isRotationHandleSelected?"true":"false"),i("div",{key:"a308df3601fd5ba49741f2efbc3d262059daed2d"},"IsRotationHandleHovered: ",this.core.store.state.isRotationHandleHovered?"true":"false"),i("div",{key:"af5ceafa9bb39c2e2085815c691198f7a0b48017"},"IsDrawing: ",this.core.store.state.isDrawing?"true":"false"),i("div",{key:"8abffd4f1e3e7b174ee5e5e9070fc0ca0703d1aa"},"IsWriting: ",this.core.store.state.isWriting?"true":"false"),i("div",{key:"e127318f52e25d65b323d3325b02a0125864c3be"},"IsPointerDown: ",this.core.store.isPointerDown?"true":"false"),i("div",{key:"b8f21b1a1bd674f7403e3096e7cb52e629b2df89"},"PointerX: ",this.core.store.state?.pointerX),i("div",{key:"892abdc68df061495f88ceea2037766b537f82ab"},"PointerY: ",this.core.store.state?.pointerY),i("div",{key:"04f08e11cb67cedf31900d01803960caaa0a5a0b"},"SelectedObjects: ",this.core.store.selectionGroup?.objects.length||0),i("div",{key:"6a6efb9f05cb70eaff83cea1a22e1151a08e2ec9"},"ViewportCenter: (",a.toFixed(2),", ",l.toFixed(2),")")),i("div",{key:"c9e2392f43cf54b57f0fb49a361d47a2c4156ca3",id:"origin",class:"origin",style:{transform:`matrix(${this.core.store.state?.scale}, 0, 0, ${this.core.store.state?.scale}, ${this.core.store.state?.translateX}, ${this.core.store.state?.translateY})`}},c?.map((e=>i("div",{key:e.id,id:e.id,class:"object",style:{transform:e?.transformationMatrix,transformOrigin:"top left",position:"absolute",zIndex:e.zIndex.toString(),pointerEvents:this.core.store.state.isScaling?"none":"auto"}},B.isInstanceOf(e,"KritzelPath")&&i("svg",{ref:t=>e.mount(t),xmlns:"http://www.w3.org/2000/svg",style:{height:e?.totalHeight+"px",width:e?.totalWidth+"px",left:"0",top:"0",position:"absolute",transform:0!==e.rotationDegrees?`rotate(${e.rotationDegrees}deg)`:void 0,transformOrigin:0!==e.rotationDegrees?`${e.totalWidth/2}px ${e.totalHeight/2}px`:void 0,opacity:e.markedForRemoval?"0.5":e.opacity.toString(),pointerEvents:e.markedForRemoval?"none":"auto",overflow:"visible"},viewBox:e?.viewBox},i("path",{d:e?.d,fill:o.resolveThemeColor(e.fill,t),stroke:o.resolveThemeColor(e?.stroke,t),"shape-rendering":e.isLowRes()?"optimizeSpeed":"auto"})),B.isInstanceOf(e,"KritzelLine")&&i("svg",{ref:t=>e.mount(t),xmlns:"http://www.w3.org/2000/svg",style:{height:e?.totalHeight+"px",width:e?.totalWidth+"px",left:"0",top:"0",position:"absolute",transform:0!==e.rotationDegrees?`rotate(${e.rotationDegrees}deg)`:void 0,transformOrigin:0!==e.rotationDegrees?`${e.totalWidth/2}px ${e.totalHeight/2}px`:void 0,opacity:e.markedForRemoval?"0.5":e.opacity.toString(),pointerEvents:e.markedForRemoval?"none":"auto",overflow:"visible"},viewBox:e?.viewBox},(e.hasStartArrow||e.hasEndArrow)&&i("defs",null,e.hasStartArrow&&i("marker",{id:e.startMarkerId,markerWidth:e.getArrowSize("start"),markerHeight:e.getArrowSize("start"),refX:0,refY:e.getArrowSize("start")/2,orient:"auto-start-reverse",markerUnits:"userSpaceOnUse"},i("path",{d:e.getArrowPath(e.arrows?.start?.style),fill:e.getArrowFill("start"),transform:`scale(${e.getArrowSize("start")/10})`})),e.hasEndArrow&&i("marker",{id:e.endMarkerId,markerWidth:e.getArrowSize("end"),markerHeight:e.getArrowSize("end"),refX:0,refY:e.getArrowSize("end")/2,orient:"auto",markerUnits:"userSpaceOnUse"},i("path",{d:e.getArrowPath(e.arrows?.end?.style),fill:e.getArrowFill("end"),transform:`scale(${e.getArrowSize("end")/10})`}))),i("path",{d:this.core.anchorManager.computeClippedLinePath(e),fill:"none",stroke:"transparent","stroke-width":Math.max(e?.strokeWidth||0,10),"stroke-linecap":"round"}),i("path",{d:this.core.anchorManager.computeClippedLinePath(e),fill:"none",stroke:o.resolveThemeColor(e?.stroke,t),"stroke-width":e?.strokeWidth,"stroke-linecap":"round","marker-start":e.hasStartArrow?`url(#${e.startMarkerId})`:void 0,"marker-end":e.hasEndArrow?`url(#${e.endMarkerId})`:void 0})),B.isInstanceOf(e,"KritzelImage")&&i("img",{ref:t=>e.mount(t),src:e.src,style:{position:"absolute",left:"0",top:"0",width:e.totalWidth+"px",height:e.totalHeight+"px",transform:0!==e.rotationDegrees?`rotate(${e.rotationDegrees}deg)`:void 0,transformOrigin:0!==e.rotationDegrees?`${e.totalWidth/2}px ${e.totalHeight/2}px`:void 0,opacity:e.markedForRemoval?"0.5":e.opacity.toString(),pointerEvents:e.markedForRemoval?"none":"auto",backgroundColor:o.resolveThemeColor(e.backgroundColor,t),borderColor:o.resolveThemeColor(e.borderColor,t),borderWidth:e.borderWidth+"px",borderStyle:"solid",padding:e.padding+"px",overflow:"visible",userSelect:"none",imageRendering:this.core.store.state.isScaling||this.core.store.state.isPanning?"pixelated":"auto"},draggable:!1,onDragStart:t=>t.preventDefault()}),B.isInstanceOf(e,"KritzelCustomElement")&&i("div",{ref:t=>e.mount(t),style:{position:"absolute",left:"0",top:"0",width:e.totalWidth+"px",height:e.totalHeight+"px",transform:0!==e.rotationDegrees?`rotate(${e.rotationDegrees}deg)`:void 0,transformOrigin:0!==e.rotationDegrees?`${e.totalWidth/2}px ${e.totalHeight/2}px`:void 0,opacity:e.markedForRemoval?"0.5":e.opacity.toString(),pointerEvents:e.markedForRemoval?"none":"auto",backgroundColor:o.resolveThemeColor(e.backgroundColor,t),borderColor:o.resolveThemeColor(e.borderColor,t),borderWidth:e.borderWidth+"px",borderStyle:"solid",padding:e.padding+"px",overflow:"hidden",display:"block"}}),B.isInstanceOf(e,"KritzelSelectionGroup")&&!this.core.displaySelectionLineUI(e)&&i("div",{ref:t=>e.mount(t),style:{position:"absolute",left:"0",top:"0",width:e.totalWidth+"px",height:e.totalHeight+"px",transform:0!==e.rotationDegrees?`rotate(${e.rotationDegrees}deg)`:void 0,transformOrigin:0!==e.rotationDegrees?`${e.totalWidth/2}px ${e.totalHeight/2}px`:void 0,opacity:e.markedForRemoval?"0.5":e.opacity.toString(),pointerEvents:e.markedForRemoval?"none":"auto"}}),B.isInstanceOf(e,"KritzelSelectionBox")&&i("div",{ref:t=>e.mount(t),style:{position:"absolute",left:"0",top:"0",width:e.totalWidth+"px",height:e.totalHeight+"px",transform:0!==e.rotationDegrees?`rotate(${e.rotationDegrees}deg)`:void 0,transformOrigin:0!==e.rotationDegrees?`${e.totalWidth/2}px ${e.totalHeight/2}px`:void 0,opacity:e.markedForRemoval?"0.5":e.opacity.toString(),pointerEvents:e.markedForRemoval?"none":"auto",backgroundColor:o.resolveThemeColor(e.backgroundColor,t),borderColor:o.resolveThemeColor(e.borderColor,t),borderWidth:e.borderWidth+"px",borderStyle:"solid"}}),B.isInstanceOf(e,"KritzelText")&&i("div",{style:{position:"absolute",left:"0",top:"0",width:e.totalWidth+"px",height:e.totalHeight+"px",transform:0!==e.rotationDegrees?`rotate(${e.rotationDegrees}deg)`:void 0,transformOrigin:0!==e.rotationDegrees?`${e.totalWidth/2}px ${e.totalHeight/2}px`:void 0,opacity:e.markedForRemoval?"0.5":e.opacity.toString(),pointerEvents:e.markedForRemoval?"none":"auto"}},i("div",{id:"text-object",ref:t=>e.mount(t),onPointerDown:t=>e.handlePointerDown(t),onPointerMove:t=>e.handlePointerMove(t),onPointerUp:t=>e.handlePointerUp(t),style:{minWidth:e.initialWidth+"px",minHeight:e.initialHeight+"px",maxWidth:"500px",height:"auto",width:"max-content",transformOrigin:"top left",transform:`scale(${e.scaleFactor})`,backgroundColor:o.resolveThemeColor(e.backgroundColor,t),overflow:"visible"}})),B.isInstanceOf(e,"KritzelShape")&&i("div",{ref:t=>e.mount(t),onPointerDown:t=>e.handlePointerDown(t),onPointerMove:t=>e.handlePointerMove(t),onPointerUp:t=>e.handlePointerUp(t),style:{position:"absolute",left:"0",top:"0",width:e.totalWidth+"px",height:e.totalHeight+"px",transform:0!==e.rotationDegrees?`rotate(${e.rotationDegrees}deg)`:void 0,transformOrigin:0!==e.rotationDegrees?`${e.totalWidth/2}px ${e.totalHeight/2}px`:void 0,opacity:e.markedForRemoval?"0.5":e.opacity.toString(),pointerEvents:e.markedForRemoval?"none":"auto",overflow:"visible"}},i("svg",{xmlns:"http://www.w3.org/2000/svg",style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",overflow:"visible",pointerEvents:"none"},viewBox:e.viewBox,preserveAspectRatio:"none"},i("path",{d:e.getSvgPath(),fill:o.resolveThemeColor(e.fillColor,t),stroke:o.resolveThemeColor(e.strokeColor,t),"stroke-width":e.strokeWidth})),i("div",{ref:t=>e.mountTextEditor(t),style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",textAlign:"center",overflow:"hidden",pointerEvents:e.isEditing?"auto":"none"}})),this.core.store.state.debugInfo.showObjectInfo&&e.isDebugInfoVisible&&i("div",{style:{pointerEvents:"none",position:"absolute",left:`${e.totalWidth}px`,top:"0",zIndex:(e.zIndex+2).toString()}},i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"Id: ",e.id),i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"width: ",e.width),i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"height: ",e.height),i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"translateX: ",e.translateX),i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"translateY: ",e.translateY),i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"rotationDegrees: ",e.rotationDegrees),i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"zIndex: ",e.zIndex)),(this.core.displaySelectionGroupUI(e)||this.core.displaySelectionLineUI(e))&&i("svg",{xmlns:"http://www.w3.org/2000/svg",style:{zIndex:(e.zIndex+1).toString(),height:e?.totalHeight.toString(),width:e?.totalWidth.toString(),left:"0",top:"0",position:"absolute",transform:`rotate(${e.rotationDegrees}deg)`,transformOrigin:`${e.totalWidth/2}px ${e.totalHeight/2}px`,overflow:"visible",pointerEvents:"none"}},this.core.displaySelectionGroupUI(e)&&i("g",{class:"selection-group-ui",style:{pointerEvents:"none"}},i("g",{class:"selection-group-borders"},i("line",{x1:"0",y1:"0",x2:e.totalWidth,y2:"0",style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${e.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),i("line",{x1:"0",y1:"0",x2:"0",y2:e.totalHeight,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${e.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),i("line",{x1:"0",y1:e.totalHeight,x2:e.totalWidth,y2:e.totalHeight,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${e.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),i("line",{x1:e.totalWidth,y1:"0",x2:e.totalWidth,y2:e.totalHeight,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${e.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}})),!this.isSelecting&&i("g",{class:"selection-group-handles",style:{pointerEvents:"auto"}},i("rect",{class:"resize-handle top-left",x:""+-(r-1)*e.scale/this.core.store.state?.scale,y:""+-(r-1)*e.scale/this.core.store.state?.scale,width:""+2*(r-1)*e.scale/this.core.store.state?.scale,height:""+2*(r-1)*e.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:"var(--kritzel-selection-handle-stroke-color, #007AFF)",strokeWidth:`calc(2px * ${e.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),i("rect",{class:"resize-handle-overlay top-left",x:""+-s*e.scale/this.core.store.state?.scale,y:""+-s*e.scale/this.core.store.state?.scale,width:""+2*s*e.scale/this.core.store.state?.scale,height:""+2*s*e.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),i("rect",{class:"resize-handle top-right",x:""+(e.totalWidth-(r-1)*e.scale/this.core.store.state?.scale),y:""+-(r-1)*e.scale/this.core.store.state?.scale,width:""+2*(r-1)*e.scale/this.core.store.state?.scale,height:""+2*(r-1)*e.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:"var(--kritzel-selection-handle-stroke-color, #007AFF)",strokeWidth:`calc(2px * ${e.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),i("rect",{class:"resize-handle-overlay top-right",x:""+(e.totalWidth-s*e.scale/this.core.store.state?.scale),y:""+-s*e.scale/this.core.store.state?.scale,width:""+2*s*e.scale/this.core.store.state?.scale,height:""+2*s*e.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),i("rect",{class:"resize-handle bottom-left",x:""+-(r-1)*e.scale/this.core.store.state?.scale,y:""+(e.totalHeight-(r-1)*e.scale/this.core.store.state?.scale),width:""+2*(r-1)*e.scale/this.core.store.state?.scale,height:""+2*(r-1)*e.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:"var(--kritzel-selection-handle-stroke-color, #007AFF)",strokeWidth:`calc(2px * ${e.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),i("rect",{class:"resize-handle-overlay bottom-left",x:""+-s*e.scale/this.core.store.state?.scale,y:""+(e.totalHeight-s*e.scale/this.core.store.state?.scale),width:""+2*s*e.scale/this.core.store.state?.scale,height:""+2*s*e.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),i("rect",{class:"resize-handle bottom-right",x:""+(e.totalWidth-(r-1)*e.scale/this.core.store.state?.scale),y:""+(e.totalHeight-(r-1)*e.scale/this.core.store.state?.scale),width:""+2*(r-1)*e.scale/this.core.store.state?.scale,height:""+2*(r-1)*e.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:"var(--kritzel-selection-handle-stroke-color, #007AFF)",strokeWidth:`calc(2px * ${e.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),i("rect",{class:"resize-handle-overlay bottom-right",x:""+(e.totalWidth-s*e.scale/this.core.store.state?.scale),y:""+(e.totalHeight-s*e.scale/this.core.store.state?.scale),width:""+2*s*e.scale/this.core.store.state?.scale,height:""+2*s*e.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),i("line",{x1:e.totalWidth/2,y1:"0",x2:e.totalWidth/2,y2:-15*e.scale/this.core.store.state?.scale,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${e.scale} / ${this.core.store.state?.scale})`}}),i("circle",{class:"rotation-handle",cx:e.totalWidth/2,cy:-15*e.scale/this.core.store.state?.scale,r:""+(r-1)*e.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #ffffff)",stroke:"var(--kritzel-selection-handle-stroke-color, #007AFF)",strokeWidth:`calc(2px * ${e.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),i("circle",{class:"rotation-handle-overlay",cx:e.totalWidth/2,cy:-15*e.scale/this.core.store.state?.scale,r:""+s*e.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}))),this.core.displaySelectionLineUI(e)&&B.isInstanceOf(e,"KritzelLine")&&i("g",{class:"selection-line-ui",style:{pointerEvents:"none"}},i("g",{class:"selection-line-borders"},i("path",{class:"selection-line-border",d:this.core.anchorManager.computeClippedLinePath(e,!0),style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${e.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"round",fill:"none"}})),!this.isSelecting&&i("g",{class:"selection-line-handles",style:{pointerEvents:"auto"}},i("circle",{class:"selection-line-handle start",cx:e.startX-e.x,cy:e.startY-e.y,r:""+(r-1)*e.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",stroke:"var(--kritzel-selection-handle-stroke-color, #007AFF)",strokeWidth:`calc(2px * ${e.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),i("circle",{class:"selection-line-handle-overlay start",cx:e.startX-e.x,cy:e.startY-e.y,r:""+s*e.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),i("circle",{class:"selection-line-handle center",cx:void 0!==e.controlX?(e.startX+2*e.controlX+e.endX)/4-e.x:(e.startX-e.x+e.endX-e.x)/2,cy:void 0!==e.controlY?(e.startY+2*e.controlY+e.endY)/4-e.y:(e.startY-e.y+e.endY-e.y)/2,r:""+(r-1)*e.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",stroke:"var(--kritzel-selection-handle-stroke-color, #007AFF)",strokeWidth:`calc(2px * ${e.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),i("circle",{class:"selection-line-handle-overlay center",cx:void 0!==e.controlX?(e.startX+2*e.controlX+e.endX)/4-e.x:(e.startX-e.x+e.endX-e.x)/2,cy:void 0!==e.controlY?(e.startY+2*e.controlY+e.endY)/4-e.y:(e.startY-e.y+e.endY-e.y)/2,r:""+s*e.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),i("circle",{class:"selection-line-handle end",cx:e.endX-e.x,cy:e.endY-e.y,r:""+(r-1)*e.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",stroke:"var(--kritzel-selection-handle-stroke-color, #007AFF)",strokeWidth:`calc(2px * ${e.scale} / ${this.core.store.state?.scale})`,paintOrder:"fill"}}),i("circle",{class:"selection-line-handle-overlay end",cx:e.endX-e.x,cy:e.endY-e.y,r:""+s*e.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}))))))),(()=>{const t=this.core.anchorManager.getAnchorLinesRenderData();return t?i("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&&i("g",{class:"anchor-line-start"},t.startAnchorViz.pathD?i("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"}}):i("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"}}),i("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&&i("g",{class:"anchor-line-end"},t.endAnchorViz.pathD?i("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"}}):i("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"}}),i("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?i("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"}},i("g",null,t.snapLinePath?i("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&&i("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"}}),i("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&&i("kritzel-context-menu",{key:"307012661cd1021e7e3c3db48f1671700f5de91b",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&&i("kritzel-cursor-trail",{key:"bd48d2a8e7c83e2c5d80c92548b00720650391ab",core:this.core}))}static get watchers(){return{workspace:[{onWorkspaceChange:0}],scaleMax:[{validateScaleMax:0}],scaleMin:[{validateScaleMin:0}],cursorTarget:[{onCursorTargetChange:0}],lockDrawingScale:[{onLockDrawingScaleChange:0}],theme:[{onThemeChange:0}]}}};ne.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 re=class{constructor(i){t(this,i),this.exportPng=e(this,"exportPng"),this.exportSvg=e(this,"exportSvg")}isDialogOpen=!1;previewUrl;isLoading=!1;exportPng;exportSvg;async open(t){this.previewUrl=t,this.isDialogOpen=!0}closeDialog=()=>{this.isDialogOpen=!1};handleExportPng=()=>{this.exportPng.emit(),this.closeDialog()};handleExportSvg=()=>{this.exportSvg.emit(),this.closeDialog()};render(){return i(n,{key:"77ebbdae3c3417e37eb92a93dfe65c3e9cf3a5a4"},i("kritzel-dialog",{key:"8cd7df09f4e8e209eaac30903439351ce6de4efa",isOpen:this.isDialogOpen,dialogTitle:"Export Viewport",closable:!0,onDialogClose:this.closeDialog},i("div",{key:"de40b5f04ef75e07dd328e45363f134c6e9442dd",class:"export-content"},this.previewUrl&&i("div",{key:"7605139638c0dbacf07f2d9aaa83ad7c4236db80",class:"preview-container"},i("img",{key:"38b33df3bec109a1c2cf021d184674ef2ad0357f",src:this.previewUrl,alt:"Viewport Preview"})),i("p",{key:"4c65f9bf4673fdef87aa937c4541da22a278458f"},"Select a format to export the current viewport:"),i("div",{key:"b891c221dcf7c97093da3e8de47723f79e5e17de",class:"export-options"},i("button",{key:"12e10e98c26b9b1efa78617195cfc8420de3d0ed",class:"export-button",onClick:this.handleExportPng},i("div",{key:"5c2d747507dea56d08fbb05e198f9325e014aab6",class:"icon-container"},i("kritzel-icon",{key:"9a5dbaeca3edbf9221817220c78c6e173adc21e2",name:"image",size:24})),i("span",{key:"f369ad331406afa0dc2886e3da057c9a47c2fded"},"Export as PNG")),i("button",{key:"7434f72102828a7b8aa29b6893f947be0162e823",class:"export-button",onClick:this.handleExportSvg},i("div",{key:"b2da9040987177a9095a291dee3b78ed13564179",class:"icon-container"},i("kritzel-icon",{key:"54ce9a55281015d57159540b3565f97ec49b2a00",name:"shape-rectangle",size:24})),i("span",{key:"48252a69f5e17ec53fad400e942a7e830f88e07c"},"Export as SVG"))))))}};re.style=":host{display:block}.export-content{display:flex;flex-direction:column;gap:16px;padding:16px 0}.preview-container{width:100%;display:flex;justify-content:center;align-items:center;box-sizing:border-box;margin-bottom:8px}.preview-container img{max-width:100%;max-height:250px;object-fit:contain;box-shadow:0 4px 8px rgba(0, 0, 0, 0.15);border-radius:4px;border:1px solid var(--kritzel-global-border-color, #dbdbdb)}.export-content p{margin:0;color:var(--kritzel-global-text-secondary, #666)}.export-options{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:8px}.export-button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:16px;border:1px solid var(--kritzel-global-border-color, #dbdbdb);border-radius:8px;background-color:transparent;cursor:pointer;transition:all 0.2s ease;color:var(--kritzel-global-text-primary, #333);-webkit-tap-highlight-color:transparent}.export-button:hover{background-color:var(--kritzel-global-hover-background, #f5f5f5)}.export-button:focus-visible{outline:revert;outline-offset:revert}.export-button .icon-container{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background-color:var(--kritzel-global-hover-background, #f0f0f0)}.export-button span{font-weight:500;font-size:14px}";const oe=class{constructor(e){t(this,e)}fontFamily="Arial, sans-serif";size=24;color="#000000";render(){return i(n,{key:"d81fc72a9139a5995122b1b0215cab42cef4bd0e"},i("div",{key:"b2af1354fad940df8cabbf06458c93cc909a7b76",class:"font-preview",style:{fontFamily:this.fontFamily,fontSize:`${this.size}px`,color:this.color}},"A"))}};oe.style=":host{display:block}.font-preview{color:var(--kritzel-font-size-text-color, #333333);line-height:1;text-align:center;font-weight:bold}";const se=class{constructor(i){t(this,i),this.fontFamilyChange=e(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 i(n,{key:"74f27d2d9f73ee8589448a24bed64e885ef6d2d8"},i("kritzel-dropdown",{key:"58abc26a54b124f253841faaa4ca4227a23baac2",options:t,value:this.selectedFontFamily,onValueChanged:this.handleDropdownValueChange,selectStyles:{fontFamily:this.selectedFontFamily}}))}};se.style=":host{display:flex;align-items:flex-start;gap:8px;padding:0;box-sizing:border-box;width:100%}.font-style-button{display:flex;justify-content:center;align-items:center;width:42px;height:32px;padding:0;border:none;outline:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);border-radius:0;color:var(--control-text-color);font-weight:bold;-webkit-tap-highlight-color:transparent}.font-style-button:not(:last-child){border-right:1px solid #333333}.font-style-button:hover{background-color:var(--control-hover-bg)}.font-style-button:active{background-color:var(--control-active-bg)}.font-style-button.selected,.font-style-button.selected:hover,.font-style-button.selected:active{background-color:var(--control-selected-bg);color:var(--control-selected-color)}.font-style-button.italic-text{font-style:italic}";const ae=class{constructor(i){t(this,i),this.sizeChange=e(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 i(n,{key:"246762e4003d5a90a033dd17a06055caebfe0a55"},this.sizes.map((t=>i("div",{tabIndex:0,class:{"size-container":!0,selected:this.selectedSize===t},onClick:()=>this.handleSizeClick(t),onKeyDown:e=>this.handleKeyDown(e,t)},i("kritzel-font",{fontFamily:this.fontFamily,size:t,color:"var(--kritzel-global-text-primary)"})))))}};ae.style=":host{display:flex;align-items:flex-start;gap:8px;padding:0;box-sizing:border-box}.size-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:4px;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;border-radius:50%}.size-container:hover{background-color:var(--kritzel-font-size-hover-background-color, #ebebeb)}.size-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-font-size-selected-background-color, #e0e0e0)}";const le=class{constructor(e){t(this,e)}name;label;size=24;render(){const t=C.get(this.name);return t?i(n,{style:{width:`${this.size}px`,height:`${this.size}px`}},i("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.`),i("span",{class:"error-icon","aria-label":`Error: Icon ${this.name} not found`},"?"))}};le.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 ce=class{constructor(i){t(this,i),this.valueChange=e(this,"valueChange")}styles=["none","triangle"];value;valueChange;getStartEnding(){return this.value?.start?.enabled?this.value.start.style??"triangle":"none"}getEndEnding(){return this.value?.end?.enabled?this.value.end.style??"triangle":"none"}handleStartChange(t){const e={...this.value,start:"none"===t?{enabled:!1}:{enabled:!0,style:t}};this.value=e,this.valueChange.emit(e)}handleEndChange(t){const e={...this.value,end:"none"===t?{enabled:!1}:{enabled:!0,style:t}};this.value=e,this.valueChange.emit(e)}getEndingPath(t){switch(t){case"triangle":return"M 0 0 L 10 5 L 0 10 Z";case"open":return"M 0 0 L 10 5 L 0 10";case"diamond":return"M 0 5 L 5 0 L 10 5 L 5 10 Z";case"circle":return"M 10 5 A 5 5 0 1 1 0 5 A 5 5 0 1 1 10 5 Z";default:return""}}renderEndingIcon(t,e){const n="var(--kritzel-global-text-primary)";if("none"===t)return i("svg",{viewBox:"0 0 24 12",class:"ending-icon"},i("line",{x1:e?4:2,y1:"6",x2:e?22:20,y2:"6",stroke:n,"stroke-width":"2","stroke-linecap":"round"}));const r=this.getEndingPath(t),o="open"===t;return i("svg",{viewBox:"0 0 24 12",class:"ending-icon"},e?i("g",null,i("line",{x1:"12",y1:"6",x2:"22",y2:"6",stroke:n,"stroke-width":"2","stroke-linecap":"round"}),i("g",{transform:"translate(2, 1) scale(1, 1)"},i("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)"}))):i("g",null,i("line",{x1:"2",y1:"6",x2:"12",y2:"6",stroke:n,"stroke-width":"2","stroke-linecap":"round"}),i("g",{transform:"translate(12, 1)"},i("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(),e=this.getEndEnding();return i(n,{key:"ff69d5283afe4097b285325c2ec875cb38a4e65e"},i("div",{key:"fbb7e9967e5d46351653bd7ea95eace19dffbf18",class:"endings-section"},i("div",{key:"86b7dc1939a90362a223b0ef4d98d650596c04db",class:"endings-row"},this.styles.map((e=>i("button",{class:{"ending-option":!0,selected:t===e},onClick:()=>this.handleStartChange(e),title:"none"===e?"No start arrow":`${e} start arrow`},this.renderEndingIcon(e,!0)))))),i("div",{key:"063d2d0951baee7a75f3199a5c20164b33baeeeb",class:"endings-section"},i("div",{key:"0ffc00fad9b745ecf116a0ea04ce901210f6ca8d",class:"endings-row"},this.styles.map((t=>i("button",{class:{"ending-option":!0,selected:e===t},onClick:()=>this.handleEndChange(t),title:"none"===t?"No end arrow":`${t} end arrow`},this.renderEndingIcon(t,!1)))))))}};ce.style=":host{display:flex;flex-direction:column;gap:12px;padding:0;box-sizing:border-box}.endings-section{display:flex;flex-direction:column;gap:6px}.section-label{font-size:12px;font-weight:500;color:var(--kritzel-line-endings-label-color, #666666);padding-left:4px}.endings-row{display:flex;align-items:center;gap:4px}.ending-option{display:flex;justify-content:center;align-items:center;width:48px;height:32px;border-radius:6px;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;background:var(--kritzel-line-endings-option-background, #ffffff);padding:4px;transition:background-color 0.15s ease, border-color 0.15s ease}.ending-option:hover{background-color:var(--kritzel-line-endings-hover-background-color, #ebebeb)}.ending-option.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-line-endings-selected-background-color, #ebebeb)}.ending-option:focus{outline:none;box-shadow:0 0 0 2px var(--kritzel-focus-ring-color, rgba(0, 122, 255, 0.3))}.ending-icon{width:100%;height:100%}";const he=class{constructor(i){t(this,i),this.itemSelect=e(this,"itemSelect")}get host(){return r(this)}items=[];selectedItemId;itemSelect;focusedIndex=-1;showMobileDetail=!1;tabRefs=[];watchSelectedItemId(t,e){t!==e&&(this.showMobileDetail=!0)}componentWillRender(){this.tabRefs=[]}handleItemClick=t=>{t.disabled||(this.itemSelect.emit({item:t}),this.showMobileDetail=!0)};handleBackClick=()=>{this.showMobileDetail=!1};handleKeyDown=(t,e,i)=>{const n=this.items.map(((t,e)=>t.disabled?-1:e)).filter((t=>-1!==t)),r=n.indexOf(i);switch(t.key){case"ArrowDown":t.preventDefault(),this.focusTab(n[(r+1)%n.length]);break;case"ArrowUp":t.preventDefault(),this.focusTab(n[(r-1+n.length)%n.length]);break;case"Home":t.preventDefault(),this.focusTab(n[0]);break;case"End":t.preventDefault(),this.focusTab(n[n.length-1]);break;case"Enter":case" ":t.preventDefault(),this.handleItemClick(e)}};focusTab(t){this.focusedIndex=t;const e=this.tabRefs[t];e&&e.focus()}handleFocus=t=>{this.focusedIndex=t};handleBlur=()=>{this.focusedIndex=-1};setTabRef=(t,e)=>{t&&(this.tabRefs[e]=t)};getTabIndex(t,e){return t.disabled?-1:0}render(){const t=this.items.find((t=>t.id===this.selectedItemId)),e="master-detail-panel",r=t?`tab-${t.id}`:void 0;return i(n,{key:"28b34d09819dca22b9edff8367a838e5d161132a"},i("div",{key:"53107e6781946c406c9fccae465d003ef6571cfd",class:{"master-detail-container":!0,"is-mobile-detail-visible":this.showMobileDetail}},i("nav",{key:"d496f8b5975250a2a0ed7007dfeac3875a980e09",class:"master-menu",role:"tablist","aria-orientation":"vertical","aria-label":"Settings categories"},this.items.map(((t,n)=>i("button",{key:t.id,id:`tab-${t.id}`,ref:t=>this.setTabRef(t,n),class:{"menu-item":!0,"is-selected":t.id===this.selectedItemId,"is-disabled":!!t.disabled,"is-focused":n===this.focusedIndex},role:"tab","aria-selected":t.id===this.selectedItemId?"true":"false","aria-controls":e,"aria-disabled":t.disabled?"true":void 0,tabIndex:this.getTabIndex(t,n),disabled:t.disabled,onClick:()=>this.handleItemClick(t),onKeyDown:e=>this.handleKeyDown(e,t,n),onFocus:()=>this.handleFocus(n),onBlur:this.handleBlur},t.icon&&i("kritzel-icon",{name:t.icon,size:20,class:"menu-item-icon"}),i("span",{class:"menu-item-label"},t.label),i("span",{class:"menu-item-chevron","aria-hidden":"true"},i("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"},i("path",{d:"m9 18 6-6-6-6"}))))))),i("div",{key:"8cad78be4c26bd85903caa9debf14517fb6f5f75",id:e,class:"detail-panel",role:"tabpanel","aria-labelledby":r},i("button",{key:"f185a12b0c60bac5bdd4b6992bd9f6cb653d3253",class:"mobile-back-button",onClick:this.handleBackClick,"aria-label":"Back to menu"},i("kritzel-icon",{key:"333e675a242b9d075aaa78f4ee005539b563a6b9",name:"chevron-left",size:20,class:"mobile-back-icon"}),"Back"),i("slot",{key:"ccdf01882b30eea4227eb0da23fccc80fee1937e"}))))}static get watchers(){return{selectedItemId:[{watchSelectedItemId:0}]}}};he.style=":host{display:block;width:100%;height:100%}.master-detail-container{display:flex;width:100%;height:100%;min-height:var(--kritzel-master-detail-min-height, 300px);gap:var(--kritzel-master-detail-gap, 0);background-color:var(--kritzel-master-detail-background-color, transparent)}.master-menu{display:flex;flex-direction:column;width:var(--kritzel-master-detail-menu-width, 200px);min-width:var(--kritzel-master-detail-menu-min-width, 160px);padding:var(--kritzel-master-detail-menu-padding, 8px);background-color:var(--kritzel-master-detail-menu-background-color, #ffffff);border-right:var(--kritzel-master-detail-menu-border-right, 1px solid #ebebeb);gap:var(--kritzel-master-detail-menu-gap, 4px);overflow-y:auto}.menu-item{display:flex;align-items:center;gap:var(--kritzel-master-detail-menu-item-gap, 10px);padding:var(--kritzel-master-detail-menu-item-padding, 10px 12px);border:none;border-radius:var(--kritzel-master-detail-menu-item-border-radius, 6px);background-color:var(--kritzel-master-detail-menu-item-background-color, transparent);color:var(--kritzel-master-detail-menu-item-color, #333333);font-family:inherit;font-size:var(--kritzel-master-detail-menu-item-font-size, 14px);font-weight:var(--kritzel-master-detail-menu-item-font-weight, 400);text-align:left;cursor:var(--kritzel-global-pointer-cursor, pointer);transition:background-color 150ms ease, color 150ms ease;-webkit-tap-highlight-color:transparent}.menu-item:hover:not(.is-disabled){background-color:var(--kritzel-master-detail-menu-item-hover-background-color, #ebebeb)}.menu-item:active:not(.is-disabled){background-color:var(--kritzel-master-detail-menu-item-active-background-color, #e0e0e0)}.menu-item.is-selected{background-color:var(--kritzel-master-detail-menu-item-selected-background-color, #0066cc);color:var(--kritzel-master-detail-menu-item-selected-color, #ffffff);font-weight:var(--kritzel-master-detail-menu-item-selected-font-weight, 500)}.menu-item.is-selected:hover{background-color:var(--kritzel-master-detail-menu-item-selected-hover-background-color, #0052a3)}.menu-item.is-disabled{color:var(--kritzel-master-detail-menu-item-disabled-color, #999999);cursor:not-allowed;opacity:0.6}.menu-item:focus-visible{outline:var(--kritzel-master-detail-menu-item-focus-outline, revert);outline-offset:var(--kritzel-master-detail-menu-item-focus-outline-offset, revert)}.menu-item-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.menu-item-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detail-panel{flex:1;min-height:0;padding:var(--kritzel-master-detail-detail-padding, 16px);background-color:var(--kritzel-master-detail-detail-background-color, #ffffff);overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin}.detail-panel:focus{outline:none}.detail-panel:focus-visible{outline:var(--kritzel-master-detail-detail-focus-outline, revert);outline-offset:var(--kritzel-master-detail-detail-focus-outline-offset, revert)}.mobile-back-button{display:none;align-items:center;gap:8px;background:none;border:none;padding:0 0 16px 0;cursor:pointer;color:var(--kritzel-master-detail-back-button-color, #333333);font-weight:500;font-size:14px;font-family:inherit}.mobile-back-icon{display:flex;align-items:center;flex-shrink:0}.menu-item-chevron{display:none;flex-shrink:0;margin-left:auto;color:var(--kritzel-master-detail-menu-item-chevron-color, #999999)}.menu-item-chevron svg{width:16px;height:16px;stroke:currentColor}@media (max-width: 768px){.master-menu{width:100%;border-right:none}.detail-panel{display:none;width:100%}.master-detail-container.is-mobile-detail-visible .master-menu{display:none}.master-detail-container.is-mobile-detail-visible .detail-panel{display:block}.mobile-back-button{display:flex}.menu-item.is-selected{background-color:transparent;color:var(--kritzel-master-detail-menu-item-color, #333333);font-weight:var(--kritzel-master-detail-menu-item-font-weight, 400)}.menu-item.is-selected:hover{background-color:var(--kritzel-master-detail-menu-item-hover-background-color, #ebebeb)}.menu-item-chevron{display:flex;align-items:center}}";const ue=class{constructor(i){t(this,i),this.itemSelect=e(this,"itemSelect"),this.itemSave=e(this,"itemSave"),this.itemCancel=e(this,"itemCancel"),this.itemToggleChildMenu=e(this,"itemToggleChildMenu"),this.itemCloseChildMenu=e(this,"itemCloseChildMenu"),this.close=e(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 i(n,{key:"8379db1815141de23286484a16ef498bc16fe1c3",tabIndex:0,onClick:t=>t.stopPropagation()},this.openChildMenuItem&&i("div",{key:"cb5acec2f2e7e1912bdde07a0664f459425c7f5c",class:"has-open-child-overlay",onClick:this.onOverlayClick}),this.items.map((t=>i("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}))))}};ue.style=":host{position:relative;display:flex;flex-direction:column;background-color:var(--kritzel-menu-background-color, #ffffff);width:var(--kritzel-menu-width, 200px);padding:var(--kritzel-menu-padding, 8px);border-radius:var(--kritzel-menu-border-radius, 12px);box-shadow:var(--kritzel-menu-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-menu-border, 1px solid #ebebeb);z-index:2;gap:var(--kritzel-menu-gap, 4px);overflow-y:auto;scrollbar-color:var(--kritzel-global-scrollbar-thumb-color, #ebebeb) transparent;scrollbar-width:thin;max-height:var(--kritzel-portal-max-height, 300px);box-sizing:border-box;-webkit-tap-highlight-color:transparent;outline:none}:host:focus-visible{outline:auto}.has-open-child-overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:3}";const de=class{constructor(i){t(this,i),this.itemSelect=e(this,"itemSelect"),this.itemSave=e(this,"itemSave"),this.itemCancel=e(this,"itemCancel"),this.itemToggleChildMenu=e(this,"itemToggleChildMenu"),this.itemCloseChildMenu=e(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(),g.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=()=>{g.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[i("div",{class:"menu-item-content left"},this.item.icon&&i("kritzel-icon",{name:this.item.icon,size:16}),i("div",null,this.item.label)),i("div",{class:"menu-item-content right"},this.item.children&&this.item.children.length>0&&[i("button",{id:"child-menu-toggle",class:"action-button",onClick:this.handleMenuToggle,disabled:this.item.isDisabled},i("kritzel-icon",{name:"ellipsis-vertical",size:16})),i("kritzel-portal",{anchor:this.item.childMenuAnchor,offsetY:4,onClose:this.handleMenuClose},i("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[i("div",{class:"menu-item-content left"},i("input",{ref:t=>this.inputRef=t,type:"text",class:"edit-input",value:this.item.label,onInput:this.handleInputChange})),i("div",{class:"menu-item-content right"},i("div",{tabIndex:0,class:"action-button",onClick:this.handleCancel},i("kritzel-icon",{name:"x",size:16})),i("div",{tabIndex:this.isDirty||this.item.isNewItem?0:-1,class:{"action-button":!0,disabled:!this.isDirty&&!this.item.isNewItem},onClick:this.handleSave},i("kritzel-icon",{name:"check",size:16})))]}render(){return i(n,{key:"bea20089a9eeb66c9573187b2cccdfe220460f70",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},i("div",{key:"d877be4a4f51d6e342b3602769990e4592355686",class:"menu-item-overlay"}),this.item.isEditing?this.renderEditMode():this.renderViewMode())}static get watchers(){return{item:[{onItemChange:0}]}}};de.style=":host{position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--kritzel-menu-item-padding, 8px);box-sizing:border-box;gap:16px;height:var(--kritzel-menu-item-height, 40px);min-height:var(--kritzel-menu-item-min-height, 40px);font-family:sans-serif;font-size:var(--kritzel-menu-item-font-size, 14px);color:var(--kritzel-menu-item-color, #333333);border-radius:var(--kritzel-menu-item-border-radius, 12px);-webkit-tap-highlight-color:transparent}:host:focus:not(:focus-visible){outline:none}:host(:hover) .menu-item-overlay,:host(:focus-within) .menu-item-overlay{background-color:var(--kritzel-menu-item-overlay-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.selected){background-color:var(--kritzel-menu-item-selected-background-color, #007aff);color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected) .action-button{color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected.editing){background-color:var(--kritzel-menu-item-selected-background-color, #007aff)}:host(.selected) .edit-input{color:var(--kritzel-menu-item-selected-color, #ffffff)}: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-background-color, #007aff)}.menu-item-overlay{position:absolute;inset:0;background-color:transparent;z-index:0;pointer-events:none;border-radius:var(--kritzel-menu-item-border-radius, 12px)}.menu-item-content{display:flex;align-items:center;gap:8px;position:relative;z-index:1;height:100%}.left{justify-content:flex-start;flex:1;min-width:0}.left>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.right{justify-content:flex-end}.edit-input{flex:1;height:var(--kritzel-menu-item-input-height, 24px);padding:0;background-color:transparent;border-radius:0;border:none;border-bottom:var(--kritzel-menu-item-input-border, 1px solid #ccc);font-size:var(--kritzel-menu-item-font-size, 14px);width:100%;min-width:0;box-sizing:border-box;outline:none;color:inherit}.edit-input::selection{background-color:var(--kritzel-menu-item-input-selection-color, #007bff);color:var(--kritzel-menu-item-input-selection-text-color, #ffffff)}.action-button{padding:4px;border-radius:8px;border:none;cursor:var(--kritzel-global-pointer-cursor, pointer);display:flex;align-items:center;justify-content:center;background-color:transparent;background:transparent;-webkit-tap-highlight-color:transparent}.action-button:hover,.action-button:focus{background-color:var(--kritzel-menu-item-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.action-button.disabled{pointer-events:none;opacity:0.5}";const fe=class{constructor(i){t(this,i),this.itemSelect=e(this,"itemSelect")}get host(){return r(this)}items=[{id:"export",label:"Export",icon:"download"},{id:"settings",label:"Settings",icon:"settings"}];icon="ellipsis-vertical";iconSize=24;offsetY=4;itemSelect;menuAnchor=null;toggleMenu=t=>{t.stopPropagation(),this.menuAnchor?this.closeMenu():this.menuAnchor=this.host};closeMenu=()=>{this.menuAnchor=null};handleMenuItemSelect=t=>{const{item:e,parent:i}=t.detail;e.action&&e.action(e,i),this.itemSelect.emit(t.detail),this.closeMenu()};render(){return i(n,{key:"f0abb11c73dbfe1667871c56324eb51e1467ba4f"},i("button",{key:"a4f6962edb04886743644c2a46cbbe5757a063a0",class:"more-menu-button",onClick:this.toggleMenu},i("kritzel-icon",{key:"72ed48828a9612de3c33d0452dea4f44f452a5a1",name:this.icon,size:this.iconSize})),i("kritzel-portal",{key:"cb43b77e4f867b535410380afa29fe1135cab405",anchor:this.menuAnchor,offsetY:this.offsetY,onClose:this.closeMenu},i("kritzel-menu",{key:"3555d2e7b263a5dc649a679da9bcc9a027f3648e",items:this.items,onItemSelect:this.handleMenuItemSelect})))}};fe.style=":host{display:inline-flex;padding:var(--kritzel-more-menu-padding, 4px);background-color:var(--kritzel-more-menu-background-color, #ffffff);border-radius:var(--kritzel-more-menu-border-radius, 12px);box-shadow:var(--kritzel-more-menu-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-more-menu-border, 1px solid #ebebeb)}.more-menu-button{display:flex;align-items:center;justify-content:center;width:var(--kritzel-more-menu-button-width, 40px);height:var(--kritzel-more-menu-button-height, 40px);padding:0;border:none;border-radius:var(--kritzel-more-menu-inner-border-radius, 12px);background-color:transparent;cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:none;transition:background-color 150ms ease;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:var(--kritzel-more-menu-button-color, currentColor)}.more-menu-button:hover{background-color:var(--kritzel-more-menu-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.more-menu-button:focus{background-color:var(--kritzel-more-menu-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.more-menu-button:active{background-color:var(--kritzel-more-menu-button-active-background-color, hsl(0, 0%, 0%, 4.3%))}";const pe=class{constructor(i){t(this,i),this.valueChange=e(this,"valueChange")}value=0;min=Number.MIN_SAFE_INTEGER;max=Number.MAX_SAFE_INTEGER;step=1;label="";valueChange;inputValue="";onValueChange(t){this.inputValue=String(t)}componentWillLoad(){this.inputValue=String(this.value)}normalizeValue(t){return isNaN(t)?this.value:Math.min(this.max,Math.max(this.min,t))}getDecimalPlaces(){const t=String(this.step),e=t.indexOf(".");return-1===e?0:t.length-e-1}roundToStep(t){const e=this.getDecimalPlaces(),i=Math.pow(10,e);return Math.round(t*i)/i}handleInput=t=>{this.inputValue=t.target.value};handleBlur=()=>{this.commitValue()};handleKeyDown=t=>{"Enter"===t.key&&this.commitValue()};commitValue(){const t=parseFloat(this.inputValue),e=this.normalizeValue(t);this.value=e,this.inputValue=String(e),this.valueChange.emit(e)}handleIncrement=()=>{const t=this.normalizeValue(this.roundToStep(this.value+this.step));this.value=t,this.inputValue=String(t),this.valueChange.emit(t)};handleDecrement=()=>{const t=this.normalizeValue(this.roundToStep(this.value-this.step));this.value=t,this.inputValue=String(t),this.valueChange.emit(t)};render(){return i(n,{key:"e8da2c82f8a02ebf3f6466c1ef2f3b3e81a34ce4"},i("div",{key:"0722ff120042dd8554a9caa82d723d6d6b29c9db",class:"input-container"},this.label&&i("label",{key:"918be1a684abf18c3a6d4ee2250956de7b25d06f",class:"input-label"},this.label),i("div",{key:"6c7265bb27a578d85eb5bcf3842af9373c62033b",class:"input-wrapper"},i("input",{key:"4c2e290521131d7aa315147d2d28d90ab36524d4",type:"number",class:"numeric-input",min:this.min,max:this.max,step:this.step,value:this.inputValue,onInput:this.handleInput,onBlur:this.handleBlur,onKeyDown:this.handleKeyDown}),i("div",{key:"de2ff6b98d36a841b264b3a677fe9531d9bcd513",class:"spinner-buttons"},i("button",{key:"b37828f5176bdd42f6782efd8e42f1780f702f17",type:"button",class:"spinner-button spinner-up",onClick:this.handleIncrement,tabIndex:-1,"aria-label":"Increase value"},i("svg",{key:"1dd8640de4cd7a4db769f2cf45dceae50cfaaabd",viewBox:"0 0 10 6",class:"spinner-icon"},i("path",{key:"c1612b4c6f7d68084c7694c074e8d56d0e6a4963",d:"M1 5L5 1L9 5",stroke:"currentColor","stroke-width":"1.5",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"}))),i("button",{key:"377df992a292d5556f7919db6787b7bd69db3732",type:"button",class:"spinner-button spinner-down",onClick:this.handleDecrement,tabIndex:-1,"aria-label":"Decrease value"},i("svg",{key:"827c131b4473d7dd190603965ffbc0606de396bf",viewBox:"0 0 10 6",class:"spinner-icon"},i("path",{key:"8741ef9f5477a5ea6ecc694d77895b66d1fb6dd5",d:"M1 1L5 5L9 1",stroke:"currentColor","stroke-width":"1.5",fill:"none","stroke-linecap":"round","stroke-linejoin":"round"})))))))}static get watchers(){return{value:[{onValueChange:0}]}}};pe.style=":host{display:block}.input-container{display:flex;flex-direction:column;gap:6px}.input-label{font-size:14px;font-weight:500;color:var(--kritzel-numeric-input-label-color, #333333)}.input-wrapper{display:flex;position:relative}.numeric-input{flex:1;padding:8px 36px 8px 12px;border:1px solid var(--kritzel-numeric-input-border-color, #ebebeb);border-radius:6px;font-size:14px;color:var(--kritzel-numeric-input-text-color, #333333);background-color:var(--kritzel-numeric-input-input-background, #ffffff);outline:none;transition:border-color 150ms ease;box-sizing:border-box}.numeric-input::-webkit-outer-spin-button,.numeric-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.numeric-input[type='number']{-moz-appearance:textfield}.numeric-input:hover{border-color:var(--kritzel-numeric-input-hover-border-color, #cccccc)}.numeric-input:focus{border-color:var(--kritzel-numeric-input-focus-border-color, #0066ff)}.spinner-buttons{position:absolute;right:1px;top:1px;bottom:1px;display:flex;flex-direction:column;border-left:1px solid var(--kritzel-numeric-input-border-color, #ebebeb);border-radius:0 5px 5px 0;overflow:hidden}.spinner-button{flex:1;display:flex;align-items:center;justify-content:center;width:24px;padding:0;border:none;background-color:var(--kritzel-numeric-input-spinner-background, #f5f5f5);color:var(--kritzel-numeric-input-spinner-color, #666666);cursor:pointer;transition:background-color 150ms ease}.spinner-button:hover{background-color:var(--kritzel-numeric-input-spinner-hover-background, #ebebeb)}.spinner-button:active{background-color:var(--kritzel-numeric-input-spinner-active-background, #dddddd)}.spinner-up{border-bottom:1px solid var(--kritzel-numeric-input-border-color, #ebebeb)}.spinner-icon{width:10px;height:6px}";const be=class{constructor(i){t(this,i),this.valueChange=e(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 i(n,{key:"c06fae2bdf24ade06004ba091cc8c704da5dc06b"},i("div",{key:"ea857bf6156a64c3b21decf008eb1d37e9ce1084",class:"opacity-container"},i("div",{key:"cad923da91542487df2fb95f39d4e92afbdaed47",class:"slider-wrapper"},i("input",{key:"a48d051b80e57b4ec9b3c7b5a12a7da8e53d7837",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}%`}}))))}};be.style=":host{display:flex;flex-direction:column;padding:0;box-sizing:border-box}.opacity-container{display:flex;align-items:center;width:232px}.slider-wrapper{flex:1;display:flex;align-items:center}.opacity-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:linear-gradient( to right, var(--kritzel-opacity-slider-active-color, #007AFF) 0%, var(--kritzel-opacity-slider-active-color, #007AFF) var(--slider-progress, 100%), var(--kritzel-opacity-slider-track-color, #e0e0e0) var(--slider-progress, 100%), var(--kritzel-opacity-slider-track-color, #e0e0e0) 100% );outline:none;cursor:var(--kritzel-global-pointer-cursor, pointer)}.opacity-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--kritzel-opacity-slider-thumb-color, #ffffff);border:2px solid var(--kritzel-opacity-slider-thumb-border-color, #007AFF);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);transition:transform 0.1s ease}.opacity-slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.opacity-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--kritzel-opacity-slider-thumb-color, #ffffff);border:2px solid var(--kritzel-opacity-slider-thumb-border-color, #007AFF);cursor:var(--kritzel-global-pointer-cursor, pointer);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);transition:transform 0.1s ease}.opacity-slider::-moz-range-thumb:hover{transform:scale(1.1)}.opacity-slider::-moz-range-track{height:6px;border-radius:3px;background:transparent}.opacity-slider:focus{outline:none}.opacity-slider:focus::-webkit-slider-thumb{box-shadow:0 0 0 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))}";const ge=class{constructor(i){t(this,i),this.close=e(this,"close")}get host(){return r(this)}anchor;anchorChanged(t){t?(this.openPortal(),requestAnimationFrame((()=>{this.calculatePosition(),this.autoFocus&&this.focusFirstElement()}))):this.closePortal()}offsetX;offsetY;autoFocus=!0;close;handleOutsideClick(t){this.lastAddedPortal===this.portal&&(this.host.contains(t.target)||(this.close.emit(),this.closePortal()))}handleKeyDown(t){if(this.lastAddedPortal===this.portal){if("Escape"===t.key)return t.stopPropagation(),this.anchor.focus(),this.close.emit(),void this.closePortal();if("Tab"!==t.key){if("Enter"===t.key){const e=this.getDeepActiveElement();e?.click&&(t.preventDefault(),e.click())}}else this.trapFocus(t)}}handleResize(){this.calculatePosition()}handleWindowScroll(){if(!Q.isElementInViewport(this.anchor))return this.anchor?.blur(),void this.closePortal();this.calculatePosition()}portal;id=`portal-${U.generateUUID()}`;defaultOffset=0;minLeft=0;themeObserver;focusFirstElement(){requestAnimationFrame((()=>{this.firstFocusableElement?.focus?.()}))}getDeepActiveElement(){let t=document.activeElement;for(;t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;return t}trapFocus(t){const e=Q.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?Q.getFocusableElements(e)[0]??e:null}get lastAddedPortal(){const t=Array.from(document.querySelectorAll('[id^="portal-"]'));return t.length?t[t.length-1]:null}calculateLeft(){if(!this.anchor||!this.portal)return 0;const t=this.anchor.getBoundingClientRect(),e=this.portal.getBoundingClientRect(),i=this.offsetX??this.defaultOffset;let n;n=t.left+t.width/2>window.innerWidth/2?t.right-e.width-i:t.left+i;const r=window.innerWidth-e.width-this.minLeft;return n<this.minLeft&&(n=this.minLeft),n>r&&(n=r),Math.round(n+window.scrollX)}calculateTop(){if(!this.anchor||!this.portal)return 0;const t=this.anchor.getBoundingClientRect(),e=this.portal.getBoundingClientRect(),i=this.offsetY??this.defaultOffset;let n=t.bottom+i;const r=window.innerHeight-t.bottom-i-8,o=t.top-i-8;return this.host.style.removeProperty("--kritzel-portal-max-height"),e.height<=r?n=t.bottom+i:e.height<=o?n=t.top-e.height-i:r>=o?(n=t.bottom+i,this.host.style.setProperty("--kritzel-portal-max-height",`${r}px`)):(n=8,this.host.style.setProperty("--kritzel-portal-max-height",`${o}px`)),Math.round(n+window.scrollY)}getThemeProvider(){if(!this.anchor)return null;let t=this.anchor;for(;t;){const e=t.closest("kritzel-editor");if(e instanceof HTMLElement)return e;const i=t.closest('[id^="portal-"]');if(i instanceof HTMLElement)return i;const n=t.getRootNode();if(!(n instanceof ShadowRoot))return null;t=n.host}return null}openPortal(){this.portal=document.createElement("div"),this.portal.setAttribute("id",this.id),this.portal.style.zIndex="1",this.portal.style.position="absolute",this.portal.style.top="0px",this.portal.style.left="0px",this.portal.style.visibility="hidden";const t=this.getThemeProvider();if(t){const e=()=>{if(this.portal)for(let e=0;e<t.style.length;e++){const i=t.style[e];i.startsWith("--kritzel-")&&this.portal.style.setProperty(i,t.style.getPropertyValue(i))}};e(),this.themeObserver=new MutationObserver((()=>e())),this.themeObserver.observe(t,{attributes:!0,attributeFilter:["style"]})}this.portal.appendChild(this.host),document.body.append(this.portal)}closePortal(){this.themeObserver?.disconnect(),this.themeObserver=null;const t=document.getElementById(this.id);t&&(document.body.removeChild(t),this.host.remove())}calculatePosition(){if(!this.anchor||!this.portal)return;const t=this.calculateTop(),e=this.calculateLeft();this.portal.style.top=`${t}px`,this.portal.style.left=`${e}px`,this.portal.style.visibility="visible"}render(){return i(n,{key:"07f46315fffb3900d0611d4c49ea70e7a169a273",style:{display:this.anchor?"block":"none"}},i("slot",{key:"3c79528b6136695ff98cc9427f1fd5b9aa45eef7"}))}static get watchers(){return{anchor:[{anchorChanged:0}]}}},ve="kritzel-settings",ke=[{id:"general",label:"General",icon:"settings"},{id:"about",label:"About",icon:"info"}],me=class{constructor(i){t(this,i),this.settingsChange=e(this,"settingsChange")}get host(){return r(this)}isDialogOpen=!1;selectedCategoryId=ke[0].id;scaleMin=1e-4;scaleMax=1e3;lockDrawingScale=!0;currentTheme="light";settingsChange;componentWillLoad(){this.loadSettings()}loadSettings(){const t=localStorage.getItem(ve);if(t)try{const e=JSON.parse(t);"number"==typeof e.scaleMin&&(this.scaleMin=e.scaleMin),"number"==typeof e.scaleMax&&(this.scaleMax=e.scaleMax),"boolean"==typeof e.lockDrawingScale&&(this.lockDrawingScale=e.lockDrawingScale),"light"!==e.theme&&"dark"!==e.theme||(this.currentTheme=e.theme)}catch{}}saveSettings(){const t={scaleMin:this.scaleMin,scaleMax:this.scaleMax,lockDrawingScale:this.lockDrawingScale,theme:this.currentTheme};localStorage.setItem(ve,JSON.stringify(t)),this.settingsChange.emit(t)}handleScaleMinChange=t=>{this.scaleMin=t.detail,this.saveSettings()};handleScaleMaxChange=t=>{this.scaleMax=t.detail,this.saveSettings()};handleLockDrawingScaleChange=t=>{this.lockDrawingScale=t.detail,this.saveSettings()};handleThemeChange=t=>{this.currentTheme=t.detail?"dark":"light",this.saveSettings()};async open(){this.isDialogOpen=!0}closeDialog=()=>{this.isDialogOpen=!1};handleCategorySelect=t=>{this.selectedCategoryId=t.detail.item.id};renderCategoryContent(){switch(this.selectedCategoryId){case"general":return i("div",{class:"settings-content"},i("h3",null,"General Settings"),i("div",{class:"settings-group"},i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Dark Mode"),i("p",{class:"settings-description"},"Toggle between light and dark color themes for the editor interface."),i("kritzel-slide-toggle",{checked:"dark"===this.currentTheme,label:"Dark Mode",onCheckedChange:this.handleThemeChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Lock Drawing Scale"),i("p",{class:"settings-description"},"When enabled, drawn objects maintain a fixed visual size regardless of the current zoom level."),i("kritzel-slide-toggle",{checked:this.lockDrawingScale,label:"Lock Drawing Scale",onCheckedChange:this.handleLockDrawingScaleChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Minimum Zoom Level"),i("p",{class:"settings-description"},"Sets the minimum zoom level. Lower values allow zooming out further to see more of the canvas."),i("kritzel-numeric-input",{value:this.scaleMin,min:1e-4,max:1,step:1e-4,onValueChange:this.handleScaleMinChange})),i("div",{class:"settings-item"},i("label",{class:"settings-label"},"Maximum Zoom Level"),i("p",{class:"settings-description"},"Sets the maximum zoom level. Higher values allow zooming in closer for detailed work."),i("kritzel-numeric-input",{value:this.scaleMax,min:1,max:1e3,step:1,onValueChange:this.handleScaleMaxChange}))));case"about":return i("div",{class:"settings-content"},i("h3",null,"About"),i("p",null,"Kritzel - A drawing application"),i("p",{class:"version-info"},"Version ","0.1.22"));default:return null}}render(){return i(n,{key:"6e43b90b2c3031811856bda112df13d2e2bf5904"},i("kritzel-dialog",{key:"d84df729050fbf12033441cd8373cbea3068958a",isOpen:this.isDialogOpen,dialogTitle:"Settings",size:"large",onDialogClose:this.closeDialog},i("kritzel-master-detail",{key:"6c9ff2fab8a1d071b0f22bc04576780ed80ecc30",items:ke,selectedItemId:this.selectedCategoryId,onItemSelect:this.handleCategorySelect},this.renderCategoryContent())))}};me.style=":host{display:contents}kritzel-dialog{--kritzel-dialog-body-padding:0;--kritzel-dialog-width-large:800px;--kritzel-dialog-height-large:500px}.footer-button{padding:8px 16px;border-radius:6px;cursor:pointer;font-size:14px}.cancel-button{border:1px solid #ebebeb;background:#fff;color:inherit}.cancel-button:hover{background:#f5f5f5}.settings-content{padding:0}.settings-content h3{margin:0 0 16px 0;font-size:18px;font-weight:600;color:var(--kritzel-settings-content-heading-color, #333333)}.settings-content p{margin:0;font-size:14px;color:var(--kritzel-settings-content-text-color, #666666);line-height:1.5}.settings-group{display:flex;flex-direction:column;gap:24px}.settings-item{display:flex;flex-direction:column;gap:8px}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.settings-label{font-size:14px;font-weight:500;color:var(--kritzel-settings-label-color, #333333);margin:0}.settings-description{font-size:12px;color:var(--kritzel-settings-description-color, #888888);margin:0;line-height:1.4}";const ye=class{constructor(i){t(this,i),this.valueChange=e(this,"valueChange")}value="transparent";valueChange;handleFillChange(t){this.value=t,this.valueChange.emit(t)}renderFillIcon(t){const e="var(--kritzel-global-text-primary)";return i("svg",{viewBox:"0 0 24 24",class:"fill-icon"},i("rect","transparent"===t?{x:"4",y:"4",width:"16",height:"16",rx:"2",fill:"none",stroke:e,"stroke-width":"2"}:{x:"4",y:"4",width:"16",height:"16",rx:"2",fill:e,stroke:e,"stroke-width":"2"}))}render(){return i(n,{key:"a629b0b49b675b33fd2c2b29636c1f7c80b183c9"},i("div",{key:"e2e53c690c1b3a177fd032f3c0969364fe1a062d",class:"fill-row"},i("button",{key:"7aa77b5fef5f64cc9a54b5b978ad98175544a32b",class:{"fill-option":!0,selected:"transparent"===this.value},onClick:()=>this.handleFillChange("transparent"),title:"Transparent background"},this.renderFillIcon("transparent")),i("button",{key:"5c70f722e7dfc60166233666dcf5a81474e64712",class:{"fill-option":!0,selected:"filled"===this.value},onClick:()=>this.handleFillChange("filled"),title:"Filled background"},this.renderFillIcon("filled"))))}};ye.style=":host{display:flex;flex-direction:column;gap:12px;padding:0;box-sizing:border-box}.fill-row{display:flex;align-items:center;gap:4px}.fill-option{display:flex;justify-content:center;align-items:center;width:48px;height:32px;border-radius:6px;cursor:var(--kritzel-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;background:var(--kritzel-shape-fill-option-background, #ffffff);padding:4px;transition:background-color 0.15s ease, border-color 0.15s ease}.fill-option:hover{background-color:var(--kritzel-shape-fill-hover-background-color, #ebebeb)}.fill-option.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-shape-fill-selected-background-color, #ebebeb)}.fill-option:focus{outline:none;box-shadow:0 0 0 2px var(--kritzel-focus-ring-color, rgba(0, 122, 255, 0.3))}.fill-icon{width:100%;height:100%}";const xe=class{constructor(i){t(this,i),this.checkedChange=e(this,"checkedChange")}checked=!1;disabled=!1;label;checkedChange;handleToggle=()=>{this.disabled||(this.checked=!this.checked,this.checkedChange.emit(this.checked))};handleKeyDown=t=>{" "!==t.key&&"Enter"!==t.key||(t.preventDefault(),this.handleToggle())};render(){return i(n,{key:"b0603883832ae6b941fa9393d54878be78968c3a",class:{checked:this.checked,disabled:this.disabled},tabIndex:this.disabled?-1:0,role:"switch","aria-checked":this.checked?"true":"false","aria-disabled":this.disabled?"true":"false","aria-label":this.label,onClick:this.handleToggle,onKeyDown:this.handleKeyDown},i("div",{key:"db104be7b9025416d0b4c206090970063073fbda",class:"toggle-track"},i("div",{key:"537fc7e7584b2fafee3954965b580327f00e104a",class:"toggle-thumb"})))}};xe.style=":host{display:inline-flex;align-items:center;cursor:var(--kritzel-global-pointer-cursor, pointer);outline:none;z-index:1;-webkit-tap-highlight-color:transparent}:host(:focus-visible) .toggle-track{box-shadow:0 0 0 3px var(--kritzel-focus-ring-color, rgba(0, 122, 255, 0.3))}:host(.disabled){opacity:0.5;pointer-events:none;cursor:default}.toggle-track{position:relative;width:var(--kritzel-slide-toggle-width, 40px);height:var(--kritzel-slide-toggle-height, 22px);background-color:var(--kritzel-slide-toggle-track-color, #ccc);border-radius:var(--kritzel-slide-toggle-border-radius, 11px);transition:background-color var(--kritzel-slide-toggle-transition-duration, 0.2s) ease}:host(.checked) .toggle-track{background-color:var(--kritzel-slide-toggle-track-checked-color, #007AFF)}.toggle-thumb{position:absolute;top:50%;left:2px;transform:translateY(-50%);width:var(--kritzel-slide-toggle-thumb-size, 18px);height:var(--kritzel-slide-toggle-thumb-size, 18px);background-color:var(--kritzel-slide-toggle-thumb-color, #fff);border-radius:50%;box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);transition:left var(--kritzel-slide-toggle-transition-duration, 0.2s) ease}:host(.checked) .toggle-thumb{left:calc(var(--kritzel-slide-toggle-width, 40px) - var(--kritzel-slide-toggle-thumb-size, 18px) - 2px)}";const we=class{constructor(i){t(this,i),this.mainButtonClick=e(this,"mainButtonClick"),this.itemSelect=e(this,"itemSelect"),this.itemSave=e(this,"itemSave"),this.itemCancel=e(this,"itemCancel"),this.itemToggleChildMenu=e(this,"itemToggleChildMenu"),this.itemCloseChildMenu=e(this,"itemCloseChildMenu"),this.menuOpen=e(this,"menuOpen"),this.menuClose=e(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=g.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 i(n,{key:"ba64aa519e5a8f339ead25f011a69c6a98019e78",class:{mobile:this.isTouchDevice}},i("button",{key:"b2cfc9e22af40b5afdc0a0549ca2f5c259143d8f",class:"split-main-button",tabIndex:0,onClick:this.handleButtonClick,disabled:this.mainButtonDisabled},this.buttonIcon&&i("kritzel-icon",{key:"9037e02716eff7b403429154877a41f2c47c28ff",name:this.buttonIcon})),i("div",{key:"ef000190f635751285c477f6b9b0f7e9349bde60",class:"split-divider"}),i("button",{key:"1e577331162fce0e92273f6f7ba476b9474f415b",ref:t=>this.splitMenuButtonRef=t,class:"split-menu-button",tabIndex:0,onClick:this.toggleMenu,disabled:this.menuButtonDisabled},i("kritzel-icon",{key:"d6a0a192de624cfb13e8db7dde4b82b5d2c2f1b7",name:this.dropdownIcon})),i("kritzel-portal",{key:"25e176ca961040486d8f52b231163085d953ef57",anchor:this.anchorElement,offsetY:4,onClose:this.closeMenu},i("kritzel-menu",{key:"8775b923a4cda38de247a14bceafa14df037c1b0",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})))}};we.style=":host{position:relative;display:flex;align-items:center;font-family:sans-serif;z-index:1;padding:var(--kritzel-split-button-padding, 4px);background-color:var(--kritzel-split-button-background-color, #ffffff);border-radius:var(--kritzel-split-button-border-radius, 12px);box-shadow:var(--kritzel-split-button-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-split-button-border, 1px solid #ebebeb);gap:var(--kritzel-split-button-gap, 4px)}:host(.mobile){--kritzel-split-button-hover-background-color:transparent}button{border:none;background-color:transparent;padding:0;margin:0;font-family:inherit;font-size:inherit;color:var(--kritzel-split-button-color, #000000);-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:var(--kritzel-global-pointer-cursor, pointer);text-align:center;display:flex;align-items:center;justify-content:center;pointer-events:all;-webkit-tap-highlight-color:transparent}.split-main-button,.split-menu-button{height:auto;display:flex;align-items:center;padding:var(--kritzel-split-button-padding, 8px);background-color:var(--kritzel-split-button-background-color, #ffffff);border-radius:var(--kritzel-split-button-border-radius, 12px);font-size:var(--kritzel-split-button-font-size, 14px)}.split-main-button:hover,.split-menu-button:hover{background-color:var(--kritzel-split-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.split-main-button:focus,.split-menu-button:focus{background-color:var(--kritzel-split-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.split-main-button{gap:var(--kritzel-split-button-gap, 4px)}.split-menu-button{border-left:none;justify-content:center}.split-divider{width:var(--kritzel-split-button-divider-width, 1px);height:24px;background-color:var(--kritzel-split-button-divider-background-color, hsl(0, 0%, 0%, 4.3%))}:disabled{pointer-events:none;opacity:0.5}";const ze=class{constructor(i){t(this,i),this.sizeChange=e(this,"sizeChange")}sizes=[4,6,8,12,16,24];selectedSize=null;sizeChange;handleSizeClick(t){this.selectedSize=t,this.sizeChange.emit(t)}render(){return i(n,{key:"f8e3295b0167e2444fa1d8d43aff2cc6f4669d67"},i("div",{key:"127686446313ec469f456af559861fa4d5475a7a",class:"size-grid"},this.sizes.map((t=>i("div",{tabIndex:0,class:{"size-container":!0,selected:this.selectedSize===t},onClick:()=>this.handleSizeClick(t)},i("kritzel-color",{value:"var(--kritzel-global-text-primary)",size:t}))))))}};ze.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-global-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box}.size-container:hover{background-color:var(--kritzel-stroke-size-hover-background-color, #ebebeb)}.size-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-stroke-size-selected-background-color, #ebebeb)}";const Ce=class{constructor(i){t(this,i),this.toolChange=e(this,"toolChange"),this.displayValuesChange=e(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;theme;onThemeChange(){this.emitDisplayValues()}toolChange;displayValuesChange;config;palette=[];currentOpacity=1;updateTrigger=0;handleSelectionChange(){this.tool instanceof d&&(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:o.applyOpacity(this.tool[this.config.colorProperty],this.currentOpacity,this.theme),size:t};this.tool instanceof b&&(e.fontFamily=this.tool.fontFamily),this.displayValuesChange.emit(e)}updatePalette(){this.config&&(this.palette="none"===this.config.paletteSource?[]: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;("string"==typeof e.fillColor?"transparent"===e.fillColor:"transparent"===e.fillColor.light&&"transparent"===e.fillColor.dark)||(e.fillColor=t.detail)}this.emitDisplayValues(),this.toolChange.emit(this.tool),this.updateTrigger++};handleSizeChange=t=>{this.tool[this.config.sizeProperty]=t.detail,this.emitDisplayValues(),this.toolChange.emit(this.tool),this.updateTrigger++};handleOpacityChange=t=>{this.tool[this.config.opacityProperty]=t.detail,this.currentOpacity=t.detail,this.emitDisplayValues(),this.toolChange.emit(this.tool)};handlePropertyChange=(t,e)=>{if("shape"!==this.config.type&&"selection"!==this.config.type||"fillColor"!==t)this.tool[t]=e,"fontFamily"===t&&this.emitDisplayValues();else{const t="filled"===e?this.tool[this.config.colorProperty]:{light:"transparent",dark:"transparent"};this.tool.fillColor=t,"filled"===e&&(this.tool[this.config.colorProperty]=t)}this.toolChange.emit(this.tool),this.updateTrigger++};getShapeFillValue(){const t=this.tool.fillColor;return("string"==typeof t?"transparent"===t:"transparent"===t.light&&"transparent"===t.dark)?"transparent":"filled"}renderControl(t){const e=this.tool[t.propertyName];switch(t.type){case"stroke-size":return i("kritzel-stroke-size",{key:t.type,selectedSize:e,onSizeChange:this.handleSizeChange});case"font-size":return i("kritzel-font-size",{key:t.type,selectedSize:e,fontFamily:this.tool.fontFamily,onSizeChange:this.handleSizeChange});case"line-endings":return i("kritzel-line-endings",{key:t.type,value:e,onValueChange:e=>this.handlePropertyChange(t.propertyName,e.detail)});case"shape-fill":return i("kritzel-shape-fill",{key:t.type,value:this.getShapeFillValue(),onValueChange:e=>this.handlePropertyChange(t.propertyName,e.detail)});case"font-family":return i("kritzel-font-family",{key:t.type,selectedFontFamily:e,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,e=this.palette.length>0,r=this.config.controls.find((t=>"stroke-size"===t.type||"font-size"===t.type)),o=this.config.controls.filter((t=>"stroke-size"!==t.type&&"font-size"!==t.type));return i(n,null,i("div",{style:{display:"flex",flexDirection:"row",gap:"8px",width:"100%"}},i("div",{style:{display:"flex",flexDirection:"column",gap:"12px",flex:"1"}},e&&i("kritzel-color-palette",{colors:this.palette,selectedColor:this.tool[this.config.colorProperty],isExpanded:this.isExpanded,isOpaque:!0,opacity:this.currentOpacity,theme:this.theme,onColorChange:this.handleColorChange}),r&&this.renderControl(r),i("kritzel-opacity-slider",{value:this.tool[this.config.opacityProperty],previewColor:this.tool[this.config.colorProperty],onValueChange:this.handleOpacityChange}),o.map((t=>[i("div",{class:"divider"}),this.renderControl(t)]))),t&&i("div",{style:{display:"flex",alignItems:"flex-start"}},i("button",{class:"expand-toggle",onClick:this.handleToggleExpand,title:this.isExpanded?"Collapse":"Expand"},i("kritzel-icon",{name:this.isExpanded?"chevron-up":"chevron-down"})))))}static get watchers(){return{tool:[{handleToolChange:0}],theme:[{onThemeChange:0}]}}};Ce.style=".expand-toggle{background:none;border:none;cursor:var(--kritzel-global-pointer-cursor, pointer);padding:0;margin:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--kritzel-icon-color, currentColor);transition:transform 0.2s ease}.expand-toggle:hover{opacity:0.7}.expand-toggle:focus{outline:none}.expand-toggle:focus-visible{outline:2px solid var(--kritzel-focus-color, #007acc);outline-offset:2px}.expand-toggle:active{transform:scale(0.95)}.divider{height:1px;background-color:var(--kritzel-divider-color, #e0e0e0);margin:4px 0;width:100%}";const Se=class{constructor(i){t(this,i),this.tooltipClosed=e(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())}handleOutsidePointerDown(t){this.isVisible&&(t.composedPath().some((t=>t===this.host))||(t.stopPropagation(),t.preventDefault(),this.tooltipClosed.emit()))}handleWindowResize(){this.calculateAdjustedPosition()}async focusContent(){const t=Q.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 i(n,{key:"d23199ba12acd84fe7fb7a3e133a6605b175bcec",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`}},i("div",{key:"030ca8a36358b78ba726f7406e76cea16a4e75e9",class:"tooltip-content",onClick:t=>t.stopPropagation(),onPointerDown:t=>t.stopPropagation(),onMouseDown:t=>t.stopPropagation()},i("slot",{key:"148ed867ee7962487d38f82e6d37b8599a7158af"})))}};Se.style=":host{width:auto}.tooltip-content{position:relative;padding:8px 12px;border-radius:4px;width:fit-content;background-color:var(--kritzel-tooltip-background-color, #ffffff);color:var(--kritzel-tooltip-color, #000000);padding:var(--kritzel-tooltip-padding, 12px);border:var(--kritzel-tooltip-border, 1px solid #ebebeb);border-radius:var(--kritzel-tooltip-border-radius, 16px);white-space:nowrap;box-shadow:var(--kritzel-tooltip-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12))}";const Me=class{constructor(i){t(this,i),this.undo=e(this,"undo"),this.redo=e(this,"redo"),this.delete=e(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 i(n,{key:"868bce69f28eb804ad8264f87a33cb57dfc1809f"},i("button",{key:"adf0a327d78b2914c97dcf15fdbb6e9d658a7156",class:"utility-button",disabled:!this.undoState?.canUndo,onClick:t=>this.handleUndo(t)},i("kritzel-icon",{key:"eb02919a5f5922e2d76348e21b19fb0c358cadf4",name:"undo"})),i("button",{key:"7d1ecb16206365bef265a3d71d1c7a51a2cc6c64",class:"utility-button",disabled:!this.undoState?.canRedo,onClick:t=>this.handleRedo(t)},i("kritzel-icon",{key:"5a2e67ae291e3b48bb2bc8ba0ef82dc1516d5b1a",name:"redo"})),i("div",{key:"4dcf9b9b165efbeed4be9f39425ad060d6b5e6a0",class:"utility-separator"}),i("button",{key:"edf05f3fed499f455e74c4f09cf5029bc4abc1a8",class:"utility-button"},i("kritzel-icon",{key:"2a3e0392986f59d1884face1d01dd00493d7a3b6",name:"delete",onClick:()=>this.delete.emit()})))}};Me.style=":host{display:flex;flex-direction:row;align-items:center;padding:4px;gap:8px;border-top-left-radius:12px;border-top-right-radius:12px;background-color:var(--kritzel-utility-panel-background-color, #e2e2e2);width:fit-content;user-select:none}.utility-button{display:flex;justify-content:center;align-items:center;width:28px;height:28px;padding:8px 4px;border:none;background:none;cursor:var(--kritzel-global-pointer-cursor, pointer);color:var(--kritzel-utility-panel-button-color, #333333);--kritzel-icon-color:var(--kritzel-utility-panel-button-color, #333333);-webkit-tap-highlight-color:transparent;border-radius:var(--kritzel-utility-panel-button-border-radius, 8px)}.utility-button:hover,.utility-button:focus-visible{background-color:var(--kritzel-utility-panel-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.utility-button:disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}.utility-separator{width:1px;height:16px;background-color:var(--kritzel-utility-panel-separator-color, hsl(0, 0%, 0%, 8%))}";const Ie=class{constructor(i){t(this,i),this.isWorkspaceManagerReady=e(this,"isWorkspaceManagerReady"),this.workspaceChange=e(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(){await customElements.whenDefined("kritzel-engine");const t=this.host.closest("kritzel-editor");this.kritzelEngineRef=t?.querySelector("kritzel-engine")??null,this.kritzelEngineRef||console.warn("kritzel-engine not found in kritzel-editor.")}async select(t,e){this.editingItemId||(t.action?t.action(t,e):this.workspaceChange.emit(t.value))}async add(){await this.splitButtonRef.open(),this.newWorkspace=new z(U.generateUUID(),"New Workspace"),this.editingItemId=this.newWorkspace.id}edit(t){this.openChildMenuItem=null,this.childMenuAnchor=null,requestAnimationFrame((()=>{this.editingItemId=t.id}))}async save(t){if(this.newWorkspace)this.newWorkspace.name=t.label,await(this.kritzelEngineRef?.createWorkspace(this.newWorkspace)),this.workspaceChange.emit(this.newWorkspace);else{const e=t.value;e.name=t.label,await(this.kritzelEngineRef?.updateWorkspace(e))}this.editingItemId=null,this.newWorkspace=null}cancel(){this.newWorkspace=null,this.editingItemId=null}async delete(t){this.openChildMenuItem=null,this.childMenuAnchor=null,await(this.kritzelEngineRef?.deleteWorkspace(t.value)),t.value.id===this.activeWorkspace?.id&&(this.activeWorkspace=this.sortedWorkspaces.find((e=>e.id!==t.value.id))||null,this.workspaceChange.emit(this.activeWorkspace)),await this.splitButtonRef.focusMenu()}toggleChildMenu(t,e){this.openChildMenuItem=t,this.childMenuAnchor=e}closeChildMenu(){this.openChildMenuItem=null,this.childMenuAnchor=null}handleMenuOpen(){}handleMenuClose(){this.cancel(),this.closeChildMenu()}render(){const t=this.sortedWorkspaces.sort(((t,e)=>e.createdAt.getTime()-t.createdAt.getTime())).filter((t=>null!==t)).map((t=>({id:t.id,label:t.name,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 i(n,null,i("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()}))}};Ie.style=":host{display:flex;flex-direction:column;z-index:1}";export{H as kritzel_back_to_content,N as kritzel_color,Y as kritzel_color_palette,q as kritzel_context_menu,Z as kritzel_controls,J as kritzel_cursor_trail,tt as kritzel_dialog,et as kritzel_dropdown,ot as kritzel_editor,ne as kritzel_engine,re as kritzel_export,oe as kritzel_font,se as kritzel_font_family,ae as kritzel_font_size,le as kritzel_icon,ce as kritzel_line_endings,he as kritzel_master_detail,ue as kritzel_menu,de as kritzel_menu_item,fe as kritzel_more_menu,pe as kritzel_numeric_input,be as kritzel_opacity_slider,ge as kritzel_portal,me as kritzel_settings,ye as kritzel_shape_fill,xe as kritzel_slide_toggle,we as kritzel_split_button,ze as kritzel_stroke_size,Ce as kritzel_tool_config,Se as kritzel_tooltip,Me as kritzel_utility_panel,Ie as kritzel_workspace_manager}