kritzel-stencil 0.1.12 → 0.1.13

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 (47) hide show
  1. package/dist/cjs/kritzel-back-to-content_32.cjs.entry.js +15 -26
  2. package/dist/collection/components/shared/kritzel-dialog/kritzel-dialog.css +4 -8
  3. package/dist/collection/components/shared/kritzel-dialog/kritzel-dialog.js +1 -7
  4. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.css +4 -8
  5. package/dist/collection/components/shared/kritzel-master-detail/kritzel-master-detail.js +5 -11
  6. package/dist/collection/components/shared/kritzel-menu/kritzel-menu.css +5 -0
  7. package/dist/collection/components/shared/kritzel-menu-item/kritzel-menu-item.css +5 -0
  8. package/dist/collection/components/ui/kritzel-controls/kritzel-controls.css +2 -0
  9. package/dist/collection/components/ui/kritzel-export/kritzel-export.css +5 -0
  10. package/dist/collection/constants/version.js +1 -1
  11. package/dist/collection/helpers/html.helper.js +2 -1
  12. package/dist/components/kritzel-controls.js +1 -1
  13. package/dist/components/kritzel-dialog.js +1 -1
  14. package/dist/components/kritzel-editor.js +1 -1
  15. package/dist/components/kritzel-export.js +1 -1
  16. package/dist/components/kritzel-master-detail.js +1 -1
  17. package/dist/components/kritzel-menu-item.js +1 -1
  18. package/dist/components/kritzel-menu.js +1 -1
  19. package/dist/components/kritzel-more-menu.js +1 -1
  20. package/dist/components/kritzel-portal.js +1 -1
  21. package/dist/components/kritzel-settings.js +1 -1
  22. package/dist/components/kritzel-split-button.js +1 -1
  23. package/dist/components/kritzel-tooltip.js +1 -1
  24. package/dist/components/kritzel-workspace-manager.js +1 -1
  25. package/dist/components/p-9VVxMmQY.js +1 -0
  26. package/dist/components/{p--aa4aJEU.js → p-B6UZznNo.js} +1 -1
  27. package/dist/components/p-BML28BJR.js +1 -0
  28. package/dist/components/p-BtGrZ0-u.js +1 -0
  29. package/dist/components/{p-zoMPunTt.js → p-C2cNCqzd.js} +1 -1
  30. package/dist/components/{p-BVGy2ETQ.js → p-C40Eqc_i.js} +1 -1
  31. package/dist/components/p-C7GNWyf2.js +1 -0
  32. package/dist/components/{p-BvoIoyaZ.js → p-C8jozyvo.js} +1 -1
  33. package/dist/components/{p-BbC4EJrJ.js → p-CES8uS8D.js} +1 -1
  34. package/dist/components/{p-CXGqvg3q.js → p-CEYFDak6.js} +1 -1
  35. package/dist/components/{p-DB-e1jRv.js → p-CSWxqKCC.js} +1 -1
  36. package/dist/components/{p-Dm9n3RrJ.js → p-DgMrqt6e.js} +1 -1
  37. package/dist/esm/kritzel-back-to-content_32.entry.js +15 -26
  38. package/dist/stencil/p-d7771432.entry.js +9 -0
  39. package/dist/stencil/stencil.esm.js +1 -1
  40. package/dist/types/components/shared/kritzel-dialog/kritzel-dialog.d.ts +0 -1
  41. package/dist/types/constants/version.d.ts +1 -1
  42. package/package.json +1 -1
  43. package/dist/components/p-6yo07JPM.js +0 -1
  44. package/dist/components/p-Bz_LzbTD.js +0 -1
  45. package/dist/components/p-C6qB08BS.js +0 -1
  46. package/dist/components/p-DCFa1WDS.js +0 -1
  47. package/dist/stencil/p-b740c167.entry.js +0 -9
@@ -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{Z as o,_ as s,$ as a,a0 as l,a1 as c,R as u,J as h,L as d,P as f,a2 as p,a3 as b,a4 as g,W as v,Y as k,M as m,X as y,N as x,U as w,a5 as z,a6 as C,a7 as S,a8 as M,a9 as I,aa as j,I as _,F as T,K as E,G as F,E as A,ab as O,ac as D,ad as $,Q as R,T as P,V as W,ae as L,af as V}from"./p-cZLDi3SD.js";var U="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};const K=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"})))}};K.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-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 B=class{constructor(e){t(this,e)}value;size=24;isLightColor(t){if(!t)return!1;let e=0,i=0,n=0,r=t.startsWith("#")?t.slice(1):t;if(3===r.length)e=parseInt(r[0]+r[0],16),i=parseInt(r[1]+r[1],16),n=parseInt(r[2]+r[2],16);else{if(6!==r.length)return!1;e=parseInt(r.substring(0,2),16),i=parseInt(r.substring(2,4),16),n=parseInt(r.substring(4,6),16)}return!(isNaN(e)||isNaN(i)||isNaN(n))&&.299*e+.587*i+.114*n>220}render(){const t=this.isLightColor(this.value);return i(n,{key:"749d065e3000df735e4499f0cf626d2650495df6"},i("div",{key:"6c15f125975214d1a884cb5bbcb1d91490379bcd",class:"checkerboard-bg",style:{width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",display:"inline-block",position:"relative"}},i("div",{key:"675ce841b82a7dec445dcfb91c1948701f1976db",class:{"color-circle":!0,white:t},style:{backgroundColor:this.value,width:`${this.size}px`,height:`${this.size}px`,borderRadius:"50%",position:"absolute",top:"0",left:"0",display:"inline-block"}})))}};B.style=":host{display:flex}.checkerboard-bg{background:repeating-conic-gradient(#ccc 0% 25%, #fff 0% 50%) 50% / 8px 8px;position:relative;overflow:hidden}.color-circle{width:24px;height:24px;border-radius:50%;box-sizing:border-box;display:block}.color-circle.white{border:1px solid var(--kritzel-color-palette-circle-border-color, #dddcdc)}";class N{static applyOpacity(t,e){if(e>=1)return t;const i=t.startsWith("#")?t.slice(1):t;let n,r,o;if(3===i.length)n=parseInt(i[0]+i[0],16),r=parseInt(i[1]+i[1],16),o=parseInt(i[2]+i[2],16);else{if(6!==i.length)return t;n=parseInt(i.substring(0,2),16),r=parseInt(i.substring(2,4),16),o=parseInt(i.substring(4,6),16)}return isNaN(n)||isNaN(r)||isNaN(o)?t:`rgba(${n}, ${r}, ${o}, ${e})`}}const H=class{constructor(i){t(this,i),this.colorChange=e(this,"colorChange")}colors=[];selectedColor=null;isExpanded=!1;isOpaque=!1;opacity=1;colorChange;handleColorClick(t){this.selectedColor=t,this.colorChange.emit(t)}handleKeyDown(t,e){"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),this.handleColorClick(e))}calculateHeight(){const t=Math.ceil(this.colors.length/6);return 32*t+8*(t-1)+"px"}render(){const t=this.isExpanded?this.colors:this.colors.slice(0,6),e=this.isExpanded?this.calculateHeight():"32px";return i(n,{key:"90f5bf8072c5693984810b66a66adf33123f9ae5"},i("div",{key:"875a20365c88af17d689ba8ddaaa3201f2533ab8",class:{"color-grid":!0,expanded:this.isExpanded},style:{height:e}},t.map((t=>i("div",{tabIndex:0,class:{"color-container":!0,selected:this.selectedColor===t},onClick:()=>this.handleColorClick(t),onKeyDown:e=>this.handleKeyDown(e,t)},i("kritzel-color",{value:N.applyOpacity(t,this.opacity)}))))))}};H.style=":host{display:flex;align-items:flex-start;gap:8px;padding:0;width:100%;box-sizing:border-box}.color-grid{width:100%;display:grid;grid-template-columns:repeat(6, 32px);gap:8px;justify-items:center;overflow:hidden;height:40px;transition:height 0.1s ease-in-out}.color-grid.expanded{height:500px}.color-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box}.color-container:hover{background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.color-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-color-palette-selected-background-color)}";const Y=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}]}}};Y.style=":host{display:block}.menu-container{display:flex;flex-direction:column;background-color:var(--kritzel-context-menu-background-color, #ffffff);border-radius:var(--kritzel-context-menu-border-radius, 12px);box-shadow:var(--kritzel-context-menu-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12));border:var(--kritzel-context-menu-border, 1px solid #ebebeb);padding:var(--kritzel-context-menu-padding,4px)}.menu-item{display:flex;align-items:center;gap:var(--kritzel-context-menu-item-gap, 8px);background:none;border:none;text-align:left;padding:var(--kritzel-context-menu-item-padding, 8px);border-radius:var(--kritzel-context-menu-item-border-radius, 12px);cursor:var(--kritzel-pointer-cursor, pointer);font-size:var(--kritzel-context-menu-item-font-size, 14px);color:var(--kritzel-context-menu-item-color, #333333);white-space:nowrap;-webkit-tap-highlight-color:transparent}.menu-item:not(.disabled):hover{background-color:var(--kritzel-context-menu-item-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.menu-item:not(.disabled):active{background-color:var(--kritzel-context-menu-item-active-background-color, hsl(0, 0%, 0%, 8.6%))}.menu-item.disabled{color:var(--kritzel-context-menu-item-disabled-color, #aaaaaa)}.menu-item kritzel-icon{opacity:0.8;flex-shrink:0}.menu-item.disabled kritzel-icon{opacity:0.4}.label{flex-grow:1}";class q extends o{shapeType=s.Rectangle;fillColor="transparent";strokeColor="#000000";strokeWidth=4;opacity=1;fontFamily="Arial";fontSize=16;fontColor="#000000";palette=["#000000","#FFFFFF","#FF0000","#00FF00","#0000FF","#FFFF00","#FF00FF","#00FFFF","#808080","#C0C0C0","#800000","#008000","#000080","#808000","#800080"];startX=0;startY=0;isDrawing=!1;currentShape=null;constructor(t){super(t)}handlePointerDown(t){if(t.cancelable&&t.preventDefault(),"mouse"===t.pointerType){const e=t.composedPath().slice(1).find((t=>t.classList&&t.classList.contains("object"))),i=this._core.findObjectById(e?.id),n=this._core.store.activeShape;if(null===n&&i instanceof a)return void i.edit(t);if(null!==n&&i instanceof a)return n.save(),void i.edit(t);if(null!==n&&i instanceof a==0)return this._core.resetActiveShape(),void this._core.store.setState("activeTool",l.getTool("selection"));if(!1===c.isLeftClick(t))return;this.startDrawing(t.clientX,t.clientY)}if("touch"===t.pointerType){const e=Array.from(this._core.store.state.pointers.values()),i=t.composedPath().slice(1).find((t=>t.classList&&t.classList.contains("object"))),n=this._core.findObjectById(i?.id),r=this._core.store.activeShape;if(null===r&&n instanceof a)return void n.edit(t);if(null!==r&&n instanceof a)return r.save(),void n.edit(t);if(null!==r&&n instanceof a==0)return this._core.resetActiveShape(),void this._core.store.setState("activeTool",l.getTool("selection"));if(e.length>1)return;const o=Math.round(e[0].clientX),s=Math.round(e[0].clientY);this.startDrawing(o,s)}}handlePointerMove(t){if(t.cancelable&&t.preventDefault(),this.isDrawing&&this.currentShape&&("mouse"===t.pointerType&&this.updateShapeSize(t.clientX,t.clientY),"touch"===t.pointerType)){const t=Array.from(this._core.store.state.pointers.values());if(1===t.length){const e=Math.round(t[0].clientX),i=Math.round(t[0].clientY);this.updateShapeSize(e,i)}}}handlePointerUp(t){t.cancelable&&t.preventDefault(),this.isDrawing&&this.currentShape&&this.finishDrawing()}startDrawing(t,e){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=a.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,fontColor:this.fontColor,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",l.getTool("selection"));this.isDrawing=!1,this.currentShape=null,this._core.rerender()}}}class G{static getToolConfig(t){return t instanceof u?t.getToolConfig():t instanceof h?{type:"brush",colorProperty:"color",sizeProperty:"size",opacityProperty:"opacity",paletteSource:"palette",controls:[{type:"stroke-size",propertyName:"size"}]}:t instanceof d?{type:"line",colorProperty:"color",sizeProperty:"size",opacityProperty:"opacity",paletteSource:"palette",controls:[{type:"stroke-size",propertyName:"size"},{type:"line-endings",propertyName:"arrows",additionalProps:{}}]}:t instanceof q?{type:"shape",colorProperty:"strokeColor",sizeProperty:"strokeWidth",opacityProperty:"opacity",paletteSource:"palette",controls:[{type:"stroke-size",propertyName:"strokeWidth"},{type:"shape-fill",propertyName:"fillColor",additionalProps:{}}]}:t instanceof f?{type:"text",colorProperty:"fontColor",sizeProperty:"fontSize",opacityProperty:"opacity",paletteSource:"palette",controls:[{type:"font-size",propertyName:"fontSize",additionalProps:{}},{type:"font-family",propertyName:"fontFamily"}]}:null}}const X=class{constructor(i){t(this,i),this.isControlsReady=e(this,"isControlsReady")}get host(){return r(this)}controls=[];activeControl=null;isUtilityPanelVisible=!0;undoState=null;isControlsReady;firstConfig=null;isTooltipVisible=!1;isTouchDevice=p.isTouchDevice();selectedSubOptions=new Map;openSubMenuControl=null;canScrollLeft=!1;canScrollRight=!1;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)}handleSelectionChange(){this.activeControl?.tool instanceof u&&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=G.getToolConfig(t);if(!e)return void(this.displayValues=null);const i=t[e.sizeProperty],n={color:N.applyOpacity(t[e.colorProperty],t[e.opacityProperty]??1),size:i};t instanceof f&&(n.fontFamily=t.fontFamily),this.displayValues&&this.displayValues.color===n.color&&this.displayValues.size===n.size&&this.displayValues.fontFamily===n.fontFamily||(this.displayValues=n)}async componentWillLoad(){await this.initializeEngine(),await this.initializeTools(),this.isControlsReady.emit()}componentDidLoad(){this.updateScrollIndicators()}updateScrollIndicators(){if(!this.toolsScrollRef)return;const{scrollLeft:t,scrollWidth:e,clientWidth:i}=this.toolsScrollRef;this.canScrollLeft=t>2,this.canScrollRight=t+i<e-2,this.needsScrolling=e>i}handleToolsScroll=()=>{this.updateScrollIndicators()};async initializeEngine(){if(await customElements.whenDefined("kritzel-engine"),this.kritzelEngine=this.host.parentElement.querySelector("kritzel-engine"),!this.kritzelEngine)throw new Error("kritzel-engine not found in parent element.")}async initializeTools(){for(const t of this.controls)"tool"===t.type&&t.tool&&(t.tool=await this.kritzelEngine.registerTool(t.name,t.tool,t.config)),"tool"===t.type&&t.isDefault&&t.tool&&(await this.kritzelEngine.changeActiveTool(t.tool),this.activeControl=t,this.updateDisplayValues(t.tool)),"config"===t.type&&(null===this.firstConfig?this.firstConfig=t:console.warn("Only one config control is allowed. The first one will be used."))}async handleControlClick(t){this.activeControl=t,"tool"===this.activeControl.type&&(this.updateDisplayValues(this.activeControl.tool),await this.kritzelEngine.changeActiveTool(this.activeControl.tool))}handleConfigClick(t){t.stopPropagation(),this.isTooltipVisible=!this.isTooltipVisible,this.isTooltipVisible?this.kritzelEngine?.disable():this.kritzelEngine?.enable(),setTimeout((()=>{this.tooltipRef?.focusContent()}),100)}async handleToolChange(t){this.activeControl={...this.activeControl,tool:t.detail},await this.kritzelEngine.changeActiveTool(this.activeControl.tool)}handleTooltipClosed(){this.isTooltipVisible=!1,this.kritzelEngine?.enable()}getSelectedSubOption(t){if(t.subOptions?.length)return this.selectedSubOptions.get(t.name)||t.subOptions[0]}toggleSubMenu(t,e){t.stopPropagation(),this.openSubMenuControl=this.openSubMenuControl?.name===e.name?null:e}async selectSubOption(t,e){const i=new Map(this.selectedSubOptions);i.set(t.name,e),this.selectedSubOptions=i,t.tool&&"function"!=typeof t.tool&&(t.tool[e.toolProperty]=e.value),this.openSubMenuControl=null,await this.handleControlClick(t)}render(){const t=this.activeControl?.tool instanceof h||this.activeControl?.tool instanceof f||this.activeControl?.tool instanceof d||this.activeControl?.tool instanceof q||this.activeControl?.tool instanceof u&&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:"2a96690d91dc61301b88ad6869944c6a967f84c0",class:{mobile:this.isTouchDevice}},this.isUtilityPanelVisible&&i("kritzel-utility-panel",{key:"de4adca1a4067767062357b1ec9399bd3b4a1120",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:"8bdd03a0f6e830c23c71b567116102c80fb1078d",class:"kritzel-controls"},i("div",{key:"42cd7de6aa6402d3599a5565c866b63bdd441052",class:{"scroll-indicator-left":!0,visible:this.canScrollLeft}}),i("div",{key:"3e6ccb6f818218582ce3275a68068d8a51703e33",class:"kritzel-tools-scroll",ref:t=>{this.toolsScrollRef=t,t&&this.updateScrollIndicators()},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:"74644e3208248737d782fb0da927c793dd300b21",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:"9870a55579c1e43f8463aac4031860bf1394e1e3",class:{"config-gradient-left":!0,visible:this.needsScrolling}}),i("kritzel-tooltip",{key:"1c1a5161a6f1a85b528c0f3331a72abbe4ebe46e",ref:t=>this.tooltipRef=t,isVisible:this.isTooltipVisible,anchorElement:this.host.shadowRoot?.querySelector(".kritzel-config-container"),onTooltipClosed:()=>this.handleTooltipClosed()},i("kritzel-tool-config",{key:"3e31d93ed47910c3ba8bbe1eb4be44f2be88bae6",tool:this.activeControl.tool,onToolChange:t=>this.handleToolChange?.(t),onDisplayValuesChange:this.handleDisplayValuesChange,style:{width:"100%",height:"100%"}})),i("div",{key:"80d8b0f4fa2c8bcf111567c09204275814fe6246",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 f&&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,size:this.displayValues.size,style:{borderRadius:"50%",border:"none"}}))))))}static get assetsDirs(){return["../assets"]}};X.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-pointer-cursor, pointer);-webkit-tap-highlight-color:transparent;font-weight:bold}.kritzel-control:focus,.kritzel-control:hover{background-color:var(--kritzel-controls-control-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.kritzel-control:active{background-color:var(--kritzel-controls-control-active-background-color, hsl(0, 0%, 0%, 8.6%))}.kritzel-control.selected,.kritzel-control.selected:hover,.kritzel-control.selected:active{background-color:var(--kritzel-controls-control-selected-background-color, #007AFF) !important;color:var(--kritzel-controls-control-selected-color, #ffffff) !important}.kritzel-control.selected:focus{background-color:var(--kritzel-controls-control-selected-background-color, #007bffe3) !important}.kritzel-control-split{position:relative;display:flex;align-items:center;border-radius:var(--kritzel-controls-control-border-radius, 12px);color:var(--kritzel-controls-control-color, #000000)}.kritzel-control-split .kritzel-control-main{display:flex;justify-content:center;align-items:center;padding:var(--kritzel-controls-control-padding, 8px);border:none;background:none;cursor:var(--kritzel-pointer-cursor, pointer);-webkit-tap-highlight-color:transparent;border-radius:var(--kritzel-controls-control-border-radius, 12px);color:inherit}.kritzel-control-split.selected .kritzel-control-main{border-radius:var(--kritzel-controls-control-border-radius, 12px) 0 0 var(--kritzel-controls-control-border-radius, 12px)}.kritzel-control-split .kritzel-control-dropdown{display:flex;justify-content:center;align-items:center;align-self:stretch;border:none;background:none;cursor:var(--kritzel-pointer-cursor, pointer);-webkit-tap-highlight-color:transparent;border-radius:0 var(--kritzel-controls-control-border-radius, 12px) var(--kritzel-controls-control-border-radius, 12px) 0;color:inherit;width:0;padding:0;opacity:0;overflow:hidden;pointer-events:none;transition:width 0.15s ease-out, padding 0.15s ease-out, opacity 0.15s ease-out}.kritzel-control-split .kritzel-control-dropdown.visible{width:auto;padding:0 6px;opacity:1;pointer-events:auto}.kritzel-control-split .kritzel-control-main:focus,.kritzel-control-split .kritzel-control-main:hover,.kritzel-control-split .kritzel-control-dropdown:focus,.kritzel-control-split .kritzel-control-dropdown:hover{background-color:var(--kritzel-controls-control-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.kritzel-control-split .kritzel-control-main:active,.kritzel-control-split .kritzel-control-dropdown:active{background-color:var(--kritzel-controls-control-active-background-color, hsl(0, 0%, 0%, 8.6%))}.kritzel-control-split.selected{background-color:var(--kritzel-controls-control-selected-background-color, #007AFF) !important;color:var(--kritzel-controls-control-selected-color, #ffffff) !important}.kritzel-control-split.selected .kritzel-control-main:hover,.kritzel-control-split.selected .kritzel-control-dropdown:hover{background-color:rgba(255, 255, 255, 0.15)}.kritzel-submenu-content{display:flex;flex-direction:column;gap:var(--kritzel-submenu-gap, 4px);min-width:140px}.kritzel-submenu-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:none;background:none;cursor:var(--kritzel-pointer-cursor, pointer);border-radius:8px;color:var(--kritzel-controls-control-color, #000000);font-size:14px;text-align:left;white-space:nowrap;-webkit-tap-highlight-color:transparent}.kritzel-submenu-item:hover{background-color:var(--kritzel-controls-control-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.kritzel-submenu-item.active{background-color:var(--kritzel-controls-control-selected-background-color, #007AFF);color:var(--kritzel-controls-control-selected-color, #ffffff)}.kritzel-submenu-item.active:hover{background-color:var(--kritzel-controls-control-selected-background-color, #007AFF)}.kritzel-config-container{position:relative;display:flex;justify-content:center;align-items:center;height:40px;box-sizing:border-box;-webkit-tap-highlight-color:transparent;flex-shrink:0;width:0;opacity:0;overflow:hidden;pointer-events:none;margin-left:calc(-1 * var(--kritzel-controls-gap, 8px));transition:width 0.2s ease-out, opacity 0.2s ease-out, margin-left 0.2s ease-out}.kritzel-config-container.visible{width:40px;opacity:1;pointer-events:auto;margin-left:0;overflow:visible}.config-gradient-left{position:absolute;top:0;bottom:0;left:-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-pointer-cursor, pointer);border-radius:50%}.color-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.font-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;background-color:var(--kritzel-color-palette-hover-background-color, #ebebeb)}.no-config{height:24px;width:24px;border-radius:50%;border:1px dashed gray}kritzel-tooltip{z-index:10001}";const Z=class{constructor(e){t(this,e)}core;cursorTrailPoints=[];isLeftButtonDown=!1;handleMouseDown(t){"mouse"===t.pointerType&&t.button===b.Left&&(this.isLeftButtonDown=!0,this.cursorTrailPoints=[]),"touch"===t.pointerType&&1===this.core.store.state.pointers.size&&(this.isLeftButtonDown=!0,this.cursorTrailPoints=[])}handlePointerMove(t){if(!this.isLeftButtonDown)return;const e=[{x:t.clientX,y:t.clientY,timestamp:Date.now()},...this.cursorTrailPoints];this.cursorTrailPoints=e.length>this.MAX_TRAIL_POINTS?e.slice(0,this.MAX_TRAIL_POINTS):e}handlePointerUp(t){"mouse"===t.pointerType&&t.button===b.Left&&(this.isLeftButtonDown=!1,this.cursorTrailPoints=[]),"touch"===t.pointerType&&0===this.core.store.state.pointers.size&&(this.isLeftButtonDown=!1,this.cursorTrailPoints=[])}trailCleanupIntervalId;TRAIL_DURATION_MS=100;MAX_TRAIL_POINTS=50;componentDidLoad(){this.trailCleanupIntervalId=window.setInterval((()=>{const t=Date.now(),e=this.cursorTrailPoints.filter((e=>t-e.timestamp<this.TRAIL_DURATION_MS));e.length!==this.cursorTrailPoints.length&&(this.cursorTrailPoints=e)}),50)}disconnectedCallback(){this.trailCleanupIntervalId&&window.clearInterval(this.trailCleanupIntervalId)}render(){return 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"})}))))}};Z.style=":host{display:block;position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:9000}";class J{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 Q=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=[...J.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=J.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}]}}};Q.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-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:#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 tt=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()}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:"29d076eb2ef76527c0930ab82ace0d05c896ab6c"},i("div",{key:"1afac5cc0b7f408849670b8cb62fe0bd0f3b27f1",class:"dropdown-wrapper",ref:t=>this.wrapperElement=t},i("slot",{key:"3cfcf787c3b3eedbd6bf30c7506a0a4912429672",name:"prefix",ref:t=>this.prefixSlotElement=t,onSlotchange:this.evaluatePrefixContent}),i("div",{key:"b88120ed3e44871220e6ba61e8bef457651a2086",class:"dropdown-container",style:{width:this.width}},i("button",{key:"79082189066f3d0b4f5797420ec222847792fe52",type:"button",class:t,style:{...this.selectStyles,...this.getSelectedStyle()},onClick:this.toggleMenu,onKeyDown:this.handleTriggerKeyDown,"aria-haspopup":"listbox","aria-expanded":this.isOpen?"true":"false",ref:t=>this.triggerElement=t},i("span",{key:"a490bb6689ec1820144fe82f6833bee82e6ead0e",class:"dropdown-trigger-label"},this.getSelectedLabel()),i("span",{key:"8bd7768f6fdd3c507bbca54d7d135adabe04901f",class:"dropdown-trigger-arrow","aria-hidden":"true"},i("svg",{key:"e1b854d2c93e3067181108f8d782e1393ddb615c",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},i("polyline",{key:"3622cbf8964f4e50aa55be5209240dfd252f1d84",points:"6 9 12 15 18 9"}))))),i("slot",{key:"b91317736904cbeee0f87058b822bd77c6b163ca",name:"suffix",ref:t=>this.suffixSlotElement=t,onSlotchange:this.evaluateSuffixContent}),i("ul",{key:"0ca8690345974e9b7ad184f4c7ab7cf5367b183c",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}]}}};tt.style=":host{display:inline-flex;vertical-align:middle;width:100%;position:relative}.dropdown-wrapper{display:flex;align-items:center;border:1px solid #333333;border-radius:var(--kritzel-controls-control-border-radius, 12px);overflow:visible;height:32px;width:100%;position:relative}.dropdown-container{flex:1;height:100%;min-width:0}.dropdown-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 8px;height:100%;width:100%;box-sizing:border-box;border-radius:var(--kritzel-controls-control-border-radius, 12px);border:none;background-color:#fff;cursor:var(--kritzel-pointer-cursor, pointer);outline:none;font-size:inherit;font-family:inherit;color:var(--kritzel-controls-text-color, #333333);-webkit-tap-highlight-color:transparent;text-align:left}.dropdown-trigger:focus-visible{outline:revert}.dropdown-trigger.has-suffix-border{border-right:1px solid #333333;border-top-right-radius:0;border-bottom-right-radius:0}.dropdown-trigger.has-prefix-border{border-left:1px solid #333333;border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-trigger-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.dropdown-trigger-arrow{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;transition:transform 0.2s ease}.dropdown-trigger-arrow svg{width:100%;height:100%}.dropdown-trigger.is-open .dropdown-trigger-arrow{transform:rotate(180deg)}.dropdown-trigger.is-open.open-up .dropdown-trigger-arrow{transform:rotate(0deg)}.dropdown-menu{position:absolute;left:0;right:0;margin:0;padding:4px 0;list-style:none;background-color:#fff;border:1px solid #333333;border-radius:var(--kritzel-controls-control-border-radius, 12px);box-shadow:0 4px 12px rgba(0, 0, 0, 0.15);z-index:1000;max-height:240px;overflow-y:auto;opacity:0;visibility:hidden;transition:opacity 0.15s ease, transform 0.15s ease, visibility 0.15s;outline:none}.dropdown-menu.open-down{top:calc(100% + 4px);bottom:auto;transform:translateY(-8px)}.dropdown-menu.open-up{bottom:calc(100% + 4px);top:auto;transform:translateY(8px)}.dropdown-menu.is-open{opacity:1;visibility:visible;transform:translateY(0)}.dropdown-menu.open-up{box-shadow:0 -4px 12px rgba(0, 0, 0, 0.15)}.dropdown-option{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;cursor:var(--kritzel-pointer-cursor, pointer);color:var(--kritzel-dropdown-text-color, #333333);transition:background-color 0.1s ease;-webkit-tap-highlight-color:transparent}.dropdown-option.is-focused{background-color:var(--kritzel-dropdown-hover-bg, #f0f0f0)}.dropdown-option.is-selected{font-weight:600;background-color:var(--kritzel-dropdown-selected-bg, #007bff1a)}.dropdown-option-check{display:flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;color:var(--kritzel-dropdown-accent-color, #007bff)}.dropdown-option-check svg{width:100%;height:100%}.dropdown-menu{scrollbar-color:#ebebeb transparent;scrollbar-width:thin}::slotted(*){height:100%;box-sizing:border-box}";const et={shapeType:s.Rectangle,fillColor:"transparent",strokeColor:"#000000",strokeWidth:4,fontColor:"#000000",fontSize:16,fontFamily:"Arial",palette:[...g]},it=1e3,nt=1e-4,rt=class{constructor(i){t(this,i),this.isReady=e(this,"isReady"),this.objectsChange=e(this,"objectsChange"),this.undoStateChange=e(this,"undoStateChange")}get host(){return r(this)}scaleMax=it;scaleMin=nt;lockDrawingScale=!0;controls=[{name:"selection",type:"tool",isDefault:!0,tool:u,icon:"cursor"},{name:"brush",type:"tool",tool:h,icon:"pen",config:v},{name:"line",type:"tool",tool:d,icon:"arrow",config:k},{name:"eraser",type:"tool",tool:m,icon:"eraser"},{name:"text",type:"tool",tool:f,icon:"type",config:y},{name:"shape",type:"tool",tool:q,icon:"shape-rectangle",config:et,subOptions:[{id:"rectangle",icon:"shape-rectangle",label:"Rectangle",value:s.Rectangle,toolProperty:"shapeType"},{id:"ellipse",icon:"shape-ellipse",label:"Ellipse",value:s.Ellipse,toolProperty:"shapeType"},{id:"triangle",icon:"shape-triangle",label:"Triangle",value:s.Triangle,toolProperty:"shapeType"}]},{name:"image",type:"tool",tool:x,icon:"image"},{name:"config",type:"config"}];globalContextMenuItems=[{label:"Paste",icon:"paste",disabled:async()=>0===(await this.engineRef.getCopiedObjects()).length,action:t=>this.engineRef.paste(t.x,t.y)},{label:"Select All",icon:"select-all",action:()=>this.selectAllObjectsInViewport()}];objectContextMenuItems=[{label:"Copy",icon:"copy",action:()=>this.engineRef.copy()},{label:"Paste",icon:"paste",disabled:async()=>0===(await this.engineRef.getCopiedObjects()).length,action:t=>this.engineRef.paste(t.x,t.y)},{label:"Delete",icon:"delete",action:()=>this.engineRef.delete()},{label:"Bring to Front",icon:"bring-to-front",action:()=>this.engineRef.bringToFront()},{label:"Send to Back",icon:"send-to-back",action:()=>this.engineRef.sendToBack()},{label:"Group",icon:"group",disabled:async()=>(await this.engineRef.getSelectedObjects()).length<2,action:()=>this.engineRef.group()},{label:"Ungroup",icon:"ungroup",disabled:async()=>!(await this.engineRef.getSelectedObjects()).some((t=>"KritzelGroup"===t.__class__)),action:()=>this.engineRef.ungroup()}];customSvgIcons={};isControlsVisible=!0;isUtilityPanelVisible=!0;syncConfig;isReady;objectsChange;undoStateChange;isEngineReady=!1;isControlsReady=!1;isWorkspaceManagerReady=!1;workspaces=[];activeWorkspace;isVirtualKeyboardOpen=!1;undoState=null;isBackToContentButtonVisible=!1;onIsEngineReady(t){t&&this.isControlsReady&&this.checkIsReady()}onIsControlsReady(t){t&&this.isEngineReady&&this.checkIsReady()}onWorkspacesChange(t){if(this.activeWorkspace){const e=t.find((t=>t.id===this.activeWorkspace.id));e&&e!==this.activeWorkspace&&(this.activeWorkspace=e)}}onTouchStart(t){t.cancelable&&t.preventDefault()}async getObjectById(t){return this.engineRef.getObjectById(t)}async addObject(t){return this.engineRef.addObject(t)}async updateObject(t,e){return this.engineRef.updateObject(t,e)}async removeObject(t){return this.engineRef.removeObject(t)}async getSelectedObjects(){return this.engineRef.getSelectedObjects()}async selectObjects(t){return this.engineRef.selectObjects(t)}async selectAllObjectsInViewport(){return this.engineRef.selectAllObjectsInViewport()}async clearSelection(){this.engineRef.clearSelection()}async centerObjectInViewport(t){return this.engineRef.centerObjectInViewport(t)}async backToContent(){return this.engineRef.backToContent()}async createWorkspace(t,e){const i=new w(`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)}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){console.log(t.detail.length),this.isBackToContentButtonVisible=!(t.detail.length>0)}handleSettingsChange(t){this.scaleMin=t.detail.scaleMin,this.scaleMax=t.detail.scaleMax,this.lockDrawingScale=t.detail.lockDrawingScale}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))z.register(t,e)}listenForMobileKeyboard(){C.onKeyboardVisibleChanged((t=>{this.isVirtualKeyboardOpen=t}))}setOsSpecificCssVariables(){switch(p.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:"18113021f28ed340017ed15b3db83f275a1a45e0"},i("div",{key:"75c4fc6fb48133edc3b9b2152c09d1b77dc3efc6",class:"top-left-buttons"},i("kritzel-workspace-manager",{key:"c6a68abaf70ebcf37af1870b832c9a2bd2c984fb",workspaces:this.workspaces,activeWorkspace:this.activeWorkspace,onWorkspaceChange:t=>this.activeWorkspace=t.detail,onIsWorkspaceManagerReady:()=>this.isWorkspaceManagerReady=!0}),i("kritzel-back-to-content",{key:"e2be6fadb0a44dd6cc7a061767bc25b11dde5bf3",visible:this.isBackToContentButtonVisible,onBackToContent:()=>this.backToContent()})),i("kritzel-engine",{key:"16c19e74e9a3bd61845fa3542a5a84a12a3c8a05",ref:t=>this.engineRef=t,workspace:this.activeWorkspace,syncConfig:this.syncConfig,scaleMax:this.scaleMax,lockDrawingScale:this.lockDrawingScale,scaleMin:this.scaleMin,globalContextMenuItems:this.globalContextMenuItems,objectContextMenuItems:this.objectContextMenuItems,onIsEngineReady:t=>this.onEngineReady(t),onWorkspacesChange:t=>this.handleWorkspacesChange(t),onObjectsChange:t=>this.handleObjectsChange(t),onUndoStateChange:t=>this.handleUndoStateChange(t),onObjectsInViewportChange:t=>this.handleObjectsInViewportChange(t)}),i("kritzel-controls",{key:"bb328c89b4ebbcce215e6ddf710126e7a71b5d30",class:{"keyboard-open":this.isVirtualKeyboardOpen},style:{display:this.isControlsVisible?"flex":"none"},ref:t=>this.controlsRef=t,controls:this.controls,isUtilityPanelVisible:this.isUtilityPanelVisible,undoState:this.undoState,onIsControlsReady:()=>this.isControlsReady=!0}),i("div",{key:"e7fd78379d8acc4715605c267aa352430633f6ac",class:"top-right-buttons"},i("kritzel-settings",{key:"13db94ca32cabfbd2d6664c58f55e30fcbf99221",ref:t=>this.settingsRef=t,onSettingsChange:t=>this.handleSettingsChange(t)}),i("kritzel-export",{key:"a7aa9b6ada8b0d47edf418c392d6d04598d36925",ref:t=>this.exportRef=t,onExportPng:()=>this.engineRef.exportViewportAsPng(),onExportSvg:()=>this.engineRef.exportViewportAsSvg()}),i("kritzel-more-menu",{key:"70a1a954f678e6b634d5965b23f570f79824af43",onItemSelect:t=>this.handleMoreMenuItemSelect(t)})))}static get watchers(){return{isEngineReady:[{onIsEngineReady:0}],isControlsReady:[{onIsControlsReady:0}],workspaces:[{onWorkspacesChange:0}]}}};rt.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-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 ot,st,at,lt={exports:{}},ct=(ot||(ot=1,st=lt,at=lt.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,u=[["ary",o],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",r],["partialRight",64],["rearg",256]],h="[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]",_="[object Float32Array]",T="[object Float64Array]",E="[object Int8Array]",F="[object Int16Array]",A="[object Int32Array]",O="[object Uint8Array]",D="[object Uint8ClampedArray]",$="[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,K=/[&<>"']/g,B=RegExp(V.source),N=RegExp(K.source),H=/<%-([\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,lt=/[()=,{}\[\]\/\s]/,ct=/\\(\\)?/g,ut=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ht=/\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+"]",_t="["+xt+"]",Tt="\\d+",Et="["+wt+"]",Ft="["+zt+"]",At="[^"+yt+Mt+Tt+wt+zt+Ct+"]",Ot="\\ud83c[\\udffb-\\udfff]",Dt="[^"+yt+"]",$t="(?:\\ud83c[\\udde6-\\uddff]){2}",Rt="[\\ud800-\\udbff][\\udc00-\\udfff]",Pt="["+Ct+"]",Wt="\\u200d",Lt="(?:"+Ft+"|"+At+")",Vt="(?:"+Pt+"|"+At+")",Ut="(?:['’](?:d|ll|m|re|s|t|ve))?",Kt="(?:['’](?:D|LL|M|RE|S|T|VE))?",Bt="(?:"+_t+"|"+Ot+")?",Nt="["+St+"]?",Ht=Nt+Bt+"(?:"+Wt+"(?:"+[Dt,$t,Rt].join("|")+")"+Nt+Bt+")*",Yt="(?:"+[Et,$t,Rt].join("|")+")"+Ht,qt="(?:"+[Dt+_t+"?",_t,$t,Rt,It].join("|")+")",Gt=RegExp("['’]","g"),Xt=RegExp(_t,"g"),Zt=RegExp(Ot+"(?="+Ot+")|"+qt+Ht,"g"),Jt=RegExp([Pt+"?"+Ft+"+"+Ut+"(?="+[jt,Pt,"$"].join("|")+")",Vt+"+"+Kt+"(?="+[jt,Pt+Lt,"$"].join("|")+")",Pt+"?"+Lt+"+"+Ut,Pt+"+"+Kt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Tt,Yt].join("|"),"g"),Qt=RegExp("["+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[_]=ne[T]=ne[E]=ne[F]=ne[A]=ne[O]=ne[D]=ne[$]=ne[R]=!0,ne[h]=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[h]=re[d]=re[I]=re[j]=re[f]=re[p]=re[_]=re[T]=re[E]=re[F]=re[A]=re[k]=re[m]=re[y]=re[w]=re[z]=re[C]=re[S]=re[O]=re[D]=re[$]=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 U&&U&&U.Object===Object&&U,ce="object"==typeof self&&self&&self.Object===Object&&self,ue=le||ce||Function("return this")(),he=at&&!at.nodeType&&at,de=he&&st&&!st.nodeType&&st,fe=de&&de.exports===he,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 _e(t,e,i){for(var n=-1,r=null==t?0:t.length;++n<r;)if(i(e,t[n]))return!0;return!1}function Te(t,e){for(var i=-1,n=null==t?0:t.length,r=Array(n);++i<n;)r[i]=e(t[i],i,t);return r}function Ee(t,e){for(var i=-1,n=e.length,r=t.length;++i<n;)t[r+i]=e[i];return t}function Fe(t,e,i,n){var r=-1,o=null==t?0:t.length;for(n&&o&&(i=t[++r]);++r<o;)i=e(i,t[r],r,t);return i}function 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 Oe(t,e){for(var i=-1,n=null==t?0:t.length;++i<n;)if(e(t[i],i,t))return!0;return!1}var De=Ue("length");function $e(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?Ne(t,e)/i:l}function Ue(e){return function(i){return null==i?t:i[e]}}function Ke(e){return function(i){return null==e?t:e[i]}}function Be(t,e,i,n,r){return r(t,(function(t,r,o){i=n?(n=!1,t):e(i,t,r,o)})),i}function Ne(e,i){for(var n,r=-1,o=e.length;++r<o;){var s=i(e[r]);s!==t&&(n=n===t?s:n+s)}return n}function He(t,e){for(var i=-1,n=Array(t);++i<t;)n[i]=e(i);return n}function Ye(t){return t?t.slice(0,ui(t)+1).replace(tt,""):t}function qe(t){return function(e){return t(e)}}function Ge(t,e){return Te(e,(function(e){return t[e]}))}function Xe(t,e){return t.has(e)}function Ze(t,e){for(var i=-1,n=t.length;++i<n&&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=Ke({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),ti=Ke({"&":"&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):De(t)}function ci(t){return ii(t)?function(t){return t.match(Zt)||[]}(t):function(t){return t.split("")}(t)}function ui(t){for(var e=t.length;e--&&et.test(t.charAt(e)););return e}var hi=Ke({"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'"}),di=function U(et){var st,at=(et=null==et?ue:di.defaults(ue.Object(),et,di.pick(ue,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=at.prototype,_t=Ct.prototype,Tt=et["__core-js_shared__"],Et=wt.prototype.toString,Ft=_t.hasOwnProperty,At=0,Ot=(st=/[^.]+$/.exec(Tt&&Tt.keys&&Tt.keys.IE_PROTO||""))?"Symbol(src)_1."+st:"",Dt=_t.toString,$t=Et.call(Ct),Rt=ue._,Pt=St("^"+Et.call(Ft).replace(J,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Wt=fe?et.Buffer:t,Lt=et.Symbol,Vt=et.Uint8Array,Ut=Wt?Wt.allocUnsafe:t,Kt=ri(Ct.getPrototypeOf,Ct),Bt=Ct.create,Nt=_t.propertyIsEnumerable,Ht=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!==ue.clearTimeout&&et.clearTimeout,le=yt&&yt.now!==ue.Date.now&&yt.now,ce=et.setTimeout!==ue.setTimeout&&et.setTimeout,he=zt.ceil,de=zt.floor,pe=Ct.getOwnPropertySymbols,be=Wt?Wt.isBuffer:t,De=et.isFinite,Ke=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=Oo(yi),_i=Oo(xi),Ti=Oo(wi),Ei=Oo(zi),Fi=Oo(Ci),Ai=Lt?Lt.prototype:t,Oi=Ai?Ai.valueOf:t,Di=Ai?Ai.toString:t;function $i(t){if(Zs(t)&&!Ls(t)&&!(t instanceof Li)){if(t instanceof Wi)return t;if(Ft.call(t,"__wrapped__"))return Do(t)}return new Wi(t)}var Ri=function(){function e(){}return function(i){if(!Xs(i))return{};if(Bt)return Bt(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 Ki(t){var e=-1,i=null==t?0:t.length;for(this.clear();++e<i;){var n=t[e];this.set(n[0],n[1])}}function Bi(t){var e=-1,i=null==t?0:t.length;for(this.__data__=new Ki;++e<i;)this.add(t[e])}function Ni(t){var e=this.__data__=new Ui(t);this.size=e.size}function Hi(t,e){var i=Ls(t),n=!i&&Ws(t),r=!i&&!n&&Bs(t),o=!i&&!n&&!r&&oa(t),s=i||n||r||o,a=s?He(t.length,Mt):[],l=a.length;for(var c in t)!e&&!Ft.call(t,c)||s&&("length"==c||r&&("offset"==c||"parent"==c)||o&&("buffer"==c||"byteLength"==c||"byteOffset"==c)||bo(c,l))||a.push(c);return a}function Yi(e){var i=e.length;return i?e[Bn(0,i-1)]:t}function qi(t,e){return Eo(Sr(t),rn(e,0,t.length))}function Gi(t){return Eo(Sr(t))}function Xi(e,i,n){(n!==t&&!$s(e[i],n)||n===t&&!(i in e))&&en(e,i,n)}function Zi(e,i,n){var r=e[i];Ft.call(e,i)&&$s(r,n)&&(n!==t||i in e)||en(e,i,n)}function Ji(t,e){for(var i=t.length;i--;)if($s(t[i][0],e))return i;return-1}function Qi(t,e,i,n){return cn(t,(function(t,r,o){e(n,t,i(t),o)})),n}function tn(t,e){return t&&Mr(e,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=at(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,u=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]&&Ft.call(t,"index")&&(i.index=t.index,i.input=t.input),i}(e),!l)return Sr(e,a)}else{var b=uo(e),x=b==g||b==v;if(Bs(e))return mr(e,l);if(b==y||b==h||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 _:case T:case E:case F:case A:case O:case D:case $: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,ht.exec(t));return e.lastIndex=t.lastIndex,e}(t);case z:return new n;case S:return Oi?Ct(Oi.call(t)):{}}}(e,b,l)}}s||(s=new Ni);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:(u?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=Te(e,qe(i))),n?(o=_e,s=!1):e.length>=200&&(o=Xe,s=!1,e=new Bi(e));t:for(;++r<a;){var u=t[r],h=null==i?u:i(u);if(u=n||0!==u?u:0,s&&h==h){for(var d=c;d--;)if(e[d]===h)continue t;l.push(u)}else o(e,h,n)||l.push(u)}return l}$i.templateSettings={escape:H,evaluate:Y,interpolate:q,variable:"",imports:{_:$i}},($i.prototype=Pi.prototype).constructor=$i,(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 Ft.call(n,e)?n[e]:t},Vi.prototype.has=function(e){var i=this.__data__;return Si?i[e]!==t:Ft.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():Ht.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},Ki.prototype.clear=function(){this.size=0,this.__data__={hash:new Vi,map:new(xi||Ui),string:new Vi}},Ki.prototype.delete=function(t){var e=oo(this,t).delete(t);return this.size-=e?1:0,e},Ki.prototype.get=function(t){return oo(this,t).get(t)},Ki.prototype.has=function(t){return oo(this,t).has(t)},Ki.prototype.set=function(t,e){var i=oo(this,t),n=i.size;return i.set(t,e),this.size+=i.size==n?0:1,this},Bi.prototype.add=Bi.prototype.push=function(t){return this.__data__.set(t,i),this},Bi.prototype.has=function(t){return this.__data__.has(t)},Ni.prototype.clear=function(){this.__data__=new Ui,this.size=0},Ni.prototype.delete=function(t){var e=this.__data__,i=e.delete(t);return this.size=e.size,i},Ni.prototype.get=function(t){return this.__data__.get(t)},Ni.prototype.has=function(t){return this.__data__.has(t)},Ni.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 Ki(n)}return i.set(t,e),this.size=i.size,this};var cn=_r(vn),un=_r(kn,!0);function hn(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):Ee(r,a):n||(r[r.length]=a)}return r}var bn=Tr(),gn=Tr(!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:Ee(n,i(t))}function wn(e){return null==e?e===t?"[object Undefined]":"[object Null]":Zt&&Zt in Ct(e)?function(e){var i=Ft.call(e,Zt),n=e[Zt];try{e[Zt]=t;var r=!0}catch(t){}var o=Dt.call(e);return r&&(i?e[Zt]=n:delete e[Zt]),o}(e):function(t){return Dt.call(t)}(e)}function zn(t,e){return t>e}function Cn(t,e){return null!=t&&Ft.call(t,e)}function Sn(t,e){return null!=t&&e in Ct(t)}function Mn(e,i,n){for(var r=n?_e:je,o=e[0].length,s=e.length,a=s,l=at(s),c=1/0,u=[];a--;){var h=e[a];a&&i&&(h=Te(h,qe(i))),c=bi(h.length,c),l[a]=!n&&(i||o>=120&&h.length>=120)?new Bi(a&&h):t}h=e[0];var d=-1,f=l[0];t:for(;++d<o&&u.length<c;){var p=h[d],b=i?i(p):p;if(p=n||0!==p?p:0,!(f?Xe(f,b):r(u,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),u.push(p)}}return u}function In(e,i,n){var r=null==(e=Co(e,i=br(i,e)))?e:e[Ao(Ho(i))];return null==r?t:we(r,e,n)}function jn(t){return Zs(t)&&wn(t)==h}function _n(e,i,n,r,o){return e===i||(null==e||null==i||!Zs(e)&&!Zs(i)?e!=e&&i!=i:function(e,i,n,r,o,s){var a=Ls(e),l=Ls(i),c=a?d:uo(e),u=l?d:uo(i),g=(c=c==h?y:c)==y,v=(u=u==h?y:u)==y,x=c==u;if(x&&Bs(e)){if(!Bs(i))return!1;a=!0,g=!1}if(x&&!g)return s||(s=new Ni),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 $s(+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(Oi)return Oi.call(t)==Oi.call(e)}return!1}(e,i,c,n,r,o,s);if(!(1&n)){var M=g&&Ft.call(e,"__wrapped__"),_=v&&Ft.call(i,"__wrapped__");if(M||_){var T=M?e.value():e,E=_?i.value():i;return s||(s=new Ni),o(T,E,n,r,s)}}return!!x&&(s||(s=new Ni),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 u=c;u--;){var h=l[u];if(!(a?h in i:Ft.call(i,h)))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;++u<c;){var g=e[h=l[u]],v=i[h];if(r)var k=a?r(v,g,h,i,e,s):r(g,v,h,e,i,s);if(!(k===t?g===v||o(g,v,n,r,s):k)){p=!1;break}b||(b="constructor"==h)}if(p&&!b){var m=e.constructor,y=i.constructor;m==y||!("constructor"in e)||!("constructor"in i)||"function"==typeof m&&m instanceof m&&"function"==typeof y&&y instanceof y||(p=!1)}return s.delete(e),s.delete(i),p}(e,i,n,r,o,s))}(e,i,n,r,_n,o))}function Tn(e,i,n,r){var o=n.length,s=o,a=!r;if(null==e)return!s;for(e=Ct(e);o--;){var l=n[o];if(a&&l[2]?l[1]!==e[l[0]]:!(l[0]in e))return!1}for(;++o<s;){var c=(l=n[o])[0],u=e[c],h=l[1];if(a&&l[2]){if(u===t&&!(c in e))return!1}else{var d=new Ni;if(r)var f=r(u,h,c,e,i,d);if(!(f===t?_n(h,u,3,r,d):f))return!1}}return!0}function En(t){return!(!Xs(t)||(e=t,Ot&&Ot in e))&&(Ys(t)?Pt:pt).test(Oo(t));var e}function Fn(t){return"function"==typeof t?t:null==t?Qa:"object"==typeof t?Ls(t)?Rn(t[0],t[1]):$n(t):ll(t)}function An(t){if(!yo(t))return fi(t);var e=[];for(var i in Ct(t))Ft.call(t,i)&&"constructor"!=i&&e.push(i);return e}function On(t,e){return t<e}function Dn(t,e){var i=-1,n=Us(t)?at(t.length):[];return cn(t,(function(t,r,o){n[++i]=e(t,r,o)})),n}function $n(t){var e=so(t);return 1==e.length&&e[0][2]?wo(e[0][0],e[0][1]):function(i){return i===t||Tn(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):_n(i,r,3)}}function Pn(e,i,n,r,o){e!==i&&bn(i,(function(s,a){if(o||(o=new Ni),Xs(s))!function(e,i,n,r,o,s,a){var l=So(e,n),c=So(i,n),u=a.get(c);if(u)Xi(e,n,u);else{var h=s?s(l,c,n+"",e,i,a):t,d=h===t;if(d){var f=Ls(c),p=!f&&Bs(c),b=!f&&!p&&oa(c);h=c,f||p||b?Ls(l)?h=l:Ks(l)?h=Sr(l):p?(d=!1,h=mr(c,!0)):b?(d=!1,h=xr(c,!0)):h=[]:ta(c)||Ws(c)?(h=l,Ws(l)?h=fa(l):Xs(l)&&!Ys(l)||(h=fo(c))):d=!1}d&&(a.set(c,h),o(h,c,r,s,a),a.delete(c)),Xi(e,n,h)}}(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?Te(e,(function(t){return Ls(t)?function(e){return yn(e,1===t.length?t[0]:t)}:t})):[Qa];var n=-1;e=Te(e,qe(ro()));var r=Dn(t,(function(t){var i=Te(e,(function(e){return e(t)}));return{criteria:i,index:++n,value:t}}));return function(t){var e=t.length;for(t.sort((function(t,e){return function(t,e,i){for(var n=-1,r=t.criteria,o=e.criteria,s=r.length,a=i.length;++n<s;){var l=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=Te(t,qe(i)));++o<s;)for(var l=0,c=e[o],u=i?i(c):c;(l=r(a,u,l,n))>-1;)a!==t&&Ht.call(a,l,1),Ht.call(t,l,1);return t}function Kn(t,e){for(var i=t?e.length:0,n=i-1;i--;){var r=e[i];if(i==n||r!==o){var o=r;bo(r)?Ht.call(t,r,1):ar(t,r)}}return t}function Bn(t,e){return t+de(ki()*(e-t+1))}function Nn(t,e){var i="";if(!t||e<1||e>a)return i;do{e%2&&(i+=t),(e=de(e/2))&&(t+=t)}while(e);return i}function Hn(t,e){return jo(zo(t,e,Qa),t+"")}function Yn(t){return Yi($a(t))}function qn(t,e){var i=$a(t);return Eo(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]),u=n;if("__proto__"===c||"constructor"===c||"prototype"===c)return e;if(o!=a){var h=l[c];(u=r?r(h,c,l):t)===t&&(u=Xs(h)?h:bo(i[o+1])?[]:{})}Zi(l,c,u),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 Eo($a(t))}function Qn(t,e,i){var n=-1,r=t.length;e<0&&(e=-e>r?0:r+e),(i=i>r?r:i)<0&&(i+=r),r=e>i?0:i-e>>>0,e>>>=0;for(var o=at(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),u=i===t;o<s;){var h=de((o+s)/2),d=n(e[h]),f=d!==t,p=null===d,b=d==d,g=ra(d);if(a)var v=r||b;else v=u?b&&(r||f):l?b&&f&&(r||!p):c?b&&f&&!p&&(r||!g):!p&&!g&&(r?d<=i:d<i);v?o=h+1:s=h}return bi(s,4294967294)}function nr(t,e){for(var i=-1,n=t.length,r=0,o=[];++i<n;){var s=t[i],a=e?e(s):s;if(!i||!$s(a,l)){var l=a;o[r++]=0===s?0:s}}return o}function rr(t){return"number"==typeof t?t:ra(t)?l:+t}function or(t){if("string"==typeof t)return t;if(Ls(t))return Te(t,or)+"";if(ra(t))return Di?Di.call(t):"";var e=t+"";return"0"==e&&1/t==-1/0?"-0":e}function sr(t,e,i){var n=-1,r=je,o=t.length,s=!0,a=[],l=a;if(i)s=!1,r=_e;else if(o>=200){var c=e?null:Nr(t);if(c)return si(c);s=!1,r=Xe,l=new Bi}else l=e?[]:a;t:for(;++n<o;){var u=t[n],h=e?e(u):u;if(u=i||0!==u?u:0,s&&h==h){for(var d=l.length;d--;)if(l[d]===h)continue t;e&&l.push(h),a.push(u)}else r(l,h,i)||(l!==a&&l.push(h),a.push(u))}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&&!Ft.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(Ho(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 ur(t,e){var i=t;return i instanceof Li&&(i=i.value()),Fe(e,(function(t,e){return e.func.apply(e.thisArg,Ee([t],e.args))}),i)}function hr(t,e,i){var n=t.length;if(n<2)return n?sr(t[0]):[];for(var r=-1,o=at(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 Ks(t)?t:[]}function pr(t){return"function"==typeof t?t:Qa}function br(t,e){return Ls(t)?t:vo(t,e)?[t]:Fo(pa(t))}var gr=Hn;function vr(e,i,n){var r=e.length;return n=n===t?r:n,!i&&n>=r?e:Qn(e,i,n)}var kr=oe||function(t){return ue.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,u=ra(i);if(!l&&!u&&!s&&e>i||s&&a&&c&&!l&&!u||r&&a&&c||!n&&c||!o)return 1;if(!r&&!s&&!u&&e<i||u&&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),u=at(l+c),h=!n;++a<l;)u[a]=e[a];for(;++r<s;)(h||r<o)&&(u[i[r]]=t[r]);for(;c--;)u[a++]=t[r++];return u}function Cr(t,e,i,n){for(var r=-1,o=t.length,s=-1,a=i.length,l=-1,c=e.length,u=pi(o-a,0),h=at(u+c),d=!n;++r<u;)h[r]=t[r];for(var f=r;++l<c;)h[f+l]=e[l];for(;++s<a;)(d||r<o)&&(h[f+i[s]]=t[r++]);return h}function Sr(t,e){var i=-1,n=t.length;for(e||(e=at(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 Hn((function(i,n){var r=-1,o=n.length,s=o>1?n[o-1]:t,a=o>2?n[2]:t;for(s=e.length>3&&"function"==typeof s?(o--,s):t,a&&go(n[0],n[1],a)&&(s=o<3?t:s,o=1),i=Ct(i);++r<o;){var l=n[r];l&&e(i,l,r,s)}return i}))}function _r(t,e){return function(i,n){if(null==i)return i;if(!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 Tr(t){return function(e,i,n){for(var r=-1,o=Ct(e),s=n(e),a=s.length;a--;){var l=s[t?a:++r];if(!1===i(o[l],l,o))break}return e}}function Er(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 Fr(t){return function(e){return Fe(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 Or(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 Dr(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]),u="wrapper"==c?eo(a):t;l=u&&ko(u[0])&&424==u[1]&&!u[4].length&&1==u[9]?l[io(u[0])].apply(l,u[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 $r(e,i,n,r,s,a,l,c,u,h){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=at(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<h){var z=oi(m,x);return Kr(e,i,$r,o.placeholder,n,m,z,c,u,h-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&&u<k&&(m.length=u),this&&this!==ue&&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=Te(e,qe(ro())),Hn((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?Nn(i,e):i;var r=Nn(i,he(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(he((e-t)/(i||1)),0),s=at(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 Kr(e,i,n,o,s,a,l,c,u,h){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,u,h],p=n.apply(t,f);return ko(e)&&Mo(p,f),p.placeholder=o,_o(p,e,i)}function Br(t){var e=zt[t];return function(t,i){if(t=da(t),(i=null==i?0:bi(ua(i),292))&&De(t)){var n=(pa(t)+"e").split("e");return+((n=(pa(e(n[0]+"e"+(+n[1]+i)))+"e").split("e"))[0]+"e"+(+n[1]-i))}return e(t)}}var Nr=zi&&1/si(new zi([,-0]))[1]==s?function(t){return new zi(t)}:rl;function Hr(t){return function(e){var i=uo(e);return i==k?ni(e):i==z?ai(e):function(t,e){return Te(e,(function(e){return[e,t[e]]}))}(e,t(e))}}function Yr(i,s,a,l,c,u,h,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),h=h===t?h:pi(ua(h),0),d=d===t?d:ua(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,u,h,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=at(s),l=s,c=no(o);l--;)a[l]=arguments[l];var u=s<3&&a[0]!==c&&a[s-1]!==c?[]:oi(a,c);return(s-=u.length)<n?Kr(e,i,$r,o.placeholder,t,a,u,t,t,n-s):we(this&&this!==ue&&this instanceof o?r:e,this,a)}}(i,s,d):s!=r&&33!=s||c.length?$r.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,u=at(c+a),h=this&&this!==ue&&this instanceof e?o:t;++l<c;)u[l]=n[l];for(;a--;)u[l++]=arguments[++s];return we(h,r?i:this,u)}}(i,s,a,l);else var m=function(t,e,i){var n=1&e,r=Ar(t);return function e(){return(this&&this!==ue&&this instanceof e?r:t).apply(n?i:this,arguments)}}(i,s,a);return _o((v?Xn:Mo)(m,k),i,s)}function qr(e,i,n,r){return e===t||$s(e,_t[n])&&!Ft.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 u=s.get(e),h=s.get(i);if(u&&h)return u==i&&h==e;var d=-1,f=!0,p=2&n?new Bi: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(!Oe(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=Ft.call(Ii,e)?i.length:0;n--;){var r=i[n],o=r.func;if(null==o||o==t)return r.name}return e}function no(t){return(Ft.call($i,"placeholder")?$i:t).placeholder}function ro(){var t=$i.iteratee||tl;return t=t===tl?Fn:t,arguments.length?t(arguments[0],arguments[1]):t}function oo(t,e){var i,n,r=t.__data__;return("string"==(n=typeof(i=e))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==i:null===i)?r["string"==typeof e?"string":"hash"]:r.map}function so(t){for(var e=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 En(n)?n:t}var lo=pe?function(t){return null==t?[]:(t=Ct(t),Ie(pe(t),(function(e){return Nt.call(t,e)})))}:hl,co=pe?function(t){for(var e=[];t;)Ee(e,lo(t)),t=Kt(t);return e}:hl,uo=wn;function ho(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(Kt(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)&&$s(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=$i[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&&uo(new yi(new ArrayBuffer(1)))!=j||xi&&uo(new xi)!=k||wi&&uo(wi.resolve())!=x||zi&&uo(new zi)!=z||Ci&&uo(new Ci)!=M)&&(uo=function(e){var i=wn(e),n=i==y?e.constructor:t,r=n?Oo(n):"";if(r)switch(r){case ji:return j;case _i:return k;case Ti:return x;case Ei:return z;case Fi:return M}return i});var mo=Tt?Ys:dl;function yo(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||_t)}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=at(o);++r<o;)s[r]=t[i+r];r=-1;for(var a=at(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=To(Xn),Io=ce||function(t,e){return ue.setTimeout(t,e)},jo=To(Zn);function _o(t,e,i){var n=e+"";return jo(t,function(t,e){var i=e.length;if(!i)return t;var n=i-1;return e[n]=(i>1?"& ":"")+e[n],e=e.join(i>2?", ":" "),t.replace(it,"{\n/* [wrapped with "+e+"] */\n")}(n,function(t,e){return Ce(u,(function(i){var n="_."+i[0];e&i[1]&&!je(t,n)&&t.push(n)})),t.sort()}(function(t){var e=t.match(nt);return e?e[1].split(rt):[]}(n),i)))}function To(e){var i=0,n=0;return function(){var r=gi(),o=16-(r-n);if(n=r,o>0){if(++i>=800)return arguments[0]}else i=0;return e.apply(t,arguments)}}function Eo(e,i){var n=-1,r=e.length,o=r-1;for(i=i===t?r:i;++n<i;){var s=Bn(n,o),a=e[s];e[s]=e[n],e[n]=a}return e.length=i,e}var Fo=function(){var t=Ts((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 Oo(t){if(null!=t){try{return Et.call(t)}catch(t){}try{return t+""}catch(t){}}return""}function Do(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 $o=Hn((function(t,e){return Ks(t)?ln(t,pn(e,1,Ks,!0)):[]})),Ro=Hn((function(e,i){var n=Ho(i);return Ks(n)&&(n=t),Ks(e)?ln(e,pn(i,1,Ks,!0),ro(n,2)):[]})),Po=Hn((function(e,i){var n=Ho(i);return Ks(n)&&(n=t),Ks(e)?ln(e,pn(i,1,Ks,!0),t,n):[]}));function Wo(t,e,i){var n=null==t?0:t.length;if(!n)return-1;var r=null==i?0:ua(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=ua(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 Ko=Hn((function(t){var e=Te(t,fr);return e.length&&e[0]===t[0]?Mn(e):[]})),Bo=Hn((function(e){var i=Ho(e),n=Te(e,fr);return i===Ho(n)?i=t:n.pop(),n.length&&n[0]===e[0]?Mn(n,ro(i,2)):[]})),No=Hn((function(e){var i=Ho(e),n=Te(e,fr);return(i="function"==typeof i?i:t)&&n.pop(),n.length&&n[0]===e[0]?Mn(n,t,i):[]}));function Ho(e){var i=null==e?0:e.length;return i?e[i-1]:t}var Yo=Hn(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 Kn(t,Te(e,(function(t){return bo(t,i)?+t:t})).sort(wr)),n}));function Xo(t){return null==t?t:mi.call(t)}var Zo=Hn((function(t){return sr(pn(t,1,Ks,!0))})),Jo=Hn((function(e){var i=Ho(e);return Ks(i)&&(i=t),sr(pn(e,1,Ks,!0),ro(i,2))})),Qo=Hn((function(e){var i=Ho(e);return i="function"==typeof i?i:t,sr(pn(e,1,Ks,!0),t,i)}));function ts(t){if(!t||!t.length)return[];var e=0;return t=Ie(t,(function(t){if(Ks(t))return e=pi(t.length,e),!0})),He(e,(function(e){return Te(t,Ue(e))}))}function es(e,i){if(!e||!e.length)return[];var n=ts(e);return null==i?n:Te(n,(function(e){return we(i,t,e)}))}var is=Hn((function(t,e){return Ks(t)?ln(t,e):[]})),ns=Hn((function(t){return hr(Ie(t,Ks))})),rs=Hn((function(e){var i=Ho(e);return Ks(i)&&(i=t),hr(Ie(e,Ks),ro(i,2))})),os=Hn((function(e){var i=Ho(e);return i="function"==typeof i?i:t,hr(Ie(e,Ks),t,i)})),ss=Hn(ts),as=Hn((function(e){var i=e.length,n=i>1?e[i-1]:t;return n="function"==typeof n?(e.pop(),n):t,es(e,n)}));function ls(t){var e=$i(t);return e.__chain__=!0,e}function cs(t,e){return e(t)}var us=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)})),hs=Ir((function(t,e,i){Ft.call(t,i)?++t[i]:en(t,i,1)})),ds=Or(Wo),fs=Or(Lo);function ps(t,e){return(Ls(t)?Ce:cn)(t,ro(e,3))}function bs(t,e){return(Ls(t)?Se:un)(t,ro(e,3))}var gs=Ir((function(t,e,i){Ft.call(t,i)?t[i].push(e):en(t,i,[e])})),vs=Hn((function(t,e,i){var n=-1,r="function"==typeof e,o=Us(t)?at(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)?Te:Dn)(t,ro(e,3))}var ys=Ir((function(t,e,i){t[i?0:1].push(e)}),(function(){return[[],[]]})),xs=Hn((function(t,e){if(null==t)return[];var i=e.length;return i>1&&go(t,e[0],e[1])?e=[]:i>2&&go(e[0],e[1],e[2])&&(e=[e[0]]),Ln(t,pn(e,1),[])})),ws=le||function(){return ue.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=ua(i),function(){return--i>0&&(r=n.apply(this,arguments)),i<=1&&(n=t),r}}var Ss=Hn((function(t,e,i){var n=1;if(i.length){var o=oi(i,no(Ss));n|=r}return Yr(t,n,e,i,o)})),Ms=Hn((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,u,h=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,h=e,l=i.apply(r,n)}function g(e){var i=e-u;return u===t||i>=n||i<0||f&&e-h>=a}function v(){var t=ws();if(g(t))return k(t);c=Io(v,function(t){var e=n-(t-u);return f?bi(e,a-(t-h)):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,u=e,i){if(c===t)return function(t){return h=t,c=Io(v,n),d?b(t):l}(u);if(f)return kr(c),c=Io(v,n),b(u)}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),h=0,o=u=s=c=t},m.flush=function(){return c===t?l:k(ws())},m}var js=Hn((function(t,e){return an(t,1,e)})),_s=Hn((function(t,e,i){return an(t,da(e)||0,i)}));function Ts(t,i){if("function"!=typeof t||null!=i&&"function"!=typeof i)throw new 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(Ts.Cache||Ki),n}function Es(t){if("function"!=typeof t)throw new It(e);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}Ts.Cache=Ki;var Fs=gr((function(t,e){var i=(e=1==e.length&&Ls(e[0])?Te(e[0],qe(ro())):Te(pn(e,1),qe(ro()))).length;return Hn((function(n){for(var r=-1,o=bi(n.length,i);++r<o;)n[r]=e[r].call(this,n[r]);return we(t,this,n)}))})),As=Hn((function(e,i){var n=oi(i,no(As));return Yr(e,r,t,i,n)})),Os=Hn((function(e,i){var n=oi(i,no(Os));return Yr(e,64,t,i,n)})),Ds=Jr((function(e,i){return Yr(e,256,t,t,t,i)}));function $s(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)&&Ft.call(t,"callee")&&!Nt.call(t,"callee")},Ls=at.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 Ks(t){return Zs(t)&&Us(t)}var Bs=be||dl,Ns=ve?qe(ve):function(t){return Zs(t)&&wn(t)==p};function Hs(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==ua(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)&&uo(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=Kt(t);if(null===e)return!0;var i=Ft.call(e,"constructor")&&e.constructor;return"function"==typeof i&&i instanceof i&&Et.call(i)==$t}var ea=me?qe(me):function(t){return Zs(t)&&wn(t)==w},ia=ye?qe(ye):function(t){return Zs(t)&&uo(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(On),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=uo(t);return(e==k?ni:e==z?si:$a)(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 ua(t){var e=ca(t),i=e%1;return e==e?i?e-i:e:0}function ha(t){return t?rn(ua(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)Ft.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=Hn((function(e,i){e=Ct(e);var n=-1,r=i.length,o=r>2?i[2]:t;for(o&&go(i[0],i[1],o)&&(r=1);++n<r;)for(var s=i[n],a=ja(s),l=-1,c=a.length;++l<c;){var u=a[l],h=e[u];(h===t||$s(h,_t[u])&&!Ft.call(e,u))&&(e[u]=s[u])}return e})),xa=Hn((function(e){return e.push(t,Gr),we(Ta,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&&ho(t,e,Sn)}var Ca=Rr((function(t,e,i){null!=e&&"function"!=typeof e.toString&&(e=Dt.call(e)),t[e]=i}),Xa(Qa)),Sa=Rr((function(t,e,i){null!=e&&"function"!=typeof e.toString&&(e=Dt.call(e)),Ft.call(t,e)?t[e].push(i):t[e]=[i]}),ro),Ma=Hn(In);function Ia(t){return Us(t)?Hi(t):An(t)}function ja(t){return Us(t)?Hi(t,!0):function(t){if(!Xs(t))return function(t){var e=[];if(null!=t)for(var i in Ct(t))e.push(i);return e}(t);var e=yo(t),i=[];for(var n in t)("constructor"!=n||!e&&Ft.call(t,n))&&i.push(n);return i}(t)}var _a=jr((function(t,e,i){Pn(t,e,i)})),Ta=jr((function(t,e,i,n){Pn(t,e,i,n)})),Ea=Jr((function(t,e){var i={};if(null==t)return i;var n=!1;e=Te(e,(function(e){return e=br(e,t),n||(n=e.length>1),e})),Mr(t,to(t),i),n&&(i=on(i,7,Xr));for(var r=e.length;r--;)ar(i,e[r]);return i})),Fa=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=Te(to(t),(function(t){return[t]}));return e=ro(e),Vn(t,i,(function(t,i){return e(t,i[0])}))}var Oa=Hr(Ia),Da=Hr(ja);function $a(t){return null==t?[]:Ge(t,Ia(t))}var Ra=Fr((function(t,e,i){return e=e.toLowerCase(),t+(i?Pa(e):e)}));function Pa(t){return Ha(pa(t).toLowerCase())}function Wa(t){return(t=pa(t))&&t.replace(vt,Qe).replace(Xt,"")}var La=Fr((function(t,e,i){return t+(i?"-":"")+e.toLowerCase()})),Va=Fr((function(t,e,i){return t+(i?" ":"")+e.toLowerCase()})),Ua=Er("toLowerCase"),Ka=Fr((function(t,e,i){return t+(i?"_":"")+e.toLowerCase()})),Ba=Fr((function(t,e,i){return t+(i?" ":"")+Ha(e)})),Na=Fr((function(t,e,i){return t+(i?" ":"")+e.toUpperCase()})),Ha=Er("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=Hn((function(e,i){try{return we(e,t,i)}catch(t){return Hs(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=Dr(),Ja=Dr(!0);function Qa(t){return t}function tl(t){return Fn("function"==typeof t?t:on(t,1))}var el=Hn((function(t,e){return function(i){return In(i,t,e)}})),il=Hn((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,Ee([this.value()],arguments))})})),t}function rl(){}var ol=Wr(Te),sl=Wr(Me),al=Wr(Oe);function ll(t){return vo(t)?Ue(Ao(t)):function(t){return function(e){return yn(e,t)}}(t)}var cl=Vr(),ul=Vr(!0);function hl(){return[]}function dl(){return!1}var fl,pl=Pr((function(t,e){return t+e}),0),bl=Br("ceil"),gl=Pr((function(t,e){return t/e}),1),vl=Br("floor"),kl=Pr((function(t,e){return t*e}),1),ml=Br("round"),yl=Pr((function(t,e){return t-e}),0);return $i.after=function(t,i){if("function"!=typeof i)throw new It(e);return t=ua(t),function(){if(--t<1)return i.apply(this,arguments)}},$i.ary=zs,$i.assign=ba,$i.assignIn=ga,$i.assignInWith=va,$i.assignWith=ka,$i.at=ma,$i.before=Cs,$i.bind=Ss,$i.bindAll=Ga,$i.bindKey=Ms,$i.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return Ls(t)?t:[t]},$i.chain=ls,$i.chunk=function(e,i,n){i=(n?go(e,i,n):i===t)?1:pi(ua(i),0);var r=null==e?0:e.length;if(!r||i<1)return[];for(var o=0,s=0,a=at(he(r/i));o<r;)a[s++]=Qn(e,o,o+=i);return a},$i.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},$i.concat=function(){var t=arguments.length;if(!t)return[];for(var e=at(t-1),i=arguments[0],n=t;n--;)e[n-1]=arguments[n];return Ee(Ls(i)?Sr(i):[i],pn(e,1))},$i.cond=function(t){var i=null==t?0:t.length,n=ro();return t=i?Te(t,(function(t){if("function"!=typeof t[1])throw new It(e);return[n(t[0]),t[1]]})):[],Hn((function(e){for(var n=-1;++n<i;){var r=t[n];if(we(r[0],this,e))return we(r[1],this,e)}}))},$i.conforms=function(t){return function(t){var e=Ia(t);return function(i){return sn(i,t,e)}}(on(t,1))},$i.constant=Xa,$i.countBy=hs,$i.create=function(t,e){var i=Ri(t);return null==e?i:tn(i,e)},$i.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},$i.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},$i.debounce=Is,$i.defaults=ya,$i.defaultsDeep=xa,$i.defer=js,$i.delay=_s,$i.difference=$o,$i.differenceBy=Ro,$i.differenceWith=Po,$i.drop=function(e,i,n){var r=null==e?0:e.length;return r?Qn(e,(i=n||i===t?1:ua(i))<0?0:i,r):[]},$i.dropRight=function(e,i,n){var r=null==e?0:e.length;return r?Qn(e,0,(i=r-(i=n||i===t?1:ua(i)))<0?0:i):[]},$i.dropRightWhile=function(t,e){return t&&t.length?cr(t,ro(e,3),!0,!0):[]},$i.dropWhile=function(t,e){return t&&t.length?cr(t,ro(e,3),!0):[]},$i.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=ua(n))<0&&(n=-n>o?0:o+n),(r=r===t||r>o?o:ua(r))<0&&(r+=o),r=n>r?0:ha(r);n<r;)e[n++]=i;return e}(e,i,n,r)):[]},$i.filter=function(t,e){return(Ls(t)?Ie:fn)(t,ro(e,3))},$i.flatMap=function(t,e){return pn(ms(t,e),1)},$i.flatMapDeep=function(t,e){return pn(ms(t,e),s)},$i.flatMapDepth=function(e,i,n){return n=n===t?1:ua(n),pn(ms(e,i),n)},$i.flatten=Vo,$i.flattenDeep=function(t){return null!=t&&t.length?pn(t,s):[]},$i.flattenDepth=function(e,i){return null!=e&&e.length?pn(e,i=i===t?1:ua(i)):[]},$i.flip=function(t){return Yr(t,512)},$i.flow=Za,$i.flowRight=Ja,$i.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},$i.functions=function(t){return null==t?[]:mn(t,Ia(t))},$i.functionsIn=function(t){return null==t?[]:mn(t,ja(t))},$i.groupBy=gs,$i.initial=function(t){return null!=t&&t.length?Qn(t,0,-1):[]},$i.intersection=Ko,$i.intersectionBy=Bo,$i.intersectionWith=No,$i.invert=Ca,$i.invertBy=Sa,$i.invokeMap=vs,$i.iteratee=tl,$i.keyBy=ks,$i.keys=Ia,$i.keysIn=ja,$i.map=ms,$i.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},$i.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},$i.matches=function(t){return $n(on(t,1))},$i.matchesProperty=function(t,e){return Rn(t,on(e,1))},$i.memoize=Ts,$i.merge=_a,$i.mergeWith=Ta,$i.method=el,$i.methodOf=il,$i.mixin=nl,$i.negate=Es,$i.nthArg=function(t){return t=ua(t),Hn((function(e){return Wn(e,t)}))},$i.omit=Ea,$i.omitBy=function(t,e){return Aa(t,Es(ro(e)))},$i.once=function(t){return Cs(2,t)},$i.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))},$i.over=ol,$i.overArgs=Fs,$i.overEvery=sl,$i.overSome=al,$i.partial=As,$i.partialRight=Os,$i.partition=ys,$i.pick=Fa,$i.pickBy=Aa,$i.property=ll,$i.propertyOf=function(e){return function(i){return null==e?t:yn(e,i)}},$i.pull=Yo,$i.pullAll=qo,$i.pullAllBy=function(t,e,i){return t&&t.length&&e&&e.length?Un(t,e,ro(i,2)):t},$i.pullAllWith=function(e,i,n){return e&&e.length&&i&&i.length?Un(e,i,t,n):e},$i.pullAt=Go,$i.range=cl,$i.rangeRight=ul,$i.rearg=Ds,$i.reject=function(t,e){return(Ls(t)?Ie:fn)(t,Es(ro(e,3)))},$i.remove=function(t,e){var i=[];if(!t||!t.length)return i;var n=-1,r=[],o=t.length;for(e=ro(e,3);++n<o;){var s=t[n];e(s,n,t)&&(i.push(s),r.push(n))}return Kn(t,r),i},$i.rest=function(i,n){if("function"!=typeof i)throw new It(e);return Hn(i,n=n===t?n:ua(n))},$i.reverse=Xo,$i.sampleSize=function(e,i,n){return i=(n?go(e,i,n):i===t)?1:ua(i),(Ls(e)?qi:qn)(e,i)},$i.set=function(t,e,i){return null==t?t:Gn(t,e,i)},$i.setWith=function(e,i,n,r){return r="function"==typeof r?r:t,null==e?e:Gn(e,i,n,r)},$i.shuffle=function(t){return(Ls(t)?Gi:Jn)(t)},$i.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:ua(i),n=n===t?r:ua(n)),Qn(e,i,n)):[]},$i.sortBy=xs,$i.sortedUniq=function(t){return t&&t.length?nr(t):[]},$i.sortedUniqBy=function(t,e){return t&&t.length?nr(t,ro(e,2)):[]},$i.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):[]},$i.spread=function(t,i){if("function"!=typeof t)throw new It(e);return i=null==i?0:pi(ua(i),0),Hn((function(e){var n=e[i],r=vr(e,0,i);return n&&Ee(r,n),we(t,this,r)}))},$i.tail=function(t){var e=null==t?0:t.length;return e?Qn(t,1,e):[]},$i.take=function(e,i,n){return e&&e.length?Qn(e,0,(i=n||i===t?1:ua(i))<0?0:i):[]},$i.takeRight=function(e,i,n){var r=null==e?0:e.length;return r?Qn(e,(i=r-(i=n||i===t?1:ua(i)))<0?0:i,r):[]},$i.takeRightWhile=function(t,e){return t&&t.length?cr(t,ro(e,3),!1,!0):[]},$i.takeWhile=function(t,e){return t&&t.length?cr(t,ro(e,3)):[]},$i.tap=function(t,e){return e(t),t},$i.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})},$i.thru=cs,$i.toArray=la,$i.toPairs=Oa,$i.toPairsIn=Da,$i.toPath=function(t){return Ls(t)?Te(t,Ao):ra(t)?[t]:Sr(Fo(pa(t)))},$i.toPlainObject=fa,$i.transform=function(t,e,i){var n=Ls(t),r=n||Bs(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(Kt(t)):{}}return(r?Ce:vn)(t,(function(t,n,r){return e(i,t,n,r)})),i},$i.unary=function(t){return zs(t,1)},$i.union=Zo,$i.unionBy=Jo,$i.unionWith=Qo,$i.uniq=function(t){return t&&t.length?sr(t):[]},$i.uniqBy=function(t,e){return t&&t.length?sr(t,ro(e,2)):[]},$i.uniqWith=function(e,i){return i="function"==typeof i?i:t,e&&e.length?sr(e,t,i):[]},$i.unset=function(t,e){return null==t||ar(t,e)},$i.unzip=ts,$i.unzipWith=es,$i.update=function(t,e,i){return null==t?t:lr(t,e,pr(i))},$i.updateWith=function(e,i,n,r){return r="function"==typeof r?r:t,null==e?e:lr(e,i,pr(n),r)},$i.values=$a,$i.valuesIn=function(t){return null==t?[]:Ge(t,ja(t))},$i.without=is,$i.words=Ya,$i.wrap=function(t,e){return As(pr(e),t)},$i.xor=ns,$i.xorBy=rs,$i.xorWith=os,$i.zip=ss,$i.zipObject=function(t,e){return dr(t||[],e||[],Zi)},$i.zipObjectDeep=function(t,e){return dr(t||[],e||[],Gn)},$i.zipWith=as,$i.entries=Oa,$i.entriesIn=Da,$i.extend=ga,$i.extendWith=va,nl($i,$i),$i.add=pl,$i.attempt=qa,$i.camelCase=Ra,$i.capitalize=Pa,$i.ceil=bl,$i.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)},$i.clone=function(t){return on(t,4)},$i.cloneDeep=function(t){return on(t,5)},$i.cloneDeepWith=function(e,i){return on(e,5,i="function"==typeof i?i:t)},$i.cloneWith=function(e,i){return on(e,4,i="function"==typeof i?i:t)},$i.conformsTo=function(t,e){return null==e||sn(t,e,Ia(e))},$i.deburr=Wa,$i.defaultTo=function(t,e){return null==t||t!=t?e:t},$i.divide=gl,$i.endsWith=function(e,i,n){e=pa(e),i=or(i);var r=e.length,o=n=n===t?r:rn(ua(n),0,r);return(n-=i.length)>=0&&e.slice(n,o)==i},$i.eq=$s,$i.escape=function(t){return(t=pa(t))&&N.test(t)?t.replace(K,ti):t},$i.escapeRegExp=function(t){return(t=pa(t))&&Q.test(t)?t.replace(J,"\\$&"):t},$i.every=function(e,i,n){var r=Ls(e)?Me:hn;return n&&go(e,i,n)&&(i=t),r(e,ro(i,3))},$i.find=ds,$i.findIndex=Wo,$i.findKey=function(t,e){return $e(t,ro(e,3),vn)},$i.findLast=fs,$i.findLastIndex=Lo,$i.findLastKey=function(t,e){return $e(t,ro(e,3),kn)},$i.floor=vl,$i.forEach=ps,$i.forEachRight=bs,$i.forIn=function(t,e){return null==t?t:bn(t,ro(e,3),ja)},$i.forInRight=function(t,e){return null==t?t:gn(t,ro(e,3),ja)},$i.forOwn=function(t,e){return t&&vn(t,ro(e,3))},$i.forOwnRight=function(t,e){return t&&kn(t,ro(e,3))},$i.get=wa,$i.gt=Rs,$i.gte=Ps,$i.has=function(t,e){return null!=t&&ho(t,e,Cn)},$i.hasIn=za,$i.head=Uo,$i.identity=Qa,$i.includes=function(t,e,i,n){t=Us(t)?t:$a(t),i=i&&!n?ua(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},$i.indexOf=function(t,e,i){var n=null==t?0:t.length;if(!n)return-1;var r=null==i?0:ua(i);return r<0&&(r=pi(n+r,0)),Pe(t,e,r)},$i.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)},$i.invoke=Ma,$i.isArguments=Ws,$i.isArray=Ls,$i.isArrayBuffer=Vs,$i.isArrayLike=Us,$i.isArrayLikeObject=Ks,$i.isBoolean=function(t){return!0===t||!1===t||Zs(t)&&wn(t)==f},$i.isBuffer=Bs,$i.isDate=Ns,$i.isElement=function(t){return Zs(t)&&1===t.nodeType&&!ta(t)},$i.isEmpty=function(t){if(null==t)return!0;if(Us(t)&&(Ls(t)||"string"==typeof t||"function"==typeof t.splice||Bs(t)||oa(t)||Ws(t)))return!t.length;var e=uo(t);if(e==k||e==z)return!t.size;if(yo(t))return!An(t).length;for(var i in t)if(Ft.call(t,i))return!1;return!0},$i.isEqual=function(t,e){return _n(t,e)},$i.isEqualWith=function(e,i,n){var r=(n="function"==typeof n?n:t)?n(e,i):t;return r===t?_n(e,i,t,n):!!r},$i.isError=Hs,$i.isFinite=function(t){return"number"==typeof t&&De(t)},$i.isFunction=Ys,$i.isInteger=qs,$i.isLength=Gs,$i.isMap=Js,$i.isMatch=function(t,e){return t===e||Tn(t,e,so(e))},$i.isMatchWith=function(e,i,n){return n="function"==typeof n?n:t,Tn(e,i,so(i),n)},$i.isNaN=function(t){return Qs(t)&&t!=+t},$i.isNative=function(t){if(mo(t))throw new xt("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return En(t)},$i.isNil=function(t){return null==t},$i.isNull=function(t){return null===t},$i.isNumber=Qs,$i.isObject=Xs,$i.isObjectLike=Zs,$i.isPlainObject=ta,$i.isRegExp=ea,$i.isSafeInteger=function(t){return qs(t)&&t>=-9007199254740991&&t<=a},$i.isSet=ia,$i.isString=na,$i.isSymbol=ra,$i.isTypedArray=oa,$i.isUndefined=function(e){return e===t},$i.isWeakMap=function(t){return Zs(t)&&uo(t)==M},$i.isWeakSet=function(t){return Zs(t)&&"[object WeakSet]"==wn(t)},$i.join=function(t,e){return null==t?"":Ke.call(t,e)},$i.kebabCase=La,$i.last=Ho,$i.lastIndexOf=function(e,i,n){var r=null==e?0:e.length;if(!r)return-1;var o=r;return n!==t&&(o=(o=ua(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)},$i.lowerCase=Va,$i.lowerFirst=Ua,$i.lt=sa,$i.lte=aa,$i.max=function(e){return e&&e.length?dn(e,Qa,zn):t},$i.maxBy=function(e,i){return e&&e.length?dn(e,ro(i,2),zn):t},$i.mean=function(t){return Ve(t,Qa)},$i.meanBy=function(t,e){return Ve(t,ro(e,2))},$i.min=function(e){return e&&e.length?dn(e,Qa,On):t},$i.minBy=function(e,i){return e&&e.length?dn(e,ro(i,2),On):t},$i.stubArray=hl,$i.stubFalse=dl,$i.stubObject=function(){return{}},$i.stubString=function(){return""},$i.stubTrue=function(){return!0},$i.multiply=kl,$i.nth=function(e,i){return e&&e.length?Wn(e,ua(i)):t},$i.noConflict=function(){return ue._===this&&(ue._=Rt),this},$i.noop=rl,$i.now=ws,$i.pad=function(t,e,i){t=pa(t);var n=(e=ua(e))?li(t):0;if(!e||n>=e)return t;var r=(e-n)/2;return Lr(de(r),i)+t+Lr(he(r),i)},$i.padEnd=function(t,e,i){t=pa(t);var n=(e=ua(e))?li(t):0;return e&&n<e?t+Lr(e-n,i):t},$i.padStart=function(t,e,i){t=pa(t);var n=(e=ua(e))?li(t):0;return e&&n<e?Lr(e-n,i)+t:t},$i.parseInt=function(t,e,i){return i||null==e?e=0:e&&(e=+e),vi(pa(t).replace(tt,""),e||0)},$i.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 Bn(e,i)},$i.reduce=function(t,e,i){var n=Ls(t)?Fe:Be,r=arguments.length<3;return n(t,ro(e,4),i,r,cn)},$i.reduceRight=function(t,e,i){var n=Ls(t)?Ae:Be,r=arguments.length<3;return n(t,ro(e,4),i,r,un)},$i.repeat=function(e,i,n){return i=(n?go(e,i,n):i===t)?1:ua(i),Nn(pa(e),i)},$i.replace=function(){var t=arguments,e=pa(t[0]);return t.length<3?e:e.replace(t[1],t[2])},$i.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},$i.round=ml,$i.runInContext=U,$i.sample=function(t){return(Ls(t)?Yi:Yn)(t)},$i.size=function(t){if(null==t)return 0;if(Us(t))return na(t)?li(t):t.length;var e=uo(t);return e==k||e==z?t.size:An(t).length},$i.snakeCase=Ka,$i.some=function(e,i,n){var r=Ls(e)?Oe:tr;return n&&go(e,i,n)&&(i=t),r(e,ro(i,3))},$i.sortedIndex=function(t,e){return er(t,e)},$i.sortedIndexBy=function(t,e,i){return ir(t,e,ro(i,2))},$i.sortedIndexOf=function(t,e){var i=null==t?0:t.length;if(i){var n=er(t,e);if(n<i&&$s(t[n],e))return n}return-1},$i.sortedLastIndex=function(t,e){return er(t,e,!0)},$i.sortedLastIndexBy=function(t,e,i){return ir(t,e,ro(i,2),!0)},$i.sortedLastIndexOf=function(t,e){if(null!=t&&t.length){var i=er(t,e,!0)-1;if($s(t[i],e))return i}return-1},$i.startCase=Ba,$i.startsWith=function(t,e,i){return t=pa(t),i=null==i?0:rn(ua(i),0,t.length),e=or(e),t.slice(i,i+e.length)==e},$i.subtract=yl,$i.sum=function(t){return t&&t.length?Ne(t,Qa):0},$i.sumBy=function(t,e){return t&&t.length?Ne(t,ro(e,2)):0},$i.template=function(e,i,n){var r=$i.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),u=0,h=i.interpolate||kt,d="__p += '",f=St((i.escape||kt).source+"|"+h.source+"|"+(h===q?ut:kt).source+"|"+(i.evaluate||kt).source+"|$","g"),p="//# sourceURL="+(Ft.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(u,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'"),u=l+t.length,t})),d+="';\n";var b=Ft.call(i,"variable")&&i.variable;if(b){if(lt.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,Hs(g))throw g;return g},$i.times=function(t,e){if((t=ua(t))<1||t>a)return[];var i=c,n=bi(t,c);e=ro(e),t-=c;for(var r=He(n,e);++i<t;)e(i);return r},$i.toFinite=ca,$i.toInteger=ua,$i.toLength=ha,$i.toLower=function(t){return pa(t).toLowerCase()},$i.toNumber=da,$i.toSafeInteger=function(t){return t?rn(ua(t),-9007199254740991,a):0===t?t:0},$i.toString=pa,$i.toUpper=function(t){return pa(t).toUpperCase()},$i.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("")},$i.trimEnd=function(e,i,n){if((e=pa(e))&&(n||i===t))return e.slice(0,ui(e)+1);if(!e||!(i=or(i)))return e;var r=ci(e);return vr(r,0,Je(r,ci(i))+1).join("")},$i.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("")},$i.truncate=function(e,i){var n=30,r="...";if(Xs(i)){var o="separator"in i?i.separator:o;n="length"in i?ua(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 u,h=c;for(o.global||(o=St(o.source,pa(ht.exec(o))+"g")),o.lastIndex=0;u=o.exec(h);)var d=u.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},$i.unescape=function(t){return(t=pa(t))&&B.test(t)?t.replace(V,hi):t},$i.uniqueId=function(t){var e=++At;return pa(t)+e},$i.upperCase=Na,$i.upperFirst=Ha,$i.each=ps,$i.eachRight=bs,$i.first=Uo,nl($i,(fl={},vn($i,(function(t,e){Ft.call($i.prototype,e)||(fl[e]=t)})),fl),{chain:!1}),$i.VERSION="4.17.23",Ce(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(t){$i[t].placeholder=$i})),Ce(["drop","take"],(function(e,i){Li.prototype[e]=function(n){n=n===t?1:pi(ua(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=Hn((function(t,e){return"function"==typeof t?new Li(this):this.map((function(i){return In(i,t,e)}))})),Li.prototype.reject=function(t){return this.filter(Es(ro(t)))},Li.prototype.slice=function(e,i){e=ua(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=ua(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=$i[r?"take"+("last"==i?"Right":""):i],s=r||/^find/.test(i);o&&($i.prototype[i]=function(){var i=this.__wrapped__,a=r?[1]:arguments,l=i instanceof Li,c=a[0],u=l||Ls(i),h=function(t){var e=o.apply($i,Ee([t],a));return r&&d?e[0]:e};u&&n&&"function"==typeof c&&1!=c.length&&(l=u=!1);var d=this.__chain__,f=s&&!d,p=l&&!this.__actions__.length;if(!s&&u){i=p?i:new Li(this);var b=e.apply(i,a);return b.__actions__.push({func:cs,args:[h],thisArg:t}),new Wi(b,d)}return f&&p?e.apply(this,a):(b=this.thru(h),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);$i.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=$i[e];if(i){var n=i.name+"";Ft.call(Ii,n)||(Ii[n]=[]),Ii[n].push({name:e,func:i})}})),Ii[$r(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,u=this.__iteratees__,h=u.length,d=0,f=bi(l,this.__takeCount__);if(!i||!n&&r==l&&f==l)return ur(t,this.__actions__);var p=[];t:for(;l--&&d<f;){for(var b=-1,g=t[c+=e];++b<h;){var v=u[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},$i.prototype.at=us,$i.prototype.chain=function(){return ls(this)},$i.prototype.commit=function(){return new Wi(this.value(),this.__chain__)},$i.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__++]}},$i.prototype.plant=function(e){for(var i,n=this;n instanceof Pi;){var r=Do(n);r.__index__=0,r.__values__=t,i?o.__wrapped__=r:i=r;var o=r;n=n.__wrapped__}return o.__wrapped__=e,i},$i.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)},$i.prototype.toJSON=$i.prototype.valueOf=$i.prototype.value=function(){return ur(this.__wrapped__,this.__actions__)},$i.prototype.first=$i.prototype.head,qt&&($i.prototype[qt]=function(){return this}),$i}();de?((de.exports=di)._=di,he._=di):ue._=di}.call(lt.exports)),lt.exports);
2
+ /**
3
+ * @license
4
+ * Lodash <https://lodash.com/>
5
+ * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
6
+ * Released under MIT license <https://lodash.com/license>
7
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
8
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
9
+ */class 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=ct.debounce((()=>{this._core.updateWorkspaceViewport(this._core.store.state.translateX,this._core.store.state.translateY,this._core.store.state.scale)}),300),this._debounceEndScaling=ct.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===b.Right&&(this._core.store.state.isPanning=!0,this._core.store.state.startX=e,this._core.store.state.startY=i)}if("touch"===t.pointerType){const t=Array.from(this._core.store.state.pointers.values());if(2===t.length){const e=this._core.store.currentPath;e&&this._core.store.state.objects.remove((t=>t.id===e.id)),this._core.store.state.isSelecting&&(this._core.store.state.isSelecting=!1,this._core.store.state.objects.remove((t=>t instanceof S)),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){const e=this._core.store.state.host.getBoundingClientRect(),i=t.clientY-e.top;this._core.store.state.pointerX=(t.clientX-e.left-this._core.store.state.translateX)/this._core.store.state.scale,this._core.store.state.pointerY=(i-this._core.store.state.translateY)/this._core.store.state.scale;const n=Array.from(this._core.store.state.pointers.values());if(2===n.length){const t=n[0].clientX-this._core.store.offsetX,e=n[0].clientY-this._core.store.offsetY,i=n[1].clientX-this._core.store.offsetX,r=n[1].clientY-this._core.store.offsetY,o=Math.sqrt(Math.pow(t-i,2)+Math.pow(e-r,2)),s=(t+i)/2,a=(e+r)/2,l=o/this.initialTouchDistance,c=this._core.store.state.scale*l;if(c>this._core.store.state.scaleMax||c<this._core.store.state.scaleMin)this._core.store.state.translateX=this._core.store.state.translateX+s-this.startX,this._core.store.state.translateY=this._core.store.state.translateY+a-this.startY;else{const t=(a-this._core.store.state.translateY)*(l-1);this._core.store.state.translateX=this._core.store.state.translateX+s-this.startX-(s-this._core.store.state.translateX)*(l-1),this._core.store.state.translateY=this._core.store.state.translateY+a-this.startY-t,this._core.store.state.scale=c,this.initialTouchDistance=o}this.startX=s,this.startY=a,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),this._debounceUpdate()}}}handlePointerUp(t){"mouse"===t.pointerType&&this._core.store.state.isPanning&&(this._core.store.state.isPanning=!1,this._core.rerender()),"touch"===t.pointerType&&0===this._core.store.state.pointers.size&&this._debounceEndScaling()}handleWheel(t){this.cancelViewportAnimation(),!0===t.ctrlKey&&Math.abs(t.deltaY)>0&&0===Math.abs(t.deltaX)&&this.handleZoom(t),t.ctrlKey||this.handlePan(t)}centerInViewport(t){const{scale:e,viewportWidth:i,viewportHeight:n}=this._core.store.state,{x:r,y:o,width:s,height:a}=t.rotatedBoundingBox,l=o+a/2;this._core.store.state.translateX=i/2-(r+s/2)*e,this._core.store.state.translateY=n/2-l*e,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),this._debounceUpdate()}centerFitInViewport(t){const e=Math.min(this._core.store.state.viewportWidth/(1.1*t.rotatedBoundingBox.width),this._core.store.state.viewportHeight/(1.1*t.rotatedBoundingBox.height),this._core.store.state.scaleMax),i=Math.max(e,this._core.store.state.scaleMin);this._core.store.state.scale=i,this.centerInViewport(t)}handleZoom(t){this._core.store.state.isScaling=!0;const e=this._core.store.state.host.getBoundingClientRect(),i=t.clientX-e.left,n=t.clientY-e.top;this._core.store.state.pointerX=(i-this._core.store.state.translateX)/this._core.store.state.scale,this._core.store.state.pointerY=(n-this._core.store.state.translateY)/this._core.store.state.scale;const r=Math.max(.8,Math.min(1.2,1+-.012*t.deltaY)),o=Math.min(this._core.store.state.scaleMax,Math.max(this._core.store.state.scaleMin,this._core.store.state.scale*r)),s=o/this._core.store.state.scale,a=(i-this._core.store.state.translateX)*(s-1),l=(n-this._core.store.state.translateY)*(s-1);this._core.store.state.scale=o,this._core.store.state.translateX=this._core.store.state.translateX-a,this._core.store.state.translateY=this._core.store.state.translateY-l,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),this._debounceUpdate(),this._debounceEndScaling()}handlePan(t){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 u=Math.min((c-a)/n,1),h=1-Math.pow(1-u,3);this._core.store.state.translateX=r+(t-r)*h,this._core.store.state.translateY=o+(e-o)*h,this._core.store.state.scale=s+(i-s)*h,this._core.store.state.hasViewportChanged=!0,this._core.rerender(),u<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 u=l-s,h=c-a,d=s+u/2,f=a+h/2,p=Math.min(this._core.store.state.viewportWidth/(1.1*u),this._core.store.state.viewportHeight/(1.1*h),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 ht extends M{shortcuts=[{key:"Escape",condition:t=>!!t.store.selectionGroup,action:t=>t.clearSelection()},{key:"Delete",condition:t=>!!t.store.selectionGroup,action:t=>t.delete()},{key:"z",ctrl:!0,action:t=>t.undo()},{key:"y",ctrl:!0,action:t=>t.redo()},{key:"s",ctrl:!0,action:()=>this.switchTool("selection")},{key:"b",ctrl:!0,action:()=>this.switchTool("brush")},{key:"e",ctrl:!0,action:()=>this.switchTool("eraser")},{key:"i",ctrl:!0,action:()=>this.switchTool("image")},{key:"x",ctrl:!0,action:()=>this.switchTool("text")},{key:"c",ctrl:!0,condition:t=>!!t.store.selectionGroup,action:t=>{t.copy(),t.rerender()}},{key:"v",ctrl:!0,condition:t=>!!t.store.state.copiedObjects&&!t.store.activeText,action:t=>t.paste()},{key:"+",ctrl:!0,condition:t=>!!t.store.selectionGroup,action:t=>t.bringForward()},{key:"-",ctrl:!0,condition:t=>!!t.store.selectionGroup,action:t=>t.sendBackward()},{key:"*",shift:!0,condition:t=>!!t.store.selectionGroup,action:t=>t.bringToFront()},{key:"_",shift:!0,condition:t=>!!t.store.selectionGroup,action:t=>t.sendToBack()},{key:"g",ctrl:!0,condition:t=>!!t.store.selectionGroup&&t.store.selectionGroup.objects.length>=2,action:t=>t.group()},{key:"G",ctrl:!0,shift:!0,condition:t=>!!t.store.selectionGroup,action:t=>t.ungroup()}];constructor(t){super(t)}switchTool(t){const e=l.getTool(t);this._core.store.setState("activeTool",e),this._core.deselectAllObjects(),e.onActivate()}handleKeyDown(t){this._core.store.state.isCtrlKeyPressed=t.ctrlKey;const e=this.shortcuts.find((e=>e.key===t.key&&!!e.ctrl===t.ctrlKey&&!!e.shift===t.shiftKey&&(!e.condition||e.condition(this._core))));e&&(t.preventDefault(),e.action(this._core))}handleKeyUp(t){this._core.store.state.isCtrlKeyPressed=t.ctrlKey}}class dt extends M{globalContextMenuItems=[];objectContextMenuItems=[];constructor(t,e,i){super(t),this.globalContextMenuItems=e,this.objectContextMenuItems=i}handleContextMenu(t){if(!(this._core.store.state.activeTool instanceof u))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 S)),this._core.store.state.isSelecting=!1);const i=this._core.getObjectFromPointerEvent(t,".object");if(i&&!(i instanceof I)&&!(i instanceof S)){const t=I.create(this._core);t.addOrRemove(i),t.isSelected=!0,t.rotation=i.rotation,this._core.store.state.isSelecting=!1,this._core.store.selectionGroup&&this._core.removeSelectionGroup(),this._core.addSelectionGroup(t),this._core.rerender()}this._core.store.state.contextMenuItems=this._core.store.selectionGroup?this.objectContextMenuItems:this.globalContextMenuItems;let n=t.clientX-this._core.store.offsetX,r=t.clientY-this._core.store.offsetY;const o=10;n+150>window.innerWidth-o&&(n=window.innerWidth-150-o),r+200>window.innerHeight-o&&(r=window.innerHeight-200-o),n=Math.max(o,n),r=Math.max(o,r),this._core.store.state.contextMenuX=n,this._core.store.state.contextMenuY=r,this._core.store.state.isContextMenuVisible=!0,this._core.store.state.isEnabled=!1,this._core.rerender()}}const ft={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 pt extends j{__class__="KritzelCustomElement";element;isInteractive=!0;constructor(t){super(),t&&(this.translateX=t.translateX||0,this.translateY=t.translateY||0,this.scale=t.scale||1,this.element=t.element,this.height=t.height||0,this.width=t.width||0)}static create(t,e){const i=new pt(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 bt{_core;constructor(t){this._core=t}revive(t){if(t&&"object"==typeof t){if(t.__class__){let e;switch(t.__class__){case"KritzelPath":e=A.create(this._core).deserialize(t);break;case"KritzelLine":e=F.create(this._core).deserialize(t);break;case"KritzelText":e=E.create(this._core,t.fontSize,t.fontFamily).deserialize(t);break;case"KritzelShape":e=a.create(this._core,{shapeType:t.shapeType,fillColor:t.fillColor,strokeColor:t.strokeColor,strokeWidth:t.strokeWidth,fontSize:t.fontSize,fontFamily:t.fontFamily,fontColor:t.fontColor}).deserialize(t);break;case"KritzelImage":e=T.create(this._core).deserialize(t);break;case"KritzelCustomElement":e=pt.create(this._core).deserialize(t);break;case"KritzelSelectionGroup":e=I.create(this._core).deserialize(t);break;case"KritzelGroup":e=_.create(this._core).deserialize(t);break;case"KritzelWorkspace":e=w.create(this._core,t).deserialize(t);break;case"KritzelBrushTool":e=new h(this._core);break;case"KritzelEraserTool":e=new m(this._core);break;case"KritzelImageTool":e=new x(this._core);break;case"KritzelSelectionTool":e=new u(this._core);break;case"KritzelTextTool":e=new f(this._core);break;case"KritzelLineTool":e=new d(this._core);break;case"KritzelShapeTool":e=new q(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 gt{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 gt({x:t,y:e,z:i,width:o,height:s},this.capacity),new gt({x:t+o,y:e,z:i,width:o,height:s},this.capacity),new gt({x:t,y:e+s,z:i,width:o,height:s},this.capacity),new gt({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 vt{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 gt({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 bt(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 $([this._objectsMap],{captureTimeout:200,trackedOrigins:new Set(["local","temporary"]),ignoreRemoteMapChanges:!0}),this._undoManager.on("stack-item-added",(t=>{"undo"===t.type&&"temporary"===t.origin&&this._temporaryItemsCount++})),this._undoManager.on("stack-item-popped",(t=>{"undo"===t.type&&"temporary"===t.origin&&this._temporaryItemsCount>0&&this._temporaryItemsCount--})),this._objectsMap.observe((t=>{this.handleObjectsChange(t)})),await Promise.all(this._providers.map((t=>t.connect()))),this._isReady=!0,this.loadFromYjs()}handleObjectsChange(t){if("local"===t.transaction.origin||"temporary"===t.transaction.origin)return void this._core?.rerender();const e=Array.from(t.keysChanged),i=[],n=[],r=[];e.forEach((e=>{const o=t.changes.keys.get(e);if(o&&"delete"===o.action)r.push(e);else{const t=this._objectsMap.get(e);if(t){const e=this._reviver.revive(t);e instanceof I?n.push(e):i.push(e)}}})),r.forEach((t=>{this.quadtree.remove((e=>e.id===t))})),i.forEach((t=>{this.quadtree.filter((e=>e.id===t.id)).length>0?this.quadtree.update(t):this.quadtree.insert(t)})),n.forEach((t=>{this.quadtree.filter((e=>e.id===t.id)).length>0?this.quadtree.update(t):this.quadtree.insert(t)})),this._core?.rerender()}transaction(t){this._ydoc&&this._ydoc.transact(t,"local")}loadFromYjs(){this._objectsMap&&this._reviver&&(this.quadtree.reset(),this._objectsMap.forEach((t=>{const e=this._reviver.revive(t);this.quadtree.insert(e)})))}reset(){this.quadtree.reset(),this._ydoc.transact((()=>{this._objectsMap.clear()}),"local")}insert(t){if(!t.id)return!1;if(this.quadtree.insert(t),this._objectsMap&&this.isPersistable(t)){const e=t.serialize();this._ydoc.transact((()=>{this._objectsMap.set(t.id,e)}),"local")}return!0}update(t,e={}){if(!t.id)return!1;if(!(this.quadtree.filter((e=>e.id===t.id)).length>0))return!1;if(this.quadtree.update(t),this._objectsMap&&this.isPersistable(t)){const i=t.serialize();this._ydoc.transact((()=>{this._objectsMap.set(t.id,i)}),e.temporary?"temporary":"local")}return!0}remove(t){const e=this.quadtree.filter(t);for(const t of e)this.quadtree.remove((e=>e.id===t.id)),this._objectsMap&&this.isPersistable(t)&&this._ydoc.transact((()=>{this._objectsMap.delete(t.id)}),"local")}filter(t){return this.quadtree.filter(t)}allObjects(){return this.quadtree.allObjects()}query(t){return this.quadtree.query(t)}isPersistable(t){return!(t instanceof S)}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 kt{_state;_listeners=new Map;get state(){return this._state}get currentZIndex(){return Math.max(0,...this._state.objects.filter((t=>!(t instanceof I||t instanceof S))).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 I||t instanceof S))).sort(((t,e)=>t.zIndex-e.zIndex))}get allNonSelectionObjects(){return this._state.objects.allObjects().filter((t=>!(t instanceof I||t instanceof S)))}get selectedObjects(){return this.allObjects.filter((t=>!(t instanceof I))).filter((t=>t.isSelected))}get selectionBox(){const t=this._state.objects.filter((t=>t instanceof S));return t.length>0?t[0]:null}get selectionGroup(){const t=this._state.objects.filter((t=>t instanceof I));return t.length>0?t[0]:null}get activeText(){const t=this._state.objects.filter((t=>t instanceof E&&t.isEditing));return t.length>0?t[0]:null}get activeShape(){const t=this._state.objects.filter((t=>t instanceof a&&t.isEditing));return t.length>0?t[0]:null}get currentPath(){const t=this._state.objects.filter((t=>t instanceof A&&!1===t.isCompleted));return t.length>0?t[0]:null}get currentLine(){const t=this._state.objects.filter((t=>t instanceof F&&!1===t.isCompleted));return t.length>0?t[0]:null}get offsetX(){return this._state.host.getBoundingClientRect().left}get offsetY(){return this._state.host.getBoundingClientRect().top}get isDisabled(){return!1===this._state.isEnabled||!1===this._state.isReady||null===this._state.activeWorkspace}get isPointerDown(){return this._state.pointers.size>0}constructor(t){this._state=t,this._state.objects=new vt}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 mt{_core;_targetElement=null;_shadowRoot=null;constructor(t){this._core=t}setTargetElement(t){this._targetElement&&(this._targetElement.style.cursor="",this._targetElement.style.removeProperty("--kritzel-pointer-cursor")),this._targetElement=t,this._targetElement&&this._targetElement.style.setProperty("--kritzel-pointer-cursor",R.getPointerCursor())}getTargetElement(){return this._targetElement}setShadowRoot(t){this._shadowRoot=t}resetToDefault(){this._core.store.state.cursor={icon:"default",iconActive:"default"}}updateHoverState(t){if(this._core.store.isPointerDown)return;if(!this._shadowRoot)return;const e=this._shadowRoot.elementsFromPoint(t.clientX,t.clientY);if(!e||0===e.length)return;const i=e.find((t=>t.classList.contains("resize-handle-overlay")));if(i){const t=this._core.store.selectionGroup,e=t?.rotationDegrees??0,n=i.classList.contains("top-left"),r=i.classList.contains("bottom-right");this._core.store.state.cursor={icon:"move-vertical",rotation:e+(n||r?-45:45)}}else this._core.store.state.cursor=e.find((t=>t.classList.contains("rotation-handle-overlay")))||e.find((t=>t.classList.contains("selection-line-handle-overlay")))?{icon:"hand",iconActive:"hand-grab"}:{icon:"default",iconActive:"default"}}applyCursor(){const t=this._core.store.state,e=this._core.store.isPointerDown,i=t.cursor?.icon,n=t.cursor?.iconActive??i,r=t.cursor?.rotation,o=R.getCursor({iconName:e?n:i,rotation:r});this._targetElement&&(this._targetElement.style.cursor=o)}cleanup(){this._targetElement&&(this._targetElement.style.cursor="",this._targetElement.style.removeProperty("--kritzel-pointer-cursor")),this._targetElement=null,this._shadowRoot=null}}class yt{_kritzelEngine;_store;_syncConfig;_appStateMap;_anchorManager;_cursorManager;get engine(){return this._kritzelEngine}get store(){return this._store}get appStateMap(){return this._appStateMap}get anchorManager(){return this._anchorManager}get cursorManager(){return this._cursorManager}constructor(t){this._kritzelEngine=t,this._store=new kt(ft),this._appStateMap=new P,this._anchorManager=new W(this),this._cursorManager=new mt(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 w(L.generateUUID(),"New Workspace"),o._core=this,this.saveWorkspaceToAppState(o)),localStorage.setItem("kritzel-active-workspace-id",o.id),this._store.state.objects&&this._store.state.objects.isReady&&this._store.state.objects.destroy();const s=new vt;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 I||t instanceof S))).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._store.state.objects?.destroy(),this.deleteWorkspaceFromAppState(t.id),this._store.state.workspaces=this.loadWorkspacesFromAppState(),window.indexedDB.deleteDatabase(`kritzel-workspace-${t.id}`)}updateWorkspaceViewport(t,e,i){const n=this._store.state.activeWorkspace;n&&(n.viewport={translateX:t,translateY:e,scale:i},n.updatedAt=new Date,this.saveWorkspaceToAppState(n))}addObject(t){this._store.state.objects.insert(t)}removeObject(t,e=!1){t instanceof _&&!e&&[...t.children].forEach((t=>{this.removeObject(t)})),t instanceof F?this._anchorManager.handleLineDeleted(t.id):this._anchorManager.handleObjectDeleted(t.id),t.isMounted=!1,this._store.state.objects.remove((e=>e.id===t.id))}updateObject(t,e){for(const i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);this._store.state.objects.update(t)}addSelectionGroup(t){this.removeSelectionGroup(),this.removeSelectionBox(),this._store.state.objects.insert(t),this._kritzelEngine.triggerSelectionChange()}removeSelectionGroup(){const t=this._store.selectionGroup;t&&(this._store.state.objects.remove((e=>e.id===t.id)),this._kritzelEngine.triggerSelectionChange())}removeSelectionBox(){const t=this._store.selectionBox;t&&this._store.state.objects.remove((e=>e.id===t.id))}deselectAllObjects(){this.removeSelectionGroup(),this.rerender()}delete(){const t=this._store.selectionGroup;t&&(t.objects.forEach((t=>this.removeObject(t))),this.removeSelectionGroup(),this.rerender())}undo(){this._store.state.objects?.undo()}redo(){this._store.state.objects?.redo()}deleteObject(t){const e=this.findObjectById(t);e&&(this.removeObject(e),this.rerender())}copy(){const t=this._store.selectionGroup;if(t){const e=new Map,i=t.objects.sort(((t,e)=>t.zIndex-e.zIndex)).map((t=>{const i=t.copy();return e.set(i.id,t.id),i}));this._store.state.copiedObjects=i,this._store.state.copiedObjectIdMapping=e}}paste(t,e){const i=this._store.state.copiedObjects;if(!i||0===i.length)return;const n=this._store.state.activeWorkspace,r=this._store.state.copiedObjectIdMapping,o=i.some((t=>t.workspaceId!==n.id)),s=Math.min(...i.map((t=>t.translateX))),a=Math.min(...i.map((t=>t.translateY)));let c,u;void 0!==t&&void 0!==e?(c=t,u=e):o?(c=s,u=a):(c=s+25/this._store.state.scale,u=a+25/this._store.state.scale);const h=c-s,d=u-a;this.removeSelectionGroup(),this.removeSelectionBox();const f=I.create(this),p=new Map;r&&r.forEach(((t,e)=>{p.set(t,e)})),i.forEach(((t,e)=>{if(t.workspaceId!==n.id&&(t.workspaceId=n.id),t.updatePosition(t.translateX+h,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+h,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 F){let e=!1;t.startAnchor&&p.has(t.startAnchor.objectId)&&(t.startAnchor={objectId:p.get(t.startAnchor.objectId)},e=!0),t.endAnchor&&p.has(t.endAnchor.objectId)&&(t.endAnchor={objectId:p.get(t.endAnchor.objectId)},e=!0),e&&this._store.state.objects.update(t)}})),this._anchorManager.rebuildIndex(),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",l.getTool("selection")),this.engine.emitObjectsChange(),this.rerender()}bringForward(t){const e=this._store.selectionGroup,i=t?[t]:e?.objects||[],n=this._store.allNonSelectionObjects.filter((t=>-1===i.findIndex((e=>e.id===t.id)))),r=n.length>0?Math.max(...n.map((t=>t.zIndex)))+1:0;i.forEach((t=>{t.zIndex!==r&&this.updateObject(t,{zIndex:t.zIndex+1})})),this.rerender()}sendBackward(t){const e=this._store.selectionGroup,i=t?[t]:e?.objects||[],n=this._store.allNonSelectionObjects.filter((t=>-1===i.findIndex((e=>e.id===t.id)))),r=n.length>0?Math.min(...n.map((t=>t.zIndex)))-1:0;i.forEach((t=>{t.zIndex!==r&&this.updateObject(t,{zIndex:t.zIndex-1})})),this.rerender()}bringToFront(t){const e=this._store.selectionGroup,i=t?[t]:e?.objects||[],n=this._store.allNonSelectionObjects.filter((t=>-1===i.findIndex((e=>e.id===t.id)))),r=Math.max(...n.map((t=>t.zIndex)))+1;i.forEach((t=>{this.updateObject(t,{zIndex:r})})),this.rerender()}sendToBack(t){const e=this._store.selectionGroup,i=t?[t]:e?.objects||[],n=this._store.allNonSelectionObjects.filter((t=>-1===i.findIndex((e=>e.id===t.id)))),r=Math.min(...n.map((t=>t.zIndex)))-1;i.forEach((t=>{this.updateObject(t,{zIndex:r})})),this.rerender()}group(){const t=this._store.selectionGroup;if(!t||t.objects.length<2)return;const e=_.createFromObjects(this,t.objects);this.addObject(e),this.removeSelectionGroup();const i=I.create(this);i.addOrRemove(e),i.isSelected=!0,i.rotation=e.rotation,this.addSelectionGroup(i),this.engine.emitObjectsChange(),this.rerender()}ungroup(){const t=this._store.selectionGroup;if(!t)return;const e=t.objects.filter((t=>t instanceof _));if(0===e.length)return;const i=[],n=t.objects.filter((t=>!(t instanceof _)));e.forEach((t=>{const e=t.ungroup();i.push(...e),this.removeObject(t,!0)})),this.removeSelectionGroup();const r=I.create(this);[...i,...n].forEach((t=>{r.addOrRemove(t)})),r.isSelected=!0,this.addSelectionGroup(r),this.engine.emitObjectsChange(),this.rerender()}selectObjects(t){if(0===t.length)return;const e=I.create(this);t.forEach((t=>{t.isSelected=!1,e.addOrRemove(t)})),e.isSelected=!0,1===t.length&&(e.rotation=e.objects[0].rotation),this.addSelectionGroup(e),this.rerender()}selectAllObjectsInViewport(){const t=this._store.state.objects.query({x:-this._store.state.translateX/this._store.state.scale,y:-this._store.state.translateY/this._store.state.scale,z:this._store.state.scale,width:this._store.state.viewportWidth/this._store.state.scale,height:this._store.state.viewportHeight/this._store.state.scale,depth:100}).filter((t=>t.isInViewport())).filter((t=>!(t instanceof I||t instanceof S||t instanceof Y)));if(t.length>0){const e=I.create(this);t.forEach((t=>{t.isSelected=!1,e.addOrRemove(t)})),e.isSelected=!0,this._store.state.isSelecting=!1,1===t.length&&(e.rotation=e.objects[0].rotation),this.addSelectionGroup(e),this._store.setState("activeTool",l.getTool("selection")),this.rerender()}}clearSelection(){this.removeSelectionGroup(),this._store.state.objects.remove((t=>t instanceof S||t instanceof I)),this._store.state.isSelecting=!1,this._store.state.isResizeHandleSelected=!1,this._store.state.isRotationHandleSelected=!1,this._store.state.isLineHandleSelected=!1,this._store.state.isLineHandleDragging=!1,this._store.state.lineHandleType=null,this.rerender()}resetActiveText(){const t=this._store.activeText;t&&(t.isEmpty?this.deleteObject(t.id):t.save())}resetActiveShape(){const t=this._store.activeShape;t&&t.save()}getObjectFromPointerEvent(t,e=".object"){const i=this._store.state.host?.shadowRoot;if(!i)return null;const n=t.clientX,r=t.clientY,o=i.elementFromPoint(n,r);if(!o)return null;const s=o.closest(e);if(s){const t=this._store.allObjects.find((t=>s.id===t.id)),e=t?.hitTest(n,r);return e?t:null}return null}getObjectsFromPointerEvent(t,e=".object"){const i=this._store.state.host?.shadowRoot;if(!i)return[];const n=i.elementsFromPoint(t.clientX,t.clientY);if(!n||0===n.length)return[];const r=new Set;return n.forEach((t=>{const i=t.closest(e);i&&i.id&&r.add(i.id)})),r.size>0?this._store.allObjects.filter((t=>r.has(t.id))).sort(((t,e)=>e.zIndex-t.zIndex)):[]}getElementsAtPoint(t,e){const i=this._store.state.host?.shadowRoot;if(!i)return[];const n=i.elementsFromPoint(t.clientX,t.clientY);return n&&0!==n.length?n.filter((t=>t.matches(e))):[]}isPointerOverElement(t,e){return this.getElementsAtPoint(t,e).length>0}getCanvasPoint(t){if(!this._store.state.host)return{x:0,y:0};const e=this._store.state.host.getBoundingClientRect();return{x:(t.clientX-e.left-this._store.state.translateX)/this._store.state.scale,y:(t.clientY-e.top-this._store.state.translateY)/this._store.state.scale}}beforeWorkspaceChange(){this._kritzelEngine.viewport?.cancelPendingUpdates(),this._store.state.activeWorkspace&&this.updateWorkspaceViewport(this._store.state.translateX,this._store.state.translateY,this._store.state.scale),this.resetActiveText(),this.clearSelection(),this._store.setState("activeTool",l.getTool("selection"))}displaySelectionGroupUI(t){if(!t.isSelected)return!1;const e=this._store.selectionGroup;return e?e.objects.length>1||(1!==e.objects.length||!(e.objects[0]instanceof F)):!(t instanceof F)}displaySelectionLineUI(t){if(!(t instanceof F))return!1;const e=this._store.selectionGroup;if(!e)return t.isSelected;if(!e.isSelected)return!1;if(1===e.objects.length){const i=e.objects[0];return i instanceof F&&i.id===t.id}return!1}}const xt=(()=>{let t=0;return()=>(t+=1,`u${`0000${(Math.random()*36**4|0).toString(36)}`.slice(-4)}${t}`)})();function wt(t){const e=[];for(let i=0,n=t.length;i<n;i++)e.push(t[i]);return e}let zt=null;function Ct(t={}){return zt||(t.includeStyleProperties?(zt=t.includeStyleProperties,zt):(zt=wt(window.getComputedStyle(document.documentElement)),zt))}function St(t,e){const i=(t.ownerDocument.defaultView||window).getComputedStyle(t).getPropertyValue(e);return i?parseFloat(i.replace("px","")):0}function Mt(t,e={}){return{width:e.width||function(t){const e=St(t,"border-left-width"),i=St(t,"border-right-width");return t.clientWidth+e+i}(t),height:e.height||function(t){const e=St(t,"border-top-width"),i=St(t,"border-bottom-width");return t.clientHeight+e+i}(t)}}const It=16384;function jt(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 Tt(t,e,i,n){const r=window.getComputedStyle(t,i),o=r.getPropertyValue("content");if(""===o||"none"===o)return;const s=xt();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 Ct(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",Ft="image/jpeg",At={woff:Et,woff2:Et,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:Ft,jpeg:Ft,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 At[e]||""}function Dt(t){return-1!==t.search(/^(data:)/)}async function $t(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 Rt={};async function Pt(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!=Rt[n])return Rt[n];let r;i.cacheBust&&(t+=(/\?/.test(t)?"&":"?")+(new Date).getTime());try{const n=await $t(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 Rt[n]=r,r}const Wt=t=>null!=t.tagName&&"SLOT"===t.tagName.toUpperCase(),Lt=t=>null!=t.tagName&&"SVG"===t.tagName.toUpperCase();async function Vt(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):jt(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),jt(e.toDataURL())}const i=t.poster,n=Ot(i);return jt(await Pt(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 Vt(t.contentDocument.body,e,!0)}catch(t){}return t.cloneNode(!1)}(t,e):t.cloneNode(Lt(t))}(t,e))).then((i=>async function(t,e,i){var n,r;if(Lt(e))return e;let o=[];return o=Wt(t)&&t.assignedNodes?wt(t.assignedNodes()):_t(t,HTMLIFrameElement)&&(null===(n=t.contentDocument)||void 0===n?void 0:n.body)?wt(t.contentDocument.body.childNodes):wt((null!==(r=t.shadowRoot)&&void 0!==r?r:t).childNodes),0===o.length||_t(t,HTMLVideoElement)||await o.reduce(((t,n)=>t.then((()=>Vt(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):Ct(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){Tt(t,e,":before",i),Tt(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 Vt(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 Ut=/url\((['"]?)([^'"]+?)\1\)/g,Kt=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,Bt=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function Nt(t){return-1!==t.search(Ut)}async function Ht(t,e,i){if(!Nt(t))return t;const n=function(t,{preferredFontFormat:e}){return e?t.replace(Bt,(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(Ut,((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 Pt(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 Yt(t,e,i){var n;const r=null===(n=e.style)||void 0===n?void 0:n.getPropertyValue(t);if(r){const n=await Ht(r,null,i);return e.style.setProperty(t,n,e.style.getPropertyPriority(t)),!0}return!1}async function qt(t,e){_t(t,Element)&&(await async function(t,e){await Yt("background",t,e)||await Yt("background-image",t,e),await Yt("mask",t,e)||await Yt("-webkit-mask",t,e)||await Yt("mask-image",t,e)||await Yt("-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 Pt(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=wt(t.childNodes).map((t=>qt(t,e)));await Promise.all(i).then((()=>t))}(t,e))}const Gt={};async function Xt(t){let e=Gt[t];if(null!=e)return e;const i=await fetch(t);return e={url:t,cssText:await i.text()},Gt[t]=e,e}async function Zt(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),$t(o,e.fetchRequestInit,(({result:t})=>(i=i.replace(r,`url(${t})`),[r,t])))}));return Promise.all(r).then((()=>i))}function Jt(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 Qt(t){return t.trim().replace(/["']/g,"")}async function te(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=wt(t.ownerDocument.styleSheets),n=await async function(t,e){const i=[],n=[];return t.forEach((i=>{if("cssRules"in i)try{wt(i.cssRules||[]).forEach(((t,r)=>{if(t.type===CSSRule.IMPORT_RULE){let o=r+1;const s=Xt(t.href).then((t=>Zt(t,e))).then((t=>Jt(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(Xt(i.href).then((t=>Zt(t,e))).then((t=>Jt(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{wt(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(Qt(t))})),Array.from(i.children).forEach((e=>{e instanceof HTMLElement&&t(e)}))}(t),e}(t);return(await Promise.all(i.filter((t=>n.has(Qt(t.style.fontFamily)))).map((t=>Ht(t.cssText,t.parentStyleSheet?t.parentStyleSheet.href:null,e))))).join("\n")}async function ee(t,e={}){const{width:i,height:n}=Mt(t,e),r=await Vt(t,e,!0);return await async function(t,e){const i=null!=e.fontEmbedCSS?e.fontEmbedCSS:e.skipFonts?null:await te(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 qt(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 ie=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=it;validateScaleMax(t){t>it?(console.warn("scaleMax cannot be greater than 1000."),this.scaleMax=it,this.core.store.state.scaleMax=this.scaleMax):this.core.store.state.scaleMax=t}scaleMin=nt;validateScaleMin(t){t<nt?(console.warn("scaleMin cannot be less than 0.0001."),this.scaleMin=nt,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}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||(p.isTouchDevice()&&c.onLongPress(t,(t=>this.longpress.emit(t))),this.host.setPointerCapture(t.pointerId),this.core.store.state.pointers.set(t.pointerId,t),this.viewport.handlePointerDown(t),this.core.store.state?.activeTool?.handlePointerDown(t))}throttledPointerMoveMulti=ct.throttle((t=>{this.viewport.handlePointerMove(t),this.core.store.state?.activeTool?.handlePointerMove(t)}),16);handlePointerMove(t){this.core.store.isDisabled||(this.core.store.state.pointers.has(t.pointerId)&&this.core.store.state.pointers.set(t.pointerId,t),this.core.store.state.pointers.size>1&&this.throttledPointerMoveMulti(t),this.core.cursorManager.updateHoverState(t),this.viewport.handlePointerMove(t),this.core.store.state?.activeTool?.handlePointerMove(t))}handlePointerUp(t){this.core.store.isDisabled||(this.core.store.state.pointers.delete(t.pointerId),this.host.releasePointerCapture(t.pointerId),0===this.core.store.state.pointers.size&&this.core.cursorManager.resetToDefault(),this.viewport.handlePointerUp(t),this.core.store.state?.activeTool?.handlePointerUp(t))}handlePointerCancel(t){this.core.store.isDisabled||(this.host.releasePointerCapture(t.pointerId),this.core.store.state.pointers.delete(t.pointerId),0===this.core.store.state.pointers.size&&this.core.cursorManager.resetToDefault(),this.viewport.handlePointerUp(t),this.core.store.state?.activeTool?.handlePointerUp(t))}handleLongPress(t){this.contextMenuHandler.handleContextMenu(t.detail)}handleContextMenu(t){t.preventDefault(),this.core.store.isDisabled||"touch"!==t.pointerType&&this.contextMenuHandler.handleContextMenu(t)}handleResize(){this.viewport.handleResize()}handleKeyDown(t){this.core.store.isDisabled||this.keyHandler.handleKeyDown(t)}handleKeyUp(t){this.core.store.isDisabled||this.keyHandler.handleKeyUp(t)}preventDoubleTapZoomOnTouchDevices(t){t.preventDefault()}async registerTool(t,e,i){if("function"!=typeof e||!(e.prototype instanceof o))return console.error(`Failed to register tool "${t}": Tool class must be a constructor function`),null;const n=l.registerTool(t,e,this.core);return i&&Object.entries(i).forEach((([t,e])=>{n[t]=e})),Promise.resolve(n)}async changeActiveTool(t){this.core.store.state.activeTool!==t&&(this.core.store.state.activeTool?.onDeactivate(),this.core.store.setState("activeTool",t),this.core.deselectAllObjects(),t?.onActivate())}async disable(){this.core.store.state.isEnabled=!1,this.core.rerender()}async enable(){this.core.store.state.isEnabled=!0,this.core.rerender()}async delete(){this.core.delete()}async copy(){this.core.copy()}async paste(t,e){this.core.paste(t,e)}async bringForward(t){this.core.bringForward(t)}async sendBackward(t){this.core.sendBackward(t)}async bringToFront(t){this.core.bringToFront(t)}async sendToBack(t){this.core.sendToBack(t)}async group(){this.core.group()}async ungroup(){this.core.ungroup()}async undo(){this.core.undo()}async redo(){this.core.redo()}async hideContextMenu(){this.core.store.state.pointers.clear(),this.core.store.state.isContextMenuVisible=!1,this.core.store.state.objects.remove((t=>t instanceof S)),this.core.store.state.isSelecting=!1,this.core.store.state.isEnabled=!0,this.core.rerender()}async getObjectById(t){return this.core.store.allObjects.find((e=>e.id===t))||null}async addObject(t){return this.core.deselectAllObjects(),t.id=t.generateId(),t._core=this.core,t.scale=t.scale?t.scale:this.core.store.state.scale,t.zIndex=this.core.store.currentZIndex,this.core.addObject(t),this.core.rerender(),t}async updateObject(t,e){return this.core.deselectAllObjects(),this.core.updateObject(t,e),this.core.rerender(),t}async removeObject(t){return this.core.deselectAllObjects(),this.core.store.state.objects.remove((e=>e.id===t.id)),this.core.rerender(),t}async getSelectedObjects(){const t=this.core.store.selectionGroup;return t?t.objects:[]}async selectObjects(t){this.core.store.state.activeTool?.onDeactivate(),this.core.store.setState("activeTool",l.getTool("selection")),this.core.deselectAllObjects(),this.core.selectObjects(t)}async selectAllObjectsInViewport(){this.core.store.state.activeTool?.onDeactivate(),this.core.store.setState("activeTool",l.getTool("selection")),this.core.deselectAllObjects(),this.core.selectAllObjectsInViewport()}async clearSelection(){this.core.clearSelection()}async centerObjectInViewport(t){return t.centerInViewport(),this.core.updateObject(t,t),this.core.rerender(),t}async 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 ee(this.host,i):await async function(t,e={}){return(await async function(t,e={}){const{width:i,height:n}=Mt(t,e),r=await ee(t,e),o=await jt(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,u=e.canvasHeight||n;return s.width=c*l,s.height=u*l,e.skipAutoScale||function(t){(t.width>It||t.height>It)&&(t.width>It&&t.height>It?t.width>t.height?(t.height*=It/t.width,t.width=It):(t.width*=It/t.height,t.height=It):t.width>It?(t.height*=It/t.width,t.width=It):(t.width*=It/t.height,t.height=It))}(s),s.style.width=`${c}`,s.style.height=`${u}`,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 u&&this.core.store.state.isSelecting}get isSelectionActive(){return this.core.store.state.activeTool instanceof u&&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 yt(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 dt(this.core,this.globalContextMenuItems,this.objectContextMenuItems),this.keyHandler=new ht(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),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 u||(this.core.clearSelection(),this.core.store.state.objects.remove((t=>t instanceof S)),this.core.store.state.isSelecting=!1,this.core.store.state.isResizeHandleSelected=!1,this.core.store.state.isRotationHandleSelected=!1),this.core.store.state.skipContextMenu=!1,this.core.store.state.copiedObjects=null,this.activeToolChange.emit(t),C.forceHideKeyboard(),this.core.rerender()}render(){const t=window.getComputedStyle(this.host).getPropertyValue("--kritzel-selection-handle-size").trim()||"6px",e=parseFloat(t),r=2*e<14?14:e,o=this.core.store.state.viewportWidth/2+this.core.store.state.translateX,s=this.core.store.state.viewportHeight/2+this.core.store.state.translateY,a=this.core.store.state.objects.query({x:-this.core.store.state.translateX/this.core.store.state.scale,y:-this.core.store.state.translateY/this.core.store.state.scale,z:this.core.store.state.scale,width:this.core.store.state.viewportWidth/this.core.store.state.scale,height:this.core.store.state.viewportHeight/this.core.store.state.scale,depth:100}).sort(((t,e)=>t.zIndex-e.zIndex));return this.core.cursorManager.applyCursor(),this.core.store.totalObjectCount>0&&this.objectsInViewportChange.emit(a),i(n,{key:"39f0ffff986b61133ad44f5eadab07f7d776cb01"},this.core.store.state.debugInfo.showViewportInfo&&i("div",{key:"946bfcc8d6fb9986c1b7b7fc150eb7dfc45cbb59",class:"debug-panel"},i("div",{key:"ae6f054b4aefca557228d810125dec1b7695654c"},"ActiveWorkspaceId: ",this.core.store.state?.activeWorkspace?.id),i("div",{key:"f47b71175c0dd1db6fb1a82bbdfd5532a1ce55b3"},"ActiveWorkspaceName: ",this.core.store.state?.activeWorkspace?.name),i("div",{key:"aba67c4bd24fb9b03848614831d48e6d70ec104f"},"TranslateX: ",this.core.store.state?.translateX),i("div",{key:"f1c32b14966542f41a9118e3af76bd3f54ae0039"},"TranslateY: ",this.core.store.state?.translateY),i("div",{key:"9d4457d49b8a2f5420fb115d41e9aeef2f72eb59"},"ViewportWidth: ",this.core.store.state?.viewportWidth),i("div",{key:"53b482102ec828758904dcc4c8d62e8e960f87f0"},"ViewportHeight: ",this.core.store.state?.viewportHeight),i("div",{key:"8f3a6156b882350b3ead9c5778df5c7c80ca8888"},"PointerCount: ",this.core.store.state.pointers.size),i("div",{key:"6471128d6613f638848ea99e2337126828c6236a"},"Scale: ",this.core.store.state?.scale),i("div",{key:"f70133c73206ae0651a7777a87ecbfc967f97e0d"},"ActiveTool: ",this.core.store.state?.activeTool?.name),i("div",{key:"172b5725dbb9b37a1b63df04e908906d5b04445d"},"HasViewportChanged: ",this.core.store.state?.hasViewportChanged?"true":"false"),i("div",{key:"114e8afde10ea3e8eae32a2772914b56a0c718f4"},"IsEnabled: ",this.core.store.state?.isEnabled?"true":"false"),i("div",{key:"9e8288cdf8d9f365317649fd36fd32f41d18a165"},"IsScaling: ",this.core.store.state?.isScaling?"true":"false"),i("div",{key:"2498b02ef54fdb9752ca2c86ccb6a24ef272ee03"},"IsPanning: ",this.core.store.state?.isPanning?"true":"false"),i("div",{key:"66b10615c0c15b2d1f93e22954bae32a171cda26"},"IsSelecting: ",this.isSelecting?"true":"false"),i("div",{key:"8a246ad747b8b289e89d7edd8df84b74d88363de"},"IsSelectionActive: ",this.isSelectionActive?"true":"false"),i("div",{key:"5d8086caabac9183f9be9076fa724d5d6b009b2a"},"IsResizeHandleSelected: ",this.core.store.state.isResizeHandleSelected?"true":"false"),i("div",{key:"edf7cbb6439ec09b26e895b696e80981a127ec8f"},"IsRotationHandleSelected: ",this.core.store.state.isRotationHandleSelected?"true":"false"),i("div",{key:"ad95478b84f7381fb32eb23606e5697e944649c2"},"IsRotationHandleHovered: ",this.core.store.state.isRotationHandleHovered?"true":"false"),i("div",{key:"ec41d473e9194732c6846ea388c24b4e2edd6119"},"IsDrawing: ",this.core.store.state.isDrawing?"true":"false"),i("div",{key:"dbe271f716901a41c857724abbf0837b63995e07"},"IsWriting: ",this.core.store.state.isWriting?"true":"false"),i("div",{key:"e8d6bac1c6069923cfd3f5d6177b60d6d3ad6eaa"},"IsPointerDown: ",this.core.store.isPointerDown?"true":"false"),i("div",{key:"a2b19dff95c8e35f7b40f9e378e8ca49e878d939"},"PointerX: ",this.core.store.state?.pointerX),i("div",{key:"f94f38ae42e2c98df3a82f09e18fa482f5c1a415"},"PointerY: ",this.core.store.state?.pointerY),i("div",{key:"1bfc6689f25c7912074f147394ea1d9fce42d990"},"SelectedObjects: ",this.core.store.selectionGroup?.objects.length||0),i("div",{key:"a7761da6ae5caa3f0df089b223006959ffec65fd"},"ViewportCenter: (",o.toFixed(2),", ",s.toFixed(2),")")),i("div",{key:"485aa0df270cc27992abfac5f7639967aa6845a3",id:"origin",class:"origin",style:{transform:`matrix(${this.core.store.state?.scale}, 0, 0, ${this.core.store.state?.scale}, ${this.core.store.state?.translateX}, ${this.core.store.state?.translateY})`}},a?.map((t=>i("div",{key:t.id,style:{transform:t?.transformationMatrix,transformOrigin:"top left",position:"absolute",pointerEvents:this.core.store.state.isScaling?"none":"auto"}},i("svg",{xmlns:"http://www.w3.org/2000/svg",id:t.id,class:"object",style:{zIndex:t.zIndex.toString(),height:t?.totalHeight+"px",width:t?.totalWidth+"px",left:"0",top:"0",position:"absolute",transform:0!==t.rotationDegrees?`rotate(${t.rotationDegrees}deg)`:void 0,transformOrigin:0!==t.rotationDegrees?`${t.totalWidth/2}px ${t.totalHeight/2}px`:void 0,opacity:t.markedForRemoval?"0.5":t.opacity.toString(),pointerEvents:t.markedForRemoval?"none":"auto"}},V.isInstanceOf(t,"KritzelPath")&&i("svg",{ref:e=>t.mount(e),xmlns:"http://www.w3.org/2000/svg",style:{overflow:"visible"},viewBox:t?.viewBox},i("path",{d:t?.d,fill:t.fill,stroke:t?.stroke,"shape-rendering":t.isLowRes()?"optimizeSpeed":"auto"})),V.isInstanceOf(t,"KritzelLine")&&i("svg",{ref:e=>t.mount(e),xmlns:"http://www.w3.org/2000/svg",style:{overflow:"visible"},viewBox:t?.viewBox},i("defs",null,t.hasStartArrow&&i("marker",{id:t.startMarkerId,markerWidth:t.getArrowSize("start"),markerHeight:t.getArrowSize("start"),refX:0,refY:t.getArrowSize("start")/2,orient:"auto-start-reverse",markerUnits:"userSpaceOnUse"},i("path",{d:t.getArrowPath(t.arrows?.start?.style),fill:t.getArrowFill("start"),transform:`scale(${t.getArrowSize("start")/10})`})),t.hasEndArrow&&i("marker",{id:t.endMarkerId,markerWidth:t.getArrowSize("end"),markerHeight:t.getArrowSize("end"),refX:0,refY:t.getArrowSize("end")/2,orient:"auto",markerUnits:"userSpaceOnUse"},i("path",{d:t.getArrowPath(t.arrows?.end?.style),fill:t.getArrowFill("end"),transform:`scale(${t.getArrowSize("end")/10})`}))),i("path",{d:this.core.anchorManager.computeClippedLinePath(t),fill:"none",stroke:"transparent","stroke-width":Math.max(t?.strokeWidth||0,10),"stroke-linecap":"round"}),i("path",{d:this.core.anchorManager.computeClippedLinePath(t),fill:"none",stroke:t?.stroke,"stroke-width":t?.strokeWidth,"stroke-linecap":"round","marker-start":t.hasStartArrow?`url(#${t.startMarkerId})`:void 0,"marker-end":t.hasEndArrow?`url(#${t.endMarkerId})`:void 0})),i("foreignObject",{x:"0",y:"0",width:t.totalWidth.toString(),height:t.totalHeight.toString(),style:{minHeight:"0",minWidth:"0",backgroundColor:t.backgroundColor,borderColor:t.borderColor,borderWidth:t.borderWidth+"px",borderStyle:"solid",padding:t.padding+"px",overflow:"visible",display:V.isInstanceOf(t,"KritzelLine")||V.isInstanceOf(t,"KritzelPath")?"none":"block"}},V.isInstanceOf(t,"KritzelImage")&&i("img",{ref:e=>t.mount(e),src:t.src,style:{width:"100%",height:"100%",userSelect:"none",pointerEvents:"none",imageRendering:this.core.store.state.isScaling||this.core.store.state.isPanning?"pixelated":"auto"},draggable:!1,onDragStart:t=>t.preventDefault()}),V.isInstanceOf(t,"KritzelText")&&i("div",{id:"text-object",ref:e=>t.mount(e),onPointerDown:e=>t.handlePointerDown(e),onPointerMove:e=>t.handlePointerMove(e),onPointerUp:e=>t.handlePointerUp(e),style:{minWidth:t.initialWidth+"px",minHeight:t.initialHeight+"px",maxWidth:"500px",height:"auto",width:"max-content",transformOrigin:"top left",transform:`scale(${t.scaleFactor})`,backgroundColor:t.backgroundColor,overflow:"visible",textRendering:this.core.store.state.isScaling||this.core.store.state.isPanning?"optimizeSpeed":"auto"}}),V.isInstanceOf(t,"KritzelShape")&&i("div",{ref:e=>t.mount(e),onPointerDown:e=>t.handlePointerDown(e),onPointerMove:e=>t.handlePointerMove(e),onPointerUp:e=>t.handlePointerUp(e),style:{width:"100%",height:"100%",position:"relative",overflow:"visible"}},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:t.viewBox,preserveAspectRatio:"none"},i("path",{d:t.getSvgPath(),fill:t.fillColor,stroke:t.strokeColor,"stroke-width":t.strokeWidth})),i("div",{ref:e=>t.mountTextEditor(e),style:{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",textAlign:"center",overflow:"hidden",pointerEvents:t.isEditing?"auto":"none"}})),V.isInstanceOf(t,"KritzelCustomElement")&&i("div",{ref:e=>t.mount(e),style:{width:"100%",height:"100%",pointerEvents:"auto",overflow:"hidden",display:"block"}}),V.isInstanceOf(t,"KritzelSelectionGroup")&&!this.core.displaySelectionLineUI(t)&&i("div",{ref:e=>t.mount(e),style:{width:"100%",height:"100%"}}),V.isInstanceOf(t,"KritzelSelectionBox")&&i("div",{ref:e=>t.mount(e),style:{width:"100%",height:"100%",backgroundColor:p.isFirefox()?t.backgroundColor:"transparent",borderWidth:p.isFirefox()?t.borderWidth+"px":"0",borderStyle:p.isFirefox()?"solid":"none",borderColor:p.isFirefox()?t.borderColor:"transparent"}}))),this.core.store.state.debugInfo.showObjectInfo&&t.isDebugInfoVisible&&i("div",{style:{pointerEvents:"none",position:"absolute",left:`${t.totalWidth}px`,top:"0",zIndex:(t.zIndex+2).toString()}},i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"Id: ",t.id),i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"width: ",t.width),i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"height: ",t.height),i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"translateX: ",t.translateX),i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"translateY: ",t.translateY),i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"rotationDegrees: ",t.rotationDegrees),i("div",{style:{whiteSpace:"nowrap",fontSize:"10px"}},"zIndex: ",t.zIndex)),i("svg",{xmlns:"http://www.w3.org/2000/svg",style:{zIndex:(t.zIndex+1).toString(),height:t?.totalHeight.toString(),width:t?.totalWidth.toString(),left:"0",top:"0",position:"absolute",transform:`rotate(${t.rotationDegrees}deg)`,transformOrigin:`${t.totalWidth/2}px ${t.totalHeight/2}px`,overflow:"visible",pointerEvents:"none"}},this.core.displaySelectionGroupUI(t)&&i("g",{class:"selection-group-ui",style:{pointerEvents:"none"}},i("g",{class:"selection-group-borders"},i("line",{x1:"0",y1:"0",x2:t.totalWidth,y2:"0",style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),i("line",{x1:"0",y1:"0",x2:"0",y2:t.totalHeight,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),i("line",{x1:"0",y1:t.totalHeight,x2:t.totalWidth,y2:t.totalHeight,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}}),i("line",{x1:t.totalWidth,y1:"0",x2:t.totalWidth,y2:t.totalHeight,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"square"}})),!this.isSelecting&&i("g",{class:"selection-group-handles",style:{pointerEvents:"auto"}},i("circle",{class:"resize-handle top-left",cx:"0",cy:"0",r:""+e*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),i("circle",{class:"resize-handle-overlay top-left",cx:"0",cy:"0",r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),i("circle",{class:"resize-handle top-right",cx:t.totalWidth,cy:"0",r:""+e*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),i("circle",{class:"resize-handle-overlay top-right",cx:t.totalWidth,cy:"0",r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),i("circle",{class:"resize-handle bottom-left",cx:"0",cy:t.totalHeight,r:""+e*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),i("circle",{class:"resize-handle-overlay bottom-left",cx:"0",cy:t.totalHeight,r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),i("circle",{class:"resize-handle bottom-right",cx:t.totalWidth,cy:t.totalHeight,r:""+e*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),i("circle",{class:"resize-handle-overlay bottom-right",cx:t.totalWidth,cy:t.totalHeight,r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),i("line",{x1:t.totalWidth/2,y1:"0",x2:t.totalWidth/2,y2:-15*t.scale/this.core.store.state?.scale,style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${this.core.store.state?.scale})`}}),i("circle",{class:"rotation-handle",cx:t.totalWidth/2,cy:-15*t.scale/this.core.store.state?.scale,r:""+e*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),i("circle",{class:"rotation-handle-overlay",cx:t.totalWidth/2,cy:-15*t.scale/this.core.store.state?.scale,r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}))),this.core.displaySelectionLineUI(t)&&V.isInstanceOf(t,"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(t,!0),style:{stroke:"var(--kritzel-selection-border-color, #007AFF)",strokeWidth:`calc(var(--kritzel-selection-border-width, 2px) * ${t.scale} / ${this.core.store.state?.scale})`,strokeLinecap:"round",fill:"none"}})),!this.isSelecting&&i("g",{class:"selection-line-handles",style:{pointerEvents:"auto"}},i("circle",{class:"selection-line-handle start",cx:t.startX-t.x,cy:t.startY-t.y,r:""+e*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),i("circle",{class:"selection-line-handle-overlay start",cx:t.startX-t.x,cy:t.startY-t.y,r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),i("circle",{class:"selection-line-handle center",cx:void 0!==t.controlX?(t.startX+2*t.controlX+t.endX)/4-t.x:(t.startX-t.x+t.endX-t.x)/2,cy:void 0!==t.controlY?(t.startY+2*t.controlY+t.endY)/4-t.y:(t.startY-t.y+t.endY-t.y)/2,r:""+e*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),i("circle",{class:"selection-line-handle-overlay center",cx:void 0!==t.controlX?(t.startX+2*t.controlX+t.endX)/4-t.x:(t.startX-t.x+t.endX-t.x)/2,cy:void 0!==t.controlY?(t.startY+2*t.controlY+t.endY)/4-t.y:(t.startY-t.y+t.endY-t.y)/2,r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}),i("circle",{class:"selection-line-handle end",cx:t.endX-t.x,cy:t.endY-t.y,r:""+e*t.scale/this.core.store.state?.scale,style:{fill:"var(--kritzel-selection-handle-color, #000000)",paintOrder:"fill"}}),i("circle",{class:"selection-line-handle-overlay end",cx:t.endX-t.x,cy:t.endY-t.y,r:""+r*t.scale/this.core.store.state?.scale,style:{fill:"transparent",paintOrder:"fill"}}))))))),(()=>{const t=this.core.anchorManager.getAnchorLinesRenderData();return t?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:"a46409b1a9d2c7a97e2463ac689e4fa1b0802a70",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 m&&!this.core.store.state.isScaling&&i("kritzel-cursor-trail",{key:"479b86bb97be00f0859a62b2b16f419dff6d2bac",core:this.core}))}static get watchers(){return{workspace:[{onWorkspaceChange:0}],scaleMax:[{validateScaleMax:0}],scaleMin:[{validateScaleMin:0}],cursorTarget:[{onCursorTargetChange:0}],lockDrawingScale:[{onLockDrawingScaleChange:0}]}}};ie.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 ne=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"))))))}};ne.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-border-color, #dbdbdb)}.export-content p{margin:0;color:var(--kritzel-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-border-color, #dbdbdb);border-radius:8px;background-color:transparent;cursor:pointer;transition:all 0.2s ease;color:var(--kritzel-text-primary, #333)}.export-button:hover{background-color:var(--kritzel-hover-background, #f5f5f5);border-color:var(--kritzel-primary-color, #007bff);color:var(--kritzel-primary-color, #007bff)}.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-background-secondary, #f0f0f0)}.export-button span{font-weight:500;font-size:14px}";const re=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"))}};re.style=":host{display:block}.font-preview{color:var(--kritzel-font-size-text-color, #333333);line-height:1;text-align:center;font-weight:bold}";const oe=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}}))}};oe.style=":host{display:flex;align-items:flex-start;gap:8px;padding:0;box-sizing:border-box;width:100%}.font-style-button{display:flex;justify-content:center;align-items:center;width:42px;height:32px;padding:0;border:none;outline:none;background:none;cursor:var(--kritzel-pointer-cursor, pointer);border-radius:0;color:var(--control-text-color);font-weight:bold;-webkit-tap-highlight-color:transparent}.font-style-button:not(:last-child){border-right:1px solid #333333}.font-style-button:hover{background-color:var(--control-hover-bg)}.font-style-button:active{background-color:var(--control-active-bg)}.font-style-button.selected,.font-style-button.selected:hover,.font-style-button.selected:active{background-color:var(--control-selected-bg);color:var(--control-selected-color)}.font-style-button.italic-text{font-style:italic}";const se=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:"ff67ad4d16bd94901abdd29961ff22da1ce59e02"},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})))))}};se.style=":host{display:flex;align-items:flex-start;gap:8px;padding:0;box-sizing:border-box}.size-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:4px;cursor:var(--kritzel-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;border-radius:50%}.size-container:hover{background-color:var(--kritzel-font-size-hover-background-color, #ebebeb)}.size-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-font-size-selected-background-color, #e0e0e0)}";const ae=class{constructor(e){t(this,e)}name;label;size=24;render(){const t=z.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`},"?"))}};ae.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 le=class{constructor(i){t(this,i),this.valueChange=e(this,"valueChange")}styles=["none","triangle"];value;strokeColor="#000000";valueChange;getStartEnding(){return this.value?.start?.enabled?this.value.start.style??"triangle":"none"}getEndEnding(){return this.value?.end?.enabled?this.value.end.style??"triangle":"none"}handleStartChange(t){const e={...this.value,start:"none"===t?{enabled:!1}:{enabled:!0,style:t}};this.value=e,this.valueChange.emit(e)}handleEndChange(t){const e={...this.value,end:"none"===t?{enabled:!1}:{enabled:!0,style:t}};this.value=e,this.valueChange.emit(e)}getEndingPath(t){switch(t){case"triangle":return"M 0 0 L 10 5 L 0 10 Z";case"open":return"M 0 0 L 10 5 L 0 10";case"diamond":return"M 0 5 L 5 0 L 10 5 L 5 10 Z";case"circle":return"M 10 5 A 5 5 0 1 1 0 5 A 5 5 0 1 1 10 5 Z";default:return""}}renderEndingIcon(t,e){const n="#000000";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:"424f7faa167fdf487bcf094f72b34488ba477c99"},i("div",{key:"3c667e2fdba171599ce747b3489258bdbbf8ec8e",class:"endings-section"},i("div",{key:"1502ec8094550c73cd6e7d21ab0110d1dc5fd035",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:"c62e785eb0c60fa00603796193fb77ecb2f3a8dd",class:"endings-section"},i("div",{key:"bb256da3a6a1a473a93aa70c12aa12a2ff34f8a3",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)))))))}};le.style=":host{display:flex;flex-direction:column;gap:12px;padding:0;box-sizing:border-box}.endings-section{display:flex;flex-direction:column;gap:6px}.section-label{font-size:12px;font-weight:500;color:var(--kritzel-line-endings-label-color, #666666);padding-left:4px}.endings-row{display:flex;align-items:center;gap:4px}.ending-option{display:flex;justify-content:center;align-items:center;width:48px;height:32px;border-radius:6px;cursor:var(--kritzel-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;background:var(--kritzel-line-endings-option-background, #ffffff);padding:4px;transition:background-color 0.15s ease, border-color 0.15s ease}.ending-option:hover{background-color:var(--kritzel-line-endings-hover-background-color, #ebebeb)}.ending-option.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-line-endings-selected-background-color, #ebebeb)}.ending-option:focus{outline:none;box-shadow:0 0 0 2px var(--kritzel-focus-ring-color, rgba(0, 122, 255, 0.3))}.ending-icon{width:100%;height:100%}";const ce=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}]}}};ce.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-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:#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:#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 he=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(),p.isIOS()){const t=this.inputRef.value.length;this.inputRef.setSelectionRange(t,t)}else this.inputRef.select()}componentDidLoad(){this.setDeviceSpecificStyles(),this.focusInput()}componentDidUpdate(){this.focusInput()}setDeviceSpecificStyles=()=>{p.isTouchDevice()&&(this.host.style.setProperty("--kritzel-menu-item-overlay-background-color","transparent"),this.host.style.setProperty("--kritzel-menu-item-button-hover-background-color","transparent"))};handleItemSelect=t=>{t.stopPropagation(),this.itemSelect.emit({item:this.item,parent:this.parent})};handleInputChange=t=>{t.stopPropagation(),this.item.label=t.target.value,this.isDirty=!0};handleSave=t=>{t.stopPropagation(),this.host.focus(),this.itemSave.emit(this.item)};handleCancel=t=>{t.stopPropagation(),this.host.focus(),this.itemCancel.emit(this.item)};handleMenuToggle=t=>{t.stopPropagation(),this.itemToggleChildMenu.emit({item:this.item,childMenuAnchor:t.target})};handleMenuClose=()=>{this.itemCloseChildMenu.emit(this.item)};renderViewMode(){return[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}]}}};he.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-bg, #007aff);color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected) .action-button{color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected.editing){background-color:var(--kritzel-menu-item-selected-bg, #007aff)}:host(.selected) .edit-input{color:var(--kritzel-menu-item-selected-color, #ffffff)}:host(.selected) .action-button kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-selected-color, #ffffff)}kritzel-icon{--kritzel-icon-color:var(--kritzel-menu-item-color, #333333)}:host(.selected) .edit-input::selection{background-color:var(--kritzel-menu-item-input-selection-color, rgba(255, 255, 255, 0.16))}:host(.editing){background-color:var(--kritzel-menu-item-editing-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.disabled){opacity:0.5;pointer-events:none !important}:host(.child-open){background-color:var(--kritzel-menu-item-child-open-background-color, hsl(0, 0%, 0%, 4.3%))}:host(.child-open.selected){background-color:var(--kritzel-menu-item-selected-bg, #007aff)}.menu-item-overlay{position:absolute;inset:0;background-color:transparent;z-index:0;pointer-events:none;border-radius:var(--kritzel-menu-item-border-radius, 12px)}.menu-item-content{display:flex;align-items:center;gap:8px;position:relative;z-index:1;height:100%}.left{justify-content:flex-start;flex:1;min-width:0}.left>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.right{justify-content:flex-end}.edit-input{flex:1;height:var(--kritzel-menu-item-input-height, 24px);padding:0;background-color:transparent;border-radius:0;border:none;border-bottom:1px solid var(--kritzel-menu-item-input-border, #ccc);font-size:var(--kritzel-context-menu-item-font-size, 14px);width:100%;min-width:0;box-sizing:border-box;outline:none}.edit-input::selection{background-color:var(--kritzel-menu-item-input-selection-color, #007bff);color:var(--kritzel-menu-item-input-selection-text-color, #ffffff)}.action-button{padding:4px;border-radius:8px;border:none;cursor:var(--kritzel-pointer-cursor, pointer);display:flex;align-items:center;justify-content:center;background-color:transparent;background:transparent;-webkit-tap-highlight-color:transparent}.action-button:hover,.action-button:focus{background-color:var(--kritzel-menu-item-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.action-button.disabled{pointer-events:none;opacity:0.5}";const de=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;buttonRef;toggleMenu=t=>{t.stopPropagation(),this.menuAnchor?this.closeMenu():this.menuAnchor=this.buttonRef};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:"461bb5cc1a4806529bb7eef05e69c40b69e746b0"},i("button",{key:"a61d549f859adedc92425fbcb5082ab827238dc1",ref:t=>this.buttonRef=t,class:"more-menu-button",onClick:this.toggleMenu},i("kritzel-icon",{key:"e57df2f59bcf988d363ed0c14ab634cc1cd766ca",name:this.icon,size:this.iconSize})),i("kritzel-portal",{key:"6dc78dc95ae139ce48489c7cf7429d66812b4c2b",anchor:this.menuAnchor,offsetY:this.offsetY,onClose:this.closeMenu},i("kritzel-menu",{key:"de0f7d5e50f69083b7214d9d6efcd72efc4a6562",items:this.items,onItemSelect:this.handleMenuItemSelect})))}};de.style=":host{display:inline-flex}.more-menu-button{display:flex;align-items:center;justify-content:center;width:var(--kritzel-more-menu-button-width, 50px);height:var(--kritzel-more-menu-button-height, 50px);padding:0;border:var(--kritzel-more-menu-button-border, 1px solid #ebebeb);border-radius:var(--kritzel-more-menu-button-border-radius, 12px);background-color:var(--kritzel-more-menu-button-background-color, #ffffff);cursor:var(--kritzel-pointer-cursor, pointer);box-shadow:var(--kritzel-more-menu-button-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));transition:background-color 150ms ease;-webkit-tap-highlight-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:inherit}.more-menu-button:hover{background-color:var(--kritzel-more-menu-button-hover-background-color, #f5f5f5)}.more-menu-button:focus{background-color:var(--kritzel-more-menu-button-hover-background-color, #f5f5f5)}.more-menu-button:active{background-color:var(--kritzel-more-menu-button-active-background-color, #ebebeb)}";const fe=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",value:this.inputValue,min:this.min,max:this.max,step:this.step,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}]}}};fe.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-background-color, #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 pe=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}%`}}))))}};pe.style=":host{display:flex;flex-direction:column;padding:0;box-sizing:border-box}.opacity-container{display:flex;align-items:center;width:232px}.slider-wrapper{flex:1;display:flex;align-items:center}.opacity-slider{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:linear-gradient( to right, var(--kritzel-opacity-slider-active-color, #007AFF) 0%, var(--kritzel-opacity-slider-active-color, #007AFF) var(--slider-progress, 100%), var(--kritzel-opacity-slider-track-color, #e0e0e0) var(--slider-progress, 100%), var(--kritzel-opacity-slider-track-color, #e0e0e0) 100% );outline:none;cursor:var(--kritzel-pointer-cursor, pointer)}.opacity-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--kritzel-opacity-slider-thumb-color, #ffffff);border:2px solid var(--kritzel-opacity-slider-thumb-border-color, #007AFF);cursor:var(--kritzel-pointer-cursor, pointer);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);transition:transform 0.1s ease}.opacity-slider::-webkit-slider-thumb:hover{transform:scale(1.1)}.opacity-slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--kritzel-opacity-slider-thumb-color, #ffffff);border:2px solid var(--kritzel-opacity-slider-thumb-border-color, #007AFF);cursor:var(--kritzel-pointer-cursor, pointer);box-shadow:0 1px 3px rgba(0, 0, 0, 0.2);transition:transform 0.1s ease}.opacity-slider::-moz-range-thumb:hover{transform:scale(1.1)}.opacity-slider::-moz-range-track{height:6px;border-radius:3px;background:transparent}.opacity-slider:focus{outline:none}.opacity-slider:focus::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--kritzel-focus-ring-color, rgba(0, 122, 255, 0.3))}.opacity-slider:focus::-moz-range-thumb{box-shadow:0 0 0 3px var(--kritzel-focus-ring-color, rgba(0, 122, 255, 0.3))}";const be=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){t.stopPropagation(),this.lastAddedPortal===this.portal&&(this.host.contains(t.target)||(this.close.emit(),this.closePortal()))}handleKeyDown(t){if(t.stopPropagation(),this.lastAddedPortal===this.portal&&("Escape"===t.key&&(this.anchor.focus(),this.close.emit(),this.closePortal()),"Tab"===t.key&&this.trapFocus(t),"Enter"===t.key)){const e=this.getDeepActiveElement();e?.click&&(t.preventDefault(),e.click())}}handleResize(){this.calculatePosition()}handleWindowScroll(){if(!J.isElementInViewport(this.anchor))return this.anchor?.blur(),void this.closePortal();this.calculatePosition()}portal;id=`portal-${L.generateUUID()}`;defaultOffset=0;minLeft=0;focusFirstElement(){requestAnimationFrame((()=>{this.firstFocusableElement?.focus?.()}))}getDeepActiveElement(){let t=document.activeElement;for(;t?.shadowRoot?.activeElement;)t=t.shadowRoot.activeElement;return t}trapFocus(t){const e=J.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?J.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)}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",this.portal.appendChild(this.host),document.body.append(this.portal)}closePortal(){const t=document.getElementById(this.id);t&&(document.body.removeChild(t),this.host.remove())}calculatePosition(){if(!this.anchor||!this.portal)return;const t=this.calculateTop(),e=this.calculateLeft();this.portal.style.top=`${t}px`,this.portal.style.left=`${e}px`,this.portal.style.visibility="visible"}render(){return i(n,{key:"4498bb0fdb89a4261b91af28cdca1bfdeebc8ab1",style:{display:this.anchor?"block":"none"}},i("slot",{key:"d86c41c57d2affd07a995a2073fed51dd773893c"}))}static get watchers(){return{anchor:[{anchorChanged:0}]}}},ge="kritzel-settings",ve=[{id:"general",label:"General",icon:"settings"},{id:"about",label:"About",icon:"info"}],ke=class{constructor(i){t(this,i),this.settingsChange=e(this,"settingsChange")}isDialogOpen=!1;selectedCategoryId=ve[0].id;scaleMin=1e-4;scaleMax=1e3;lockDrawingScale=!0;settingsChange;componentWillLoad(){this.loadSettings()}loadSettings(){const t=localStorage.getItem(ge);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)}catch{}}saveSettings(){const t={scaleMin:this.scaleMin,scaleMax:this.scaleMax,lockDrawingScale:this.lockDrawingScale};localStorage.setItem(ge,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()};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"},"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})),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}))));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.13"));default:return null}}render(){return i(n,{key:"a7c4cb00cd0a4accac4f561ed83f7044e3ec7805"},i("kritzel-dialog",{key:"21c7e2a9af084537284f318fc927c78d8513592c",isOpen:this.isDialogOpen,dialogTitle:"Settings",size:"large",onDialogClose:this.closeDialog},i("kritzel-master-detail",{key:"aac13d47df73f519ca068d67cb87f74bc6a9f212",items:ve,selectedItemId:this.selectedCategoryId,onItemSelect:this.handleCategorySelect},this.renderCategoryContent())))}};ke.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 me=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="#000000";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:"0d0c051f7b8b8a7c586246bc9d74ed3c3885eb90"},i("div",{key:"c2411c4d070fcffff06f372c1e750415486f6a40",class:"fill-row"},i("button",{key:"b53097dce91b2f42a7511c4db923730fa089cb7f",class:{"fill-option":!0,selected:"transparent"===this.value},onClick:()=>this.handleFillChange("transparent"),title:"Transparent background"},this.renderFillIcon("transparent")),i("button",{key:"570424d81fc01a1a09e4efa5ff3918fc9a2c5451",class:{"fill-option":!0,selected:"filled"===this.value},onClick:()=>this.handleFillChange("filled"),title:"Filled background"},this.renderFillIcon("filled"))))}};me.style=":host{display:flex;flex-direction:column;gap:12px;padding:0;box-sizing:border-box}.fill-row{display:flex;align-items:center;gap:4px}.fill-option{display:flex;justify-content:center;align-items:center;width:48px;height:32px;border-radius:6px;cursor:var(--kritzel-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box;background:var(--kritzel-shape-fill-option-background, #ffffff);padding:4px;transition:background-color 0.15s ease, border-color 0.15s ease}.fill-option:hover{background-color:var(--kritzel-shape-fill-hover-background-color, #ebebeb)}.fill-option.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-shape-fill-selected-background-color, #ebebeb)}.fill-option:focus{outline:none;box-shadow:0 0 0 2px var(--kritzel-focus-ring-color, rgba(0, 122, 255, 0.3))}.fill-icon{width:100%;height:100%}";const ye=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"})))}};ye.style=":host{display:inline-flex;align-items:center;cursor:var(--kritzel-pointer-cursor, pointer);outline:none;z-index:1}: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 xe=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=p.isTouchDevice();anchorElement;menuScrollTop=0;splitMenuButtonRef;menuRef;async open(){this.isMenuOpen||(this.isMenuOpen=!0,this.anchorElement=this.host,this.menuOpen.emit())}async focusMenu(){this.menuRef&&await this.menuRef.setFocus()}handleButtonClick=t=>{t.stopPropagation(),this.mainButtonClick.emit()};toggleMenu=t=>{t.stopPropagation(),this.isMenuOpen?this.closeMenu():this.openMenu(t)};openMenu=t=>{t.stopPropagation(),this.isMenuOpen=!0,this.anchorElement=this.host,this.menuOpen.emit(),requestAnimationFrame((()=>{this.menuRef?.setScrollTop(this.menuScrollTop)}))};closeMenu=()=>{this.isMenuOpen=!1,this.anchorElement=null,this.splitMenuButtonRef?.blur(),this.menuClose.emit()};handleItemSelect=t=>{this.itemSelect.emit(t.detail)};handleItemSave=t=>{this.itemSave.emit(t.detail)};handleItemCancel=t=>{this.itemCancel.emit(t.detail)};handleItemToggleChildMenu=t=>{this.itemToggleChildMenu.emit(t.detail)};handleItemCloseChildMenu=t=>{this.itemCloseChildMenu.emit(t.detail)};handleScroll=t=>{this.menuScrollTop=t.target.scrollTop};render(){return 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})))}};xe.style=":host{position:relative;display:flex;align-items:center;font-family:sans-serif;z-index:1;padding:var(--kritzel-split-button-padding, 4px);background-color:var(--kritzel-split-button-background-color, #ffffff);border-radius:var(--kritzel-split-button-border-radius, 12px);box-shadow:var(--kritzel-split-button-box-shadow, 0 0 3px rgba(0, 0, 0, 0.08));border:var(--kritzel-split-button-border, 1px solid #ebebeb);gap:var(--kritzel-split-button-gap, 4px)}:host(.mobile){--kritzel-split-button-hover-background-color:transparent}button{border:none;background-color:transparent;padding:0;margin:0;font-family:inherit;font-size:inherit;color:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:var(--kritzel-pointer-cursor, pointer);text-align:center;display:flex;align-items:center;justify-content:center;pointer-events:all;-webkit-tap-highlight-color:transparent}.split-main-button,.split-menu-button{height:auto;display:flex;align-items:center;padding:var(--kritzel-split-button-padding, 8px);background-color:var(--kritzel-split-button-background-color, #ffffff);border-radius:var(--kritzel-split-button-border-radius, 12px);font-size:var(--kritzel-split-button-font-size, 14px)}.split-main-button:hover,.split-menu-button:hover{background-color:var(--kritzel-split-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.split-main-button:focus,.split-menu-button:focus{background-color:var(--kritzel-split-button-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.split-main-button{gap:var(--kritzel-split-button-gap, 4px)}.split-menu-button{border-left:none;justify-content:center}.split-divider{width:var(--kritzel-split-button-divider-width, 1px);height:24px;background-color:var(--kritzel-split-button-divider-background-color, hsl(0, 0%, 0%, 4.3%))}:disabled{pointer-events:none;opacity:0.5}";const we=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:"#000000",size:t}))))))}};we.style=":host{display:flex;align-items:flex-start;gap:0;padding:0;width:100%;box-sizing:border-box}.size-grid{width:100%;display:grid;grid-template-columns:repeat(6, 32px);gap:8px;justify-items:center}.size-container{display:flex;justify-content:center;align-items:center;width:32px;height:32px;border-radius:50%;cursor:var(--kritzel-pointer-cursor, pointer);border:2px solid transparent;box-sizing:border-box}.size-container:hover{background-color:var(--kritzel-stroke-size-hover-background-color, #ebebeb)}.size-container.selected{border-color:var(--kritzel-selection-border-color, #007AFF);background-color:var(--kritzel-stroke-size-selected-background-color, #ebebeb)}";const ze=class{constructor(i){t(this,i),this.toolChange=e(this,"toolChange"),this.displayValuesChange=e(this,"displayValuesChange")}tool;handleToolChange(t,e){const i=G.getToolConfig(t);if(e&&t&&"shape"===i?.type){const n=G.getToolConfig(e);"shape"===n?.type&&[i.colorProperty,i.sizeProperty,i.opacityProperty,"fillColor"].forEach((i=>{i&&void 0!==e[i]&&(t[i]=e[i])}))}this.config=i,this.config&&(this.updatePalette(),this.currentOpacity=t[this.config.opacityProperty]??1,this.emitDisplayValues())}isExpanded=!1;toolChange;displayValuesChange;config;palette=[];currentOpacity=1;updateTrigger=0;handleSelectionChange(){this.tool instanceof u&&(this.config=G.getToolConfig(this.tool),this.config&&(this.updatePalette(),this.currentOpacity=this.tool[this.config.opacityProperty]??1,this.emitDisplayValues()))}componentWillLoad(){this.config=G.getToolConfig(this.tool),this.config&&(this.updatePalette(),this.currentOpacity=this.tool[this.config.opacityProperty]??1,this.emitDisplayValues())}emitDisplayValues(){if(!this.config)return;const t=this.tool[this.config.sizeProperty],e={color:N.applyOpacity(this.tool[this.config.colorProperty],this.currentOpacity),size:t};this.tool instanceof f&&(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;"transparent"!==e.fillColor&&(e.fillColor=t.detail)}this.emitDisplayValues(),this.toolChange.emit(this.tool),this.updateTrigger++};handleSizeChange=t=>{this.tool[this.config.sizeProperty]=t.detail,this.emitDisplayValues(),this.toolChange.emit(this.tool),this.updateTrigger++};handleOpacityChange=t=>{this.tool[this.config.opacityProperty]=t.detail,this.currentOpacity=t.detail,this.emitDisplayValues(),this.toolChange.emit(this.tool)};handlePropertyChange=(t,e)=>{if("shape"!==this.config.type&&"selection"!==this.config.type||"fillColor"!==t)this.tool[t]=e,"fontFamily"===t&&this.emitDisplayValues();else{const t="filled"===e?this.tool[this.config.colorProperty]:"transparent";this.tool.fillColor=t,"filled"===e&&(this.tool[this.config.colorProperty]=t)}this.toolChange.emit(this.tool),this.updateTrigger++};getShapeFillValue(){return"transparent"===this.tool.fillColor?"transparent":"filled"}renderControl(t){const 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,strokeColor:this.tool[this.config.colorProperty],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,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}]}}};ze.style=".expand-toggle{background:none;border:none;cursor:pointer;padding:0;margin:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;color:var(--kritzel-icon-color, currentColor);transition:transform 0.2s ease}.expand-toggle:hover{opacity:0.7}.expand-toggle:focus{outline:none}.expand-toggle:focus-visible{outline:2px solid var(--kritzel-focus-color, #007acc);outline-offset:2px}.expand-toggle:active{transform:scale(0.95)}.divider{height:1px;background-color:var(--kritzel-divider-color, #e0e0e0);margin:4px 0;width:100%}";const Ce=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())}handleWindowResize(){this.calculateAdjustedPosition()}async focusContent(){const t=J.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:"de8f3f78ac1b73eecfb373a3234278835efc64db",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:"bb3e9eb13abb987f19f39741564af72f1e3c9086",class:"tooltip-content",onClick:t=>t.stopPropagation(),onPointerDown:t=>t.stopPropagation(),onMouseDown:t=>t.stopPropagation()},i("slot",{key:"28f0e5e18dde3d285e86ca0af6415f83b90cc10b"})))}};Ce.style=":host{width:auto}.tooltip-content{position:relative;padding:8px 12px;border-radius:4px;width:fit-content;background-color:var(--kritzel-controls-tooltip-background-color, #ffffff);color:var(--kritzel-controls-tooltip-color, #000000);padding:var(--kritzel-controls-tooltip-padding, 12px);border-radius:var(--kritzel-controls-tooltip-border-radius, 16px);white-space:nowrap;box-shadow:var(--kritzel-controls-tooltip-box-shadow, 0 1px 6px rgba(0, 0, 0, 0.12))}";const Se=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()})))}};Se.style=":host{display:flex;flex-direction:row;align-items:center;padding:4px;gap:8px;border-top-left-radius:12px;border-top-right-radius:12px;background-color:rgb(226, 226, 226);width:fit-content;user-select:none}.utility-button{display:flex;justify-content:center;align-items:center;width:28px;height:28px;padding:8px 4px;border:none;background:none;cursor:var(--kritzel-pointer-cursor, pointer);color:#333333;-webkit-tap-highlight-color:transparent;border-radius:var(--kritzel-utility-panel-button-border-radius, 8px)}.utility-button:hover,.utility-button:focus-visible{background-color:var(--kritzel-controls-control-hover-background-color, hsl(0, 0%, 0%, 4.3%))}.utility-button:disabled{opacity:0.4;cursor:not-allowed;pointer-events:none}.utility-separator{width:1px;height:16px;background-color:hsl(0, 0%, 0%, 4.3%)}";const Me=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 w(L.generateUUID(),"New Workspace"),this.editingItemId=this.newWorkspace.id}edit(t){this.openChildMenuItem=null,this.childMenuAnchor=null,requestAnimationFrame((()=>{this.editingItemId=t.id}))}async save(t){if(this.newWorkspace)this.newWorkspace.name=t.label,await(this.kritzelEngineRef?.createWorkspace(this.newWorkspace)),this.workspaceChange.emit(this.newWorkspace);else{const e=t.value;e.name=t.label,await(this.kritzelEngineRef?.updateWorkspace(e))}this.editingItemId=null,this.newWorkspace=null}cancel(){this.newWorkspace=null,this.editingItemId=null}async delete(t){this.openChildMenuItem=null,this.childMenuAnchor=null,await(this.kritzelEngineRef?.deleteWorkspace(t.value)),t.value.id===this.activeWorkspace?.id&&(this.activeWorkspace=this.sortedWorkspaces.find((e=>e.id!==t.value.id))||null,this.workspaceChange.emit(this.activeWorkspace)),await this.splitButtonRef.focusMenu()}toggleChildMenu(t,e){this.openChildMenuItem=t,this.childMenuAnchor=e}closeChildMenu(){this.openChildMenuItem=null,this.childMenuAnchor=null}handleMenuOpen(){this.kritzelEngineRef?.disable()}handleMenuClose(){this.cancel(),this.closeChildMenu(),this.kritzelEngineRef?.enable()}render(){const t=this.sortedWorkspaces.sort(((t,e)=>e.createdAt.getTime()-t.createdAt.getTime())).filter((t=>null!==t)).map((t=>({id:t.id,label:t.name,value:t,isEditing:this.editingItemId===t.id,isSelected:this.activeWorkspace?.id===t.id,isNewItem:this.newWorkspace?.id===t.id,isChildMenuOpen:this.openChildMenuItem?.id===t.id,childMenuAnchor:this.openChildMenuItem?.id===t.id?this.childMenuAnchor:null,children:[{id:`${t.id}-rename`,label:"Rename",value:"rename",action:(t,e)=>this.edit(e)},{id:`${t.id}-delete`,label:"Delete",value:"delete",isDisabled:this.sortedWorkspaces.length<=1,action:(t,e)=>this.delete(e)}]})));return 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()}))}};Me.style=":host{display:flex;flex-direction:column;z-index:1}";export{K as kritzel_back_to_content,B as kritzel_color,H as kritzel_color_palette,Y as kritzel_context_menu,X as kritzel_controls,Z as kritzel_cursor_trail,Q as kritzel_dialog,tt as kritzel_dropdown,rt as kritzel_editor,ie as kritzel_engine,ne as kritzel_export,re as kritzel_font,oe as kritzel_font_family,se as kritzel_font_size,ae as kritzel_icon,le as kritzel_line_endings,ce as kritzel_master_detail,ue as kritzel_menu,he as kritzel_menu_item,de as kritzel_more_menu,fe as kritzel_numeric_input,pe as kritzel_opacity_slider,be as kritzel_portal,ke as kritzel_settings,me as kritzel_shape_fill,ye as kritzel_slide_toggle,xe as kritzel_split_button,we as kritzel_stroke_size,ze as kritzel_tool_config,Ce as kritzel_tooltip,Se as kritzel_utility_panel,Me as kritzel_workspace_manager}