@node-projects/web-component-designer 0.2.25 → 0.2.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index-min.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
var vl=Object.defineProperty;var zf=Object.getOwnPropertyDescriptor;var Ff=Object.getOwnPropertyNames;var Bf=Object.prototype.hasOwnProperty;var g=(s,e)=>()=>(s&&(e=s(s=0)),e);var Zd=(s,e)=>{for(var t in e)vl(s,t,{get:e[t],enumerable:!0})},Hf=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ff(e))!Bf.call(s,n)&&n!==t&&vl(s,n,{get:()=>e[n],enumerable:!(i=zf(e,n))||i.enumerable});return s};var qd=s=>Hf(vl({},"__esModule",{value:!0}),s);import{BaseCustomWebComponentConstructorAppend as qf,css as Jf,html as eg}from"@node-projects/base-custom-webcomponent";var kl,Dl,tg,cn,Al=g(()=>{"use strict";kl=436,Dl={position:{top:"top",right:"right",bottom:"bottom",left:"left"},margin:{top:"margin-top",right:"margin-right",bottom:"margin-bottom",left:"margin-left"},border:{top:"border-top-width",right:"border-right-width",bottom:"border-bottom-width",left:"border-left-width"},padding:{top:"padding-top",right:"padding-right",bottom:"padding-bottom",left:"padding-left"},content:{width:"width",height:"height"}},tg={"border-top-width":"borderTopWidth","border-right-width":"borderRightWidth","border-bottom-width":"borderBottomWidth","border-left-width":"borderLeftWidth","margin-top":"marginTop","margin-right":"marginRight","margin-bottom":"marginBottom","margin-left":"marginLeft","padding-top":"paddingTop","padding-right":"paddingRight","padding-bottom":"paddingBottom","padding-left":"paddingLeft"},cn=class extends qf{static style=Jf`:host{display:block;box-sizing:border-box;min-width:0;color:var(--property-grid-text-color,#fff);font:11px monospace;overflow:hidden}#box-model{display:grid;grid-template-columns:46px minmax(120px,1fr) 46px;grid-template-rows:22px minmax(29px,auto) minmax(58px,auto) minmax(29px,auto) 22px;grid-template-areas:". position-top ." "position-left margin position-right" "position-left margin position-right" "position-left margin position-right" ". position-bottom .";align-items:center;justify-items:center;width:100%;min-width:${kl};padding:4px;transform-origin:top left}.ring{display:grid;grid-template-columns:42px minmax(56px,1fr) 42px;grid-template-rows:20px minmax(34px,auto) 20px;grid-template-areas:". top ." "left inner right" ". bottom .";align-items:center;justify-items:center;position:relative;box-sizing:border-box;width:100%;min-width:0;height:100%;min-height:116px;border:1px dashed rgba(0,0,0,.55)}#margin{grid-area:margin;background:#f6c89f}#border{grid-area:inner;background:#f7dd9c;border-style:solid;min-height:76px}#padding{grid-area:inner;background:#c8d08f;min-height:38px}#content{grid-area:inner;display:grid;grid-template-columns:minmax(26px,1fr) auto minmax(26px,1fr);gap:4px;align-items:center;justify-items:center;width:100%;height:100%;min-height:24px;box-sizing:border-box;background:#8fb9c3;border:1px solid rgba(0,0,0,.65)}#content-label,#position-label{display:none}#border.box,#content.box{outline:2px solid rgba(0,0,0,.85);outline-offset:-2px}.label{position:absolute;top:2px;left:4px;max-width:calc(100% - 8px);overflow:hidden;text-overflow:ellipsis;pointer-events:none;color:rgba(0,0,0,.72);font-size:10px;line-height:12px}input{width:38px;max-width:100%;min-width:0;height:17px;box-sizing:border-box;padding:0 2px;border:0;border-radius:0;background:0 0;color:rgba(0,0,0,.85);font:inherit;line-height:17px;text-align:center;outline:0}input:focus,input:hover{background:rgba(255,255,255,.72);box-shadow:0 0 0 1px rgba(0,0,0,.35)}input:disabled{opacity:.65}[data-side=top]{grid-area:top}[data-side=right]{grid-area:right}[data-side=bottom]{grid-area:bottom}[data-side=left]{grid-area:left}[data-area=position][data-side=top]{grid-area:position-top}[data-area=position][data-side=right]{grid-area:position-right}[data-area=position][data-side=bottom]{grid-area:position-bottom}[data-area=position][data-side=left]{grid-area:position-left}`;static template=eg`<div id="box-model"><span id="position-label" class="label" title="position">position</span> <input data-area="position" data-side="top" title="top" spellcheck="false"> <input data-area="position" data-side="right" title="right" spellcheck="false"> <input data-area="position" data-side="bottom" title="bottom" spellcheck="false"> <input data-area="position" data-side="left" title="left" spellcheck="false"><div id="margin" class="ring"><span class="label" title="margin">margin</span> <input data-area="margin" data-side="top" title="margin-top" spellcheck="false"> <input data-area="margin" data-side="right" title="margin-right" spellcheck="false"> <input data-area="margin" data-side="bottom" title="margin-bottom" spellcheck="false"> <input data-area="margin" data-side="left" title="margin-left" spellcheck="false"><div id="border" class="ring"><span class="label" title="border">border</span> <input data-area="border" data-side="top" title="border-top-width" spellcheck="false"> <input data-area="border" data-side="right" title="border-right-width" spellcheck="false"> <input data-area="border" data-side="bottom" title="border-bottom-width" spellcheck="false"> <input data-area="border" data-side="left" title="border-left-width" spellcheck="false"><div id="padding" class="ring"><span class="label" title="padding">padding</span> <input data-area="padding" data-side="top" title="padding-top" spellcheck="false"> <input data-area="padding" data-side="right" title="padding-right" spellcheck="false"> <input data-area="padding" data-side="bottom" title="padding-bottom" spellcheck="false"> <input data-area="padding" data-side="left" title="padding-left" spellcheck="false"><div id="content"><span id="content-label" class="label" title="content">content</span> <input data-area="content" data-side="width" title="width" spellcheck="false"> <span id="content-separator">x</span> <input data-area="content" data-side="height" title="height" spellcheck="false"></div></div></div></div></div>`;property;unsetValue="-";_borderDiv;_boxModelDiv;_contentDiv;_inputs=[];_values={};_isRefreshing=!1;_resizeObserver;constructor(){super(),this._restoreCachedInititalValues(),this._borderDiv=this._getDomElement("border"),this._boxModelDiv=this._getDomElement("box-model"),this._contentDiv=this._getDomElement("content"),this._inputs=[...this.shadowRoot.querySelectorAll("input[data-area][data-side]")]}ready(){this._parseAttributesToProperties(),this._wireEvents(),this._updateInputs(),requestAnimationFrame(()=>this._updateScale())}connectedCallback(){this._resizeObserver??=new ResizeObserver(()=>this._updateScale()),this._resizeObserver.observe(this),requestAnimationFrame(()=>this._updateScale())}disconnectedCallback(){this._resizeObserver?.disconnect()}get values(){return this._cloneValues(this._values)}set values(e){this._values=this._cloneValues(e??{}),this._updateInputs()}getPropertyName(e,t){return Dl[e]?.[t]}refresh(e){if(this._contentDiv.classList.remove("box"),this._borderDiv.classList.remove("box"),!e){this.values={};return}let t=e.ownerDocument.defaultView.getComputedStyle(e),i={};for(let n of Object.keys(Dl)){i[n]={};for(let r of Object.keys(Dl[n])){let o=this.getPropertyName(n,r);i[n][r]=this._getComputedProperty(t,o,n)}}t.boxSizing=="content-box"?this._contentDiv.classList.add("box"):this._borderDiv.classList.add("box"),this.values=i,this._updateScale()}_wireEvents(){for(let e of this._inputs)e.addEventListener("focus",()=>e.select()),e.addEventListener("change",()=>this._commitInput(e)),e.addEventListener("keydown",t=>{t.key==="Enter"?(this._commitInput(e),e.blur()):t.key==="Escape"&&(this._updateInput(e),e.blur())})}_commitInput(e){if(this._isRefreshing)return;let t=e.dataset.area,i=e.dataset.side,n=this._values[t]?.[i]??"",r=e.value.trim();this._values[t]||(this._values[t]={}),this._values[t][i]=r,this._updateInput(e),n!==r&&this.dispatchEvent(new CustomEvent("value-changed",{bubbles:!0,composed:!0,detail:{property:this.getPropertyName(t,i),area:t,side:i,newValue:r,oldValue:n}}))}_updateInputs(){this._isRefreshing=!0;try{for(let e of this._inputs)this._updateInput(e)}finally{this._isRefreshing=!1}}_updateInput(e){let t=e.dataset.area,i=e.dataset.side;e.value=this._values[t]?.[i]??this.unsetValue}_getComputedProperty(e,t,i){let n=tg[t]??t,r=e.getPropertyValue(t)||e[n];return i==="position"&&r==="auto"?this.unsetValue:r||this.unsetValue}_cloneValues(e){let t={};for(let i of Object.keys(e))t[i]={...e[i]};return t}_updateScale(){if(!this._boxModelDiv)return;let e=this.clientWidth;if(e<=0)return;let t=Math.min(1,e/kl);this._boxModelDiv.style.width=t<1?kl+"px":"100%",this._boxModelDiv.style.transform=t<1?`scale(${t})`:"",this.style.height=this._boxModelDiv.offsetHeight*t+"px"}};customElements.define("node-projects-metrics-editor",cn)});function Pi(s){let e=s?.trim()??"";if(!e)return{kind:"empty"};let t=e.match(/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(?:([a-z%]+))?$/i);if(!t)return{kind:"text",text:e};let i=Number(t[1]);return Number.isNaN(i)?{kind:"text",text:e}:{kind:"numeric",numberText:t[1],value:i,unit:t[2]?.toLowerCase()??""}}function Jn(s,e=4){if(!Number.isFinite(s))return"0";let t=10**Math.max(0,e),i=Math.round(s*t)/t;return Object.is(i,-0)?"0":`${i}`}function Ii(s,e){let t=s?.trim()??"";return t?t+(e??""):""}function uu(s){return s===""?" ":s}function mu(s){let e=(s??[]).map(t=>t==null?null:t.trim()).filter(t=>t!=null);return[...new Set(e)]}function fu(s,e,t){return s!=null&&t.includes(s)?s:e??t[0]??null}function gu(s,e,t){if(t!=null){let i=s?.[t];if(Number.isFinite(i)&&i>0)return i}return e}var Tl=g(()=>{"use strict"});import{BaseCustomWebComponentConstructorAppend as ig,css as ng,html as rg,TypedEvent as Ml}from"@node-projects/base-custom-webcomponent";var Ll,sg,hn,Ol=g(()=>{"use strict";Tl();Tl();Ll="__node-projects-custom-value__",sg="\u22EE",hn=class extends ig{static style=ng`:host{display:block;width:100%;min-width:0}#container{display:grid;gap:0;grid-template-columns:minmax(0,1fr) auto 16px;width:100%;height:24px;align-items:stretch}#value-wrapper{display:grid;grid-template-columns:14px minmax(0,1fr);min-width:0}#input,#scrubber,#select,#stepper button{border:none;box-sizing:border-box;height:24px;min-height:24px;background:0 0;color:inherit;font:inherit;outline:0;box-shadow:none}#scrubber,#stepper button{padding:0;line-height:1}#scrubber{border-right:0;cursor:ns-resize;font-size:11px;letter-spacing:-1px}#input{border-left:0;border-right:0;min-width:0;text-align:right}#input:focus,#scrubber:focus,#select:focus,#stepper button:focus{outline:0;box-shadow:none;border-color:var(--input-border-color,#596c7a)}#input[disabled],#scrubber[disabled]{cursor:default}#input[disabled]{color:inherit;opacity:1;-webkit-text-fill-color:currentColor}#select{border-left:0;padding:0 15px 0 2px;line-height:1;-webkit-appearance:none;appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='4'%3E%3Cpath d='M0 0l4 4 4-4z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 2px center}#measure{position:absolute;visibility:hidden;white-space:nowrap;font:inherit;pointer-events:none}#stepper{display:grid;height:24px;min-height:24px;overflow:hidden;grid-template-rows:repeat(2,minmax(0,1fr))}#stepper button{height:auto;min-height:0;width:16px;min-width:16px;font-size:10px}`;static template=rg`<div id="container"><div id="value-wrapper"><button id="scrubber" type="button" aria-label="Drag to change value">${sg}</button> <input id="input" type="text" spellcheck="false"></div><select id="select"></select><div id="stepper"><button id="increase" type="button" aria-label="Increase value">+</button> <button id="decrease" type="button" aria-label="Decrease value">-</button></div><span id="measure"></span></div>`;_value="";get value(){return this._value}set value(e){this._setValue(e,!1,!1)}valueChanged=new Ml;valuePreviewChanged=new Ml;valuePreviewFinished=new Ml;_units=["px","%","pt"];get units(){return[...this._units]}set units(e){this._units=this._normalizeOptionValues(e),this._lastNumericUnit=this._units[0]??this._lastNumericUnit,this._updateValue()}_fixedValues=[];get fixedValues(){return[...this._fixedValues]}set fixedValues(e){this._fixedValues=this._normalizeOptionValues(e),this._updateValue()}_step=1;get step(){return this._step}set step(e){this._step=Number.isFinite(e)&&e>0?e:1}_unitSteps={};get unitSteps(){return{...this._unitSteps}}set unitSteps(e){this._unitSteps=e??{}}_min=null;get min(){return this._min}set min(e){this._min=Number.isFinite(e)?e:null}_max=null;get max(){return this._max}set max(e){this._max=Number.isFinite(e)?e:null}_readOnly=!1;get readOnly(){return this._readOnly}set readOnly(e){this._readOnly=e,this._applyReadonlyState()}get isInPreview(){return this._previewStartValue!=null}_allowCustomValue=!0;get allowCustomValue(){return this._allowCustomValue}set allowCustomValue(e){this._allowCustomValue=e,this._updateValue()}_unitValueConverter;get unitValueConverter(){return this._unitValueConverter}set unitValueConverter(e){this._unitValueConverter=e}_input;_select;_measure;_scrubberButton;_increaseButton;_decreaseButton;_lastNumericValue=0;_lastNumericUnit="px";_dragPointerId=null;_dragStartY=0;_dragStartNumericValue=0;_appliedDragSteps=0;_previewStartValue=null;_previewChanged=!1;_displayValueLock=null;_stepperPointerId=null;_stepperDirection=0;_stepperRepeatTimeout=null;_stepperRepeatInterval=null;_windowDragPointerMoveHandler=e=>this._handleWindowDragPointerMove(e);_windowDragPointerUpHandler=e=>this._finishDragInteractionForPointerEvent(e,!1);_windowDragPointerCancelHandler=e=>this._finishDragInteractionForPointerEvent(e,!0);_windowDragBlurHandler=()=>this._finishDragInteraction(!1);_windowPointerUpHandler=e=>this._handleWindowStepperPointerEnd(e);_windowPointerCancelHandler=e=>this._handleWindowStepperPointerEnd(e);_windowBlurHandler=()=>this._finishStepperInteraction(!1);_preferCustomMode=!1;constructor(){super(),this._restoreCachedInititalValues(),this._input=this._getDomElement("input"),this._select=this._getDomElement("select"),this._measure=this._getDomElement("measure"),this._scrubberButton=this._getDomElement("scrubber"),this._increaseButton=this._getDomElement("increase"),this._decreaseButton=this._getDomElement("decrease")}ready(){this._parseAttributesToProperties(),this._wireEvents(),this._updateValue()}_wireEvents(){this._input.addEventListener("change",()=>this._applyTypedValue()),this._input.addEventListener("keydown",e=>{e.key==="Enter"&&(this._applyTypedValue(),this._input.blur())}),this._scrubberButton.addEventListener("pointerdown",e=>this._handlePointerDown(e)),this._select.addEventListener("change",()=>this._applySelectedMode()),this._increaseButton.addEventListener("pointerdown",e=>this._handleStepperPointerDown(e,1)),this._decreaseButton.addEventListener("pointerdown",e=>this._handleStepperPointerDown(e,-1))}_handlePointerDown(e){if(!this._readOnly&&!(!this._isSelectedUnitMode()&&!this._switchToUnitModeForInteraction())){this._dragPointerId=e.pointerId,this._dragStartY=e.clientY,this._dragStartNumericValue=this._readEditableNumericValue(this._select.value),this._appliedDragSteps=0,this._startPreviewSession(),this._attachDragWindowListeners();try{this._scrubberButton.setPointerCapture(e.pointerId)}catch{}e.preventDefault()}}_handleWindowDragPointerMove(e){if(this._dragPointerId!==e.pointerId||!this._isSelectedUnitMode())return;let t=this._calculateDraggedStepCount(this._dragStartY-e.clientY);if(t===this._appliedDragSteps)return;this._appliedDragSteps=t;let i=this._select.value,n=this._getEffectiveStep(i);this._previewNumericValue(this._getInteractiveStepValue(this._dragStartNumericValue,t,n),i,n),e.preventDefault()}_finishDragInteractionForPointerEvent(e,t){this._dragPointerId===e.pointerId&&this._finishDragInteraction(t,e.pointerId)}_finishDragInteraction(e,t){if(this._dragPointerId!=null){if(this._dragPointerId=null,this._appliedDragSteps=0,this._detachDragWindowListeners(),t!=null)try{this._scrubberButton.hasPointerCapture(t)&&this._scrubberButton.releasePointerCapture(t)}catch{}this._finishPreviewSession(e)}}_handleStepperPointerDown(e,t){this._readOnly||!this._isSelectedUnitMode()&&!this._switchToUnitModeForInteraction()||(this._finishStepperInteraction(!0),this._stepperPointerId=e.pointerId,this._stepperDirection=t,this._attachStepperWindowListeners(),this._startPreviewSession(),this._applyStepPreview(t),this._stepperRepeatTimeout=window.setTimeout(()=>{this._stepperRepeatInterval=window.setInterval(()=>this._applyStepPreview(this._stepperDirection),50)},350),e.preventDefault())}_handleWindowStepperPointerEnd(e){this._stepperPointerId===e.pointerId&&this._finishStepperInteraction(!1)}_finishStepperInteraction(e){this._stepperPointerId!=null&&(this._stepperPointerId=null,this._stepperDirection=0,this._detachStepperWindowListeners(),this._stopStepperRepeat(),this._finishPreviewSession(e))}_applySelectedMode(){let e=this._select.selectedOptions.item(0);if(!e)return;let t=e.dataset.kind;if(t==="fixed"){this._commitValue(e.value);return}if(t==="custom"){this._preferCustomMode=!0,this._updateValue(),requestAnimationFrame(()=>{this._input.focus(),this._input.select()});return}let i=e.value;this._lastNumericUnit=i,this._preferCustomMode=!1;let n=Pi(this._value);if(n.kind==="numeric"){let a=this._convertNumericValue(n,i);this._commitValue(a);return}let r=this._resolveCurrentValueForUnit(i);if(r!=null){this._commitValue(r);return}if(n.kind==="empty"){this._updateValue(),this._input.focus();return}let o=Number(this._input.value);if(!Number.isNaN(o)){this._applyNumericValue(o,i);return}this._commitValue(""),this._input.focus()}_applyTypedValue(){let e=this._select.selectedOptions.item(0),t=e?.dataset.kind;if(t==="fixed")return;if(t==="custom"){this._commitValue(this._input.value);return}let i=this._input.value?.trim()??"";if(!i){this._commitValue("");return}let n=Number(i);Number.isNaN(n)||(this._lastNumericValue=this._clampNumericValue(n)),this._commitValue(Ii(i,e?.value??""))}_updateValue(){if(!this._input||!this._select)return;this._previewStartValue==null&&this._renderSelectOptions();let e=this._getDisplayState(this._displayValueLock??this._value);if(this._input.value=e.inputValue,this._input.style.display=e.inputVisible?"":"none",this._input.disabled=this._readOnly||!e.inputEnabled,this._select.value=e.selectValue,this._autoSizeSelect(),e.mode==="unit"&&e.selectedUnit!=null&&(this._lastNumericUnit=e.selectedUnit),e.mode==="unit"&&e.inputValue!==""){let n=Number(e.inputValue);Number.isNaN(n)||(this._lastNumericValue=this._clampNumericValue(n))}let t=this._units.length>0,i=this._readOnly||!t||e.mode==="custom";this._scrubberButton.disabled=i,this._increaseButton.disabled=i,this._decreaseButton.disabled=i,this._applyReadonlyState()}_getDisplayState(e){let t=Pi(e);if(t.kind==="numeric"){if(this._preferCustomMode)return this._createCustomDisplayState(t.numberText);if(t.unit&&this._units.length&&!this._units.includes(t.unit))return this._createCustomDisplayState(e);let n=fu(t.unit,this._lastNumericUnit,this._units)??"";return{mode:"unit",inputValue:t.numberText,inputVisible:!0,inputEnabled:!0,selectValue:this._units.includes(n)?n:this._select.value||Ll,selectedUnit:n}}if(t.kind==="text")return!this._preferCustomMode&&this._fixedValues.includes(t.text)?{mode:"fixed",inputValue:"",inputVisible:!0,inputEnabled:!1,selectValue:t.text}:this._createCustomDisplayState(t.text);if(this._preferCustomMode)return this._createCustomDisplayState("");let i=this._lastNumericUnit??this._units[0]??"";return this._units.includes(i)?{mode:"unit",inputValue:"",inputVisible:!0,inputEnabled:!0,selectValue:i,selectedUnit:i}:this._createCustomDisplayState("")}_createCustomDisplayState(e){return!this._allowCustomValue&&this._units.length?{mode:"unit",inputValue:e,inputVisible:!0,inputEnabled:!0,selectValue:this._units[0],selectedUnit:this._units[0]}:{mode:"custom",inputValue:e,inputVisible:!0,inputEnabled:!0,selectValue:Ll}}_renderSelectOptions(){let e=this._select.value;if(this._select.replaceChildren(),this._units.length){let t=document.createElement("optgroup");t.label="Units";for(let i of this._units)t.appendChild(this._createOption(uu(i),i,"unit"));this._select.appendChild(t)}if(this._fixedValues.length){let t=document.createElement("optgroup");t.label="Values";for(let i of this._fixedValues)t.appendChild(this._createOption(i,i,"fixed"));this._select.appendChild(t)}(this._allowCustomValue||this._select.options.length===0)&&this._select.appendChild(this._createOption("custom",Ll,"custom")),e!==""?this._select.value=e:this._select.querySelector('option[value=""]')&&(this._select.value="")}_createOption(e,t,i){let n=document.createElement("option");return n.text=e,n.value=t,n.dataset.kind=i,n}_autoSizeSelect(){if(!this._measure||!this._select)return;let e=this._select.selectedOptions.item(0);this._measure.textContent=e?.text??"";let t=this._measure.offsetWidth;t>0?this._select.style.width=t+17+"px":requestAnimationFrame(()=>this._autoSizeSelect())}_applyReadonlyState(){!this._input||!this._select||(this._input.readOnly=this._readOnly,this._select.disabled=this._readOnly)}_convertNumericValue(e,t){if(t==null)return this._value;let i=e.unit;return this._unitValueConverter?.({value:e.value,numberText:e.numberText,rawValue:this._value,fromUnit:i,toUnit:t})??Ii(e.numberText,t)}_resolveCurrentValueForUnit(e){if(e==null)return null;let t=this._unitValueConverter?.({value:Number.NaN,numberText:"",rawValue:this._value,fromUnit:"",toUnit:e})?.trim();return t||null}_readEditableNumericValue(e){let t=Pi(this._value);if(t.kind==="numeric"){let i=this._convertNumericValue(t,e),n=Pi(i);return n.kind==="numeric"?n.value:t.value}if(this._input.value?.trim()){let i=Number(this._input.value);if(!Number.isNaN(i))return i}return this._lastNumericValue}_applyNumericValue(e,t){this._lastNumericValue=this._clampNumericValue(e),this._lastNumericUnit=t,this._commitValue(Ii(Jn(this._lastNumericValue),t))}_previewNumericValue(e,t,i){this._lastNumericValue=this._clampNumericValue(e),this._lastNumericUnit=t;let n=i??this._getEffectiveStep(t);this._setValue(Ii(this._formatInteractiveNumericValue(this._lastNumericValue,n),t),!1,!0)}_commitValue(e){this._setValue(e,!0,!1)}_setValue(e,t,i){let n=e??"";if(!t&&!i&&this._previewStartValue!=null)return;let r=this._value;this._value=n,i?this._displayValueLock=n:this._displayValueLock!=null&&(n===this._displayValueLock||n!==r)&&(this._displayValueLock=null),this._preferCustomMode=!1,this._updateValue(),r!==n&&(i&&(this._previewChanged=!0,this.valuePreviewChanged.emit({newValue:n,oldValue:r})),t&&this.valueChanged.emit({newValue:n,oldValue:r}))}_startPreviewSession(){this._previewStartValue==null&&(this._previewStartValue=this._value,this._previewChanged=!1)}_finishPreviewSession(e){if(this._previewStartValue==null)return;let t=this._previewStartValue,i=this._displayValueLock??this._value,n=this._previewChanged&&t!==i,r=e||!n;this._previewStartValue=null,this._previewChanged=!1,r?(this._displayValueLock=null,this._value=t,this._updateValue()):(this._displayValueLock=i,this._updateValue()),this.valuePreviewFinished.emit({newValue:i,oldValue:t,wasCancelled:r})}_applyStepPreview(e){let t=this._select.value,i=this._getEffectiveStep(t);this._previewNumericValue(this._getInteractiveStepValue(this._readEditableNumericValue(t),e,i),t,i)}_stopStepperRepeat(){this._stepperRepeatTimeout!=null&&(window.clearTimeout(this._stepperRepeatTimeout),this._stepperRepeatTimeout=null),this._stepperRepeatInterval!=null&&(window.clearInterval(this._stepperRepeatInterval),this._stepperRepeatInterval=null)}_attachStepperWindowListeners(){window.addEventListener("pointerup",this._windowPointerUpHandler,!0),window.addEventListener("pointercancel",this._windowPointerCancelHandler,!0),window.addEventListener("blur",this._windowBlurHandler)}_attachDragWindowListeners(){window.addEventListener("pointermove",this._windowDragPointerMoveHandler,!0),window.addEventListener("pointerup",this._windowDragPointerUpHandler,!0),window.addEventListener("pointercancel",this._windowDragPointerCancelHandler,!0),window.addEventListener("blur",this._windowDragBlurHandler)}_detachStepperWindowListeners(){window.removeEventListener("pointerup",this._windowPointerUpHandler,!0),window.removeEventListener("pointercancel",this._windowPointerCancelHandler,!0),window.removeEventListener("blur",this._windowBlurHandler)}_detachDragWindowListeners(){window.removeEventListener("pointermove",this._windowDragPointerMoveHandler,!0),window.removeEventListener("pointerup",this._windowDragPointerUpHandler,!0),window.removeEventListener("pointercancel",this._windowDragPointerCancelHandler,!0),window.removeEventListener("blur",this._windowDragBlurHandler)}_calculateDraggedStepCount(e){let t=Math.abs(e),i=Math.min(t,20)/5,n=Math.max(Math.min(t-20,40),0)/3,r=Math.max(t-60,0)/2,o=Math.trunc(i+n+r);return Math.sign(e)*o}_getEffectiveStep(e){return gu(this._unitSteps,this._step,e)}_getInteractiveStepValue(e,t,i){let n=i??this._step,r=this._clampNumericValue(e);if(!Number.isFinite(r)||!Number.isFinite(t)||t===0)return r;let o=this._min??0,a=(r-o)/n,l=Math.round(a),c=Math.abs(a-l)<1e-9,h;t>0?h=(c?l+1:Math.ceil(a))+t-1:h=(c?l-1:Math.floor(a))+t+1;let p=o+h*n;return this._clampNumericValue(this._roundToStepPrecision(p,n))}_formatInteractiveNumericValue(e,t){let i=t??this._step;return Jn(this._roundToStepPrecision(e,i),this._getStepPrecision(i))}_roundToStepPrecision(e,t){let n=10**this._getStepPrecision(t);return Math.round(e*n)/n}_getStepPrecision(e){let t=`${e??this._step}`.toLowerCase();if(t.includes("e-")){let[n,r]=t.split("e-"),o=Number(r),a=n.includes(".")?n.length-n.indexOf(".")-1:0;return o+a}let i=t.indexOf(".");return i>=0?t.length-i-1:0}_switchToUnitModeForInteraction(){let e=this._lastNumericUnit??this._units[0];if(e==null)return!1;this._preferCustomMode=!1;let t=this._resolveCurrentValueForUnit(e);return t!=null?(this._commitValue(t),this._isSelectedUnitMode()):(this._applyNumericValue(this._lastNumericValue,e),this._isSelectedUnitMode())}_isSelectedUnitMode(){return this._select.selectedOptions.item(0)?.dataset.kind==="unit"}_normalizeOptionValues(e){return mu(e)}_clampNumericValue(e){let t=e;return this._min!=null&&(t=Math.max(this._min,t)),this._max!=null&&(t=Math.min(this._max,t)),t}};customElements.define("node-projects-numeric-style-input",hn)});import{TypedEvent as ug}from"@node-projects/base-custom-webcomponent";var ki,ir=g(()=>{"use strict";ki=class{_services=new Map;servicesChanged=new ug;getLastService(e){let t=this._services.get(e);return t&&t.length?t[t.length-1]:null}getServices(e){return this._services.get(e)}register(e,t){this._services.has(e)||this._services.set(e,[]),this._services.get(e).push(t),this.servicesChanged.emit({serviceName:e})}registerLast(e,t){this._services.has(e)||this._services.set(e,[]),this._services.get(e).unshift(t),this.servicesChanged.emit({serviceName:e})}registerMultiple(e,t){for(let i of e)this._services.has(i)||this._services.set(i,[]),this._services.get(i).push(t),this.servicesChanged.emit({serviceName:i})}forSomeServicesTillResult(e,t){let i=this.getServices(e);if(i==null)return null;for(let n=i.length-1;n>=0;n--){let r=i[n],o=t(r);if(o!=null)return o}return null}getLastServiceWhere(e,t){let i=this.getServices(e);if(i==null)return null;for(let n=i.length-1;n>=0;n--){let r=i[n];if(t(r))return r}return null}getLastServiceResult(e,t){let i=this.getServices(e);if(i==null)return null;for(let n=i.length-1;n>=0;n--){let r=i[n],o=t(r);if(o)return o}return null}async getLastServiceWhereAsync(e,t){let i=this.getServices(e);if(i==null)return null;for(let n=i.length-1;n>=0;n--){let r=i[n];if(await t(r))return r}return null}}});import{BaseCustomWebComponentLazyAppend as mg,css as fg}from"@node-projects/base-custom-webcomponent";var pn,Rl=g(()=>{"use strict";pn=class extends mg{_placeholder;_loading;static style=fg`:host{display:block;overflow:hidden;background:#fff;height:100%;width:100%;position:relative}#placeholder{position:absolute;left:24px;height:100%;width:calc(100% - 24px)}#loading{position:absolute;top:60px;left:20px}#left{position:absolute;left:0;top:0;height:100%;width:24px;border-right:solid #fff 1px;box-sizing:border-box;background:#000}span{color:#fff;rotate:270deg;display:block;position:absolute;top:35px;left:-38px;font-weight:600;font-family:monospace;font-size:24px}`;constructor(){super(),this._placeholder=document.createElement("div"),this._placeholder.id="placeholder",this._placeholder.style.transform="scale(1)",this.shadowRoot.appendChild(this._placeholder),this._loading=document.createElement("div"),this._loading.id="loading",this._loading.textContent="\u{1F6C0} Hold on, loading...",this.shadowRoot.appendChild(this._loading);let e=document.createElement("div");e.id="left";let t=document.createElement("span");t.innerText="PREVIEW",e.appendChild(t),this.shadowRoot.appendChild(e)}dispose(){}executeCommand;canExecuteCommand;async display(e,t,i,n){this._loading.hidden=!1,await e.demoProviderService.provideDemo(this._placeholder,e,t,i,n),this._loading.hidden=!0}};customElements.define("node-projects-demo-view",pn)});import{PropertyChangedArgs as nr,TypedEvent as dn}from"@node-projects/base-custom-webcomponent";var rr,vu=g(()=>{"use strict";rr=class{_serviceContainer;_tool;_strokeColor="black";_strokeThickness="3";_fillBrush="none";constructor(e){this._serviceContainer=e}set tool(e){if(this._tool!==e){let t=this._tool;t&&t.dispose(),this._tool=e;let i=null;for(let n of this._serviceContainer.designerTools)n[1]==e&&(i=n[0]);this.onToolChanged.emit(new nr({name:i,tool:e},{name:null,tool:t})),this._tool&&this._tool.activated(this._serviceContainer)}}get tool(){return this._tool}onToolChanged=new dn;finishedWithTool=()=>this.tool=null;set strokeColor(e){if(this._strokeColor!==e){let t=this._strokeColor;this._strokeColor=e,this.onStrokeColorChanged.emit(new nr(e,t))}}get strokeColor(){return this._strokeColor}onStrokeColorChanged=new dn;set strokeThickness(e){if(this._strokeThickness!==e){let t=this._strokeThickness;this._strokeThickness=e,this.onStrokeThicknessChanged.emit(new nr(e,t))}}get strokeThickness(){return this._strokeThickness}onStrokeThicknessChanged=new dn;set fillBrush(e){if(this._fillBrush=e,this._fillBrush!==e){let t=this._fillBrush;this._fillBrush=e,this.onFillBrushChanged.emit(new nr(e,t))}}get fillBrush(){return this._fillBrush}onFillBrushChanged=new dn;showConfigClicked=new dn}});import{BaseCustomWebComponentConstructorAppend as gg,css as yg,html as vg,TypedEvent as _g}from"@node-projects/base-custom-webcomponent";var un,zl=g(()=>{"use strict";un=class extends gg{dispose(){}canvasElement;elementsToPackages;onTextChanged=new _g;_text;static style=yg`:host{display:block;height:100%;width:100%}textarea{height:100%;width:100%;resize:none;white-space:nowrap;box-sizing:border-box}`;static template=vg`<div id="container" style="width:100%;height:100%;position:absolute"><textarea id="text"></textarea></div>`;executeCommand(e){}canExecuteCommand(e){return!1}async ready(){this._text=this._getDomElement("text")}focusEditor(){requestAnimationFrame(()=>{this.focus(),this._text.focus()})}activated(){}update(e){this._text.value=e}getText(){return this._text.value}setSelection(e){this._text.setSelectionRange(e.start,e.start+e.length)}};customElements.define("node-projects-code-view-simple",un)});var xg,sr,Fl=g(()=>{"use strict";ir();Rl();vu();zl();xg=navigator.maxTouchPoints>0,sr=class extends ki{config={codeViewWidget:un,demoViewWidget:pn};designerExtensions=new Map;sourceMapProviders=[];removeDesignerExtensionOfType(e,t){let i=this.designerExtensions.get(e);for(let n=0;n<i.length;n++)i[n].constructor===t&&i.splice(n,1)}instanceServiceContainerCreatedCallbacks=[];designViewConfigButtons=[];designViewToolbarButtons=[];designerPointerExtensions=[];designerContextMenuExtensions;overlayLayerViewAdditionalStyles=[];globalContext=new rr(this);options={zoomDesignerBackground:!0,roundPixelsToDecimalPlaces:0,resizerPixelSize:xg?8:3};designerTools=new Map;get bindingService(){return this.getLastService("bindingService")}get bindableObjectsServices(){return this.getServices("bindableObjectsService")}get bindableObjectDragDropService(){return this.getLastService("bindableObjectDragDropService")}get propertyGridDragDropService(){return this.getLastService("propertyGridDragDropService")}get dragDropService(){return this.getLastService("dragDropService")}get elementInteractionServices(){return this.getServices("elementInteractionService")}get propertiesServices(){return this.getServices("propertyService")}get attachedPropertyServices(){return this.getServices("attachedPropertyService")}get propertyGroupService(){return this.getLastService("propertyGroupsService")}get containerServices(){return this.getServices("containerService")}get snaplinesProviderService(){return this.getLastService("snaplinesProviderService")}get elementsServices(){return this.getServices("elementsService")}get eventsService(){return this.getServices("eventsService")}get instanceServices(){return this.getServices("instanceService")}get propertyEditorTypesServices(){return this.getServices("propertyEditorTypesService")}get htmlWriterService(){return this.getLastService("htmlWriterService")}get htmlParserService(){return this.getLastService("htmlParserService")}get renderedDesignItemServices(){return this.getServices("renderedDesignItemService")}get intializationService(){return this.getLastService("intializationService")}get elementAtPointService(){return this.getLastService("elementAtPointService")}get externalDragDropService(){return this.getLastService("externalDragDropService")}get copyPasteService(){return this.getLastService("copyPasteService")}get modelCommandService(){return this.getLastService("modelCommandService")}get demoProviderService(){return this.getLastService("demoProviderService")}get designItemService(){return this.getLastService("designItemService")}get configUiServices(){return this.getServices("configUiService")}get refactorServices(){return this.getServices("refactorService")}get deletionService(){return this.getLastService("deletionService")}get referencesChangedService(){return this.getLastService("referencesChangedService")}get miniatureViewService(){return this.getLastService("miniatureViewService")}get pngCreatorService(){return this.getLastService("pngCreatorService")}get searchService(){return this.getLastService("searchService")}get editorTypesServices(){return this.getServices("editorTypeService")}}});var z,Ee=g(()=>{"use strict";z=class{static isTypescriptEnum(e){if(e&&typeof e=="object"&&e.constructor==Object){for(let t in e){let i=typeof e[t];if(i!=="string"&&i!=="number")return!1}return!0}return!1}static getTypescriptEnumEntries(e){let t=[];for(let i in e)isNaN(i)&&t.push([i,e[i]]);return t}static camelToDashCase(e){return e.replace(/([A-Z])/g,t=>`-${t[0].toLowerCase()}`)}static dashToCamelCase(e){return e.replace(/-([a-z])/g,t=>t[1].toUpperCase())}}});var W,pt=g(()=>{"use strict";(function(s){s.none="none",s.all="all",s.some="some",s.bound="bound",s.fromStylesheet="fromStylesheet"})(W||(W={}))});var R,nt=g(()=>{"use strict";(function(s){s.explicitProperty="explicitProperty",s.property="property",s.attribute="attribute",s.class="class",s.css="css",s.cssvar="cssvar",s.event="event",s.content="content",s.visible="visible"})(R||(R={}))});var _,ye=g(()=>{"use strict";(function(s){s.property="property",s.attribute="attribute",s.propertyAndAttribute="propertyAndAttribute",s.cssValue="cssvalue",s.complex="complex",s.add="add"})(_||(_={}))});var D,Z=g(()=>{"use strict";(function(s){s[s.Element=1]="Element",s[s.Attribute=2]="Attribute",s[s.TextNode=3]="TextNode",s[s.Comment=8]="Comment",s[s.Document=9]="Document",s[s.DocumentFragment=11]="DocumentFragment"})(D||(D={}))});function Bb(s){return s.getRootNode()?.host?.localName=="node-projects-designer-canvas"}function or(s,e){return e.createRange().createContextualFragment(s,{includeShadowRoots:!0}).firstChild}function _u(s,e){return s instanceof e||s instanceof(s.ownerDocument.defaultView??window)[e.name]}function Bl(s,...e){for(let t of e)if(s instanceof t||s instanceof(s.ownerDocument.defaultView??window)[t.name])return!0;return!1}function Ft(s){return s==null||Bl(s,SVGElement,HTMLHtmlElement,HTMLHeadElement,HTMLBodyElement,HTMLSelectElement,HTMLOptionElement)?!1:(s.ownerDocument.defaultView??window).getComputedStyle(s).display.startsWith("inline")}function ni(s){return s==null||Bl(s,SVGElement,HTMLHtmlElement,HTMLHeadElement,HTMLBodyElement,HTMLSelectElement,HTMLOptionElement)?!1:(s.ownerDocument.defaultView??window).getComputedStyle(s).display.startsWith("inline")}function xu(s){if(Bl(s,SVGElement,HTMLHtmlElement,HTMLHeadElement,HTMLBodyElement)||_u(s,MathMLElement))return We.block;let e=(s.ownerDocument.defaultView??window).getComputedStyle(s).display;return e=="none"?We.none:e.startsWith("inline")?We.inline:We.block}function ar(s){return s.textContent.trim()==""&&s.textContent.indexOf("\xA0")<0}function Hb(){let s=document.activeElement,e=null;for(;s!=e;)e=s,s.shadowRoot!=null&&s.shadowRoot.activeElement&&(s=s.shadowRoot.activeElement);return s}function Gb(s){if(_u(s,HTMLElement))return{x:s.offsetLeft,y:s.offsetTop};{let e=K(s),t=K(s.parentElement);return{x:e.x-t.x,y:e.y-t.y}}}function K(s){let e=s.getBoundingClientRect();if(e.width==0&&e.height==0&&(s.ownerDocument.defaultView??window).getComputedStyle(s).display=="contents")if(s.shadowRoot)for(let i of s.shadowRoot.children){let n=K(i);e=new DOMRect(Math.min(e.x,n.x),Math.min(e.y,n.y),Math.max(e.width,n.width),Math.max(e.height,n.height))}else for(let i of s.children){let n=K(i);e=new DOMRect(Math.min(e.x,n.x),Math.min(e.y,n.y),Math.max(e.width,n.width),Math.max(e.height,n.height))}return e}function lr(s){let e=(s.ownerDocument.defaultView??window).getComputedStyle(s).zoom;if(!e||e==="normal")return 1;if(e.endsWith("%")){let i=parseFloat(e);return Number.isFinite(i)&&i>0?i/100:1}let t=parseFloat(e);return Number.isFinite(t)&&t>0?t:1}function bu(s){let e=parseInt(getComputedStyle(s).paddingLeft.replace("px",""))+parseInt(getComputedStyle(s).marginLeft.replace("px",""))+parseInt(getComputedStyle(s).borderLeft.replace("px",""))+parseInt(getComputedStyle(s).paddingRight.replace("px",""))+parseInt(getComputedStyle(s).marginRight.replace("px",""))+parseInt(getComputedStyle(s).borderRight.replace("px","")),t=parseInt(getComputedStyle(s).paddingTop.replace("px",""))+parseInt(getComputedStyle(s).marginTop.replace("px",""))+parseInt(getComputedStyle(s).borderTop.replace("px",""))+parseInt(getComputedStyle(s).paddingBottom.replace("px",""))+parseInt(getComputedStyle(s).marginBottom.replace("px",""))+parseInt(getComputedStyle(s).borderBottom.replace("px",""));return{x:e,y:t}}function ri(s,e){let t={x:Number.MAX_VALUE,y:Number.MAX_VALUE},i={x:Number.MIN_VALUE,y:Number.MIN_VALUE},n;for(let r of s)r.nodeType==D.TextNode||r.nodeType==D.Comment||(n={x:e.getNormalizedElementCoordinates(r.element).x,y:e.getNormalizedElementCoordinates(r.element).y,width:e.getNormalizedElementCoordinates(r.element).width,height:e.getNormalizedElementCoordinates(r.element).height},n.x<t.x&&(t.x=n.x),n.y<t.y&&(t.y=n.y),n.x+n.width>i.x&&(i.x=n.x+n.width),n.y+n.height>i.y&&(i.y=n.y+n.height));return{x:t.x,y:t.y,width:i.x-t.x,height:i.y-t.y}}var We,ue=g(()=>{"use strict";Z();(function(s){s[s.none=0]="none",s[s.inline=1]="inline",s[s.block=2]="block"})(We||(We={}))});function Bt(s){let e=s.match(/\s*!\s*important\s*$/i);return e?{value:s.substring(0,e.index).trimEnd(),important:!0}:{value:s,important:!1}}function je(s,e){return e?s+" !important":s}var wt=g(()=>{"use strict"});var te,Re=g(()=>{"use strict";pt();Ee();nt();ye();Z();ue();wt();te=class s{constructor(e){this._recreateElementsOnPropertyChange=e}_recreateElementsOnPropertyChange=!1;static _stylesCache=new Map;_cssCacheClearTimer;static _bindingsCache=new Map;static _bindingsCacheClearTimer;_notifyChangedProperty(e,t,i){}async getProperty(e,t){let i=await this.getProperties(e);return"properties"in i[0]?i.flatMap(n=>n.properties).find(n=>n.name==t):i.find(n=>n.name==t)}async setValue(e,t,i){let n=e[0].openGroup("property changed: "+t.name+" to "+i);for(let r of e)if(this.isHandledElement(r)&&this.getProperty(r,t.name)){if(t.propertyType==_.cssValue){let o=typeof i=="string"?Bt(i):{value:i,important:!1};await r.updateStyleInSheetOrLocalAsync(t.propertyName??t.name,o.value,o.important),r.element.setAttribute("style",r.element.getAttribute("style"))}else{let o=t.attributeName;if(o||(o=z.camelToDashCase(t.name)),t.type==="object"){let a=JSON.stringify(i);t.propertyType==_.propertyAndAttribute?r.setPropertyAndAttribute(t.name,a):t.propertyType==_.attribute?r.setAttribute(o,a):t.propertyType==_.property&&r.setProperty(t.name,i)}else t.type=="boolean"&&(i===!1||i==null)?((t.propertyType==_.attribute||t.propertyType==_.propertyAndAttribute)&&r.removeAttribute(o),(t.propertyType==_.property||t.propertyType==_.propertyAndAttribute)&&r.setProperty(t.name,!1)):t.type=="boolean"&&i===!0?((t.propertyType==_.attribute||t.propertyType==_.propertyAndAttribute)&&r.setAttribute(o,""),(t.propertyType==_.property||t.propertyType==_.propertyAndAttribute)&&r.setProperty(t.name,!0)):t.propertyType==_.propertyAndAttribute?r.setPropertyAndAttribute(t.name,i):t.propertyType==_.attribute?r.setAttribute(o,i.toString()):t.propertyType==_.property&&r.setProperty(t.name,i)}this._notifyChangedProperty(r,t,i)}n.commit(),this._recreateElementsOnPropertyChange&&s.recreateElements(this,e)}getPropertyTarget(e,t){return t.propertyType==_.attribute?R.attribute:t.propertyType==_.cssValue?R.css:R.property}clearValue(e,t,i){let n=e[0].openGroup("property cleared: "+t.name);for(let r of e){if(i!="binding"){if(t.propertyType==_.cssValue)r.removeStyle(t.propertyName??t.name);else if((t.propertyType==_.property||t.propertyType==_.propertyAndAttribute)&&(r.element[t.propertyName??t.name]=null),t.propertyType==_.attribute||t.propertyType==_.propertyAndAttribute){let o=t.attributeName;o||(o=z.camelToDashCase(t.name)),r.removeAttribute(o)}}i!="value"&&r.serviceContainer.forSomeServicesTillResult("bindingService",o=>o.clearBinding(r,t.name,this.getPropertyTarget(r,t))),this._notifyChangedProperty(r,t,void 0)}n.commit(),this._recreateElementsOnPropertyChange&&s.recreateElements(this,e)}isSet(e,t){let i=!0,n=!1;if(e!=null&&e.length!==0){let r=t.attributeName;r||(r=z.camelToDashCase(t.name));for(let a of e){let l=!1;if(t.propertyType==_.cssValue?l=a.hasStyle(t.name):l=a.hasAttribute(r),i=i&&l,n=n||l,!i&&n)break}let o=s.getOrBuildCachedBindings(e[0]);if(t.propertyType==_.cssValue){if(o&&o.find(a=>(a.target==R.css||a.target==R.cssvar)&&a.targetName==t.name))return W.bound}else if(t.propertyType==_.attribute){if(o&&o.find(a=>a.target==R.attribute&&a.targetName==t.name))return W.bound}else if(t.propertyType==_.property){if(o&&o.find(a=>(a.target==R.property||a.target==R.explicitProperty)&&a.targetName==t.name))return W.bound}else if(o&&o.find(a=>(a.target==R.property||a.target==R.explicitProperty||a.target==R.attribute)&&a.targetName==t.name))return W.bound;if(!i&&t.propertyType==_.cssValue){let a=s._stylesCache.get(e[0]);if(a||(a=new Set(e[0].getAllStyles().filter(c=>c.selector!=null).flatMap(c=>c.declarations).map(c=>c.name)),s._stylesCache.set(e[0],a),clearTimeout(this._cssCacheClearTimer),this._cssCacheClearTimer=setTimeout(()=>s._stylesCache.clear(),30)),a.has(t.propertyName??t.name))return W.fromStylesheet}}else return W.none;return i?W.all:n?W.some:W.none}static getOrBuildCachedBindings(e){let t=s._bindingsCache.get(e);if(!t){let i=e.serviceContainer.getServices("bindingService");if(t=[],i)for(let n of i){let r=n.getBindings(e);r&&r.length>0&&t.push(...r)}s._bindingsCache.set(e,t),clearTimeout(this._bindingsCacheClearTimer),this._bindingsCacheClearTimer=setTimeout(()=>s._bindingsCache.clear(),30)}return t}getValue(e,t){if(e!=null&&e.length!==0)if(t.propertyType==_.cssValue){let i=e[0].getStyle(t.propertyName??t.name);for(let n of e)if(n.getStyle(t.name)!=i){i=null;break}return typeof i=="string"?je(i,e[0].isStyleImportant(t.propertyName??t.name)):i}else if(t.propertyType==_.property){let i=t.propertyName;return i||(i=z.dashToCamelCase(t.name)),e[0].element[i]}else{let i=t.attributeName;if(i||(i=z.camelToDashCase(t.name)),t.type=="boolean"){if(e[0].hasAttribute(i)){let r=e[0].getAttribute(i);return r==""?!0:r}return!1}return e[0].getAttribute(i)}return null}getBinding(e,t){let i=s.getOrBuildCachedBindings(e[0]);return i!=null?t.propertyType==_.cssValue?i.find(n=>(n.target==R.css||n.target==R.cssvar)&&n.targetName==t.name):t.propertyType==_.attribute?i.find(n=>n.target==R.attribute&&n.targetName==t.name):t.propertyType==_.property?i.find(n=>(n.target==R.property||n.target==R.explicitProperty)&&n.targetName==t.name):i.find(n=>(n.target==R.property||n.target==R.explicitProperty||n.target==R.attribute)&&n.targetName==t.name):null}getUnsetValue(e,t){return t.propertyType==_.cssValue?e!=null&&e.length!==0&&e[0].nodeType==D.Element?window.getComputedStyle(e[0].element)[t.propertyName??t.name]:null:t.defaultValue}static recreateElements(e,t){for(let i of t){if(!e.isHandledElement(i))continue;let n="<"+i.name+" ";for(let o of i.element.attributes)n+=o.name+'="'+o.value.replaceAll('"',""")+'" ';n+="></"+i.name+">";let r=or(n,t[0].document);for(let o of[...i.element.childNodes])r.appendChild(o);r.style.pointerEvents="auto",i.node.insertAdjacentElement("beforebegin",r),i.node.parentNode&&i.node.parentNode.removeChild(i.node),i.replaceNode(r)}}getContextMenu(e,t){let i=[{title:"clear",action:n=>{t.service.clearValue(e,t,"value"),e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(e)}},{title:"edit as text",action:(n,r,o,a)=>{a.close(),setTimeout(async()=>{let l=t.service.getValue(e,t),c=prompt(`edit value of '${t.name}' as string:`,l);c&&c!=l&&await t.service.setValue(e,t,c),e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(e)},10)}}];return e[0].serviceContainer.config.openBindingsEditor&&(i.push({title:"-"},{title:"edit binding",action:()=>{let n=t.service.getPropertyTarget(e[0],t),r=t.service.getBinding(e,t);e[0].serviceContainer.config.openBindingsEditor(t,e,r,n)}}),t.service.isSet(e,t)==W.bound&&i.push({title:"clear binding",action:()=>{t.service.clearValue(e,t,"binding"),e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(e)}})),i}}});var Y,_e=g(()=>{"use strict";(function(s){s[s.none=0]="none",s[s.full=1]="full",s[s.fullOnValueChange=2]="fullOnValueChange",s[s.fullOnClassChange=3]="fullOnClassChange"})(Y||(Y={}))});var dt,Di=g(()=>{"use strict";Ee();Re();ye();_e();dt=class extends te{getRefreshMode(e){return Y.fullOnClassChange}async getProperties(e){return this.isHandledElement(e)&&e.element?.constructor?.properties?this.parseProperties(e.element.constructor.properties):null}parseProperties(e){let t=[],i=Object.keys(e),n=Object.groupBy(i,r=>e[r].group??"");for(let r in n){let o={name:r,properties:[]};for(let a of n[r]){let l=e[a],c=l,h=null,p=null,d=!1,u=_.propertyAndAttribute;if(l.type&&(c=l.type,h=l.description,p=l.example,d=l.readonly,u=l.readonly?_.property:_.propertyAndAttribute),c===String){let m={name:a,type:"string",service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else if(c===Object){let m={name:a,type:"object",service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else if(c===Number){let m={name:a,type:"number",service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else if(c===Date){let m={name:a,type:"date",service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else if(c===Boolean){let m={name:a,type:"boolean",service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else if(z.isTypescriptEnum(c)){let m={name:a,type:"enum",enumValues:z.getTypescriptEnumEntries(c),service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else if(typeof c=="string"){let m={name:a,type:c,service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else{let m={name:a,type:"string",service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}}o.name==""?t.push(...o.properties):t.push(o)}return t}getUnsetValue(e,t){return e[0].element[t.propertyName??t.name]}}});var cr,Hl=g(()=>{"use strict";Di();cr=class extends dt{name="polymer";isHandledElement(e){return e.element.constructor.polymerElementVersion!=null}_notifyChangedProperty(e,t,i){e.element.set(t.name,i)}}});var hr,Gl=g(()=>{"use strict";Di();hr=class extends dt{name="lit";isHandledElement(e){let t=e.element.constructor.__proto__;for(;t!=null;){if(t.name=="LitElement")return!0;if(t.name==null||t.name=="HTMLElement"||t.name=="Element"||t.name=="Node"||t.name=="HTMLElement")return!1;t=t.__proto__}return!1}_notifyChangedProperty(e,t,i){}}});var pr,Wl=g(()=>{"use strict";ye();_e();Re();pr=class extends te{inputProperties=[{name:"type",type:"list",values:["text","number","button","checkbox","color","date","datetime-local","email","file","hidden","image","month","password","radio","range","reset","search","submit","tel","time","url","week"],service:this,defaultValue:"text",propertyType:_.propertyAndAttribute},{name:"value",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"placeholder",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"checked",type:"boolean",service:this,propertyType:_.propertyAndAttribute},{name:"min",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"max",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"readonly",type:"boolean",service:this,propertyType:_.propertyAndAttribute},{name:"valueAsDate",type:"string",service:this,propertyType:_.property},{name:"valueAsNumber",type:"string",service:this,propertyType:_.property}];textareaProperties=[{name:"value",type:"string",service:this,propertyType:_.property},{name:"placeholder",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"maxlength",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"cols",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"rows",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"readonly",type:"boolean",service:this,propertyType:_.propertyAndAttribute},{name:"resize",type:"list",values:["both","none","horizontal","vertical"],service:this,propertyType:_.cssValue}];selectProperties=[{name:"value",type:"string",service:this,propertyType:_.property},{name:"size",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"multiple",type:"boolean",service:this,propertyType:_.propertyAndAttribute}];buttonProperties=[{name:"type",type:"list",values:["button","submit","reset"],service:this,defaultValue:"button",propertyType:_.propertyAndAttribute},{name:"value",type:"string",service:this,propertyType:_.propertyAndAttribute}];anchorProperties=[{name:"href",type:"string",service:this,propertyType:_.propertyAndAttribute}];divProperties=[{name:"title",type:"string",service:this,propertyType:_.propertyAndAttribute}];imgProperties=[{name:"src",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"alt",type:"string",service:this,propertyType:_.propertyAndAttribute}];iframeProperties=[{name:"src",type:"string",service:this,propertyType:_.propertyAndAttribute}];formElementProperties=[{name:"autofocus",type:"boolean",service:this,propertyType:_.propertyAndAttribute},{name:"disabled",type:"boolean",service:this,propertyType:_.propertyAndAttribute},{name:"required",type:"boolean",service:this,propertyType:_.propertyAndAttribute}];meterProperties=[{name:"value",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"min",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"max",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"low",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"high",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"optimum",type:"number",service:this,propertyType:_.propertyAndAttribute}];name="native";getRefreshMode(e){return Y.full}isHandledElement(e){switch(e.element.localName){case"input":case"textarea":case"select":case"button":case"a":case"div":case"span":case"br":case"img":case"iframe":case"meter":case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":case"p":return!0}return!1}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){if(!this.isHandledElement(e))return null;switch(e.element.localName){case"input":return[...this.inputProperties,...this.formElementProperties];case"textarea":return[...this.textareaProperties,...this.formElementProperties];case"select":return[...this.selectProperties,...this.formElementProperties];case"button":return[...this.buttonProperties,...this.formElementProperties];case"a":return this.anchorProperties;case"div":return this.divProperties;case"img":return this.imgProperties;case"iframe":return this.iframeProperties;case"meter":return this.meterProperties;case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":case"p":return[]}return null}}});var et,Ai=g(()=>{"use strict";ye();Re();_e();et=class extends te{getRefreshMode(e){return Y.none}commonProperties=[{name:"class",type:"string",service:this,attributeName:"class",propertyName:"className",propertyType:_.attribute},{name:"title",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"part",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"tabindex",type:"number",service:this,propertyType:_.propertyAndAttribute}];name="common";isHandledElement(e){return!e.isRootItem}async getProperty(e,t){return this.commonProperties.find(i=>i.name==t)}async getProperties(e){return this.commonProperties}}});var dr,jl=g(()=>{"use strict";Ai();ye();_e();dr=class extends et{rectProperties=[{name:"x",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"y",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"width",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"height",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"rx",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"ry",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"pathLength",type:"svg-length",service:this,propertyType:_.attribute},{name:"fill",type:"color",defaultValue:"transparent",service:this,propertyType:_.attribute},{name:"fill-opacity",type:"number",defaultValue:"1",service:this,propertyType:_.attribute}];lineProperties=[{name:"x1",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"y1",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"x2",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"y2",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"pathLength",type:"svg-length",service:this,propertyType:_.attribute}];ellipseProperties=[{name:"cx",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"cy",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"rx",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"ry",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"pathLength",type:"svg-length",service:this,propertyType:_.attribute},{name:"fill",type:"color",defaultValue:"transparent",service:this,propertyType:_.attribute},{name:"fill-opacity",type:"number",defaultValue:"1",service:this,propertyType:_.attribute}];pathProperties=[{name:"d",type:"string",defaultValue:"",service:this,propertyType:_.attribute},{name:"pathLength",type:"svg-length",service:this,propertyType:_.attribute}];svgProperties=[{name:"width",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"height",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"viewBox",type:"string",service:this,propertyType:_.attribute}];defaultProperties=[{name:"stroke",type:"color",defaultValue:"currentcolor",service:this,propertyType:_.attribute},{name:"stroke-width",type:"svg-length",service:this,propertyType:_.attribute},{name:"stroke-opacity",type:"number",defaultValue:"1",service:this,propertyType:_.attribute},{name:"visibility",type:"list",values:["visible","hidden"],defaultValue:"visible",service:this,propertyType:_.attribute}];name="svg";getRefreshMode(e){return Y.fullOnClassChange}isHandledElement(e){switch(e.element.localName){case"rect":case"line":case"ellipse":case"path":case"svg":return!0}return!1}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){let t=null;if(!this.isHandledElement(e))return null;switch(e.element.localName){case"rect":t=[...this.rectProperties,...this.defaultProperties];break;case"line":t=[...this.lineProperties,...this.defaultProperties];break;case"ellipse":t=[...this.ellipseProperties,...this.defaultProperties];break;case"path":t=[...this.pathProperties,...this.defaultProperties];break;case"svg":t=this.svgProperties;break}if(e.element.localName=="line"||e.element.localName=="path"){let i=this.getAllMarkerIds(e);(i.length>0||e.hasAttribute("marker-start"))&&t.push({name:"marker-start",type:"string",values:i,service:this,propertyType:_.attribute}),(i.length>0||e.hasAttribute("marker-mid"))&&t.push({name:"marker-mid",type:"string",values:i,service:this,propertyType:_.attribute}),(i.length>0||e.hasAttribute("marker-end"))&&t.push({name:"marker-end",type:"string",values:i,service:this,propertyType:_.attribute})}return t}getAllMarkerIds(e){return[...e.element.ownerSVGElement.querySelectorAll("defs > marker")].map(r=>`url(#${r.id})`).filter(r=>!!r)}}});var Ti,Yl=g(()=>{"use strict";Ti=class{constructor(e,t,i,n,r=!1,o=!1){this.title="Change Css Style "+t+" of <"+e.name+">",this.designItem=e,this.name=t,this.newValue=i,this.oldValue=n,this.newImportant=r,this.oldImportant=o}title;get affectedItems(){return[this.designItem]}undo(){return this.oldValue===""||this.oldValue==null?(this.designItem._withoutUndoRemoveStyle(this.name),this.name.startsWith("--")?this.designItem.element.style.removeProperty(this.name):this.designItem.element.style[this.name]="",[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.newValue,newValue:null}]):(this.designItem._withoutUndoSetStyle(this.name,this.oldValue,this.oldImportant),this.designItem.element.style.setProperty(this.name,this.oldValue,this.oldImportant?"important":""),[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.newValue,newValue:this.oldValue}])}do(){return this.newValue===""||this.newValue==null?(this.designItem._withoutUndoRemoveStyle(this.name),this.name.startsWith("--")?this.designItem.element.style.removeProperty(this.name):this.designItem.element.style[this.name]="",[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.oldValue,newValue:null}]):(this.designItem._withoutUndoSetStyle(this.name,this.newValue,this.newImportant),this.designItem.element.style.setProperty(this.name,this.newValue,this.newImportant?"important":""),[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.oldValue,newValue:this.newValue}])}designItem;name;newValue;oldValue;newImportant;oldImportant;mergeWith(e){return!1}}});var mn,Ul=g(()=>{"use strict";mn=class s{constructor(e,t,i,n){this.title="Change Attribute "+t+" of <"+e.name+">",this.designItem=e,this.name=t,this.newValue=i,this.oldValue=n}title;get affectedItems(){return[this.designItem]}undo(){if(this.oldValue==null)return this.designItem._withoutUndoRemoveAttribute(this.name),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.newValue,newValue:null}];{let e=this.oldValue;return typeof this.oldValue!="string"&&(e=this.oldValue.toString()),this.designItem._withoutUndoSetAttribute(this.name,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.newValue,newValue:e}]}}do(){if(this.newValue==null)return this.designItem._withoutUndoRemoveAttribute(this.name),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.newValue,newValue:null}];{let e=this.newValue;return typeof this.newValue!="string"&&(e=this.newValue.toString()),this.designItem._withoutUndoSetAttribute(this.name,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.oldValue,newValue:e}]}}designItem;name;newValue;oldValue;mergeWith(e){return e instanceof s&&this.designItem===e.designItem&&this.name===e.name?(this.newValue=e.newValue,!0):!1}}});var I,rt=g(()=>{"use strict";(function(s){s[s.Directly=0]="Directly",s[s.Permanent=1]="Permanent",s[s.Selection=2]="Selection",s[s.PrimarySelection=3]="PrimarySelection",s[s.PrimarySelectionContainer=4]="PrimarySelectionContainer",s[s.MouseOver=5]="MouseOver",s[s.OnlyOneItemSelected=6]="OnlyOneItemSelected",s[s.MultipleItemsSelected=7]="MultipleItemsSelected",s[s.ContainerDragOverAndCanBeEntered=8]="ContainerDragOverAndCanBeEntered",s[s.ContainerExternalDragOverAndCanBeEntered=9]="ContainerExternalDragOverAndCanBeEntered",s[s.ContainerDrag=10]="ContainerDrag",s[s.Doubleclick=11]="Doubleclick",s[s.Placement=12]="Placement",s[s.PrimarySelectionAndCanBeEntered=13]="PrimarySelectionAndCanBeEntered",s[s.PrimarySelectionContainerAndCanBeEntered=14]="PrimarySelectionContainerAndCanBeEntered",s[s.PrimarySelectionRefreshed=15]="PrimarySelectionRefreshed",s[s.ManualApplied=16]="ManualApplied"})(I||(I={}))});var ut,ur,mr,Xl=g(()=>{"use strict";(function(s){s[s.Name=0]="Name",s[s.Value=1]="Value",s[s.InQuote=2]="InQuote"})(ut||(ut={}));ur=class{constructor(e,t,i){this.name=e.trim(),this.value=t.trim(),this.important=i}name;value;important},mr=class{entries=[];parse(e,t="'"){this.entries=[];let i="",n="",r=ut.Name;for(let o=0;o<e.length;o++){let a=e[o];if(r===ut.Name)a===":"?r=ut.Value:a===";"?i="":i+=a;else if(r===ut.Value)if(a===";"){let l=this.createEntry(i,n);this.entries.push(l),i="",n="",r=ut.Name}else a===t&&(r=ut.InQuote),n+=a;else r===ut.InQuote&&(a==="\\"?(n+=a,o++,a=e[o],n+=a):a===t?(n+=a,r=ut.Value):n+=a)}i.trim()!==""&&this.entries.push(this.createEntry(i,n))}createEntry(e,t){let i=t.match(/\s*!\s*important\s*$/i);return i?new ur(e,t.substring(0,i.index),!0):new ur(e,t,!1)}}});var Ht,$l=g(()=>{"use strict";Ht=class{constructor(e,t,i){this.title="Move or Insert Item",this.designItem=e,this.newParent=t,this.newIndex=i}title;get affectedItems(){return this.oldParent?[this.designItem,this.newParent,this.oldParent]:[this.designItem,this.newParent]}undo(){return this.oldParent?(this.oldParent._insertChildInternal(this.designItem,this.oldIndex),[{changeType:"moved",designItems:[this.designItem]}]):(this.designItem.parent._removeChildInternal(this.designItem),[{changeType:"removed",designItems:[this.designItem]}])}do(){return this.oldParent=this.designItem.parent,this.oldParent&&(this.oldIndex=this.designItem.parent.indexOf(this.designItem)),this.newParent._insertChildInternal(this.designItem,this.newIndex),[{changeType:this.oldParent?"moved":"added",designItems:[this.designItem]}]}designItem;newParent;newIndex;oldParent;oldIndex;newItem;mergeWith(e){return!1}}});var Mi,fr=g(()=>{"use strict";Mi=class{_textHolder="";indent=4;level=0;get position(){return this._textHolder.length}isLastCharNewline(){return this._textHolder[this._textHolder.length-1]===`
|
|
1
|
+
var xl=Object.defineProperty;var Hf=Object.getOwnPropertyDescriptor;var Gf=Object.getOwnPropertyNames;var Wf=Object.prototype.hasOwnProperty;var g=(r,e)=>()=>(r&&(e=r(r=0)),e);var qd=(r,e)=>{for(var t in e)xl(r,t,{get:e[t],enumerable:!0})},jf=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Gf(e))!Wf.call(r,n)&&n!==t&&xl(r,n,{get:()=>e[n],enumerable:!(i=Hf(e,n))||i.enumerable});return r};var eu=r=>jf(xl({},"__esModule",{value:!0}),r);import{BaseCustomWebComponentConstructorAppend as tg,css as ig,html as ng}from"@node-projects/base-custom-webcomponent";var Al,Tl,rg,ln,Ml=g(()=>{"use strict";Al=436,Tl={position:{top:"top",right:"right",bottom:"bottom",left:"left"},margin:{top:"margin-top",right:"margin-right",bottom:"margin-bottom",left:"margin-left"},border:{top:"border-top-width",right:"border-right-width",bottom:"border-bottom-width",left:"border-left-width"},padding:{top:"padding-top",right:"padding-right",bottom:"padding-bottom",left:"padding-left"},content:{width:"width",height:"height"}},rg={"border-top-width":"borderTopWidth","border-right-width":"borderRightWidth","border-bottom-width":"borderBottomWidth","border-left-width":"borderLeftWidth","margin-top":"marginTop","margin-right":"marginRight","margin-bottom":"marginBottom","margin-left":"marginLeft","padding-top":"paddingTop","padding-right":"paddingRight","padding-bottom":"paddingBottom","padding-left":"paddingLeft"},ln=class extends tg{static style=ig`:host{display:block;box-sizing:border-box;min-width:0;color:var(--property-grid-text-color,#fff);font:11px monospace;overflow:hidden}#box-model{display:grid;grid-template-columns:46px minmax(120px,1fr) 46px;grid-template-rows:22px minmax(29px,auto) minmax(58px,auto) minmax(29px,auto) 22px;grid-template-areas:". position-top ." "position-left margin position-right" "position-left margin position-right" "position-left margin position-right" ". position-bottom .";align-items:center;justify-items:center;width:100%;min-width:${Al};padding:4px;transform-origin:top left}.ring{display:grid;grid-template-columns:42px minmax(56px,1fr) 42px;grid-template-rows:20px minmax(34px,auto) 20px;grid-template-areas:". top ." "left inner right" ". bottom .";align-items:center;justify-items:center;position:relative;box-sizing:border-box;width:100%;min-width:0;height:100%;min-height:116px;border:1px dashed rgba(0,0,0,.55)}#margin{grid-area:margin;background:#f6c89f}#border{grid-area:inner;background:#f7dd9c;border-style:solid;min-height:76px}#padding{grid-area:inner;background:#c8d08f;min-height:38px}#content{grid-area:inner;display:grid;grid-template-columns:minmax(26px,1fr) auto minmax(26px,1fr);gap:4px;align-items:center;justify-items:center;width:100%;height:100%;min-height:24px;box-sizing:border-box;background:#8fb9c3;border:1px solid rgba(0,0,0,.65)}#content-label,#position-label{display:none}#border.box,#content.box{outline:2px solid rgba(0,0,0,.85);outline-offset:-2px}.label{position:absolute;top:2px;left:4px;max-width:calc(100% - 8px);overflow:hidden;text-overflow:ellipsis;pointer-events:none;color:rgba(0,0,0,.72);font-size:10px;line-height:12px}input{width:38px;max-width:100%;min-width:0;height:17px;box-sizing:border-box;padding:0 2px;border:0;border-radius:0;background:0 0;color:rgba(0,0,0,.85);font:inherit;line-height:17px;text-align:center;outline:0}input:focus,input:hover{background:rgba(255,255,255,.72);box-shadow:0 0 0 1px rgba(0,0,0,.35)}input:disabled{opacity:.65}[data-side=top]{grid-area:top}[data-side=right]{grid-area:right}[data-side=bottom]{grid-area:bottom}[data-side=left]{grid-area:left}[data-area=position][data-side=top]{grid-area:position-top}[data-area=position][data-side=right]{grid-area:position-right}[data-area=position][data-side=bottom]{grid-area:position-bottom}[data-area=position][data-side=left]{grid-area:position-left}`;static template=ng`<div id="box-model"><span id="position-label" class="label" title="position">position</span> <input data-area="position" data-side="top" title="top" spellcheck="false"> <input data-area="position" data-side="right" title="right" spellcheck="false"> <input data-area="position" data-side="bottom" title="bottom" spellcheck="false"> <input data-area="position" data-side="left" title="left" spellcheck="false"><div id="margin" class="ring"><span class="label" title="margin">margin</span> <input data-area="margin" data-side="top" title="margin-top" spellcheck="false"> <input data-area="margin" data-side="right" title="margin-right" spellcheck="false"> <input data-area="margin" data-side="bottom" title="margin-bottom" spellcheck="false"> <input data-area="margin" data-side="left" title="margin-left" spellcheck="false"><div id="border" class="ring"><span class="label" title="border">border</span> <input data-area="border" data-side="top" title="border-top-width" spellcheck="false"> <input data-area="border" data-side="right" title="border-right-width" spellcheck="false"> <input data-area="border" data-side="bottom" title="border-bottom-width" spellcheck="false"> <input data-area="border" data-side="left" title="border-left-width" spellcheck="false"><div id="padding" class="ring"><span class="label" title="padding">padding</span> <input data-area="padding" data-side="top" title="padding-top" spellcheck="false"> <input data-area="padding" data-side="right" title="padding-right" spellcheck="false"> <input data-area="padding" data-side="bottom" title="padding-bottom" spellcheck="false"> <input data-area="padding" data-side="left" title="padding-left" spellcheck="false"><div id="content"><span id="content-label" class="label" title="content">content</span> <input data-area="content" data-side="width" title="width" spellcheck="false"> <span id="content-separator">x</span> <input data-area="content" data-side="height" title="height" spellcheck="false"></div></div></div></div></div>`;property;unsetValue="-";_borderDiv;_boxModelDiv;_contentDiv;_inputs=[];_values={};_isRefreshing=!1;_resizeObserver;constructor(){super(),this._restoreCachedInititalValues(),this._borderDiv=this._getDomElement("border"),this._boxModelDiv=this._getDomElement("box-model"),this._contentDiv=this._getDomElement("content"),this._inputs=[...this.shadowRoot.querySelectorAll("input[data-area][data-side]")]}ready(){this._parseAttributesToProperties(),this._wireEvents(),this._updateInputs(),requestAnimationFrame(()=>this._updateScale())}connectedCallback(){this._resizeObserver??=new ResizeObserver(()=>this._updateScale()),this._resizeObserver.observe(this),requestAnimationFrame(()=>this._updateScale())}disconnectedCallback(){this._resizeObserver?.disconnect()}get values(){return this._cloneValues(this._values)}set values(e){this._values=this._cloneValues(e??{}),this._updateInputs()}getPropertyName(e,t){return Tl[e]?.[t]}refresh(e){if(this._contentDiv.classList.remove("box"),this._borderDiv.classList.remove("box"),!e){this.values={};return}let t=e.ownerDocument.defaultView.getComputedStyle(e),i={};for(let n of Object.keys(Tl)){i[n]={};for(let s of Object.keys(Tl[n])){let o=this.getPropertyName(n,s);i[n][s]=this._getComputedProperty(t,o,n)}}t.boxSizing=="content-box"?this._contentDiv.classList.add("box"):this._borderDiv.classList.add("box"),this.values=i,this._updateScale()}_wireEvents(){for(let e of this._inputs)e.addEventListener("focus",()=>e.select()),e.addEventListener("change",()=>this._commitInput(e)),e.addEventListener("keydown",t=>{t.key==="Enter"?(this._commitInput(e),e.blur()):t.key==="Escape"&&(this._updateInput(e),e.blur())})}_commitInput(e){if(this._isRefreshing)return;let t=e.dataset.area,i=e.dataset.side,n=this._values[t]?.[i]??"",s=e.value.trim();this._values[t]||(this._values[t]={}),this._values[t][i]=s,this._updateInput(e),n!==s&&this.dispatchEvent(new CustomEvent("value-changed",{bubbles:!0,composed:!0,detail:{property:this.getPropertyName(t,i),area:t,side:i,newValue:s,oldValue:n}}))}_updateInputs(){this._isRefreshing=!0;try{for(let e of this._inputs)this._updateInput(e)}finally{this._isRefreshing=!1}}_updateInput(e){let t=e.dataset.area,i=e.dataset.side;e.value=this._values[t]?.[i]??this.unsetValue}_getComputedProperty(e,t,i){let n=rg[t]??t,s=e.getPropertyValue(t)||e[n];return i==="position"&&s==="auto"?this.unsetValue:s||this.unsetValue}_cloneValues(e){let t={};for(let i of Object.keys(e))t[i]={...e[i]};return t}_updateScale(){if(!this._boxModelDiv)return;let e=this.clientWidth;if(e<=0)return;let t=Math.min(1,e/Al);this._boxModelDiv.style.width=t<1?Al+"px":"100%",this._boxModelDiv.style.transform=t<1?`scale(${t})`:"",this.style.height=this._boxModelDiv.offsetHeight*t+"px"}};customElements.define("node-projects-metrics-editor",ln)});function Pi(r){let e=r?.trim()??"";if(!e)return{kind:"empty"};let t=e.match(/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(?:([a-z%]+))?$/i);if(!t)return{kind:"text",text:e};let i=Number(t[1]);return Number.isNaN(i)?{kind:"text",text:e}:{kind:"numeric",numberText:t[1],value:i,unit:t[2]?.toLowerCase()??""}}function ir(r,e=4){if(!Number.isFinite(r))return"0";let t=10**Math.max(0,e),i=Math.round(r*t)/t;return Object.is(i,-0)?"0":`${i}`}function Ii(r,e){let t=r?.trim()??"";return t?t+(e??""):""}function fu(r){return r===""?" ":r}function gu(r){let e=(r??[]).map(t=>t==null?null:t.trim()).filter(t=>t!=null);return[...new Set(e)]}function yu(r,e,t){return r!=null&&t.includes(r)?r:e??t[0]??null}function vu(r,e,t){if(t!=null){let i=r?.[t];if(Number.isFinite(i)&&i>0)return i}return e}var Ll=g(()=>{"use strict"});import{BaseCustomWebComponentConstructorAppend as sg,css as og,html as ag,TypedEvent as Ol}from"@node-projects/base-custom-webcomponent";var Nl,lg,cn,Vl=g(()=>{"use strict";Ll();Ll();Nl="__node-projects-custom-value__",lg="\u22EE",cn=class extends sg{static style=og`:host{display:block;width:100%;min-width:0}#container{display:grid;gap:0;grid-template-columns:minmax(0,1fr) auto 16px;width:100%;height:24px;align-items:stretch}#value-wrapper{display:grid;grid-template-columns:14px minmax(0,1fr);min-width:0}#input,#scrubber,#select,#stepper button{border:none;box-sizing:border-box;height:24px;min-height:24px;background:0 0;color:inherit;font:inherit;outline:0;box-shadow:none}#scrubber,#stepper button{padding:0;line-height:1}#scrubber{border-right:0;cursor:ns-resize;font-size:11px;letter-spacing:-1px}#input{border-left:0;border-right:0;min-width:0;text-align:right}#input:focus,#scrubber:focus,#select:focus,#stepper button:focus{outline:0;box-shadow:none;border-color:var(--input-border-color,#596c7a)}#input[disabled],#scrubber[disabled]{cursor:default}#input[disabled]{color:inherit;opacity:1;-webkit-text-fill-color:currentColor}#select{border-left:0;padding:0 15px 0 2px;line-height:1;-webkit-appearance:none;appearance:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='4'%3E%3Cpath d='M0 0l4 4 4-4z' fill='%23999'/%3E%3C/svg%3E") no-repeat right 2px center}#measure{position:absolute;visibility:hidden;white-space:nowrap;font:inherit;pointer-events:none}#stepper{display:grid;height:24px;min-height:24px;overflow:hidden;grid-template-rows:repeat(2,minmax(0,1fr))}#stepper button{height:auto;min-height:0;width:16px;min-width:16px;font-size:10px}`;static template=ag`<div id="container"><div id="value-wrapper"><button id="scrubber" type="button" aria-label="Drag to change value">${lg}</button> <input id="input" type="text" spellcheck="false"></div><select id="select"></select><div id="stepper"><button id="increase" type="button" aria-label="Increase value">+</button> <button id="decrease" type="button" aria-label="Decrease value">-</button></div><span id="measure"></span></div>`;_value="";get value(){return this._value}set value(e){this._setValue(e,!1,!1)}valueChanged=new Ol;valuePreviewChanged=new Ol;valuePreviewFinished=new Ol;_units=["px","%","pt"];get units(){return[...this._units]}set units(e){this._units=this._normalizeOptionValues(e),this._lastNumericUnit=this._units[0]??this._lastNumericUnit,this._updateValue()}_fixedValues=[];get fixedValues(){return[...this._fixedValues]}set fixedValues(e){this._fixedValues=this._normalizeOptionValues(e),this._updateValue()}_step=1;get step(){return this._step}set step(e){this._step=Number.isFinite(e)&&e>0?e:1}_unitSteps={};get unitSteps(){return{...this._unitSteps}}set unitSteps(e){this._unitSteps=e??{}}_min=null;get min(){return this._min}set min(e){this._min=Number.isFinite(e)?e:null}_max=null;get max(){return this._max}set max(e){this._max=Number.isFinite(e)?e:null}_readOnly=!1;get readOnly(){return this._readOnly}set readOnly(e){this._readOnly=e,this._applyReadonlyState()}get isInPreview(){return this._previewStartValue!=null}_allowCustomValue=!0;get allowCustomValue(){return this._allowCustomValue}set allowCustomValue(e){this._allowCustomValue=e,this._updateValue()}_unitValueConverter;get unitValueConverter(){return this._unitValueConverter}set unitValueConverter(e){this._unitValueConverter=e}_input;_select;_measure;_scrubberButton;_increaseButton;_decreaseButton;_lastNumericValue=0;_lastNumericUnit="px";_dragPointerId=null;_dragStartY=0;_dragStartNumericValue=0;_appliedDragSteps=0;_previewStartValue=null;_previewChanged=!1;_displayValueLock=null;_stepperPointerId=null;_stepperDirection=0;_stepperRepeatTimeout=null;_stepperRepeatInterval=null;_windowDragPointerMoveHandler=e=>this._handleWindowDragPointerMove(e);_windowDragPointerUpHandler=e=>this._finishDragInteractionForPointerEvent(e,!1);_windowDragPointerCancelHandler=e=>this._finishDragInteractionForPointerEvent(e,!0);_windowDragBlurHandler=()=>this._finishDragInteraction(!1);_windowPointerUpHandler=e=>this._handleWindowStepperPointerEnd(e);_windowPointerCancelHandler=e=>this._handleWindowStepperPointerEnd(e);_windowBlurHandler=()=>this._finishStepperInteraction(!1);_preferCustomMode=!1;constructor(){super(),this._restoreCachedInititalValues(),this._input=this._getDomElement("input"),this._select=this._getDomElement("select"),this._measure=this._getDomElement("measure"),this._scrubberButton=this._getDomElement("scrubber"),this._increaseButton=this._getDomElement("increase"),this._decreaseButton=this._getDomElement("decrease")}ready(){this._parseAttributesToProperties(),this._wireEvents(),this._updateValue()}_wireEvents(){this._input.addEventListener("change",()=>this._applyTypedValue()),this._input.addEventListener("keydown",e=>{e.key==="Enter"&&(this._applyTypedValue(),this._input.blur())}),this._scrubberButton.addEventListener("pointerdown",e=>this._handlePointerDown(e)),this._select.addEventListener("change",()=>this._applySelectedMode()),this._increaseButton.addEventListener("pointerdown",e=>this._handleStepperPointerDown(e,1)),this._decreaseButton.addEventListener("pointerdown",e=>this._handleStepperPointerDown(e,-1))}_handlePointerDown(e){if(!this._readOnly&&!(!this._isSelectedUnitMode()&&!this._switchToUnitModeForInteraction())){this._dragPointerId=e.pointerId,this._dragStartY=e.clientY,this._dragStartNumericValue=this._readEditableNumericValue(this._select.value),this._appliedDragSteps=0,this._startPreviewSession(),this._attachDragWindowListeners();try{this._scrubberButton.setPointerCapture(e.pointerId)}catch{}e.preventDefault()}}_handleWindowDragPointerMove(e){if(this._dragPointerId!==e.pointerId||!this._isSelectedUnitMode())return;let t=this._calculateDraggedStepCount(this._dragStartY-e.clientY);if(t===this._appliedDragSteps)return;this._appliedDragSteps=t;let i=this._select.value,n=this._getEffectiveStep(i);this._previewNumericValue(this._getInteractiveStepValue(this._dragStartNumericValue,t,n),i,n),e.preventDefault()}_finishDragInteractionForPointerEvent(e,t){this._dragPointerId===e.pointerId&&this._finishDragInteraction(t,e.pointerId)}_finishDragInteraction(e,t){if(this._dragPointerId!=null){if(this._dragPointerId=null,this._appliedDragSteps=0,this._detachDragWindowListeners(),t!=null)try{this._scrubberButton.hasPointerCapture(t)&&this._scrubberButton.releasePointerCapture(t)}catch{}this._finishPreviewSession(e)}}_handleStepperPointerDown(e,t){this._readOnly||!this._isSelectedUnitMode()&&!this._switchToUnitModeForInteraction()||(this._finishStepperInteraction(!0),this._stepperPointerId=e.pointerId,this._stepperDirection=t,this._attachStepperWindowListeners(),this._startPreviewSession(),this._applyStepPreview(t),this._stepperRepeatTimeout=window.setTimeout(()=>{this._stepperRepeatInterval=window.setInterval(()=>this._applyStepPreview(this._stepperDirection),50)},350),e.preventDefault())}_handleWindowStepperPointerEnd(e){this._stepperPointerId===e.pointerId&&this._finishStepperInteraction(!1)}_finishStepperInteraction(e){this._stepperPointerId!=null&&(this._stepperPointerId=null,this._stepperDirection=0,this._detachStepperWindowListeners(),this._stopStepperRepeat(),this._finishPreviewSession(e))}_applySelectedMode(){let e=this._select.selectedOptions.item(0);if(!e)return;let t=e.dataset.kind;if(t==="fixed"){this._commitValue(e.value);return}if(t==="custom"){this._preferCustomMode=!0,this._updateValue(),requestAnimationFrame(()=>{this._input.focus(),this._input.select()});return}let i=e.value;this._lastNumericUnit=i,this._preferCustomMode=!1;let n=Pi(this._value);if(n.kind==="numeric"){let a=this._convertNumericValue(n,i);this._commitValue(a);return}let s=this._resolveCurrentValueForUnit(i);if(s!=null){this._commitValue(s);return}if(n.kind==="empty"){this._updateValue(),this._input.focus();return}let o=Number(this._input.value);if(!Number.isNaN(o)){this._applyNumericValue(o,i);return}this._commitValue(""),this._input.focus()}_applyTypedValue(){let e=this._select.selectedOptions.item(0),t=e?.dataset.kind;if(t==="fixed")return;if(t==="custom"){this._commitValue(this._input.value);return}let i=this._input.value?.trim()??"";if(!i){this._commitValue("");return}let n=Number(i);Number.isNaN(n)||(this._lastNumericValue=this._clampNumericValue(n)),this._commitValue(Ii(i,e?.value??""))}_updateValue(){if(!this._input||!this._select)return;this._previewStartValue==null&&this._renderSelectOptions();let e=this._getDisplayState(this._displayValueLock??this._value);if(this._input.value=e.inputValue,this._input.style.display=e.inputVisible?"":"none",this._input.disabled=this._readOnly||!e.inputEnabled,this._select.value=e.selectValue,this._autoSizeSelect(),e.mode==="unit"&&e.selectedUnit!=null&&(this._lastNumericUnit=e.selectedUnit),e.mode==="unit"&&e.inputValue!==""){let n=Number(e.inputValue);Number.isNaN(n)||(this._lastNumericValue=this._clampNumericValue(n))}let t=this._units.length>0,i=this._readOnly||!t||e.mode==="custom";this._scrubberButton.disabled=i,this._increaseButton.disabled=i,this._decreaseButton.disabled=i,this._applyReadonlyState()}_getDisplayState(e){let t=Pi(e);if(t.kind==="numeric"){if(this._preferCustomMode)return this._createCustomDisplayState(t.numberText);if(t.unit&&this._units.length&&!this._units.includes(t.unit))return this._createCustomDisplayState(e);let n=yu(t.unit,this._lastNumericUnit,this._units)??"";return{mode:"unit",inputValue:t.numberText,inputVisible:!0,inputEnabled:!0,selectValue:this._units.includes(n)?n:this._select.value||Nl,selectedUnit:n}}if(t.kind==="text")return!this._preferCustomMode&&this._fixedValues.includes(t.text)?{mode:"fixed",inputValue:"",inputVisible:!0,inputEnabled:!1,selectValue:t.text}:this._createCustomDisplayState(t.text);if(this._preferCustomMode)return this._createCustomDisplayState("");let i=this._lastNumericUnit??this._units[0]??"";return this._units.includes(i)?{mode:"unit",inputValue:"",inputVisible:!0,inputEnabled:!0,selectValue:i,selectedUnit:i}:this._createCustomDisplayState("")}_createCustomDisplayState(e){return!this._allowCustomValue&&this._units.length?{mode:"unit",inputValue:e,inputVisible:!0,inputEnabled:!0,selectValue:this._units[0],selectedUnit:this._units[0]}:{mode:"custom",inputValue:e,inputVisible:!0,inputEnabled:!0,selectValue:Nl}}_renderSelectOptions(){let e=this._select.value;if(this._select.replaceChildren(),this._units.length){let t=document.createElement("optgroup");t.label="Units";for(let i of this._units)t.appendChild(this._createOption(fu(i),i,"unit"));this._select.appendChild(t)}if(this._fixedValues.length){let t=document.createElement("optgroup");t.label="Values";for(let i of this._fixedValues)t.appendChild(this._createOption(i,i,"fixed"));this._select.appendChild(t)}(this._allowCustomValue||this._select.options.length===0)&&this._select.appendChild(this._createOption("custom",Nl,"custom")),e!==""?this._select.value=e:this._select.querySelector('option[value=""]')&&(this._select.value="")}_createOption(e,t,i){let n=document.createElement("option");return n.text=e,n.value=t,n.dataset.kind=i,n}_autoSizeSelect(){if(!this._measure||!this._select)return;let e=this._select.selectedOptions.item(0);this._measure.textContent=e?.text??"";let t=this._measure.offsetWidth;t>0?this._select.style.width=t+17+"px":requestAnimationFrame(()=>this._autoSizeSelect())}_applyReadonlyState(){!this._input||!this._select||(this._input.readOnly=this._readOnly,this._select.disabled=this._readOnly)}_convertNumericValue(e,t){if(t==null)return this._value;let i=e.unit;return this._unitValueConverter?.({value:e.value,numberText:e.numberText,rawValue:this._value,fromUnit:i,toUnit:t})??Ii(e.numberText,t)}_resolveCurrentValueForUnit(e){if(e==null)return null;let t=this._unitValueConverter?.({value:Number.NaN,numberText:"",rawValue:this._value,fromUnit:"",toUnit:e})?.trim();return t||null}_readEditableNumericValue(e){let t=Pi(this._value);if(t.kind==="numeric"){let i=this._convertNumericValue(t,e),n=Pi(i);return n.kind==="numeric"?n.value:t.value}if(this._input.value?.trim()){let i=Number(this._input.value);if(!Number.isNaN(i))return i}return this._lastNumericValue}_applyNumericValue(e,t){this._lastNumericValue=this._clampNumericValue(e),this._lastNumericUnit=t,this._commitValue(Ii(ir(this._lastNumericValue),t))}_previewNumericValue(e,t,i){this._lastNumericValue=this._clampNumericValue(e),this._lastNumericUnit=t;let n=i??this._getEffectiveStep(t);this._setValue(Ii(this._formatInteractiveNumericValue(this._lastNumericValue,n),t),!1,!0)}_commitValue(e){this._setValue(e,!0,!1)}_setValue(e,t,i){let n=e??"";if(!t&&!i&&this._previewStartValue!=null)return;let s=this._value;this._value=n,i?this._displayValueLock=n:this._displayValueLock!=null&&(n===this._displayValueLock||n!==s)&&(this._displayValueLock=null),this._preferCustomMode=!1,this._updateValue(),s!==n&&(i&&(this._previewChanged=!0,this.valuePreviewChanged.emit({newValue:n,oldValue:s})),t&&this.valueChanged.emit({newValue:n,oldValue:s}))}_startPreviewSession(){this._previewStartValue==null&&(this._previewStartValue=this._value,this._previewChanged=!1)}_finishPreviewSession(e){if(this._previewStartValue==null)return;let t=this._previewStartValue,i=this._displayValueLock??this._value,n=this._previewChanged&&t!==i,s=e||!n;this._previewStartValue=null,this._previewChanged=!1,s?(this._displayValueLock=null,this._value=t,this._updateValue()):(this._displayValueLock=i,this._updateValue()),this.valuePreviewFinished.emit({newValue:i,oldValue:t,wasCancelled:s})}_applyStepPreview(e){let t=this._select.value,i=this._getEffectiveStep(t);this._previewNumericValue(this._getInteractiveStepValue(this._readEditableNumericValue(t),e,i),t,i)}_stopStepperRepeat(){this._stepperRepeatTimeout!=null&&(window.clearTimeout(this._stepperRepeatTimeout),this._stepperRepeatTimeout=null),this._stepperRepeatInterval!=null&&(window.clearInterval(this._stepperRepeatInterval),this._stepperRepeatInterval=null)}_attachStepperWindowListeners(){window.addEventListener("pointerup",this._windowPointerUpHandler,!0),window.addEventListener("pointercancel",this._windowPointerCancelHandler,!0),window.addEventListener("blur",this._windowBlurHandler)}_attachDragWindowListeners(){window.addEventListener("pointermove",this._windowDragPointerMoveHandler,!0),window.addEventListener("pointerup",this._windowDragPointerUpHandler,!0),window.addEventListener("pointercancel",this._windowDragPointerCancelHandler,!0),window.addEventListener("blur",this._windowDragBlurHandler)}_detachStepperWindowListeners(){window.removeEventListener("pointerup",this._windowPointerUpHandler,!0),window.removeEventListener("pointercancel",this._windowPointerCancelHandler,!0),window.removeEventListener("blur",this._windowBlurHandler)}_detachDragWindowListeners(){window.removeEventListener("pointermove",this._windowDragPointerMoveHandler,!0),window.removeEventListener("pointerup",this._windowDragPointerUpHandler,!0),window.removeEventListener("pointercancel",this._windowDragPointerCancelHandler,!0),window.removeEventListener("blur",this._windowDragBlurHandler)}_calculateDraggedStepCount(e){let t=Math.abs(e),i=Math.min(t,20)/5,n=Math.max(Math.min(t-20,40),0)/3,s=Math.max(t-60,0)/2,o=Math.trunc(i+n+s);return Math.sign(e)*o}_getEffectiveStep(e){return vu(this._unitSteps,this._step,e)}_getInteractiveStepValue(e,t,i){let n=i??this._step,s=this._clampNumericValue(e);if(!Number.isFinite(s)||!Number.isFinite(t)||t===0)return s;let o=this._min??0,a=(s-o)/n,l=Math.round(a),c=Math.abs(a-l)<1e-9,h;t>0?h=(c?l+1:Math.ceil(a))+t-1:h=(c?l-1:Math.floor(a))+t+1;let p=o+h*n;return this._clampNumericValue(this._roundToStepPrecision(p,n))}_formatInteractiveNumericValue(e,t){let i=t??this._step;return ir(this._roundToStepPrecision(e,i),this._getStepPrecision(i))}_roundToStepPrecision(e,t){let n=10**this._getStepPrecision(t);return Math.round(e*n)/n}_getStepPrecision(e){let t=`${e??this._step}`.toLowerCase();if(t.includes("e-")){let[n,s]=t.split("e-"),o=Number(s),a=n.includes(".")?n.length-n.indexOf(".")-1:0;return o+a}let i=t.indexOf(".");return i>=0?t.length-i-1:0}_switchToUnitModeForInteraction(){let e=this._lastNumericUnit??this._units[0];if(e==null)return!1;this._preferCustomMode=!1;let t=this._resolveCurrentValueForUnit(e);return t!=null?(this._commitValue(t),this._isSelectedUnitMode()):(this._applyNumericValue(this._lastNumericValue,e),this._isSelectedUnitMode())}_isSelectedUnitMode(){return this._select.selectedOptions.item(0)?.dataset.kind==="unit"}_normalizeOptionValues(e){return gu(e)}_clampNumericValue(e){let t=e;return this._min!=null&&(t=Math.max(this._min,t)),this._max!=null&&(t=Math.min(this._max,t)),t}};customElements.define("node-projects-numeric-style-input",cn)});import{TypedEvent as gg}from"@node-projects/base-custom-webcomponent";var Di,sr=g(()=>{"use strict";Di=class{_services=new Map;servicesChanged=new gg;getLastService(e){let t=this._services.get(e);return t&&t.length?t[t.length-1]:null}getServices(e){return this._services.get(e)}register(e,t){this._services.has(e)||this._services.set(e,[]),this._services.get(e).push(t),this.servicesChanged.emit({serviceName:e})}registerLast(e,t){this._services.has(e)||this._services.set(e,[]),this._services.get(e).unshift(t),this.servicesChanged.emit({serviceName:e})}registerMultiple(e,t){for(let i of e)this._services.has(i)||this._services.set(i,[]),this._services.get(i).push(t),this.servicesChanged.emit({serviceName:i})}forSomeServicesTillResult(e,t){let i=this.getServices(e);if(i==null)return null;for(let n=i.length-1;n>=0;n--){let s=i[n],o=t(s);if(o!=null)return o}return null}getLastServiceWhere(e,t){let i=this.getServices(e);if(i==null)return null;for(let n=i.length-1;n>=0;n--){let s=i[n];if(t(s))return s}return null}getLastServiceResult(e,t){let i=this.getServices(e);if(i==null)return null;for(let n=i.length-1;n>=0;n--){let s=i[n],o=t(s);if(o)return o}return null}async getLastServiceWhereAsync(e,t){let i=this.getServices(e);if(i==null)return null;for(let n=i.length-1;n>=0;n--){let s=i[n];if(await t(s))return s}return null}}});import{BaseCustomWebComponentLazyAppend as yg,css as vg}from"@node-projects/base-custom-webcomponent";var hn,Fl=g(()=>{"use strict";hn=class extends yg{_placeholder;_loading;static style=vg`:host{display:block;overflow:hidden;background:#fff;height:100%;width:100%;position:relative}#placeholder{position:absolute;left:24px;height:100%;width:calc(100% - 24px)}#loading{position:absolute;top:60px;left:20px}#left{position:absolute;left:0;top:0;height:100%;width:24px;border-right:solid #fff 1px;box-sizing:border-box;background:#000}span{color:#fff;rotate:270deg;display:block;position:absolute;top:35px;left:-38px;font-weight:600;font-family:monospace;font-size:24px}`;constructor(){super(),this._placeholder=document.createElement("div"),this._placeholder.id="placeholder",this._placeholder.style.transform="scale(1)",this.shadowRoot.appendChild(this._placeholder),this._loading=document.createElement("div"),this._loading.id="loading",this._loading.textContent="\u{1F6C0} Hold on, loading...",this.shadowRoot.appendChild(this._loading);let e=document.createElement("div");e.id="left";let t=document.createElement("span");t.innerText="PREVIEW",e.appendChild(t),this.shadowRoot.appendChild(e)}dispose(){}executeCommand;canExecuteCommand;async display(e,t,i,n){this._loading.hidden=!1,await e.demoProviderService.provideDemo(this._placeholder,e,t,i,n),this._loading.hidden=!0}};customElements.define("node-projects-demo-view",hn)});import{PropertyChangedArgs as or,TypedEvent as pn}from"@node-projects/base-custom-webcomponent";var ar,xu=g(()=>{"use strict";ar=class{_serviceContainer;_tool;_strokeColor="black";_strokeThickness="3";_fillBrush="none";constructor(e){this._serviceContainer=e}set tool(e){if(this._tool!==e){let t=this._tool;t&&t.dispose(),this._tool=e;let i=null;for(let n of this._serviceContainer.designerTools)n[1]==e&&(i=n[0]);this.onToolChanged.emit(new or({name:i,tool:e},{name:null,tool:t})),this._tool&&this._tool.activated(this._serviceContainer)}}get tool(){return this._tool}onToolChanged=new pn;finishedWithTool=()=>this.tool=null;set strokeColor(e){if(this._strokeColor!==e){let t=this._strokeColor;this._strokeColor=e,this.onStrokeColorChanged.emit(new or(e,t))}}get strokeColor(){return this._strokeColor}onStrokeColorChanged=new pn;set strokeThickness(e){if(this._strokeThickness!==e){let t=this._strokeThickness;this._strokeThickness=e,this.onStrokeThicknessChanged.emit(new or(e,t))}}get strokeThickness(){return this._strokeThickness}onStrokeThicknessChanged=new pn;set fillBrush(e){if(this._fillBrush=e,this._fillBrush!==e){let t=this._fillBrush;this._fillBrush=e,this.onFillBrushChanged.emit(new or(e,t))}}get fillBrush(){return this._fillBrush}onFillBrushChanged=new pn;showConfigClicked=new pn}});import{BaseCustomWebComponentConstructorAppend as _g,css as xg,html as bg,TypedEvent as wg}from"@node-projects/base-custom-webcomponent";var dn,Bl=g(()=>{"use strict";dn=class extends _g{dispose(){}canvasElement;elementsToPackages;onTextChanged=new wg;_text;static style=xg`:host{display:block;height:100%;width:100%}textarea{height:100%;width:100%;resize:none;white-space:nowrap;box-sizing:border-box}`;static template=bg`<div id="container" style="width:100%;height:100%;position:absolute"><textarea id="text"></textarea></div>`;executeCommand(e){}canExecuteCommand(e){return!1}async ready(){this._text=this._getDomElement("text")}focusEditor(){requestAnimationFrame(()=>{this.focus(),this._text.focus()})}activated(){}update(e){this._text.value=e}getText(){return this._text.value}setSelection(e){this._text.setSelectionRange(e.start,e.start+e.length)}};customElements.define("node-projects-code-view-simple",dn)});var Sg,lr,Hl=g(()=>{"use strict";sr();Fl();xu();Bl();Sg=navigator.maxTouchPoints>0,lr=class extends Di{config={codeViewWidget:dn,demoViewWidget:hn};designerExtensions=new Map;sourceMapProviders=[];removeDesignerExtensionOfType(e,t){let i=this.designerExtensions.get(e);for(let n=0;n<i.length;n++)i[n].constructor===t&&i.splice(n,1)}instanceServiceContainerCreatedCallbacks=[];designViewConfigButtons=[];designViewToolbarButtons=[];designerPointerExtensions=[];designerContextMenuExtensions;overlayLayerViewAdditionalStyles=[];globalContext=new ar(this);options={zoomDesignerBackground:!0,roundPixelsToDecimalPlaces:0,resizerPixelSize:Sg?8:3};designerTools=new Map;get bindingService(){return this.getLastService("bindingService")}get bindableObjectsServices(){return this.getServices("bindableObjectsService")}get bindableObjectDragDropService(){return this.getLastService("bindableObjectDragDropService")}get propertyGridDragDropService(){return this.getLastService("propertyGridDragDropService")}get dragDropService(){return this.getLastService("dragDropService")}get elementInteractionServices(){return this.getServices("elementInteractionService")}get propertiesServices(){return this.getServices("propertyService")}get attachedPropertyServices(){return this.getServices("attachedPropertyService")}get propertyGroupService(){return this.getLastService("propertyGroupsService")}get containerServices(){return this.getServices("containerService")}get snaplinesProviderService(){return this.getLastService("snaplinesProviderService")}get elementsServices(){return this.getServices("elementsService")}get eventsService(){return this.getServices("eventsService")}get instanceServices(){return this.getServices("instanceService")}get propertyEditorTypesServices(){return this.getServices("propertyEditorTypesService")}get htmlWriterService(){return this.getLastService("htmlWriterService")}get htmlParserService(){return this.getLastService("htmlParserService")}get renderedDesignItemServices(){return this.getServices("renderedDesignItemService")}get intializationService(){return this.getLastService("intializationService")}get elementAtPointService(){return this.getLastService("elementAtPointService")}get externalDragDropService(){return this.getLastService("externalDragDropService")}get copyPasteService(){return this.getLastService("copyPasteService")}get modelCommandService(){return this.getLastService("modelCommandService")}get demoProviderService(){return this.getLastService("demoProviderService")}get designItemService(){return this.getLastService("designItemService")}get configUiServices(){return this.getServices("configUiService")}get refactorServices(){return this.getServices("refactorService")}get deletionService(){return this.getLastService("deletionService")}get referencesChangedService(){return this.getLastService("referencesChangedService")}get miniatureViewService(){return this.getLastService("miniatureViewService")}get pngCreatorService(){return this.getLastService("pngCreatorService")}get searchService(){return this.getLastService("searchService")}get editorTypesServices(){return this.getServices("editorTypeService")}}});var z,Ie=g(()=>{"use strict";z=class{static isTypescriptEnum(e){if(e&&typeof e=="object"&&e.constructor==Object){for(let t in e){let i=typeof e[t];if(i!=="string"&&i!=="number")return!1}return!0}return!1}static getTypescriptEnumEntries(e){let t=[];for(let i in e)isNaN(i)&&t.push([i,e[i]]);return t}static camelToDashCase(e){return e.replace(/([A-Z])/g,t=>`-${t[0].toLowerCase()}`)}static dashToCamelCase(e){return e.replace(/-([a-z])/g,t=>t[1].toUpperCase())}}});var W,ut=g(()=>{"use strict";(function(r){r.none="none",r.all="all",r.some="some",r.bound="bound",r.fromStylesheet="fromStylesheet"})(W||(W={}))});var R,rt=g(()=>{"use strict";(function(r){r.explicitProperty="explicitProperty",r.property="property",r.attribute="attribute",r.class="class",r.css="css",r.cssvar="cssvar",r.event="event",r.content="content",r.visible="visible"})(R||(R={}))});var _,fe=g(()=>{"use strict";(function(r){r.property="property",r.attribute="attribute",r.propertyAndAttribute="propertyAndAttribute",r.cssValue="cssvalue",r.complex="complex",r.add="add"})(_||(_={}))});var k,q=g(()=>{"use strict";(function(r){r[r.Element=1]="Element",r[r.Attribute=2]="Attribute",r[r.TextNode=3]="TextNode",r[r.Comment=8]="Comment",r[r.Document=9]="Document",r[r.DocumentFragment=11]="DocumentFragment"})(k||(k={}))});function Yb(r){return r.getRootNode()?.host?.localName=="node-projects-designer-canvas"}function cr(r,e){return e.createRange().createContextualFragment(r,{includeShadowRoots:!0}).firstChild}function bu(r,e){return r instanceof e||r instanceof(r.ownerDocument.defaultView??window)[e.name]}function Gl(r,...e){for(let t of e)if(r instanceof t||r instanceof(r.ownerDocument.defaultView??window)[t.name])return!0;return!1}function Ht(r){return r==null||Gl(r,SVGElement,HTMLHtmlElement,HTMLHeadElement,HTMLBodyElement,HTMLSelectElement,HTMLOptionElement)?!1:(r.ownerDocument.defaultView??window).getComputedStyle(r).display.startsWith("inline")}function si(r){return r==null||Gl(r,SVGElement,HTMLHtmlElement,HTMLHeadElement,HTMLBodyElement,HTMLSelectElement,HTMLOptionElement)?!1:(r.ownerDocument.defaultView??window).getComputedStyle(r).display.startsWith("inline")}function wu(r){if(Gl(r,SVGElement,HTMLHtmlElement,HTMLHeadElement,HTMLBodyElement)||bu(r,MathMLElement))return je.block;let e=(r.ownerDocument.defaultView??window).getComputedStyle(r).display;return e=="none"?je.none:e.startsWith("inline")?je.inline:je.block}function hr(r){return r.textContent.trim()==""&&r.textContent.indexOf("\xA0")<0}function Ub(){let r=document.activeElement,e=null;for(;r!=e;)e=r,r.shadowRoot!=null&&r.shadowRoot.activeElement&&(r=r.shadowRoot.activeElement);return r}function Xb(r){if(bu(r,HTMLElement))return{x:r.offsetLeft,y:r.offsetTop};{let e=Z(r),t=Z(r.parentElement);return{x:e.x-t.x,y:e.y-t.y}}}function Z(r){let e=r.getBoundingClientRect();if(e.width==0&&e.height==0&&(r.ownerDocument.defaultView??window).getComputedStyle(r).display=="contents")if(r.shadowRoot)for(let i of r.shadowRoot.children){let n=Z(i);e=new DOMRect(Math.min(e.x,n.x),Math.min(e.y,n.y),Math.max(e.width,n.width),Math.max(e.height,n.height))}else for(let i of r.children){let n=Z(i);e=new DOMRect(Math.min(e.x,n.x),Math.min(e.y,n.y),Math.max(e.width,n.width),Math.max(e.height,n.height))}return e}function pr(r){let e=(r.ownerDocument.defaultView??window).getComputedStyle(r).zoom;if(!e||e==="normal")return 1;if(e.endsWith("%")){let i=parseFloat(e);return Number.isFinite(i)&&i>0?i/100:1}let t=parseFloat(e);return Number.isFinite(t)&&t>0?t:1}function Su(r){let e=parseInt(getComputedStyle(r).paddingLeft.replace("px",""))+parseInt(getComputedStyle(r).marginLeft.replace("px",""))+parseInt(getComputedStyle(r).borderLeft.replace("px",""))+parseInt(getComputedStyle(r).paddingRight.replace("px",""))+parseInt(getComputedStyle(r).marginRight.replace("px",""))+parseInt(getComputedStyle(r).borderRight.replace("px","")),t=parseInt(getComputedStyle(r).paddingTop.replace("px",""))+parseInt(getComputedStyle(r).marginTop.replace("px",""))+parseInt(getComputedStyle(r).borderTop.replace("px",""))+parseInt(getComputedStyle(r).paddingBottom.replace("px",""))+parseInt(getComputedStyle(r).marginBottom.replace("px",""))+parseInt(getComputedStyle(r).borderBottom.replace("px",""));return{x:e,y:t}}function oi(r,e){let t={x:Number.MAX_VALUE,y:Number.MAX_VALUE},i={x:Number.MIN_VALUE,y:Number.MIN_VALUE},n;for(let s of r)s.nodeType==k.TextNode||s.nodeType==k.Comment||(n={x:e.getNormalizedElementCoordinates(s.element).x,y:e.getNormalizedElementCoordinates(s.element).y,width:e.getNormalizedElementCoordinates(s.element).width,height:e.getNormalizedElementCoordinates(s.element).height},n.x<t.x&&(t.x=n.x),n.y<t.y&&(t.y=n.y),n.x+n.width>i.x&&(i.x=n.x+n.width),n.y+n.height>i.y&&(i.y=n.y+n.height));return{x:t.x,y:t.y,width:i.x-t.x,height:i.y-t.y}}var je,de=g(()=>{"use strict";q();(function(r){r[r.none=0]="none",r[r.inline=1]="inline",r[r.block=2]="block"})(je||(je={}))});function Gt(r){let e=r.match(/\s*!\s*important\s*$/i);return e?{value:r.substring(0,e.index).trimEnd(),important:!0}:{value:r,important:!1}}function Ye(r,e){return e?r+" !important":r}var Et=g(()=>{"use strict"});var re,Re=g(()=>{"use strict";ut();Ie();rt();fe();q();de();Et();re=class r{constructor(e){this._recreateElementsOnPropertyChange=e}_recreateElementsOnPropertyChange=!1;static _stylesCache=new Map;_cssCacheClearTimer;static _bindingsCache=new Map;static _bindingsCacheClearTimer;_notifyChangedProperty(e,t,i){}async getProperty(e,t){let i=await this.getProperties(e);return"properties"in i[0]?i.flatMap(n=>n.properties).find(n=>n.name==t):i.find(n=>n.name==t)}async setValue(e,t,i){let n=e[0].openGroup("property changed: "+t.name+" to "+i);for(let s of e)if(this.isHandledElement(s)&&this.getProperty(s,t.name)){if(t.propertyType==_.cssValue){let o=typeof i=="string"?Gt(i):{value:i,important:!1};await s.updateStyleInSheetOrLocalAsync(t.propertyName??t.name,o.value,o.important),s.element.setAttribute("style",s.element.getAttribute("style"))}else{let o=t.attributeName;if(o||(o=z.camelToDashCase(t.name)),t.type==="object"){let a=JSON.stringify(i);t.propertyType==_.propertyAndAttribute?s.setPropertyAndAttribute(t.name,a):t.propertyType==_.attribute?s.setAttribute(o,a):t.propertyType==_.property&&s.setProperty(t.name,i)}else t.type=="boolean"&&(i===!1||i==null)?((t.propertyType==_.attribute||t.propertyType==_.propertyAndAttribute)&&s.removeAttribute(o),(t.propertyType==_.property||t.propertyType==_.propertyAndAttribute)&&s.setProperty(t.name,!1)):t.type=="boolean"&&i===!0?((t.propertyType==_.attribute||t.propertyType==_.propertyAndAttribute)&&s.setAttribute(o,""),(t.propertyType==_.property||t.propertyType==_.propertyAndAttribute)&&s.setProperty(t.name,!0)):t.propertyType==_.propertyAndAttribute?s.setPropertyAndAttribute(t.name,i):t.propertyType==_.attribute?s.setAttribute(o,i.toString()):t.propertyType==_.property&&s.setProperty(t.name,i)}this._notifyChangedProperty(s,t,i)}n.commit(),this._recreateElementsOnPropertyChange&&r.recreateElements(this,e)}getPropertyTarget(e,t){return t.propertyType==_.attribute?R.attribute:t.propertyType==_.cssValue?R.css:R.property}clearValue(e,t,i){let n=e[0].openGroup("property cleared: "+t.name);for(let s of e){if(i!="binding"){if(t.propertyType==_.cssValue)s.removeStyle(t.propertyName??t.name);else if((t.propertyType==_.property||t.propertyType==_.propertyAndAttribute)&&(s.element[t.propertyName??t.name]=null),t.propertyType==_.attribute||t.propertyType==_.propertyAndAttribute){let o=t.attributeName;o||(o=z.camelToDashCase(t.name)),s.removeAttribute(o)}}i!="value"&&s.serviceContainer.forSomeServicesTillResult("bindingService",o=>o.clearBinding(s,t.name,this.getPropertyTarget(s,t))),this._notifyChangedProperty(s,t,void 0)}n.commit(),this._recreateElementsOnPropertyChange&&r.recreateElements(this,e)}isSet(e,t){let i=!0,n=!1;if(e!=null&&e.length!==0){let s=t.attributeName;s||(s=z.camelToDashCase(t.name));for(let a of e){let l=!1;if(t.propertyType==_.cssValue?l=a.hasStyle(t.name):l=a.hasAttribute(s),i=i&&l,n=n||l,!i&&n)break}let o=r.getOrBuildCachedBindings(e[0]);if(t.propertyType==_.cssValue){if(o&&o.find(a=>(a.target==R.css||a.target==R.cssvar)&&a.targetName==t.name))return W.bound}else if(t.propertyType==_.attribute){if(o&&o.find(a=>a.target==R.attribute&&a.targetName==t.name))return W.bound}else if(t.propertyType==_.property){if(o&&o.find(a=>(a.target==R.property||a.target==R.explicitProperty)&&a.targetName==t.name))return W.bound}else if(o&&o.find(a=>(a.target==R.property||a.target==R.explicitProperty||a.target==R.attribute)&&a.targetName==t.name))return W.bound;if(!i&&t.propertyType==_.cssValue){let a=r._stylesCache.get(e[0]);if(a||(a=new Set(e[0].getAllStyles().filter(c=>c.selector!=null).flatMap(c=>c.declarations).map(c=>c.name)),r._stylesCache.set(e[0],a),clearTimeout(this._cssCacheClearTimer),this._cssCacheClearTimer=setTimeout(()=>r._stylesCache.clear(),30)),a.has(t.propertyName??t.name))return W.fromStylesheet}}else return W.none;return i?W.all:n?W.some:W.none}static getOrBuildCachedBindings(e){let t=r._bindingsCache.get(e);if(!t){let i=e.serviceContainer.getServices("bindingService");if(t=[],i)for(let n of i){let s=n.getBindings(e);s&&s.length>0&&t.push(...s)}r._bindingsCache.set(e,t),clearTimeout(this._bindingsCacheClearTimer),this._bindingsCacheClearTimer=setTimeout(()=>r._bindingsCache.clear(),30)}return t}getValue(e,t){if(e!=null&&e.length!==0)if(t.propertyType==_.cssValue){let i=e[0].getStyle(t.propertyName??t.name);for(let n of e)if(n.getStyle(t.name)!=i){i=null;break}return typeof i=="string"?Ye(i,e[0].isStyleImportant(t.propertyName??t.name)):i}else if(t.propertyType==_.property){let i=t.propertyName;return i||(i=z.dashToCamelCase(t.name)),e[0].element[i]}else{let i=t.attributeName;if(i||(i=z.camelToDashCase(t.name)),t.type=="boolean"){if(e[0].hasAttribute(i)){let s=e[0].getAttribute(i);return s==""?!0:s}return!1}return e[0].getAttribute(i)}return null}getBinding(e,t){let i=r.getOrBuildCachedBindings(e[0]);return i!=null?t.propertyType==_.cssValue?i.find(n=>(n.target==R.css||n.target==R.cssvar)&&n.targetName==t.name):t.propertyType==_.attribute?i.find(n=>n.target==R.attribute&&n.targetName==t.name):t.propertyType==_.property?i.find(n=>(n.target==R.property||n.target==R.explicitProperty)&&n.targetName==t.name):i.find(n=>(n.target==R.property||n.target==R.explicitProperty||n.target==R.attribute)&&n.targetName==t.name):null}getUnsetValue(e,t){return t.propertyType==_.cssValue?e!=null&&e.length!==0&&e[0].nodeType==k.Element?window.getComputedStyle(e[0].element)[t.propertyName??t.name]:null:t.defaultValue}static recreateElements(e,t){for(let i of t){if(!e.isHandledElement(i))continue;let n="<"+i.name+" ";for(let o of i.element.attributes)n+=o.name+'="'+o.value.replaceAll('"',""")+'" ';n+="></"+i.name+">";let s=cr(n,t[0].document);for(let o of[...i.element.childNodes])s.appendChild(o);s.style.pointerEvents="auto",i.node.insertAdjacentElement("beforebegin",s),i.node.parentNode&&i.node.parentNode.removeChild(i.node),i.replaceNode(s)}}getContextMenu(e,t){let i=[{title:"clear",action:n=>{t.service.clearValue(e,t,"value"),e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(e)}},{title:"edit as text",action:(n,s,o,a)=>{a.close(),setTimeout(async()=>{let l=t.service.getValue(e,t),c=prompt(`edit value of '${t.name}' as string:`,l);c&&c!=l&&await t.service.setValue(e,t,c),e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(e)},10)}}];return e[0].serviceContainer.config.openBindingsEditor&&(i.push({title:"-"},{title:"edit binding",action:()=>{let n=t.service.getPropertyTarget(e[0],t),s=t.service.getBinding(e,t);e[0].serviceContainer.config.openBindingsEditor(t,e,s,n)}}),t.service.isSet(e,t)==W.bound&&i.push({title:"clear binding",action:()=>{t.service.clearValue(e,t,"binding"),e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(e)}})),i}}});var Y,ve=g(()=>{"use strict";(function(r){r[r.none=0]="none",r[r.full=1]="full",r[r.fullOnValueChange=2]="fullOnValueChange",r[r.fullOnClassChange=3]="fullOnClassChange"})(Y||(Y={}))});var mt,ki=g(()=>{"use strict";Ie();Re();fe();ve();mt=class extends re{getRefreshMode(e){return Y.fullOnClassChange}async getProperties(e){return this.isHandledElement(e)&&e.element?.constructor?.properties?this.parseProperties(e.element.constructor.properties):null}parseProperties(e){let t=[],i=Object.keys(e),n=Object.groupBy(i,s=>e[s].group??"");for(let s in n){let o={name:s,properties:[]};for(let a of n[s]){let l=e[a],c=l,h=null,p=null,d=!1,u=_.propertyAndAttribute;if(l.type&&(c=l.type,h=l.description,p=l.example,d=l.readonly,u=l.readonly?_.property:_.propertyAndAttribute),c===String){let m={name:a,type:"string",service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else if(c===Object){let m={name:a,type:"object",service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else if(c===Number){let m={name:a,type:"number",service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else if(c===Date){let m={name:a,type:"date",service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else if(c===Boolean){let m={name:a,type:"boolean",service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else if(z.isTypescriptEnum(c)){let m={name:a,type:"enum",enumValues:z.getTypescriptEnumEntries(c),service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else if(typeof c=="string"){let m={name:a,type:c,service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}else{let m={name:a,type:"string",service:this,propertyType:u,description:h,example:p,readonly:d};o.properties.push(m)}}o.name==""?t.push(...o.properties):t.push(o)}return t}getUnsetValue(e,t){return e[0].element[t.propertyName??t.name]}}});var dr,Wl=g(()=>{"use strict";ki();dr=class extends mt{name="polymer";isHandledElement(e){return e.element.constructor.polymerElementVersion!=null}_notifyChangedProperty(e,t,i){e.element.set(t.name,i)}}});var ur,jl=g(()=>{"use strict";ki();ur=class extends mt{name="lit";isHandledElement(e){let t=e.element.constructor.__proto__;for(;t!=null;){if(t.name=="LitElement")return!0;if(t.name==null||t.name=="HTMLElement"||t.name=="Element"||t.name=="Node"||t.name=="HTMLElement")return!1;t=t.__proto__}return!1}_notifyChangedProperty(e,t,i){}}});var mr,Yl=g(()=>{"use strict";fe();ve();Re();mr=class extends re{inputProperties=[{name:"type",type:"list",values:["text","number","button","checkbox","color","date","datetime-local","email","file","hidden","image","month","password","radio","range","reset","search","submit","tel","time","url","week"],service:this,defaultValue:"text",propertyType:_.propertyAndAttribute},{name:"value",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"placeholder",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"checked",type:"boolean",service:this,propertyType:_.propertyAndAttribute},{name:"min",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"max",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"readonly",type:"boolean",service:this,propertyType:_.propertyAndAttribute},{name:"valueAsDate",type:"string",service:this,propertyType:_.property},{name:"valueAsNumber",type:"string",service:this,propertyType:_.property}];textareaProperties=[{name:"value",type:"string",service:this,propertyType:_.property},{name:"placeholder",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"maxlength",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"cols",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"rows",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"readonly",type:"boolean",service:this,propertyType:_.propertyAndAttribute},{name:"resize",type:"list",values:["both","none","horizontal","vertical"],service:this,propertyType:_.cssValue}];selectProperties=[{name:"value",type:"string",service:this,propertyType:_.property},{name:"size",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"multiple",type:"boolean",service:this,propertyType:_.propertyAndAttribute}];buttonProperties=[{name:"type",type:"list",values:["button","submit","reset"],service:this,defaultValue:"button",propertyType:_.propertyAndAttribute},{name:"value",type:"string",service:this,propertyType:_.propertyAndAttribute}];anchorProperties=[{name:"href",type:"string",service:this,propertyType:_.propertyAndAttribute}];divProperties=[{name:"title",type:"string",service:this,propertyType:_.propertyAndAttribute}];imgProperties=[{name:"src",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"alt",type:"string",service:this,propertyType:_.propertyAndAttribute}];iframeProperties=[{name:"src",type:"string",service:this,propertyType:_.propertyAndAttribute}];formElementProperties=[{name:"autofocus",type:"boolean",service:this,propertyType:_.propertyAndAttribute},{name:"disabled",type:"boolean",service:this,propertyType:_.propertyAndAttribute},{name:"required",type:"boolean",service:this,propertyType:_.propertyAndAttribute}];meterProperties=[{name:"value",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"min",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"max",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"low",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"high",type:"number",service:this,propertyType:_.propertyAndAttribute},{name:"optimum",type:"number",service:this,propertyType:_.propertyAndAttribute}];name="native";getRefreshMode(e){return Y.full}isHandledElement(e){switch(e.element.localName){case"input":case"textarea":case"select":case"button":case"a":case"div":case"span":case"br":case"img":case"iframe":case"meter":case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":case"p":return!0}return!1}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){if(!this.isHandledElement(e))return null;switch(e.element.localName){case"input":return[...this.inputProperties,...this.formElementProperties];case"textarea":return[...this.textareaProperties,...this.formElementProperties];case"select":return[...this.selectProperties,...this.formElementProperties];case"button":return[...this.buttonProperties,...this.formElementProperties];case"a":return this.anchorProperties;case"div":return this.divProperties;case"img":return this.imgProperties;case"iframe":return this.iframeProperties;case"meter":return this.meterProperties;case"h1":case"h2":case"h3":case"h4":case"h5":case"h6":case"p":return[]}return null}}});var et,Ai=g(()=>{"use strict";fe();Re();ve();et=class extends re{getRefreshMode(e){return Y.none}commonProperties=[{name:"class",type:"string",service:this,attributeName:"class",propertyName:"className",propertyType:_.attribute},{name:"title",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"part",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"tabindex",type:"number",service:this,propertyType:_.propertyAndAttribute}];name="common";isHandledElement(e){return!e.isRootItem}async getProperty(e,t){return this.commonProperties.find(i=>i.name==t)}async getProperties(e){return this.commonProperties}}});var fr,Ul=g(()=>{"use strict";Ai();fe();ve();fr=class extends et{rectProperties=[{name:"x",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"y",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"width",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"height",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"rx",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"ry",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"pathLength",type:"svg-length",service:this,propertyType:_.attribute},{name:"fill",type:"color",defaultValue:"transparent",service:this,propertyType:_.attribute},{name:"fill-opacity",type:"number",defaultValue:"1",service:this,propertyType:_.attribute}];lineProperties=[{name:"x1",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"y1",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"x2",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"y2",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"pathLength",type:"svg-length",service:this,propertyType:_.attribute}];ellipseProperties=[{name:"cx",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"cy",type:"svg-length",defaultValue:"0",service:this,propertyType:_.attribute},{name:"rx",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"ry",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"pathLength",type:"svg-length",service:this,propertyType:_.attribute},{name:"fill",type:"color",defaultValue:"transparent",service:this,propertyType:_.attribute},{name:"fill-opacity",type:"number",defaultValue:"1",service:this,propertyType:_.attribute}];pathProperties=[{name:"d",type:"string",defaultValue:"",service:this,propertyType:_.attribute},{name:"pathLength",type:"svg-length",service:this,propertyType:_.attribute}];svgProperties=[{name:"width",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"height",type:"svg-length",defaultValue:"auto",service:this,propertyType:_.attribute},{name:"viewBox",type:"string",service:this,propertyType:_.attribute}];defaultProperties=[{name:"stroke",type:"color",defaultValue:"currentcolor",service:this,propertyType:_.attribute},{name:"stroke-width",type:"svg-length",service:this,propertyType:_.attribute},{name:"stroke-opacity",type:"number",defaultValue:"1",service:this,propertyType:_.attribute},{name:"visibility",type:"list",values:["visible","hidden"],defaultValue:"visible",service:this,propertyType:_.attribute}];name="svg";getRefreshMode(e){return Y.fullOnClassChange}isHandledElement(e){switch(e.element.localName){case"rect":case"line":case"ellipse":case"path":case"svg":return!0}return!1}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){let t=null;if(!this.isHandledElement(e))return null;switch(e.element.localName){case"rect":t=[...this.rectProperties,...this.defaultProperties];break;case"line":t=[...this.lineProperties,...this.defaultProperties];break;case"ellipse":t=[...this.ellipseProperties,...this.defaultProperties];break;case"path":t=[...this.pathProperties,...this.defaultProperties];break;case"svg":t=this.svgProperties;break}if(e.element.localName=="line"||e.element.localName=="path"){let i=this.getAllMarkerIds(e);(i.length>0||e.hasAttribute("marker-start"))&&t.push({name:"marker-start",type:"string",values:i,service:this,propertyType:_.attribute}),(i.length>0||e.hasAttribute("marker-mid"))&&t.push({name:"marker-mid",type:"string",values:i,service:this,propertyType:_.attribute}),(i.length>0||e.hasAttribute("marker-end"))&&t.push({name:"marker-end",type:"string",values:i,service:this,propertyType:_.attribute})}return t}getAllMarkerIds(e){return[...e.element.ownerSVGElement.querySelectorAll("defs > marker")].map(s=>`url(#${s.id})`).filter(s=>!!s)}}});var Ti,Xl=g(()=>{"use strict";Ti=class{constructor(e,t,i,n,s=!1,o=!1){this.title="Change Css Style "+t+" of <"+e.name+">",this.designItem=e,this.name=t,this.newValue=i,this.oldValue=n,this.newImportant=s,this.oldImportant=o}title;get affectedItems(){return[this.designItem]}undo(){return this.oldValue===""||this.oldValue==null?(this.designItem._withoutUndoRemoveStyle(this.name),this.name.startsWith("--")?this.designItem.element.style.removeProperty(this.name):this.designItem.element.style[this.name]="",[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.newValue,newValue:null}]):(this.designItem._withoutUndoSetStyle(this.name,this.oldValue,this.oldImportant),this.designItem.element.style.setProperty(this.name,this.oldValue,this.oldImportant?"important":""),[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.newValue,newValue:this.oldValue}])}do(){return this.newValue===""||this.newValue==null?(this.designItem._withoutUndoRemoveStyle(this.name),this.name.startsWith("--")?this.designItem.element.style.removeProperty(this.name):this.designItem.element.style[this.name]="",[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.oldValue,newValue:null}]):(this.designItem._withoutUndoSetStyle(this.name,this.newValue,this.newImportant),this.designItem.element.style.setProperty(this.name,this.newValue,this.newImportant?"important":""),[{changeType:"changed",designItems:this.affectedItems,type:"css",name:this.name,oldValue:this.oldValue,newValue:this.newValue}])}designItem;name;newValue;oldValue;newImportant;oldImportant;mergeWith(e){return!1}}});var un,$l=g(()=>{"use strict";un=class r{constructor(e,t,i,n){this.title="Change Attribute "+t+" of <"+e.name+">",this.designItem=e,this.name=t,this.newValue=i,this.oldValue=n}title;get affectedItems(){return[this.designItem]}undo(){if(this.oldValue==null)return this.designItem._withoutUndoRemoveAttribute(this.name),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.newValue,newValue:null}];{let e=this.oldValue;return typeof this.oldValue!="string"&&(e=this.oldValue.toString()),this.designItem._withoutUndoSetAttribute(this.name,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.newValue,newValue:e}]}}do(){if(this.newValue==null)return this.designItem._withoutUndoRemoveAttribute(this.name),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.newValue,newValue:null}];{let e=this.newValue;return typeof this.newValue!="string"&&(e=this.newValue.toString()),this.designItem._withoutUndoSetAttribute(this.name,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.name,oldValue:this.oldValue,newValue:e}]}}designItem;name;newValue;oldValue;mergeWith(e){return e instanceof r&&this.designItem===e.designItem&&this.name===e.name?(this.newValue=e.newValue,!0):!1}}});var I,st=g(()=>{"use strict";(function(r){r[r.Directly=0]="Directly",r[r.Permanent=1]="Permanent",r[r.Selection=2]="Selection",r[r.PrimarySelection=3]="PrimarySelection",r[r.PrimarySelectionContainer=4]="PrimarySelectionContainer",r[r.MouseOver=5]="MouseOver",r[r.OnlyOneItemSelected=6]="OnlyOneItemSelected",r[r.MultipleItemsSelected=7]="MultipleItemsSelected",r[r.ContainerDragOverAndCanBeEntered=8]="ContainerDragOverAndCanBeEntered",r[r.ContainerExternalDragOverAndCanBeEntered=9]="ContainerExternalDragOverAndCanBeEntered",r[r.ContainerDrag=10]="ContainerDrag",r[r.Doubleclick=11]="Doubleclick",r[r.Placement=12]="Placement",r[r.PrimarySelectionAndCanBeEntered=13]="PrimarySelectionAndCanBeEntered",r[r.PrimarySelectionContainerAndCanBeEntered=14]="PrimarySelectionContainerAndCanBeEntered",r[r.PrimarySelectionRefreshed=15]="PrimarySelectionRefreshed",r[r.ManualApplied=16]="ManualApplied"})(I||(I={}))});var ft,gr,yr,Kl=g(()=>{"use strict";(function(r){r[r.Name=0]="Name",r[r.Value=1]="Value",r[r.InQuote=2]="InQuote"})(ft||(ft={}));gr=class{constructor(e,t,i){this.name=e.trim(),this.value=t.trim(),this.important=i}name;value;important},yr=class{entries=[];parse(e,t="'"){this.entries=[];let i="",n="",s=ft.Name;for(let o=0;o<e.length;o++){let a=e[o];if(s===ft.Name)a===":"?s=ft.Value:a===";"?i="":i+=a;else if(s===ft.Value)if(a===";"){let l=this.createEntry(i,n);this.entries.push(l),i="",n="",s=ft.Name}else a===t&&(s=ft.InQuote),n+=a;else s===ft.InQuote&&(a==="\\"?(n+=a,o++,a=e[o],n+=a):a===t?(n+=a,s=ft.Value):n+=a)}i.trim()!==""&&this.entries.push(this.createEntry(i,n))}createEntry(e,t){let i=t.match(/\s*!\s*important\s*$/i);return i?new gr(e,t.substring(0,i.index),!0):new gr(e,t,!1)}}});var Wt,Ql=g(()=>{"use strict";Wt=class{constructor(e,t,i){this.title="Move or Insert Item",this.designItem=e,this.newParent=t,this.newIndex=i}title;get affectedItems(){return this.oldParent?[this.designItem,this.newParent,this.oldParent]:[this.designItem,this.newParent]}undo(){return this.oldParent?(this.oldParent._insertChildInternal(this.designItem,this.oldIndex),[{changeType:"moved",designItems:[this.designItem]}]):(this.designItem.parent._removeChildInternal(this.designItem),[{changeType:"removed",designItems:[this.designItem]}])}do(){return this.oldParent=this.designItem.parent,this.oldParent&&(this.oldIndex=this.designItem.parent.indexOf(this.designItem)),this.newParent._insertChildInternal(this.designItem,this.newIndex),[{changeType:this.oldParent?"moved":"added",designItems:[this.designItem]}]}designItem;newParent;newIndex;oldParent;oldIndex;newItem;mergeWith(e){return!1}}});var Mi,vr=g(()=>{"use strict";Mi=class{_textHolder="";indent=4;level=0;get position(){return this._textHolder.length}isLastCharNewline(){return this._textHolder[this._textHolder.length-1]===`
|
|
2
2
|
`}levelRaise(){this.level++}levelShrink(){this.level--}write(e){this._textHolder+=e}writeLine(e){this.writeIndent(),this._textHolder+=e,this.writeNewline()}writeIndent(){this._textHolder+="".padEnd(this.level*this.indent," ")}writeNewline(){this._textHolder+=`
|
|
3
|
-
`}getString(){return this._textHolder}}});var
|
|
4
|
-
`}levelRaise(){}levelShrink(){}write(e){this._textHolder+=e}writeLine(e){this._textHolder+=e}writeIndent(){}writeNewline(){}getString(){return this._textHolder}}});var J,st=g(()=>{"use strict";fr();wu();J=class{static normalizeAttributeValue(e,t=!1){return typeof e=="number"&&(e=e.toString()),e?t?e.replaceAll("&","&").replaceAll("'","'").replaceAll("<","<").replaceAll(">",">"):e.replaceAll("&","&").replaceAll('"',""").replaceAll("<","<").replaceAll(">",">"):e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">")}static normalizeContentValue(e){return e&&e.replaceAll("&","&").replaceAll("<","<").replaceAll("\xA0"," ")}static IsSelfClosingElement(e){return e==="area"||e==="base"||e==="br"||e==="col"||e==="embed"||e==="hr"||e==="img"||e==="input"||e==="keygen"||e==="link"||e==="meta"||e==="param"||e==="source"||e==="track"||e==="wbr"}static ConvertToString(e,t,i=!1){let n=t!==!1?new Mi:new gr;return e[0].serviceContainer.htmlWriterService.write(n,e,!0,i),n.getString()}}});import{css as bg}from"@node-projects/base-custom-webcomponent";var Pe,Gt=g(()=>{"use strict";Pe=class s{static _contextMenuCss=bg`.context_menu{position:fixed;inset:auto;margin:0;border:none;background:0 0;overflow:visible;opacity:0;transform:scale(0);transition:transform .1s;transform-origin:top left;padding:0;z-index:2147483647;color:var(--context-menu-color,#000);font-family:var(--context-menu-font-family,inherit);font-size:var(--context-menu-font-size,inherit);font-weight:var(--context-menu-font-weight,inherit)}.context_menu.context_menu_display{opacity:1;transform:scale(1)}.context_menu,.context_menu *{box-sizing:border-box}.context_menu *{position:relative}.context_menu ul{list-style-type:none;padding:var(--context-menu-padding,3px);margin:0;border:var(--context-menu-border,none);border-radius:var(--context-menu-border-radius,0);background-color:var(--context-menu-background,#f5f7f7);box-shadow:var(--context-menu-shadow,0 0 5px #333);max-inline-size:calc(100vw - 8px);max-block-size:calc(100vh - 8px);overflow:auto;overscroll-behavior:contain;isolation:isolate}.context_menu ul[popover]{inset:auto;margin:0;border:var(--context-menu-border,none);border-radius:var(--context-menu-border-radius,0)}.context_menu li{padding:var(--context-menu-item-padding-y,0) 1.7em var(--context-menu-item-padding-y,0) 0;cursor:pointer;white-space:nowrap;display:flex;align-items:center}.context_menu li:hover{background-color:var(--context-menu-hover-background,#bbb)}.context_menu li .context_menu_icon_span{width:var(--context-menu-icon-column-width,28px);display:inline-flex;align-items:center;justify-content:center}.context_menu li .context_menu_icon_span img{height:var(--context-menu-icon-size,18px)}.context_menu li .context_menu_text{padding-left:2px;vertical-align:middle}.context_menu li .context_menu_sub_span{width:1em;display:inline-block;text-align:center;position:absolute;top:50%;right:.5em;transform:translateY(-50%)}.context_menu li>ul{position:absolute;inset:auto;top:0;left:100%;opacity:0;transition:opacity .2s;visibility:hidden}.context_menu li>ul.context_menu_submenu_popover{position:fixed}.context_menu li>ul:popover-open{opacity:1;visibility:visible}.context_menu li.context_menu_divider{border-bottom:1px solid var(--context-menu-divider-color,#aaa);margin:5px;padding:0;cursor:default}.context_menu li.context_menu_divider:hover{background-color:inherit}.context_menu li[disabled=""]{color:var(--context-menu-disabled-color,#777);cursor:default}.context_menu li[disabled=""]:hover{background-color:inherit}.context_menu li.context_menu_marked{background-color:var(--context-menu-marked-background,#5ebdec)}`;static count=0;static _openedContextMenus=new Set;menu;options;context;num;_menuElement;constructor(e,t,i){this.num=s.count++,this.menu=e,this.options=t,this.context=i,this.reload(),this._windowDown=this._windowDown.bind(this),this._windowKeyUp=this._windowKeyUp.bind(this),this._windowResize=this._windowResize.bind(this)}reload(){let e=this.options?.shadowRoot??document;this._menuElement==null&&(this._menuElement=document.createElement("div"),this._menuElement.className="context_menu",this._menuElement.id="context_menu_"+this.num,this._menuElement.setAttribute("popover","manual"),e===document?document.body.appendChild(this._menuElement):e.appendChild(this._menuElement)),this._menuElement.innerHTML="",e.adoptedStyleSheets.indexOf(s._contextMenuCss)<0&&(e.adoptedStyleSheets=[...e.adoptedStyleSheets,s._contextMenuCss]),this._menuElement.appendChild(this.renderLevel(this.menu))}renderLevel(e){let t=document.createElement("ul"),i=!1;return e.forEach(n=>{if(n.title!=="-"){if(i){let c=document.createElement("li");c.className="context_menu_divider",i=!1,t.appendChild(c)}let r=document.createElement("li"),o=document.createElement("span");o.className="context_menu_icon_span",n.checked===!0?o.innerHTML="\u2714":(n.icon??"")!=""?o.innerHTML=n.icon??"":o.innerHTML=this.options?.defaultIcon??"";let a=document.createElement("span");a.className="context_menu_text",a.innerHTML=n.title??"";let l=document.createElement("span");if(l.className="context_menu_sub_span",n.children!=null&&(l.innerHTML=this.options?.subIcon??"›"),r.appendChild(o),r.appendChild(a),r.appendChild(l),n.disabled)r.setAttribute("disabled","");else if(n.checkable?r.addEventListener("click",c=>{c.stopPropagation(),c.preventDefault(),n.checked=!n.checked,o.innerHTML=n.checked?"\u2714":n.icon??this.options?.defaultIcon??"",n.action&&n.action(c,n,this.context,this)}):n.action&&r.addEventListener("click",c=>{c.stopPropagation(),c.preventDefault(),n.action?.(c,n,this.context,this),this.close()}),this.options?.mode=="undo"&&r.addEventListener("mouseup",c=>{c.stopPropagation(),n.action?.(c,n,this.context,this),this.close()}),r.addEventListener("mouseenter",()=>{this.closeSiblingSubmenus(r),this.options?.mode=="undo"&&this.markUndoItems(r)}),n.children!=null){let c=this.renderLevel(n.children);this.configurePopoverSubmenu(c),r.appendChild(c),r.addEventListener("mouseenter",()=>{this.openPopoverSubmenu(r,c)})}t.appendChild(r)}else i=!0}),t}display(e){let t=this._menuElement,i=this.options?.mouseOffset!=null?this.options.mouseOffset:2;this.showPopover(t),this.positionMenu(t,e.clientX,e.clientY,i),t.classList.add("context_menu_display"),e.preventDefault(),s._openedContextMenus.add(this),window.addEventListener("keyup",this._windowKeyUp),window.addEventListener("resize",this._windowResize),window.addEventListener("mousedown",this._windowDown),setTimeout(()=>{s._openedContextMenus.has(this)&&window.addEventListener("contextmenu",this._windowDown)},150)}_windowResize(){this.close()}_windowDown(e){return e.preventDefault(),(!(e.target instanceof Node)||!this._menuElement.contains(e.target))&&this.close(),!1}_windowKeyUp(e){e.key==="Escape"&&this.close()}static show(e,t,i,n){let r=new s(e,i,n);return r.display(t),r}close(){this.hideDescendantSubmenus(this._menuElement),this.hidePopover(this._menuElement),this._menuElement.remove(),window.removeEventListener("mousedown",this._windowDown),window.removeEventListener("resize",this._windowResize),window.removeEventListener("keyup",this._windowKeyUp),setTimeout(()=>window.removeEventListener("contextmenu",this._windowDown),10),s._openedContextMenus.delete(this)}static closeAll(){for(let e of s._openedContextMenus.values())e.close()}configurePopoverSubmenu(e){e.classList.add("context_menu_submenu_popover"),e.setAttribute("popover","manual")}markUndoItems(e){if(e.parentElement==null)return;let t=!0;for(let i of e.parentElement.children)t?i.classList.add("context_menu_marked"):i.classList.remove("context_menu_marked"),i==e&&(t=!1)}closeSiblingSubmenus(e){if(e.parentElement!=null)for(let t of e.parentElement.children)t!==e&&this.hideDescendantSubmenus(t)}hideDescendantSubmenus(e){let t=e.querySelectorAll("ul[popover]");for(let i of t)this.hidePopover(i)}openPopoverSubmenu(e,t){this.showPopover(t),this.positionSubmenuPopover(e,t)}showPopover(e){this.isPopoverOpen(e)||e.showPopover()}hidePopover(e){e==null||!this.isPopoverOpen(e)||e.hidePopover()}isPopoverOpen(e){return e.matches(":popover-open")}positionMenu(e,t,i,n){let r=e.offsetWidth+4,o=e.offsetHeight+4,a=window.innerWidth-t,l=t,c=window.innerHeight-i,h=i,p=t+n;a<r&&l>a&&(p=t-r-n);let d=i+n;c<o&&h>c&&(d=i-o-n),e.style.left=`${Math.max(0,Math.min(p,window.innerWidth-r))}px`,e.style.top=`${Math.max(0,Math.min(d,window.innerHeight-o))}px`}positionSubmenuPopover(e,t){let i=e.getBoundingClientRect(),n=t.getBoundingClientRect(),r=t.offsetWidth||n.width,o=t.offsetHeight||n.height,a=window.innerWidth-i.right,l=i.left,c=i.right;a<r&&l>a&&(c=i.left-r);let h=window.innerHeight-i.top,p=i.bottom,d=i.top;h<o&&p>h&&(d=i.bottom-o),t.style.left=`${Math.max(0,Math.min(c,window.innerWidth-r))}px`,t.style.top=`${Math.max(0,Math.min(d,window.innerHeight-o))}px`,t.style.right="auto",t.style.bottom="auto"}}});var tt,si=g(()=>{"use strict";Gt();tt=class{settingName;content;tooltp;contextmenu;constructor(e,t,i,n){this.settingName=e,this.content=t,this.tooltp=i,this.contextmenu=n}provideButtons(e,t){let i=document.createElement("div");typeof this.content=="string"?i.innerHTML=this.content:i.appendChild(this.content),i.title=this.tooltp,i.className="toolbar-control",t.instanceServiceContainer.designContext.extensionOptionsChanged.on(()=>{n[this.settingName]!==!1?i.classList.add("selected"):i.classList.remove("selected")});let n=t.instanceServiceContainer.designContext.extensionOptions;return n[this.settingName]!==!1&&i.classList.add("selected"),i.onclick=()=>{let r=n[this.settingName];n[this.settingName]=r===!1,n[this.settingName]!==!1?i.classList.add("selected"):i.classList.remove("selected")},i.oncontextmenu=r=>{r.preventDefault(),this.contextmenu&&Pe.show(this.contextmenu,r)},[i]}}});var vr,yr,_r=g(()=>{"use strict";si();vr="enableStylesheetService",yr=class extends tt{constructor(){super(vr,"ss","modify Stylesheet")}}});var xr,Kl=g(()=>{"use strict";xr=class{constructor(e,t,i){this.title="Change TextContent from '"+i+"' to '"+t+"'",this.designItem=e,this.newValue=t,this.oldValue=i}title;get affectedItems(){return[this.designItem]}undo(){return this.designItem.element.textContent=this.oldValue,this.designItem.refreshRenderedDesignItem(),[{changeType:"changed",designItems:this.affectedItems,type:"property",name:"textContent",oldValue:this.newValue,newValue:this.oldValue}]}do(){return this.designItem.element.textContent=this.newValue,this.designItem.refreshRenderedDesignItem(),[{changeType:"changed",designItems:this.affectedItems,type:"property",name:"textContent",oldValue:this.oldValue,newValue:this.newValue}]}designItem;newValue;oldValue;mergeWith(e){return!1}}});function Su(s,...e){return s.reduce((t,i,n)=>t+i+(e[n]??""),"")}function Cu(){return window.navigator.platform?.startsWith("Mac")||window.navigator.platform==="iPhone"||window.navigator.platform==="iPad"||window.navigator.platform==="iPod"}function St(s){return new Promise(e=>setTimeout(e,s))}async function Eu(s,e){let t=URL.createObjectURL(s),i=document.createElement("a");i.href=t,i.style.display="none",i.download=e,document.body.appendChild(i),i.click(),document.body.removeChild(i),await St(300)}function zw(s){for(var e=s.split(",")[0].split(":")[1].split(";")[0],t=atob(s.split(",")[1]),i=[],n=0;n<t.length;n++)i.push(t.charCodeAt(n));return new Blob([new Uint8Array(i)],{type:e})}function Fw(s,e){return s.x>=e.x&&s.x<=e.x+e.width&&s.y>=e.y&&s.y<=e.y+e.height}function oi(s,e){return s.endsWith(e??"/")?s.substring(0,s.length-1):s}function Ie(s,e){return s.startsWith(e??"/")?s.substring(1):s}function fn(){return new Promise(s=>requestAnimationFrame(s))}function Bw(s,e){if(s===e)return!0;if(s==null||e==null||s.length!==e.length)return!1;for(var t=0;t<s.length;++t)if(s[t]!==e[t])return!1;return!0}function Pu(s,e,t=!1,i="."){if(e==null)return s;let n=e.split(i);for(let r=0;r<n.length;r++)if(s!=null)s=s[n[r]];else return t?wg:null;return s}function Ql(s,e,t,i="."){if(e==null)return;let n=e.split(i);for(let r=0;r<n.length-1;r++)if(s!=null){let o=s[n[r]];o==null&&(o={},s[n[r]]=o),s=o}s!=null&&(s[n[n.length-1]]=t)}var wg,ze=g(()=>{"use strict"});var br,Zl=g(()=>{"use strict";ze();br=class s{constructor(e,t,i,n){this.title="Change Property "+t+" of <"+e.name+">",this.designItem=e,this.name=t,this.newValue=i,this.oldValue=n}title;get affectedItems(){return[this.designItem]}undo(){return Ql(this.designItem.node,this.name,this.oldValue),[{changeType:"changed",type:"property",name:this.name,designItems:[this.designItem]}]}do(){return Ql(this.designItem.node,this.name,this.newValue),[{changeType:"changed",type:"property",name:this.name,designItems:[this.designItem]}]}designItem;name;newValue;oldValue;mergeWith(e){return e instanceof s&&this.designItem===e.designItem&&this.name===e.name?(this.newValue=e.newValue,!0):!1}}});var gn,ql=g(()=>{"use strict";gn=class s{constructor(e,t,i,n,r){this.title="Change Attribute & Property"+t+" of <"+e.name+">",this.designItem=e,this.attributeName=t,this.propertyName=i,this.newValue=n,this.oldValue=r}title;get affectedItems(){return[this.designItem]}undo(){if(this.designItem.element[this.propertyName]=this.oldValue,this.oldValue==null)return this.designItem._withoutUndoRemoveAttribute(this.attributeName),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.newValue,newValue:null}];{let e=this.oldValue;return typeof this.oldValue!="string"&&(e=this.oldValue.toString()),this.designItem._withoutUndoSetAttribute(this.attributeName,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.newValue,newValue:e}]}}do(){if(this.designItem.element[this.propertyName]=this.newValue,this.newValue==null)return this.designItem._withoutUndoRemoveAttribute(this.attributeName),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.newValue,newValue:null}];{let e=this.newValue;return typeof this.newValue!="string"&&(e=this.newValue.toString()),this.designItem._withoutUndoSetAttribute(this.attributeName,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.oldValue,newValue:e}]}}designItem;attributeName;propertyName;newValue;oldValue;mergeWith(e){return e instanceof s&&this.designItem===e.designItem&&this.attributeName===e.attributeName&&this.propertyName===e.propertyName?(this.newValue=e.newValue,!0):!1}}});import{TypedEvent as Sg}from"@node-projects/base-custom-webcomponent";var Li,Oi,ai,ot,Wt,jt,Yt,Ut,Xt,O,oe=g(()=>{"use strict";Yl();Z();Ul();rt();Xl();Ee();$l();st();_r();Kl();Zl();ze();ql();Li="node-projects-hide-at-design-time",Oi="node-projects-hide-at-run-time",ai="node-projects-lock-at-design-time",ot="node-projects-force-hover",Wt="node-projects-force-active",jt="node-projects-force-visited",Yt="node-projects-force-focus",Ut="node-projects-force-focus-within",Xt="node-projects-force-focus-visible",O=class s{lastContainerSize;parsedNode;node;view;serviceContainer;instanceServiceContainer;nodeReplaced=new Sg;get window(){return this.isRootItem&&this.node instanceof HTMLIFrameElement?this.node.contentDocument.defaultView:this.node.ownerDocument.defaultView??window}get document(){return this.isRootItem&&this.node instanceof HTMLIFrameElement?this.node.contentDocument:this.node.ownerDocument}get usableContainer(){return this.isRootItem&&this.element instanceof(this.element.ownerDocument.defaultView??window).HTMLIFrameElement?this.element.contentWindow.document:this.isRootItem?this.node.shadowRoot:this.element}async clone(){try{let e=J.ConvertToString([this],!1);return(await this.serviceContainer.htmlParserService.parse(e,this.serviceContainer,this.instanceServiceContainer,!0))[0]}catch{console.warn("could not clone design item.",this)}return null}*allMatching(e){if(this.hasChildren)for(let t of this.children())t.nodeType==D.Element&&t.element.matches(e)&&(yield t),yield*t.allMatching(e)}replaceNode(e){s._designItemMap.delete(this.node),s._designItemMap.set(e,this),this.view==this.node&&(this.view=e),this.node=e,this.nodeReplaced.emit()}get nodeType(){return this.node instanceof(this.node.ownerDocument.defaultView??window).Comment?D.Comment:this.node instanceof(this.node.ownerDocument.defaultView??window).Text?D.TextNode:D.Element}_attributes;get hasAttributes(){return this._attributes.size>0}hasAttribute(e){return this._attributes.has(e)}getAttribute(e){return this._attributes.get(e)}*attributes(){for(let e of this._attributes)yield e}_withoutUndoSetAttribute(e,t){try{this.isRootItem||this.element.setAttribute(e,t)}catch(i){i?.code!==5&&console.warn(i)}this._attributes.set(e,t),this.serviceContainer.designItemService.handleSpecialAttributes(e,this)}_withoutUndoRemoveAttribute(e){try{this.isRootItem||this.element.removeAttribute(e)}catch(t){t?.code!==5&&console.warn(t)}this._attributes.delete(e),this.serviceContainer.designItemService.handleSpecialAttributes(e,this)}_styles;_stylePriorities;get hasStyles(){return this._styles.size>0}hasStyle(e){let t=e;return t.startsWith("--")||(t=z.camelToDashCase(e)),this._styles.has(t)}getStyle(e){let t=e;return t.startsWith("--")||(t=z.camelToDashCase(e)),this._styles.get(t)}isStyleImportant(e){let t=e;return t.startsWith("--")||(t=z.camelToDashCase(e)),this._stylePriorities.get(t)===!0}*styles(){for(let e of this._styles)yield e}_withoutUndoSetStyle(e,t,i=!1){let n=e;n.startsWith("--")||(n=z.camelToDashCase(e)),this._styles.set(n,t),i?this._stylePriorities.set(n,!0):this._stylePriorities.delete(n)}_withoutUndoRemoveStyle(e){let t=e;t.startsWith("--")||(t=z.camelToDashCase(e)),this._styles.delete(t),this._stylePriorities.delete(t)}static _designItemMap=new WeakMap;get element(){return this.view}get name(){return this.node.localName}get id(){return this.element.id}set id(e){let t=this.element.id;this.element.id=e,this.id?this.setAttribute("id",e):this.removeAttribute("id"),this.serviceContainer.referencesChangedService&&this.serviceContainer.referencesChangedService.notifyReferencesChanged([{designItem:this,oldValue:t,type:"idChanged"}])}get isRootItem(){return this.instanceServiceContainer.designerCanvas.rootDesignItem===this}*childrenRect(e){if(this.hasChildren)for(let t of this.children())t.nodeType==D.Element&&t.element.matches(e)&&(yield t),yield*t.allMatching(e)}_childArray=[];get hasChildren(){return this._childArray.length>0}*children(e=!1){for(let t of this._childArray)if(yield t,e)for(let i of t.children(e))yield i}get childCount(){return this._childArray.length}get firstChild(){return this._childArray[0]}_parent;get parent(){return this._parent}indexOf(e){return this._childArray.indexOf(e)}insertAdjacentElement(e,t){let i;t=="afterbegin"?i=new Ht(e,this,0):t=="beforeend"?i=new Ht(e,this,this._childArray.length):t=="beforebegin"?i=new Ht(e,this.parent,this.parent.indexOf(this)):t=="afterend"&&(i=new Ht(e,this.parent,this.parent.indexOf(this)+1)),this.instanceServiceContainer.undoService.execute(i)}insertChild(e,t){let i=new Ht(e,this,t);this.instanceServiceContainer.undoService.execute(i)}removeChild(e){this.serviceContainer.deletionService.removeItems([e])}remove(){this.serviceContainer.deletionService.removeItems([this])}clearChildren(){for(let e=this._childArray.length-1;e>=0;e--)this._childArray[e].remove()}get hasContent(){return(this.nodeType==D.TextNode||this.nodeType==D.Comment)&&this.element.textContent!=""||this._childArray.length===0}get content(){return this.nodeType==D.TextNode||this.nodeType==D.Comment?this.node.textContent:this._childArray.map(e=>e.content).join()}set content(e){let t=this.openGroup("set content");this.clearChildren();let i=document.createTextNode(e),n=s.GetOrCreateDesignItem(i,i,this.serviceContainer,this.instanceServiceContainer);if(this.nodeType==D.TextNode){let r=this.parent.indexOf(this),o=this.parent;this.remove(),o.insertChild(n,r)}else if(this.nodeType==D.Comment){let r=new xr(this,e,this.content);this.instanceServiceContainer.undoService.execute(r)}else this.insertChild(n);t.commit()}get innerHTML(){return J.ConvertToString([...this.children()],!1)}set innerHTML(e){if(this.nodeType!=D.TextNode){let t=this.openGroup("set innerHTML");this.clearChildren();let i=document.createRange();i.selectNode(document.body);let n=i.createContextualFragment(e);for(let r of[...n.childNodes]){let o=s.createDesignItemFromInstance(r,this.serviceContainer,this.instanceServiceContainer);this.insertChild(o)}t.commit()}}get isEmptyTextNode(){return this.nodeType===D.TextNode&&this.content?.trim()==""}get hideAtDesignTime(){return this.hasAttribute(Li)}set hideAtDesignTime(e){e?this.setAttribute(Li,""):this.removeAttribute(Li)}get hideAtRunTime(){return this.hasAttribute(Oi)}set hideAtRunTime(e){e?this.setAttribute(Oi,""):this.removeAttribute(Oi)}get lockAtDesignTime(){return this.hasAttribute(ai)}set lockAtDesignTime(e){e?this.setAttribute(ai,""):this.removeAttribute(ai)}static createDesignItemFromInstance(e,t,i){e=s.updateRenderedNode(t,e);let n=t.designItemService.createDesignItem(e,e,t,i);if(e instanceof(e.ownerDocument.defaultView??window).HTMLTemplateElement&&e.getAttribute("shadowrootmode")=="open")try{let r=e.parentNode.attachShadow({mode:"open"}),o=e.content.cloneNode(!0);r.appendChild(o)}catch(r){console.error("error attaching shadowdom",r)}if(n.nodeType==D.Element){for(let r of n.element.attributes)r.name!=="style"&&n._attributes.set(r.name,r.value);if(e instanceof(e.ownerDocument.defaultView??window).HTMLElement||e instanceof(e.ownerDocument.defaultView??window).SVGElement){let r=new mr,o=e.getAttribute("style");if(o){r.parse(o);for(let a of r.entries)n._styles.set(a.name,a.value),a.important&&n._stylePriorities.set(a.name,!0)}t.designItemService.handleSpecialAttributes(ai,n)}e.draggable=!1}n._childArray=n._internalUpdateChildrenFromNodesChildren();for(let r of n._childArray)r._parent=n;return n.refreshRenderedDesignItem(),n}static updateRenderedNode(e,t){let i=t;for(let n of e.renderedDesignItemServices??[]){let r=n.updateRenderedNode(i)??i;r!==i&&i.parentNode&&i.parentNode.replaceChild(r,i),i=r}return i}querySelectorAll(e){return this.usableContainer.querySelectorAll(e)}removeDesignerAttributesAndStylesFromChildren(){let e=this.querySelectorAll("*");for(let t of e){let i=s.GetDesignItem(t);i.hasAttribute("draggable")||t.removeAttribute("draggable"),i.hasStyle("pointer-events")||(t.style.pointerEvents="")}}updateChildrenFromNodesChildren(){this._childArray=this._internalUpdateChildrenFromNodesChildren();for(let e of this._childArray)e._parent=this}_internalUpdateChildrenFromNodesChildren(){let e=[];if(this.nodeType==D.Element)if(this.element instanceof(this.node.ownerDocument.defaultView??window).HTMLTemplateElement)for(let t of this.element.content.childNodes){let i=s.createDesignItemFromInstance(t,this.serviceContainer,this.instanceServiceContainer);e.push(i)}else if(this.isRootItem&&this.element instanceof(this.node.ownerDocument.defaultView??window).HTMLIFrameElement)for(let t of this.element.contentWindow.document.childNodes){let i=s.createDesignItemFromInstance(t,this.serviceContainer,this.instanceServiceContainer);e.push(i)}else for(let t of this.element.childNodes){let i=s.createDesignItemFromInstance(t,this.serviceContainer,this.instanceServiceContainer);e.push(i)}return e}_backupWhenEditContent;_inEditContent=!1;editContent(){this._inEditContent=!0,this._backupWhenEditContent=[...this.element.childNodes];let e=this.element.innerHTML;this.element.innerHTML="",this.element.innerHTML=e,this.element.setAttribute("contenteditable","")}editContentFinish(){if(this._inEditContent){this._inEditContent=!1,this.element.removeAttribute("contenteditable"),this.element.innerHTML="";for(let e of this._backupWhenEditContent)this.element.appendChild(e);this._backupWhenEditContent=null}}constructor(e,t,i,n){this.node=e,this.view=e,this.parsedNode=t,this.serviceContainer=i,this.instanceServiceContainer=n,this._attributes=new Map,this._styles=new Map,this._stylePriorities=new Map,s._designItemMap.set(e,this)}setView(e){this.view=e,s._designItemMap.set(e,this),this.refreshRenderedDesignItem()}refreshRenderedDesignItem(){for(let e of this.serviceContainer.renderedDesignItemServices??[])e.updateRenderedDesignItem(this)}openGroup(e){return this.instanceServiceContainer.undoService.openGroup(e)}getOrCreateDesignItem(e){return s.GetOrCreateDesignItem(e,e,this.serviceContainer,this.instanceServiceContainer)}static GetOrCreateDesignItem(e,t,i,n){if(!e)return null;let r=s._designItemMap.get(e);return r||(r=i.designItemService.createDesignItem(e,t,i,n)),r}static GetDesignItem(e){return e?s._designItemMap.get(e):null}setStyle(e,t,i){let n=e;if(n.startsWith("--")||(n=z.camelToDashCase(e)),this.isRootItem)throw"not allowed to set style on root item or use async setStyle";{let r=new Ti(this,n,t,this._styles.get(n),i,this.isStyleImportant(n));this.instanceServiceContainer.undoService.execute(r)}}async setStyleAsync(e,t,i){let n=e;if(n.startsWith("--")||(n=z.camelToDashCase(e)),this.isRootItem)if(this.instanceServiceContainer.stylesheetService){let r=this.instanceServiceContainer.stylesheetService.getDeclarationsSortedBySpecificity(this,e);if(r!==null&&r.length>0)this.instanceServiceContainer.stylesheetService.updateDeclarationValue(r[0],t,i);else{let o=this.instanceServiceContainer.stylesheetService.getRules(":host").filter(a=>!a.stylesheet?.readOnly);if(r===null||o.length===0){let a=this.openGroup("add rule and set style: "+e),l=this.instanceServiceContainer.stylesheetService.getStylesheets(),c=await this.instanceServiceContainer.stylesheetService.addRule(l[0],":host");this.instanceServiceContainer.stylesheetService.insertDeclarationIntoRule(c,e,t,i),a.commit()}else this.instanceServiceContainer.stylesheetService.insertDeclarationIntoRule(o[0],e,t,i)}}else throw"not allowed to set style on root item";else{let r=new Ti(this,n,t,this._styles.get(n),i,this.isStyleImportant(n));this.instanceServiceContainer.undoService.execute(r)}}removeStyle(e){let t=e;t.startsWith("--")||(t=z.camelToDashCase(e));let i=new Ti(this,t,"",this._styles.get(t),!1,this.isStyleImportant(t));this.instanceServiceContainer.undoService.execute(i)}updateStyleInSheetOrLocal(e,t,i,n){let r=e;r.startsWith("--")||(r=z.camelToDashCase(e));let o=this.instanceServiceContainer.stylesheetService?.getDeclarationsSortedBySpecificity(this,r).filter(a=>!a.stylesheet?.readOnly);this.hasStyle(e)||this.instanceServiceContainer.designContext.extensionOptions[vr]===!1||!o?.length?this.getStyle(r)!=t||n?this.setStyle(r,t,i):t==null&&this.removeStyle(r):this.instanceServiceContainer.stylesheetService.updateDeclarationValue(o[0],t,i)}async updateStyleInSheetOrLocalAsync(e,t,i,n){let r=e;r.startsWith("--")||(r=z.camelToDashCase(e));let o=this.instanceServiceContainer.stylesheetService?.getDeclarationsSortedBySpecificity(this,r).filter(a=>!a.stylesheet?.readOnly);this.hasStyle(e)||this.instanceServiceContainer.designContext.extensionOptions[vr]===!1||!o?.length?this.getStyle(r)!=t||n?await this.setStyleAsync(r,t,i):t==null&&this.removeStyle(r):this.instanceServiceContainer.stylesheetService.updateDeclarationValue(o[0],t,i)}getStyleFromSheetOrLocal(e,t=null){let i=e;if(i.startsWith("--")||(i=z.camelToDashCase(e)),this.hasStyle(e))return this.getStyle(i);let n=this.instanceServiceContainer.stylesheetService?.getDeclarationsSortedBySpecificity(this,i);return n&&n.length>0?n[0].value:null}getStyleFromSheetOrLocalOrComputed(e,t=null){let i=e;i.startsWith("--")||(i=z.camelToDashCase(e));let n=this.getStyleFromSheetOrLocal(i);return n||(n=getComputedStyle(this.element).getPropertyValue(i)),n??t}getComputedStyleProperty(e,t=null){let i=e;i.startsWith("--")||(i=z.camelToDashCase(e));let n=this.getStyleFromSheetOrLocal(i);return n||(n=getComputedStyle(this.element).getPropertyValue(i)),n??t}getComputedStyle(){return this.nodeType==D.Element?this.window.getComputedStyle(this.element):null}_stylesCache=null;_cacheClearTimer;getAllStyles(){let e=this._stylesCache;if(e)return e;if(this.nodeType!=D.Element)return[];let t=[...this._styles.entries()].map(i=>({name:i[0],value:i[1],important:this.isStyleImportant(i[0]),parent:null}));if(this.instanceServiceContainer.stylesheetService)try{let i=this.instanceServiceContainer.stylesheetService?.getAppliedRules(this);if(i)return[{selector:null,declarations:t,specificity:null,stylesheet:null},...i]}catch(i){console.warn("getAppliedRules",i)}return e=[{selector:null,declarations:t,specificity:null,stylesheet:null}],this._stylesCache=e,clearTimeout(this._cacheClearTimer),this._cacheClearTimer=setTimeout(()=>this._stylesCache=null,30),e}setAttribute(e,t){let i=new mn(this,e,t,this._attributes.get(e));this.instanceServiceContainer.undoService.execute(i)}removeAttribute(e){let t=new mn(this,e,null,this._attributes.get(e));this.instanceServiceContainer.undoService.execute(t)}setPropertyAndAttribute(e,t){let i=z.camelToDashCase(e),n=z.dashToCamelCase(e);if(this.isRootItem)throw"not allowed to set attribute on root item";let r=new gn(this,i,n,t,this.element[n]);this.instanceServiceContainer.undoService.execute(r)}removePropertyAndAttribute(e){let t=z.camelToDashCase(e),i=z.dashToCamelCase(e),n=new gn(this,t,i,null,this.element[i]);this.instanceServiceContainer.undoService.execute(n)}setProperty(e,t){if(this.isRootItem)throw"not allowed to set attribute on root item";let i=Pu(this.node,e),n=new br(this,e,t,i);this.instanceServiceContainer.undoService.execute(n)}_insertChildInternal(e,t){this._insertChildsInternal([e],t)}_insertChildsInternal(e,t){let i=this.document.createDocumentFragment(),n=null;for(let r of e)r.parent&&this.instanceServiceContainer.selectionService.primarySelection==r&&(r.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(r.parent,I.PrimarySelectionContainer),r.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(r.parent,I.PrimarySelectionContainerAndCanBeEntered)),r.parent&&r.parent._removeChildInternal(r),i.appendChild(r.view),r._parent=this,t==null||this._childArray.length==0||t>=this._childArray.length?this._childArray.push(r):(n=this._childArray[t],this._childArray.splice(t,0,r),t++);n==null?this.isRootItem?(this.usableContainer?.children[0]instanceof this.window.HTMLHtmlElement&&this.usableContainer.children[0].remove(),this.usableContainer.appendChild(i)):this.view instanceof(this.node.ownerDocument.defaultView??window).HTMLTemplateElement?this.view.content.appendChild(i):this.view.appendChild(i):this.isRootItem?(this.usableContainer?.children[0]instanceof this.window.HTMLHtmlElement&&this.usableContainer.children[0].remove(),this.usableContainer.insertBefore(i,n.element)):this.view instanceof(this.node.ownerDocument.defaultView??window).HTMLTemplateElement?this.view.content.insertBefore(i,n.element):this.view.insertBefore(i,n.element),this.refreshRenderedDesignItem()}_removeChildInternal(e){e.parent&&this.instanceServiceContainer.selectionService.primarySelection==e&&(e.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(e.parent,I.PrimarySelectionContainer),e.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(e.parent,I.PrimarySelectionAndCanBeEntered)),e.instanceServiceContainer.designerCanvas.extensionManager.removeExtensions([e],!0);let t=this._childArray.indexOf(e);t>-1&&(this._childArray.splice(t,1),e.element.remove(),e._parent=null),this.refreshRenderedDesignItem()}getPlacementService(e){return this.nodeType!=D.Element?null:(e??=getComputedStyle(this.element),this.serviceContainer.getLastServiceWhere("containerService",t=>t.serviceForContainer(this,e)))}static createDesignItemFromImageBlob(e,t,i){return new Promise(n=>{let r=new FileReader;r.onloadend=()=>{let o=document.createElement("img");o.src=r.result;let a=s.createDesignItemFromInstance(o,e,t);return n(a)},r.readAsDataURL(i)})}get hasForcedCss(){return this.cssForceHover||this.cssForceActive||this.cssForceVisited||this.cssForceFocus||this.cssForceFocusWithin||this.cssForceFocusVisible}get cssForceHover(){return this.element.hasAttribute(ot)}set cssForceHover(e){e?this.element.setAttribute(ot,""):this.element.removeAttribute(ot),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:ot,designItems:[this]}])}get cssForceActive(){return this.element.hasAttribute(Wt)}set cssForceActive(e){e?this.element.setAttribute(Wt,""):this.element.removeAttribute(Wt),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:Wt,designItems:[this]}])}get cssForceVisited(){return this.element.hasAttribute(jt)}set cssForceVisited(e){e?this.element.setAttribute(jt,""):this.element.removeAttribute(jt),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:jt,designItems:[this]}])}get cssForceFocus(){return this.element.hasAttribute(Yt)}set cssForceFocus(e){e?this.element.setAttribute(Yt,""):this.element.removeAttribute(Yt),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:Yt,designItems:[this]}])}get cssForceFocusWithin(){return this.element.hasAttribute(Ut)}set cssForceFocusWithin(e){e?this.element.setAttribute(Ut,""):this.element.removeAttribute(Ut),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:Ut,designItems:[this]}])}get cssForceFocusVisible(){return this.element.hasAttribute(Xt)}set cssForceFocusVisible(e){e?this.element.setAttribute(Xt,""):this.element.removeAttribute(Xt),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:Xt,designItems:[this]}])}}});function Jl(s){return s.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}var Iu=g(()=>{"use strict"});var wr,Sr=g(()=>{"use strict";wr=navigator.userAgent.toLowerCase().includes("firefox")});var Cr,ec=g(()=>{"use strict";oe();Iu();ue();Sr();Cr=class{async getElement(e,t,i){if(e.import){let l=e.import;l[0]==="."&&(l=(window.location.origin+window.location.pathname).split("/").slice(0,-1).join("/")+"/"+l),window.importShim?importShim(l).then(c=>{!customElements.get(e.tag)&&e.className&&c[e.className]&&customElements.define(e.tag,c[e.className])}):import(l).then(c=>{!customElements.get(e.tag)&&e.className&&c[e.className]&&customElements.define(e.tag,c[e.className])}),i.designContext.imports.indexOf(l)<=0&&i.designContext.imports.push(l)}let n="";if(e.defaultAttributes)for(let l in e.defaultAttributes){let c=e.defaultAttributes[l];try{typeof c=="object"?n+=" "+l+'="'+Jl(JSON.stringify(e.defaultAttributes[l]))+'"':n+=" "+l+'="'+Jl(e.defaultAttributes[l])+'"'}catch(h){console.warn(h)}}let r="<"+e.tag+n+"></"+e.tag+">",o=or(r,i.designerCanvas.rootDesignItem.document);if(o._inNodeProjectsDesignerView=!0,e.defaultWidth&&(o.style.width=e.defaultWidth),e.defaultHeight&&(o.style.height=e.defaultHeight),o.style.position="absolute",e.defaultStyles)for(let l in e.defaultStyles)o.style[l]=e.defaultStyles[l];if(e.defaultContent)if(typeof e.defaultContent=="string"){let l;i.designerCanvas.rootDesignItem.window.Document.parseHTMLUnsafe&&!wr?l=i.designerCanvas.rootDesignItem.window.Document.parseHTMLUnsafe(e.defaultContent):l=new i.designerCanvas.rootDesignItem.window.DOMParser().parseFromString(e.defaultContent,"text/html",{includeShadowRoots:!0}),o.append(...l.head.childNodes),o.append(...l.body.childNodes)}else o.appendChild(e.defaultContent);return O.createDesignItemFromInstance(o,t,i)}}});var ae,Te=g(()=>{"use strict";pt();ae=class{element;property;designItems;disableChangeNotification=!1;constructor(e){this.property=e}async _previewValueChanged(e){this.disableChangeNotification||this.designItems&&this.designItems.length&&await this.property.service.previewValue?.(this.designItems,this.property,e)}async _removePreviewValue(){this.disableChangeNotification||this.designItems&&this.designItems.length&&await this.property.service.removePreviewValue?.(this.designItems,this.property)}async _valueChanged(e){if(!this.disableChangeNotification&&this.designItems&&this.designItems.length){let t=this.designItems[0].openGroup("set property: "+this.property.name);e==null?this.property.service.clearValue(this.designItems,this.property,"value"):await this.property.service.setValue(this.designItems,this.property,e),t.commit()}}designItemsChanged(e){this.designItems=e}refreshValueWithoutNotification(e,t){e==W.none?this.element.classList.add("unset-value"):this.element.classList.remove("unset-value"),this.disableChangeNotification=!0;try{this.refreshValue(e,t)}catch(i){console.error(i)}this.disableChangeNotification=!1}}});var Er,tc=g(()=>{"use strict";Te();Er=class extends ae{constructor(e){super(e);let t=document.createElement("node-projects-color-input");e.readonly&&(t.readOnly=!0),t.onchange=async i=>{await this.property.service.removePreviewValue?.(this.designItems,this.property),this._valueChanged(t.value)},t.oninput=async i=>{await this.property.service.previewValue?.(this.designItems,this.property,t.value)},this.element=t}refreshValue(e,t){t?this.element.value=t:this.element.value="rgba(0, 0, 0, 1)"}}});var Pr,ic=g(()=>{"use strict";Te();Pr=class extends ae{constructor(e){super(e);let t=document.createElement("input");t.type="datetime-local",e.readonly&&(t.readOnly=!0),t.onchange=i=>this._valueChanged(t.value),this.element=t}refreshValue(e,t){t?this.element.value=t:this.element.value=null}}});import{html as Cg}from"@node-projects/base-custom-webcomponent";var Ir,nc=g(()=>{"use strict";Te();Ir=class s extends ae{static template=Cg`<div style="display:flex"><input id="input" type="text"> <button style="width:30px">...</button></div>`;_input;constructor(e){super(e);let t=s.template.content.cloneNode(!0);this._input=t.getElementById("input"),e.readonly&&(this._input.readOnly=!0),this._input.onchange=i=>this._valueChanged(this._input.value),this.element=t}refreshValue(e,t){this._input.value=t}}});var kr,rc=g(()=>{"use strict";Te();kr=class extends ae{constructor(e){super(e);let t=document.createElement("input");t.type="number",e.readonly&&(t.readOnly=!0),t.min=e.min,t.max=e.max,t.step=e.step,t.onchange=i=>this._valueChanged(t.value==""?null:t.valueAsNumber),this.element=t}refreshValue(e,t){this.element.value=t===void 0?null:t}}});var yn,sc=g(()=>{"use strict";Te();yn=class extends ae{elementSelect;elementInput;constructor(e){super(e);let t=document.createElement("div"),i=document.createElement("select");if(e.type=="enum")for(let r of e.enumValues){let o=document.createElement("option");o.value=r[1],o.text=r[0],i.appendChild(o)}else for(let r of e.values){let o=document.createElement("option");o.value=r,o.text=r,i.appendChild(o)}e.readonly&&(i.disabled=!0),i.onchange=r=>this._valueChanged(i.value);let n=document.createElement("input");n.style.display="none",n.onchange=r=>this._valueChanged(n.value),this.elementSelect=i,this.elementInput=n,t.appendChild(this.elementSelect),t.appendChild(this.elementInput),this.element=t}refreshValue(e,t){this.elementSelect.style.display="block",this.elementInput.style.display="none",this.elementSelect.value=t,this.elementSelect.value!=t&&t&&(this.elementInput.value=t,this.elementSelect.style.display="none",this.elementInput.style.display="block")}}});var Dr,oc=g(()=>{"use strict";Te();Dr=class s extends ae{static _nextListId=0;constructor(e){super(e);let t=document.createElement("input");if(t.type="text",e.readonly&&(t.readOnly=!0),e.values?.length){let i=`wcd-text-property-editor-values-${s._nextListId++}`,n=document.createElement("datalist");n.id=i;for(let r of e.values){let o=document.createElement("option");o.value=r,n.appendChild(o)}t.setAttribute("list",i),t.appendChild(n)}t.onchange=i=>this._valueChanged(t.value),t.onfocus=i=>{t.selectionStart=0,t.selectionEnd=t.value?.length},this.element=t}refreshValue(e,t){t==null?this.element.value="":this.element.value=t}}});var Ar,ac=g(()=>{"use strict";Te();Ar=class extends ae{constructor(e){super(e);let t=document.createElement("input");t.type="checkbox",e.readonly&&(t.readOnly=!0),t.onchange=i=>this._valueChanged(t.checked),this.element=t}refreshValue(e,t){this.element.checked=t}}});import{BaseCustomWebComponentConstructorAppend as Eg,css as Pg,html as Ig}from"@node-projects/base-custom-webcomponent";var vn,ku=g(()=>{"use strict";vn=class extends Eg{static style=Pg`div{font-size:10px;color:#fff}#property{color:#00aff0}#value{color:#d3d3d3}#value.value-set{color:wheat}.container{display:flex;flex-direction:row}::slotted(button){min-width:24px;height:24px;padding:1px;background:#fff;border:1px solid #d3d3d3}`;static template=Ig`<div><div id="header" style="display:none"><span id="property"></span><span id="vhd">: <span id="value"></span></span></div><div part="container" class="container"><slot id="slot"></slot></div></div>`;static properties={value:String,property:String,unsetValue:String,noValueInHeader:Boolean};constructor(){super(),this._restoreCachedInititalValues()}_value;get value(){return this._value}set value(e){this._value=e,this._updateValue()}property;unsetValue;noValueInHeader;_updateValue(){this.value?(this._getDomElement("value").innerText=this.value,this._getDomElement("value").classList.add("value-set")):this._getDomElement("value").classList.remove("value-set");let e=this._getDomElement("slot");for(let t of e.assignedElements())t.dataset.value==this.value?t.style.background="cornflowerblue":t.style.background=""}ready(){this._parseAttributesToProperties(),this.property&&(this._getDomElement("header").style.display="block"),this.noValueInHeader&&(this._getDomElement("vhd").style.display="none");let e=this._getDomElement("slot");e.onclick=t=>{let i=t.composedPath();for(let n of e.assignedElements())if(i.indexOf(n)>=0){let r=this._value;this.value=n.dataset.value;let o=new CustomEvent("value-changed",{detail:{newValue:this._value,oldValue:r}});this.dispatchEvent(o)}},this._getDomElement("property").innerText=this.property??"",this._getDomElement("value").innerText=this.unsetValue??"",this._updateValue()}};customElements.define("node-projects-image-button-list-selector",vn)});var Ni,li,lc,Du,E,he=g(()=>{"use strict";Ni="text/json/elementdefintion",li="text/json/bindingobject",lc="text/json/propertydrop",Du=new URL(import.meta.url),E=Du.origin+Du.pathname.split("/").slice(0,-1).join("/")+"/../assets/"});var Tr,cc=g(()=>{"use strict";Te();ku();Ee();he();Tr=class extends ae{constructor(e){super(e);let t=new vn;t.property=e.name,t.unsetValue=e.defaultValue;let i=z.camelToDashCase(e.name);if(e.type=="enum")for(let n of e.enumValues){let r=document.createElement("button");r.dataset.value=n[1];let o=document.createElement("img");o.title=n[1],o.src=E+"images/chromeDevtools/"+i+"-"+n[1]+"-icon.svg",r.appendChild(o),t.appendChild(r)}else for(let n of e.values){let r=document.createElement("button");r.dataset.value=n;let o=document.createElement("img");o.title=n,o.src=E+"images/chromeDevtools/"+i+"-"+n+"-icon.svg",r.appendChild(o),t.appendChild(r)}t.addEventListener("value-changed",n=>this._valueChanged(t.value)),this.element=t}refreshValue(e,t){this.element.value=t}}});import{BaseCustomWebComponentConstructorAppend as kg,css as Dg,html as Ag,TypedEvent as Mr}from"@node-projects/base-custom-webcomponent";var _n,Au=g(()=>{"use strict";_n=class extends kg{static style=Dg`:host{margin:4px;margin-left:auto;margin-right:auto}#container{display:grid;grid-template-columns:minmax(30px,40px) minmax(30px,60px) minmax(30px,40px);grid-template-rows:auto;grid-template-areas:" . top ." "left middle right" " . bottom .";column-gap:2px;row-gap:2px}input{width:20px;text-align:center;font-size:10px;height:20px;padding:0}#left{grid-area:left;justify-self:end}#top{grid-area:top;align-self:end;justify-self:center}#right{grid-area:right;justify-self:start}#bottom{grid-area:bottom;align-self:start;justify-self:center}#rect{grid-area:middle;border:1px solid #000;background:#d3d3d3}`;static template=Ag`<div id="container"><input id="left"> <input id="top"> <input id="right"> <input id="bottom"><div id="rect"></div></div>`;_leftInput;_topInput;_rightInput;_bottomInput;_valueLeft;get valueLeft(){return this._valueLeft}set valueLeft(e){let t=this._valueLeft;this._valueLeft=e,t!==e&&(this._updateValue(),this.valueLeftChanged.emit({newValue:e,oldValue:t}))}valueLeftChanged=new Mr;_valueTop;get valueTop(){return this._valueTop}set valueTop(e){let t=this._valueTop;this._valueTop=e,t!==e&&(this._updateValue(),this.valueTopChanged.emit({newValue:e,oldValue:t}))}valueTopChanged=new Mr;_valueRight;get valueRight(){return this._valueRight}set valueRight(e){let t=this._valueRight;this._valueRight=e,t!==e&&(this._updateValue(),this.valueRightChanged.emit({newValue:e,oldValue:t}))}valueRightChanged=new Mr;_valueBottom;get valueBottom(){return this._valueBottom}set valueBottom(e){let t=this._valueBottom;this._valueBottom=e,t!==e&&(this._updateValue(),this.valueBottomChanged.emit({newValue:e,oldValue:t}))}valueBottomChanged=new Mr;property;unsetValue;_updateValue(){this._leftInput.value=this.valueLeft,this._topInput.value=this.valueTop,this._rightInput.value=this.valueRight,this._bottomInput.value=this._valueBottom}ready(){this._parseAttributesToProperties(),this._leftInput=this._getDomElement("left"),this._topInput=this._getDomElement("top"),this._rightInput=this._getDomElement("right"),this._bottomInput=this._getDomElement("bottom"),this._leftInput.onkeyup=e=>{e.key==="Enter"&&(this._valueLeft=this._leftInput.value)},this._topInput.onkeyup=e=>{e.key==="Enter"&&(this._valueTop=this._topInput.value)},this._rightInput.onkeyup=e=>{e.key==="Enter"&&(this._valueRight=this._rightInput.value)},this._bottomInput.onkeyup=e=>{e.key==="Enter"&&(this._valueBottom=this._bottomInput.value)},this._leftInput.onblur=e=>this._valueLeft=this._leftInput.value,this._topInput.onblur=e=>this._valueTop=this._topInput.value,this._rightInput.onblur=e=>this._valueRight=this._rightInput.value,this._bottomInput.onblur=e=>this._valueBottom=this._bottomInput.value,this._updateValue()}};customElements.define("node-projects-thickness-editor",_n)});var Lr,hc=g(()=>{"use strict";Te();Au();Lr=class extends ae{constructor(e){super(e);let t=new _n;t.property=e.name,t.valueLeftChanged.on(i=>this._valueChanged(i.newValue)),this.element=t}refreshValue(e,t){this.element.valueLeft=t}}});var Vi,pc=g(()=>{"use strict";Te();Vi=class s extends ae{static fontList;constructor(e){super(e);let t=document.createElement("select");e.readonly&&(t.disabled=!0),this.element=t,s.addFontsToSelect(t),this.element.onchange=i=>this._valueChanged(this.element.value)}static addFontsToSelect(e){s.fontList?s.parseFontList(e):window.queryLocalFonts?window.queryLocalFonts().then(t=>{s.fontList=[...new Set(t.map(i=>i.family))],s.parseFontList(e)}):(s.fontList=["Verdana","Arial","Tahoma","Trebuchet MS","Times New Roman","Georgia","Garamond","Courier New","Brush Script MT"],s.parseFontList(e))}static parseFontList(e){for(let t of s.fontList){let i=document.createElement("option");i.value=t,i.text=t,e.appendChild(i)}}refreshValue(e,t){this.element.value=t}}});function mc(s,e=4){if(!Number.isFinite(s))return"0";let t=10**Math.max(0,e),i=Math.round(s*t)/t;return Object.is(i,-0)?"0":`${i}`}function ci(s,e){let t=s?.trim()??"";return t?t+(e??""):""}function Tu(s){let e=s?.trim()??"";if(!e)return{kind:"empty"};let t=e.match(/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(?:([a-z%]+))?$/i);if(!t)return{kind:"text",text:e};let i=Number(t[1]);return Number.isNaN(i)?{kind:"text",text:e}:{kind:"numeric",numberText:t[1],value:i,unit:t[2]?.toLowerCase()??""}}function Nr(s){return s?.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())??""}function Gg(s){return s?.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)??""}function Lu(s){return s.property.numericValueDecimalPlaces??(s.fromUnit==="%"||s.toUnit==="%"?2:4)}function Wg(s,e,t){return s==null?null:typeof s=="number"?ci(mc(s,t),e):s}function Vr(s){return s.designItems?.[0]?.element??null}function jg(s){return s?typeof HTMLElement<"u"&&s instanceof HTMLElement?!0:typeof s.getBoundingClientRect=="function":!1}function Ou(s){if(!s)return null;if(s.parentElement)return s.parentElement;if(s.assignedSlot)return s.assignedSlot;let t=s.getRootNode?.()?.host;if(jg(t))return t;let i=s.ownerDocument;return i?.body??i?.documentElement??null}function Nu(s){let e=parseFloat(s??"");return Number.isNaN(e)?null:e}function Yg(s){if(typeof getComputedStyle!="function")return null;let e=Vr(s);if(!e)return null;let t=getComputedStyle(e),i=s.property.propertyName??s.property.name;if(!i)return null;let n=typeof t.getPropertyValue=="function"?l=>t.getPropertyValue(l):l=>"";if(i.startsWith("--"))return n(i)?.trim()??null;let r=i.includes("-")?i:Gg(i),o=n(r)?.trim();if(o)return o;let a=Nr(i);return t[a]?.trim()??null}function Ug(s){let e=Tu(s.rawValue);if(e.kind==="numeric")return{...s,value:e.value,numberText:e.numberText,fromUnit:e.unit||s.fromUnit,rawValue:ci(e.numberText,e.unit)};let t=Yg(s),i=Tu(t);if(i.kind!=="numeric"){if(s.numericType!=="css-length")return null;let n=Vu(s);if(n==null)return null;let r=mc(n);return{...s,value:n,numberText:r,fromUnit:"px",rawValue:ci(r,"px")}}return{...s,value:i.value,numberText:i.numberText,fromUnit:i.unit,rawValue:ci(i.numberText,i.unit)}}function Xg(s){if(typeof window>"u")return null;switch(s){case"vw":return window.innerWidth/100;case"vh":return window.innerHeight/100;case"vmin":return Math.min(window.innerWidth,window.innerHeight)/100;case"vmax":return Math.max(window.innerWidth,window.innerHeight)/100;default:return null}}function xn(s,e){if(typeof getComputedStyle!="function")return null;let t=Vr(s);if(!t)return null;let i=e?Ou(t)??t:t;return Nu(getComputedStyle(i).fontSize)}function $g(){return typeof getComputedStyle!="function"||typeof document>"u"?null:Nu(getComputedStyle(document.documentElement).fontSize)}function Kg(s){if(typeof getComputedStyle!="function")return null;let e=Vr(s);if(!e)return null;let t=Nr(s.property.propertyName??s.property.name);if(t==="fontSize")return xn(s,!0);if(t==="lineHeight")return xn(s,!1);let n=(Ou(e)??e).getBoundingClientRect?.();return n?Fg.has(t)?n.height:(zg.has(t),n.width):null}function Vu(s){let e=Vr(s);if(!e)return null;let t=e.getBoundingClientRect?.();if(!t)return null;let i=Nr(s.property.propertyName??s.property.name);return Bg.has(i)?t.width:Hg.has(i)?t.height:null}function dc(s,e){let t=e?.toLowerCase()??"";if(!t)return null;let i=Lg.get(t);if(i!=null)return i;if(t==="%"){let n=Kg(s);return n==null?null:n/100}if(t==="em")return xn(s,Nr(s.property.propertyName??s.property.name)==="fontSize");if(t==="rem")return $g();if(t==="ex"){let n=xn(s,!1);return n==null?null:n/2}if(t==="ch"){let n=xn(s,!1);return n==null?null:n/2}return Xg(t)}function Ru(s){let e=Ug(s);if(!e)return ci(s.numberText,s.toUnit);let t=Lu(s),i;switch(e.numericType){case"css-length":i=Qg(e.value,e.fromUnit,e.toUnit,e);break;case"css-angle":i=Or(e.value,e.fromUnit,e.toUnit,Og);break;case"css-time":i=Or(e.value,e.fromUnit,e.toUnit,Ng);break;case"css-frequency":i=Or(e.value,e.fromUnit,e.toUnit,Vg);break;case"css-resolution":i=Or(e.value,e.fromUnit,e.toUnit,Rg);break;case"css-flex":i=e.value;break;case"css-scale":i=Zg(e.value,e.fromUnit,e.toUnit);break}return i==null?ci(e.numberText,e.toUnit):ci(mc(i,t),e.toUnit)}function Qg(s,e,t,i){let n=e?.toLowerCase()??"",r=t?.toLowerCase()??"";if(n!=="%"&&r==="%"){let l=Vu(i),c=dc(i,r);if(l!=null&&c!=null)return l/c}let o=dc(i,e),a=dc(i,t);return o==null||a==null?null:s*o/a}function Zg(s,e,t){let i=e?.toLowerCase()??"",n=t?.toLowerCase()??"";if(i===n)return s;let r=i==="%"?.01:i===""?1:null,o=n==="%"?.01:n===""?1:null;return r==null||o==null?null:s*r/o}function Or(s,e,t,i){let n=e?.toLowerCase()??"",r=t?.toLowerCase()??"";if(!n||!r||n===r)return s;if(!i)return null;let o=i.get(n),a=i.get(r);return o==null||a==null?null:s*o/a}function fc(s,e){return Mg.includes(s??"")?s:null}function zu(s,e){return fc(s,e)!=null}function qg(s){let e=Lu(s),t=Wg(s.property.numericValueConverter?.(s.value,s.fromUnit,s.toUnit,s.property,s.numericType,s.numberText,s.rawValue,s.designItems),s.toUnit,e);return t??Ru(s)}function Fu(s){return[...new Set([...s??[],...Tg].filter(Boolean))]}function Bu(s){let e=fc(s.type,s.propertyName??s.name);return s.values=Fu(s.values),e&&(s.units??=[...uc[e]],s.unitSteps??={...Mu[e]},s.numericValueConverter??=(t,i,n,r,o,a,l,c)=>Ru({property:r,numericType:o,designItems:c,value:t,numberText:a??`${t}`,rawValue:l??`${t}${i}`,fromUnit:i,toUnit:n})),s}function Hu(s){let e=fc(s.type,s.name);if(!e)return null;let t=Mu[e]??{};return{numericType:e,units:s.units?.length?s.units:uc[e],fixedValues:Fu(s.values),unitSteps:{...t,...s.unitSteps??{}},convertValue:i=>qg({...i,property:s,numericType:e})}}var Tg,uc,Mg,Mu,Lg,Og,Ng,Vg,Rg,zg,Fg,Bg,Hg,Rr=g(()=>{"use strict";Tg=["initial","inherit","unset"],uc={"css-length":["px","%","em","rem","vw","vh","vmin","vmax","pt","pc","in","cm","mm","q","ch","ex"],"css-angle":["deg","grad","rad","turn"],"css-time":["ms","s"],"css-frequency":["hz","khz"],"css-flex":["fr"],"css-resolution":["dpi","dpcm","dppx","x"],"css-scale":["","%"],"svg-length":["","%"]},Mg=Object.keys(uc),Mu={"css-length":{em:.1,rem:.1,in:.01,cm:.1,ch:.1,ex:.1},"css-angle":{rad:.01,turn:.1},"css-time":{ms:10,s:.1},"css-frequency":{khz:.1},"css-flex":{fr:.1},"css-resolution":{dppx:.1,x:.1},"css-scale":{"":.1,"%":10},"svg-length":{"":1,"%":10}},Lg=new Map([["px",1],["in",96],["cm",96/2.54],["mm",96/25.4],["q",96/101.6],["pt",96/72],["pc",16]]),Og=new Map([["deg",1],["grad",.9],["rad",180/Math.PI],["turn",360]]),Ng=new Map([["ms",1],["s",1e3]]),Vg=new Map([["hz",1],["khz",1e3]]),Rg=new Map([["dpi",1],["dpcm",2.54],["dppx",96],["x",96]]),zg=new Set(["width","minWidth","maxWidth","inlineSize","minInlineSize","maxInlineSize","left","right","columnGap","gap","flexBasis","perspective"]),Fg=new Set(["height","minHeight","maxHeight","top","bottom","blockSize","minBlockSize","maxBlockSize","rowGap"]),Bg=new Set(["width","minWidth","maxWidth","inlineSize","minInlineSize","maxInlineSize"]),Hg=new Set(["height","minHeight","maxHeight","blockSize","minBlockSize","maxBlockSize"])});var zr,gc=g(()=>{"use strict";Ol();Te();Rr();zr=class extends ae{constructor(e){super(e);let t=Hu(e),i=new hn;i.units=t?.units??e.units??[],i.fixedValues=t?.fixedValues??e.values,i.unitValueConverter=n=>t?.convertValue({...n,designItems:this.designItems}),i.unitSteps=t?.unitSteps??e.unitSteps??{},i.step=e.step,i.min=e.min,i.max=e.max,i.readOnly=e.readonly,i.valueChanged.on(async n=>this._valueChanged(n.newValue===""?null:n.newValue)),i.valuePreviewChanged.on(async n=>this._previewValueChanged(n.newValue===""?null:n.newValue)),i.valuePreviewFinished.on(async n=>{await this._removePreviewValue(),!n.wasCancelled&&await this._valueChanged(n.newValue===""?null:n.newValue)}),this.element=i}designItemsChanged(e){super.designItemsChanged(e)}refreshValue(e,t){this.element.value=t==null?"":String(t)}}});var Fr,yc=g(()=>{"use strict";wt();pt();Fr=class{element;property;designItems;_innerEditor;_importantButton;_value;_disableChangeNotification=!1;constructor(e,t){this.property=e;let i={...e,service:this._createServiceProxy(e.service)};this._innerEditor=t(i),this._importantButton=document.createElement("button"),this._importantButton.type="button",this._importantButton.textContent="!",this._importantButton.title="!important",this._importantButton.disabled=e.readonly===!0,this._importantButton.style.width="18px",this._importantButton.style.height="18px",this._importantButton.style.margin="-2px 0 0 -2px",this._importantButton.style.padding="0",this._importantButton.style.border="1px solid var(--input-border-color, #596c7a)",this._importantButton.style.background="transparent",this._importantButton.style.color="lightslategray",this._importantButton.style.fontWeight="bold",this._importantButton.style.lineHeight="16px",this._importantButton.style.cursor="pointer",this._importantButton.onclick=async()=>{this._disableChangeNotification||!this.designItems?.length||this._value==null||this._value===""||(this._setImportant(!this._isImportant()),await this.property.service.setValue(this.designItems,this.property,this._appendImportant(this._value)),this.designItems[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(this.designItems))},this.element=document.createElement("div"),this.element.style.display="grid",this.element.style.gridTemplateColumns="minmax(0, 1fr) 18px",this.element.style.alignItems="center",this.element.style.gap="2px",this.element.appendChild(this._innerEditor.element),this.element.appendChild(this._importantButton)}_createServiceProxy(e){let t=Object.create(e);return t.setValue=async(i,n,r)=>e.setValue(i,this.property,this._appendImportant(r)),t.previewValue=async(i,n,r)=>e.previewValue?.(i,this.property,this._appendImportant(r)),t.removePreviewValue=async(i,n)=>e.removePreviewValue?.(i,this.property),t.clearValue=(i,n,r)=>e.clearValue(i,this.property,r),t}_appendImportant(e){return typeof e!="string"?e:(this._value=e,je(e,this._isImportant()))}designItemsChanged(e){this.designItems=e,this._innerEditor.designItemsChanged(e)}_refreshImportant(e,t){let i=typeof t=="string"?Bt(t):{value:t,important:!1};this._value=i.value,this._setImportant(i.important),this._importantButton.disabled=this.property.readonly===!0||e==W.none||i.value==null||i.value==="",this._importantButton.style.cursor=this._importantButton.disabled?"default":"pointer"}_isImportant(){return this._importantButton.dataset.checked==="true"}_setImportant(e){this._importantButton.dataset.checked=e?"true":"false",this._importantButton.style.background=e?"orange":"transparent",this._importantButton.style.color=e?"black":"lightslategray"}refreshValue(e,t){this._refreshImportant(e,t),this._innerEditor.refreshValue(e,this._value)}refreshValueWithoutNotification(e,t){e==W.none?this.element.classList.add("unset-value"):this.element.classList.remove("unset-value"),this._disableChangeNotification=!0;try{this._refreshImportant(e,t),this._innerEditor.refreshValueWithoutNotification(e,this._value)}catch(i){console.error(i)}this._disableChangeNotification=!1}}});var Br,vc=g(()=>{"use strict";tc();ic();nc();rc();sc();oc();ac();cc();hc();pc();gc();Rr();ye();yc();Br=class{getEditorForProperty(e){return e.propertyType===_.cssValue?new Fr(e,t=>this._getEditorForProperty(t)):this._getEditorForProperty(e)}_getEditorForProperty(e){if(e.createEditor)return e.createEditor(e);if(zu(e.type,e.name))return new zr(e);switch(e.type){case"json":return new Ir(e);case"css-color":case"color":return new Er(e);case"font":return new Vi(e);case"date":return new Pr(e);case"number":return new kr(e);case"list":return new yn(e);case"enum":return new yn(e);case"boolean":return new Ar(e);case"img-list":return new Tr(e);case"thickness":return new Lr(e);case"string":default:return new Dr(e)}}}});import{BaseCustomWebComponentLazyAppend as Jg,BaseCustomWebComponentConstructorAppend as ey,BaseCustomWebComponentNoAttachedTemplate as ty,BaseCustomWebComponentConstructorAppendLazyReady as iy}from"@node-projects/base-custom-webcomponent";var Hr,_c=g(()=>{"use strict";Di();Hr=class extends dt{name="baseCustomWebComponent";isHandledElement(e){return e.element instanceof Jg||e.element instanceof iy||e.element instanceof ey||e.element instanceof ty}_notifyChangedProperty(e,t,i){e.element._parseAttributesToProperties()}}});function Gr(s,e,t){if(e==null||e==""){s.style.transform=t;return}let i=new DOMMatrix(e),r=new DOMMatrix(t).multiply(i);s.style.transform=r.toString()}function Ri(s){return new DOMPoint(s.m41,s.m42,0,0)}var xc=g(()=>{"use strict"});var b,Ye=g(()=>{"use strict";(function(s){s.Move="M",s.Line="L",s.CubicBezier="C",s.QuadraticBezier="Q",s.Arc="A",s.Close="Z",s.HorizontalLine="H",s.VerticalLine="V",s.SmoothCubic="S",s.SmoothQuadratic="T"})(b||(b={}))});function Ct(s,e,t=45){let i=Gu(s,e),o=(Math.round(i/t)*t+360)%360*Math.PI/180,a=e.x-s.x,l=e.y-s.y,c=Math.sqrt(a*a+l*l),h=s.x+Math.cos(o)*c,p=s.y-Math.sin(o)*c;return{x:h,y:p}}function zi(s,e){let t,i=Math.sqrt(Math.pow(e.x-s.x,2)+Math.pow(e.y-s.y,2)),n=Gu(s,e),r=n-(Math.floor(n/90)*90+45);return t=i*Math.cos(r*(Math.PI/180))/Math.sqrt(2),t}function Gu(s,e){let t=-1*Math.atan2(e.y-s.y,e.x-s.x)*180/Math.PI;return t<0&&(t+=360),t}function Wu(s,e,t){let i=e.x-s.x,n=e.y-s.y,r=Math.sqrt(i*i+n*n);if(r===0)return[];if(t<=0)return[e];let o=Math.max(1,Math.ceil(r/t)),a=[];for(let l=1;l<=o;l++)a.push({x:s.x+i*l/o,y:s.y+n*l/o});return a}function ju(s,e,t){let i="",n=s.getPathData({normalize:!0});for(let r of n)switch(r.type){case"M":case"m":case"L":case"l":case"T":case"t":i+=r.type+" "+(r.values[0]-e)+" "+(r.values[1]-t)+" ";break;case"Z":case"z":i+=r.type+" ";break;case"C":case"c":i+=r.type+" "+(r.values[0]-e)+" "+(r.values[1]-t)+" "+(r.values[2]-e)+" "+(r.values[3]-t)+" "+(r.values[4]-e)+" "+(r.values[5]-t)+" ";break;case"S":case"s":case"Q":case"q":i+=r.type+" "+(r.values[0]-e)+" "+(r.values[1]-t)+" "+(r.values[2]-e)+" "+(r.values[3]-t)+" ";break;case"A":case"a":i+=r.type+" "+(r.values[0]-e)+" "+(r.values[1]-t)+" "+r.values[2]+" "+r.values[3]+" "+r.values[4]+" "+(r.values[5]-e)+" "+(r.values[6]-t)+" ";break}return i}function hi(s){let e="";for(let i of s){e+=i.type+" ";for(var t=0;t<i.values.length;t++)i.values[t]!=null&&!isNaN(i.values[t])&&(e+=i.values[t]+" ")}return e}var Ue=g(()=>{"use strict";(!SVGPathElement.prototype.getPathData||!SVGPathElement.prototype.setPathData)&&(function(){var s={Z:"Z",M:"M",L:"L",C:"C",Q:"Q",A:"A",H:"H",V:"V",S:"S",T:"T",z:"Z",m:"m",l:"l",c:"c",q:"q",a:"a",h:"h",v:"v",s:"s",t:"t"},e=function(o){this._string=o,this._currentIndex=0,this._endIndex=this._string.length,this._prevCommand=null,this._skipOptionalSpaces()};e.prototype={parseSegment:function(){var o=this._string[this._currentIndex],a=s[o]?s[o]:null;if(a===null){if(this._prevCommand===null||((o==="+"||o==="-"||o==="."||o>="0"&&o<="9")&&this._prevCommand!=="Z"?this._prevCommand==="M"?a="L":this._prevCommand==="m"?a="l":a=this._prevCommand:a=null,a===null))return null}else this._currentIndex+=1;this._prevCommand=a;var l=null,c=a.toUpperCase();return c==="H"||c==="V"?l=[this._parseNumber()]:c==="M"||c==="L"||c==="T"?l=[this._parseNumber(),this._parseNumber()]:c==="S"||c==="Q"?l=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber()]:c==="C"?l=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber()]:c==="A"?l=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseArcFlag(),this._parseArcFlag(),this._parseNumber(),this._parseNumber()]:c==="Z"&&(this._skipOptionalSpaces(),l=[]),l===null||l.indexOf(null)>=0?null:{type:a,values:l}},hasMoreData:function(){return this._currentIndex<this._endIndex},peekSegmentType:function(){var o=this._string[this._currentIndex];return s[o]?s[o]:null},initialCommandIsMoveTo:function(){if(!this.hasMoreData())return!0;var o=this.peekSegmentType();return o==="M"||o==="m"},_isCurrentSpace:function(){var o=this._string[this._currentIndex];return o<=" "&&(o===" "||o===`
|
|
5
|
-
`||o===" "||o==="\r"||o==="\f")},_skipOptionalSpaces:function(){for(;this._currentIndex<this._endIndex&&this._isCurrentSpace();)this._currentIndex+=1;return this._currentIndex<this._endIndex},_skipOptionalSpacesOrDelimiter:function(){return this._currentIndex<this._endIndex&&!this._isCurrentSpace()&&this._string[this._currentIndex]!==","?!1:(this._skipOptionalSpaces()&&this._currentIndex<this._endIndex&&this._string[this._currentIndex]===","&&(this._currentIndex+=1,this._skipOptionalSpaces()),this._currentIndex<this._endIndex)},_parseNumber:function(){var o=0,a=0,l=1,c=0,h=1,p=1,d=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex<this._endIndex&&this._string[this._currentIndex]==="+"?this._currentIndex+=1:this._currentIndex<this._endIndex&&this._string[this._currentIndex]==="-"&&(this._currentIndex+=1,h=-1),this._currentIndex===this._endIndex||(this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")&&this._string[this._currentIndex]!==".")return null;for(var u=this._currentIndex;this._currentIndex<this._endIndex&&this._string[this._currentIndex]>="0"&&this._string[this._currentIndex]<="9";)this._currentIndex+=1;if(this._currentIndex!==u)for(var m=this._currentIndex-1,f=1;m>=u;)a+=f*(this._string[m]-"0"),m-=1,f*=10;if(this._currentIndex<this._endIndex&&this._string[this._currentIndex]==="."){if(this._currentIndex+=1,this._currentIndex>=this._endIndex||this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")return null;for(;this._currentIndex<this._endIndex&&this._string[this._currentIndex]>="0"&&this._string[this._currentIndex]<="9";)l*=10,c+=(this._string.charAt(this._currentIndex)-"0")/l,this._currentIndex+=1}if(this._currentIndex!==d&&this._currentIndex+1<this._endIndex&&(this._string[this._currentIndex]==="e"||this._string[this._currentIndex]==="E")&&this._string[this._currentIndex+1]!=="x"&&this._string[this._currentIndex+1]!=="m"){if(this._currentIndex+=1,this._string[this._currentIndex]==="+"?this._currentIndex+=1:this._string[this._currentIndex]==="-"&&(this._currentIndex+=1,p=-1),this._currentIndex>=this._endIndex||this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")return null;for(;this._currentIndex<this._endIndex&&this._string[this._currentIndex]>="0"&&this._string[this._currentIndex]<="9";)o*=10,o+=this._string[this._currentIndex]-"0",this._currentIndex+=1}var v=a+c;return v*=h,o&&(v*=Math.pow(10,p*o)),d===this._currentIndex?null:(this._skipOptionalSpacesOrDelimiter(),v)},_parseArcFlag:function(){if(this._currentIndex>=this._endIndex)return null;var o=null,a=this._string[this._currentIndex];if(this._currentIndex+=1,a==="0")o=0;else if(a==="1")o=1;else return null;return this._skipOptionalSpacesOrDelimiter(),o}};var t=function(o){if(!o||o.length===0)return[];var a=new e(o),l=[];if(a.initialCommandIsMoveTo())for(;a.hasMoreData();){var c=a.parseSegment();if(c===null)break;l.push(c)}return l},i=function(o,a,l,c,h,p,d,u,m,f){var v=function(Ge){return Math.PI*Ge/180},y=function(Ge,qe,Je){var Ei=Ge*Math.cos(Je)-qe*Math.sin(Je),yl=Ge*Math.sin(Je)+qe*Math.cos(Je);return{x:Ei,y:yl}},x=v(d),w=[],C,S,L,k;if(f)C=f[0],S=f[1],L=f[2],k=f[3];else{var j=y(o,a,-x);o=j.x,a=j.y;var H=y(l,c,-x);l=H.x,c=H.y;var N=(o-l)/2,Q=(a-c)/2,B=N*N/(h*h)+Q*Q/(p*p);B>1&&(B=Math.sqrt(B),h=B*h,p=B*p);var ce;u===m?ce=-1:ce=1;var T=h*h,re=p*p,ge=T*re-T*Q*Q-re*N*N,ee=T*Q*Q+re*N*N,$=ce*Math.sqrt(Math.abs(ge/ee));L=$*h*Q/p+(o+l)/2,k=$*-p*N/h+(a+c)/2,C=Math.asin(parseFloat(((a-k)/p).toFixed(9))),S=Math.asin(parseFloat(((c-k)/p).toFixed(9))),o<L&&(C=Math.PI-C),l<L&&(S=Math.PI-S),C<0&&(C=Math.PI*2+C),S<0&&(S=Math.PI*2+S),m&&C>S&&(C=C-Math.PI*2),!m&&S>C&&(S=S-Math.PI*2)}var se=S-C;if(Math.abs(se)>Math.PI*120/180){var Qe=S,Ae=l,Ot=c;m&&S>C?S=C+Math.PI*120/180*1:S=C+Math.PI*120/180*-1,l=L+h*Math.cos(S),c=k+p*Math.sin(S),w=i(l,c,Ae,Ot,h,p,d,0,m,[S,Qe,L,k])}se=S-C;var Nt=Math.cos(C),fl=Math.sin(C),gl=Math.cos(S),ln=Math.sin(S),Vt=Math.tan(se/4),xt=4/3*h*Vt,wi=4/3*p*Vt,ti=[o,a],de=[o+xt*fl,a-wi*Nt],ht=[l+xt*ln,c-wi*gl],Si=[l,c];if(de[0]=2*ti[0]-de[0],de[1]=2*ti[1]-de[1],f)return[de,ht,Si].concat(w);w=[de,ht,Si].concat(w);for(var Ci=[],Ze=0;Ze<w.length;Ze+=3){let Ge=y(w[Ze][0],w[Ze][1],x),qe=y(w[Ze+1][0],w[Ze+1][1],x),Je=y(w[Ze+2][0],w[Ze+2][1],x);Ci.push([Ge.x,Ge.y,qe.x,qe.y,Je.x,Je.y])}return Ci},n=function(o){var a=[],l=null,c=null,h=null,p=null;return o.forEach(function(d){var u=d.type;if(u==="M"){var m=d.values[0],f=d.values[1];a.push({type:"M",values:[m,f]}),h=m,p=f,l=m,c=f}else if(u==="m"){var m=l+d.values[0],f=c+d.values[1];a.push({type:"M",values:[m,f]}),h=m,p=f,l=m,c=f}else if(u==="L"){var m=d.values[0],f=d.values[1];a.push({type:"L",values:[m,f]}),l=m,c=f}else if(u==="l"){var m=l+d.values[0],f=c+d.values[1];a.push({type:"L",values:[m,f]}),l=m,c=f}else if(u==="C"){var v=d.values[0],y=d.values[1],x=d.values[2],w=d.values[3],m=d.values[4],f=d.values[5];a.push({type:"C",values:[v,y,x,w,m,f]}),l=m,c=f}else if(u==="c"){var v=l+d.values[0],y=c+d.values[1],x=l+d.values[2],w=c+d.values[3],m=l+d.values[4],f=c+d.values[5];a.push({type:"C",values:[v,y,x,w,m,f]}),l=m,c=f}else if(u==="Q"){var v=d.values[0],y=d.values[1],m=d.values[2],f=d.values[3];a.push({type:"Q",values:[v,y,m,f]}),l=m,c=f}else if(u==="q"){var v=l+d.values[0],y=c+d.values[1],m=l+d.values[2],f=c+d.values[3];a.push({type:"Q",values:[v,y,m,f]}),l=m,c=f}else if(u==="A"){var m=d.values[5],f=d.values[6];a.push({type:"A",values:[d.values[0],d.values[1],d.values[2],d.values[3],d.values[4],m,f]}),l=m,c=f}else if(u==="a"){var m=l+d.values[5],f=c+d.values[6];a.push({type:"A",values:[d.values[0],d.values[1],d.values[2],d.values[3],d.values[4],m,f]}),l=m,c=f}else if(u==="H"){var m=d.values[0];a.push({type:"H",values:[m]}),l=m}else if(u==="h"){var m=l+d.values[0];a.push({type:"H",values:[m]}),l=m}else if(u==="V"){var f=d.values[0];a.push({type:"V",values:[f]}),c=f}else if(u==="v"){var f=c+d.values[0];a.push({type:"V",values:[f]}),c=f}else if(u==="S"){var x=d.values[0],w=d.values[1],m=d.values[2],f=d.values[3];a.push({type:"S",values:[x,w,m,f]}),l=m,c=f}else if(u==="s"){var x=l+d.values[0],w=c+d.values[1],m=l+d.values[2],f=c+d.values[3];a.push({type:"S",values:[x,w,m,f]}),l=m,c=f}else if(u==="T"){var m=d.values[0],f=d.values[1];a.push({type:"T",values:[m,f]}),l=m,c=f}else if(u==="t"){var m=l+d.values[0],f=c+d.values[1];a.push({type:"T",values:[m,f]}),l=m,c=f}else(u==="Z"||u==="z")&&(a.push({type:"Z",values:[]}),l=h,c=p)}),a},r=function(o){var a=[],l=null,c=null,h=null,p=null,d=null,u=null,m=null;return o.forEach(function(f){if(f.type==="M"){var v=f.values[0],y=f.values[1];a.push({type:"M",values:[v,y]}),u=v,m=y,p=v,d=y}else if(f.type==="C"){var x=f.values[0],w=f.values[1],C=f.values[2],S=f.values[3],v=f.values[4],y=f.values[5];a.push({type:"C",values:[x,w,C,S,v,y]}),c=C,h=S,p=v,d=y}else if(f.type==="L"){var v=f.values[0],y=f.values[1];a.push({type:"L",values:[v,y]}),p=v,d=y}else if(f.type==="H"){var v=f.values[0];a.push({type:"L",values:[v,d]}),p=v}else if(f.type==="V"){var y=f.values[0];a.push({type:"L",values:[p,y]}),d=y}else if(f.type==="S"){var C=f.values[0],S=f.values[1],v=f.values[2],y=f.values[3],L,k;l==="C"||l==="S"?(L=p+(p-c),k=d+(d-h)):(L=p,k=d),a.push({type:"C",values:[L,k,C,S,v,y]}),c=C,h=S,p=v,d=y}else if(f.type==="T"){var v=f.values[0],y=f.values[1],x,w;l==="Q"||l==="T"?(x=p+(p-c),w=d+(d-h)):(x=p,w=d);var L=p+2*(x-p)/3,k=d+2*(w-d)/3,j=v+2*(x-v)/3,H=y+2*(w-y)/3;a.push({type:"C",values:[L,k,j,H,v,y]}),c=x,h=w,p=v,d=y}else if(f.type==="Q"){var x=f.values[0],w=f.values[1],v=f.values[2],y=f.values[3],L=p+2*(x-p)/3,k=d+2*(w-d)/3,j=v+2*(x-v)/3,H=y+2*(w-y)/3;a.push({type:"C",values:[L,k,j,H,v,y]}),c=x,h=w,p=v,d=y}else if(f.type==="A"){let T=Math.abs(f.values[0]),re=Math.abs(f.values[1]);var N=f.values[2],Q=f.values[3],B=f.values[4],v=f.values[5],y=f.values[6];if(T===0||re===0)a.push({type:"C",values:[p,d,v,y,v,y]}),p=v,d=y;else if(p!==v||d!==y){var ce=i(p,d,v,y,T,re,N,Q,B);ce.forEach(function($){a.push({type:"C",values:$})}),p=v,d=y}}else f.type==="Z"&&(a.push(f),p=u,d=m);l=f.type}),a};SVGPathElement.prototype.getPathData=function(o){if(o&&o.normalize){let a;return a=t(this.getAttribute("d")||""),r(n(a))}else return t(this.getAttribute("d")||"")},SVGPathElement.prototype.setPathData=function(o){if(o.length===0)this.removeAttribute("d");else{let a="";for(let l=0,c=o.length;l<c;l+=1){let h=o[l];l>0&&(a+=" "),a+=h.type,h.values&&h.values.length>0&&(a+=" "+h.values.join(" "))}this.setAttribute("d",a)}},SVGRectElement.prototype.getPathData=function(o){var a=this.x.baseVal.value,l=this.y.baseVal.value,c=this.width.baseVal.value,h=this.height.baseVal.value,p=this.hasAttribute("rx")?this.rx.baseVal.value:this.ry.baseVal.value,d=this.hasAttribute("ry")?this.ry.baseVal.value:this.rx.baseVal.value;p>c/2&&(p=c/2),d>h/2&&(d=h/2);var u=[{type:"M",values:[a+p,l]},{type:"H",values:[a+c-p]},{type:"A",values:[p,d,0,0,1,a+c,l+d]},{type:"V",values:[l+h-d]},{type:"A",values:[p,d,0,0,1,a+c-p,l+h]},{type:"H",values:[a+p]},{type:"A",values:[p,d,0,0,1,a,l+h-d]},{type:"V",values:[l+d]},{type:"A",values:[p,d,0,0,1,a+p,l]},{type:"Z",values:[]}];return u=u.filter(function(m){return!(m.type==="A"&&(m.values[0]===0||m.values[1]===0))}),o&&o.normalize===!0&&(u=r(u)),u},SVGCircleElement.prototype.getPathData=function(o){var a=this.cx.baseVal.value,l=this.cy.baseVal.value,c=this.r.baseVal.value,h=[{type:"M",values:[a+c,l]},{type:"A",values:[c,c,0,0,1,a,l+c]},{type:"A",values:[c,c,0,0,1,a-c,l]},{type:"A",values:[c,c,0,0,1,a,l-c]},{type:"A",values:[c,c,0,0,1,a+c,l]},{type:"Z",values:[]}];return o&&o.normalize===!0&&(h=r(h)),h},SVGEllipseElement.prototype.getPathData=function(o){var a=this.cx.baseVal.value,l=this.cy.baseVal.value,c=this.rx.baseVal.value,h=this.ry.baseVal.value,p=[{type:"M",values:[a+c,l]},{type:"A",values:[c,h,0,0,1,a,l+h]},{type:"A",values:[c,h,0,0,1,a-c,l]},{type:"A",values:[c,h,0,0,1,a,l-h]},{type:"A",values:[c,h,0,0,1,a+c,l]},{type:"Z",values:[]}];return o&&o.normalize===!0&&(p=r(p)),p},SVGLineElement.prototype.getPathData=function(){return[{type:"M",values:[this.x1.baseVal.value,this.y1.baseVal.value]},{type:"L",values:[this.x2.baseVal.value,this.y2.baseVal.value]}]},SVGPolylineElement.prototype.getPathData=function(){for(var o=[],a=0;a<this.points.numberOfItems;a+=1){var l=this.points.getItem(a);o.push({type:a===0?"M":"L",values:[l.x,l.y]})}return o},SVGPolygonElement.prototype.getPathData=function(){for(var o=[],a=0;a<this.points.numberOfItems;a+=1){var l=this.points.getItem(a);o.push({type:a===0?"M":"L",values:[l.x,l.y]})}return o.push({type:"Z",values:[]}),o}})()});var bc={};Zd(bc,{SvgPathGeometryReader:()=>bn});var bn,wn=g(()=>{"use strict";Ye();Ue();Ue();bn=class{read(e){let i=e.getPathData({normalize:!1}),n=[],r={x:0,y:0},o={x:0,y:0},a=!1;for(let l of i){let c=l.type===l.type.toLowerCase();switch(l.type.toUpperCase()){case"M":{let p=c?r.x+l.values[0]:l.values[0],d=c?r.y+l.values[1]:l.values[1];n.push({type:b.Move,relative:c,point:{x:p,y:d}}),r={x:p,y:d},o={x:p,y:d};break}case"L":{let p=c?r.x+l.values[0]:l.values[0],d=c?r.y+l.values[1]:l.values[1];n.push({type:b.Line,relative:c,point:{x:p,y:d}}),r={x:p,y:d};break}case"H":{let p=c?r.x+l.values[0]:l.values[0];n.push({type:b.HorizontalLine,relative:c,point:{x:p,y:r.y}}),r={x:p,y:r.y};break}case"V":{let p=c?r.y+l.values[0]:l.values[0];n.push({type:b.VerticalLine,relative:c,point:{x:r.x,y:p}}),r={x:r.x,y:p};break}case"C":{let p=c?r.x+l.values[0]:l.values[0],d=c?r.y+l.values[1]:l.values[1],u=c?r.x+l.values[2]:l.values[2],m=c?r.y+l.values[3]:l.values[3],f=c?r.x+l.values[4]:l.values[4],v=c?r.y+l.values[5]:l.values[5];n.push({type:b.CubicBezier,relative:c,point:{x:f,y:v},cp1:{x:p,y:d},cp2:{x:u,y:m}}),r={x:f,y:v};break}case"S":{let p=c?r.x+l.values[0]:l.values[0],d=c?r.y+l.values[1]:l.values[1],u=c?r.x+l.values[2]:l.values[2],m=c?r.y+l.values[3]:l.values[3];n.push({type:b.SmoothCubic,relative:c,point:{x:u,y:m},cp2:{x:p,y:d}}),r={x:u,y:m};break}case"Q":{let p=c?r.x+l.values[0]:l.values[0],d=c?r.y+l.values[1]:l.values[1],u=c?r.x+l.values[2]:l.values[2],m=c?r.y+l.values[3]:l.values[3];n.push({type:b.QuadraticBezier,relative:c,point:{x:u,y:m},cp1:{x:p,y:d}}),r={x:u,y:m};break}case"T":{let p=c?r.x+l.values[0]:l.values[0],d=c?r.y+l.values[1]:l.values[1];n.push({type:b.SmoothQuadratic,relative:c,point:{x:p,y:d}}),r={x:p,y:d};break}case"A":{let p=c?r.x+l.values[5]:l.values[5],d=c?r.y+l.values[6]:l.values[6];n.push({type:b.Arc,relative:c,point:{x:p,y:d},arc:{rx:l.values[0],ry:l.values[1],rotation:l.values[2],largeArc:l.values[3]===1,sweep:l.values[4]===1}}),r={x:p,y:d};break}case"Z":{a=!0,n.push({type:b.Close,relative:c,point:{...o}}),r={...o};break}}}return{segments:n,closed:a}}serialize(e){let t=[],i={x:0,y:0};for(let n of e.segments){let r=n.relative;switch(n.type){case b.Move:{let o=r?n.point.x-i.x:n.point.x,a=r?n.point.y-i.y:n.point.y;t.push({type:r?"m":"M",values:[o,a]}),i={...n.point};break}case b.Line:{let o=r?n.point.x-i.x:n.point.x,a=r?n.point.y-i.y:n.point.y;t.push({type:r?"l":"L",values:[o,a]}),i={...n.point};break}case b.HorizontalLine:{let o=r?n.point.x-i.x:n.point.x;t.push({type:r?"h":"H",values:[o]}),i={...n.point};break}case b.VerticalLine:{let o=r?n.point.y-i.y:n.point.y;t.push({type:r?"v":"V",values:[o]}),i={...n.point};break}case b.CubicBezier:{let o=r?n.cp1.x-i.x:n.cp1.x,a=r?n.cp1.y-i.y:n.cp1.y,l=r?n.cp2.x-i.x:n.cp2.x,c=r?n.cp2.y-i.y:n.cp2.y,h=r?n.point.x-i.x:n.point.x,p=r?n.point.y-i.y:n.point.y;t.push({type:r?"c":"C",values:[o,a,l,c,h,p]}),i={...n.point};break}case b.SmoothCubic:{let o=r?n.cp2.x-i.x:n.cp2.x,a=r?n.cp2.y-i.y:n.cp2.y,l=r?n.point.x-i.x:n.point.x,c=r?n.point.y-i.y:n.point.y;t.push({type:r?"s":"S",values:[o,a,l,c]}),i={...n.point};break}case b.QuadraticBezier:{let o=r?n.cp1.x-i.x:n.cp1.x,a=r?n.cp1.y-i.y:n.cp1.y,l=r?n.point.x-i.x:n.point.x,c=r?n.point.y-i.y:n.point.y;t.push({type:r?"q":"Q",values:[o,a,l,c]}),i={...n.point};break}case b.SmoothQuadratic:{let o=r?n.point.x-i.x:n.point.x,a=r?n.point.y-i.y:n.point.y;t.push({type:r?"t":"T",values:[o,a]}),i={...n.point};break}case b.Arc:{let o=r?n.point.x-i.x:n.point.x,a=r?n.point.y-i.y:n.point.y;t.push({type:r?"a":"A",values:[n.arc.rx,n.arc.ry,n.arc.rotation,n.arc.largeArc?1:0,n.arc.sweep?1:0,o,a]}),i={...n.point};break}case b.Close:{t.push({type:r?"z":"Z",values:[]});break}}}return[{attribute:"d",value:hi(t)}]}}});function ry(s,e){let t=s.style.getPropertyValue(e).trim();return t?{target:"style",unit:sy(t)}:{target:"attribute"}}function sy(s){let e=s.trim().match(/^-?(?:\d+|\d*\.\d+)([a-z%]*)$/i);return e&&e[1]?e[1]:"px"}function Wr(s,e,t){let i=t?.[s];return i?.target==="style"?{attribute:s,value:`${e}${i.unit??"px"}`,target:"style"}:{attribute:s,value:e.toString()}}var ny,jr,wc=g(()=>{"use strict";Ye();ny=["x","y","width","height"];jr=class{read(e){let t=e,i=t.getBBox(),n=i.x,r=i.y,o=i.width,a=i.height,l=[{type:b.Move,relative:!1,point:{x:n,y:r}},{type:b.Line,relative:!1,point:{x:n+o,y:r}},{type:b.Line,relative:!1,point:{x:n+o,y:r+a}},{type:b.Line,relative:!1,point:{x:n,y:r+a}},{type:b.Close,relative:!1,point:{x:n,y:r}}],c=Object.fromEntries(ny.map(h=>[h,ry(t,h)]));return{segments:l,closed:!0,serializationHints:c}}serialize(e){let t=e.segments.filter(c=>c.type!==b.Close);if(t.length<2)return[];let i=t.map(c=>c.point.x),n=t.map(c=>c.point.y),r=Math.min(...i),o=Math.min(...n),a=Math.max(...i),l=Math.max(...n);return[Wr("x",r,e.serializationHints),Wr("y",o,e.serializationHints),Wr("width",a-r,e.serializationHints),Wr("height",l-o,e.serializationHints)]}}});var Yr,Sc=g(()=>{"use strict";Ye();Yr=class{read(e){let t=e,i=t.x1.baseVal.value,n=t.y1.baseVal.value,r=t.x2.baseVal.value,o=t.y2.baseVal.value;return{segments:[{type:b.Move,relative:!1,point:{x:i,y:n}},{type:b.Line,relative:!1,point:{x:r,y:o}}],closed:!1}}serialize(e){let t=e.segments.filter(i=>i.type!==b.Close);return t.length<2?[]:[{attribute:"x1",value:t[0].point.x.toString()},{attribute:"y1",value:t[0].point.y.toString()},{attribute:"x2",value:t[1].point.x.toString()},{attribute:"y2",value:t[1].point.y.toString()}]}}});var Ur,Cc=g(()=>{"use strict";Ye();Ur=class{read(e){let t=e,i=t.cx.baseVal.value,n=t.cy.baseVal.value,r=t.rx.baseVal.value,o=t.ry.baseVal.value;return{segments:[{type:b.Move,relative:!1,point:{x:i,y:n-o}},{type:b.Arc,relative:!1,point:{x:i+r,y:n},arc:{rx:r,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:i,y:n+o},arc:{rx:r,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:i-r,y:n},arc:{rx:r,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:i,y:n-o},arc:{rx:r,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:b.Close,relative:!1,point:{x:i,y:n-o}}],closed:!0}}serialize(e){let t=e.segments.filter(p=>p.type!==b.Close);if(t.length<4)return[];let i=t[0].point,n=t[1].point,r=t[2].point,o=t[3].point,a=(n.x+o.x)/2,l=(i.y+r.y)/2,c=Math.abs(n.x-o.x)/2,h=Math.abs(r.y-i.y)/2;return[{attribute:"cx",value:a.toString()},{attribute:"cy",value:l.toString()},{attribute:"rx",value:c.toString()},{attribute:"ry",value:h.toString()}]}}});var Xr,Ec=g(()=>{"use strict";Ye();Xr=class{read(e){let t=e,i=t.cx.baseVal.value,n=t.cy.baseVal.value,r=t.r.baseVal.value;return{segments:[{type:b.Move,relative:!1,point:{x:i,y:n-r}},{type:b.Arc,relative:!1,point:{x:i+r,y:n},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:i,y:n+r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:i-r,y:n},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:i,y:n-r},arc:{rx:r,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Close,relative:!1,point:{x:i,y:n-r}}],closed:!0}}serialize(e){let t=e.segments.filter(h=>h.type!==b.Close);if(t.length<4)return[];let i=t[0].point,n=t[1].point,r=t[2].point,o=t[3].point,a=(n.x+o.x)/2,l=(i.y+r.y)/2,c=Math.max(Math.abs(n.x-o.x)/2,Math.abs(r.y-i.y)/2);return[{attribute:"cx",value:a.toString()},{attribute:"cy",value:l.toString()},{attribute:"r",value:c.toString()}]}}});var $r,Pc=g(()=>{"use strict";Ye();$r=class{read(e){let i=e.points,n=[];for(let r=0;r<i.numberOfItems;r++){let o=i.getItem(r);r===0?n.push({type:b.Move,relative:!1,point:{x:o.x,y:o.y}}):n.push({type:b.Line,relative:!1,point:{x:o.x,y:o.y}})}return n.length>0&&n.push({type:b.Close,relative:!1,point:{...n[0].point}}),{segments:n,closed:!0}}serialize(e){return[{attribute:"points",value:e.segments.filter(n=>n.type!==b.Close).map(n=>`${n.point.x},${n.point.y}`).join(" ")}]}}});var Kr,Ic=g(()=>{"use strict";Ye();Kr=class{read(e){let i=e.points,n=[];for(let r=0;r<i.numberOfItems;r++){let o=i.getItem(r);r===0?n.push({type:b.Move,relative:!1,point:{x:o.x,y:o.y}}):n.push({type:b.Line,relative:!1,point:{x:o.x,y:o.y}})}return{segments:n,closed:!1}}serialize(e){return[{attribute:"points",value:e.segments.filter(n=>n.type!==b.Close).map(n=>`${n.point.x},${n.point.y}`).join(" ")}]}}});function $t(s){if(s instanceof SVGPathElement)return xe.has(SVGPathElement)||xe.set(SVGPathElement,new bn),xe.get(SVGPathElement);if(s instanceof SVGRectElement)return xe.has(SVGRectElement)||xe.set(SVGRectElement,new jr),xe.get(SVGRectElement);if(s instanceof SVGLineElement)return xe.has(SVGLineElement)||xe.set(SVGLineElement,new Yr),xe.get(SVGLineElement);if(s instanceof SVGEllipseElement)return xe.has(SVGEllipseElement)||xe.set(SVGEllipseElement,new Ur),xe.get(SVGEllipseElement);if(s instanceof SVGCircleElement)return xe.has(SVGCircleElement)||xe.set(SVGCircleElement,new Xr),xe.get(SVGCircleElement);if(s instanceof SVGPolygonElement)return xe.has(SVGPolygonElement)||xe.set(SVGPolygonElement,new $r),xe.get(SVGPolygonElement);if(s instanceof SVGPolylineElement)return xe.has(SVGPolylineElement)||xe.set(SVGPolylineElement,new Kr),xe.get(SVGPolylineElement)}function G0(s,e){Yu.set(s,e)}function W0(s){return Yu.get(s)??null}var xe,Yu,Fi=g(()=>{"use strict";wn();wc();Sc();Cc();Ec();Pc();Ic();xe=new Map;Yu=new Map});function ay(s){return"style"in s}function pe(s,e){return e>=0?s.toFixed(e):s.toString()}function kc(s,e){return e<0?s:s.replace(oy,t=>pe(Number(t),e))}function Uu(s,e){return e<0?s:s.map(t=>({...t,value:kc(t.value,e)}))}function Xu(s,e,t=-1){for(let i of Uu(e,t))i.target==="style"&&ay(s)?s.style.setProperty(i.attribute,i.value):s.setAttribute(i.attribute,i.value)}function Qr(s,e){let t=Uu(e,s.serviceContainer.options.roundPixelsToDecimalPlaces);for(let i of t)i.target==="style"?s.setStyle(i.attribute,i.value):s.setAttribute(i.attribute,i.value)}var oy,pi=g(()=>{"use strict";oy=/-?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/gi});function me(s){let e=[];e:for(let t of s){let i=t.parent;for(;i!=null&&!i.isRootItem;){if(s.indexOf(i)>=0)continue e;i=i.parent}e.push(t)}return e}function Zr(s,e){if(e==="position"){let t=getComputedStyle(s.element),i=parseFloat(t.left);i=Number.isNaN(i)?null:i;let n=parseFloat(t.top);return n=Number.isNaN(n)?null:n,{x:i??0,y:n??0}}return{x:0,y:0}}function qr(s,e,t,i){let n=e.element,r=getComputedStyle(n);if(i==="position"){if(ly(e,t))return;let o=s.element,a=s.getComputedStyle();a.position!=="relative"&&a.position!=="absolute"&&o&&o.offsetParent&&(o=o.offsetParent,o&&(a=s.window.getComputedStyle(o)));let l=null,c=null,h=null,p=null,d=0,u=0,m=0,f=0,v=!1;if(r.position==="relative"||r.position==="absolute")l=parseFloat(n.style.left),l=Number.isNaN(l)?null:l,h=parseFloat(n.style.top),h=Number.isNaN(h)?null:h,c=parseFloat(n.style.right),c=Number.isNaN(c)?null:c,p=parseFloat(n.style.bottom),p=Number.isNaN(p)?null:p,v=!0;else if(o&&o!==s.element){let y=K(o),x=K(e.element);d=x.left-y.left,u=x.right-y.right,m=x.top-y.top,f=x.bottom-y.bottom}v||e.setStyle("position","absolute"),(l||c==null)&&e.setStyle("left",V(e,t.x+(l??0)+d)+"px"),(h||p==null)&&e.setStyle("top",V(e,t.y+(h??0)+m)+"px"),c!=null&&e.setStyle("right",V(e,(c??0)-t.x+u)+"px"),p!=null&&e.setStyle("bottom",V(e,(p??0)-t.y+f)+"px")}}function Jr(s,e){let t=e.a*e.d-e.b*e.c;return Math.abs(t)<1e-10?s:{x:(e.d*s.x-e.c*s.y)/t,y:(-e.b*s.x+e.a*s.y)/t}}function ly(s,e){let t=s.element;if(!(t instanceof SVGGraphicsElement)||t instanceof SVGSVGElement)return!1;let i=$t(t);if(!i)return!1;let n=i.read(t);for(let a of n.segments)a.point&&(a.point.x+=e.x,a.point.y+=e.y),a.cp1&&(a.cp1.x+=e.x,a.cp1.y+=e.y),a.cp2&&(a.cp2.x+=e.x,a.cp2.y+=e.y);let r=i.serialize(n);if(!r.length)return!1;let o=s.openGroup("place svg geometry");return Qr(s,r),o.commit(),!0}function V(s,e){return s.serviceContainer.options.roundPixelsToDecimalPlaces>=0?e.toFixed(s.serviceContainer.options.roundPixelsToDecimalPlaces):e.toString()}var Me=g(()=>{"use strict";ue();Fi();pi()});function X(s){return Cu()?s.metaKey:s.ctrlKey}var Xe=g(()=>{"use strict";ze()});function $u(s){let e=s.element;return e instanceof SVGGraphicsElement&&!(e instanceof SVGSVGElement)&&!!$t(e)}function Dc(s){let e=[];for(let t of s)t.nodeType===D.TextNode||t.nodeType===D.Comment||e.push(t);return e}var mt,Bi=g(()=>{"use strict";st();xc();Me();rt();Ue();Xe();Z();ue();Fi();mt=class{serviceForContainer(e,t,i){return i!=null&&i.getComputedStyle()?.position=="absolute"?!0:!(t.display==="grid"||t.display==="inline-grid"||t.display==="flex"||t.display==="inline-flex")}isEnterableContainer(e){return!(J.IsSelfClosingElement(e.element.localName)||!e.isRootItem&&e.element.shadowRoot&&e.element.shadowRoot.querySelector("slot")==null)}canEnter(e,t){return!(e.instanceServiceContainer.designerCanvas.readOnly||!this.isEnterableContainer(e)||!t.every(i=>!i.element.contains(e.element)&&i!==e))}canLeave(e,t){return!0}getElementOffset(e,t){return e.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(e.element)}calculateTrack(e,t,i,n,r,o){let a=r.x-i.x,l=r.y-i.y;if(!X(e)){if(t.alignOnGrid){let c=Zr(o,"position");c.x=c.x%t.gridSize,c.y=c.y%t.gridSize,a=Math.round(a/t.gridSize)*t.gridSize-c.x,l=Math.round(l/t.gridSize)*t.gridSize-c.y}else if(t.alignOnSnap){let c=K(o.element),h=t.snapLines.snapToPosition({x:r.x-n.x,y:r.y-n.y},{width:c.width/t.scaleFactor,height:c.height/t.scaleFactor},{x:a>0?1:-1,y:l>0?1:-1});h.x!==null?a=h.x-Math.round(i.x)+Math.round(n.x):a=Math.round(a),h.y!==null?l=h.y-Math.round(i.y)+Math.round(n.y):l=Math.round(l)}}return{x:a,y:l}}placePoint(e,t,i,n,r,o,a){let l=o.x,c=o.y;if(!X(e)){if(t.alignOnGrid)l=Math.round(l/t.gridSize)*t.gridSize,c=Math.round(c/t.gridSize)*t.gridSize;else if(t.alignOnSnap){let h=t.snapLines.snapToPosition({x:o.x-r.x,y:o.y-r.y},null,{x:l>0?1:-1,y:c>0?1:-1});h.x!==null?l=h.x:l=Math.round(l),h.y!==null?c=h.y:c=Math.round(c)}}return{x:l,y:c}}startPlace(e,t,i,n,r,o,a){}place(e,t,i,n,r,o,a){let l=this.calculateTrack(e,t,n,r,o,a[0]);e.shiftKey&&(l=Ct({x:0,y:0},l,90));let c=me(Dc(a));for(let h of c){let p=h.instanceServiceContainer.designerCanvas.canvas,d=h.parent.element.getBoxQuads({relativeTo:p,iframes:h.instanceServiceContainer.designerCanvas.iframes})[0],u=h.parent.element.convertPointFromNode(new DOMPoint(l.x+d.p1.x,l.y+d.p1.y),p,{iframes:h.instanceServiceContainer.designerCanvas.iframes}),m=getComputedStyle(h.element),f=new DOMMatrix;m.rotate!="none"&&m.rotate&&(f=f.multiply(new DOMMatrix("rotate("+m.rotate.replace(" ",",")+")"))),m.scale!="none"&&m.scale&&(f=f.multiply(new DOMMatrix("scale("+m.scale.replace(" ",",")+")"))),u=f.inverse().transformPoint(u);let v=lr(h.element);v!==1&&(u=new DOMPoint(u.x/v,u.y/v));let y=new DOMMatrix().translate(u.x,u.y);Gr(h.element,h.getStyle("transform"),y.toString())}a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(c,"place",!1)}moveElements(e,t,i){for(let n of e)t.x&&n.setStyle("left",parseInt(n.element.style.left)-t.x+"px"),t.y&&n.setStyle("top",parseInt(n.element.style.top)-t.y+"px");e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshExtensions(e),e[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(e,"place",!0)}enterContainer(e,t,i){let n=me(t);for(let r of n)i=="drop"&&r.setStyle("position","absolute"),e.insertChild(r),r.lastContainerSize&&(r.hasStyle("width")||r.setStyle("width",r.lastContainerSize.width+"px"),r.hasStyle("height")||r.setStyle("height",r.lastContainerSize.height+"px"));t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(n,"place",!0)}leaveContainer(e,t){let i=me(t);t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(i,"place",!0)}finishPlace(e,t,i,n,r,o,a){let l=me(a);for(let c of l){let h=Ri(new DOMMatrix(c.element.style.transform)),p=Ri(new DOMMatrix(c.getStyle("transform")??""));c.element.style.transform=c.getStyle("transform")??"";let d={x:h.x,y:h.y},u=getComputedStyle(c.element),m=new DOMMatrix;u.rotate!="none"&&u.rotate&&(m=m.multiply(new DOMMatrix("rotate("+u.rotate.replace(" ",",")+")"))),u.scale!="none"&&u.scale&&(m=m.multiply(new DOMMatrix("scale("+u.scale.replace(" ",",")+")"))),$u(c)||(d=m.transformPoint(d));let f={x:d.x-p.x,y:d.y-p.y};$u(c)&&(f=Jr(f,new DOMMatrix(c.getStyle("transform")??""))),qr(i,c,f,"position")}for(let c of a)t.extensionManager.removeExtension(c,I.Placement);a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(l,"place",!0)}}});var Kt,Sn=g(()=>{"use strict";oe();Sr();fr();Kt=class{async parse(e,t,i,n){let r;Document.parseHTMLUnsafe&&!wr?r=Document.parseHTMLUnsafe(e):r=new DOMParser().parseFromString(e,"text/html",{includeShadowRoots:!0});let o=this.createDesignItems(r.head.childNodes,t,i),a=this.createDesignItems(r.body.childNodes,t,i),l=[...o,...a];return!n&&i.designItemDocumentPositionService&&l.length&&t.htmlWriterService.write(new Mi,l,!0,!0),l}createDesignItems(e,t,i){let n=[];for(let r of e)n.push(this._createDesignItemsRecursive(r,t,i));return n}_createDesignItemsRecursive(e,t,i){return O.createDesignItemFromInstance(e,t,i)}}});var es,Ac=g(()=>{"use strict";Di();Ee();ye();es=class extends dt{name="lit2";isHandledElement(e){return!!e.element.constructor.elementProperties}async getProperties(e){if(!this.isHandledElement(e))return null;let t=[];for(let i of e.element.constructor.elementProperties.entries()){let n=i[0],r=i[1],o=r;if(r.type&&(o=r.type),o===String){let a={name:n,type:"string",service:this,propertyType:_.propertyAndAttribute};t.push(a)}else if(o===Object){let a={name:n,type:"string",service:this,propertyType:_.propertyAndAttribute};t.push(a)}else if(o===Number){let a={name:n,type:"number",service:this,propertyType:_.propertyAndAttribute};t.push(a)}else if(o===Date){let a={name:n,type:"date",service:this,propertyType:_.propertyAndAttribute};t.push(a)}else if(o===Boolean){let a={name:n,type:"boolean",service:this,propertyType:_.propertyAndAttribute};t.push(a)}else if(z.isTypescriptEnum(o)){let a={name:n,type:"enum",enumValues:z.getTypescriptEnumEntries(o),service:this,propertyType:_.propertyAndAttribute};t.push(a)}}return t}_notifyChangedProperty(e,t,i){}}});function Ku(s,e){Tc||(Tc=document.createElement("canvas"));let t=Tc.getContext("2d");return t.font=e,t.measureText(s).width}var Tc,Qu=g(()=>{"use strict"});var q,Et=g(()=>{"use strict";(function(s){s.Pointer="Pointer",s.DrawSelection="DrawSelection",s.DrawPath="DrawPath",s.DrawRect="DrawRect",s.DrawEllipsis="DrawEllipsis",s.DrawLine="DrawLine",s.Zoom="Zoom",s.Pan="Pan",s.MagicWandSelector="MagicWandSelector",s.RectangleSelector="RectangleSelector",s.PickColor="PickColor",s.Text="Text",s.DrawElementTool="DrawElementTool",s.Guides="Guides",s.Inspect="Inspect",s.Accessibility="Accessibility",s.Position="Position",s.Padding="Padding",s.Margin="Margin",s.Flexbox="Flexbox",s.Move="Move",s.HueShift="HueShift",s.BoxShadows="BoxShadows",s.FontStyles="FontStyles"})(q||(q={}))});var M,ie=g(()=>{"use strict";(function(s){s[s.Background=10]="Background",s[s.Normal=20]="Normal",s[s.Foreground=30]="Foreground"})(M||(M={}))});var Hi,Mc=g(()=>{"use strict";ie();Hi=class{overlays=[];overlayLayerView;extensionManager;designerCanvas;constructor(e,t){this.extensionManager=e,this.designerCanvas=t,this.overlayLayerView=t.overlayLayer}_backup;_valuesHaveChanges(...e){if(this._backup==null)return this._backup=e,!0;for(let t=0;t<e.length;t++)if(e[t]!==this._backup[t])return this._backup=e,!0;return!1}_removeAllOverlays(){for(let e of this.overlays)try{this.overlayLayerView.removeOverlay(e)}catch(t){console.error(t)}this.overlays=[]}_addOverlay(e,t=M.Normal){this.overlayLayerView.addOverlay(this.constructor.name,e,t),this.overlays.push(e)}_drawGroup(e,t,i){let n=this.overlayLayerView.drawGroup(this.constructor.name,e,t,i);return t||this.overlays.push(n),n}_drawLine(e,t,i,n,r,o,a){let l=this.overlayLayerView.drawLine(this.constructor.name,e,t,i,n,r,o,a);return o||this.overlays.push(l),l}_drawCircle(e,t,i,n,r,o){let a=this.overlayLayerView.drawCircle(this.constructor.name,e,t,i,n,r,o);return r||this.overlays.push(a),a}_drawRect(e,t,i,n,r,o,a){let l=this.overlayLayerView.drawRect(this.constructor.name,e,t,i,n,r,o,a);return o||this.overlays.push(l),l}_drawComplexRect(e,t,i,n){let r="M"+e.map(a=>a.x+","+a.y).join(" ")+"Z",o=this.overlayLayerView.drawPath(this.constructor.name,r,t,i,n);return i||this.overlays.push(o),o}_drawPath(e,t,i,n){let r=this.overlayLayerView.drawPath(this.constructor.name,e,t,i,n);return i||this.overlays.push(r),r}_drawText(e,t,i,n,r,o){let a=this.overlayLayerView.drawText(this.constructor.name,e,t,i,n,r,o);return r||this.overlays.push(a),a}_drawHTML(e,t,i,n,r,o,a,l){let c=this.overlayLayerView.drawHTML(this.constructor.name,e,t,i,n,r,o,a,l);return a||this.overlays.push(c),c}_drawTextWithBackground(e,t,i,n,r,o,a){let l=this.overlayLayerView.drawTextWithBackground(this.constructor.name,e,t,i,n,r,o,a);return o||this.overlays.push(...l),l}_drawTransformedRect(e,t,i,n){let r="M"+e.p1.x+" "+e.p1.y+" L"+e.p2.x+" "+e.p2.y+" L"+e.p3.x+" "+e.p3.y+" L"+e.p4.x+" "+e.p4.y+"Z",o=this.overlayLayerView.drawPath(this.constructor.name,r,t,i,n);return i||this.overlays.push(o),o}}});var F,le=g(()=>{"use strict";Mc();ie();F=class extends Hi{extendedItem;constructor(e,t,i){super(e,t),this.extendedItem=i}remove(){this.extensionManager.removeExtensionInstance(this.extendedItem,this)}createToolbar(e,t,i,n=M.Foreground){let r=e.content.cloneNode(!0);r.querySelectorAll("*").forEach(a=>{a.onpointerdown=l=>{this.designerCanvas.ignoreEvent(l)},a instanceof HTMLInputElement&&(a.addEventListener("keydown",l=>{this.designerCanvas.ignoreEvent(l)},{capture:!0}),a.addEventListener("keyup",l=>{this.designerCanvas.ignoreEvent(l)},{capture:!0}))});let o=document.createElementNS("http://www.w3.org/2000/svg","foreignObject");return o.classList.add("svg-toolbar-container"),o.setAttribute("width",""+t),o.setAttribute("height",""+i),o.appendChild(r),o.style.scale=""+1/this.designerCanvas.zoomFactor,o.style.transformBox="fill-box",this._addOverlay(o,n),o.updatePosition=a=>{o.style.scale=""+1/this.designerCanvas.zoomFactor;let l=this.overlayLayerView.getBoundingClientRect(),c=o.children[0].getBoundingClientRect(),h=this.designerCanvas.scaleFactor,p=l.width/h-this.designerCanvas.canvasOffset.x*h;c.width+a.x*h>p&&(a.x=(p-c.width)/h),a.x<-this.designerCanvas.canvasOffset.x&&(a.x=-this.designerCanvas.canvasOffset.x),o.setAttribute("x",""+a.x),o.setAttribute("y",""+a.y)},o.getById=a=>o.querySelector("#"+a),o}}});var cy,ts,Lc=g(()=>{"use strict";ue();Qu();Et();le();cy=60,ts=class extends F{_rect;_clickRect;_text;_width;_createTitleText;constructor(e,t,i,n){super(e,t,i),this._createTitleText=n}extend(e,t){let i=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];if(i&&!isNaN(i.p1.x)){let n=K(this.extendedItem.element),r=Ku(this.extendedItem.name,"10px monospace"),o=Math.sqrt(Math.pow(i.p2.x-i.p1.x,2)+Math.pow(i.p2.y-i.p1.y,2)),a=this.extendedItem.name;this.extendedItem.id&&(a="#"+this.extendedItem.id),this._createTitleText&&(a=this._createTitleText(this.extendedItem)),this._width=Math.max(Math.min(o,r),cy),this._rect=this._drawRect(i.p1.x,i.p1.y,this._width,15,"svg-primary-selection-move",this._rect),this._clickRect=this._drawRect(i.p1.x,i.p1.y,this._width,18,"svg-invisible",this._clickRect),this._clickRect.style.background="transparent",this._text=this._drawHTML('<div style="position:relative; pointer-events: none;"><span style="width: 100%; position: absolute; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transform-origin: 0 0; padding-left: 2px;">'+a+"</span></div>",(n.x-this.designerCanvas.containerBoundingRect.x)/this.designerCanvas.scaleFactor,i.p1.y-16,this._width,15,"svg-text-primary",this._text),this._text.style.overflow="visible",this._clickRect.addEventListener("pointerdown",l=>this._pointerEvent(l)),this._clickRect.addEventListener("pointermove",l=>this._pointerEvent(l)),this._clickRect.addEventListener("pointerup",l=>this._pointerEvent(l)),this._clickRect.addEventListener("contextmenu",l=>{l.preventDefault(),this.designerCanvas.showDesignItemContextMenu(this.extendedItem,l)}),this.refresh(e,t)}}_drawMoveOverlay(e){}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];if(!isNaN(i.p1.x)){let n=Math.atan2(i.p2.y-i.p1.y,i.p2.x-i.p1.x)*180/Math.PI;if(this._valuesHaveChanges(i.p1.x,i.p1.y,n,this.designerCanvas.scaleFactor)){let r=15/this.designerCanvas.scaleFactor,o=-(16/this.designerCanvas.scaleFactor),a=this._width/this.designerCanvas.scaleFactor;this._rect.setAttribute("x",""+i.p1.x),this._rect.setAttribute("y",""+i.p1.y),this._rect.style.rotate=n+"deg",this._rect.style.translate="0 "+o+"px",this._rect.style.transformOrigin="0 100%",this._rect.style.transformBox="fill-box",this._rect.setAttribute("height",""+r),this._rect.setAttribute("width",""+a),this._rect.style.strokeWidth=(1/this.designerCanvas.scaleFactor).toString(),this._clickRect.setAttribute("x",""+i.p1.x),this._clickRect.setAttribute("y",""+i.p1.y),this._clickRect.style.rotate=n+"deg",this._clickRect.style.translate="0 "+o+"px",this._clickRect.style.transformOrigin="0 100%",this._clickRect.style.transformBox="fill-box",this._clickRect.setAttribute("height",""+(r+3)),this._clickRect.setAttribute("width",""+a),this._clickRect.style.strokeWidth=(1/this.designerCanvas.scaleFactor).toString(),this._text.setAttribute("x",""+i.p1.x),this._text.setAttribute("y",""+i.p1.y),this._text.style.fontSize=10/this.designerCanvas.scaleFactor+"px",this._text.setAttribute("height",""+r),this._text.setAttribute("width",""+a),this._text.children[0].children[0].style.rotate=n+"deg",this._text.children[0].children[0].style.translate="0 "+o+"px",this._text.children[0].children[0].style.transformOrigin="0 100%"}}}_pointerEvent(e){e.preventDefault(),e.stopPropagation(),e.button!=2&&this.designerCanvas.serviceContainer.designerTools.get(q.Pointer).pointerEventHandler(this.designerCanvas,e,this.extendedItem.element)}dispose(){this._removeAllOverlays()}}});import{css as hy}from"@node-projects/base-custom-webcomponent";var is,Oc=g(()=>{"use strict";Lc();is=class{_createTitleText;constructor(e){this._createTitleText=e}shouldExtend(e,t,i){return!i.isRootItem&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new ts(e,t,i,this._createTitleText)}static style=hy`.svg-text-primary{stroke:none;color:#fff;font-family:monospace}`}});var P,fe=g(()=>{"use strict";(function(s){s.PointerDown="pointerdown",s.PointerMove="pointermove",s.PointerUp="pointerup",s.DragEnter="dragenter",s.DragEnd="dragend",s.DragLeave="dragleave",s.DragOver="dragover",s.Drop="drop",s.Scroll="scroll",s.Wheel="wheel",s.ContextMenu="contextmenu",s.KeyDown="keydown",s.KeyUp="keyup",s.DblClick="dblclick"})(P||(P={}))});function Nc(s,e,t){if(!s)return null;let i={px:r=>r,cm:r=>r*38,mm:r=>r*3.8,q:r=>r*.95,in:r=>r*96,pc:r=>r*16,pt:r=>r*1.333333,rem:r=>r*parseFloat(getComputedStyle(document.documentElement).fontSize),em:r=>r*parseFloat(getComputedStyle(e).fontSize),vw:r=>r/100*window.innerWidth,vh:r=>r/100*window.innerHeight,vmin:r=>r/100*(window.innerHeight<window.innerWidth?window.innerHeight:window.innerWidth),vmax:r=>r/100*(window.innerHeight>window.innerWidth?window.innerHeight:window.innerWidth),lh:r=>r*parseFloat(getComputedStyle(e).lineHeight),rlh:r=>r*parseFloat(getComputedStyle(document.documentElement).lineHeight),"%":r=>r/100*(t=="height"?ns(e).height:ns(e).width),ms:r=>r,s:r=>r*1e3,deg:r=>r,rad:r=>r*(180/Math.PI),grad:r=>r*(180/200),turn:r=>r*360},n=s.trim().match(Zu);if(n){let r=Number(n[1]),o=n[2].toLowerCase();if(o in i)return i[o](r)}return s}function di(s){let e=s.trim().match(Zu);return e?e[2].toLowerCase():null}function Gi(s,e,t,i,n){if(!s)return null;let r={px:o=>o,cm:o=>o/38,mm:o=>o/3.8,q:o=>o/.95,in:o=>o/96,pc:o=>o/16,pt:o=>o/1.333333,rem:o=>o/parseFloat(getComputedStyle(document.documentElement).fontSize),em:o=>o/parseFloat(getComputedStyle(e).fontSize),vw:o=>o*100/window.innerWidth,vh:o=>o*100/window.innerHeight,vmin:o=>o*100/(window.innerHeight<window.innerWidth?window.innerHeight:window.innerWidth),vmax:o=>o*100/(window.innerHeight>window.innerWidth?window.innerHeight:window.innerWidth),lh:o=>o/parseFloat(getComputedStyle(e).lineHeight),rlh:o=>o/parseFloat(getComputedStyle(document.documentElement).lineHeight),"%":o=>o*100/(t=="height"?ns(e).height:ns(e).width),ms:o=>o,s:o=>o/1e3,deg:o=>o,rad:o=>o/(180/Math.PI),grad:o=>o/(180/200),turn:o=>o/360};if(typeof s=="string"&&(s=Nc(s,e,t)),i in r){let o=r[i](s);return n?n(o)+i:o+i}return n?n(s):s}function ns(s){return{width:s.offsetWidth,height:s.offsetHeight}}function dy(s){let e=s.split(" "),t=[];for(let i=0;i<e.length;i++){let n=e[i];if(n.startsWith("repeat("))for(;!n.includes(")");)i++,e[i]&&(n+=e[i]);t.push(n)}return t}function qu(s){let e=dy(s),t=[];for(let i of e)if(i.startsWith("repeat(")){let n=i.split(",");for(let r=0;r<parseInt(n[0].substring(7));r++)t.push(n[1].substring(0,n[1].length-1))}else t.push(i);return t.map(i=>di(i))}var py,Zu,Vc=g(()=>{"use strict";py=["px","cm","mm","q","in","pc","pt","rem","em","vw","vh","vmin","vmax","lh","rlh","%","ms","s","deg","rad","grad","turn","cqw","cqh","cqi","cqb","cqmin","cqmax","fr"],Zu=new RegExp(`^([-+]?(?:\\d+(?:\\.\\d+)?))(${py.join("|")})$`,"i")});function Bc(s=window,e=!1){s.__getBoxQuadsPolyfillFns??={},s.__getBoxQuadsPolyfillFns.getBoxQuads=my,s.__getBoxQuadsPolyfillFns.convertQuadFromNode=sm,s.__getBoxQuadsPolyfillFns.convertRectFromNode=om,s.__getBoxQuadsPolyfillFns.convertPointFromNode=uy,(e||!s.Node.prototype.getBoxQuads)&&(s.Node.prototype.getBoxQuads=function(t){return s.__getBoxQuadsPolyfillFns.getBoxQuads(this,t)}),(e||!s.Node.prototype.convertQuadFromNode)&&(s.Node.prototype.convertQuadFromNode=function(t,i,n){return s.__getBoxQuadsPolyfillFns.convertQuadFromNode(this,t,i,n)}),(e||!s.Node.prototype.convertRectFromNode)&&(s.Node.prototype.convertRectFromNode=function(t,i,n){return s.__getBoxQuadsPolyfillFns.convertRectFromNode(this,t,i,n)}),(e||!s.Node.prototype.convertPointFromNode)&&(s.Node.prototype.convertPointFromNode=function(t,i,n){return s.__getBoxQuadsPolyfillFns.convertPointFromNode(this,t,i,n)})}function sm(s,e,t,i){let n=(s.ownerDocument.defaultView??window).document.body,r=it(t,n,i?.iframes,!0),o=it(s,n,i?.iframes,!0).inverse();if(i?.fromBox&&i?.fromBox!=="border"){let l=ne(t);e=new DOMQuad(Le(e.p1,i.fromBox,l,-1),Le(e.p2,i.fromBox,l,-1),Le(e.p3,i.fromBox,l,-1),Le(e.p4,i.fromBox,l,-1))}let a=new DOMQuad(o.transformPoint(r.transformPoint(e.p1)),o.transformPoint(r.transformPoint(e.p2)),o.transformPoint(r.transformPoint(e.p3)),o.transformPoint(r.transformPoint(e.p4)));if(i?.toBox&&i?.toBox!=="border"&&(s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element)){let l=ne(s);a=new DOMQuad(Le(a.p1,i.toBox,l,-1),Le(a.p2,i.toBox,l,-1),Le(a.p3,i.toBox,l,-1),Le(a.p4,i.toBox,l,-1))}return a}function om(s,e,t,i){let n=(s.ownerDocument.defaultView??window).document.body.parentElement,r=it(t,n,i?.iframes,!0),o=it(s,n,i?.iframes,!0).inverse();if(i?.fromBox&&i?.fromBox!=="border"){let l=Le(new DOMPoint(e.x,e.y),i.fromBox,ne(t),1);e=new DOMRect(l.x,l.y,e.width,e.height)}let a=new DOMQuad(o.transformPoint(r.transformPoint(new DOMPoint(e.x,e.y))),o.transformPoint(r.transformPoint(new DOMPoint(e.x+e.width,e.y))),o.transformPoint(r.transformPoint(new DOMPoint(e.x+e.width,e.y+e.height))),o.transformPoint(r.transformPoint(new DOMPoint(e.x,e.y+e.height))));if(i?.toBox&&i?.toBox!=="border"&&(s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element)){let l=ne(s);a=new DOMQuad(Le(a.p1,i.toBox,l,-1),Le(a.p2,i.toBox,l,-1),Le(a.p3,i.toBox,l,-1),Le(a.p4,i.toBox,l,-1))}return a}function uy(s,e,t,i){let n=(s.ownerDocument.defaultView??window).document.body.parentElement,r=it(t,n,i?.iframes,!0),o=it(s,n,i?.iframes,!0).inverse();i?.fromBox&&i?.fromBox!=="border"&&(e=Le(e,i.fromBox,ne(t),1));let a=o.transformPoint(r.transformPoint(e));return i?.toBox&&i?.toBox!=="border"&&(s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element)&&(a=Le(a,i.toBox,ne(s),-1)),a}function Le(s,e,t,i){if(e==="margin"){let n=parseFloat(t.marginLeft),r=parseFloat(t.marginTop);return new DOMPoint(s.x-i*n,s.y-i*r)}else if(e==="padding"){let n=parseFloat(t.borderLeftWidth),r=parseFloat(t.borderTopWidth);return new DOMPoint(s.x+i*n,s.y+i*r)}else if(e==="content"){let n=parseFloat(t.borderLeftWidth),r=parseFloat(t.borderTopWidth),o=parseFloat(t.paddingLeft),a=parseFloat(t.paddingTop);return new DOMPoint(s.x+i*(n+o),s.y+i*(r+a))}return s}function It(){ve.clear(),Qt.clear(),En=new WeakMap}function am(){Pt=new WeakMap,ve=new Map,Qt=new Map,En=new WeakMap}function ne(s){if(!En)return(s.ownerDocument.defaultView??window).getComputedStyle(s);let e=En.get(s);return e||(e=(s.ownerDocument.defaultView??window).getComputedStyle(s),En.set(s,e)),e}function Hc(s){return!!s&&s.nodeType===Node.ELEMENT_NODE}function Gc(s){if(!Hc(s))return 1;let t=ne(s).zoom;if(!t||t==="normal")return 1;if(t.endsWith("%")){let n=parseFloat(t);return Number.isFinite(n)&&n>0?n/100:1}let i=parseFloat(t);return Number.isFinite(i)&&i>0?i:1}function lm(s){if(!Hc(s))return new DOMMatrix;let e=Gc(s);return e===1?new DOMMatrix:new DOMMatrix().scaleSelf(e)}function Ju(s,e,t=!0){let i=Wc(s,e);if(!t||!Hc(s))return i;let n=lm(s);return n.isIdentity?i:n.multiply(i)}function my(s,e){let t=s.ownerDocument.documentElement??s.ownerDocument.body,i=e?.relativeTo??t,n;if(ve){let y=Pt.get(s);y===void 0&&Pt.set(s,y=cs++);let x=Pt.get(i);x===void 0&&Pt.set(i,x=cs++),n=y+"_"+x+"_"+(e?.box??"border");let w=ve.get(n);if(w)return w}let r=it(s,i,e?.iframes),o=s.ownerDocument.defaultView??window,a=o.Text,l=o.SVGGraphicsElement,c=o.SVGSVGElement;if(s instanceof Text||s instanceof a){let y=r.is2D&&Math.abs(r.b)<1e-10&&Math.abs(r.c)<1e-10,x=s.ownerDocument.createRange();x.selectNodeContents(s);let w=x.getClientRects(),C=s.ownerDocument.documentElement??s.ownerDocument.body,S=C?.getBoundingClientRect(),L=T=>{if(i===C)return new DOMQuad(new DOMPoint(T.x,T.y),new DOMPoint(T.x+T.width,T.y),new DOMPoint(T.x+T.width,T.y+T.height),new DOMPoint(T.x,T.y+T.height));let re=new DOMRect(T.x-(S?.x??0),T.y-(S?.y??0),T.width,T.height);return om(i,re,C,{iframes:e?.iframes})};if(w.length>1){if(y){let de=[];for(let ht of w)ht.width<1&&ht.height<1||de.push(L(ht));if(de.length>0)return ve&&ve.set(n,de),de}let T=Oe(s,e?.iframes),re=it(T,i,e?.iframes),ge=Wc(T,e?.iframes),ee=T.getBoundingClientRect(),$=ge.a,se=ge.b,Qe=ge.c,Ae=ge.d,Ot=T.offsetWidth,Nt=T.offsetHeight,fl=ee.x+ee.width/2-($*Ot/2+Qe*Nt/2),gl=ee.y+ee.height/2-(se*Ot/2+Ae*Nt/2),ln=$*Ae-se*Qe,Vt=Math.abs($),xt=Math.abs(se),wi=Vt*Vt-xt*xt,ti=[];for(let de of w){if(de.width<1&&de.height<1)continue;let ht=de.x+de.width/2-fl,Si=de.y+de.height/2-gl,Ci,Ze;Math.abs(ln)>1e-10?(Ci=(Ae*ht-Qe*Si)/ln,Ze=($*Si-se*ht)/ln):(Ci=ht,Ze=Si);let Ge,qe;if(Math.abs(wi)>1e-6)Ge=Math.max(0,(Vt*de.width-xt*de.height)/wi),qe=Math.max(0,(Vt*de.height-xt*de.width)/wi);else{let Kd=ne(T);qe=Math.max(0,parseFloat(Kd.lineHeight)||parseFloat(Kd.fontSize)*1.2||16);let Qd=Math.max(Vt,xt);Ge=Qd>1e-6?Math.max(0,(de.width-qe*xt)/Qd):de.width}let Je=Ci-Ge/2,Ei=Ze-qe/2,yl=new DOMQuad(re.transformPoint(new DOMPoint(Je,Ei)),re.transformPoint(new DOMPoint(Je+Ge,Ei)),re.transformPoint(new DOMPoint(Je+Ge,Ei+qe)),re.transformPoint(new DOMPoint(Je,Ei+qe)));ti.push(Cn(yl,s,i,e?.iframes))}if(ti.length>0)return ve&&ve.set(n,ti),ti}let k=x.getBoundingClientRect();if(y){let T=[L(k)];return ve&&ve.set(n,T),T}let{width:j,height:H}=cm(r,k,s),N=r.is2D,Q=[new DOMPoint(0,0),new DOMPoint(j,0),new DOMPoint(j,H),new DOMPoint(0,H)],B=Array(4);if(N)for(let T=0;T<4;T++)B[T]=Q[T].matrixTransform(r);else for(let T=0;T<4;T++)B[T]=rs(Q[T],r).matrixTransform(r),B[T]=ss(B[T]);let ce=[Cn(new DOMQuad(B[0],B[1],B[2],B[3]),s,i,e?.iframes)];return ve&&ve.set(n,ce),ce}if((s instanceof SVGGraphicsElement||s instanceof l)&&!(s instanceof SVGSVGElement||s instanceof c)){let y=s.getBBox(),x=Sy(s,y),w=x.x-y.x,C=x.y-y.y,S=w+x.width,L=C+x.height,k=[new DOMPoint(x.x,x.y),new DOMPoint(x.x+x.width,x.y),new DOMPoint(x.x+x.width,x.y+x.height),new DOMPoint(x.x,x.y+x.height)],j=[new DOMPoint(w,C),new DOMPoint(S,C),new DOMPoint(S,L),new DOMPoint(w,L)],H=by(s,i,e?.iframes)?null:s.getScreenCTM();if(H){let B=new DOMQuad(k[0].matrixTransform(H),k[1].matrixTransform(H),k[2].matrixTransform(H),k[3].matrixTransform(H)),ce=[fy(B,s,i,e?.iframes)];return ve&&ve.set(n,ce),ce}let N=Array(4);if(r.is2D)for(let B=0;B<4;B++)N[B]=j[B].matrixTransform(r);else for(let B=0;B<4;B++)N[B]=rs(j[B],r).matrixTransform(r),N[B]=ss(N[B]);let Q=[Cn(new DOMQuad(N[0],N[1],N[2],N[3]),s,i,e?.iframes)];return ve&&ve.set(n,Q),Q}if(s instanceof o.Element&&i===s.ownerDocument.documentElement&&(!e?.box||e.box==="border")&&r.is2D&&Math.abs(r.b)<1e-10&&Math.abs(r.c)<1e-10){let y=s.getBoundingClientRect(),x=[new DOMQuad(new DOMPoint(y.x,y.y),new DOMPoint(y.x+y.width,y.y),new DOMPoint(y.x+y.width,y.y+y.height),new DOMPoint(y.x,y.y+y.height))];return ve&&ve.set(n,x),x}let{width:h,height:p}=Fe(s,r),d=o.Element,u=r.is2D;if(s instanceof Element||s instanceof d){let y=e?.box;if(y==="margin"||y==="padding"||y==="content"){let x=ne(s),w,C,S,L,k,j,H,N;if(y==="margin"){let T=parseFloat(x.marginLeft),re=parseFloat(x.marginTop),ge=parseFloat(x.marginRight),ee=parseFloat(x.marginBottom);w=-T,C=-re,S=h+ge,L=-re,k=h+ge,j=p+ee,H=-T,N=p+ee}else if(y==="padding"){let T=parseFloat(x.borderLeftWidth),re=parseFloat(x.borderTopWidth),ge=parseFloat(x.borderRightWidth),ee=parseFloat(x.borderBottomWidth);w=T,C=re,S=h-ge,L=re,k=h-ge,j=p-ee,H=T,N=p-ee}else{let T=parseFloat(x.borderLeftWidth),re=parseFloat(x.borderTopWidth),ge=parseFloat(x.borderRightWidth),ee=parseFloat(x.borderBottomWidth),$=parseFloat(x.paddingLeft),se=parseFloat(x.paddingTop),Qe=parseFloat(x.paddingRight),Ae=parseFloat(x.paddingBottom);w=T+$,C=re+se,S=h-ge-Qe,L=re+se,k=h-ge-Qe,j=p-ee-Ae,H=T+$,N=p-ee-Ae}let Q=[new DOMPoint(w,C),new DOMPoint(S,L),new DOMPoint(k,j),new DOMPoint(H,N)],B=Array(4);if(u)for(let T=0;T<4;T++)B[T]=Q[T].matrixTransform(r);else for(let T=0;T<4;T++)B[T]=rs(Q[T],r).matrixTransform(r),B[T]=ss(B[T]);let ce=[Cn(new DOMQuad(B[0],B[1],B[2],B[3]),s,i,e?.iframes)];return ve&&ve.set(n,ce),ce}}let m=[new DOMPoint(0,0),new DOMPoint(h,0),new DOMPoint(h,p),new DOMPoint(0,p)],f=Array(4);if(u)for(let y=0;y<4;y++)f[y]=m[y].matrixTransform(r);else for(let y=0;y<4;y++)f[y]=rs(m[y],r).matrixTransform(r),f[y]=ss(f[y]);let v=[Cn(new DOMQuad(f[0],f[1],f[2],f[3]),s,i,e?.iframes)];return ve&&ve.set(n,v),v}function fy(s,e,t,i){let n=e.ownerDocument.documentElement??e.ownerDocument.body;if(t===n)return s;let r=e.ownerDocument.defaultView??window;if(t instanceof r.SVGElement){let o=t.getScreenCTM();if(o){let a=o.inverse();return new DOMQuad(s.p1.matrixTransform(a),s.p2.matrixTransform(a),s.p3.matrixTransform(a),s.p4.matrixTransform(a))}}if(t.ownerDocument===e.ownerDocument&&t instanceof r.HTMLElement){let o=gy(s,t,i);if(o)return o}if(t===e.ownerDocument.body){let o=t.getBoundingClientRect(),a=t.scrollLeft||0,l=t.scrollTop||0;return new DOMQuad(new DOMPoint(s.p1.x-o.x+a,s.p1.y-o.y+l),new DOMPoint(s.p2.x-o.x+a,s.p2.y-o.y+l),new DOMPoint(s.p3.x-o.x+a,s.p3.y-o.y+l),new DOMPoint(s.p4.x-o.x+a,s.p4.y-o.y+l))}return sm(t,s,n,{iframes:i})}function gy(s,e,t){let i=yy(e,t);if(!i)return null;let n=e.getBoundingClientRect(),r=i.x,o=i.y;if(!Number.isFinite(r)||!Number.isFinite(o)||Math.abs(r)<1e-10||Math.abs(o)<1e-10)return null;let a=e.scrollLeft||0,l=e.scrollTop||0,c=h=>new DOMPoint((h.x-n.x)/r+a,(h.y-n.y)/o+l);return new DOMQuad(c(s.p1),c(s.p2),c(s.p3),c(s.p4))}function yy(s,e){let t=s.ownerDocument.defaultView??window,i={x:1,y:1},n=s;for(;n&&n!==s.ownerDocument.documentElement;){if(n instanceof t.Element){let r=ne(n),o=vy(r);if(!o)return null;let a=Gc(n);i.x*=o.x*a,i.y*=o.y*a}n=Oe(n,e)}return i}function vy(s){if(s.perspective&&s.perspective!=="none"||s.rotate&&s.rotate!=="none"&&!xy(s.rotate))return null;let e=_y(s.scale);if(!e)return null;let t=s.transform;if(!t||t==="none")return e;if(t.startsWith("matrix3d(")){let i=em(t);return i?.length===16&&i[0]>0&&i[5]>0&&Math.abs(i[1])<1e-10&&Math.abs(i[4])<1e-10&&Math.abs(i[3])<1e-10&&Math.abs(i[7])<1e-10&&Math.abs(i[11])<1e-10?{x:e.x*i[0],y:e.y*i[5]}:null}if(t.startsWith("matrix(")){let i=em(t);return i?.length===6&&i[0]>0&&i[3]>0&&Math.abs(i[1])<1e-10&&Math.abs(i[2])<1e-10?{x:e.x*i[0],y:e.y*i[3]}:null}return null}function _y(s){if(!s||s==="none")return{x:1,y:1};let e=s.split(/\s+/).map(t=>parseFloat(t)).filter(Number.isFinite);return e.length===0||e[0]<=0||e[1]!=null&&e[1]<=0?null:{x:e[0],y:e[1]??e[0]}}function em(s){let e=s.indexOf("("),t=s.lastIndexOf(")");if(e<0||t<=e)return null;let i=s.slice(e+1,t).split(",").map(n=>parseFloat(n.trim()));return i.every(Number.isFinite)?i:null}function xy(s){let e=s.match(/-?\d*\.?\d+(?:e[-+]?\d+)?/gi);if(!e?.length)return!1;let t=parseFloat(e[e.length-1]);return Number.isFinite(t)&&Math.abs(t)<1e-10}function by(s,e,t){let i=s.ownerDocument.defaultView??window,n=Oe(s,t);for(;n&&n!==e&&n!==s.ownerDocument.documentElement;){if(n instanceof i.HTMLElement){let r=ne(n);if(pm.some(o=>r[o]?r[o]!=="none":!1))return!0}n=Oe(n,t)}return!1}function Cn(s,e,t,i){if(t!==e.ownerDocument.documentElement||wy(e,i))return s;let n=e.ownerDocument.defaultView??window,r=n.scrollX??e.ownerDocument.documentElement.scrollLeft??0,o=n.scrollY??e.ownerDocument.documentElement.scrollTop??0;return r===0&&o===0?s:new DOMQuad(new DOMPoint(s.p1.x-r,s.p1.y-o),new DOMPoint(s.p2.x-r,s.p2.y-o),new DOMPoint(s.p3.x-r,s.p3.y-o),new DOMPoint(s.p4.x-r,s.p4.y-o))}function wy(s,e){let t=s.ownerDocument.defaultView??window,i=null;for(s instanceof t.Text?i=Oe(s,e):s instanceof t.Element&&(i=s);i&&i!==s.ownerDocument.documentElement;){if(ne(i).position==="fixed")return jc(i,e)==null;i=Oe(i,e)}return!1}function cm(s,e,t){let i=Math.abs(s?.a??1),n=Math.abs(s?.b??0),r=i*i-n*n,o,a;if(Math.abs(r)>1e-6)o=Math.max(0,(i*e.width-n*e.height)/r),a=Math.max(0,(i*e.height-n*e.width)/r);else{let l=t.parentElement,c=16;if(l){let p=ne(l);c=parseFloat(p.lineHeight)||parseFloat(p.fontSize)*1.2||16}a=Math.max(0,c);let h=Math.max(i,n);o=h>1e-6?Math.max(0,(e.width-a*n)/h):e.width}return{width:o,height:a}}function rs(s,e){let t=-(s.x*e.m13+s.y*e.m23+e.m43)/e.m33;return new DOMPoint(s.x,s.y,t,1)}function ss(s){return new DOMPoint(s.x/s.w,s.y/s.w)}function Fe(s,e){let t=0,i=0,n=s.ownerDocument.defaultView??window;if(s instanceof HTMLElement||s instanceof n.HTMLElement)t=s.offsetWidth,i=s.offsetHeight;else if(s instanceof SVGSVGElement||s instanceof n.SVGSVGElement)t=s.width.baseVal.value,i=s.height.baseVal.value;else if(s instanceof SVGGraphicsElement||s instanceof n.SVGGraphicsElement){let r=s.getBBox();t=r.width,i=r.height}else if(s instanceof MathMLElement||s instanceof n.MathMLElement){let r=s.getBoundingClientRect();t=r.width/(e?.a??1),i=r.height/(e?.d??1)}else if(s instanceof Text||s instanceof n.Text){let r=s.ownerDocument.createRange();r.selectNodeContents(s);let o=r.getBoundingClientRect(),a=cm(e,o,s);t=a.width,i=a.height}return{width:t,height:i}}function Sy(s,e){let t=ne(s),i=t.stroke!=="none"&&parseFloat(t.strokeWidth)||0;if(i<=0)return e;let n=Cy(s,e,i);return new DOMRect(e.x-n.left,e.y-n.top,e.width+n.left+n.right,e.height+n.top+n.bottom)}function Cy(s,e,t){let i=t/2;if(s instanceof SVGLineElement||s instanceof(s.ownerDocument.defaultView??window).SVGLineElement){let r=s.x1.baseVal.value,o=s.y1.baseVal.value,a=s.x2.baseVal.value,l=s.y2.baseVal.value,c=a-r,h=l-o,p=Math.hypot(c,h);if(p>1e-10){let d=i*Math.abs(h)/p,u=i*Math.abs(c)/p,m=ne(s).strokeLinecap;return(m==="round"||m==="square")&&(d+=i*Math.abs(c)/p,u+=i*Math.abs(h)/p),{left:d,right:d,top:u,bottom:u}}}let n=t*2;return{left:n,right:n,top:n,bottom:n}}function os(s,e,t){if(s instanceof HTMLElement||s instanceof(s.ownerDocument.defaultView??window).HTMLElement){if(s instanceof HTMLHtmlElement||s instanceof(s.ownerDocument.defaultView??window).HTMLHtmlElement)return new DOMPoint(0,0);let i=ne(s);if(i.position==="fixed"){let n=jc(s,t);if(!n){let h=i.left&&i.left!=="auto"?parseFloat(i.left):s.offsetLeft,p=i.top&&i.top!=="auto"?parseFloat(i.top):s.offsetTop;return new DOMPoint(h,p)}let r=it(n,s.ownerDocument.body,t,!0).inverse(),o=s.getBoundingClientRect(),a=r.transformPoint(o),l=n.getBoundingClientRect(),c=r.transformPoint(l);return new DOMPoint(a.x-c.x,a.y-c.y)}return e?new DOMPoint(s.offsetLeft-(s.scrollLeft-parseFloat(i.borderLeftWidth)),s.offsetTop-(s.scrollTop-parseFloat(i.borderTopWidth))):new DOMPoint(s.offsetLeft,s.offsetTop)}else if(s instanceof Text||s instanceof(s.ownerDocument.defaultView??window).Text){let i=s.ownerDocument.createRange();i.selectNodeContents(s);let n=i.getBoundingClientRect(),r=Oe(s,t),o=r.getBoundingClientRect(),a=Wc(r,t),l=a.a,c=a.b,h=a.c,p=a.d,d=r.offsetWidth,u=r.offsetHeight,m=o.x+o.width/2-(l*d/2+h*u/2),f=o.y+o.height/2-(c*d/2+p*u/2),v=n.x+n.width/2-m,y=n.y+n.height/2-f,x=l*p-c*h,w,C;Math.abs(x)>1e-10?(w=(p*v-h*y)/x,C=(l*y-c*v)/x):(w=v,C=y);let S=Math.abs(l),L=Math.abs(c),k=S*S-L*L,j,H;if(Math.abs(k)>1e-6)j=Math.max(0,(S*n.width-L*n.height)/k),H=Math.max(0,(S*n.height-L*n.width)/k);else{let N=ne(r);H=parseFloat(N.lineHeight)||parseFloat(N.fontSize)*1.2||16,H=Math.max(0,H);let Q=Math.max(S,L);j=Q>1e-6?Math.max(0,(n.width-H*L)/Q):n.width}return new DOMPoint(w-j/2,C-H/2)}else if(s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element){if((s instanceof SVGGraphicsElement||s instanceof(s.ownerDocument.defaultView??window).SVGGraphicsElement)&&!(s instanceof SVGSVGElement||s instanceof(s.ownerDocument.defaultView??window).SVGSVGElement)){let h=s.getBBox();return new DOMPoint(h.x,h.y)}let i=ne(s);if(i.position==="absolute")return new DOMPoint(parseFloat(i.left),parseFloat(i.top));let n=Oe(s,t),r=it(n,document.body,t,!0).inverse(),o=s.getBoundingClientRect(),a=r.transformPoint(o),l=n.getBoundingClientRect(),c=r.transformPoint(l);return new DOMPoint(a.x-c.x,a.y-c.y)}}function it(s,e,t,i=!1){let n;if(Qt){let d=Pt.get(s);d===void 0&&Pt.set(s,d=cs++);let u=Pt.get(e);u===void 0&&Pt.set(e,u=cs++),n=d+"_"+u+"_"+(i?"no-self-zoom":"full");let m=Qt.get(n);if(m)return m}let r=s,o,l=(r instanceof SVGGraphicsElement||r instanceof(r.ownerDocument.defaultView??window).SVGGraphicsElement)&&!(r instanceof SVGSVGElement||r instanceof(r.ownerDocument.defaultView??window).SVGSVGElement)?new DOMMatrix:Ju(r,t,!i),c=l.isIdentity?new DOMMatrix:l,h=Oe(r,t);h&&(c.is2D||ne(h).transformStyle!=="preserve-3d"&&tm(c));let p=null;for(;r!=e&&r!=null;){let d=Oe(r,t);if((r instanceof HTMLElement||r instanceof(r.ownerDocument.defaultView??window).HTMLElement)&&ne(r).position==="fixed"&&(d=jc(r,t)??e),r.assignedSlot!=null){if(r.nodeType===Node.ELEMENT_NODE){let u=Fc(r);if(p!==u&&(p===null||r===p||!nm(p,r))){let f=rm(r,"offsetLeft"),v=rm(r,"offsetTop");(f!==0||v!==0)&&(c=new DOMMatrix().translateSelf(f,v).multiplySelf(c)),p=u}p===null&&(p=u)}else if(r.nodeType===Node.TEXT_NODE){let u=os(r,r!==s,t);(u.x!==0||u.y!==0)&&(c=new DOMMatrix().translateSelf(u.x,u.y).multiplySelf(c))}}else if(!(r instanceof SVGSVGElement)&&!(r instanceof(r.ownerDocument.defaultView??window).SVGSVGElement)&&(r instanceof SVGGraphicsElement||r instanceof(r.ownerDocument.defaultView??window).SVGGraphicsElement)){let u=r.getCTM(),m=r.getBBox();(m.x!==0||m.y!==0)&&(c=new DOMMatrix().translateSelf(m.x,m.y).multiplySelf(c)),c=new DOMMatrix([u.a,u.b,u.c,u.d,u.e,u.f]).multiplySelf(c),d=r.ownerSVGElement}else if(r instanceof HTMLElement||r instanceof(r.ownerDocument.defaultView??window).HTMLElement){if((ne(r).position==="fixed"&&r===s||p!==r.offsetParent)&&!(r instanceof HTMLSlotElement||r instanceof(r.ownerDocument.defaultView??window).HTMLSlotElement)&&(p===null||r===p||!nm(p,r))){let f=os(r,r!==s,t),v=Gc(r);p=r.offsetParent,(f.x!==0||f.y!==0)&&(c=new DOMMatrix().translateSelf(f.x*v,f.y*v).multiplySelf(c))}}else{let u=os(r,r!==s,t);p=null,(u.x!==0||u.y!==0)&&(c=new DOMMatrix().translateSelf(u.x,u.y).multiplySelf(c))}if(d){if(d===e){if(p!==null&&(d instanceof HTMLElement||d instanceof(d.ownerDocument.defaultView??window).HTMLElement)&&d.offsetParent===p){let f=os(d,!1,t);(f.x!==0||f.y!==0)&&(c=new DOMMatrix().translate(-f.x,-f.y).multiply(c))}!(d===d.ownerDocument.documentElement)&&(d.scrollTop||d.scrollLeft)&&(c=new DOMMatrix().translate(-d.scrollLeft,-d.scrollTop).multiply(c));let m=lm(d);return m.isIdentity||(c=m.multiply(c)),Qt&&Qt.set(n,c),c}o=Ju(d,t),o.isIdentity||(c=o.multiply(c)),h=Oe(d,t),h&&(c.is2D||ne(h).transformStyle!=="preserve-3d"&&tm(c))}r=d}return Qt&&Qt.set(n,c),c}function Oe(s,e){if((s instanceof Element||s instanceof(s.ownerDocument.defaultView??window).Element)&&s.assignedSlot)return s.assignedSlot;if(s.parentElement==null&&(s.parentNode instanceof ShadowRoot||s.parentNode instanceof(s.ownerDocument.defaultView??window).ShadowRoot))return s.parentNode.host;if((s instanceof HTMLHtmlElement||s instanceof(s.ownerDocument.defaultView??window).HTMLHtmlElement)&&e){for(let t of e)if(t?.contentDocument==s.ownerDocument)return t}return s.parentElement}function Wc(s,e){if(s instanceof Text||s instanceof(s.ownerDocument.defaultView??window).Text)return new DOMMatrix;let t=s,i=ne(t),n=i.transform!=="none"&&!!i.transform,r=i.translate!=="none"&&!!i.translate,o=i.rotate!=="none"&&!!i.rotate,a=i.scale!=="none"&&!!i.scale,l=!!i.offsetPath&&i.offsetPath!=="none";if(!n&&!r&&!o&&!a&&!l){let y=Oe(t,e);if(!y)return new DOMMatrix;let x=ne(y);if(!x.perspective||x.perspective==="none")return new DOMMatrix;let w=im(t,e);return w??new DOMMatrix}let c=new DOMMatrix,h=i.transformOrigin.split(" "),p=parseFloat(h[0]),d=parseFloat(h[1]),u=h[2]?parseFloat(h[2]):0,m=p!==0||d!==0||u!==0,f=m?new DOMMatrix().translateSelf(p,d,u):null;if(r){let y=i.translate;if(y.includes("%")){let x=y.split(" "),w=t.getBoundingClientRect();x[0].endsWith("%")&&(x[0]=parseFloat(x[0])*w.width/100+"px"),x[1]?.endsWith("%")&&(x[1]=parseFloat(x[1])*w.height/100+"px"),y=x.join(",")}c.multiplySelf(new DOMMatrix("translate("+y.replaceAll(" ",",")+")"))}o&&c.multiplySelf(new DOMMatrix("rotate("+i.rotate.replaceAll(" ",",")+")")),a&&c.multiplySelf(new DOMMatrix("scale("+i.scale.replaceAll(" ",",")+")")),l&&c.multiplySelf(Ey(s)),n&&c.multiplySelf(new DOMMatrix(i.transform)),m&&(c=f.multiply(c.multiplySelf(f.inverse())));let v=im(s,e);return v!=null&&(c=v.multiplySelf(c)),c}function tm(s){if(s.m31=0,s.m32=0,s.m13=0,s.m23=0,s.m33=1,s.m43=0,s.m34=0,s.m14==0&&s.m24==0&&s.m44!=1&&s.m44!=0){let e=1/s.m44;s.m11*=e,s.m12*=e,s.m21*=e,s.m22*=e,s.m41*=e,s.m42*=e,s.m44=1}}function im(s,e){let t=Oe(s,e);if(t){let i=ne(t);if(i.perspective!=="none"){let n=new DOMMatrix,r=parseFloat(i.perspective);if(n.m34=-1/r,i.perspectiveOrigin){let o=i.perspectiveOrigin.split(" "),a=parseFloat(o[0])-s.offsetLeft,l=parseFloat(o[1])-s.offsetTop,c=new DOMMatrix().translateSelf(a,l),h=new DOMMatrix().translateSelf(-a,-l);return c.multiplySelf(n.multiplySelf(h))}}}return null}function Ey(s){let e=ne(s),t=e.offsetPath,i=e.offsetDistance,n=e.offsetRotate,r=e.offsetAnchor,o=e.transformOrigin,a=Iy(i),{x:l,y:c,angle:h}=Dy(s,t,a),p=s.parentElement;(p instanceof HTMLElement||p instanceof(p.ownerDocument.defaultView??window).HTMLElement)&&(s.offsetParent===p?(l-=s.offsetLeft,c-=s.offsetTop):s.offsetParent===p.offsetParent&&(l-=s.offsetLeft-p.offsetLeft,c-=s.offsetTop-p.offsetTop));let d=0;if(n.startsWith("auto")){let v=n.split(/\s+/),y=v.length===2?parseFloat(v[1]):0;d=h+y}else d=parseFloat(n);let u=Py(r,o,s),m=new DOMMatrix().translateSelf(-u.x,-u.y),f=m.translate(l,c);return f.multiplySelf(m.invertSelf()),f.rotateSelf(d),f.translateSelf(-u.x,-u.y),f}function Py(s,e,t){let i=t.offsetWidth,n=t.offsetHeight;(!s||s==="auto")&&(s=e);let r=s.split(/\s+/);if(r.length===1)return{x:Rc(r[0],i),y:n/2};let o=Rc(r[0],i),a=Rc(r[1],n);return{x:o,y:a}}function Rc(s,e){if(s=s.trim(),s.endsWith("%"))return parseFloat(s)/100*e;if(s.endsWith("px"))return parseFloat(s);switch(s){case"left":return 0;case"top":return 0;case"center":return e/2;case"right":return e;case"bottom":return e}return parseFloat(s)}function Iy(s){return s=s.trim(),s.endsWith("%")?parseFloat(s)/100:parseFloat(s)}function ky(s){return s?(s=s.trim(),s.endsWith("deg")?parseFloat(s):s.endsWith("rad")?parseFloat(s)*(180/Math.PI):s.endsWith("grad")?parseFloat(s)*.9:parseFloat(s)):0}function Dy(s,e,t){if(!e||e==="none")return{x:0,y:0,angle:0};let i=e.trim(),n=i.match(/path\(["'](.+)["']\)/);return n?Ay(n[1],t):i.startsWith("circle(")?My(i,t):i.startsWith("ellipse(")?Ly(i,t):i.startsWith("inset(")?By(i,s,t):i.startsWith("rect(")?Oy(i,t):i.startsWith("xywh(")?Ny(i,t):i.startsWith("ray(")?Ty(i,t):i.startsWith("polygon(")?Vy(i,t):(console.warn("Unsupported offset-path:",e),{x:0,y:0,angle:0})}function Ay(s,e){let t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttribute("d",s);let i=t.getTotalLength(),n=e<=1?e*i:e,r=t.getPointAtLength(n),o=t.getPointAtLength(Math.min(i,n+.01)),a=Math.atan2(o.y-r.y,o.x-r.x)*180/Math.PI;return{x:r.x,y:r.y,angle:a}}function Ty(s,e){let i=s.match(/ray\(([^)]+)\)/)[1].trim(),[n,r]=i.split("at").map(m=>m&&m.trim()),o=n.split(/\s+/),a=ky(o[0]),l=a*Math.PI/180,c=0,h=0;if(r){let m=r.split(/\s+/);c=parseFloat(m[0]),h=parseFloat(m[1])}let p=(e<=1,e),d=c+Math.cos(l)*p,u=h+Math.sin(l)*p;return{x:d,y:u,angle:a}}function My(s,e){let i=s.match(/circle\(([^)]+)\)/)[1],[n,r]=i.split("at").map(u=>u.trim()),o=parseFloat(n),[a,l]=r.split(/\s+/).map(parseFloat),c=e*2*Math.PI,h=a+Math.cos(c)*o,p=l+Math.sin(c)*o,d=c*180/Math.PI+90;return{x:h,y:p,angle:d}}function Ly(s,e){let i=s.match(/ellipse\(([^)]+)\)/)[1].split("at"),n=i[0].trim().split(/\s+/).map(parseFloat),r=i[1].trim().split(/\s+/).map(parseFloat),o=n[0],a=n[1],l=r[0],c=r[1],h=e*2*Math.PI,p=l+Math.cos(h)*o,d=c+Math.sin(h)*a,u=-Math.sin(h)*o,m=Math.cos(h)*a,f=Math.atan2(m,u)*180/Math.PI;return{x:p,y:d,angle:f}}function Oy(s,e){let i=s.match(/rect\(([^)]+)\)/)[1].split(/\s+/).map(l=>parseFloat(l)),n=i[0],r=i[1],o=i[2],a=i[3];return hm(n,a,r,o,e)}function Ny(s,e){let i=s.match(/xywh\(([^)]+)\)/)[1].split(/\s+/).map(parseFloat),n=i[0],r=i[1],o=i[2],a=i[3];return hm(r,n,n+o,r+a,e)}function Vy(s,e){let n=s.match(/polygon\(([^)]+)\)/)[1].split(",").map(w=>w.trim().split(/\s+/).map(parseFloat)),r=[0];for(let w=1;w<n.length;w++){let C=n[w][0]-n[w-1][0],S=n[w][1]-n[w-1][1];r.push(Math.hypot(C,S)+r[w-1])}let o=n[0][0]-n[n.length-1][0],a=n[0][1]-n[n.length-1][1];r.push(Math.hypot(o,a)+r[r.length-1]);let l=r[r.length-1],c=e*l,h=r.findIndex(w=>w>=c);h<=0&&(h=1);let p=r[h-1],d=r[h],u=(c-p)/(d-p),m=n[(h-1)%n.length],f=n[h%n.length],v=m[0]+(f[0]-m[0])*u,y=m[1]+(f[1]-m[1])*u,x=Math.atan2(f[1]-m[1],f[0]-m[0])*180/Math.PI;return{x:v,y,angle:x}}function hm(s,e,t,i,n){let r=t-e,o=i-s,a=2*(r+o),l=n*a;if(l<r)return{x:e+l,y:s,angle:0};if(l-=r,l<o){let h=s+l;return{x:t,y:h,angle:90}}if(l-=o,l<r)return{x:t-l,y:i,angle:180};l-=r;let c=i-l;return{x:e,y:c,angle:270}}function Ry(s){let e=[],t=0;for(;t<s.length;){let i=s[t];if(/\s/.test(i)){t++;continue}if("+-*/()".includes(i)){e.push({type:i,value:i}),t++;continue}if(/[0-9.]/.test(i)){let n=t;for(;/[0-9.]/.test(s[t]);)t++;let r=s.slice(n,t);if(s[t]==="%"){t++,e.push({type:"percentage",value:parseFloat(r)});continue}if(s.slice(t,t+2)==="px"){t+=2,e.push({type:"dimension",value:parseFloat(r),unit:"px"});continue}e.push({type:"number",value:parseFloat(r)});continue}if(/[a-zA-Z]/.test(i)){let n=t;for(;/[a-zA-Z]/.test(s[t]);)t++;let r=s.slice(n,t);if(r==="calc"&&s[t]==="("){e.push({type:"func",value:"calc"});continue}throw new Error("Unsupported function: "+r)}throw new Error("Unexpected character in calc(): "+i)}return e}function zy(s){let e=0;function t(){return s[e]}function i(){return s[e++]}function n(){let l=r();for(;t()&&(t().type==="+"||t().type==="-");){let c=i().type,h=r();l={type:"binary",op:c,left:l,right:h}}return l}function r(){let l=o();for(;t()&&(t().type==="*"||t().type==="/");){let c=i().type,h=o();l={type:"binary",op:c,left:l,right:h}}return l}function o(){let l=t();if(!l)throw"Unexpected end in calc()";if(l.type==="number")return i(),{type:"number",value:l.value};if(l.type==="dimension")return i(),{type:"dimension",value:l.value,unit:l.unit};if(l.type==="percentage")return i(),{type:"percentage",value:l.value};if(l.type==="func"){if(i(),t().type!=="(")throw"Expected '(' after calc";i();let c=n();if(!t()||t().type!==")")throw"Expected ')'";return i(),c}if(l.type==="("){i();let c=n();if(!t()||t().type!==")")throw"Expected ')'";return i(),c}throw new Error("Unexpected calc token "+JSON.stringify(l))}let a=n();if(e!==s.length)throw"Extra tokens after calc";return a}function zc(s,e){switch(s.type){case"number":return s.value;case"dimension":return s.value;case"percentage":return e.percentBase*(s.value/100);case"binary":{let t=zc(s.left,e),i=zc(s.right,e);switch(s.op){case"+":return t+i;case"-":return t-i;case"*":return t*i;case"/":return t/i}}}throw"Invalid AST node "+s.type}function as(s,e,t=!1){if(s=s.trim(),/^[0-9.]+px$/.test(s))return parseFloat(s);let i=t?e.offsetHeight:e.offsetWidth;if(/^[0-9.]+%$/.test(s)){let r=parseFloat(s);return i*(r/100)}let n=zy(Ry(s));return zc(n,{percentBase:i})}function Fy(s){let e=s.trim().replace(/^inset\s*\(/,"").replace(/\)\s*$/,""),t=[],i="",n=0;for(let r=0;r<e.length;r++){let o=e[r];o==="("?(n++,i+=o):o===")"?(n--,i+=o):/\s/.test(o)&&n===0?i.trim()!==""&&(t.push(i.trim()),i=""):i+=o}return i.trim()!==""&&t.push(i.trim()),t}function By(s,e,t){let i=Fy(s);if(i.length!==4)throw new Error("inset() must have 4 arguments");let n=as(i[0],e,!0),r=as(i[1],e,!1),o=as(i[2],e,!0),a=as(i[3],e,!1),l=e.offsetWidth,c=e.offsetHeight,h=a,p=n,d=l-r,u=c-o,f=2*(d-h+(u-p))*t,v=d-h;return f<=v?{x:h+f,y:p,angle:0}:(f-=v,v=u-p,f<=v?{x:d,y:p+f,angle:90}:(f-=v,v=d-h,f<=v?{x:d-f,y:u,angle:180}:(f-=v,{x:h,y:u-f,angle:270})))}function Wy(s){return pm.some(e=>s[e]?s[e]!=="none":!1)||(s.containerType?s.containerType!=="normal":!1)||(s.backdropFilter?s.backdropFilter!=="none":!1)||(s.filter?s.filter!=="none":!1)||Hy.some(e=>(s.willChange||"").includes(e))||Gy.some(e=>(s.contain||"").includes(e))}function ls(s){return s.assignedSlot?s.assignedSlot:s.parentNode instanceof ShadowRoot?s.parentNode.host:s.parentNode}function nm(s,e){for(let t=e;t;t=ls(t))if(t===s)return!0;return!1}function jy(s){let e=new Set,t=s.getRootNode(),i=s.ownerDocument?.defaultView?.ShadowRoot??ShadowRoot;for(;t;)e.add(t),t instanceof i?t=t.host?.getRootNode()??null:t=t.parentNode?t.parentNode.getRootNode():null;return e}function Fc(s){for(let e=s;e;e=ls(e))if(e instanceof Element&&ne(e).display==="none")return null;for(let e=ls(s);e;e=ls(e)){if(!(e instanceof Element))continue;let t=ne(e);if(t.display!=="contents"&&(t.position!=="static"||Wy(t)||e.tagName==="BODY"))return e}return null}function rm(s,e){let t=s[e],i=Fc(s),n=jy(s);for(;i&&!n.has(i.getRootNode());)t-=i[e],i=Fc(i);return t}function Yy(s){let e=ne(s);if(e.transform&&e.transform!=="none"||e.perspective&&e.perspective!=="none"||e.filter&&e.filter!=="none"||e.backdropFilter&&e.backdropFilter!=="none")return!0;let t=e.contain||"";if(t.includes("paint")||t.includes("layout")||t.includes("strict")||t.includes("content"))return!0;let i=e.willChange||"";return/transform|perspective|filter|backdrop-filter/.test(i)}function jc(s,e){let t=Oe(s,e);for(;t;){if(Yy(t))return t;t=Oe(t,e)}return null}var Pt,ve,Qt,En,cs,pm,Hy,Gy,kt=g(()=>{"use strict";cs=0;pm=["transform","translate","scale","rotate","perspective"],Hy=["transform","translate","scale","rotate","perspective","filter"],Gy=["paint","layout","strict","content"]});var hs,Yc=g(()=>{"use strict";fe();Vc();ue();kt();Me();le();hs=class extends F{_startPos;_circle;_circle2;_oldValue;_offsetInControl;constructor(e,t,i){super(e,t,i)}_getTransformOriginCanvasPoint(){let t=getComputedStyle(this.extendedItem.element).transformOrigin.split(" ");return it(this.extendedItem.element,this.designerCanvas.canvas,this.designerCanvas.iframes).transformPoint(new DOMPoint(parseFloat(t[0]),parseFloat(t[1])))}refresh(e,t){let i=this._getTransformOriginCanvasPoint();this._valuesHaveChanges(i.x,i.y,this.designerCanvas.zoomFactor)&&(this._removeAllOverlays(),this._circle=this._drawCircle(i.x,i.y,5/this.designerCanvas.zoomFactor,"svg-transform-origin"),this._circle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._circle.style.cursor="pointer",this._circle2=this._drawCircle(i.x,i.y,1/this.designerCanvas.zoomFactor,"svg-transform-origin"),this._circle2.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._circle2.style.pointerEvents="none",this._circle.addEventListener(P.PointerDown,n=>this.pointerEvent(n)),this._circle.addEventListener(P.PointerMove,n=>this.pointerEvent(n)),this._circle.addEventListener(P.PointerUp,n=>this.pointerEvent(n)))}extend(e,t){let i=this._getTransformOriginCanvasPoint();if(isNaN(i.x)||isNaN(i.y)){this.remove();return}else{let n=this.extendedItem.getStyleFromSheetOrLocal("transform-origin");n&&(this._oldValue=n),this.refresh(e,t)}}pointerEvent(e){e.stopPropagation();let t=getComputedStyle(this.extendedItem.element),i=t.transformOrigin.split(" "),n=[];n[0]=parseFloat(i[0])/parseFloat(this.extendedItem.element.style.width),n[1]=parseFloat(i[1])/parseFloat(this.extendedItem.element.style.height);let r=this._getTransformOriginCanvasPoint(),o=this.designerCanvas.getNormalizedEventCoordinates(e),a=this.extendedItem.element.convertPointFromNode(o,this.designerCanvas.canvas),l=this.designerCanvas.getNormalizedEventCoordinates(e);switch(e.type){case P.PointerDown:e.target.setPointerCapture(e.pointerId);let c=K(e.target);this._offsetInControl={x:c.width/2+(c.x-e.x),y:c.height/2+(c.y-e.y)},this._startPos={x:l.x,y:l.y};break;case P.PointerMove:if(this._startPos&&e.buttons>0){let h=l.x-this._startPos.x,p=l.y-this._startPos.y;this._circle.setAttribute("cx",r.x+h),this._circle.setAttribute("cy",r.y+p),this._circle2.setAttribute("cx",r.x+h),this._circle2.setAttribute("cy",r.y+p)}break;case P.PointerUp:if(e.target.releasePointerCapture(e.pointerId),this._startPos){a.x+=this._offsetInControl.x,a.y+=this._offsetInControl.y;let h=this.extendedItem.openGroup("change transform-origin"),p=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.rootDesignItem.element})[0];if(this._oldValue)try{let m=this._oldValue.split(" "),f=Gi(a.x,this.extendedItem.element,"width",di(m[0]),y=>V(this.extendedItem,y)),v=Gi(a.x,this.extendedItem.element,"width",di(m[0]),y=>V(this.extendedItem,y));m.length>1&&(v=Gi(a.y,this.extendedItem.element,"height",di(m[1]),y=>V(this.extendedItem,y))),this.extendedItem.updateStyleInSheetOrLocal("transform-origin",f+" "+v)}catch{this.extendedItem.updateStyleInSheetOrLocal("transform-origin",V(this.extendedItem,a.x)+"px "+V(this.extendedItem,a.y)+"px")}else this.extendedItem.updateStyleInSheetOrLocal("transform-origin",V(this.extendedItem,a.x)+"px "+V(this.extendedItem,a.y)+"px");It();let d=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.rootDesignItem.element})[0],u={x:p.p1.x-d.p1.x,y:p.p1.y-d.p1.y};t.translate&&t.translate!=="none"&&(u.x+=parseFloat(t.translate.split(" ")[0]),t.translate.split(" ").length===1?u.y+=parseFloat(t.translate.split(" ")[0]):u.y+=parseFloat(t.translate.split(" ")[1])),this.extendedItem.updateStyleInSheetOrLocal("translate",V(this.extendedItem,u.x)+"px "+V(this.extendedItem,u.y)+"px"),h.commit(),this.refresh(null,null),this._startPos=null}break}}dispose(){this._removeAllOverlays()}}});import{css as Uy}from"@node-projects/base-custom-webcomponent";var ps,Uc=g(()=>{"use strict";Yc();ue();ps=class{showOnlyWhenSet;constructor(e=!0){this.showOnlyWhenSet=e}shouldExtend(e,t,i){if(!i.isRootItem&&i.node instanceof HTMLElement||i.node instanceof SVGElement&&i.node.localName==="svg"){if(!this.showOnlyWhenSet||i.hasStyle("transformOrigin"))return!0;let n=getComputedStyle(i.element);if(n.display!="inline"&&i.element.getBoundingClientRect){let r=K(i.element),o=n.transformOrigin.split(" "),a=parseFloat(o[0])-r.width/2,l=parseFloat(o[1])-r.height/2;if(a>.5||a<-.5||l>.5||l<-.5)return!0}}return!1}getExtension(e,t,i){return new hs(e,t,i)}static style=Uy`.svg-transform-origin{stroke:#3899ec;fill:#000;pointer-events:auto}`}});var ds,Xc=g(()=>{"use strict";le();ie();ds=class extends F{constructor(e,t,i){super(e,t,i)}_path;_path2;extend(e,t){this.refresh(e,t)}refresh(e,t){let i=getComputedStyle(this.extendedItem.element);if(i.margin!=="0px"){let n=Number.parseFloat(i.marginLeft.replace("px","")),r=Number.parseFloat(i.marginTop.replace("px","")),o=Number.parseFloat(i.marginRight.replace("px","")),a=Number.parseFloat(i.marginBottom.replace("px",""));if(!isNaN(n)&&!isNaN(r)&&!isNaN(o)&&!isNaN(a)){let l=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!isNaN(l.p1.x)&&this._valuesHaveChanges(n,r,o,a,l.p1.x,l.p1.y,l.p2.x,l.p2.y,l.p3.x,l.p3.y,l.p4.x,l.p4.y)){let c=this.extendedItem.element.getBoxQuads({box:"margin",relativeTo:this.designerCanvas.canvas})[0],h="M"+[l.p1,l.p2,l.p3,l.p4].map(p=>p.x+","+p.y).join(" ")+"Z ";h+="M"+[c.p1,c.p2,c.p3,c.p4].map(p=>p.x+","+p.y).join(" ")+"Z ",this._path=this._drawPath(h,"svg-margin-fill",this._path,M.Background),this._path2=this._drawPath(h,"svg-margin",this._path2,M.Background)}}}}dispose(){this._removeAllOverlays()}}});function mm(s){let e=s;for(;e;){if(e instanceof(e.ownerDocument.defaultView??window).SVGSVGElement)return!0;if(e instanceof(e.ownerDocument.defaultView??window).SVGDefsElement||e instanceof(e.ownerDocument.defaultView??window).SVGMetadataElement)return!1;e=e.parentElement}return!0}function ZC(s,...e){let t=document.createElementNS("http://www.w3.org/2000/svg","svg");return t.innerHTML=ui(s,...e),t}function ui(s,...e){if(s.length===1)return s.raw[0];{let t="";for(let i=0;i<s.length;i++)t+=s[i]+(e[i]??"");return t}}function Xy(s){return s instanceof SVGPathElement||s instanceof SVGRectElement||s instanceof SVGLineElement||s instanceof SVGCircleElement||s instanceof SVGEllipseElement||s instanceof SVGPolygonElement||s instanceof SVGPolylineElement}function Pn(s,e,t){let i=_m(s,e);if(i){let o=um(s,t);return xm(i.matrix,o.x/i.bbox.width,o.y/i.bbox.height)}let n=um(s,t),r=e.canvas.convertPointFromNode(n,s,{iframes:e.iframes});return{x:r.x,y:r.y}}function fm(s,e,t){let i=_m(s,e);if(i){let r=xm(i.inverseMatrix,t.x,t.y);return{x:i.bbox.x+r.x*i.bbox.width,y:i.bbox.y+r.y*i.bbox.height}}let n=s.convertPointFromNode({x:t.x,y:t.y},e.canvas,{iframes:e.iframes});return ov(s,{x:n.x,y:n.y})}function gm(s,e,t){let i=ym(s,e);if(!(t?.includeMarkers!==!1))return i;let r=$y(s,e);return i&&r?`${i} ${r}`:i??r}function ym(s,e){if(!Xy(s))return null;let t=s.getPathData;if(!t)return null;let i=t.call(s,{normalize:!0})??[];if(!i.length)return null;let n=[],r={x:0,y:0},o={x:0,y:0};for(let a of i){let l=a.type.toUpperCase(),c=a.type!==l,h=a.values??[],p=(u,m)=>c?{x:r.x+u,y:r.y+m}:{x:u,y:m},d=(u,m)=>{let f=p(u,m);return Pn(s,e,f)};switch(l){case"M":{let u=d(h[0],h[1]);n.push({type:"M",values:[u.x,u.y]}),r=p(h[0],h[1]),o={...r};break}case"L":{let u=d(h[0],h[1]);n.push({type:"L",values:[u.x,u.y]}),r=p(h[0],h[1]);break}case"H":{let u=c?{x:r.x+h[0],y:r.y}:{x:h[0],y:r.y},m=Pn(s,e,u);n.push({type:"L",values:[m.x,m.y]}),r=u;break}case"V":{let u=c?{x:r.x,y:r.y+h[0]}:{x:r.x,y:h[0]},m=Pn(s,e,u);n.push({type:"L",values:[m.x,m.y]}),r=u;break}case"C":{let u=d(h[0],h[1]),m=d(h[2],h[3]),f=d(h[4],h[5]);n.push({type:"C",values:[u.x,u.y,m.x,m.y,f.x,f.y]}),r=p(h[4],h[5]);break}case"S":{let u=d(h[0],h[1]),m=d(h[2],h[3]);n.push({type:"S",values:[u.x,u.y,m.x,m.y]}),r=p(h[2],h[3]);break}case"Q":{let u=d(h[0],h[1]),m=d(h[2],h[3]);n.push({type:"Q",values:[u.x,u.y,m.x,m.y]}),r=p(h[2],h[3]);break}case"T":{let u=d(h[0],h[1]);n.push({type:"T",values:[u.x,u.y]}),r=p(h[0],h[1]);break}case"A":{let u=d(h[5],h[6]);n.push({type:"A",values:[h[0],h[1],h[2],h[3],h[4],u.x,u.y]}),r=p(h[5],h[6]);break}case"Z":{n.push({type:"Z",values:[]}),r={...o};break}}}return hi(n)}function $y(s,e){if(!(s instanceof SVGGraphicsElement))return null;let t=Ky(s);if(!t.length)return null;let i=s.ownerSVGElement;if(!i)return null;let n=document.createElementNS("http://www.w3.org/2000/svg","g");n.setAttribute("visibility","hidden"),n.setAttribute("pointer-events","none"),i.appendChild(n);try{let r=[];for(let o of t){let a=Zy(s,o);if(!a)continue;n.appendChild(a);let l=a.querySelectorAll("path, rect, line, circle, ellipse, polygon, polyline");for(let c of l){let h=ym(c,e);h&&r.push(h)}}return r.length?r.join(" "):null}finally{n.remove()}}function Ky(s){let e=Qy(s);if(!e.length)return[];let t=[],i=$c(s,"marker-start"),n=$c(s,"marker-mid"),r=$c(s,"marker-end");if(i&&t.push({marker:i,point:e[0].start,angle:us(i,e[0].startAngle,void 0,!0)}),n){for(let o=0;o<e.length-1;o++)dm(e[o].end,e[o+1].start)&&t.push({marker:n,point:e[o].end,angle:us(n,e[o].endAngle,e[o+1].startAngle,!1)});dm(e[e.length-1].end,e[0].start)&&e.length>1&&t.push({marker:n,point:e[e.length-1].end,angle:us(n,e[e.length-1].endAngle,e[0].startAngle,!1)})}if(r){let o=e[e.length-1];t.push({marker:r,point:o.end,angle:us(r,o.endAngle,void 0,!1)})}return t}function Qy(s){let e=s.getPathData;if(!e)return[];let t=e.call(s,{normalize:!0})??[],i=[],n={x:0,y:0},r={x:0,y:0};for(let o of t)switch(o.type){case"M":{n={x:o.values[0],y:o.values[1]},r={...n};break}case"L":{let a={x:o.values[0],y:o.values[1]},l=ms(n,a);l!=null&&i.push({start:{...n},end:a,startAngle:l,endAngle:l}),n=a;break}case"C":{let a={x:o.values[0],y:o.values[1]},l={x:o.values[2],y:o.values[3]},c={x:o.values[4],y:o.values[5]},h=rv([n,a,l,c]),p=sv([n,a,l,c]);h!=null&&p!=null&&i.push({start:{...n},end:c,startAngle:h,endAngle:p}),n=c;break}case"Z":{let a=ms(n,r);a!=null&&i.push({start:{...n},end:{...r},startAngle:a,endAngle:a}),n={...r};break}}return i}function $c(s,e){let t=s.getAttribute(e)?.trim();if(!t)return null;let n=/^url\((['"]?)(.*?)\1\)$/.exec(t)?.[2]??t;if(!n.startsWith("#"))return null;let r=s.getRootNode(),o=typeof r.querySelector=="function"?r.querySelector(n):null;return o instanceof SVGMarkerElement?o:null}function Zy(s,e){let t=e.marker;if(!t.childNodes.length)return null;let i=qy(s,t),n=document.createElementNS("http://www.w3.org/2000/svg","g"),r=[`translate(${e.point.x} ${e.point.y})`,`rotate(${e.angle})`];i!==1&&r.push(`scale(${i})`),n.setAttribute("transform",r.join(" "));let o=Jy(t),a=ev(t,o,{x:fs(t.refX),y:fs(t.refY)}),l=document.createElementNS("http://www.w3.org/2000/svg","g");l.setAttribute("transform",`translate(${-a.x} ${-a.y})`),n.appendChild(l);let c=document.createElementNS("http://www.w3.org/2000/svg","g");o&&c.setAttribute("transform",o.transform),l.appendChild(c);for(let h of Array.from(t.childNodes))c.appendChild(h.cloneNode(!0));return n}function qy(s,e){if(e.getAttribute("markerUnits")==="userSpaceOnUse")return 1;let t=parseFloat(getComputedStyle(s).strokeWidth);return Number.isFinite(t)&&t>0?t:1}function Jy(s){let e=s.viewBox.baseVal;if(e==null||e.width===0&&e.height===0)return null;let t=fs(s.markerWidth),i=fs(s.markerHeight);if(!t||!i||!e.width||!e.height)return null;let n=s.preserveAspectRatio.baseVal,r=t/e.width,o=i/e.height,a=-e.x*r,l=-e.y*o;if(n.align!==SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE){let c=n.meetOrSlice===SVGPreserveAspectRatio.SVG_MEETORSLICE_SLICE?Math.max(r,o):Math.min(r,o);r=c,o=c;let h=t-e.width*c,p=i-e.height*c,{xAlign:d,yAlign:u}=tv(n.align);a=-e.x*c+h*d,l=-e.y*c+p*u}return{transform:`matrix(${r} 0 0 ${o} ${a} ${l})`,scaleX:r,scaleY:o,translateX:a,translateY:l}}function ev(s,e,t){return e?{x:t.x*e.scaleX+e.translateX,y:t.y*e.scaleY+e.translateY}:t}function tv(s){switch(s){case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMIN:return{xAlign:.5,yAlign:0};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMIN:return{xAlign:1,yAlign:0};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMID:return{xAlign:0,yAlign:.5};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMID:return{xAlign:.5,yAlign:.5};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMID:return{xAlign:1,yAlign:.5};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMAX:return{xAlign:0,yAlign:1};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMAX:return{xAlign:.5,yAlign:1};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMAX:return{xAlign:1,yAlign:1};default:return{xAlign:0,yAlign:0}}}function us(s,e,t,i){let n=s.orientType.baseVal===SVGMarkerElement.SVG_MARKER_ORIENT_AUTO?"auto":s.getAttribute("orient")?.trim()??"0";if(n==="auto"||n==="auto-start-reverse"){let r=t==null?e:nv(e,t);return i&&n==="auto-start-reverse"&&(r+=180),r}return iv(n)}function iv(s){return s.endsWith("rad")?parseFloat(s)*180/Math.PI:s.endsWith("turn")?parseFloat(s)*360:s.endsWith("grad")?parseFloat(s)*.9:parseFloat(s)}function nv(s,e){let t={x:Math.cos(s*Math.PI/180),y:Math.sin(s*Math.PI/180)},i={x:Math.cos(e*Math.PI/180),y:Math.sin(e*Math.PI/180)},n={x:t.x+i.x,y:t.y+i.y};return Math.abs(n.x)<1e-10&&Math.abs(n.y)<1e-10?e:Math.atan2(n.y,n.x)*180/Math.PI}function rv(s){for(let e=0;e<s.length-1;e++){let t=ms(s[e],s[e+1]);if(t!=null)return t}return null}function sv(s){for(let e=s.length-1;e>0;e--){let t=ms(s[e-1],s[e]);if(t!=null)return t}return null}function ms(s,e){let t=e.x-s.x,i=e.y-s.y;return Math.abs(t)<1e-10&&Math.abs(i)<1e-10?null:Math.atan2(i,t)*180/Math.PI}function dm(s,e){return Math.abs(s.x-e.x)<1e-10&&Math.abs(s.y-e.y)<1e-10}function fs(s){return s?.baseVal?.value??0}function um(s,e){let t=vm(s);return{x:e.x-t.x,y:e.y-t.y}}function ov(s,e){let t=vm(s);return{x:e.x+t.x,y:e.y+t.y}}function vm(s){if(!(s instanceof SVGGraphicsElement)||s instanceof SVGSVGElement)return{x:0,y:0};let e=s.getBBox();return{x:e.x,y:e.y}}function _m(s,e){if(!(s instanceof SVGGraphicsElement)||s instanceof SVGSVGElement)return null;let t=s.getBBox();if(Math.abs(t.width)<1e-10||Math.abs(t.height)<1e-10)return null;let i=s.getBoxQuads({relativeTo:e.canvas,iframes:e.iframes})[0];if(!i)return null;let n=av(i);if(!n)return null;let r=lv(n);return r?{bbox:t,matrix:n,inverseMatrix:r}:null}function av(s){let e=s.p1.x,t=s.p1.y,i=s.p2.x,n=s.p2.y,r=s.p3.x,o=s.p3.y,a=s.p4.x,l=s.p4.y,c=e-i+r-a,h=t-n+o-l,p=i-r,d=n-o,u=a-r,m=l-o,f=0,v=0;if(Math.abs(c)>=1e-10||Math.abs(h)>=1e-10){let y=p*m-d*u;if(Math.abs(y)<1e-10)return null;f=(c*m-h*u)/y,v=(p*h-d*c)/y}return[i-e+f*i,a-e+v*a,e,n-t+f*n,l-t+v*l,t,f,v,1]}function xm(s,e,t){let i=s[0]*e+s[1]*t+s[2],n=s[3]*e+s[4]*t+s[5],r=s[6]*e+s[7]*t+s[8],o=Math.abs(r)<1e-10?r<0?-1e-10:1e-10:r;return{x:i/o,y:n/o}}function lv(s){let e=s[0]*(s[4]*s[8]-s[5]*s[7])-s[1]*(s[3]*s[8]-s[5]*s[6])+s[2]*(s[3]*s[7]-s[4]*s[6]);if(Math.abs(e)<1e-10)return null;let t=1/e;return[(s[4]*s[8]-s[5]*s[7])*t,(s[2]*s[7]-s[1]*s[8])*t,(s[1]*s[5]-s[2]*s[4])*t,(s[5]*s[6]-s[3]*s[8])*t,(s[0]*s[8]-s[2]*s[6])*t,(s[2]*s[3]-s[0]*s[5])*t,(s[3]*s[7]-s[4]*s[6])*t,(s[1]*s[6]-s[0]*s[7])*t,(s[0]*s[4]-s[1]*s[3])*t]}var Zt=g(()=>{"use strict";Ue();Ue()});import{css as cv}from"@node-projects/base-custom-webcomponent";var gs,Kc=g(()=>{"use strict";Xc();Z();Zt();gs=class{shouldExtend(e,t,i){return i.nodeType==D.Element}getExtension(e,t,i){return new ds(e,t,i)}style=cv`.svg-margin-fill{fill:color(display-p3 1 0 1 / 15%);fill-rule:evenodd}.svg-margin{fill:color(display-p3 1 0 1 / 80%);fill-rule:evenodd;mask:url(#mask-stripe-margin)}`;static svgDefs=ui`<pattern id="pattern-stripe-margin" patternUnits="userSpaceOnUse" width="10" height="10" patternTransform="rotate(45)" class="pattern"><line x1="0" y="0" x2="0" y2="10" stroke="color(display-p3 1 0 1 / 80%)" stroke-width="1"></line></pattern><mask id="mask-stripe-margin"><rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-stripe-margin)"></mask>`}});var ys,Qc=g(()=>{"use strict";le();ys=class extends F{_line1;_line2;_line3;_line4;_textX;_textY;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}_oldValues=[];refresh(){let e=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element),t=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.parent.element);if(this._valuesHaveChanges(this.designerCanvas.scaleFactor,e.x,e.y,t.x,t.y,e.height,e.width,t.height,t.width)){this._line1=this._drawLine(t.x,e.y+e.height/2,e.x,e.y+e.height/2,"svg-position",this._line1),this._line2=this._drawLine(t.x+t.width,e.y+e.height/2,e.x+e.width,e.y+e.height/2,"svg-position",this._line2),this._line3=this._drawLine(e.x+e.width/2,t.y,e.x+e.width/2,e.y,"svg-position",this._line3),this._line4=this._drawLine(e.x+e.width/2,t.y+t.height,e.x+e.width/2,e.y+e.height,"svg-position",this._line4),this._line1.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line2.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line3.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line4.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line1.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor,this._line2.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor,this._line3.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor,this._line4.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor;let i,n;if(this.extendedItem.element.computedStyleMap){let r=this.extendedItem.element.computedStyleMap();i=r.get("right")instanceof CSSUnitValue,n=r.get("bottom")instanceof CSSUnitValue}else i=!!this.extendedItem.element?.style?.right,n=!!this.extendedItem.element?.style?.bottom;if(i){let r=Math.round(t.x+t.width-(e.x+e.width));this._textX=this._drawTextWithBackground(""+r,t.x+t.width-r/2,e.y+e.height/2,"white","svg-position-text",this._textX),this._textX[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textX[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}else{let r=Math.round(e.x-t.x);this._textX=this._drawTextWithBackground(""+r,t.x+r/2,e.y+e.height/2,"white","svg-position-text",this._textX),this._textX[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textX[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}if(n){let r=Math.round(t.y+t.height-(e.y+e.height));this._textY=this._drawTextWithBackground(""+r,e.x+e.width/2,t.y+t.height-r/2,"white","svg-position-text",this._textY),this._textY[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textY[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}else{let r=Math.round(e.y-t.y);this._textY=this._drawTextWithBackground(""+r,e.x+e.width/2,t.y+r/2,"white","svg-position-text",this._textY),this._textY[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textY[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}}}dispose(){this._removeAllOverlays()}}});import{css as hv}from"@node-projects/base-custom-webcomponent";var vs,Zc=g(()=>{"use strict";Qc();vs=class{shouldExtend(e,t,i){if(!i?.parent||i.element instanceof HTMLTemplateElement)return!1;let n=getComputedStyle(i.element);return n.position==="relative"||n.position==="absolute"}getExtension(e,t,i){return new ys(e,t,i)}static style=hv`.svg-position-text{text-anchor:middle;alignment-baseline:central}`}});var _s,qc=g(()=>{"use strict";le();ie();Zt();_s=class extends F{_rect;_options;constructor(e,t,i,n){super(e,t,i),this._options={useSvgGeometryOutline:!0,includeSvgMarkers:!0,...n??{}}}extend(){this.refresh()}refresh(){if(this._options.useSvgGeometryOutline){let t=gm(this.extendedItem.element,this.designerCanvas,{includeMarkers:this._options.includeSvgMarkers});if(t){this._rect=this._drawPath(t,"svg-hover-fill",this._rect,M.Background),this._rect.style.strokeWidth=(3/this.designerCanvas.scaleFactor).toString();return}}let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];isNaN(e.p1.x)||(this._rect=this._drawTransformedRect(e,"svg-hover",this._rect,M.Background),this._rect.style.strokeWidth=(3/this.designerCanvas.scaleFactor).toString())}dispose(){this._removeAllOverlays()}}});import{css as pv}from"@node-projects/base-custom-webcomponent";var xs,Jc=g(()=>{"use strict";qc();xs=class{_options;constructor(e){this._options=e??{}}shouldExtend(e,t,i){return!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new _s(e,t,i,this._options)}static style=pv`.svg-hover{stroke:#90caf966;fill:none}.svg-hover-fill{stroke:#90caf966;fill:#90caf966}`}});var Ce,eh=g(()=>{"use strict";(function(s){s.DragOrSelect="DragOrSelect",s.Drag="Drag",s.Resize="Resize",s.Rotate="Rotate",s.DrawSelection="DrawSelection",s.DrawingSelection="DrawingSelection"})(Ce||(Ce={}))});var bs,th=g(()=>{"use strict";fe();eh();oe();rt();Et();Xe();bs=class s{cursor="default";_minMoveOffset=5;_movedSinceStartedAction=!1;_initialPoint;_actionType;_actionStartedDesignItem;_actionStartedClickDesignItem;_actionStartedDesignItems;_clonedItems;_copiedItemsInserted=!1;_previousEventName;_dragOverExtensionItem;_dragParentExtensionItem;_moveItemsOffset={x:0,y:0};_initialOffset;_started=!1;_holdTimeout;_firstTimeInMove;_secondTimeInMove;_changeGroup;constructor(){}activated(e){}dispose(){}_showContextMenu(e,t){if(e.preventDefault(),!X(e)){let i=t.elementsFromPoint(e.x,e.y);for(let o of t.instanceServiceContainer.selectionService.selectedElements)if(i.indexOf(o.element)>=0){t.showDesignItemContextMenu(t.instanceServiceContainer.selectionService.primarySelection,e);return}let n=t.serviceContainer.elementAtPointService.getElementAtPoint(t,{x:e.x,y:e.y}),r=O.GetOrCreateDesignItem(n,n,t.serviceContainer,t.instanceServiceContainer);t.instanceServiceContainer.selectionService.isSelected(r)||t.instanceServiceContainer.selectionService.setSelectedElements([r],e),t.showDesignItemContextMenu(r,e)}}pointerEventHandler(e,t,i){X(t)?this.cursor="copy":this.cursor="default";let n=e.serviceContainer.elementInteractionServices;if(n){for(let a of n)if(a.stopEventHandling(e,t,i))return}if(t.button==2&&t.type==P.PointerDown){this._showContextMenu(t,e);return}if(X(t)&&t.shiftKey||t.buttons==4){let a=e.serviceContainer.designerTools.get(q.Pan);if(a){a.pointerEventHandler(e,t,i);return}}switch(t.type){case P.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._movedSinceStartedAction=!1,this._copiedItemsInserted=!1,this._clonedItems=null,this._firstTimeInMove=!1,this._secondTimeInMove=!1;break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool(),this._copiedItemsInserted=!1,this._clonedItems=null,this._firstTimeInMove=!1,this._secondTimeInMove=!1;break;case P.PointerMove:this._firstTimeInMove&&(this._secondTimeInMove=!0),this._secondTimeInMove?this._firstTimeInMove=!1:this._firstTimeInMove=!0;break}if(!i)return;let r=e.getNormalizedEventCoordinates(t),o=O.GetOrCreateDesignItem(i,i,e.serviceContainer,e.instanceServiceContainer);this._actionType==null&&(this._initialPoint=r,t.shiftKey?(t.preventDefault(),this._actionType=Ce.DrawSelection):t.type==P.PointerDown&&(this._actionStartedDesignItem=o,this._actionStartedDesignItems=[...e.instanceServiceContainer.selectionService.selectedElements],e.snapLines.clearSnaplines(),o!==e.rootDesignItem?this._actionType=Ce.Drag:i===e||i===e.rootDesignItem.element||i==null?this._actionType=Ce.DrawSelection:this._actionType=Ce.DragOrSelect)),t.type===P.PointerMove&&(this._movedSinceStartedAction=this._movedSinceStartedAction||Math.abs(r.x-this._initialPoint.x)>this._minMoveOffset||Math.abs(r.y-this._initialPoint.y)>this._minMoveOffset,this._actionType==Ce.DrawSelection&&(this._actionType=Ce.DrawingSelection)),this._actionType==Ce.DrawSelection||this._actionType==Ce.DrawingSelection?this._pointerActionTypeDrawSelection(e,t,i):(this._actionType==Ce.DragOrSelect||this._actionType==Ce.Drag)&&this._pointerActionTypeDragOrSelect(e,t,o,r),t.type==P.PointerUp&&(e.snapLines.clearSnaplines(),this._actionType==Ce.DrawSelection&&o!==e.rootDesignItem&&e.instanceServiceContainer.selectionService.setSelectedElements([o],t),this._resetTool()),this._previousEventName=t.type}_resetTool(){this._actionType=null,this._actionStartedDesignItem=null,this._actionStartedClickDesignItem=null,this._actionStartedDesignItems=null,this._movedSinceStartedAction=!1,this._initialPoint=null,this._initialOffset=null}_pointerActionTypeDrawSelection(e,t,i){let n=e.serviceContainer.designerTools.get(q.DrawSelection);n&&(this._resetTool(),n.pointerEventHandler(e,t,i))}async _pointerActionTypeDragOrSelect(e,t,i,n,r=!1){this._holdTimeout&&(clearTimeout(this._holdTimeout),this._holdTimeout=null);let o=i;if(t.altKey){if(t.type==P.PointerDown){let a=e.instanceServiceContainer.selectionService.primarySelection;if(a){let l=e.elementsFromPoint(t.x,t.y),c=l.indexOf(a.element);c>=0&&c++;let h=l[c];h&&(i=O.GetOrCreateDesignItem(h,h,e.serviceContainer,e.instanceServiceContainer))}}o=i}else t.type==P.PointerDown&&(i=this._getDesignItemToStartDrag(e,i,n));switch(t.type){case P.PointerDown:{this._actionStartedClickDesignItem=o,this._actionStartedDesignItem=i,this._initialOffset=e.getNormalizedOffsetInElement(t,this._actionStartedDesignItem.element),this._moveItemsOffset={x:0,y:0},this._actionStartedDesignItems=[...e.instanceServiceContainer.selectionService.selectedElements],e.alignOnSnap&&e.snapLines.calculateSnaplines(e.instanceServiceContainer.selectionService.selectedElements);break}case P.PointerMove:{if(t.buttons==0)return;if(this._firstTimeInMove){let l=this._actionStartedDesignItem??i;l.instanceServiceContainer.selectionService.selectedElements.includes(l)||(X(t)?l.instanceServiceContainer.selectionService.setSelectedElements([...l.instanceServiceContainer.selectionService.selectedElements,l],t):l.instanceServiceContainer.selectionService.setSelectedElements([l],t),this._actionStartedDesignItems=[...e.instanceServiceContainer.selectionService.selectedElements],e.alignOnSnap&&e.snapLines.calculateSnaplines(e.instanceServiceContainer.selectionService.selectedElements))}if(e.readOnly)return;if(!this._clonedItems){this._clonedItems=[];for(let l of this._actionStartedDesignItems){let c=await l.clone();this._clonedItems&&c&&this._clonedItems.push(c)}}if(!this._actionStartedDesignItem)return;if(this._changeGroup||(this._changeGroup=e.rootDesignItem.openGroup("Move Elements"),window.addEventListener("pointerup",()=>{this._changeGroup?.abort(),this._changeGroup=null},{once:!0})),X(t)&&!this._copiedItemsInserted){this._changeGroup.title="Copy Elements",this._copiedItemsInserted=!0;for(let l=0;l<this._clonedItems.length;l++)this._actionStartedDesignItems[l].insertAdjacentElement(this._clonedItems[l],"beforebegin")}else if(!X(t)&&this._copiedItemsInserted){this._changeGroup.title="Move Elements";for(let l of this._clonedItems)l.remove();this._copiedItemsInserted=!1}let a=n.x!=this._initialPoint.x||n.y!=this._initialPoint.y;if(this._actionType!=Ce.Drag&&a&&(this._actionType=Ce.Drag),this._movedSinceStartedAction){let l=getComputedStyle(this._actionStartedDesignItem.parent.element),c=e.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(this._actionStartedDesignItem.parent,l,this._actionStartedDesignItem));if(c){let h=this._actionStartedDesignItem.parent;this._dragParentExtensionItem!=h?(e.extensionManager.removeExtension(this._dragParentExtensionItem,I.ContainerDrag),e.extensionManager.applyExtension(h,I.ContainerDrag,t),this._dragParentExtensionItem=h):e.extensionManager.refreshExtension(h,I.ContainerDrag);let p=c.canLeave(this._actionStartedDesignItem.parent,this._actionStartedDesignItems),d=null,u=null;if(p&&([d,u]=s.FindPossibleContainer(this._actionStartedDesignItem,this._actionStartedDesignItems,t),d!=null?this._dragOverExtensionItem!=d?(e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerDragOverAndCanBeEntered),e.extensionManager.applyExtension(d,I.ContainerDragOverAndCanBeEntered,t),this._dragOverExtensionItem=d):e.extensionManager.refreshExtension(d,I.ContainerDragOverAndCanBeEntered,t):this._dragOverExtensionItem&&(e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerDragOverAndCanBeEntered),this._dragOverExtensionItem=null)),u&&(this._holdTimeout=setTimeout(()=>{this._pointerActionTypeDragOrSelect(e,t,i,n,!0)},1e3)),u&&(t.altKey||r)){let m=c.getElementOffset(this._actionStartedDesignItem.parent,this._actionStartedDesignItem),f=u.getElementOffset(d,this._actionStartedDesignItem);this._moveItemsOffset={x:f.x-m.x+this._moveItemsOffset.x,y:f.y-m.y+this._moveItemsOffset.y},c.leaveContainer(this._actionStartedDesignItem.parent,this._actionStartedDesignItems);let v={x:n.x-this._moveItemsOffset.x,y:n.y-this._moveItemsOffset.y};u.enterContainer(d,this._actionStartedDesignItems,"normal"),u.place(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,v,this._actionStartedDesignItems),e.extensionManager.removeExtension(this._dragParentExtensionItem,I.ContainerDrag),e.extensionManager.applyExtension(d,I.ContainerDrag,t),this._dragParentExtensionItem=d,e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerDragOverAndCanBeEntered),this._dragOverExtensionItem=null,e.extensionManager.refreshAllAppliedExtentions()}else{let m={x:n.x-this._moveItemsOffset.x,y:n.y-this._moveItemsOffset.y};if(this._started)c.place(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,m,this._actionStartedDesignItems);else if(!c.startPlacementAllowed||c.startPlacementAllowed(t,e,this._actionStartedDesignItem.parent,this._actionStartedDesignItems)){for(let f of this._actionStartedDesignItems)e.extensionManager.removeExtension(f,I.Placement),e.extensionManager.removeExtension(f,I.MouseOver),e.extensionManager.applyExtension(f,I.Placement,t);c.startPlace(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,m,this._actionStartedDesignItems),this._started=!0}}e.extensionManager.refreshExtensions(this._actionStartedDesignItems,null,t,null,20)}}break}case P.PointerUp:{if(this._started=!1,!this._movedSinceStartedAction||this._actionType==Ce.DragOrSelect){this._previousEventName==P.PointerDown&&!X(t)?e.instanceServiceContainer.selectionService.setSelectedElements([this._actionStartedClickDesignItem??this._actionStartedDesignItem],t):this.checkSelectElement(t,e,i);return}if(this._movedSinceStartedAction){let a=getComputedStyle(this._actionStartedDesignItem.parent.element),l=e.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(this._actionStartedDesignItem.parent,a,this._actionStartedDesignItem)),c={x:n.x-this._moveItemsOffset.x,y:n.y-this._moveItemsOffset.y};if(l){this._changeGroup||(this._changeGroup=e.rootDesignItem.openGroup("Move Elements"));try{l.finishPlace(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,c,e.instanceServiceContainer.selectionService.selectedElements),this._changeGroup.commit(),this._changeGroup=null}catch(p){console.error(p),this._changeGroup.abort()}this._changeGroup=null;let h=e.elementsFromPoint(t.x,t.y);for(let p of this._actionStartedDesignItems)h.includes(p.element)&&e.extensionManager.applyExtension(p,I.MouseOver,t),e.extensionManager.removeExtension(p,I.Placement)}else this._changeGroup&&this._changeGroup.abort(),this._changeGroup=null;e.extensionManager.removeExtension(this._dragParentExtensionItem,I.ContainerDrag),this._dragParentExtensionItem=null,e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerDragOverAndCanBeEntered),this._dragOverExtensionItem=null,this._moveItemsOffset={x:0,y:0}}e.extensionManager.refreshExtensions(e.instanceServiceContainer.selectionService.selectedElements,null,t,null,20),this._changeGroup&&(this._changeGroup.abort(),this._changeGroup=null);break}}}_getDesignItemToStartDrag(e,t,i){let n=e.instanceServiceContainer.selectionService.selectedElements;if(!n?.length||t.isRootItem||n.includes(t))return t;for(let r of n)if(!(!r||r.isRootItem||r===t)&&this._isPointInsideDesignItemQuad(e,r,i))return r;return t}_isPointInsideDesignItemQuad(e,t,i){let n=t.element.getBoxQuads({box:"border",relativeTo:e.canvas,iframes:e.iframes})[0];return n?this._isPointInsideQuad(i,n):!1}_isPointInsideQuad(e,t){let i=[t.p1,t.p2,t.p3,t.p4];for(let r=0;r<i.length;r++){let o=i[r],a=i[(r+1)%i.length];if(this._isPointOnSegment(e,o,a))return!0}let n=!1;for(let r=0,o=i.length-1;r<i.length;o=r++){let a=i[r],l=i[o];a.y>e.y!=l.y>e.y&&e.x<(l.x-a.x)*(e.y-a.y)/(l.y-a.y||Number.EPSILON)+a.x&&(n=!n)}return n}_isPointOnSegment(e,t,i){let r=(e.y-t.y)*(i.x-t.x)-(e.x-t.x)*(i.y-t.y);if(Math.abs(r)>1e-4)return!1;let o=(e.x-t.x)*(i.x-t.x)+(e.y-t.y)*(i.y-t.y);if(o<-1e-4)return!1;let a=(i.x-t.x)*(i.x-t.x)+(i.y-t.y)*(i.y-t.y);return o<=a+1e-4}checkSelectElement(e,t,i){if(X(e)){let n=t.instanceServiceContainer.selectionService.selectedElements.indexOf(i);if(n>=0){let r=t.instanceServiceContainer.selectionService.selectedElements.slice(0);r.splice(n,1),t.instanceServiceContainer.selectionService.setSelectedElements(r,e)}else{let r=t.instanceServiceContainer.selectionService.selectedElements.slice(0);r.push(i),t.instanceServiceContainer.selectionService.setSelectedElements(r,e)}}else t.instanceServiceContainer.selectionService.selectedElements.indexOf(i)<0&&t.instanceServiceContainer.selectionService.setSelectedElements([i],e)}static FindPossibleContainer(e,t,i){let n=null,r=null,o=e.instanceServiceContainer.designerCanvas,a=o.elementsFromPoint(i.x,i.y);a.push(o.rootDesignItem.element);for(let l of a)if(l!=e.element){if(l==e.parent.element)break;if(l==o.rootDesignItem.element){n=o.rootDesignItem;let c=getComputedStyle(n.element);if(r=o.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(n,c,e)),r){if(r.canEnter(n,t))break;n=null,r=null;break}break}else{n=O.GetOrCreateDesignItem(l,l,o.serviceContainer,o.instanceServiceContainer);let c=getComputedStyle(n.element);if(r=o.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(n,c,e)),r){if(r.canEnter(n,t))break;n=null,r=null;continue}}}return[n,r]}keyboardEventHandler(e,t,i){}}});var Se,ft=g(()=>{"use strict";Se=class{constructor(e,t,i){this.title="Insert Item",this.containerItem=e,this.index=t,this.newItem=i}title;get affectedItems(){return[this.containerItem,this.newItem]}undo(){return this.newItem.parent._removeChildInternal(this.newItem),[{changeType:"removed",designItems:[this.newItem]}]}do(){return this.containerItem._insertChildInternal(this.newItem,this.index),[{changeType:"added",designItems:[this.newItem]}]}containerItem;index;newItem;mergeWith(e){return!1}}});var ws,dv,Ss,ih=g(()=>{"use strict";fe();Ue();ft();oe();ie();pi();ws=10,dv=5,Ss=class{options;cursor="crosshair";_pathD;_path;_samePoint=!1;_p2pMode=!1;_dragMode=!1;_pointerMoved=!1;_eventStarted=!1;_lastPoint;_startPoint;_captureElement;_pointerId;_angleStep;constructor(e){this.options=e,e?.angleStep!==void 0&&(this._angleStep=e.angleStep)}activated(e){}dispose(){}pointerEventHandler(e,t,i){let n=e.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:e.clickOverlay.focus(),this._eventStarted=!0,this._p2pMode||(this._captureElement=t.target,this._pointerId=t.pointerId,this._captureElement.setPointerCapture(this._pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._pathD="M "+n.x+" "+n.y+" ",this._path.setAttribute("d",this._pathD),this._path.setAttribute("stroke",this.options?.strokeColor??e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("fill",this.options?.fillBrush??e.serviceContainer.globalContext.fillBrush),this._path.setAttribute("stroke-width",this.options?.strokeThickness??e.serviceContainer.globalContext.strokeThickness),e.overlayLayer.addOverlay(this.constructor.name,this._path,M.Foreground),this._startPoint=n),this._lastPoint!=null&&this._lastPoint.x===n.x&&this._lastPoint.y===n.y&&!this._samePoint&&(this._samePoint=!0),this._lastPoint==null&&(this._lastPoint=n),this._startPoint==null&&(this._startPoint=n);break;case P.PointerMove:if(this._eventStarted&&(this._pointerMoved=!0),this._p2pMode){if(this._path){let r=n;(t.shiftKey||this._angleStep)&&(r=Ct(this._lastPoint,n,this._angleStep??45)),this._path.setAttribute("d",this._pathD+"L "+r.x+" "+r.y)+""}}else if(this._dragMode=!0,this._path&&this._lastPoint){let r=this.options?.interpolatePoints?Wu(this._lastPoint,n,this.options.interpolationDistance??dv):[n];for(let o of r)this._pathD+="L "+o.x+" "+o.y+" ";this._path.setAttribute("d",this._pathD),this._lastPoint=n}break;case P.PointerUp:if(this._eventStarted&&!this._pointerMoved&&(this._p2pMode=!0),this._p2pMode&&!this._samePoint&&this._startPoint.x!=n.x&&this._startPoint.y!=n.y&&this._path)if(t.shiftKey||this._angleStep){let r=Ct(this._lastPoint,n,this._angleStep??45);this._pathD+="L "+r.x+" "+r.y+" ",this._path.setAttribute("d",this._pathD),this._lastPoint=r}else this._pathD+="L "+n.x+" "+n.y+" ",this._path.setAttribute("d",this._pathD),this._lastPoint=n;(this._samePoint&&this._p2pMode||this._dragMode&&!this._p2pMode)&&this._finalizePath(e);break}t.preventDefault(),t.stopPropagation()}keyboardEventHandler(e,t,i){t.key==="Escape"&&this._finalizePath(e)}_finalizePath(e){this._captureElement?.releasePointerCapture(this._pointerId),this._captureElement=void 0,e.releaseActiveTool(),this._eventStarted=!1,this._p2pMode=!1,this._pointerMoved=!1,this._samePoint=!1,this._dragMode=!1;let t=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let i=document.createElementNS("http://www.w3.org/2000/svg","svg"),n=t.x-ws,r=t.y-ws,o=e.serviceContainer.options.roundPixelsToDecimalPlaces;this._path.setAttribute("d",this._pathD);let a=ju(this._path,n,r);this._path.setAttribute("d",kc(a,o)),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),i.appendChild(this._path),i.style.left=pe(n,o)+"px",i.style.top=pe(r,o)+"px",i.style.position="absolute",i.style.width=Math.round(t.width+2*ws)+"px",i.style.height=Math.round(t.height+2*ws)+"px",i.style.overflow="visible",i.style.stroke=this.options?.strokeColor??e.serviceContainer.globalContext.strokeColor,i.style.fill=this.options?.fillBrush??e.serviceContainer.globalContext.fillBrush,i.style.strokeWidth=this.options?.strokeThickness??e.serviceContainer.globalContext.strokeThickness,this._path=void 0,this._pathD=void 0,this._lastPoint=void 0;let l=O.createDesignItemFromInstance(i,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new Se(e.rootDesignItem,e.rootDesignItem.childCount,l)),e.serviceContainer.globalContext.finishedWithTool(this)}}});var Cs,nh=g(()=>{"use strict";le();Cs=class extends F{_line1;_line2;_line3;_line4;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(i){if(isNaN(i.p1.x)||isNaN(i.p2.x)){this.remove();return}this._valuesHaveChanges(this.designerCanvas.zoomFactor,i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p3.x,i.p3.y,i.p4.x,i.p4.y)&&(this._line1=this._drawLine(i.p1.x,i.p1.y,i.p2.x,i.p2.y,"svg-selection",this._line1),this._line2=this._drawLine(i.p1.x,i.p1.y,i.p4.x,i.p4.y,"svg-selection",this._line2),this._line3=this._drawLine(i.p2.x,i.p2.y,i.p3.x,i.p3.y,"svg-selection",this._line3),this._line4=this._drawLine(i.p4.x,i.p4.y,i.p3.x,i.p3.y,"svg-selection",this._line4),this._line1.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line2.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line3.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line4.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString())}}dispose(){this._removeAllOverlays()}}});import{css as uv}from"@node-projects/base-custom-webcomponent";var Es,rh=g(()=>{"use strict";nh();Z();Es=class{shouldExtend(e,t,i){return!i.isRootItem&&i.nodeType!=D.Comment&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new Cs(e,t,i)}static style=uv`.svg-selection{stroke:#3899ec;fill:transparent;stroke-width:2}`}});function Wi(s){let e=getComputedStyle(s),t=1,i=1;return e.gridRowEnd=="auto"?t=1:e.gridRowEnd.startsWith("span")?t=parseInt(e.gridRowEnd.substring(4)):t=parseInt(e.gridRowEnd)-parseInt(e.gridRowStart),e.gridColumnEnd=="auto"?i=1:e.gridColumnEnd.startsWith("span")?i=parseInt(e.gridColumnEnd.substring(4)):i=parseInt(e.gridColumnEnd)-parseInt(e.gridColumnStart),{colSpan:i,rowSpan:t}}function In(s,e){let t=s.instanceServiceContainer.designerCanvas,i=s.element.convertPointFromNode(new DOMPoint(e.x,e.y),t.canvas,{iframes:t.iframes});return{x:i.x,y:i.y}}function ji(s){let e=s.instanceServiceContainer.designerCanvas,t=e.canvas.convertPointFromNode(new DOMPoint(0,0),s.element,{iframes:e.iframes}),i=e.canvas.convertPointFromNode(new DOMPoint(1,0),s.element,{iframes:e.iframes}),n=e.canvas.convertPointFromNode(new DOMPoint(0,1),s.element,{iframes:e.iframes});return new DOMMatrix([i.x-t.x,i.y-t.y,n.x-t.x,n.y-t.y,t.x,t.y])}function bm(s,e){let t=s.cells[0];if(!t?.length||!Number.isFinite(e))return 0;let i=0;for(let n=0;n<t.length;n++){let r=t[n];e>r.localX+r.width/2&&(i=n)}return i}function wm(s,e){let t=s.cells[0];if(!t?.length||!Number.isFinite(e))return 1;let i=1;for(let n=0;n<t.length;n++){let r=t[n];e>r.localX+r.width/2&&(i=n+2)}return i}function Sm(s,e){if(!s.cells.length||!Number.isFinite(e))return 0;let t=0;for(let i=0;i<s.cells.length;i++){let n=s.cells[i][0];e>n.localY+n.height/2&&(t=i)}return t}function Cm(s,e){if(!s.cells.length||!Number.isFinite(e))return 1;let t=1;for(let i=0;i<s.cells.length;i++){let n=s.cells[i][0];e>n.localY+n.height/2&&(t=i+2)}return t}function kn(s,e,t=at(s)){let i=In(s,e);if(!Number.isFinite(i.x)||!Number.isFinite(i.y))return null;for(let n=0;n<t.cells.length;n++)for(let r=0;r<t.cells[n].length;r++){let o=t.cells[n][r];if(i.x>=o.localX&&i.x<=o.localX+o.width&&i.y>=o.localY&&i.y<=o.localY+o.height)return{row:n,column:r,cell:o,localPoint:i}}return null}function at(s){let e=s.instanceServiceContainer.designerCanvas,t=s.element.getBoxQuads({relativeTo:e.canvas,iframes:e.iframes})[0],i=Fe(s.element),n=getComputedStyle(s.element),r=n.gridTemplateRows.split(" "),o=n.gridTemplateColumns.split(" "),a=Number.parseFloat(n.paddingLeft),l=Number.parseFloat(n.paddingTop),c=Number.parseFloat(n.borderLeftWidth),h=Number.parseFloat(n.borderTopWidth),p=0,d=0,u=0,m=0,f=t.p1.x+c,v=t.p1.y+h,y=c,x=h,w=null;n.gridTemplateAreas&&n.gridTemplateAreas!=="none"&&(w=n.gridTemplateAreas.split('"')),n.columnGap&&n.columnGap!="normal"&&(d=Number.parseFloat(n.columnGap.replace("px",""))),n.rowGap&&n.rowGap!="normal"&&(u=Number.parseFloat(n.rowGap.replace("px","")));let C=0,S=0;for(let k of o){let j=Number.parseFloat(k.replace("px",""));C+=j+d}C-=d;for(let k of r){let j=Number.parseFloat(k.replace("px",""));S+=j+u}if(S-=u,n.justifyContent=="center"){let k=(i.width-C)/2;f+=k,y+=k}else if(n.justifyContent=="end"){let k=i.width-C;f+=k,y+=k}else if(n.justifyContent=="space-between")d+=(i.width-C)/(o.length-1);else if(n.justifyContent=="space-around"){let k=(i.width-C)/(o.length*2);d+=k*2,f+=k,y+=k}else if(n.justifyContent=="space-evenly"){let k=(i.width-C)/(o.length+1);d+=k,f+=k,y+=k}if(n.alignContent=="center"){let k=(i.height-S)/2;v+=k,x+=k}else if(n.alignContent=="end"){let k=i.height-S;v+=k,x+=k}else if(n.alignContent=="space-between")u+=(i.height-S)/(r.length-1);else if(n.alignContent=="space-around"){let k=(i.height-S)/(r.length*2);u+=k*2,v+=k,x+=k}else if(n.alignContent=="space-evenly"){let k=(i.height-S)/(r.length+1);u+=k,v+=k,x+=k}let L={cells:[],gaps:[],xGap:d,yGap:u};for(let k=0;k<r.length;k++){let j=r[k],H=null;w&&w[m+1]&&(H=w[m+1].split(" "));let N=0,Q=0,B=Number.parseFloat(j.replace("px","")),ce=[];L.cells.push(ce);for(let T=0;T<o.length;T++){let re=o[T];T>0&&(L.gaps.push({x:N+f+a,y:p+v+l,width:d,height:B,localX:N+y+a,localY:p+x+l,column:T,row:k,type:"v"}),N+=d);let ge=Number.parseFloat(re.replace("px",""));k>0&&L.gaps.push({x:N+f+a,y:p+v-u+l,width:ge,height:u,localX:N+y+a,localY:p+x-u+l,column:T,row:k,type:"h"});let ee=null;if(H&&H[Q]){let se=H[Q].trim();se!="."&&(ee=se)}let $={x:N+f+a,y:p+v+l,width:ge,height:B,name:ee,localX:N+y+a,localY:p+x+l};ce.push($),N+=ge,Q++}p+=B+u,m+=2}return L}var mi=g(()=>{"use strict";kt()});function Yi(s,e){switch(e){case"left":let t=getComputedStyle(s).left;return s.style.removeProperty("right"),s.style.left=t,t;case"top":let i=getComputedStyle(s).top;return s.style.removeProperty("bottom"),s.style.top=i,i}}var Ps,sh=g(()=>{"use strict";fe();ue();mi();Me();kt();le();Ps=class extends F{resizeAllSelected;_initialSizes=null;_actionModeStarted;_initialPoint=null;_offsetPoint;_circle1;_circle2;_circle3;_circle4;_circle5;_circle6;_circle7;_circle8;_initialHandleCanvasPoint=null;_initialLocalToCanvasMatrix=null;_initialBorderBoxSize=null;_initialFixedResizeAnchor=null;constructor(e,t,i,n){super(e,t,i),this.resizeAllSelected=n}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(i){if(isNaN(i.p1.x)||isNaN(i.p1.x)){this.remove();return}this._valuesHaveChanges(this.designerCanvas.zoomFactor,i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p3.x,i.p3.y,i.p4.x,i.p4.y)&&(this._circle1=this._drawResizerOverlay(i.p1.x,i.p1.y,"nw-resize",this._circle1),this._circle2=this._drawResizerOverlay(i.p1.x+(i.p2.x-i.p1.x)/2,i.p1.y+(i.p2.y-i.p1.y)/2,"n-resize",this._circle2),this._circle3=this._drawResizerOverlay(i.p2.x,i.p2.y,"ne-resize",this._circle3),this._circle4=this._drawResizerOverlay(i.p1.x+(i.p4.x-i.p1.x)/2,i.p1.y+(i.p4.y-i.p1.y)/2,"w-resize",this._circle4),this._circle5=this._drawResizerOverlay(i.p4.x,i.p4.y,"sw-resize",this._circle5),this._circle6=this._drawResizerOverlay(i.p4.x+(i.p3.x-i.p4.x)/2,i.p4.y+(i.p3.y-i.p4.y)/2,"s-resize",this._circle6),this._circle8=this._drawResizerOverlay(i.p2.x+(i.p3.x-i.p2.x)/2,i.p2.y+(i.p3.y-i.p2.y)/2,"e-resize",this._circle8),this._circle7=this._drawResizerOverlay(i.p3.x,i.p3.y,"se-resize",this._circle7))}}_drawResizerOverlay(e,t,i,n){let r=this._drawCircle(e,t,this.designerCanvas.serviceContainer.options.resizerPixelSize/this.designerCanvas.zoomFactor,"svg-primary-resizer",n);return r.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),n||(r.addEventListener(P.PointerDown,o=>this._pointerActionTypeResize(r,o,i)),r.addEventListener(P.PointerMove,o=>this._pointerActionTypeResize(r,o,i)),r.addEventListener(P.PointerUp,o=>this._pointerActionTypeResize(r,o,i))),r.style.cursor=i,r}_pointerActionTypeResize(e,t,i){t.stopPropagation();let n=this.designerCanvas.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:let r=parseFloat(e.getAttribute("cx")??"0"),o=parseFloat(e.getAttribute("cy")??"0");if(this._offsetPoint={x:r-n.x,y:o-n.y},t.target.setPointerCapture(t.pointerId),this._initialPoint=n,this._initialHandleCanvasPoint=new DOMPoint(r,o),this._initialLocalToCanvasMatrix=ji(this.extendedItem),this._initialBorderBoxSize=Fe(this.extendedItem.element),this._initialFixedResizeAnchor=this._getFixedResizeAnchor(this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas,iframes:this.designerCanvas.iframes})[0],i),this._initialSizes=[],this._actionModeStarted=i,this._initialSizes.push(this._getInitialSize(this.extendedItem.element)),this.resizeAllSelected)for(let l of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)this._initialSizes.push(this._getInitialSize(l.element));if(this.designerCanvas.alignOnSnap&&this.designerCanvas.snapLines.calculateSnaplines(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),this.prepareResize(this.extendedItem,this._actionModeStarted),this.resizeAllSelected)for(let l of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)l!==this.extendedItem&&this.prepareResize(l,this._actionModeStarted);break;case P.PointerMove:if(this._initialPoint){if(!this._initialSizes||!this._initialHandleCanvasPoint||!this._initialLocalToCanvasMatrix||!this._initialBorderBoxSize)return;let l=getComputedStyle(this.extendedItem.parent.element),h=this.designerCanvas.serviceContainer.getLastServiceWhere("containerService",C=>C.serviceForContainer(this.extendedItem.parent,l)).placePoint(t,this.designerCanvas,this.extendedItem.parent,this._initialPoint,{x:0,y:0},n,this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),p=new DOMPoint(h.x+this._offsetPoint.x,h.y+this._offsetPoint.y),d=this._getLocalHandleDelta(p);if(!d)return;let u=d.x,m=d.y;t.shiftKey&&(u=u<m?u:m,m=u);let f=0,v=null,y=null;switch(this._actionModeStarted){case"e-resize":if(v=this._initialSizes[f].width+u,this.extendedItem.element.style.width=V(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let C of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)C!==this.extendedItem&&(C.element.style.width=V(this.extendedItem,this._initialSizes[f].width+u)+"px")}break;case"se-resize":if(v=this._initialSizes[f].width+u,this.extendedItem.element.style.width=V(this.extendedItem,v)+"px",y=this._initialSizes[f].height+m,this.extendedItem.element.style.height=V(this.extendedItem,y)+"px",this.resizeAllSelected){f++;for(let C of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)C!==this.extendedItem&&(C.element.style.width=V(this.extendedItem,this._initialSizes[f].width+u)+"px",C.element.style.height=V(this.extendedItem,this._initialSizes[f].height+m)+"px")}break;case"s-resize":if(y=this._initialSizes[f].height+m,this.extendedItem.element.style.height=V(this.extendedItem,y)+"px",this.resizeAllSelected){f++;for(let C of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)C!==this.extendedItem&&(C.element.style.height=V(this.extendedItem,this._initialSizes[f].height+m)+"px")}break;case"sw-resize":if(v=this._initialSizes[f].width-u,this.extendedItem.element.style.width=V(this.extendedItem,v)+"px",y=this._initialSizes[f].height+m,this.extendedItem.element.style.height=V(this.extendedItem,y)+"px",this.resizeAllSelected){f++;for(let C of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)C!==this.extendedItem&&(C.element.style.width=V(this.extendedItem,this._initialSizes[f].width-u)+"px",C.element.style.height=V(this.extendedItem,this._initialSizes[f].height+m)+"px")}break;case"w-resize":if(v=this._initialSizes[f].width-u,this.extendedItem.element.style.width=V(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let C of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)C!==this.extendedItem&&(C.element.style.width=V(this.extendedItem,this._initialSizes[f].width-u)+"px")}break;case"nw-resize":if(v=this._initialSizes[f].width-u,this.extendedItem.element.style.width=V(this.extendedItem,v)+"px",y=this._initialSizes[f].height-m,this.extendedItem.element.style.height=V(this.extendedItem,y)+"px",this.resizeAllSelected){f++;for(let C of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)C!==this.extendedItem&&(C.element.style.width=V(this.extendedItem,this._initialSizes[f].width-u)+"px",C.element.style.height=V(this.extendedItem,this._initialSizes[f].height-m)+"px")}break;case"n-resize":if(y=this._initialSizes[f].height-m,this.extendedItem.element.style.height=V(this.extendedItem,y)+"px",this.resizeAllSelected){f++;for(let C of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)C!==this.extendedItem&&(C.element.style.height=V(this.extendedItem,this._initialSizes[f].height-m)+"px")}break;case"ne-resize":if(v=this._initialSizes[f].width+u,this.extendedItem.element.style.width=V(this.extendedItem,v)+"px",y=this._initialSizes[f].height-m,this.extendedItem.element.style.height=V(this.extendedItem,y)+"px",this.resizeAllSelected){f++;for(let C of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)C!==this.extendedItem&&(C.element.style.width=V(this.extendedItem,this._initialSizes[f].width+u)+"px",C.element.style.height=V(this.extendedItem,this._initialSizes[f].height-m)+"px")}break}let x=this._getCurrentBorderBoxSize(u,m);if(!x)return;this._applyAnchorCorrection(x);let w=[this.extendedItem,this.extendedItem.parent];this.resizeAllSelected&&w.push(...this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),this.extensionManager.refreshExtensions(w),this.designerCanvas?.raiseDesignItemsChanged(w,"resize",!1)}break;case P.PointerUp:if(t.target.releasePointerCapture(t.pointerId),!this._initialPoint)return;let a=this.extendedItem.openGroup(this.resizeAllSelected&&this.designerCanvas.instanceServiceContainer.selectionService.selectedElements.length>1?"Resize Elements":"Resize <"+this.extendedItem.name+">");try{let l=this.extendedItem.element;this.extendedItem.setStyle("width",this.extendedItem.element.style.width),this.extendedItem.setStyle("height",this.extendedItem.element.style.height);let c=parseFloat(Yi(l,"left")),h=parseFloat(Yi(l,"top")),p=this._getAnchorCorrectionInParent(Fe(this.extendedItem.element));if(p&&(c+=p.x,h+=p.y,l.style.left=V(this.extendedItem,c)+"px",l.style.top=V(this.extendedItem,h)+"px"),this.extendedItem.setStyle("left",V(this.extendedItem,c)+"px"),this.extendedItem.setStyle("top",V(this.extendedItem,h)+"px"),this.resizeAllSelected){for(let d of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)d!==this.extendedItem&&(d.setStyle("width",d.element.style.width),d.setStyle("height",d.element.style.height),d.setStyle("left",V(this.extendedItem,parseFloat(Yi(d.element,"left")))+"px"),d.setStyle("top",V(this.extendedItem,parseFloat(Yi(d.element,"top")))+"px"));this.designerCanvas?.raiseDesignItemsChanged(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements,"resize",!0)}else this.designerCanvas?.raiseDesignItemsChanged([this.extendedItem],"resize",!0);a.commit()}catch(l){a.abort(),console.error(l)}this._initialSizes=null,this._initialPoint=null,this._initialHandleCanvasPoint=null,this._initialLocalToCanvasMatrix=null,this._initialBorderBoxSize=null,this._initialFixedResizeAnchor=null;break}}_getLocalHandleDelta(e){if(!this._initialHandleCanvasPoint||!this._initialLocalToCanvasMatrix)return null;let t=new DOMMatrix([this._initialLocalToCanvasMatrix.a,this._initialLocalToCanvasMatrix.b,this._initialLocalToCanvasMatrix.c,this._initialLocalToCanvasMatrix.d,0,0]);if(!t.is2D)return null;let i=new DOMPoint(e.x-this._initialHandleCanvasPoint.x,e.y-this._initialHandleCanvasPoint.y);return t.inverse().transformPoint(i)}_getCurrentBorderBoxSize(e,t){if(!this._initialBorderBoxSize)return null;let i=this._initialBorderBoxSize.width,n=this._initialBorderBoxSize.height;switch(this._actionModeStarted){case"e-resize":case"se-resize":case"ne-resize":i+=e;break;case"w-resize":case"sw-resize":case"nw-resize":i-=e;break}switch(this._actionModeStarted){case"s-resize":case"se-resize":case"sw-resize":n+=t;break;case"n-resize":case"ne-resize":case"nw-resize":n-=t;break}return{width:i,height:n}}_getInitialSize(e){let t=Fe(e),i={x:0,y:0};return getComputedStyle(e).boxSizing=="content-box"&&(i=bu(e)),{width:t.width-i.x,height:t.height-i.y}}_getFixedResizeAnchor(e,t){if(!e)return null;switch(t){case"e-resize":return new DOMPoint((e.p1.x+e.p4.x)/2,(e.p1.y+e.p4.y)/2);case"se-resize":return new DOMPoint(e.p1.x,e.p1.y);case"s-resize":return new DOMPoint((e.p1.x+e.p2.x)/2,(e.p1.y+e.p2.y)/2);case"sw-resize":return new DOMPoint(e.p2.x,e.p2.y);case"w-resize":return new DOMPoint((e.p2.x+e.p3.x)/2,(e.p2.y+e.p3.y)/2);case"nw-resize":return new DOMPoint(e.p3.x,e.p3.y);case"n-resize":return new DOMPoint((e.p4.x+e.p3.x)/2,(e.p4.y+e.p3.y)/2);case"ne-resize":return new DOMPoint(e.p4.x,e.p4.y);default:return null}}_getFixedResizeAnchorLocal(e,t){switch(t){case"e-resize":return new DOMPoint(0,e.height/2);case"se-resize":return new DOMPoint(0,0);case"s-resize":return new DOMPoint(e.width/2,0);case"sw-resize":return new DOMPoint(e.width,0);case"w-resize":return new DOMPoint(e.width,e.height/2);case"nw-resize":return new DOMPoint(e.width,e.height);case"n-resize":return new DOMPoint(e.width/2,e.height);case"ne-resize":return new DOMPoint(0,e.height);default:return null}}_getAnchorCorrectionInParent(e){if(!this._initialFixedResizeAnchor)return null;let t=this._getFixedResizeAnchorLocal(e,this._actionModeStarted);if(!t)return null;let i=this.extendedItem.parent.element.convertPointFromNode(this._initialFixedResizeAnchor,this.designerCanvas.canvas,{iframes:this.designerCanvas.iframes}),n=this.designerCanvas.canvas.convertPointFromNode(t,this.extendedItem.element,{iframes:this.designerCanvas.iframes}),r=this.extendedItem.parent.element.convertPointFromNode(n,this.designerCanvas.canvas,{iframes:this.designerCanvas.iframes});return{x:i.x-r.x,y:i.y-r.y}}_applyAnchorCorrection(e){let t=this._getAnchorCorrectionInParent(e);if(!t)return;let i=this.extendedItem.element,n=parseFloat(Yi(i,"left"))+t.x,r=parseFloat(Yi(i,"top"))+t.y;i.style.left=V(this.extendedItem,n)+"px",i.style.top=V(this.extendedItem,r)+"px"}prepareResize(e,t){let i=null,n=null,r=null,o=null;switch(this._actionModeStarted){case"e-resize":r=getComputedStyle(e.element).left,e.element.style.removeProperty("right"),e.element.style.left=r;break;case"se-resize":i=getComputedStyle(e.element).top,e.element.style.removeProperty("bottom"),e.element.style.top=i,r=getComputedStyle(e.element).left,e.element.style.removeProperty("right"),e.element.style.left=r;break;case"s-resize":i=getComputedStyle(e.element).top,e.element.style.removeProperty("bottom"),e.element.style.top=i;break;case"sw-resize":i=getComputedStyle(e.element).top,e.element.style.removeProperty("bottom"),e.element.style.top=i,o=getComputedStyle(e.element).right,e.element.style.removeProperty("left"),e.element.style.right=o;break;case"w-resize":o=getComputedStyle(e.element).right,e.element.style.removeProperty("left"),e.element.style.right=o;break;case"nw-resize":n=getComputedStyle(e.element).bottom,e.element.style.removeProperty("top"),e.element.style.bottom=n,o=getComputedStyle(e.element).right,e.element.style.removeProperty("left"),e.element.style.right=o;break;case"n-resize":n=getComputedStyle(e.element).bottom,e.element.style.removeProperty("top"),e.element.style.bottom=n;break;case"ne-resize":n=getComputedStyle(e.element).bottom,e.element.style.removeProperty("top"),e.element.style.bottom=n,r=getComputedStyle(e.element).left,e.element.style.removeProperty("right"),e.element.style.left=r;break}}dispose(){this._removeAllOverlays()}}});import{css as mv}from"@node-projects/base-custom-webcomponent";var Is,oh=g(()=>{"use strict";sh();Z();Is=class{resizeAllSelected;constructor(e=!1){this.resizeAllSelected=e}shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem&&i.nodeType==D.Element}getExtension(e,t,i){return new Ps(e,t,i,this.resizeAllSelected)}static style=mv`.svg-primary-resizer{stroke:#3899ec;fill:#fff;pointer-events:auto}`}});function Em(s){let e=Math.hypot(s.x,s.y);return e<1e-8?{x:0,y:0}:{x:s.x/e,y:s.y/e}}function Ui(s){return{x:(s.p1.x+s.p2.x+s.p3.x+s.p4.x)/4,y:(s.p1.y+s.p2.y+s.p3.y+s.p4.y)/4}}function Pm(s,e){return{x:(s.x+e.x)/2,y:(s.y+e.y)/2}}function fv(s,e,t,i){let n=e.x-s.x,r=e.y-s.y,o=Em({x:-r,y:n});o.x===0&&o.y===0&&(o=Em(i));let a=Pm(s,e),l={x:t.x-a.x,y:t.y-a.y};return o.x*l.x+o.y*l.y>0&&(o={x:-o.x,y:-o.y}),o}function Be(s,e,t,i,n){let r=Pm(s,e),o=fv(s,e,t,n);return{x:r.x+o.x*i,y:r.y+o.y*i}}var ks=g(()=>{"use strict"});var Ds,ah=g(()=>{"use strict";Xe();Me();kt();le();ks();Ds=class extends F{_rotateLine;_rotateCircle;_startPoint=null;_rotateCirclePosition={x:0,y:0};constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!i)return;let n=[i.p1,i.p2,i.p3,i.p4];if(n.some(c=>!Number.isFinite(c.x)||!Number.isFinite(c.y))){this.remove();return}if(!this._valuesHaveChanges(this.designerCanvas.zoomFactor,...n.flatMap(c=>[c.x,c.y])))return;let r=Ui(i),o=Be(i.p1,i.p2,r,30/this.designerCanvas.zoomFactor,{x:0,y:-1}),a=Be(i.p1,i.p2,r,22/this.designerCanvas.zoomFactor,{x:0,y:-1}),l=Be(i.p1,i.p2,r,6/this.designerCanvas.zoomFactor,{x:0,y:-1});this._rotateLine=this._drawLine(a.x,a.y,l.x,l.y,"svg-primary-rotate-line",this._rotateLine),this._rotateLine.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle?(this._rotateCircle=this._drawCircle(o.x,o.y,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString()):(this._rotateCircle=this._drawCircle(o.x,o.y,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle.addEventListener("pointerdown",c=>{c.stopPropagation(),this._rotateCirclePosition=this._getRotateReferencePoint(),c.target.setPointerCapture(c.pointerId);let h=this.designerCanvas.getNormalizedEventCoordinates(c);this._startPoint=this.extendedItem.element.convertPointFromNode({x:h.x,y:h.y},this.designerCanvas.canvas)}),this._rotateCircle.addEventListener("pointermove",c=>{c.stopPropagation(),this._startPoint&&(this.extendedItem.element.style.rotate="none",this.extendedItem.element.style.rotate=this.getAngle(c)+"deg")}),this._rotateCircle.addEventListener("pointerup",c=>{c.stopPropagation(),c.target.releasePointerCapture(c.pointerId),this._startPoint=null,this.extendedItem.element.style.rotate="none",this.extendedItem.setStyle("rotate",this.getAngle(c)+"deg")}))}_getRotateReferencePoint(){let e=this.extendedItem.element,i={x:Fe(this.extendedItem.element).width/2,y:-30/this.designerCanvas.zoomFactor},n=e.style.rotate;try{e.style.rotate="none";let r=e.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!r)return i;let o=Ui(r),a=Be(r.p1,r.p2,o,30/this.designerCanvas.zoomFactor,{x:0,y:-1}),l=e.convertPointFromNode(a,this.designerCanvas.canvas);return!Number.isFinite(l.x)||!Number.isFinite(l.y)?i:{x:l.x,y:l.y}}finally{e.style.rotate=n}}getAngle(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e),i={x:t.x,y:t.y},n=this.extendedItem.element.convertPointFromNode(i,this.designerCanvas.canvas),o=getComputedStyle(this.extendedItem.element).transformOrigin.split(" "),a={x:parseFloat(o[0]),y:parseFloat(o[1])},l=Math.atan2(this._rotateCirclePosition.y-a.y,this._rotateCirclePosition.x-a.x)*180/Math.PI+90,c=Math.atan2(n.y-a.y,n.x-a.x)*180/Math.PI+90-l;return X(e)||(c=Math.round(c/15)*15),V(this.extendedItem,c)}dispose(){this._removeAllOverlays()}}});import{css as gv}from"@node-projects/base-custom-webcomponent";var As,lh=g(()=>{"use strict";ah();As=class{type;constructor(e="center-top"){this.type=e}shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new Ds(e,t,i)}static style=gv`.svg-primary-rotate{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto;cursor:alias}.svg-primary-rotate-transparent{fill:transparent;pointer-events:auto;cursor:alias}.svg-primary-rotate-line{stroke:#3899ec;fill:#3899ec;stroke-width:1}`}});var Ts,ch=g(()=>{"use strict";Xe();Me();ue();le();Ts=class extends F{_rotateLine;_rotateCircle;_rectLine1;_rectLine2;_rectLine3;_rectLine4;_initialCorners;_startAngle;_groupCenter;_initialHandleX;_initialHandleY;_initialLineX1;_initialLineY1;_initialLineX2;_initialLineY2;_currentDelta=0;_elementStartStates;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=me(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);if(i.length<2)return;let n,r,o,a,l,c;if(this._elementStartStates){let h=this._currentDelta*Math.PI/180,p=Math.cos(h),d=Math.sin(h),u=(x,w)=>this._groupCenter.x+(x-this._groupCenter.x)*p-(w-this._groupCenter.y)*d,m=(x,w)=>this._groupCenter.y+(x-this._groupCenter.x)*d+(w-this._groupCenter.y)*p;n=u(this._initialHandleX,this._initialHandleY),r=m(this._initialHandleX,this._initialHandleY),o=u(this._initialLineX1,this._initialLineY1),a=m(this._initialLineX1,this._initialLineY1),l=u(this._initialLineX2,this._initialLineY2),c=m(this._initialLineX2,this._initialLineY2);let v=this._initialCorners.map(x=>({x:u(x.x,x.y),y:m(x.x,x.y)})),y=(2/this.designerCanvas.zoomFactor).toString();this._rectLine1=this._drawLine(v[0].x,v[0].y,v[1].x,v[1].y,"svg-rotate-group-rect",this._rectLine1),this._rectLine2=this._drawLine(v[1].x,v[1].y,v[2].x,v[2].y,"svg-rotate-group-rect",this._rectLine2),this._rectLine3=this._drawLine(v[2].x,v[2].y,v[3].x,v[3].y,"svg-rotate-group-rect",this._rectLine3),this._rectLine4=this._drawLine(v[3].x,v[3].y,v[0].x,v[0].y,"svg-rotate-group-rect",this._rectLine4),this._rectLine1.style.strokeWidth=y,this._rectLine2.style.strokeWidth=y,this._rectLine3.style.strokeWidth=y,this._rectLine4.style.strokeWidth=y}else{this._rectLine1&&(this._rectLine1.style.display="none",this._rectLine2.style.display="none",this._rectLine3.style.display="none",this._rectLine4.style.display="none");let h=ri(i,this.designerCanvas),p=h.x+h.width/2,d=h.y;n=p,r=d-30/this.designerCanvas.zoomFactor,o=p,a=d-22/this.designerCanvas.zoomFactor,l=p,c=d-6/this.designerCanvas.zoomFactor}this._rotateLine=this._drawLine(o,a,l,c,"svg-primary-rotate-line",this._rotateLine),this._rotateLine.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle?(this._rotateCircle=this._drawCircle(n,r,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString()):(this._rotateCircle=this._drawCircle(n,r,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle.addEventListener("pointerdown",h=>{h.stopPropagation(),h.target.setPointerCapture(h.pointerId);let p=me(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),d=ri(p,this.designerCanvas),u=d.x+d.width/2,m=d.y;this._groupCenter={x:u,y:d.y+d.height/2},this._initialHandleX=u,this._initialHandleY=m-30/this.designerCanvas.zoomFactor,this._initialLineX1=u,this._initialLineY1=m-22/this.designerCanvas.zoomFactor,this._initialLineX2=u,this._initialLineY2=m-6/this.designerCanvas.zoomFactor,this._initialCorners=[{x:d.x,y:d.y},{x:d.x+d.width,y:d.y},{x:d.x+d.width,y:d.y+d.height},{x:d.x,y:d.y+d.height}],this._rectLine1&&(this._rectLine1.style.display="",this._rectLine2.style.display="",this._rectLine3.style.display="",this._rectLine4.style.display="");let f=this.designerCanvas.getNormalizedEventCoordinates(h);this._startAngle=Math.atan2(f.y-this._groupCenter.y,f.x-this._groupCenter.x),this._currentDelta=0,this._elementStartStates=p.map(v=>{let y=this.designerCanvas.getNormalizedElementCoordinates(v.element),x=this.designerCanvas.getNormalizedElementCoordinates(v.parent.element),w=v.getStyle("rotate")??"0deg",C=parseFloat(w)||0,S=getComputedStyle(v.element),L=parseFloat(S.width)/2,k=parseFloat(S.height)/2;return{item:v,rotation:C,centerX:y.x+y.width/2,centerY:y.y+y.height/2,cssHalfWidth:L,cssHalfHeight:k,parentX:x.x,parentY:x.y,parentWidth:x.width,parentHeight:x.height,usesRight:v.hasStyle("right")&&!v.hasStyle("left"),usesBottom:v.hasStyle("bottom")&&!v.hasStyle("top")}})}),this._rotateCircle.addEventListener("pointermove",h=>{if(h.stopPropagation(),!!this._elementStartStates){this._currentDelta=this._getDelta(h);for(let p of this._elementStartStates)this._applyRotation(p,this._currentDelta,!1)}}),this._rotateCircle.addEventListener("pointerup",h=>{if(h.stopPropagation(),h.target.releasePointerCapture(h.pointerId),!this._elementStartStates)return;let p=this._getDelta(h),d=this.designerCanvas.instanceServiceContainer.selectionService.primarySelection.openGroup("rotateGroup");for(let u of this._elementStartStates)this._applyRotation(u,p,!0);d.commit(),this._elementStartStates=null,this._currentDelta=0}))}_getDelta(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e),n=(Math.atan2(t.y-this._groupCenter.y,t.x-this._groupCenter.x)-this._startAngle)*180/Math.PI;return n=((n+180)%360+360)%360-180,X(e)||(n=Math.round(n/15)*15),n}_applyRotation(e,t,i){let n=t*Math.PI/180,r=Math.cos(n),o=Math.sin(n),a=e.centerX-this._groupCenter.x,l=e.centerY-this._groupCenter.y,c=this._groupCenter.x+a*r-l*o,h=this._groupCenter.y+a*o+l*r,p=V(e.item,e.rotation+t),d=c-e.cssHalfWidth-e.parentX,u=h-e.cssHalfHeight-e.parentY,m=e.parentX+e.parentWidth-c-e.cssHalfWidth,f=e.parentY+e.parentHeight-h-e.cssHalfHeight;if(i)e.usesRight?e.item.setStyle("right",m+"px"):e.item.setStyle("left",d+"px"),e.usesBottom?e.item.setStyle("bottom",f+"px"):e.item.setStyle("top",u+"px"),e.item.setStyle("rotate",p+"deg");else{let v=e.item.element;e.usesRight?v.style.right=m+"px":v.style.left=d+"px",e.usesBottom?v.style.bottom=f+"px":v.style.top=u+"px",v.style.rotate=p+"deg"}}dispose(){this._removeAllOverlays()}}});import{css as yv}from"@node-projects/base-custom-webcomponent";var Ms,hh=g(()=>{"use strict";ch();Ms=class{shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new Ts(e,t,i)}static style=yv`.svg-primary-rotate{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto;cursor:alias}.svg-primary-rotate-line{stroke:#3899ec;fill:#3899ec;stroke-width:1}.svg-rotate-group-rect{stroke:#3899ec;fill:transparent;stroke-width:2;stroke-dasharray:5 3}`}});var Ls,ph=g(()=>{"use strict";fe();ie();Ls=class{cursor="zoom-in";_rect;_startPoint;_endPoint;_pointerMovementTolerance=5;_zoomStepSize=.2;activated(e){}pointerEventHandler(e,t,i){let n=e.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._startPoint=n,this._rect||(this._rect=document.createElementNS("http://www.w3.org/2000/svg","rect")),this._rect.setAttribute("class","svg-selector"),this._rect.setAttribute("x",this._startPoint.x*e.zoomFactor),this._rect.setAttribute("y",this._startPoint.y*e.zoomFactor),this._rect.setAttribute("width",0),this._rect.setAttribute("height",0),this._rect.style.strokeWidth=""+1/e.scaleFactor,this._rect.style.strokeDasharray=""+2/e.scaleFactor,e.overlayLayer.addOverlay(this.constructor.name,this._rect,M.Foreground);break;case P.PointerMove:if(this._startPoint){let o=n.x-this._startPoint.x,a=n.y-this._startPoint.y;o>=0?(this._rect.setAttribute("x",this._startPoint.x),this._rect.setAttribute("width",o)):(this._rect.setAttribute("x",n.x),this._rect.setAttribute("width",-1*o)),a>=0?(this._rect.setAttribute("y",this._startPoint.y),this._rect.setAttribute("height",a)):(this._rect.setAttribute("y",n.y),this._rect.setAttribute("height",-1*a))}break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool(),this._endPoint=n;let r=t.button==0;switch(t.button){case 0:case 2:this._zoomOnto(r,this._startPoint,this._endPoint,e);break}e.overlayLayer.removeOverlay(this._rect),this._rect=null,this._startPoint=null;break}}_zoomOnto(e,t,i,n){if(this._isPositionEqual(t,i)){let r=n.zoomFactor,o=e?r+this._zoomStepSize:r-this._zoomStepSize;n.zoomTowardsPoint(i,o)}else n.zoomOntoRectangle(t,i)}_isPositionEqual(e,t){let i=this._pointerMovementTolerance;return Math.abs(e.x-t.x)<=i&&Math.abs(e.y-t.y)<=i}keyboardEventHandler(e,t,i){}dispose(){}}});var Os,dh=g(()=>{"use strict";fe();Os=class{cursor="grab";pointerEventHandler(e,t,i){switch(t.type){case P.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this);break;case P.PointerMove:(t.buttons==1||t.buttons==4)&&(e.canvasOffset={x:e.canvasOffset.x+t.movementX/e.zoomFactor,y:e.canvasOffset.y+t.movementY/e.zoomFactor});break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();break}}keyboardEventHandler(e,t,i){}activated(e){}dispose(){}}});var A,Dt=g(()=>{"use strict";(function(s){s.copy="copy",s.paste="paste",s.cut="cut",s.delete="delete",s.undo="undo",s.redo="redo",s.holdUndo="holdUndo",s.holdRedo="holdRedo",s.rotateCounterClockwise="rotateCounterClockwise",s.rotateClockwise="rotateClockwise",s.mirrorHorizontal="mirrorHorizontal",s.mirrorVertical="mirrorVertical",s.selectAll="selectAll",s.moveToFront="moveToFront",s.moveForward="moveForward",s.moveBackward="moveBackward",s.moveToBack="moveToBack",s.arrangeLeft="arrangeLeft",s.arrangeCenter="arrangeCenter",s.arrangeRight="arrangeRight",s.arrangeTop="arrangeTop",s.arrangeMiddle="arrangeMiddle",s.arrangeBottom="arrangeBottom",s.unifyWidth="unifyWidth",s.unifyHeight="unifyHeight",s.distributeHorizontal="distributeHorizontaly",s.distributeVertical="distributeVertical",s.setTool="setTool",s.setStrokeColor="setStrokeColor",s.setFillBrush="setFillBrush",s.setStrokeThickness="setStrokeThickness",s.screenshot="screenshot"})(A||(A={}))});var Ns,uh=g(()=>{"use strict";Dt();he();Ns=class{shouldProvideContextmenu(e,t,i,n){return!0}provideContextMenuItems(e,t,i){return t.readOnly?[{title:"copy",icon:`<img src="${E+"icons/copy.svg"}">`,action:()=>{t.executeCommand({type:A.copy})},shortCut:"Ctrl + C",disabled:i===null}]:[{title:"copy",icon:`<img src="${E+"icons/copy.svg"}">`,action:()=>{t.executeCommand({type:A.copy})},shortCut:"Ctrl + C",disabled:i===null},{title:"cut",icon:`<img src="${E+"icons/cut.svg"}">`,action:()=>{t.executeCommand({type:A.cut})},shortCut:"Ctrl + X",disabled:i===null},{title:"paste",icon:`<img src="${E+"icons/paste.svg"}">`,action:()=>{t.executeCommand({type:A.paste})},shortCut:"Ctrl + V"},{title:"delete",icon:`<img src="${E+"icons/delete.svg"}">`,action:()=>{t.executeCommand({type:A.delete})},shortCut:"Del",disabled:i===null}]}}});function xv(s){return s.startsWith("border")||s.startsWith("corner")}function bv(s){return s.startsWith("background")}function wv(s){return s==="transform"||s.startsWith("transform-")||_v.has(s)}function Sv(s){return s.startsWith("font")||s.startsWith("text")||vv.has(s)}function Cv(s,e){let t=[],i=new Set;for(let n=0;n<s.length;n++){let r=z.camelToDashCase(s[n]);if(!r||i.has(r)||!e(r))continue;let o=s.getPropertyValue(r)?.trim();o&&(i.add(r),t.push({name:r,value:o}))}return t}function Im(s){let e=s.filter(a=>xv(a.name)),t=s.filter(a=>bv(a.name)),i=s.filter(a=>wv(a.name)),n=s.filter(a=>Sv(a.name)),r=[],o=new Set;for(let a of[e,t,i,n])for(let l of a)o.has(l.name)||(o.add(l.name),r.push(l));return{all:r,border:e,background:t,transform:i,text:n}}function P1(s){let e=Cv(s,()=>!0);return Im(e)}function km(s){let e=[],t=new Set;for(let[i,n]of s){let r=i?.trim().toLowerCase(),o=n?.trim();!r||!o||t.has(r)||(t.add(r),e.push({name:r,value:o}))}return e.length?Im(e):null}function Dm(s,e){return s[e]}var E1,vv,_v,mh=g(()=>{"use strict";Ee();E1=["all","border","background","transform","text"],vv=new Set(["color","caret-color","line-height","letter-spacing","word-spacing","white-space","word-break","overflow-wrap","hyphens","tab-size","direction","writing-mode","unicode-bidi"]),_v=new Set(["translate","rotate","scale"])});var Vs,fh=g(()=>{"use strict";Z();mh();Vs=class{shouldProvideContextmenu(e,t,i,n){return!t.readOnly&&this._getTargetDesignItems(t).length>0}provideContextMenuItems(e,t,i){return[{title:"paste format",children:[this._createPasteFormatItem(t,"all"),{title:"-"},this._createPasteFormatItem(t,"border"),this._createPasteFormatItem(t,"background"),this._createPasteFormatItem(t,"transform"),this._createPasteFormatItem(t,"text")]}]}_createPasteFormatItem(e,t){return{title:t,action:()=>{this._pasteFormat(e,t)}}}_getTargetDesignItems(e){return e.instanceServiceContainer.selectionService.selectedElements?.filter(t=>t?.nodeType===D.Element&&!t.isRootItem)??[]}async _pasteFormat(e,t){let[i]=await e.serviceContainer.copyPasteService.getPasteItems(e.serviceContainer,e.instanceServiceContainer),n=i?.find(h=>h?.nodeType===D.Element&&h.hasStyles&&!h.isRootItem),r=n?km(n.styles()):null;if(!r)return;let o=Dm(r,t),a=this._getTargetDesignItems(e);if(!o.length||!a.length)return;let l=a[0].openGroup(`paste format: ${t}`),c=!1;for(let h of a)for(let p of o)h.getStyle(p.name)!==p.value&&(h.setStyle(p.name,p.value),c=!0);c?l.commit():l.abort()}}});import{BaseCustomWebComponentConstructorAppend as Ev,css as Pv,html as Iv}from"@node-projects/base-custom-webcomponent";var be,At=g(()=>{"use strict";be=class extends Ev{static style=Pv`:host{position:fixed;display:block;z-index:9999;min-width:200px;user-select:none;touch-action:none}.window-frame{background:#2c2c2c;border:1px solid #111;border-radius:4px;box-shadow:0 4px 24px rgba(0,0,0,.7);display:flex;flex-direction:column;overflow:hidden}.title-bar{display:flex;align-items:center;justify-content:space-between;background:#1a1a1a;padding:2px 5px;cursor:move;flex-shrink:0;height:18px;box-sizing:border-box}.title-text{color:#ccc;font-size:11px;font-family:sans-serif;font-weight:500;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.close-btn{width:14px;height:14px;background:0 0;border:none;color:#888;font-size:12px;line-height:1;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;border-radius:2px;flex-shrink:0}.close-btn:hover{background:#c0392b;color:#fff}.window-content{overflow:auto}`;static template=Iv`<div class="window-frame"><div class="title-bar" id="title-bar"><span class="title-text" id="title-text"></span> <button class="close-btn" id="close-btn" title="Close">✕</button></div><div class="window-content" id="window-content"></div></div>`;get windowContentStyle(){return null}_dragging=!1;_dragOffsetX=0;_dragOffsetY=0;_titleBar;_titleText;_closeBtn;_contentArea;constructor(){super(),this._titleBar=this._getDomElement("title-bar"),this._titleText=this._getDomElement("title-text"),this._closeBtn=this._getDomElement("close-btn"),this._contentArea=this._getDomElement("window-content"),this._titleText.textContent=this.windowTitle;let e=this.windowTemplate;if(typeof e=="string"){let i=document.createElement("template");i.innerHTML=e,this._contentArea.appendChild(i.content.cloneNode(!0))}else this._contentArea.appendChild(e.content.cloneNode(!0));let t=this.windowContentStyle;t&&(this.shadowRoot.adoptedStyleSheets=[...this.shadowRoot.adoptedStyleSheets,t]),this._closeBtn.onclick=()=>this._close(),this._titleBar.addEventListener("pointerdown",i=>this._onPointerDown(i))}connectedCallback(){!this.style.left&&!this.style.top&&(this.style.left="100px",this.style.top="100px")}_close(){this.dispatchEvent(new CustomEvent("close",{bubbles:!0,composed:!0})),this.remove()}_onPointerDown(e){if(e.button!==0||e.target===this._closeBtn)return;e.preventDefault(),this._dragging=!0;let t=this.getBoundingClientRect();this._dragOffsetX=e.clientX-t.left,this._dragOffsetY=e.clientY-t.top,this._titleBar.setPointerCapture(e.pointerId),this._titleBar.addEventListener("pointermove",this._onPointerMove),this._titleBar.addEventListener("pointerup",this._onPointerUp)}_onPointerMove=e=>{if(!this._dragging)return;let t=e.clientX-this._dragOffsetX,i=e.clientY-this._dragOffsetY;t=Math.max(0,Math.min(t,window.innerWidth-40)),i=Math.max(0,Math.min(i,window.innerHeight-30)),this.style.left=t+"px",this.style.top=i+"px"};_onPointerUp=e=>{this._dragging=!1,this._titleBar.releasePointerCapture(e.pointerId),this._titleBar.removeEventListener("pointermove",this._onPointerMove),this._titleBar.removeEventListener("pointerup",this._onPointerUp)};static showWindow(e,t){if(t){let i=t.getBoundingClientRect();e.style.left=i.right+8+"px",e.style.top=i.top+"px"}else e.style.left=Math.max(0,(window.innerWidth-260)/2)+"px",e.style.top="120px";document.body.appendChild(e)}}});import{css as kv}from"@node-projects/base-custom-webcomponent";var fi,Rs=g(()=>{"use strict";At();Me();ue();fi=class extends be{_designerCanvas;_previousSelectionRect;_selectionChanged;_relativeButton;_absoluteButton;_applyButton;_inputX;_inputY;_inputR;_inputSpacingX;_inputSpacingY;_originTopLeft;_originTopMid;_originTopRight;_originMidLeft;_originMidMid;_originMidRight;_originBotLeft;_originBotMid;_originBotRight;_transformMode;_transformOrigin;get windowTitle(){return"Transform"}get windowContentStyle(){return kv`.inputs{float:left;margin-top:5px;align-items:center}.input{display:flex;align-items:center;margin-top:5px}.text{margin-left:5px;font-size:14px}#input-div{display:grid;grid-template-columns:1fr 9fr;grid-template-rows:25px 25px 25px;grid-row-gap:2px;font-size:small;margin:10px;color:#fff}#button-div{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:25px;font-size:small;margin:10px;grid-column-gap:5px}#apply-div{font-size:small;justify-content:center;width:100%;margin-top:10px;margin-bottom:10px;display:flex}#cube{display:grid;grid-template-columns:20px 20px 20px;grid-template-rows:20px 20px 20px;grid-gap:10px;padding:10px;top:-80px;position:relative}#cube-background{width:60px;height:60px;background:gray;margin-top:20px;margin-left:20px}#spacing-div{display:inline-grid;grid-template-rows:20px 20px;grid-template-columns:95px 95px;gap:5px;justify-content:center;align-items:center;width:100%;color:#fff}`}get windowTemplate(){return`
|
|
3
|
+
`}getString(){return this._textHolder}}});var _r,Cu=g(()=>{"use strict";_r=class{_textHolder="";get position(){return this._textHolder.length}isLastCharNewline(){return this._textHolder[this._textHolder.length-1]===`
|
|
4
|
+
`}levelRaise(){}levelShrink(){}write(e){this._textHolder+=e}writeLine(e){this._textHolder+=e}writeIndent(){}writeNewline(){}getString(){return this._textHolder}}});var ie,ot=g(()=>{"use strict";vr();Cu();ie=class{static normalizeAttributeValue(e,t=!1){return typeof e=="number"&&(e=e.toString()),e?t?e.replaceAll("&","&").replaceAll("'","'").replaceAll("<","<").replaceAll(">",">"):e.replaceAll("&","&").replaceAll('"',""").replaceAll("<","<").replaceAll(">",">"):e.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">")}static normalizeContentValue(e){return e&&e.replaceAll("&","&").replaceAll("<","<").replaceAll("\xA0"," ")}static IsSelfClosingElement(e){return e==="area"||e==="base"||e==="br"||e==="col"||e==="embed"||e==="hr"||e==="img"||e==="input"||e==="keygen"||e==="link"||e==="meta"||e==="param"||e==="source"||e==="track"||e==="wbr"}static ConvertToString(e,t,i=!1){let n=t!==!1?new Mi:new _r;return e[0].serviceContainer.htmlWriterService.write(n,e,!0,i),n.getString()}}});import{css as Cg}from"@node-projects/base-custom-webcomponent";var De,jt=g(()=>{"use strict";De=class r{static _contextMenuCss=Cg`.context_menu{position:fixed;inset:auto;margin:0;border:none;background:0 0;overflow:visible;opacity:0;transform:scale(0);transition:transform .1s;transform-origin:top left;padding:0;z-index:2147483647;color:var(--context-menu-color,#000);font-family:var(--context-menu-font-family,inherit);font-size:var(--context-menu-font-size,inherit);font-weight:var(--context-menu-font-weight,inherit)}.context_menu.context_menu_display{opacity:1;transform:scale(1)}.context_menu,.context_menu *{box-sizing:border-box}.context_menu *{position:relative}.context_menu ul{list-style-type:none;padding:var(--context-menu-padding,3px);margin:0;border:var(--context-menu-border,none);border-radius:var(--context-menu-border-radius,0);background-color:var(--context-menu-background,#f5f7f7);box-shadow:var(--context-menu-shadow,0 0 5px #333);max-inline-size:calc(100vw - 8px);max-block-size:calc(100vh - 8px);overflow:auto;overscroll-behavior:contain;isolation:isolate}.context_menu ul[popover]{inset:auto;margin:0;border:var(--context-menu-border,none);border-radius:var(--context-menu-border-radius,0)}.context_menu li{padding:var(--context-menu-item-padding-y,0) 1.7em var(--context-menu-item-padding-y,0) 0;cursor:pointer;white-space:nowrap;display:flex;align-items:center}.context_menu li:hover{background-color:var(--context-menu-hover-background,#bbb)}.context_menu li .context_menu_icon_span{width:var(--context-menu-icon-column-width,28px);display:inline-flex;align-items:center;justify-content:center}.context_menu li .context_menu_icon_span img{height:var(--context-menu-icon-size,18px)}.context_menu li .context_menu_text{padding-left:2px;vertical-align:middle}.context_menu li .context_menu_sub_span{width:1em;display:inline-block;text-align:center;position:absolute;top:50%;right:.5em;transform:translateY(-50%)}.context_menu li>ul{position:absolute;inset:auto;top:0;left:100%;opacity:0;transition:opacity .2s;visibility:hidden}.context_menu li>ul.context_menu_submenu_popover{position:fixed}.context_menu li>ul:popover-open{opacity:1;visibility:visible}.context_menu li.context_menu_divider{border-bottom:1px solid var(--context-menu-divider-color,#aaa);margin:5px;padding:0;cursor:default}.context_menu li.context_menu_divider:hover{background-color:inherit}.context_menu li[disabled=""]{color:var(--context-menu-disabled-color,#777);cursor:default}.context_menu li[disabled=""]:hover{background-color:inherit}.context_menu li.context_menu_marked{background-color:var(--context-menu-marked-background,#5ebdec)}`;static count=0;static _openedContextMenus=new Set;menu;options;context;num;_menuElement;constructor(e,t,i){this.num=r.count++,this.menu=e,this.options=t,this.context=i,this.reload(),this._windowDown=this._windowDown.bind(this),this._windowKeyUp=this._windowKeyUp.bind(this),this._windowResize=this._windowResize.bind(this)}reload(){let e=this.options?.shadowRoot??document;this._menuElement==null&&(this._menuElement=document.createElement("div"),this._menuElement.className="context_menu",this._menuElement.id="context_menu_"+this.num,this._menuElement.setAttribute("popover","manual"),e===document?document.body.appendChild(this._menuElement):e.appendChild(this._menuElement)),this._menuElement.innerHTML="",e.adoptedStyleSheets.indexOf(r._contextMenuCss)<0&&(e.adoptedStyleSheets=[...e.adoptedStyleSheets,r._contextMenuCss]),this._menuElement.appendChild(this.renderLevel(this.menu))}renderLevel(e){let t=document.createElement("ul"),i=!1;return e.forEach(n=>{if(n.title!=="-"){if(i){let c=document.createElement("li");c.className="context_menu_divider",i=!1,t.appendChild(c)}let s=document.createElement("li"),o=document.createElement("span");o.className="context_menu_icon_span",n.checked===!0?o.innerHTML="\u2714":(n.icon??"")!=""?o.innerHTML=n.icon??"":o.innerHTML=this.options?.defaultIcon??"";let a=document.createElement("span");a.className="context_menu_text",a.innerHTML=n.title??"";let l=document.createElement("span");if(l.className="context_menu_sub_span",n.children!=null&&(l.innerHTML=this.options?.subIcon??"›"),s.appendChild(o),s.appendChild(a),s.appendChild(l),n.disabled)s.setAttribute("disabled","");else if(n.checkable?s.addEventListener("click",c=>{c.stopPropagation(),c.preventDefault(),n.checked=!n.checked,o.innerHTML=n.checked?"\u2714":n.icon??this.options?.defaultIcon??"",n.action&&n.action(c,n,this.context,this)}):n.action&&s.addEventListener("click",c=>{c.stopPropagation(),c.preventDefault(),n.action?.(c,n,this.context,this),this.close()}),this.options?.mode=="undo"&&s.addEventListener("mouseup",c=>{c.stopPropagation(),n.action?.(c,n,this.context,this),this.close()}),s.addEventListener("mouseenter",()=>{this.closeSiblingSubmenus(s),this.options?.mode=="undo"&&this.markUndoItems(s)}),n.children!=null){let c=this.renderLevel(n.children);this.configurePopoverSubmenu(c),s.appendChild(c),s.addEventListener("mouseenter",()=>{this.openPopoverSubmenu(s,c)})}t.appendChild(s)}else i=!0}),t}display(e){let t=this._menuElement,i=this.options?.mouseOffset!=null?this.options.mouseOffset:2;this.showPopover(t),this.positionMenu(t,e.clientX,e.clientY,i),t.classList.add("context_menu_display"),e.preventDefault(),r._openedContextMenus.add(this),window.addEventListener("keyup",this._windowKeyUp),window.addEventListener("resize",this._windowResize),window.addEventListener("mousedown",this._windowDown),setTimeout(()=>{r._openedContextMenus.has(this)&&window.addEventListener("contextmenu",this._windowDown)},150)}_windowResize(){this.close()}_windowDown(e){return e.preventDefault(),(!(e.target instanceof Node)||!this._menuElement.contains(e.target))&&this.close(),!1}_windowKeyUp(e){e.key==="Escape"&&this.close()}static show(e,t,i,n){let s=new r(e,i,n);return s.display(t),s}close(){this.hideDescendantSubmenus(this._menuElement),this.hidePopover(this._menuElement),this._menuElement.remove(),window.removeEventListener("mousedown",this._windowDown),window.removeEventListener("resize",this._windowResize),window.removeEventListener("keyup",this._windowKeyUp),setTimeout(()=>window.removeEventListener("contextmenu",this._windowDown),10),r._openedContextMenus.delete(this)}static closeAll(){for(let e of r._openedContextMenus.values())e.close()}configurePopoverSubmenu(e){e.classList.add("context_menu_submenu_popover"),e.setAttribute("popover","manual")}markUndoItems(e){if(e.parentElement==null)return;let t=!0;for(let i of e.parentElement.children)t?i.classList.add("context_menu_marked"):i.classList.remove("context_menu_marked"),i==e&&(t=!1)}closeSiblingSubmenus(e){if(e.parentElement!=null)for(let t of e.parentElement.children)t!==e&&this.hideDescendantSubmenus(t)}hideDescendantSubmenus(e){let t=e.querySelectorAll("ul[popover]");for(let i of t)this.hidePopover(i)}openPopoverSubmenu(e,t){this.showPopover(t),this.positionSubmenuPopover(e,t)}showPopover(e){this.isPopoverOpen(e)||e.showPopover()}hidePopover(e){e==null||!this.isPopoverOpen(e)||e.hidePopover()}isPopoverOpen(e){return e.matches(":popover-open")}positionMenu(e,t,i,n){let s=e.offsetWidth+4,o=e.offsetHeight+4,a=window.innerWidth-t,l=t,c=window.innerHeight-i,h=i,p=t+n;a<s&&l>a&&(p=t-s-n);let d=i+n;c<o&&h>c&&(d=i-o-n),e.style.left=`${Math.max(0,Math.min(p,window.innerWidth-s))}px`,e.style.top=`${Math.max(0,Math.min(d,window.innerHeight-o))}px`}positionSubmenuPopover(e,t){let i=e.getBoundingClientRect(),n=t.getBoundingClientRect(),s=t.offsetWidth||n.width,o=t.offsetHeight||n.height,a=window.innerWidth-i.right,l=i.left,c=i.right;a<s&&l>a&&(c=i.left-s);let h=window.innerHeight-i.top,p=i.bottom,d=i.top;h<o&&p>h&&(d=i.bottom-o),t.style.left=`${Math.max(0,Math.min(c,window.innerWidth-s))}px`,t.style.top=`${Math.max(0,Math.min(d,window.innerHeight-o))}px`,t.style.right="auto",t.style.bottom="auto"}}});var tt,ai=g(()=>{"use strict";jt();tt=class{settingName;content;tooltp;contextmenu;constructor(e,t,i,n){this.settingName=e,this.content=t,this.tooltp=i,this.contextmenu=n}provideButtons(e,t){let i=document.createElement("div");typeof this.content=="string"?i.innerHTML=this.content:i.appendChild(this.content),i.title=this.tooltp,i.className="toolbar-control",t.instanceServiceContainer.designContext.extensionOptionsChanged.on(()=>{n[this.settingName]!==!1?i.classList.add("selected"):i.classList.remove("selected")});let n=t.instanceServiceContainer.designContext.extensionOptions;return n[this.settingName]!==!1&&i.classList.add("selected"),i.onclick=()=>{let s=n[this.settingName];n[this.settingName]=s===!1,n[this.settingName]!==!1?i.classList.add("selected"):i.classList.remove("selected")},i.oncontextmenu=s=>{s.preventDefault(),this.contextmenu&&De.show(this.contextmenu,s)},[i]}}});var br,xr,wr=g(()=>{"use strict";ai();br="enableStylesheetService",xr=class extends tt{constructor(){super(br,"ss","modify Stylesheet")}}});var Sr,Zl=g(()=>{"use strict";Sr=class{constructor(e,t,i){this.title="Change TextContent from '"+i+"' to '"+t+"'",this.designItem=e,this.newValue=t,this.oldValue=i}title;get affectedItems(){return[this.designItem]}undo(){return this.designItem.element.textContent=this.oldValue,this.designItem.refreshRenderedDesignItem(),[{changeType:"changed",designItems:this.affectedItems,type:"property",name:"textContent",oldValue:this.newValue,newValue:this.oldValue}]}do(){return this.designItem.element.textContent=this.newValue,this.designItem.refreshRenderedDesignItem(),[{changeType:"changed",designItems:this.affectedItems,type:"property",name:"textContent",oldValue:this.oldValue,newValue:this.newValue}]}designItem;newValue;oldValue;mergeWith(e){return!1}}});function Eu(r,...e){return r.reduce((t,i,n)=>t+i+(e[n]??""),"")}function Pu(){return window.navigator.platform?.startsWith("Mac")||window.navigator.platform==="iPhone"||window.navigator.platform==="iPad"||window.navigator.platform==="iPod"}function Pt(r){return new Promise(e=>setTimeout(e,r))}async function Iu(r,e){let t=URL.createObjectURL(r),i=document.createElement("a");i.href=t,i.style.display="none",i.download=e,document.body.appendChild(i),i.click(),document.body.removeChild(i),await Pt(300)}function Ww(r){for(var e=r.split(",")[0].split(":")[1].split(";")[0],t=atob(r.split(",")[1]),i=[],n=0;n<t.length;n++)i.push(t.charCodeAt(n));return new Blob([new Uint8Array(i)],{type:e})}function jw(r,e){return r.x>=e.x&&r.x<=e.x+e.width&&r.y>=e.y&&r.y<=e.y+e.height}function li(r,e){return r.endsWith(e??"/")?r.substring(0,r.length-1):r}function ke(r,e){return r.startsWith(e??"/")?r.substring(1):r}function mn(){return new Promise(r=>requestAnimationFrame(r))}function Yw(r,e){if(r===e)return!0;if(r==null||e==null||r.length!==e.length)return!1;for(var t=0;t<r.length;++t)if(r[t]!==e[t])return!1;return!0}function Du(r,e,t=!1,i="."){if(e==null)return r;let n=e.split(i);for(let s=0;s<n.length;s++)if(r!=null)r=r[n[s]];else return t?Eg:null;return r}function Jl(r,e,t,i="."){if(e==null)return;let n=e.split(i);for(let s=0;s<n.length-1;s++)if(r!=null){let o=r[n[s]];o==null&&(o={},r[n[s]]=o),r=o}r!=null&&(r[n[n.length-1]]=t)}var Eg,ze=g(()=>{"use strict"});var Cr,ql=g(()=>{"use strict";ze();Cr=class r{constructor(e,t,i,n){this.title="Change Property "+t+" of <"+e.name+">",this.designItem=e,this.name=t,this.newValue=i,this.oldValue=n}title;get affectedItems(){return[this.designItem]}undo(){return Jl(this.designItem.node,this.name,this.oldValue),[{changeType:"changed",type:"property",name:this.name,designItems:[this.designItem]}]}do(){return Jl(this.designItem.node,this.name,this.newValue),[{changeType:"changed",type:"property",name:this.name,designItems:[this.designItem]}]}designItem;name;newValue;oldValue;mergeWith(e){return e instanceof r&&this.designItem===e.designItem&&this.name===e.name?(this.newValue=e.newValue,!0):!1}}});var fn,ec=g(()=>{"use strict";fn=class r{constructor(e,t,i,n,s){this.title="Change Attribute & Property"+t+" of <"+e.name+">",this.designItem=e,this.attributeName=t,this.propertyName=i,this.newValue=n,this.oldValue=s}title;get affectedItems(){return[this.designItem]}undo(){if(this.designItem.element[this.propertyName]=this.oldValue,this.oldValue==null)return this.designItem._withoutUndoRemoveAttribute(this.attributeName),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.newValue,newValue:null}];{let e=this.oldValue;return typeof this.oldValue!="string"&&(e=this.oldValue.toString()),this.designItem._withoutUndoSetAttribute(this.attributeName,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.newValue,newValue:e}]}}do(){if(this.designItem.element[this.propertyName]=this.newValue,this.newValue==null)return this.designItem._withoutUndoRemoveAttribute(this.attributeName),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.newValue,newValue:null}];{let e=this.newValue;return typeof this.newValue!="string"&&(e=this.newValue.toString()),this.designItem._withoutUndoSetAttribute(this.attributeName,e),[{changeType:"changed",designItems:this.affectedItems,type:"attribute",name:this.attributeName,oldValue:this.oldValue,newValue:e}]}}designItem;attributeName;propertyName;newValue;oldValue;mergeWith(e){return e instanceof r&&this.designItem===e.designItem&&this.attributeName===e.attributeName&&this.propertyName===e.propertyName?(this.newValue=e.newValue,!0):!1}}});import{TypedEvent as Pg}from"@node-projects/base-custom-webcomponent";var Li,Oi,ci,at,Yt,Ut,Xt,$t,Kt,O,oe=g(()=>{"use strict";Xl();q();$l();st();Kl();Ie();Ql();ot();wr();Zl();ql();ze();ec();Li="node-projects-hide-at-design-time",Oi="node-projects-hide-at-run-time",ci="node-projects-lock-at-design-time",at="node-projects-force-hover",Yt="node-projects-force-active",Ut="node-projects-force-visited",Xt="node-projects-force-focus",$t="node-projects-force-focus-within",Kt="node-projects-force-focus-visible",O=class r{lastContainerSize;parsedNode;node;view;serviceContainer;instanceServiceContainer;nodeReplaced=new Pg;get window(){return this.isRootItem&&this.node instanceof HTMLIFrameElement?this.node.contentDocument.defaultView:this.node.ownerDocument.defaultView??window}get document(){return this.isRootItem&&this.node instanceof HTMLIFrameElement?this.node.contentDocument:this.node.ownerDocument}get usableContainer(){return this.isRootItem&&this.element instanceof(this.element.ownerDocument.defaultView??window).HTMLIFrameElement?this.element.contentWindow.document:this.isRootItem?this.node.shadowRoot:this.element}async clone(){try{let e=ie.ConvertToString([this],!1);return(await this.serviceContainer.htmlParserService.parse(e,this.serviceContainer,this.instanceServiceContainer,!0))[0]}catch{console.warn("could not clone design item.",this)}return null}*allMatching(e){if(this.hasChildren)for(let t of this.children())t.nodeType==k.Element&&t.element.matches(e)&&(yield t),yield*t.allMatching(e)}replaceNode(e){r._designItemMap.delete(this.node),r._designItemMap.set(e,this),this.view==this.node&&(this.view=e),this.node=e,this.nodeReplaced.emit()}get nodeType(){return this.node instanceof(this.node.ownerDocument.defaultView??window).Comment?k.Comment:this.node instanceof(this.node.ownerDocument.defaultView??window).Text?k.TextNode:k.Element}_attributes;get hasAttributes(){return this._attributes.size>0}hasAttribute(e){return this._attributes.has(e)}getAttribute(e){return this._attributes.get(e)}*attributes(){for(let e of this._attributes)yield e}_withoutUndoSetAttribute(e,t){try{this.isRootItem||this.element.setAttribute(e,t)}catch(i){i?.code!==5&&console.warn(i)}this._attributes.set(e,t),this.serviceContainer.designItemService.handleSpecialAttributes(e,this)}_withoutUndoRemoveAttribute(e){try{this.isRootItem||this.element.removeAttribute(e)}catch(t){t?.code!==5&&console.warn(t)}this._attributes.delete(e),this.serviceContainer.designItemService.handleSpecialAttributes(e,this)}_styles;_stylePriorities;get hasStyles(){return this._styles.size>0}hasStyle(e){let t=e;return t.startsWith("--")||(t=z.camelToDashCase(e)),this._styles.has(t)}getStyle(e){let t=e;return t.startsWith("--")||(t=z.camelToDashCase(e)),this._styles.get(t)}isStyleImportant(e){let t=e;return t.startsWith("--")||(t=z.camelToDashCase(e)),this._stylePriorities.get(t)===!0}*styles(){for(let e of this._styles)yield e}_withoutUndoSetStyle(e,t,i=!1){let n=e;n.startsWith("--")||(n=z.camelToDashCase(e)),this._styles.set(n,t),i?this._stylePriorities.set(n,!0):this._stylePriorities.delete(n)}_withoutUndoRemoveStyle(e){let t=e;t.startsWith("--")||(t=z.camelToDashCase(e)),this._styles.delete(t),this._stylePriorities.delete(t)}static _designItemMap=new WeakMap;get element(){return this.view}get name(){return this.node.localName}get id(){return this.element.id}set id(e){let t=this.element.id;this.element.id=e,this.id?this.setAttribute("id",e):this.removeAttribute("id"),this.serviceContainer.referencesChangedService&&this.serviceContainer.referencesChangedService.notifyReferencesChanged([{designItem:this,oldValue:t,type:"idChanged"}])}get isRootItem(){return this.instanceServiceContainer.designerCanvas.rootDesignItem===this}*childrenRect(e){if(this.hasChildren)for(let t of this.children())t.nodeType==k.Element&&t.element.matches(e)&&(yield t),yield*t.allMatching(e)}_childArray=[];get hasChildren(){return this._childArray.length>0}*children(e=!1){for(let t of this._childArray)if(yield t,e)for(let i of t.children(e))yield i}get childCount(){return this._childArray.length}get firstChild(){return this._childArray[0]}_parent;get parent(){return this._parent}indexOf(e){return this._childArray.indexOf(e)}insertAdjacentElement(e,t){let i;t=="afterbegin"?i=new Wt(e,this,0):t=="beforeend"?i=new Wt(e,this,this._childArray.length):t=="beforebegin"?i=new Wt(e,this.parent,this.parent.indexOf(this)):t=="afterend"&&(i=new Wt(e,this.parent,this.parent.indexOf(this)+1)),this.instanceServiceContainer.undoService.execute(i)}insertChild(e,t){let i=new Wt(e,this,t);this.instanceServiceContainer.undoService.execute(i)}removeChild(e){this.serviceContainer.deletionService.removeItems([e])}remove(){this.serviceContainer.deletionService.removeItems([this])}clearChildren(){for(let e=this._childArray.length-1;e>=0;e--)this._childArray[e].remove()}get hasContent(){return(this.nodeType==k.TextNode||this.nodeType==k.Comment)&&this.element.textContent!=""||this._childArray.length===0}get content(){return this.nodeType==k.TextNode||this.nodeType==k.Comment?this.node.textContent:this._childArray.map(e=>e.content).join()}set content(e){let t=this.openGroup("set content");this.clearChildren();let i=document.createTextNode(e),n=r.GetOrCreateDesignItem(i,i,this.serviceContainer,this.instanceServiceContainer);if(this.nodeType==k.TextNode){let s=this.parent.indexOf(this),o=this.parent;this.remove(),o.insertChild(n,s)}else if(this.nodeType==k.Comment){let s=new Sr(this,e,this.content);this.instanceServiceContainer.undoService.execute(s)}else this.insertChild(n);t.commit()}get innerHTML(){return ie.ConvertToString([...this.children()],!1)}set innerHTML(e){if(this.nodeType!=k.TextNode){let t=this.openGroup("set innerHTML");this.clearChildren();let i=document.createRange();i.selectNode(document.body);let n=i.createContextualFragment(e);for(let s of[...n.childNodes]){let o=r.createDesignItemFromInstance(s,this.serviceContainer,this.instanceServiceContainer);this.insertChild(o)}t.commit()}}get isEmptyTextNode(){return this.nodeType===k.TextNode&&this.content?.trim()==""}get hideAtDesignTime(){return this.hasAttribute(Li)}set hideAtDesignTime(e){e?this.setAttribute(Li,""):this.removeAttribute(Li)}get hideAtRunTime(){return this.hasAttribute(Oi)}set hideAtRunTime(e){e?this.setAttribute(Oi,""):this.removeAttribute(Oi)}get lockAtDesignTime(){return this.hasAttribute(ci)}set lockAtDesignTime(e){e?this.setAttribute(ci,""):this.removeAttribute(ci)}static createDesignItemFromInstance(e,t,i){e=r.updateRenderedNode(t,e);let n=t.designItemService.createDesignItem(e,e,t,i);if(e instanceof(e.ownerDocument.defaultView??window).HTMLTemplateElement&&e.getAttribute("shadowrootmode")=="open")try{let s=e.parentNode.attachShadow({mode:"open"}),o=e.content.cloneNode(!0);s.appendChild(o)}catch(s){console.error("error attaching shadowdom",s)}if(n.nodeType==k.Element){for(let s of n.element.attributes)s.name!=="style"&&n._attributes.set(s.name,s.value);if(e instanceof(e.ownerDocument.defaultView??window).HTMLElement||e instanceof(e.ownerDocument.defaultView??window).SVGElement){let s=new yr,o=e.getAttribute("style");if(o){s.parse(o);for(let a of s.entries)n._styles.set(a.name,a.value),a.important&&n._stylePriorities.set(a.name,!0)}t.designItemService.handleSpecialAttributes(ci,n)}e.draggable=!1}n._childArray=n._internalUpdateChildrenFromNodesChildren();for(let s of n._childArray)s._parent=n;return n.refreshRenderedDesignItem(),n}static updateRenderedNode(e,t){let i=t;for(let n of e.renderedDesignItemServices??[]){let s=n.updateRenderedNode(i)??i;s!==i&&i.parentNode&&i.parentNode.replaceChild(s,i),i=s}return i}querySelectorAll(e){return this.usableContainer.querySelectorAll(e)}removeDesignerAttributesAndStylesFromChildren(){let e=this.querySelectorAll("*");for(let t of e){let i=r.GetDesignItem(t);i.hasAttribute("draggable")||t.removeAttribute("draggable"),i.hasStyle("pointer-events")||(t.style.pointerEvents="")}}updateChildrenFromNodesChildren(){this._childArray=this._internalUpdateChildrenFromNodesChildren();for(let e of this._childArray)e._parent=this}_internalUpdateChildrenFromNodesChildren(){let e=[];if(this.nodeType==k.Element)if(this.element instanceof(this.node.ownerDocument.defaultView??window).HTMLTemplateElement)for(let t of this.element.content.childNodes){let i=r.createDesignItemFromInstance(t,this.serviceContainer,this.instanceServiceContainer);e.push(i)}else if(this.isRootItem&&this.element instanceof(this.node.ownerDocument.defaultView??window).HTMLIFrameElement)for(let t of this.element.contentWindow.document.childNodes){let i=r.createDesignItemFromInstance(t,this.serviceContainer,this.instanceServiceContainer);e.push(i)}else for(let t of this.element.childNodes){let i=r.createDesignItemFromInstance(t,this.serviceContainer,this.instanceServiceContainer);e.push(i)}return e}_backupWhenEditContent;_inEditContent=!1;editContent(){this._inEditContent=!0,this._backupWhenEditContent=[...this.element.childNodes];let e=this.element.innerHTML;this.element.innerHTML="",this.element.innerHTML=e,this.element.setAttribute("contenteditable","")}editContentFinish(){if(this._inEditContent){this._inEditContent=!1,this.element.removeAttribute("contenteditable"),this.element.innerHTML="";for(let e of this._backupWhenEditContent)this.element.appendChild(e);this._backupWhenEditContent=null}}constructor(e,t,i,n){this.node=e,this.view=e,this.parsedNode=t,this.serviceContainer=i,this.instanceServiceContainer=n,this._attributes=new Map,this._styles=new Map,this._stylePriorities=new Map,r._designItemMap.set(e,this)}setView(e){this.view=e,r._designItemMap.set(e,this),this.refreshRenderedDesignItem()}refreshRenderedDesignItem(){for(let e of this.serviceContainer.renderedDesignItemServices??[])e.updateRenderedDesignItem(this)}openGroup(e){return this.instanceServiceContainer.undoService.openGroup(e)}getOrCreateDesignItem(e){return r.GetOrCreateDesignItem(e,e,this.serviceContainer,this.instanceServiceContainer)}static GetOrCreateDesignItem(e,t,i,n){if(!e)return null;let s=r._designItemMap.get(e);return s||(s=i.designItemService.createDesignItem(e,t,i,n)),s}static GetDesignItem(e){return e?r._designItemMap.get(e):null}setStyle(e,t,i){let n=e;if(n.startsWith("--")||(n=z.camelToDashCase(e)),this.isRootItem)throw"not allowed to set style on root item or use async setStyle";{let s=new Ti(this,n,t,this._styles.get(n),i,this.isStyleImportant(n));this.instanceServiceContainer.undoService.execute(s)}}async setStyleAsync(e,t,i){let n=e;if(n.startsWith("--")||(n=z.camelToDashCase(e)),this.isRootItem)if(this.instanceServiceContainer.stylesheetService){let s=this.instanceServiceContainer.stylesheetService.getDeclarationsSortedBySpecificity(this,e);if(s!==null&&s.length>0)this.instanceServiceContainer.stylesheetService.updateDeclarationValue(s[0],t,i);else{let o=this.instanceServiceContainer.stylesheetService.getRules(":host").filter(a=>!a.stylesheet?.readOnly);if(s===null||o.length===0){let a=this.openGroup("add rule and set style: "+e),l=this.instanceServiceContainer.stylesheetService.getStylesheets(),c=await this.instanceServiceContainer.stylesheetService.addRule(l[0],":host");this.instanceServiceContainer.stylesheetService.insertDeclarationIntoRule(c,e,t,i),a.commit()}else this.instanceServiceContainer.stylesheetService.insertDeclarationIntoRule(o[0],e,t,i)}}else throw"not allowed to set style on root item";else{let s=new Ti(this,n,t,this._styles.get(n),i,this.isStyleImportant(n));this.instanceServiceContainer.undoService.execute(s)}}removeStyle(e){let t=e;t.startsWith("--")||(t=z.camelToDashCase(e));let i=new Ti(this,t,"",this._styles.get(t),!1,this.isStyleImportant(t));this.instanceServiceContainer.undoService.execute(i)}updateStyleInSheetOrLocal(e,t,i,n){let s=e;s.startsWith("--")||(s=z.camelToDashCase(e));let o=this.instanceServiceContainer.stylesheetService?.getDeclarationsSortedBySpecificity(this,s).filter(a=>!a.stylesheet?.readOnly);this.hasStyle(e)||this.instanceServiceContainer.designContext.extensionOptions[br]===!1||!o?.length?this.getStyle(s)!=t||n?this.setStyle(s,t,i):t==null&&this.removeStyle(s):this.instanceServiceContainer.stylesheetService.updateDeclarationValue(o[0],t,i)}async updateStyleInSheetOrLocalAsync(e,t,i,n){let s=e;s.startsWith("--")||(s=z.camelToDashCase(e));let o=this.instanceServiceContainer.stylesheetService?.getDeclarationsSortedBySpecificity(this,s).filter(a=>!a.stylesheet?.readOnly);this.hasStyle(e)||this.instanceServiceContainer.designContext.extensionOptions[br]===!1||!o?.length?this.getStyle(s)!=t||n?await this.setStyleAsync(s,t,i):t==null&&this.removeStyle(s):this.instanceServiceContainer.stylesheetService.updateDeclarationValue(o[0],t,i)}getStyleFromSheetOrLocal(e,t=null){let i=e;if(i.startsWith("--")||(i=z.camelToDashCase(e)),this.hasStyle(e))return this.getStyle(i);let n=this.instanceServiceContainer.stylesheetService?.getDeclarationsSortedBySpecificity(this,i);return n&&n.length>0?n[0].value:null}getStyleFromSheetOrLocalOrComputed(e,t=null){let i=e;i.startsWith("--")||(i=z.camelToDashCase(e));let n=this.getStyleFromSheetOrLocal(i);return n||(n=getComputedStyle(this.element).getPropertyValue(i)),n??t}getComputedStyleProperty(e,t=null){let i=e;i.startsWith("--")||(i=z.camelToDashCase(e));let n=this.getStyleFromSheetOrLocal(i);return n||(n=getComputedStyle(this.element).getPropertyValue(i)),n??t}getComputedStyle(){return this.nodeType==k.Element?this.window.getComputedStyle(this.element):null}_stylesCache=null;_cacheClearTimer;getAllStyles(){let e=this._stylesCache;if(e)return e;if(this.nodeType!=k.Element)return[];let t=[...this._styles.entries()].map(i=>({name:i[0],value:i[1],important:this.isStyleImportant(i[0]),parent:null}));if(this.instanceServiceContainer.stylesheetService)try{let i=this.instanceServiceContainer.stylesheetService?.getAppliedRules(this);if(i)return[{selector:null,declarations:t,specificity:null,stylesheet:null},...i]}catch(i){console.warn("getAppliedRules",i)}return e=[{selector:null,declarations:t,specificity:null,stylesheet:null}],this._stylesCache=e,clearTimeout(this._cacheClearTimer),this._cacheClearTimer=setTimeout(()=>this._stylesCache=null,30),e}setAttribute(e,t){let i=new un(this,e,t,this._attributes.get(e));this.instanceServiceContainer.undoService.execute(i)}removeAttribute(e){let t=new un(this,e,null,this._attributes.get(e));this.instanceServiceContainer.undoService.execute(t)}setPropertyAndAttribute(e,t){let i=z.camelToDashCase(e),n=z.dashToCamelCase(e);if(this.isRootItem)throw"not allowed to set attribute on root item";let s=new fn(this,i,n,t,this.element[n]);this.instanceServiceContainer.undoService.execute(s)}removePropertyAndAttribute(e){let t=z.camelToDashCase(e),i=z.dashToCamelCase(e),n=new fn(this,t,i,null,this.element[i]);this.instanceServiceContainer.undoService.execute(n)}setProperty(e,t){if(this.isRootItem)throw"not allowed to set attribute on root item";let i=Du(this.node,e),n=new Cr(this,e,t,i);this.instanceServiceContainer.undoService.execute(n)}_insertChildInternal(e,t){this._insertChildsInternal([e],t)}_insertChildsInternal(e,t){let i=this.document.createDocumentFragment(),n=null;for(let s of e)s.parent&&this.instanceServiceContainer.selectionService.primarySelection==s&&(s.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(s.parent,I.PrimarySelectionContainer),s.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(s.parent,I.PrimarySelectionContainerAndCanBeEntered)),s.parent&&s.parent._removeChildInternal(s),i.appendChild(s.view),s._parent=this,t==null||this._childArray.length==0||t>=this._childArray.length?this._childArray.push(s):(n=this._childArray[t],this._childArray.splice(t,0,s),t++);n==null?this.isRootItem?(this.usableContainer?.children[0]instanceof this.window.HTMLHtmlElement&&this.usableContainer.children[0].remove(),this.usableContainer.appendChild(i)):this.view instanceof(this.node.ownerDocument.defaultView??window).HTMLTemplateElement?this.view.content.appendChild(i):this.view.appendChild(i):this.isRootItem?(this.usableContainer?.children[0]instanceof this.window.HTMLHtmlElement&&this.usableContainer.children[0].remove(),this.usableContainer.insertBefore(i,n.element)):this.view instanceof(this.node.ownerDocument.defaultView??window).HTMLTemplateElement?this.view.content.insertBefore(i,n.element):this.view.insertBefore(i,n.element),this.refreshRenderedDesignItem()}_removeChildInternal(e){e.parent&&this.instanceServiceContainer.selectionService.primarySelection==e&&(e.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(e.parent,I.PrimarySelectionContainer),e.instanceServiceContainer.designerCanvas.extensionManager.removeExtension(e.parent,I.PrimarySelectionAndCanBeEntered)),e.instanceServiceContainer.designerCanvas.extensionManager.removeExtensions([e],!0);let t=this._childArray.indexOf(e);t>-1&&(this._childArray.splice(t,1),e.element.remove(),e._parent=null),this.refreshRenderedDesignItem()}getPlacementService(e){return this.nodeType!=k.Element?null:(e??=getComputedStyle(this.element),this.serviceContainer.getLastServiceWhere("containerService",t=>t.serviceForContainer(this,e)))}static createDesignItemFromImageBlob(e,t,i){return new Promise(n=>{let s=new FileReader;s.onloadend=()=>{let o=document.createElement("img");o.src=s.result;let a=r.createDesignItemFromInstance(o,e,t);return n(a)},s.readAsDataURL(i)})}get hasForcedCss(){return this.cssForceHover||this.cssForceActive||this.cssForceVisited||this.cssForceFocus||this.cssForceFocusWithin||this.cssForceFocusVisible}get cssForceHover(){return this.element.hasAttribute(at)}set cssForceHover(e){e?this.element.setAttribute(at,""):this.element.removeAttribute(at),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:at,designItems:[this]}])}get cssForceActive(){return this.element.hasAttribute(Yt)}set cssForceActive(e){e?this.element.setAttribute(Yt,""):this.element.removeAttribute(Yt),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:Yt,designItems:[this]}])}get cssForceVisited(){return this.element.hasAttribute(Ut)}set cssForceVisited(e){e?this.element.setAttribute(Ut,""):this.element.removeAttribute(Ut),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:Ut,designItems:[this]}])}get cssForceFocus(){return this.element.hasAttribute(Xt)}set cssForceFocus(e){e?this.element.setAttribute(Xt,""):this.element.removeAttribute(Xt),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:Xt,designItems:[this]}])}get cssForceFocusWithin(){return this.element.hasAttribute($t)}set cssForceFocusWithin(e){e?this.element.setAttribute($t,""):this.element.removeAttribute($t),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:$t,designItems:[this]}])}get cssForceFocusVisible(){return this.element.hasAttribute(Kt)}set cssForceFocusVisible(e){e?this.element.setAttribute(Kt,""):this.element.removeAttribute(Kt),this.instanceServiceContainer.onContentChanged.emit([{changeType:"changed",type:"attribute",name:Kt,designItems:[this]}])}}});function tc(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}var ku=g(()=>{"use strict"});var Er,Pr=g(()=>{"use strict";Er=navigator.userAgent.toLowerCase().includes("firefox")});var Ir,ic=g(()=>{"use strict";oe();ku();de();Pr();Ir=class{async getElement(e,t,i){if(e.import){let l=e.import;l[0]==="."&&(l=(window.location.origin+window.location.pathname).split("/").slice(0,-1).join("/")+"/"+l),window.importShim?importShim(l).then(c=>{!customElements.get(e.tag)&&e.className&&c[e.className]&&customElements.define(e.tag,c[e.className])}):import(l).then(c=>{!customElements.get(e.tag)&&e.className&&c[e.className]&&customElements.define(e.tag,c[e.className])}),i.designContext.imports.indexOf(l)<=0&&i.designContext.imports.push(l)}let n="";if(e.defaultAttributes)for(let l in e.defaultAttributes){let c=e.defaultAttributes[l];try{typeof c=="object"?n+=" "+l+'="'+tc(JSON.stringify(e.defaultAttributes[l]))+'"':n+=" "+l+'="'+tc(e.defaultAttributes[l])+'"'}catch(h){console.warn(h)}}let s="<"+e.tag+n+"></"+e.tag+">",o=cr(s,i.designerCanvas.rootDesignItem.document);if(o._inNodeProjectsDesignerView=!0,e.defaultWidth&&(o.style.width=e.defaultWidth),e.defaultHeight&&(o.style.height=e.defaultHeight),o.style.position="absolute",e.defaultStyles)for(let l in e.defaultStyles)o.style[l]=e.defaultStyles[l];if(e.defaultContent)if(typeof e.defaultContent=="string"){let l;i.designerCanvas.rootDesignItem.window.Document.parseHTMLUnsafe&&!Er?l=i.designerCanvas.rootDesignItem.window.Document.parseHTMLUnsafe(e.defaultContent):l=new i.designerCanvas.rootDesignItem.window.DOMParser().parseFromString(e.defaultContent,"text/html",{includeShadowRoots:!0}),o.append(...l.head.childNodes),o.append(...l.body.childNodes)}else o.appendChild(e.defaultContent);return O.createDesignItemFromInstance(o,t,i)}}});var ae,Me=g(()=>{"use strict";ut();ae=class{element;property;designItems;disableChangeNotification=!1;constructor(e){this.property=e}async _previewValueChanged(e){this.disableChangeNotification||this.designItems&&this.designItems.length&&await this.property.service.previewValue?.(this.designItems,this.property,e)}async _removePreviewValue(){this.disableChangeNotification||this.designItems&&this.designItems.length&&await this.property.service.removePreviewValue?.(this.designItems,this.property)}async _valueChanged(e){if(!this.disableChangeNotification&&this.designItems&&this.designItems.length){let t=this.designItems[0].openGroup("set property: "+this.property.name);e==null?this.property.service.clearValue(this.designItems,this.property,"value"):await this.property.service.setValue(this.designItems,this.property,e),t.commit()}}designItemsChanged(e){this.designItems=e}refreshValueWithoutNotification(e,t){e==W.none?this.element.classList.add("unset-value"):this.element.classList.remove("unset-value"),this.disableChangeNotification=!0;try{this.refreshValue(e,t)}catch(i){console.error(i)}this.disableChangeNotification=!1}}});var Dr,nc=g(()=>{"use strict";Me();Dr=class extends ae{constructor(e){super(e);let t=document.createElement("node-projects-color-input");e.readonly&&(t.readOnly=!0),t.onchange=async i=>{await this.property.service.removePreviewValue?.(this.designItems,this.property),this._valueChanged(t.value)},t.oninput=async i=>{await this.property.service.previewValue?.(this.designItems,this.property,t.value)},this.element=t}refreshValue(e,t){t?this.element.value=t:this.element.value="rgba(0, 0, 0, 1)"}}});var kr,rc=g(()=>{"use strict";Me();kr=class extends ae{constructor(e){super(e);let t=document.createElement("input");t.type="datetime-local",e.readonly&&(t.readOnly=!0),t.onchange=i=>this._valueChanged(t.value),this.element=t}refreshValue(e,t){t?this.element.value=t:this.element.value=null}}});import{html as Ig}from"@node-projects/base-custom-webcomponent";var Ar,sc=g(()=>{"use strict";Me();Ar=class r extends ae{static template=Ig`<div style="display:flex"><input id="input" type="text"> <button style="width:30px">...</button></div>`;_input;constructor(e){super(e);let t=r.template.content.cloneNode(!0);this._input=t.getElementById("input"),e.readonly&&(this._input.readOnly=!0),this._input.onchange=i=>this._valueChanged(this._input.value),this.element=t}refreshValue(e,t){this._input.value=t}}});var Tr,oc=g(()=>{"use strict";Me();Tr=class extends ae{constructor(e){super(e);let t=document.createElement("input");t.type="number",e.readonly&&(t.readOnly=!0),t.min=e.min,t.max=e.max,t.step=e.step,t.onchange=i=>this._valueChanged(t.value==""?null:t.valueAsNumber),this.element=t}refreshValue(e,t){this.element.value=t===void 0?null:t}}});var gn,ac=g(()=>{"use strict";Me();gn=class extends ae{elementSelect;elementInput;constructor(e){super(e);let t=document.createElement("div"),i=document.createElement("select");if(e.type=="enum")for(let s of e.enumValues){let o=document.createElement("option");o.value=s[1],o.text=s[0],i.appendChild(o)}else for(let s of e.values){let o=document.createElement("option");o.value=s,o.text=s,i.appendChild(o)}e.readonly&&(i.disabled=!0),i.onchange=s=>this._valueChanged(i.value);let n=document.createElement("input");n.style.display="none",n.onchange=s=>this._valueChanged(n.value),this.elementSelect=i,this.elementInput=n,t.appendChild(this.elementSelect),t.appendChild(this.elementInput),this.element=t}refreshValue(e,t){this.elementSelect.style.display="block",this.elementInput.style.display="none",this.elementSelect.value=t,this.elementSelect.value!=t&&t&&(this.elementInput.value=t,this.elementSelect.style.display="none",this.elementInput.style.display="block")}}});var Mr,lc=g(()=>{"use strict";Me();Mr=class r extends ae{static _nextListId=0;constructor(e){super(e);let t=document.createElement("input");if(t.type="text",e.readonly&&(t.readOnly=!0),e.values?.length){let i=`wcd-text-property-editor-values-${r._nextListId++}`,n=document.createElement("datalist");n.id=i;for(let s of e.values){let o=document.createElement("option");o.value=s,n.appendChild(o)}t.setAttribute("list",i),t.appendChild(n)}t.onchange=i=>this._valueChanged(t.value),t.onfocus=i=>{t.selectionStart=0,t.selectionEnd=t.value?.length},this.element=t}refreshValue(e,t){t==null?this.element.value="":this.element.value=t}}});var Lr,cc=g(()=>{"use strict";Me();Lr=class extends ae{constructor(e){super(e);let t=document.createElement("input");t.type="checkbox",e.readonly&&(t.readOnly=!0),t.onchange=i=>this._valueChanged(t.checked),this.element=t}refreshValue(e,t){this.element.checked=t}}});import{BaseCustomWebComponentConstructorAppend as Dg,css as kg,html as Ag}from"@node-projects/base-custom-webcomponent";var yn,Au=g(()=>{"use strict";yn=class extends Dg{static style=kg`div{font-size:10px;color:#fff}#property{color:#00aff0}#value{color:#d3d3d3}#value.value-set{color:wheat}.container{display:flex;flex-direction:row}::slotted(button){min-width:24px;height:24px;padding:1px;background:#fff;border:1px solid #d3d3d3}`;static template=Ag`<div><div id="header" style="display:none"><span id="property"></span><span id="vhd">: <span id="value"></span></span></div><div part="container" class="container"><slot id="slot"></slot></div></div>`;static properties={value:String,property:String,unsetValue:String,noValueInHeader:Boolean};constructor(){super(),this._restoreCachedInititalValues()}_value;get value(){return this._value}set value(e){this._value=e,this._updateValue()}property;unsetValue;noValueInHeader;_updateValue(){this.value?(this._getDomElement("value").innerText=this.value,this._getDomElement("value").classList.add("value-set")):this._getDomElement("value").classList.remove("value-set");let e=this._getDomElement("slot");for(let t of e.assignedElements())t.dataset.value==this.value?t.style.background="cornflowerblue":t.style.background=""}ready(){this._parseAttributesToProperties(),this.property&&(this._getDomElement("header").style.display="block"),this.noValueInHeader&&(this._getDomElement("vhd").style.display="none");let e=this._getDomElement("slot");e.onclick=t=>{let i=t.composedPath();for(let n of e.assignedElements())if(i.indexOf(n)>=0){let s=this._value;this.value=n.dataset.value;let o=new CustomEvent("value-changed",{detail:{newValue:this._value,oldValue:s}});this.dispatchEvent(o)}},this._getDomElement("property").innerText=this.property??"",this._getDomElement("value").innerText=this.unsetValue??"",this._updateValue()}};customElements.define("node-projects-image-button-list-selector",yn)});var Ni,hi,hc,Tu,E,he=g(()=>{"use strict";Ni="text/json/elementdefintion",hi="text/json/bindingobject",hc="text/json/propertydrop",Tu=new URL(import.meta.url),E=Tu.origin+Tu.pathname.split("/").slice(0,-1).join("/")+"/../assets/"});var Or,pc=g(()=>{"use strict";Me();Au();Ie();he();Or=class extends ae{constructor(e){super(e);let t=new yn;t.property=e.name,t.unsetValue=e.defaultValue;let i=z.camelToDashCase(e.name);if(e.type=="enum")for(let n of e.enumValues){let s=document.createElement("button");s.dataset.value=n[1];let o=document.createElement("img");o.title=n[1],o.src=E+"images/chromeDevtools/"+i+"-"+n[1]+"-icon.svg",s.appendChild(o),t.appendChild(s)}else for(let n of e.values){let s=document.createElement("button");s.dataset.value=n;let o=document.createElement("img");o.title=n,o.src=E+"images/chromeDevtools/"+i+"-"+n+"-icon.svg",s.appendChild(o),t.appendChild(s)}t.addEventListener("value-changed",n=>this._valueChanged(t.value)),this.element=t}refreshValue(e,t){this.element.value=t}}});import{BaseCustomWebComponentConstructorAppend as Tg,css as Mg,html as Lg,TypedEvent as Nr}from"@node-projects/base-custom-webcomponent";var vn,Mu=g(()=>{"use strict";vn=class extends Tg{static style=Mg`:host{margin:4px;margin-left:auto;margin-right:auto}#container{display:grid;grid-template-columns:minmax(30px,40px) minmax(30px,60px) minmax(30px,40px);grid-template-rows:auto;grid-template-areas:" . top ." "left middle right" " . bottom .";column-gap:2px;row-gap:2px}input{width:20px;text-align:center;font-size:10px;height:20px;padding:0}#left{grid-area:left;justify-self:end}#top{grid-area:top;align-self:end;justify-self:center}#right{grid-area:right;justify-self:start}#bottom{grid-area:bottom;align-self:start;justify-self:center}#rect{grid-area:middle;border:1px solid #000;background:#d3d3d3}`;static template=Lg`<div id="container"><input id="left"> <input id="top"> <input id="right"> <input id="bottom"><div id="rect"></div></div>`;_leftInput;_topInput;_rightInput;_bottomInput;_valueLeft;get valueLeft(){return this._valueLeft}set valueLeft(e){let t=this._valueLeft;this._valueLeft=e,t!==e&&(this._updateValue(),this.valueLeftChanged.emit({newValue:e,oldValue:t}))}valueLeftChanged=new Nr;_valueTop;get valueTop(){return this._valueTop}set valueTop(e){let t=this._valueTop;this._valueTop=e,t!==e&&(this._updateValue(),this.valueTopChanged.emit({newValue:e,oldValue:t}))}valueTopChanged=new Nr;_valueRight;get valueRight(){return this._valueRight}set valueRight(e){let t=this._valueRight;this._valueRight=e,t!==e&&(this._updateValue(),this.valueRightChanged.emit({newValue:e,oldValue:t}))}valueRightChanged=new Nr;_valueBottom;get valueBottom(){return this._valueBottom}set valueBottom(e){let t=this._valueBottom;this._valueBottom=e,t!==e&&(this._updateValue(),this.valueBottomChanged.emit({newValue:e,oldValue:t}))}valueBottomChanged=new Nr;property;unsetValue;_updateValue(){this._leftInput.value=this.valueLeft,this._topInput.value=this.valueTop,this._rightInput.value=this.valueRight,this._bottomInput.value=this._valueBottom}ready(){this._parseAttributesToProperties(),this._leftInput=this._getDomElement("left"),this._topInput=this._getDomElement("top"),this._rightInput=this._getDomElement("right"),this._bottomInput=this._getDomElement("bottom"),this._leftInput.onkeyup=e=>{e.key==="Enter"&&(this._valueLeft=this._leftInput.value)},this._topInput.onkeyup=e=>{e.key==="Enter"&&(this._valueTop=this._topInput.value)},this._rightInput.onkeyup=e=>{e.key==="Enter"&&(this._valueRight=this._rightInput.value)},this._bottomInput.onkeyup=e=>{e.key==="Enter"&&(this._valueBottom=this._bottomInput.value)},this._leftInput.onblur=e=>this._valueLeft=this._leftInput.value,this._topInput.onblur=e=>this._valueTop=this._topInput.value,this._rightInput.onblur=e=>this._valueRight=this._rightInput.value,this._bottomInput.onblur=e=>this._valueBottom=this._bottomInput.value,this._updateValue()}};customElements.define("node-projects-thickness-editor",vn)});var Vr,dc=g(()=>{"use strict";Me();Mu();Vr=class extends ae{constructor(e){super(e);let t=new vn;t.property=e.name,t.valueLeftChanged.on(i=>this._valueChanged(i.newValue)),this.element=t}refreshValue(e,t){this.element.valueLeft=t}}});var Vi,uc=g(()=>{"use strict";Me();Vi=class r extends ae{static fontList;constructor(e){super(e);let t=document.createElement("select");e.readonly&&(t.disabled=!0),this.element=t,r.addFontsToSelect(t),this.element.onchange=i=>this._valueChanged(this.element.value)}static addFontsToSelect(e){r.fontList?r.parseFontList(e):window.queryLocalFonts?window.queryLocalFonts().then(t=>{r.fontList=[...new Set(t.map(i=>i.family))],r.parseFontList(e)}):(r.fontList=["Verdana","Arial","Tahoma","Trebuchet MS","Times New Roman","Georgia","Garamond","Courier New","Brush Script MT"],r.parseFontList(e))}static parseFontList(e){for(let t of r.fontList){let i=document.createElement("option");i.value=t,i.text=t,e.appendChild(i)}}refreshValue(e,t){this.element.value=t}}});function gc(r,e=4){if(!Number.isFinite(r))return"0";let t=10**Math.max(0,e),i=Math.round(r*t)/t;return Object.is(i,-0)?"0":`${i}`}function pi(r,e){let t=r?.trim()??"";return t?t+(e??""):""}function Lu(r){let e=r?.trim()??"";if(!e)return{kind:"empty"};let t=e.match(/^([+-]?(?:\d+(?:\.\d+)?|\.\d+))(?:([a-z%]+))?$/i);if(!t)return{kind:"text",text:e};let i=Number(t[1]);return Number.isNaN(i)?{kind:"text",text:e}:{kind:"numeric",numberText:t[1],value:i,unit:t[2]?.toLowerCase()??""}}function zr(r){return r?.replace(/-([a-z])/g,(e,t)=>t.toUpperCase())??""}function Yg(r){return r?.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)??""}function Nu(r){return r.property.numericValueDecimalPlaces??(r.fromUnit==="%"||r.toUnit==="%"?2:4)}function Ug(r,e,t){return r==null?null:typeof r=="number"?pi(gc(r,t),e):r}function Fr(r){return r.designItems?.[0]?.element??null}function Xg(r){return r?typeof HTMLElement<"u"&&r instanceof HTMLElement?!0:typeof r.getBoundingClientRect=="function":!1}function Vu(r){if(!r)return null;if(r.parentElement)return r.parentElement;if(r.assignedSlot)return r.assignedSlot;let t=r.getRootNode?.()?.host;if(Xg(t))return t;let i=r.ownerDocument;return i?.body??i?.documentElement??null}function Ru(r){let e=parseFloat(r??"");return Number.isNaN(e)?null:e}function $g(r){if(typeof getComputedStyle!="function")return null;let e=Fr(r);if(!e)return null;let t=getComputedStyle(e),i=r.property.propertyName??r.property.name;if(!i)return null;let n=typeof t.getPropertyValue=="function"?l=>t.getPropertyValue(l):l=>"";if(i.startsWith("--"))return n(i)?.trim()??null;let s=i.includes("-")?i:Yg(i),o=n(s)?.trim();if(o)return o;let a=zr(i);return t[a]?.trim()??null}function Kg(r){let e=Lu(r.rawValue);if(e.kind==="numeric")return{...r,value:e.value,numberText:e.numberText,fromUnit:e.unit||r.fromUnit,rawValue:pi(e.numberText,e.unit)};let t=$g(r),i=Lu(t);if(i.kind!=="numeric"){if(r.numericType!=="css-length")return null;let n=zu(r);if(n==null)return null;let s=gc(n);return{...r,value:n,numberText:s,fromUnit:"px",rawValue:pi(s,"px")}}return{...r,value:i.value,numberText:i.numberText,fromUnit:i.unit,rawValue:pi(i.numberText,i.unit)}}function Qg(r){if(typeof window>"u")return null;switch(r){case"vw":return window.innerWidth/100;case"vh":return window.innerHeight/100;case"vmin":return Math.min(window.innerWidth,window.innerHeight)/100;case"vmax":return Math.max(window.innerWidth,window.innerHeight)/100;default:return null}}function _n(r,e){if(typeof getComputedStyle!="function")return null;let t=Fr(r);if(!t)return null;let i=e?Vu(t)??t:t;return Ru(getComputedStyle(i).fontSize)}function Zg(){return typeof getComputedStyle!="function"||typeof document>"u"?null:Ru(getComputedStyle(document.documentElement).fontSize)}function Jg(r){if(typeof getComputedStyle!="function")return null;let e=Fr(r);if(!e)return null;let t=zr(r.property.propertyName??r.property.name);if(t==="fontSize")return _n(r,!0);if(t==="lineHeight")return _n(r,!1);let n=(Vu(e)??e).getBoundingClientRect?.();return n?Gg.has(t)?n.height:(Hg.has(t),n.width):null}function zu(r){let e=Fr(r);if(!e)return null;let t=e.getBoundingClientRect?.();if(!t)return null;let i=zr(r.property.propertyName??r.property.name);return Wg.has(i)?t.width:jg.has(i)?t.height:null}function mc(r,e){let t=e?.toLowerCase()??"";if(!t)return null;let i=Vg.get(t);if(i!=null)return i;if(t==="%"){let n=Jg(r);return n==null?null:n/100}if(t==="em")return _n(r,zr(r.property.propertyName??r.property.name)==="fontSize");if(t==="rem")return Zg();if(t==="ex"){let n=_n(r,!1);return n==null?null:n/2}if(t==="ch"){let n=_n(r,!1);return n==null?null:n/2}return Qg(t)}function Fu(r){let e=Kg(r);if(!e)return pi(r.numberText,r.toUnit);let t=Nu(r),i;switch(e.numericType){case"css-length":i=qg(e.value,e.fromUnit,e.toUnit,e);break;case"css-angle":i=Rr(e.value,e.fromUnit,e.toUnit,Rg);break;case"css-time":i=Rr(e.value,e.fromUnit,e.toUnit,zg);break;case"css-frequency":i=Rr(e.value,e.fromUnit,e.toUnit,Fg);break;case"css-resolution":i=Rr(e.value,e.fromUnit,e.toUnit,Bg);break;case"css-flex":i=e.value;break;case"css-scale":i=ey(e.value,e.fromUnit,e.toUnit);break}return i==null?pi(e.numberText,e.toUnit):pi(gc(i,t),e.toUnit)}function qg(r,e,t,i){let n=e?.toLowerCase()??"",s=t?.toLowerCase()??"";if(n!=="%"&&s==="%"){let l=zu(i),c=mc(i,s);if(l!=null&&c!=null)return l/c}let o=mc(i,e),a=mc(i,t);return o==null||a==null?null:r*o/a}function ey(r,e,t){let i=e?.toLowerCase()??"",n=t?.toLowerCase()??"";if(i===n)return r;let s=i==="%"?.01:i===""?1:null,o=n==="%"?.01:n===""?1:null;return s==null||o==null?null:r*s/o}function Rr(r,e,t,i){let n=e?.toLowerCase()??"",s=t?.toLowerCase()??"";if(!n||!s||n===s)return r;if(!i)return null;let o=i.get(n),a=i.get(s);return o==null||a==null?null:r*o/a}function yc(r,e){return Ng.includes(r??"")?r:null}function Bu(r,e){return yc(r,e)!=null}function ty(r){let e=Nu(r),t=Ug(r.property.numericValueConverter?.(r.value,r.fromUnit,r.toUnit,r.property,r.numericType,r.numberText,r.rawValue,r.designItems),r.toUnit,e);return t??Fu(r)}function Hu(r){return[...new Set([...r??[],...Og].filter(Boolean))]}function Gu(r){let e=yc(r.type,r.propertyName??r.name);return r.values=Hu(r.values),e&&(r.units??=[...fc[e]],r.unitSteps??={...Ou[e]},r.numericValueConverter??=(t,i,n,s,o,a,l,c)=>Fu({property:s,numericType:o,designItems:c,value:t,numberText:a??`${t}`,rawValue:l??`${t}${i}`,fromUnit:i,toUnit:n})),r}function Wu(r){let e=yc(r.type,r.name);if(!e)return null;let t=Ou[e]??{};return{numericType:e,units:r.units?.length?r.units:fc[e],fixedValues:Hu(r.values),unitSteps:{...t,...r.unitSteps??{}},convertValue:i=>ty({...i,property:r,numericType:e})}}var Og,fc,Ng,Ou,Vg,Rg,zg,Fg,Bg,Hg,Gg,Wg,jg,Br=g(()=>{"use strict";Og=["initial","inherit","unset"],fc={"css-length":["px","%","em","rem","vw","vh","vmin","vmax","pt","pc","in","cm","mm","q","ch","ex"],"css-angle":["deg","grad","rad","turn"],"css-time":["ms","s"],"css-frequency":["hz","khz"],"css-flex":["fr"],"css-resolution":["dpi","dpcm","dppx","x"],"css-scale":["","%"],"svg-length":["","%"]},Ng=Object.keys(fc),Ou={"css-length":{em:.1,rem:.1,in:.01,cm:.1,ch:.1,ex:.1},"css-angle":{rad:.01,turn:.1},"css-time":{ms:10,s:.1},"css-frequency":{khz:.1},"css-flex":{fr:.1},"css-resolution":{dppx:.1,x:.1},"css-scale":{"":.1,"%":10},"svg-length":{"":1,"%":10}},Vg=new Map([["px",1],["in",96],["cm",96/2.54],["mm",96/25.4],["q",96/101.6],["pt",96/72],["pc",16]]),Rg=new Map([["deg",1],["grad",.9],["rad",180/Math.PI],["turn",360]]),zg=new Map([["ms",1],["s",1e3]]),Fg=new Map([["hz",1],["khz",1e3]]),Bg=new Map([["dpi",1],["dpcm",2.54],["dppx",96],["x",96]]),Hg=new Set(["width","minWidth","maxWidth","inlineSize","minInlineSize","maxInlineSize","left","right","columnGap","gap","flexBasis","perspective"]),Gg=new Set(["height","minHeight","maxHeight","top","bottom","blockSize","minBlockSize","maxBlockSize","rowGap"]),Wg=new Set(["width","minWidth","maxWidth","inlineSize","minInlineSize","maxInlineSize"]),jg=new Set(["height","minHeight","maxHeight","blockSize","minBlockSize","maxBlockSize"])});var Hr,vc=g(()=>{"use strict";Vl();Me();Br();Hr=class extends ae{constructor(e){super(e);let t=Wu(e),i=new cn;i.units=t?.units??e.units??[],i.fixedValues=t?.fixedValues??e.values,i.unitValueConverter=n=>t?.convertValue({...n,designItems:this.designItems}),i.unitSteps=t?.unitSteps??e.unitSteps??{},i.step=e.step,i.min=e.min,i.max=e.max,i.readOnly=e.readonly,i.valueChanged.on(async n=>this._valueChanged(n.newValue===""?null:n.newValue)),i.valuePreviewChanged.on(async n=>this._previewValueChanged(n.newValue===""?null:n.newValue)),i.valuePreviewFinished.on(async n=>{await this._removePreviewValue(),!n.wasCancelled&&await this._valueChanged(n.newValue===""?null:n.newValue)}),this.element=i}designItemsChanged(e){super.designItemsChanged(e)}refreshValue(e,t){this.element.value=t==null?"":String(t)}}});var Gr,_c=g(()=>{"use strict";Et();ut();Gr=class{element;property;designItems;_innerEditor;_importantButton;_value;_disableChangeNotification=!1;constructor(e,t){this.property=e;let i={...e,service:this._createServiceProxy(e.service)};this._innerEditor=t(i),this._importantButton=document.createElement("button"),this._importantButton.type="button",this._importantButton.textContent="!",this._importantButton.title="!important",this._importantButton.disabled=e.readonly===!0,this._importantButton.style.width="18px",this._importantButton.style.height="18px",this._importantButton.style.margin="-2px 0 0 -2px",this._importantButton.style.padding="0",this._importantButton.style.border="1px solid var(--input-border-color, #596c7a)",this._importantButton.style.background="transparent",this._importantButton.style.color="lightslategray",this._importantButton.style.fontWeight="bold",this._importantButton.style.lineHeight="16px",this._importantButton.style.cursor="pointer",this._importantButton.onclick=async()=>{this._disableChangeNotification||!this.designItems?.length||this._value==null||this._value===""||(this._setImportant(!this._isImportant()),await this.property.service.setValue(this.designItems,this.property,this._appendImportant(this._value)),this.designItems[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(this.designItems))},this.element=document.createElement("div"),this.element.style.display="grid",this.element.style.gridTemplateColumns="minmax(0, 1fr) 18px",this.element.style.alignItems="center",this.element.style.gap="2px",this.element.appendChild(this._innerEditor.element),this.element.appendChild(this._importantButton)}_createServiceProxy(e){let t=Object.create(e);return t.setValue=async(i,n,s)=>e.setValue(i,this.property,this._appendImportant(s)),t.previewValue=async(i,n,s)=>e.previewValue?.(i,this.property,this._appendImportant(s)),t.removePreviewValue=async(i,n)=>e.removePreviewValue?.(i,this.property),t.clearValue=(i,n,s)=>e.clearValue(i,this.property,s),t}_appendImportant(e){return typeof e!="string"?e:(this._value=e,Ye(e,this._isImportant()))}designItemsChanged(e){this.designItems=e,this._innerEditor.designItemsChanged(e)}_refreshImportant(e,t){let i=typeof t=="string"?Gt(t):{value:t,important:!1};this._value=i.value,this._setImportant(i.important),this._importantButton.disabled=this.property.readonly===!0||e==W.none||i.value==null||i.value==="",this._importantButton.style.cursor=this._importantButton.disabled?"default":"pointer"}_isImportant(){return this._importantButton.dataset.checked==="true"}_setImportant(e){this._importantButton.dataset.checked=e?"true":"false",this._importantButton.style.background=e?"orange":"transparent",this._importantButton.style.color=e?"black":"lightslategray"}refreshValue(e,t){this._refreshImportant(e,t),this._innerEditor.refreshValue(e,this._value)}refreshValueWithoutNotification(e,t){e==W.none?this.element.classList.add("unset-value"):this.element.classList.remove("unset-value"),this._disableChangeNotification=!0;try{this._refreshImportant(e,t),this._innerEditor.refreshValueWithoutNotification(e,this._value)}catch(i){console.error(i)}this._disableChangeNotification=!1}}});var Wr,xc=g(()=>{"use strict";nc();rc();sc();oc();ac();lc();cc();pc();dc();uc();vc();Br();fe();_c();Wr=class{getEditorForProperty(e){return e.propertyType===_.cssValue?new Gr(e,t=>this._getEditorForProperty(t)):this._getEditorForProperty(e)}_getEditorForProperty(e){if(e.createEditor)return e.createEditor(e);if(Bu(e.type,e.name))return new Hr(e);switch(e.type){case"json":return new Ar(e);case"css-color":case"color":return new Dr(e);case"font":return new Vi(e);case"date":return new kr(e);case"number":return new Tr(e);case"list":return new gn(e);case"enum":return new gn(e);case"boolean":return new Lr(e);case"img-list":return new Or(e);case"thickness":return new Vr(e);case"string":default:return new Mr(e)}}}});import{BaseCustomWebComponentLazyAppend as iy,BaseCustomWebComponentConstructorAppend as ny,BaseCustomWebComponentNoAttachedTemplate as ry,BaseCustomWebComponentConstructorAppendLazyReady as sy}from"@node-projects/base-custom-webcomponent";var jr,bc=g(()=>{"use strict";ki();jr=class extends mt{name="baseCustomWebComponent";isHandledElement(e){return e.element instanceof iy||e.element instanceof sy||e.element instanceof ny||e.element instanceof ry}_notifyChangedProperty(e,t,i){e.element._parseAttributesToProperties()}}});function Yr(r,e,t){if(e==null||e==""){r.style.transform=t;return}let i=new DOMMatrix(e),s=new DOMMatrix(t).multiply(i);r.style.transform=s.toString()}function Ri(r){return new DOMPoint(r.m41,r.m42,0,0)}var wc=g(()=>{"use strict"});var x,Ue=g(()=>{"use strict";(function(r){r.Move="M",r.Line="L",r.CubicBezier="C",r.QuadraticBezier="Q",r.Arc="A",r.Close="Z",r.HorizontalLine="H",r.VerticalLine="V",r.SmoothCubic="S",r.SmoothQuadratic="T"})(x||(x={}))});function It(r,e,t=45){let i=ju(r,e),o=(Math.round(i/t)*t+360)%360*Math.PI/180,a=e.x-r.x,l=e.y-r.y,c=Math.sqrt(a*a+l*l),h=r.x+Math.cos(o)*c,p=r.y-Math.sin(o)*c;return{x:h,y:p}}function zi(r,e){let t,i=Math.sqrt(Math.pow(e.x-r.x,2)+Math.pow(e.y-r.y,2)),n=ju(r,e),s=n-(Math.floor(n/90)*90+45);return t=i*Math.cos(s*(Math.PI/180))/Math.sqrt(2),t}function ju(r,e){let t=-1*Math.atan2(e.y-r.y,e.x-r.x)*180/Math.PI;return t<0&&(t+=360),t}function Yu(r,e,t){let i=e.x-r.x,n=e.y-r.y,s=Math.sqrt(i*i+n*n);if(s===0)return[];if(t<=0)return[e];let o=Math.max(1,Math.ceil(s/t)),a=[];for(let l=1;l<=o;l++)a.push({x:r.x+i*l/o,y:r.y+n*l/o});return a}function Uu(r,e,t){let i="",n=r.getPathData({normalize:!0});for(let s of n)switch(s.type){case"M":case"m":case"L":case"l":case"T":case"t":i+=s.type+" "+(s.values[0]-e)+" "+(s.values[1]-t)+" ";break;case"Z":case"z":i+=s.type+" ";break;case"C":case"c":i+=s.type+" "+(s.values[0]-e)+" "+(s.values[1]-t)+" "+(s.values[2]-e)+" "+(s.values[3]-t)+" "+(s.values[4]-e)+" "+(s.values[5]-t)+" ";break;case"S":case"s":case"Q":case"q":i+=s.type+" "+(s.values[0]-e)+" "+(s.values[1]-t)+" "+(s.values[2]-e)+" "+(s.values[3]-t)+" ";break;case"A":case"a":i+=s.type+" "+(s.values[0]-e)+" "+(s.values[1]-t)+" "+s.values[2]+" "+s.values[3]+" "+s.values[4]+" "+(s.values[5]-e)+" "+(s.values[6]-t)+" ";break}return i}function di(r){let e="";for(let i of r){e+=i.type+" ";for(var t=0;t<i.values.length;t++)i.values[t]!=null&&!isNaN(i.values[t])&&(e+=i.values[t]+" ")}return e}var Xe=g(()=>{"use strict";(!SVGPathElement.prototype.getPathData||!SVGPathElement.prototype.setPathData)&&(function(){var r={Z:"Z",M:"M",L:"L",C:"C",Q:"Q",A:"A",H:"H",V:"V",S:"S",T:"T",z:"Z",m:"m",l:"l",c:"c",q:"q",a:"a",h:"h",v:"v",s:"s",t:"t"},e=function(o){this._string=o,this._currentIndex=0,this._endIndex=this._string.length,this._prevCommand=null,this._skipOptionalSpaces()};e.prototype={parseSegment:function(){var o=this._string[this._currentIndex],a=r[o]?r[o]:null;if(a===null){if(this._prevCommand===null||((o==="+"||o==="-"||o==="."||o>="0"&&o<="9")&&this._prevCommand!=="Z"?this._prevCommand==="M"?a="L":this._prevCommand==="m"?a="l":a=this._prevCommand:a=null,a===null))return null}else this._currentIndex+=1;this._prevCommand=a;var l=null,c=a.toUpperCase();return c==="H"||c==="V"?l=[this._parseNumber()]:c==="M"||c==="L"||c==="T"?l=[this._parseNumber(),this._parseNumber()]:c==="S"||c==="Q"?l=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber()]:c==="C"?l=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseNumber()]:c==="A"?l=[this._parseNumber(),this._parseNumber(),this._parseNumber(),this._parseArcFlag(),this._parseArcFlag(),this._parseNumber(),this._parseNumber()]:c==="Z"&&(this._skipOptionalSpaces(),l=[]),l===null||l.indexOf(null)>=0?null:{type:a,values:l}},hasMoreData:function(){return this._currentIndex<this._endIndex},peekSegmentType:function(){var o=this._string[this._currentIndex];return r[o]?r[o]:null},initialCommandIsMoveTo:function(){if(!this.hasMoreData())return!0;var o=this.peekSegmentType();return o==="M"||o==="m"},_isCurrentSpace:function(){var o=this._string[this._currentIndex];return o<=" "&&(o===" "||o===`
|
|
5
|
+
`||o===" "||o==="\r"||o==="\f")},_skipOptionalSpaces:function(){for(;this._currentIndex<this._endIndex&&this._isCurrentSpace();)this._currentIndex+=1;return this._currentIndex<this._endIndex},_skipOptionalSpacesOrDelimiter:function(){return this._currentIndex<this._endIndex&&!this._isCurrentSpace()&&this._string[this._currentIndex]!==","?!1:(this._skipOptionalSpaces()&&this._currentIndex<this._endIndex&&this._string[this._currentIndex]===","&&(this._currentIndex+=1,this._skipOptionalSpaces()),this._currentIndex<this._endIndex)},_parseNumber:function(){var o=0,a=0,l=1,c=0,h=1,p=1,d=this._currentIndex;if(this._skipOptionalSpaces(),this._currentIndex<this._endIndex&&this._string[this._currentIndex]==="+"?this._currentIndex+=1:this._currentIndex<this._endIndex&&this._string[this._currentIndex]==="-"&&(this._currentIndex+=1,h=-1),this._currentIndex===this._endIndex||(this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")&&this._string[this._currentIndex]!==".")return null;for(var u=this._currentIndex;this._currentIndex<this._endIndex&&this._string[this._currentIndex]>="0"&&this._string[this._currentIndex]<="9";)this._currentIndex+=1;if(this._currentIndex!==u)for(var m=this._currentIndex-1,f=1;m>=u;)a+=f*(this._string[m]-"0"),m-=1,f*=10;if(this._currentIndex<this._endIndex&&this._string[this._currentIndex]==="."){if(this._currentIndex+=1,this._currentIndex>=this._endIndex||this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")return null;for(;this._currentIndex<this._endIndex&&this._string[this._currentIndex]>="0"&&this._string[this._currentIndex]<="9";)l*=10,c+=(this._string.charAt(this._currentIndex)-"0")/l,this._currentIndex+=1}if(this._currentIndex!==d&&this._currentIndex+1<this._endIndex&&(this._string[this._currentIndex]==="e"||this._string[this._currentIndex]==="E")&&this._string[this._currentIndex+1]!=="x"&&this._string[this._currentIndex+1]!=="m"){if(this._currentIndex+=1,this._string[this._currentIndex]==="+"?this._currentIndex+=1:this._string[this._currentIndex]==="-"&&(this._currentIndex+=1,p=-1),this._currentIndex>=this._endIndex||this._string[this._currentIndex]<"0"||this._string[this._currentIndex]>"9")return null;for(;this._currentIndex<this._endIndex&&this._string[this._currentIndex]>="0"&&this._string[this._currentIndex]<="9";)o*=10,o+=this._string[this._currentIndex]-"0",this._currentIndex+=1}var y=a+c;return y*=h,o&&(y*=Math.pow(10,p*o)),d===this._currentIndex?null:(this._skipOptionalSpacesOrDelimiter(),y)},_parseArcFlag:function(){if(this._currentIndex>=this._endIndex)return null;var o=null,a=this._string[this._currentIndex];if(this._currentIndex+=1,a==="0")o=0;else if(a==="1")o=1;else return null;return this._skipOptionalSpacesOrDelimiter(),o}};var t=function(o){if(!o||o.length===0)return[];var a=new e(o),l=[];if(a.initialCommandIsMoveTo())for(;a.hasMoreData();){var c=a.parseSegment();if(c===null)break;l.push(c)}return l},i=function(o,a,l,c,h,p,d,u,m,f){var y=function(nt){return Math.PI*nt/180},v=function(nt,St,We){var zt=nt*Math.cos(We)-St*Math.sin(We),Ei=nt*Math.sin(We)+St*Math.cos(We);return{x:zt,y:Ei}},C=y(d),w=[],b,S,M,D;if(f)b=f[0],S=f[1],M=f[2],D=f[3];else{var j=v(o,a,-C);o=j.x,a=j.y;var H=v(l,c,-C);l=H.x,c=H.y;var V=(o-l)/2,K=(a-c)/2,Q=V*V/(h*h)+K*K/(p*p);Q>1&&(Q=Math.sqrt(Q),h=Q*h,p=Q*p);var ce;u===m?ce=-1:ce=1;var B=h*h,ye=p*p,L=B*ye-B*K*K-ye*V*V,te=B*K*K+ye*V*V,X=ce*Math.sqrt(Math.abs(L/te));M=X*h*K/p+(o+l)/2,D=X*-p*V/h+(a+c)/2,b=Math.asin(parseFloat(((a-D)/p).toFixed(9))),S=Math.asin(parseFloat(((c-D)/p).toFixed(9))),o<M&&(b=Math.PI-b),l<M&&(S=Math.PI-S),b<0&&(b=Math.PI*2+b),S<0&&(S=Math.PI*2+S),m&&b>S&&(b=b-Math.PI*2),!m&&S>b&&(S=S-Math.PI*2)}var J=S-b;if(Math.abs(J)>Math.PI*120/180){var Ge=S,Pe=l,Ze=c;m&&S>b?S=b+Math.PI*120/180*1:S=b+Math.PI*120/180*-1,l=M+h*Math.cos(S),c=D+p*Math.sin(S),w=i(l,c,Pe,Ze,h,p,d,0,m,[S,Ge,M,D])}J=S-b;var Je=Math.cos(b),Kn=Math.sin(b),Qn=Math.cos(S),_l=Math.sin(S),Zn=Math.tan(J/4),Ci=4/3*h*Zn,Rt=4/3*p*Zn,wt=[o,a],pt=[o+Ci*Kn,a-Rt*Je],ni=[l+Ci*_l,c-Rt*Qn],be=[l,c];if(pt[0]=2*wt[0]-pt[0],pt[1]=2*wt[1]-pt[1],f)return[pt,ni,be].concat(w);w=[pt,ni,be].concat(w);for(var dt=[],qe=0;qe<w.length;qe+=3){let nt=v(w[qe][0],w[qe][1],C),St=v(w[qe+1][0],w[qe+1][1],C),We=v(w[qe+2][0],w[qe+2][1],C);dt.push([nt.x,nt.y,St.x,St.y,We.x,We.y])}return dt},n=function(o){var a=[],l=null,c=null,h=null,p=null;return o.forEach(function(d){var u=d.type;if(u==="M"){var m=d.values[0],f=d.values[1];a.push({type:"M",values:[m,f]}),h=m,p=f,l=m,c=f}else if(u==="m"){var m=l+d.values[0],f=c+d.values[1];a.push({type:"M",values:[m,f]}),h=m,p=f,l=m,c=f}else if(u==="L"){var m=d.values[0],f=d.values[1];a.push({type:"L",values:[m,f]}),l=m,c=f}else if(u==="l"){var m=l+d.values[0],f=c+d.values[1];a.push({type:"L",values:[m,f]}),l=m,c=f}else if(u==="C"){var y=d.values[0],v=d.values[1],C=d.values[2],w=d.values[3],m=d.values[4],f=d.values[5];a.push({type:"C",values:[y,v,C,w,m,f]}),l=m,c=f}else if(u==="c"){var y=l+d.values[0],v=c+d.values[1],C=l+d.values[2],w=c+d.values[3],m=l+d.values[4],f=c+d.values[5];a.push({type:"C",values:[y,v,C,w,m,f]}),l=m,c=f}else if(u==="Q"){var y=d.values[0],v=d.values[1],m=d.values[2],f=d.values[3];a.push({type:"Q",values:[y,v,m,f]}),l=m,c=f}else if(u==="q"){var y=l+d.values[0],v=c+d.values[1],m=l+d.values[2],f=c+d.values[3];a.push({type:"Q",values:[y,v,m,f]}),l=m,c=f}else if(u==="A"){var m=d.values[5],f=d.values[6];a.push({type:"A",values:[d.values[0],d.values[1],d.values[2],d.values[3],d.values[4],m,f]}),l=m,c=f}else if(u==="a"){var m=l+d.values[5],f=c+d.values[6];a.push({type:"A",values:[d.values[0],d.values[1],d.values[2],d.values[3],d.values[4],m,f]}),l=m,c=f}else if(u==="H"){var m=d.values[0];a.push({type:"H",values:[m]}),l=m}else if(u==="h"){var m=l+d.values[0];a.push({type:"H",values:[m]}),l=m}else if(u==="V"){var f=d.values[0];a.push({type:"V",values:[f]}),c=f}else if(u==="v"){var f=c+d.values[0];a.push({type:"V",values:[f]}),c=f}else if(u==="S"){var C=d.values[0],w=d.values[1],m=d.values[2],f=d.values[3];a.push({type:"S",values:[C,w,m,f]}),l=m,c=f}else if(u==="s"){var C=l+d.values[0],w=c+d.values[1],m=l+d.values[2],f=c+d.values[3];a.push({type:"S",values:[C,w,m,f]}),l=m,c=f}else if(u==="T"){var m=d.values[0],f=d.values[1];a.push({type:"T",values:[m,f]}),l=m,c=f}else if(u==="t"){var m=l+d.values[0],f=c+d.values[1];a.push({type:"T",values:[m,f]}),l=m,c=f}else(u==="Z"||u==="z")&&(a.push({type:"Z",values:[]}),l=h,c=p)}),a},s=function(o){var a=[],l=null,c=null,h=null,p=null,d=null,u=null,m=null;return o.forEach(function(f){if(f.type==="M"){var y=f.values[0],v=f.values[1];a.push({type:"M",values:[y,v]}),u=y,m=v,p=y,d=v}else if(f.type==="C"){var C=f.values[0],w=f.values[1],b=f.values[2],S=f.values[3],y=f.values[4],v=f.values[5];a.push({type:"C",values:[C,w,b,S,y,v]}),c=b,h=S,p=y,d=v}else if(f.type==="L"){var y=f.values[0],v=f.values[1];a.push({type:"L",values:[y,v]}),p=y,d=v}else if(f.type==="H"){var y=f.values[0];a.push({type:"L",values:[y,d]}),p=y}else if(f.type==="V"){var v=f.values[0];a.push({type:"L",values:[p,v]}),d=v}else if(f.type==="S"){var b=f.values[0],S=f.values[1],y=f.values[2],v=f.values[3],M,D;l==="C"||l==="S"?(M=p+(p-c),D=d+(d-h)):(M=p,D=d),a.push({type:"C",values:[M,D,b,S,y,v]}),c=b,h=S,p=y,d=v}else if(f.type==="T"){var y=f.values[0],v=f.values[1],C,w;l==="Q"||l==="T"?(C=p+(p-c),w=d+(d-h)):(C=p,w=d);var M=p+2*(C-p)/3,D=d+2*(w-d)/3,j=y+2*(C-y)/3,H=v+2*(w-v)/3;a.push({type:"C",values:[M,D,j,H,y,v]}),c=C,h=w,p=y,d=v}else if(f.type==="Q"){var C=f.values[0],w=f.values[1],y=f.values[2],v=f.values[3],M=p+2*(C-p)/3,D=d+2*(w-d)/3,j=y+2*(C-y)/3,H=v+2*(w-v)/3;a.push({type:"C",values:[M,D,j,H,y,v]}),c=C,h=w,p=y,d=v}else if(f.type==="A"){let B=Math.abs(f.values[0]),ye=Math.abs(f.values[1]);var V=f.values[2],K=f.values[3],Q=f.values[4],y=f.values[5],v=f.values[6];if(B===0||ye===0)a.push({type:"C",values:[p,d,y,v,y,v]}),p=y,d=v;else if(p!==y||d!==v){var ce=i(p,d,y,v,B,ye,V,K,Q);ce.forEach(function(X){a.push({type:"C",values:X})}),p=y,d=v}}else f.type==="Z"&&(a.push(f),p=u,d=m);l=f.type}),a};SVGPathElement.prototype.getPathData=function(o){if(o&&o.normalize){let a;return a=t(this.getAttribute("d")||""),s(n(a))}else return t(this.getAttribute("d")||"")},SVGPathElement.prototype.setPathData=function(o){if(o.length===0)this.removeAttribute("d");else{let a="";for(let l=0,c=o.length;l<c;l+=1){let h=o[l];l>0&&(a+=" "),a+=h.type,h.values&&h.values.length>0&&(a+=" "+h.values.join(" "))}this.setAttribute("d",a)}},SVGRectElement.prototype.getPathData=function(o){var a=this.x.baseVal.value,l=this.y.baseVal.value,c=this.width.baseVal.value,h=this.height.baseVal.value,p=this.hasAttribute("rx")?this.rx.baseVal.value:this.ry.baseVal.value,d=this.hasAttribute("ry")?this.ry.baseVal.value:this.rx.baseVal.value;p>c/2&&(p=c/2),d>h/2&&(d=h/2);var u=[{type:"M",values:[a+p,l]},{type:"H",values:[a+c-p]},{type:"A",values:[p,d,0,0,1,a+c,l+d]},{type:"V",values:[l+h-d]},{type:"A",values:[p,d,0,0,1,a+c-p,l+h]},{type:"H",values:[a+p]},{type:"A",values:[p,d,0,0,1,a,l+h-d]},{type:"V",values:[l+d]},{type:"A",values:[p,d,0,0,1,a+p,l]},{type:"Z",values:[]}];return u=u.filter(function(m){return!(m.type==="A"&&(m.values[0]===0||m.values[1]===0))}),o&&o.normalize===!0&&(u=s(u)),u},SVGCircleElement.prototype.getPathData=function(o){var a=this.cx.baseVal.value,l=this.cy.baseVal.value,c=this.r.baseVal.value,h=[{type:"M",values:[a+c,l]},{type:"A",values:[c,c,0,0,1,a,l+c]},{type:"A",values:[c,c,0,0,1,a-c,l]},{type:"A",values:[c,c,0,0,1,a,l-c]},{type:"A",values:[c,c,0,0,1,a+c,l]},{type:"Z",values:[]}];return o&&o.normalize===!0&&(h=s(h)),h},SVGEllipseElement.prototype.getPathData=function(o){var a=this.cx.baseVal.value,l=this.cy.baseVal.value,c=this.rx.baseVal.value,h=this.ry.baseVal.value,p=[{type:"M",values:[a+c,l]},{type:"A",values:[c,h,0,0,1,a,l+h]},{type:"A",values:[c,h,0,0,1,a-c,l]},{type:"A",values:[c,h,0,0,1,a,l-h]},{type:"A",values:[c,h,0,0,1,a+c,l]},{type:"Z",values:[]}];return o&&o.normalize===!0&&(p=s(p)),p},SVGLineElement.prototype.getPathData=function(){return[{type:"M",values:[this.x1.baseVal.value,this.y1.baseVal.value]},{type:"L",values:[this.x2.baseVal.value,this.y2.baseVal.value]}]},SVGPolylineElement.prototype.getPathData=function(){for(var o=[],a=0;a<this.points.numberOfItems;a+=1){var l=this.points.getItem(a);o.push({type:a===0?"M":"L",values:[l.x,l.y]})}return o},SVGPolygonElement.prototype.getPathData=function(){for(var o=[],a=0;a<this.points.numberOfItems;a+=1){var l=this.points.getItem(a);o.push({type:a===0?"M":"L",values:[l.x,l.y]})}return o.push({type:"Z",values:[]}),o}})()});var Sc={};qd(Sc,{SvgPathGeometryReader:()=>xn});var xn,bn=g(()=>{"use strict";Ue();Xe();Xe();xn=class{read(e){let i=e.getPathData({normalize:!1}),n=[],s={x:0,y:0},o={x:0,y:0},a=!1;for(let l of i){let c=l.type===l.type.toLowerCase();switch(l.type.toUpperCase()){case"M":{let p=c?s.x+l.values[0]:l.values[0],d=c?s.y+l.values[1]:l.values[1];n.push({type:x.Move,relative:c,point:{x:p,y:d}}),s={x:p,y:d},o={x:p,y:d};break}case"L":{let p=c?s.x+l.values[0]:l.values[0],d=c?s.y+l.values[1]:l.values[1];n.push({type:x.Line,relative:c,point:{x:p,y:d}}),s={x:p,y:d};break}case"H":{let p=c?s.x+l.values[0]:l.values[0];n.push({type:x.HorizontalLine,relative:c,point:{x:p,y:s.y}}),s={x:p,y:s.y};break}case"V":{let p=c?s.y+l.values[0]:l.values[0];n.push({type:x.VerticalLine,relative:c,point:{x:s.x,y:p}}),s={x:s.x,y:p};break}case"C":{let p=c?s.x+l.values[0]:l.values[0],d=c?s.y+l.values[1]:l.values[1],u=c?s.x+l.values[2]:l.values[2],m=c?s.y+l.values[3]:l.values[3],f=c?s.x+l.values[4]:l.values[4],y=c?s.y+l.values[5]:l.values[5];n.push({type:x.CubicBezier,relative:c,point:{x:f,y},cp1:{x:p,y:d},cp2:{x:u,y:m}}),s={x:f,y};break}case"S":{let p=c?s.x+l.values[0]:l.values[0],d=c?s.y+l.values[1]:l.values[1],u=c?s.x+l.values[2]:l.values[2],m=c?s.y+l.values[3]:l.values[3];n.push({type:x.SmoothCubic,relative:c,point:{x:u,y:m},cp2:{x:p,y:d}}),s={x:u,y:m};break}case"Q":{let p=c?s.x+l.values[0]:l.values[0],d=c?s.y+l.values[1]:l.values[1],u=c?s.x+l.values[2]:l.values[2],m=c?s.y+l.values[3]:l.values[3];n.push({type:x.QuadraticBezier,relative:c,point:{x:u,y:m},cp1:{x:p,y:d}}),s={x:u,y:m};break}case"T":{let p=c?s.x+l.values[0]:l.values[0],d=c?s.y+l.values[1]:l.values[1];n.push({type:x.SmoothQuadratic,relative:c,point:{x:p,y:d}}),s={x:p,y:d};break}case"A":{let p=c?s.x+l.values[5]:l.values[5],d=c?s.y+l.values[6]:l.values[6];n.push({type:x.Arc,relative:c,point:{x:p,y:d},arc:{rx:l.values[0],ry:l.values[1],rotation:l.values[2],largeArc:l.values[3]===1,sweep:l.values[4]===1}}),s={x:p,y:d};break}case"Z":{a=!0,n.push({type:x.Close,relative:c,point:{...o}}),s={...o};break}}}return{segments:n,closed:a}}serialize(e){let t=[],i={x:0,y:0};for(let n of e.segments){let s=n.relative;switch(n.type){case x.Move:{let o=s?n.point.x-i.x:n.point.x,a=s?n.point.y-i.y:n.point.y;t.push({type:s?"m":"M",values:[o,a]}),i={...n.point};break}case x.Line:{let o=s?n.point.x-i.x:n.point.x,a=s?n.point.y-i.y:n.point.y;t.push({type:s?"l":"L",values:[o,a]}),i={...n.point};break}case x.HorizontalLine:{let o=s?n.point.x-i.x:n.point.x;t.push({type:s?"h":"H",values:[o]}),i={...n.point};break}case x.VerticalLine:{let o=s?n.point.y-i.y:n.point.y;t.push({type:s?"v":"V",values:[o]}),i={...n.point};break}case x.CubicBezier:{let o=s?n.cp1.x-i.x:n.cp1.x,a=s?n.cp1.y-i.y:n.cp1.y,l=s?n.cp2.x-i.x:n.cp2.x,c=s?n.cp2.y-i.y:n.cp2.y,h=s?n.point.x-i.x:n.point.x,p=s?n.point.y-i.y:n.point.y;t.push({type:s?"c":"C",values:[o,a,l,c,h,p]}),i={...n.point};break}case x.SmoothCubic:{let o=s?n.cp2.x-i.x:n.cp2.x,a=s?n.cp2.y-i.y:n.cp2.y,l=s?n.point.x-i.x:n.point.x,c=s?n.point.y-i.y:n.point.y;t.push({type:s?"s":"S",values:[o,a,l,c]}),i={...n.point};break}case x.QuadraticBezier:{let o=s?n.cp1.x-i.x:n.cp1.x,a=s?n.cp1.y-i.y:n.cp1.y,l=s?n.point.x-i.x:n.point.x,c=s?n.point.y-i.y:n.point.y;t.push({type:s?"q":"Q",values:[o,a,l,c]}),i={...n.point};break}case x.SmoothQuadratic:{let o=s?n.point.x-i.x:n.point.x,a=s?n.point.y-i.y:n.point.y;t.push({type:s?"t":"T",values:[o,a]}),i={...n.point};break}case x.Arc:{let o=s?n.point.x-i.x:n.point.x,a=s?n.point.y-i.y:n.point.y;t.push({type:s?"a":"A",values:[n.arc.rx,n.arc.ry,n.arc.rotation,n.arc.largeArc?1:0,n.arc.sweep?1:0,o,a]}),i={...n.point};break}case x.Close:{t.push({type:s?"z":"Z",values:[]});break}}}return[{attribute:"d",value:di(t)}]}}});function ay(r,e){let t=r.style.getPropertyValue(e).trim();return t?{target:"style",unit:ly(t)}:{target:"attribute"}}function ly(r){let e=r.trim().match(/^-?(?:\d+|\d*\.\d+)([a-z%]*)$/i);return e&&e[1]?e[1]:"px"}function Ur(r,e,t){let i=t?.[r];return i?.target==="style"?{attribute:r,value:`${e}${i.unit??"px"}`,target:"style"}:{attribute:r,value:e.toString()}}var oy,Xr,Cc=g(()=>{"use strict";Ue();oy=["x","y","width","height"];Xr=class{read(e){let t=e,i=t.getBBox(),n=i.x,s=i.y,o=i.width,a=i.height,l=[{type:x.Move,relative:!1,point:{x:n,y:s}},{type:x.Line,relative:!1,point:{x:n+o,y:s}},{type:x.Line,relative:!1,point:{x:n+o,y:s+a}},{type:x.Line,relative:!1,point:{x:n,y:s+a}},{type:x.Close,relative:!1,point:{x:n,y:s}}],c=Object.fromEntries(oy.map(h=>[h,ay(t,h)]));return{segments:l,closed:!0,serializationHints:c}}serialize(e){let t=e.segments.filter(c=>c.type!==x.Close);if(t.length<2)return[];let i=t.map(c=>c.point.x),n=t.map(c=>c.point.y),s=Math.min(...i),o=Math.min(...n),a=Math.max(...i),l=Math.max(...n);return[Ur("x",s,e.serializationHints),Ur("y",o,e.serializationHints),Ur("width",a-s,e.serializationHints),Ur("height",l-o,e.serializationHints)]}}});var $r,Ec=g(()=>{"use strict";Ue();$r=class{read(e){let t=e,i=t.x1.baseVal.value,n=t.y1.baseVal.value,s=t.x2.baseVal.value,o=t.y2.baseVal.value;return{segments:[{type:x.Move,relative:!1,point:{x:i,y:n}},{type:x.Line,relative:!1,point:{x:s,y:o}}],closed:!1}}serialize(e){let t=e.segments.filter(i=>i.type!==x.Close);return t.length<2?[]:[{attribute:"x1",value:t[0].point.x.toString()},{attribute:"y1",value:t[0].point.y.toString()},{attribute:"x2",value:t[1].point.x.toString()},{attribute:"y2",value:t[1].point.y.toString()}]}}});var Kr,Pc=g(()=>{"use strict";Ue();Kr=class{read(e){let t=e,i=t.cx.baseVal.value,n=t.cy.baseVal.value,s=t.rx.baseVal.value,o=t.ry.baseVal.value;return{segments:[{type:x.Move,relative:!1,point:{x:i,y:n-o}},{type:x.Arc,relative:!1,point:{x:i+s,y:n},arc:{rx:s,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:i,y:n+o},arc:{rx:s,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:i-s,y:n},arc:{rx:s,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:i,y:n-o},arc:{rx:s,ry:o,rotation:0,largeArc:!1,sweep:!0}},{type:x.Close,relative:!1,point:{x:i,y:n-o}}],closed:!0}}serialize(e){let t=e.segments.filter(p=>p.type!==x.Close);if(t.length<4)return[];let i=t[0].point,n=t[1].point,s=t[2].point,o=t[3].point,a=(n.x+o.x)/2,l=(i.y+s.y)/2,c=Math.abs(n.x-o.x)/2,h=Math.abs(s.y-i.y)/2;return[{attribute:"cx",value:a.toString()},{attribute:"cy",value:l.toString()},{attribute:"rx",value:c.toString()},{attribute:"ry",value:h.toString()}]}}});var Qr,Ic=g(()=>{"use strict";Ue();Qr=class{read(e){let t=e,i=t.cx.baseVal.value,n=t.cy.baseVal.value,s=t.r.baseVal.value;return{segments:[{type:x.Move,relative:!1,point:{x:i,y:n-s}},{type:x.Arc,relative:!1,point:{x:i+s,y:n},arc:{rx:s,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:i,y:n+s},arc:{rx:s,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:i-s,y:n},arc:{rx:s,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:i,y:n-s},arc:{rx:s,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Close,relative:!1,point:{x:i,y:n-s}}],closed:!0}}serialize(e){let t=e.segments.filter(h=>h.type!==x.Close);if(t.length<4)return[];let i=t[0].point,n=t[1].point,s=t[2].point,o=t[3].point,a=(n.x+o.x)/2,l=(i.y+s.y)/2,c=Math.max(Math.abs(n.x-o.x)/2,Math.abs(s.y-i.y)/2);return[{attribute:"cx",value:a.toString()},{attribute:"cy",value:l.toString()},{attribute:"r",value:c.toString()}]}}});var Zr,Dc=g(()=>{"use strict";Ue();Zr=class{read(e){let i=e.points,n=[];for(let s=0;s<i.numberOfItems;s++){let o=i.getItem(s);s===0?n.push({type:x.Move,relative:!1,point:{x:o.x,y:o.y}}):n.push({type:x.Line,relative:!1,point:{x:o.x,y:o.y}})}return n.length>0&&n.push({type:x.Close,relative:!1,point:{...n[0].point}}),{segments:n,closed:!0}}serialize(e){return[{attribute:"points",value:e.segments.filter(n=>n.type!==x.Close).map(n=>`${n.point.x},${n.point.y}`).join(" ")}]}}});var Jr,kc=g(()=>{"use strict";Ue();Jr=class{read(e){let i=e.points,n=[];for(let s=0;s<i.numberOfItems;s++){let o=i.getItem(s);s===0?n.push({type:x.Move,relative:!1,point:{x:o.x,y:o.y}}):n.push({type:x.Line,relative:!1,point:{x:o.x,y:o.y}})}return{segments:n,closed:!1}}serialize(e){return[{attribute:"points",value:e.segments.filter(n=>n.type!==x.Close).map(n=>`${n.point.x},${n.point.y}`).join(" ")}]}}});function Qt(r){if(r instanceof SVGPathElement)return _e.has(SVGPathElement)||_e.set(SVGPathElement,new xn),_e.get(SVGPathElement);if(r instanceof SVGRectElement)return _e.has(SVGRectElement)||_e.set(SVGRectElement,new Xr),_e.get(SVGRectElement);if(r instanceof SVGLineElement)return _e.has(SVGLineElement)||_e.set(SVGLineElement,new $r),_e.get(SVGLineElement);if(r instanceof SVGEllipseElement)return _e.has(SVGEllipseElement)||_e.set(SVGEllipseElement,new Kr),_e.get(SVGEllipseElement);if(r instanceof SVGCircleElement)return _e.has(SVGCircleElement)||_e.set(SVGCircleElement,new Qr),_e.get(SVGCircleElement);if(r instanceof SVGPolygonElement)return _e.has(SVGPolygonElement)||_e.set(SVGPolygonElement,new Zr),_e.get(SVGPolygonElement);if(r instanceof SVGPolylineElement)return _e.has(SVGPolylineElement)||_e.set(SVGPolylineElement,new Jr),_e.get(SVGPolylineElement)}function X0(r,e){Xu.set(r,e)}function $0(r){return Xu.get(r)??null}var _e,Xu,Fi=g(()=>{"use strict";bn();Cc();Ec();Pc();Ic();Dc();kc();_e=new Map;Xu=new Map});function hy(r){return"style"in r}function pe(r,e){return e>=0?r.toFixed(e):r.toString()}function Ac(r,e){return e<0?r:r.replace(cy,t=>pe(Number(t),e))}function $u(r,e){return e<0?r:r.map(t=>({...t,value:Ac(t.value,e)}))}function Ku(r,e,t=-1){for(let i of $u(e,t))i.target==="style"&&hy(r)?r.style.setProperty(i.attribute,i.value):r.setAttribute(i.attribute,i.value)}function qr(r,e){let t=$u(e,r.serviceContainer.options.roundPixelsToDecimalPlaces);for(let i of t)i.target==="style"?r.setStyle(i.attribute,i.value):r.setAttribute(i.attribute,i.value)}var cy,ui=g(()=>{"use strict";cy=/-?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?/gi});function ue(r){let e=[];e:for(let t of r){let i=t.parent;for(;i!=null&&!i.isRootItem;){if(r.indexOf(i)>=0)continue e;i=i.parent}e.push(t)}return e}function es(r,e){if(e==="position"){let t=getComputedStyle(r.element),i=parseFloat(t.left);i=Number.isNaN(i)?null:i;let n=parseFloat(t.top);return n=Number.isNaN(n)?null:n,{x:i??0,y:n??0}}return{x:0,y:0}}function ts(r,e,t,i){let n=e.element,s=getComputedStyle(n);if(i==="position"){if(py(e,t))return;let o=r.element,a=r.getComputedStyle();a.position!=="relative"&&a.position!=="absolute"&&o&&o.offsetParent&&(o=o.offsetParent,o&&(a=r.window.getComputedStyle(o)));let l=null,c=null,h=null,p=null,d=0,u=0,m=0,f=0,y=!1;if(s.position==="relative"||s.position==="absolute")l=parseFloat(n.style.left),l=Number.isNaN(l)?null:l,h=parseFloat(n.style.top),h=Number.isNaN(h)?null:h,c=parseFloat(n.style.right),c=Number.isNaN(c)?null:c,p=parseFloat(n.style.bottom),p=Number.isNaN(p)?null:p,y=!0;else if(o&&o!==r.element){let v=Z(o),C=Z(e.element);d=C.left-v.left,u=C.right-v.right,m=C.top-v.top,f=C.bottom-v.bottom}y||e.setStyle("position","absolute"),(l||c==null)&&e.setStyle("left",N(e,t.x+(l??0)+d)+"px"),(h||p==null)&&e.setStyle("top",N(e,t.y+(h??0)+m)+"px"),c!=null&&e.setStyle("right",N(e,(c??0)-t.x+u)+"px"),p!=null&&e.setStyle("bottom",N(e,(p??0)-t.y+f)+"px")}}function is(r,e){let t=e.a*e.d-e.b*e.c;return Math.abs(t)<1e-10?r:{x:(e.d*r.x-e.c*r.y)/t,y:(-e.b*r.x+e.a*r.y)/t}}function py(r,e){let t=r.element;if(!(t instanceof SVGGraphicsElement)||t instanceof SVGSVGElement)return!1;let i=Qt(t);if(!i)return!1;let n=i.read(t);for(let a of n.segments)a.point&&(a.point.x+=e.x,a.point.y+=e.y),a.cp1&&(a.cp1.x+=e.x,a.cp1.y+=e.y),a.cp2&&(a.cp2.x+=e.x,a.cp2.y+=e.y);let s=i.serialize(n);if(!s.length)return!1;let o=r.openGroup("place svg geometry");return qr(r,s),o.commit(),!0}function N(r,e){return r.serviceContainer.options.roundPixelsToDecimalPlaces>=0?e.toFixed(r.serviceContainer.options.roundPixelsToDecimalPlaces):e.toString()}var Le=g(()=>{"use strict";de();Fi();ui()});function $(r){return Pu()?r.metaKey:r.ctrlKey}var $e=g(()=>{"use strict";ze()});function Qu(r){let e=r.element;return e instanceof SVGGraphicsElement&&!(e instanceof SVGSVGElement)&&!!Qt(e)}function Tc(r){let e=[];for(let t of r)t.nodeType===k.TextNode||t.nodeType===k.Comment||e.push(t);return e}var gt,Bi=g(()=>{"use strict";ot();wc();Le();st();Xe();$e();q();de();Fi();gt=class{serviceForContainer(e,t,i){return i!=null&&i.getComputedStyle()?.position=="absolute"?!0:!(t.display==="grid"||t.display==="inline-grid"||t.display==="flex"||t.display==="inline-flex")}isEnterableContainer(e){return!(ie.IsSelfClosingElement(e.element.localName)||!e.isRootItem&&e.element.shadowRoot&&e.element.shadowRoot.querySelector("slot")==null)}canEnter(e,t){return!(e.instanceServiceContainer.designerCanvas.readOnly||!this.isEnterableContainer(e)||!t.every(i=>!i.element.contains(e.element)&&i!==e))}canLeave(e,t){return!0}getElementOffset(e,t){return e.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(e.element)}calculateTrack(e,t,i,n,s,o){let a=s.x-i.x,l=s.y-i.y;if(!$(e)){if(t.alignOnGrid){let c=es(o,"position");c.x=c.x%t.gridSize,c.y=c.y%t.gridSize,a=Math.round(a/t.gridSize)*t.gridSize-c.x,l=Math.round(l/t.gridSize)*t.gridSize-c.y}else if(t.alignOnSnap){let c=Z(o.element),h=t.snapLines.snapToPosition({x:s.x-n.x,y:s.y-n.y},{width:c.width/t.scaleFactor,height:c.height/t.scaleFactor},{x:a>0?1:-1,y:l>0?1:-1});h.x!==null?a=h.x-Math.round(i.x)+Math.round(n.x):a=Math.round(a),h.y!==null?l=h.y-Math.round(i.y)+Math.round(n.y):l=Math.round(l)}}return{x:a,y:l}}placePoint(e,t,i,n,s,o,a){let l=o.x,c=o.y;if(!$(e)){if(t.alignOnGrid)l=Math.round(l/t.gridSize)*t.gridSize,c=Math.round(c/t.gridSize)*t.gridSize;else if(t.alignOnSnap){let h=t.snapLines.snapToPosition({x:o.x-s.x,y:o.y-s.y},null,{x:l>0?1:-1,y:c>0?1:-1});h.x!==null?l=h.x:l=Math.round(l),h.y!==null?c=h.y:c=Math.round(c)}}return{x:l,y:c}}startPlace(e,t,i,n,s,o,a){}place(e,t,i,n,s,o,a){let l=this.calculateTrack(e,t,n,s,o,a[0]);e.shiftKey&&(l=It({x:0,y:0},l,90));let c=ue(Tc(a));for(let h of c){let p=h.instanceServiceContainer.designerCanvas.canvas,d=h.parent.element.getBoxQuads({relativeTo:p,iframes:h.instanceServiceContainer.designerCanvas.iframes})[0],u=h.parent.element.convertPointFromNode(new DOMPoint(l.x+d.p1.x,l.y+d.p1.y),p,{iframes:h.instanceServiceContainer.designerCanvas.iframes}),m=getComputedStyle(h.element),f=new DOMMatrix;m.rotate!="none"&&m.rotate&&(f=f.multiply(new DOMMatrix("rotate("+m.rotate.replace(" ",",")+")"))),m.scale!="none"&&m.scale&&(f=f.multiply(new DOMMatrix("scale("+m.scale.replace(" ",",")+")"))),u=f.inverse().transformPoint(u);let y=pr(h.element);y!==1&&(u=new DOMPoint(u.x/y,u.y/y));let v=new DOMMatrix().translate(u.x,u.y);Yr(h.element,h.getStyle("transform"),v.toString())}a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(c,"place",!1)}moveElements(e,t,i){for(let n of e)t.x&&n.setStyle("left",parseInt(n.element.style.left)-t.x+"px"),t.y&&n.setStyle("top",parseInt(n.element.style.top)-t.y+"px");e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshExtensions(e),e[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(e,"place",!0)}enterContainer(e,t,i){let n=ue(t);for(let s of n)i=="drop"&&s.setStyle("position","absolute"),e.insertChild(s),s.lastContainerSize&&(s.hasStyle("width")||s.setStyle("width",s.lastContainerSize.width+"px"),s.hasStyle("height")||s.setStyle("height",s.lastContainerSize.height+"px"));t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(n,"place",!0)}leaveContainer(e,t){let i=ue(t);t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(i,"place",!0)}finishPlace(e,t,i,n,s,o,a){let l=ue(a);for(let c of l){let h=Ri(new DOMMatrix(c.element.style.transform)),p=Ri(new DOMMatrix(c.getStyle("transform")??""));c.element.style.transform=c.getStyle("transform")??"";let d={x:h.x,y:h.y},u=getComputedStyle(c.element),m=new DOMMatrix;u.rotate!="none"&&u.rotate&&(m=m.multiply(new DOMMatrix("rotate("+u.rotate.replace(" ",",")+")"))),u.scale!="none"&&u.scale&&(m=m.multiply(new DOMMatrix("scale("+u.scale.replace(" ",",")+")"))),Qu(c)||(d=m.transformPoint(d));let f={x:d.x-p.x,y:d.y-p.y};Qu(c)&&(f=is(f,new DOMMatrix(c.getStyle("transform")??""))),ts(i,c,f,"position")}for(let c of a)t.extensionManager.removeExtension(c,I.Placement);a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(l,"place",!0)}}});var Zt,wn=g(()=>{"use strict";oe();Pr();vr();Zt=class{async parse(e,t,i,n){let s;Document.parseHTMLUnsafe&&!Er?s=Document.parseHTMLUnsafe(e):s=new DOMParser().parseFromString(e,"text/html",{includeShadowRoots:!0});let o=this.createDesignItems(s.head.childNodes,t,i),a=this.createDesignItems(s.body.childNodes,t,i),l=[...o,...a];return!n&&i.designItemDocumentPositionService&&l.length&&t.htmlWriterService.write(new Mi,l,!0,!0),l}createDesignItems(e,t,i){let n=[];for(let s of e)n.push(this._createDesignItemsRecursive(s,t,i));return n}_createDesignItemsRecursive(e,t,i){return O.createDesignItemFromInstance(e,t,i)}}});var ns,Mc=g(()=>{"use strict";ki();Ie();fe();ns=class extends mt{name="lit2";isHandledElement(e){return!!e.element.constructor.elementProperties}async getProperties(e){if(!this.isHandledElement(e))return null;let t=[];for(let i of e.element.constructor.elementProperties.entries()){let n=i[0],s=i[1],o=s;if(s.type&&(o=s.type),o===String){let a={name:n,type:"string",service:this,propertyType:_.propertyAndAttribute};t.push(a)}else if(o===Object){let a={name:n,type:"string",service:this,propertyType:_.propertyAndAttribute};t.push(a)}else if(o===Number){let a={name:n,type:"number",service:this,propertyType:_.propertyAndAttribute};t.push(a)}else if(o===Date){let a={name:n,type:"date",service:this,propertyType:_.propertyAndAttribute};t.push(a)}else if(o===Boolean){let a={name:n,type:"boolean",service:this,propertyType:_.propertyAndAttribute};t.push(a)}else if(z.isTypescriptEnum(o)){let a={name:n,type:"enum",enumValues:z.getTypescriptEnumEntries(o),service:this,propertyType:_.propertyAndAttribute};t.push(a)}}return t}_notifyChangedProperty(e,t,i){}}});function Zu(r,e){Lc||(Lc=document.createElement("canvas"));let t=Lc.getContext("2d");return t.font=e,t.measureText(r).width}var Lc,Ju=g(()=>{"use strict"});var ee,Dt=g(()=>{"use strict";(function(r){r.Pointer="Pointer",r.DrawSelection="DrawSelection",r.DrawPath="DrawPath",r.DrawRect="DrawRect",r.DrawEllipsis="DrawEllipsis",r.DrawLine="DrawLine",r.Zoom="Zoom",r.Pan="Pan",r.MagicWandSelector="MagicWandSelector",r.RectangleSelector="RectangleSelector",r.PickColor="PickColor",r.Text="Text",r.DrawElementTool="DrawElementTool",r.Guides="Guides",r.Inspect="Inspect",r.Accessibility="Accessibility",r.Position="Position",r.Padding="Padding",r.Margin="Margin",r.Flexbox="Flexbox",r.Move="Move",r.HueShift="HueShift",r.BoxShadows="BoxShadows",r.FontStyles="FontStyles"})(ee||(ee={}))});var T,se=g(()=>{"use strict";(function(r){r[r.Background=10]="Background",r[r.Normal=20]="Normal",r[r.Foreground=30]="Foreground"})(T||(T={}))});var Hi,Oc=g(()=>{"use strict";se();Hi=class{overlays=[];overlayLayerView;extensionManager;designerCanvas;constructor(e,t){this.extensionManager=e,this.designerCanvas=t,this.overlayLayerView=t.overlayLayer}_backup;_valuesHaveChanges(...e){if(this._backup==null)return this._backup=e,!0;for(let t=0;t<e.length;t++)if(e[t]!==this._backup[t])return this._backup=e,!0;return!1}_removeAllOverlays(){for(let e of this.overlays)try{this.overlayLayerView.removeOverlay(e)}catch(t){console.error(t)}this.overlays=[]}_addOverlay(e,t=T.Normal){this.overlayLayerView.addOverlay(this.constructor.name,e,t),this.overlays.push(e)}_drawGroup(e,t,i){let n=this.overlayLayerView.drawGroup(this.constructor.name,e,t,i);return t||this.overlays.push(n),n}_drawLine(e,t,i,n,s,o,a){let l=this.overlayLayerView.drawLine(this.constructor.name,e,t,i,n,s,o,a);return o||this.overlays.push(l),l}_drawCircle(e,t,i,n,s,o){let a=this.overlayLayerView.drawCircle(this.constructor.name,e,t,i,n,s,o);return s||this.overlays.push(a),a}_drawRect(e,t,i,n,s,o,a){let l=this.overlayLayerView.drawRect(this.constructor.name,e,t,i,n,s,o,a);return o||this.overlays.push(l),l}_drawComplexRect(e,t,i,n){let s="M"+e.map(a=>a.x+","+a.y).join(" ")+"Z",o=this.overlayLayerView.drawPath(this.constructor.name,s,t,i,n);return i||this.overlays.push(o),o}_drawPath(e,t,i,n){let s=this.overlayLayerView.drawPath(this.constructor.name,e,t,i,n);return i||this.overlays.push(s),s}_drawText(e,t,i,n,s,o){let a=this.overlayLayerView.drawText(this.constructor.name,e,t,i,n,s,o);return s||this.overlays.push(a),a}_drawHTML(e,t,i,n,s,o,a,l){let c=this.overlayLayerView.drawHTML(this.constructor.name,e,t,i,n,s,o,a,l);return a||this.overlays.push(c),c}_drawTextWithBackground(e,t,i,n,s,o,a){let l=this.overlayLayerView.drawTextWithBackground(this.constructor.name,e,t,i,n,s,o,a);return o||this.overlays.push(...l),l}_drawTransformedRect(e,t,i,n){let s="M"+e.p1.x+" "+e.p1.y+" L"+e.p2.x+" "+e.p2.y+" L"+e.p3.x+" "+e.p3.y+" L"+e.p4.x+" "+e.p4.y+"Z",o=this.overlayLayerView.drawPath(this.constructor.name,s,t,i,n);return i||this.overlays.push(o),o}}});var F,le=g(()=>{"use strict";Oc();se();F=class extends Hi{extendedItem;constructor(e,t,i){super(e,t),this.extendedItem=i}remove(){this.extensionManager.removeExtensionInstance(this.extendedItem,this)}createToolbar(e,t,i,n=T.Foreground){let s=e.content.cloneNode(!0);s.querySelectorAll("*").forEach(a=>{a.onpointerdown=l=>{this.designerCanvas.ignoreEvent(l)},a instanceof HTMLInputElement&&(a.addEventListener("keydown",l=>{this.designerCanvas.ignoreEvent(l)},{capture:!0}),a.addEventListener("keyup",l=>{this.designerCanvas.ignoreEvent(l)},{capture:!0}))});let o=document.createElementNS("http://www.w3.org/2000/svg","foreignObject");return o.classList.add("svg-toolbar-container"),o.setAttribute("width",""+t),o.setAttribute("height",""+i),o.appendChild(s),o.style.scale=""+1/this.designerCanvas.zoomFactor,o.style.transformBox="fill-box",this._addOverlay(o,n),o.updatePosition=a=>{o.style.scale=""+1/this.designerCanvas.zoomFactor;let l=this.overlayLayerView.getBoundingClientRect(),c=o.children[0].getBoundingClientRect(),h=this.designerCanvas.scaleFactor,p=l.width/h-this.designerCanvas.canvasOffset.x*h;c.width+a.x*h>p&&(a.x=(p-c.width)/h),a.x<-this.designerCanvas.canvasOffset.x&&(a.x=-this.designerCanvas.canvasOffset.x),o.setAttribute("x",""+a.x),o.setAttribute("y",""+a.y)},o.getById=a=>o.querySelector("#"+a),o}}});var dy,rs,Nc=g(()=>{"use strict";de();Ju();Dt();le();dy=60,rs=class extends F{_rect;_clickRect;_text;_width;_createTitleText;constructor(e,t,i,n){super(e,t,i),this._createTitleText=n}extend(e,t){let i=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];if(i&&!isNaN(i.p1.x)){let n=Z(this.extendedItem.element),s=Zu(this.extendedItem.name,"10px monospace"),o=Math.sqrt(Math.pow(i.p2.x-i.p1.x,2)+Math.pow(i.p2.y-i.p1.y,2)),a=this.extendedItem.name;this.extendedItem.id&&(a="#"+this.extendedItem.id),this._createTitleText&&(a=this._createTitleText(this.extendedItem)),this._width=Math.max(Math.min(o,s),dy),this._rect=this._drawRect(i.p1.x,i.p1.y,this._width,15,"svg-primary-selection-move",this._rect),this._clickRect=this._drawRect(i.p1.x,i.p1.y,this._width,18,"svg-invisible",this._clickRect),this._clickRect.style.background="transparent",this._text=this._drawHTML('<div style="position:relative; pointer-events: none;"><span style="width: 100%; position: absolute; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transform-origin: 0 0; padding-left: 2px;">'+a+"</span></div>",(n.x-this.designerCanvas.containerBoundingRect.x)/this.designerCanvas.scaleFactor,i.p1.y-16,this._width,15,"svg-text-primary",this._text),this._text.style.overflow="visible",this._clickRect.addEventListener("pointerdown",l=>this._pointerEvent(l)),this._clickRect.addEventListener("pointermove",l=>this._pointerEvent(l)),this._clickRect.addEventListener("pointerup",l=>this._pointerEvent(l)),this._clickRect.addEventListener("contextmenu",l=>{l.preventDefault(),this.designerCanvas.showDesignItemContextMenu(this.extendedItem,l)}),this.refresh(e,t)}}_drawMoveOverlay(e){}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];if(!isNaN(i.p1.x)){let n=Math.atan2(i.p2.y-i.p1.y,i.p2.x-i.p1.x)*180/Math.PI;if(this._valuesHaveChanges(i.p1.x,i.p1.y,n,this.designerCanvas.scaleFactor)){let s=15/this.designerCanvas.scaleFactor,o=-(16/this.designerCanvas.scaleFactor),a=this._width/this.designerCanvas.scaleFactor;this._rect.setAttribute("x",""+i.p1.x),this._rect.setAttribute("y",""+i.p1.y),this._rect.style.rotate=n+"deg",this._rect.style.translate="0 "+o+"px",this._rect.style.transformOrigin="0 100%",this._rect.style.transformBox="fill-box",this._rect.setAttribute("height",""+s),this._rect.setAttribute("width",""+a),this._rect.style.strokeWidth=(1/this.designerCanvas.scaleFactor).toString(),this._clickRect.setAttribute("x",""+i.p1.x),this._clickRect.setAttribute("y",""+i.p1.y),this._clickRect.style.rotate=n+"deg",this._clickRect.style.translate="0 "+o+"px",this._clickRect.style.transformOrigin="0 100%",this._clickRect.style.transformBox="fill-box",this._clickRect.setAttribute("height",""+(s+3)),this._clickRect.setAttribute("width",""+a),this._clickRect.style.strokeWidth=(1/this.designerCanvas.scaleFactor).toString(),this._text.setAttribute("x",""+i.p1.x),this._text.setAttribute("y",""+i.p1.y),this._text.style.fontSize=10/this.designerCanvas.scaleFactor+"px",this._text.setAttribute("height",""+s),this._text.setAttribute("width",""+a),this._text.children[0].children[0].style.rotate=n+"deg",this._text.children[0].children[0].style.translate="0 "+o+"px",this._text.children[0].children[0].style.transformOrigin="0 100%"}}}_pointerEvent(e){e.preventDefault(),e.stopPropagation(),e.button!=2&&this.designerCanvas.serviceContainer.designerTools.get(ee.Pointer).pointerEventHandler(this.designerCanvas,e,this.extendedItem.element)}dispose(){this._removeAllOverlays()}}});import{css as uy}from"@node-projects/base-custom-webcomponent";var ss,Vc=g(()=>{"use strict";Nc();ss=class{_createTitleText;constructor(e){this._createTitleText=e}shouldExtend(e,t,i){return!i.isRootItem&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new rs(e,t,i,this._createTitleText)}static style=uy`.svg-text-primary{stroke:none;color:#fff;font-family:monospace}`}});var P,me=g(()=>{"use strict";(function(r){r.PointerDown="pointerdown",r.PointerMove="pointermove",r.PointerUp="pointerup",r.DragEnter="dragenter",r.DragEnd="dragend",r.DragLeave="dragleave",r.DragOver="dragover",r.Drop="drop",r.Scroll="scroll",r.Wheel="wheel",r.ContextMenu="contextmenu",r.KeyDown="keydown",r.KeyUp="keyup",r.DblClick="dblclick"})(P||(P={}))});function Rc(r,e,t){if(!r)return null;let i={px:s=>s,cm:s=>s*38,mm:s=>s*3.8,q:s=>s*.95,in:s=>s*96,pc:s=>s*16,pt:s=>s*1.333333,rem:s=>s*parseFloat(getComputedStyle(document.documentElement).fontSize),em:s=>s*parseFloat(getComputedStyle(e).fontSize),vw:s=>s/100*window.innerWidth,vh:s=>s/100*window.innerHeight,vmin:s=>s/100*(window.innerHeight<window.innerWidth?window.innerHeight:window.innerWidth),vmax:s=>s/100*(window.innerHeight>window.innerWidth?window.innerHeight:window.innerWidth),lh:s=>s*parseFloat(getComputedStyle(e).lineHeight),rlh:s=>s*parseFloat(getComputedStyle(document.documentElement).lineHeight),"%":s=>s/100*(t=="height"?os(e).height:os(e).width),ms:s=>s,s:s=>s*1e3,deg:s=>s,rad:s=>s*(180/Math.PI),grad:s=>s*(180/200),turn:s=>s*360},n=r.trim().match(qu);if(n){let s=Number(n[1]),o=n[2].toLowerCase();if(o in i)return i[o](s)}return r}function mi(r){let e=r.trim().match(qu);return e?e[2].toLowerCase():null}function Gi(r,e,t,i,n){if(!r)return null;let s={px:o=>o,cm:o=>o/38,mm:o=>o/3.8,q:o=>o/.95,in:o=>o/96,pc:o=>o/16,pt:o=>o/1.333333,rem:o=>o/parseFloat(getComputedStyle(document.documentElement).fontSize),em:o=>o/parseFloat(getComputedStyle(e).fontSize),vw:o=>o*100/window.innerWidth,vh:o=>o*100/window.innerHeight,vmin:o=>o*100/(window.innerHeight<window.innerWidth?window.innerHeight:window.innerWidth),vmax:o=>o*100/(window.innerHeight>window.innerWidth?window.innerHeight:window.innerWidth),lh:o=>o/parseFloat(getComputedStyle(e).lineHeight),rlh:o=>o/parseFloat(getComputedStyle(document.documentElement).lineHeight),"%":o=>o*100/(t=="height"?os(e).height:os(e).width),ms:o=>o,s:o=>o/1e3,deg:o=>o,rad:o=>o/(180/Math.PI),grad:o=>o/(180/200),turn:o=>o/360};if(typeof r=="string"&&(r=Rc(r,e,t)),i in s){let o=s[i](r);return n?n(o)+i:o+i}return n?n(r):r}function os(r){return{width:r.offsetWidth,height:r.offsetHeight}}function fy(r){let e=r.split(" "),t=[];for(let i=0;i<e.length;i++){let n=e[i];if(n.startsWith("repeat("))for(;!n.includes(")");)i++,e[i]&&(n+=e[i]);t.push(n)}return t}function em(r){let e=fy(r),t=[];for(let i of e)if(i.startsWith("repeat(")){let n=i.split(",");for(let s=0;s<parseInt(n[0].substring(7));s++)t.push(n[1].substring(0,n[1].length-1))}else t.push(i);return t.map(i=>mi(i))}var my,qu,zc=g(()=>{"use strict";my=["px","cm","mm","q","in","pc","pt","rem","em","vw","vh","vmin","vmax","lh","rlh","%","ms","s","deg","rad","grad","turn","cqw","cqh","cqi","cqb","cqmin","cqmax","fr"],qu=new RegExp(`^([-+]?(?:\\d+(?:\\.\\d+)?))(${my.join("|")})$`,"i")});function Wc(r=window,e=!1){r.__getBoxQuadsPolyfillFns??={},r.__getBoxQuadsPolyfillFns.getBoxQuads=yy,r.__getBoxQuadsPolyfillFns.convertQuadFromNode=om,r.__getBoxQuadsPolyfillFns.convertRectFromNode=am,r.__getBoxQuadsPolyfillFns.convertPointFromNode=gy,(e||!r.Node.prototype.getBoxQuads)&&(r.Node.prototype.getBoxQuads=function(t){return r.__getBoxQuadsPolyfillFns.getBoxQuads(this,t)}),(e||!r.Node.prototype.convertQuadFromNode)&&(r.Node.prototype.convertQuadFromNode=function(t,i,n){return r.__getBoxQuadsPolyfillFns.convertQuadFromNode(this,t,i,n)}),(e||!r.Node.prototype.convertRectFromNode)&&(r.Node.prototype.convertRectFromNode=function(t,i,n){return r.__getBoxQuadsPolyfillFns.convertRectFromNode(this,t,i,n)}),(e||!r.Node.prototype.convertPointFromNode)&&(r.Node.prototype.convertPointFromNode=function(t,i,n){return r.__getBoxQuadsPolyfillFns.convertPointFromNode(this,t,i,n)})}function om(r,e,t,i){let n=(r.ownerDocument.defaultView??window).document.body,s=it(t,n,i?.iframes,!0),o=it(r,n,i?.iframes,!0).inverse();if(i?.fromBox&&i?.fromBox!=="border"){let l=ne(t);e=new DOMQuad(Oe(e.p1,i.fromBox,l,-1),Oe(e.p2,i.fromBox,l,-1),Oe(e.p3,i.fromBox,l,-1),Oe(e.p4,i.fromBox,l,-1))}let a=new DOMQuad(o.transformPoint(s.transformPoint(e.p1)),o.transformPoint(s.transformPoint(e.p2)),o.transformPoint(s.transformPoint(e.p3)),o.transformPoint(s.transformPoint(e.p4)));if(i?.toBox&&i?.toBox!=="border"&&(r instanceof Element||r instanceof(r.ownerDocument.defaultView??window).Element)){let l=ne(r);a=new DOMQuad(Oe(a.p1,i.toBox,l,-1),Oe(a.p2,i.toBox,l,-1),Oe(a.p3,i.toBox,l,-1),Oe(a.p4,i.toBox,l,-1))}return a}function am(r,e,t,i){let n=(r.ownerDocument.defaultView??window).document.body.parentElement,s=it(t,n,i?.iframes,!0),o=it(r,n,i?.iframes,!0).inverse();if(i?.fromBox&&i?.fromBox!=="border"){let l=Oe(new DOMPoint(e.x,e.y),i.fromBox,ne(t),1);e=new DOMRect(l.x,l.y,e.width,e.height)}let a=new DOMQuad(o.transformPoint(s.transformPoint(new DOMPoint(e.x,e.y))),o.transformPoint(s.transformPoint(new DOMPoint(e.x+e.width,e.y))),o.transformPoint(s.transformPoint(new DOMPoint(e.x+e.width,e.y+e.height))),o.transformPoint(s.transformPoint(new DOMPoint(e.x,e.y+e.height))));if(i?.toBox&&i?.toBox!=="border"&&(r instanceof Element||r instanceof(r.ownerDocument.defaultView??window).Element)){let l=ne(r);a=new DOMQuad(Oe(a.p1,i.toBox,l,-1),Oe(a.p2,i.toBox,l,-1),Oe(a.p3,i.toBox,l,-1),Oe(a.p4,i.toBox,l,-1))}return a}function gy(r,e,t,i){let n=(r.ownerDocument.defaultView??window).document.body.parentElement,s=it(t,n,i?.iframes,!0),o=it(r,n,i?.iframes,!0).inverse();i?.fromBox&&i?.fromBox!=="border"&&(e=Oe(e,i.fromBox,ne(t),1));let a=o.transformPoint(s.transformPoint(e));return i?.toBox&&i?.toBox!=="border"&&(r instanceof Element||r instanceof(r.ownerDocument.defaultView??window).Element)&&(a=Oe(a,i.toBox,ne(r),-1)),a}function Oe(r,e,t,i){if(e==="margin"){let n=parseFloat(t.marginLeft),s=parseFloat(t.marginTop);return new DOMPoint(r.x-i*n,r.y-i*s)}else if(e==="padding"){let n=parseFloat(t.borderLeftWidth),s=parseFloat(t.borderTopWidth);return new DOMPoint(r.x+i*n,r.y+i*s)}else if(e==="content"){let n=parseFloat(t.borderLeftWidth),s=parseFloat(t.borderTopWidth),o=parseFloat(t.paddingLeft),a=parseFloat(t.paddingTop);return new DOMPoint(r.x+i*(n+o),r.y+i*(s+a))}return r}function At(){ge.clear(),Jt.clear(),Cn=new WeakMap}function lm(){kt=new WeakMap,ge=new Map,Jt=new Map,Cn=new WeakMap}function ne(r){if(!Cn)return(r.ownerDocument.defaultView??window).getComputedStyle(r);let e=Cn.get(r);return e||(e=(r.ownerDocument.defaultView??window).getComputedStyle(r),Cn.set(r,e)),e}function jc(r){return!!r&&r.nodeType===Node.ELEMENT_NODE}function Yc(r){if(!jc(r))return 1;let t=ne(r).zoom;if(!t||t==="normal")return 1;if(t.endsWith("%")){let n=parseFloat(t);return Number.isFinite(n)&&n>0?n/100:1}let i=parseFloat(t);return Number.isFinite(i)&&i>0?i:1}function cm(r){if(!jc(r))return new DOMMatrix;let e=Yc(r);return e===1?new DOMMatrix:new DOMMatrix().scaleSelf(e)}function tm(r,e,t=!0){let i=Uc(r,e);if(!t||!jc(r))return i;let n=cm(r);return n.isIdentity?i:n.multiply(i)}function yy(r,e){let t=r.ownerDocument.documentElement??r.ownerDocument.body,i=e?.relativeTo??t,n=r.ownerDocument.documentElement??r.ownerDocument.body,s=i!==n&&Iy(r,i,e?.iframes),o;if(ge){let w=kt.get(r);w===void 0&&kt.set(r,w=ds++);let b=kt.get(i);b===void 0&&kt.set(i,b=ds++),o=w+"_"+b+"_"+(e?.box??"border");let S=ge.get(o);if(S)return S}let a=it(r,s?n:i,e?.iframes),l=r.ownerDocument.defaultView??window,c=l.Text,h=l.SVGGraphicsElement,p=l.SVGSVGElement;if(r instanceof Text||r instanceof c){let w=a.is2D&&Math.abs(a.b)<1e-10&&Math.abs(a.c)<1e-10,b=r.ownerDocument.createRange();b.selectNodeContents(r);let S=b.getClientRects(),M=r.ownerDocument.documentElement??r.ownerDocument.body,D=M?.getBoundingClientRect(),j=L=>{if(i===M)return new DOMQuad(new DOMPoint(L.x,L.y),new DOMPoint(L.x+L.width,L.y),new DOMPoint(L.x+L.width,L.y+L.height),new DOMPoint(L.x,L.y+L.height));let te=new DOMRect(L.x-(D?.x??0),L.y-(D?.y??0),L.width,L.height);return am(i,te,M,{iframes:e?.iframes})};if(S.length>1){if(w){let be=[];for(let dt of S)dt.width<1&&dt.height<1||be.push(j(dt));if(be.length>0)return ge&&ge.set(o,be),be}let L=Ce(r,e?.iframes),te=it(L,s?M:i,e?.iframes),X=Uc(L,e?.iframes),J=L.getBoundingClientRect(),Ge=X.a,Pe=X.b,Ze=X.c,Je=X.d,Kn=L.offsetWidth,Qn=L.offsetHeight,_l=J.x+J.width/2-(Ge*Kn/2+Ze*Qn/2),Zn=J.y+J.height/2-(Pe*Kn/2+Je*Qn/2),Ci=Ge*Je-Pe*Ze,Rt=Math.abs(Ge),wt=Math.abs(Pe),pt=Rt*Rt-wt*wt,ni=[];for(let be of S){if(be.width<1&&be.height<1)continue;let dt=be.x+be.width/2-_l,qe=be.y+be.height/2-Zn,nt,St;Math.abs(Ci)>1e-10?(nt=(Je*dt-Ze*qe)/Ci,St=(Ge*qe-Pe*dt)/Ci):(nt=dt,St=qe);let We,zt;if(Math.abs(pt)>1e-6)We=Math.max(0,(Rt*be.width-wt*be.height)/pt),zt=Math.max(0,(Rt*be.height-wt*be.width)/pt);else{let Zd=ne(L);zt=Math.max(0,parseFloat(Zd.lineHeight)||parseFloat(Zd.fontSize)*1.2||16);let Jd=Math.max(Rt,wt);We=Jd>1e-6?Math.max(0,(be.width-zt*wt)/Jd):be.width}let Ei=nt-We/2,Jn=St-zt/2,Bf=new DOMQuad(te.transformPoint(new DOMPoint(Ei,Jn)),te.transformPoint(new DOMPoint(Ei+We,Jn)),te.transformPoint(new DOMPoint(Ei+We,Jn+zt)),te.transformPoint(new DOMPoint(Ei,Jn+zt)));ni.push(Sn(Bf,r,i,e?.iframes,s,e?.box))}if(ni.length>0)return ge&&ge.set(o,ni),ni}let H=b.getBoundingClientRect();if(w){let L=[j(H)];return ge&&ge.set(o,L),L}let{width:V,height:K}=pm(a,H,r),Q=a.is2D,ce=[new DOMPoint(0,0),new DOMPoint(V,0),new DOMPoint(V,K),new DOMPoint(0,K)],B=Array(4);if(Q)for(let L=0;L<4;L++)B[L]=ce[L].matrixTransform(a);else for(let L=0;L<4;L++)B[L]=as(ce[L],a).matrixTransform(a),B[L]=ls(B[L]);let ye=[Sn(new DOMQuad(B[0],B[1],B[2],B[3]),r,i,e?.iframes,s,e?.box)];return ge&&ge.set(o,ye),ye}if((r instanceof SVGGraphicsElement||r instanceof h)&&!(r instanceof SVGSVGElement||r instanceof p)){let w=r.getBBox(),b=Dy(r,w),S=b.x-w.x,M=b.y-w.y,D=S+b.width,j=M+b.height,H=[new DOMPoint(b.x,b.y),new DOMPoint(b.x+b.width,b.y),new DOMPoint(b.x+b.width,b.y+b.height),new DOMPoint(b.x,b.y+b.height)],V=[new DOMPoint(S,M),new DOMPoint(D,M),new DOMPoint(D,j),new DOMPoint(S,j)],K=Cy(r,i,e?.iframes)?null:r.getScreenCTM();if(K){let B=new DOMQuad(H[0].matrixTransform(K),H[1].matrixTransform(K),H[2].matrixTransform(K),H[3].matrixTransform(K)),ye=[hm(B,r,i,e?.iframes)];return ge&&ge.set(o,ye),ye}let Q=Array(4);if(a.is2D)for(let B=0;B<4;B++)Q[B]=V[B].matrixTransform(a);else for(let B=0;B<4;B++)Q[B]=as(V[B],a).matrixTransform(a),Q[B]=ls(Q[B]);let ce=[Sn(new DOMQuad(Q[0],Q[1],Q[2],Q[3]),r,i,e?.iframes,s,e?.box)];return ge&&ge.set(o,ce),ce}if(r instanceof l.Element&&i===r.ownerDocument.documentElement&&(!e?.box||e.box==="border")&&a.is2D&&Math.abs(a.b)<1e-10&&Math.abs(a.c)<1e-10){let w=r.getBoundingClientRect(),b=[new DOMQuad(new DOMPoint(w.x,w.y),new DOMPoint(w.x+w.width,w.y),new DOMPoint(w.x+w.width,w.y+w.height),new DOMPoint(w.x,w.y+w.height))];return ge&&ge.set(o,b),b}let{width:d,height:u}=Fe(r,a),m=l.Element,f=a.is2D;if(r instanceof Element||r instanceof m){let w=e?.box;if(w==="margin"||w==="padding"||w==="content"){let b=ne(r),S,M,D,j,H,V,K,Q;if(w==="margin"){let L=parseFloat(b.marginLeft),te=parseFloat(b.marginTop),X=parseFloat(b.marginRight),J=parseFloat(b.marginBottom);S=-L,M=-te,D=d+X,j=-te,H=d+X,V=u+J,K=-L,Q=u+J}else if(w==="padding"){let L=parseFloat(b.borderLeftWidth),te=parseFloat(b.borderTopWidth),X=parseFloat(b.borderRightWidth),J=parseFloat(b.borderBottomWidth);S=L,M=te,D=d-X,j=te,H=d-X,V=u-J,K=L,Q=u-J}else{let L=parseFloat(b.borderLeftWidth),te=parseFloat(b.borderTopWidth),X=parseFloat(b.borderRightWidth),J=parseFloat(b.borderBottomWidth),Ge=parseFloat(b.paddingLeft),Pe=parseFloat(b.paddingTop),Ze=parseFloat(b.paddingRight),Je=parseFloat(b.paddingBottom);S=L+Ge,M=te+Pe,D=d-X-Ze,j=te+Pe,H=d-X-Ze,V=u-J-Je,K=L+Ge,Q=u-J-Je}let ce=[new DOMPoint(S,M),new DOMPoint(D,j),new DOMPoint(H,V),new DOMPoint(K,Q)],B=Array(4);if(f)for(let L=0;L<4;L++)B[L]=ce[L].matrixTransform(a);else for(let L=0;L<4;L++)B[L]=as(ce[L],a).matrixTransform(a),B[L]=ls(B[L]);let ye=[Sn(new DOMQuad(B[0],B[1],B[2],B[3]),r,i,e?.iframes,s,e?.box)];return ge&&ge.set(o,ye),ye}}let y=[new DOMPoint(0,0),new DOMPoint(d,0),new DOMPoint(d,u),new DOMPoint(0,u)],v=Array(4);if(f)for(let w=0;w<4;w++)v[w]=y[w].matrixTransform(a);else for(let w=0;w<4;w++)v[w]=as(y[w],a).matrixTransform(a),v[w]=ls(v[w]);let C=[Sn(new DOMQuad(v[0],v[1],v[2],v[3]),r,i,e?.iframes,s,e?.box)];return ge&&ge.set(o,C),C}function Sn(r,e,t,i,n,s){return n?(r=vy(r,e,s),hm(r,e,t,i)):Ey(r,e,t,i)}function vy(r,e,t){if(t&&t!=="border")return r;let i=e.ownerDocument.defaultView??window;if(!(e instanceof i.Element))return r;let n=e.getBoundingClientRect(),s=Math.min(r.p1.x,r.p2.x,r.p3.x,r.p4.x),o=Math.min(r.p1.y,r.p2.y,r.p3.y,r.p4.y),a=n.left-s,l=n.top-o;if(Math.abs(a)<1e-10&&Math.abs(l)<1e-10)return r;let c=h=>new DOMPoint(h.x+a,h.y+l,h.z,h.w);return new DOMQuad(c(r.p1),c(r.p2),c(r.p3),c(r.p4))}function hm(r,e,t,i){let n=e.ownerDocument.documentElement??e.ownerDocument.body;if(t===n)return r;let s=e.ownerDocument.defaultView??window;if(t instanceof s.SVGElement){let o=t.getScreenCTM();if(o){let a=o.inverse();return new DOMQuad(r.p1.matrixTransform(a),r.p2.matrixTransform(a),r.p3.matrixTransform(a),r.p4.matrixTransform(a))}}if(t.ownerDocument===e.ownerDocument&&t instanceof s.HTMLElement){let o=_y(r,t,i);if(o)return o}if(t===e.ownerDocument.body){let o=t.getBoundingClientRect(),a=t.scrollLeft||0,l=t.scrollTop||0;return new DOMQuad(new DOMPoint(r.p1.x-o.x+a,r.p1.y-o.y+l),new DOMPoint(r.p2.x-o.x+a,r.p2.y-o.y+l),new DOMPoint(r.p3.x-o.x+a,r.p3.y-o.y+l),new DOMPoint(r.p4.x-o.x+a,r.p4.y-o.y+l))}return om(t,r,n,{iframes:i})}function _y(r,e,t){let i=xy(e,t);if(!i)return null;let n=e.getBoundingClientRect(),s=i.x,o=i.y;if(!Number.isFinite(s)||!Number.isFinite(o)||Math.abs(s)<1e-10||Math.abs(o)<1e-10)return null;let a=e.scrollLeft||0,l=e.scrollTop||0,c=h=>new DOMPoint((h.x-n.x)/s+a,(h.y-n.y)/o+l);return new DOMQuad(c(r.p1),c(r.p2),c(r.p3),c(r.p4))}function xy(r,e){let t=r.ownerDocument.defaultView??window,i={x:1,y:1},n=r;for(;n&&n!==r.ownerDocument.documentElement;){if(n instanceof t.Element){let s=ne(n),o=by(s);if(!o)return null;let a=Yc(n);i.x*=o.x*a,i.y*=o.y*a}n=Ce(n,e)}return i}function by(r){if(r.perspective&&r.perspective!=="none"||r.rotate&&r.rotate!=="none"&&!Sy(r.rotate))return null;let e=wy(r.scale);if(!e)return null;let t=r.transform;if(!t||t==="none")return e;if(t.startsWith("matrix3d(")){let i=im(t);return i?.length===16&&i[0]>0&&i[5]>0&&Math.abs(i[1])<1e-10&&Math.abs(i[4])<1e-10&&Math.abs(i[3])<1e-10&&Math.abs(i[7])<1e-10&&Math.abs(i[11])<1e-10?{x:e.x*i[0],y:e.y*i[5]}:null}if(t.startsWith("matrix(")){let i=im(t);return i?.length===6&&i[0]>0&&i[3]>0&&Math.abs(i[1])<1e-10&&Math.abs(i[2])<1e-10?{x:e.x*i[0],y:e.y*i[3]}:null}return null}function wy(r){if(!r||r==="none")return{x:1,y:1};let e=r.split(/\s+/).map(t=>parseFloat(t)).filter(Number.isFinite);return e.length===0||e[0]<=0||e[1]!=null&&e[1]<=0?null:{x:e[0],y:e[1]??e[0]}}function im(r){let e=r.indexOf("("),t=r.lastIndexOf(")");if(e<0||t<=e)return null;let i=r.slice(e+1,t).split(",").map(n=>parseFloat(n.trim()));return i.every(Number.isFinite)?i:null}function Sy(r){let e=r.match(/-?\d*\.?\d+(?:e[-+]?\d+)?/gi);if(!e?.length)return!1;let t=parseFloat(e[e.length-1]);return Number.isFinite(t)&&Math.abs(t)<1e-10}function Cy(r,e,t){let i=r.ownerDocument.defaultView??window,n=Ce(r,t);for(;n&&n!==e&&n!==r.ownerDocument.documentElement;){if(n instanceof i.HTMLElement){let s=ne(n);if(um.some(o=>s[o]?s[o]!=="none":!1))return!0}n=Ce(n,t)}return!1}function Ey(r,e,t,i){if(t!==e.ownerDocument.documentElement||Py(e,i))return r;let n=e.ownerDocument.defaultView??window,s=n.scrollX??e.ownerDocument.documentElement.scrollLeft??0,o=n.scrollY??e.ownerDocument.documentElement.scrollTop??0;return s===0&&o===0?r:new DOMQuad(new DOMPoint(r.p1.x-s,r.p1.y-o),new DOMPoint(r.p2.x-s,r.p2.y-o),new DOMPoint(r.p3.x-s,r.p3.y-o),new DOMPoint(r.p4.x-s,r.p4.y-o))}function Py(r,e){let t=r.ownerDocument.defaultView??window,i=null;for(r instanceof t.Text?i=Ce(r,e):r instanceof t.Element&&(i=r);i&&i!==r.ownerDocument.documentElement;){if(ne(i).position==="fixed")return us(i,e)==null;i=Ce(i,e)}return!1}function Iy(r,e,t){let i=r.ownerDocument.defaultView??window,n=null;for(r instanceof i.Text?n=Ce(r,t):r instanceof i.Element&&(n=r);n&&n!==r.ownerDocument.documentElement;){if(ne(n).position==="fixed"){let o=us(n,t);return o==null||o!==e&&!Hc(e,o)}if(n===e)break;n=Ce(n,t)}return!1}function pm(r,e,t){let i=Math.abs(r?.a??1),n=Math.abs(r?.b??0),s=i*i-n*n,o,a;if(Math.abs(s)>1e-6)o=Math.max(0,(i*e.width-n*e.height)/s),a=Math.max(0,(i*e.height-n*e.width)/s);else{let l=t.parentElement,c=16;if(l){let p=ne(l);c=parseFloat(p.lineHeight)||parseFloat(p.fontSize)*1.2||16}a=Math.max(0,c);let h=Math.max(i,n);o=h>1e-6?Math.max(0,(e.width-a*n)/h):e.width}return{width:o,height:a}}function as(r,e){let t=-(r.x*e.m13+r.y*e.m23+e.m43)/e.m33;return new DOMPoint(r.x,r.y,t,1)}function ls(r){return new DOMPoint(r.x/r.w,r.y/r.w)}function Fe(r,e){let t=0,i=0,n=r.ownerDocument.defaultView??window;if(r instanceof HTMLElement||r instanceof n.HTMLElement)t=r.offsetWidth,i=r.offsetHeight;else if(r instanceof SVGSVGElement||r instanceof n.SVGSVGElement)t=r.width.baseVal.value,i=r.height.baseVal.value;else if(r instanceof SVGGraphicsElement||r instanceof n.SVGGraphicsElement){let s=r.getBBox();t=s.width,i=s.height}else if(r instanceof MathMLElement||r instanceof n.MathMLElement){let s=r.getBoundingClientRect();t=s.width/(e?.a??1),i=s.height/(e?.d??1)}else if(r instanceof Text||r instanceof n.Text){let s=r.ownerDocument.createRange();s.selectNodeContents(r);let o=s.getBoundingClientRect(),a=pm(e,o,r);t=a.width,i=a.height}return{width:t,height:i}}function Dy(r,e){let t=ne(r),i=t.stroke!=="none"&&parseFloat(t.strokeWidth)||0;if(i<=0)return e;let n=ky(r,e,i);return new DOMRect(e.x-n.left,e.y-n.top,e.width+n.left+n.right,e.height+n.top+n.bottom)}function ky(r,e,t){let i=t/2;if(r instanceof SVGLineElement||r instanceof(r.ownerDocument.defaultView??window).SVGLineElement){let s=r.x1.baseVal.value,o=r.y1.baseVal.value,a=r.x2.baseVal.value,l=r.y2.baseVal.value,c=a-s,h=l-o,p=Math.hypot(c,h);if(p>1e-10){let d=i*Math.abs(h)/p,u=i*Math.abs(c)/p,m=ne(r).strokeLinecap;return(m==="round"||m==="square")&&(d+=i*Math.abs(c)/p,u+=i*Math.abs(h)/p),{left:d,right:d,top:u,bottom:u}}}let n=t*2;return{left:n,right:n,top:n,bottom:n}}function cs(r,e,t){if(r instanceof HTMLElement||r instanceof(r.ownerDocument.defaultView??window).HTMLElement){if(r instanceof HTMLHtmlElement||r instanceof(r.ownerDocument.defaultView??window).HTMLHtmlElement)return new DOMPoint(0,0);let i=ne(r);if(i.position==="fixed"){let n=us(r,t);if(!n){let h=i.left&&i.left!=="auto"?parseFloat(i.left):r.offsetLeft,p=i.top&&i.top!=="auto"?parseFloat(i.top):r.offsetTop;return new DOMPoint(h,p)}let s=it(n,r.ownerDocument.body,t,!0).inverse(),o=r.getBoundingClientRect(),a=s.transformPoint(o),l=n.getBoundingClientRect(),c=s.transformPoint(l);return new DOMPoint(a.x-c.x,a.y-c.y)}return e?new DOMPoint(r.offsetLeft-(r.scrollLeft-parseFloat(i.borderLeftWidth)),r.offsetTop-(r.scrollTop-parseFloat(i.borderTopWidth))):new DOMPoint(r.offsetLeft,r.offsetTop)}else if(r instanceof Text||r instanceof(r.ownerDocument.defaultView??window).Text){let i=r.ownerDocument.createRange();i.selectNodeContents(r);let n=i.getBoundingClientRect(),s=Ce(r,t),o=s.getBoundingClientRect(),a=Uc(s,t),l=a.a,c=a.b,h=a.c,p=a.d,d=s.offsetWidth,u=s.offsetHeight,m=o.x+o.width/2-(l*d/2+h*u/2),f=o.y+o.height/2-(c*d/2+p*u/2),y=n.x+n.width/2-m,v=n.y+n.height/2-f,C=l*p-c*h,w,b;Math.abs(C)>1e-10?(w=(p*y-h*v)/C,b=(l*v-c*y)/C):(w=y,b=v);let S=Math.abs(l),M=Math.abs(c),D=S*S-M*M,j,H;if(Math.abs(D)>1e-6)j=Math.max(0,(S*n.width-M*n.height)/D),H=Math.max(0,(S*n.height-M*n.width)/D);else{let V=ne(s);H=parseFloat(V.lineHeight)||parseFloat(V.fontSize)*1.2||16,H=Math.max(0,H);let K=Math.max(S,M);j=K>1e-6?Math.max(0,(n.width-H*M)/K):n.width}return new DOMPoint(w-j/2,b-H/2)}else if(r instanceof Element||r instanceof(r.ownerDocument.defaultView??window).Element){if((r instanceof SVGGraphicsElement||r instanceof(r.ownerDocument.defaultView??window).SVGGraphicsElement)&&!(r instanceof SVGSVGElement||r instanceof(r.ownerDocument.defaultView??window).SVGSVGElement)){let h=r.getBBox();return new DOMPoint(h.x,h.y)}let i=ne(r);if(i.position==="absolute")return new DOMPoint(parseFloat(i.left),parseFloat(i.top));let n=Ce(r,t),s=it(n,document.body,t,!0).inverse(),o=r.getBoundingClientRect(),a=s.transformPoint(o),l=n.getBoundingClientRect(),c=s.transformPoint(l);return new DOMPoint(a.x-c.x,a.y-c.y)}}function it(r,e,t,i=!1){let n;if(Jt){let d=kt.get(r);d===void 0&&kt.set(r,d=ds++);let u=kt.get(e);u===void 0&&kt.set(e,u=ds++),n=d+"_"+u+"_"+(i?"no-self-zoom":"full");let m=Jt.get(n);if(m)return m}let s=r,o,l=(s instanceof SVGGraphicsElement||s instanceof(s.ownerDocument.defaultView??window).SVGGraphicsElement)&&!(s instanceof SVGSVGElement||s instanceof(s.ownerDocument.defaultView??window).SVGSVGElement)?new DOMMatrix:tm(s,t,!i),c=l.isIdentity?new DOMMatrix:l,h=Ce(s,t);h&&(c.is2D||ne(h).transformStyle!=="preserve-3d"&&nm(c));let p=null;for(;s!=e&&s!=null;){let d=Ce(s,t);if((s instanceof HTMLElement||s instanceof(s.ownerDocument.defaultView??window).HTMLElement)&&ne(s).position==="fixed"&&(d=us(s,t)??e),s.assignedSlot!=null){if(s.nodeType===Node.ELEMENT_NODE){let u=Gc(s);if(p!==u&&(p===null||s===p||!Hc(p,s))){let f=sm(s,"offsetLeft"),y=sm(s,"offsetTop");(f!==0||y!==0)&&(c=new DOMMatrix().translateSelf(f,y).multiplySelf(c)),p=u}p===null&&(p=u)}else if(s.nodeType===Node.TEXT_NODE){let u=cs(s,s!==r,t);(u.x!==0||u.y!==0)&&(c=new DOMMatrix().translateSelf(u.x,u.y).multiplySelf(c))}}else if(!(s instanceof SVGSVGElement)&&!(s instanceof(s.ownerDocument.defaultView??window).SVGSVGElement)&&(s instanceof SVGGraphicsElement||s instanceof(s.ownerDocument.defaultView??window).SVGGraphicsElement)){let u=s.getCTM(),m=s.getBBox();(m.x!==0||m.y!==0)&&(c=new DOMMatrix().translateSelf(m.x,m.y).multiplySelf(c)),c=new DOMMatrix([u.a,u.b,u.c,u.d,u.e,u.f]).multiplySelf(c),d=s.ownerSVGElement}else if(s instanceof HTMLElement||s instanceof(s.ownerDocument.defaultView??window).HTMLElement){if((ne(s).position==="fixed"&&s===r||p!==s.offsetParent)&&!(s instanceof HTMLSlotElement||s instanceof(s.ownerDocument.defaultView??window).HTMLSlotElement)&&(p===null||s===p||!Hc(p,s))){let f=cs(s,s!==r,t),y=Yc(s);p=s.offsetParent,(f.x!==0||f.y!==0)&&(c=new DOMMatrix().translateSelf(f.x*y,f.y*y).multiplySelf(c))}}else{let u=cs(s,s!==r,t);p=null,(u.x!==0||u.y!==0)&&(c=new DOMMatrix().translateSelf(u.x,u.y).multiplySelf(c))}if(d){if(d===e){if(p!==null&&(d instanceof HTMLElement||d instanceof(d.ownerDocument.defaultView??window).HTMLElement)&&d.offsetParent===p){let f=cs(d,!1,t);(f.x!==0||f.y!==0)&&(c=new DOMMatrix().translate(-f.x,-f.y).multiply(c))}!(d===d.ownerDocument.documentElement)&&(d.scrollTop||d.scrollLeft)&&(c=new DOMMatrix().translate(-d.scrollLeft,-d.scrollTop).multiply(c));let m=cm(d);return m.isIdentity||(c=m.multiply(c)),Jt&&Jt.set(n,c),c}o=tm(d,t),o.isIdentity||(c=o.multiply(c)),h=Ce(d,t),h&&(c.is2D||ne(h).transformStyle!=="preserve-3d"&&nm(c))}s=d}return Jt&&Jt.set(n,c),c}function Ce(r,e){if((r instanceof Element||r instanceof(r.ownerDocument.defaultView??window).Element)&&r.assignedSlot)return r.assignedSlot;if(r.parentElement==null&&(r.parentNode instanceof ShadowRoot||r.parentNode instanceof(r.ownerDocument.defaultView??window).ShadowRoot))return r.parentNode.host;if((r instanceof HTMLHtmlElement||r instanceof(r.ownerDocument.defaultView??window).HTMLHtmlElement)&&e){for(let t of e)if(t?.contentDocument==r.ownerDocument)return t}return r.parentElement}function Uc(r,e){if(r instanceof Text||r instanceof(r.ownerDocument.defaultView??window).Text)return new DOMMatrix;let t=r,i=ne(t),n=i.transform!=="none"&&!!i.transform,s=i.translate!=="none"&&!!i.translate,o=i.rotate!=="none"&&!!i.rotate,a=i.scale!=="none"&&!!i.scale,l=!!i.offsetPath&&i.offsetPath!=="none";if(!n&&!s&&!o&&!a&&!l){let v=Ce(t,e);if(!v)return new DOMMatrix;let C=ne(v);if(!C.perspective||C.perspective==="none")return new DOMMatrix;let w=rm(t,e);return w??new DOMMatrix}let c=new DOMMatrix,h=i.transformOrigin.split(" "),p=parseFloat(h[0]),d=parseFloat(h[1]),u=h[2]?parseFloat(h[2]):0,m=p!==0||d!==0||u!==0,f=m?new DOMMatrix().translateSelf(p,d,u):null;if(s){let v=i.translate;if(v.includes("%")){let C=v.split(" "),w=t.getBoundingClientRect();C[0].endsWith("%")&&(C[0]=parseFloat(C[0])*w.width/100+"px"),C[1]?.endsWith("%")&&(C[1]=parseFloat(C[1])*w.height/100+"px"),v=C.join(",")}c.multiplySelf(new DOMMatrix("translate("+v.replaceAll(" ",",")+")"))}o&&c.multiplySelf(new DOMMatrix("rotate("+i.rotate.replaceAll(" ",",")+")")),a&&c.multiplySelf(new DOMMatrix("scale("+i.scale.replaceAll(" ",",")+")")),l&&c.multiplySelf(Ay(r)),n&&c.multiplySelf(new DOMMatrix(i.transform)),m&&(c=f.multiply(c.multiplySelf(f.inverse())));let y=rm(r,e);return y!=null&&(c=y.multiplySelf(c)),c}function nm(r){if(r.m31=0,r.m32=0,r.m13=0,r.m23=0,r.m33=1,r.m43=0,r.m34=0,r.m14==0&&r.m24==0&&r.m44!=1&&r.m44!=0){let e=1/r.m44;r.m11*=e,r.m12*=e,r.m21*=e,r.m22*=e,r.m41*=e,r.m42*=e,r.m44=1}}function rm(r,e){let t=Ce(r,e);if(t){let i=ne(t);if(i.perspective!=="none"){let n=new DOMMatrix,s=parseFloat(i.perspective);if(n.m34=-1/s,i.perspectiveOrigin){let o=i.perspectiveOrigin.split(" "),a=parseFloat(o[0])-r.offsetLeft,l=parseFloat(o[1])-r.offsetTop,c=new DOMMatrix().translateSelf(a,l),h=new DOMMatrix().translateSelf(-a,-l);return c.multiplySelf(n.multiplySelf(h))}}}return null}function Ay(r){let e=ne(r),t=e.offsetPath,i=e.offsetDistance,n=e.offsetRotate,s=e.offsetAnchor,o=e.transformOrigin,a=My(i),{x:l,y:c,angle:h}=Oy(r,t,a),p=r.parentElement;(p instanceof HTMLElement||p instanceof(p.ownerDocument.defaultView??window).HTMLElement)&&(r.offsetParent===p?(l-=r.offsetLeft,c-=r.offsetTop):r.offsetParent===p.offsetParent&&(l-=r.offsetLeft-p.offsetLeft,c-=r.offsetTop-p.offsetTop));let d=0;if(n.startsWith("auto")){let y=n.split(/\s+/),v=y.length===2?parseFloat(y[1]):0;d=h+v}else d=parseFloat(n);let u=Ty(s,o,r),m=new DOMMatrix().translateSelf(-u.x,-u.y),f=m.translate(l,c);return f.multiplySelf(m.invertSelf()),f.rotateSelf(d),f.translateSelf(-u.x,-u.y),f}function Ty(r,e,t){let i=t.offsetWidth,n=t.offsetHeight;(!r||r==="auto")&&(r=e);let s=r.split(/\s+/);if(s.length===1)return{x:Fc(s[0],i),y:n/2};let o=Fc(s[0],i),a=Fc(s[1],n);return{x:o,y:a}}function Fc(r,e){if(r=r.trim(),r.endsWith("%"))return parseFloat(r)/100*e;if(r.endsWith("px"))return parseFloat(r);switch(r){case"left":return 0;case"top":return 0;case"center":return e/2;case"right":return e;case"bottom":return e}return parseFloat(r)}function My(r){return r=r.trim(),r.endsWith("%")?parseFloat(r)/100:parseFloat(r)}function Ly(r){return r?(r=r.trim(),r.endsWith("deg")?parseFloat(r):r.endsWith("rad")?parseFloat(r)*(180/Math.PI):r.endsWith("grad")?parseFloat(r)*.9:parseFloat(r)):0}function Oy(r,e,t){if(!e||e==="none")return{x:0,y:0,angle:0};let i=e.trim(),n=i.match(/path\(["'](.+)["']\)/);return n?Ny(n[1],t):i.startsWith("circle(")?Ry(i,t):i.startsWith("ellipse(")?zy(i,t):i.startsWith("inset(")?Yy(i,r,t):i.startsWith("rect(")?Fy(i,t):i.startsWith("xywh(")?By(i,t):i.startsWith("ray(")?Vy(i,t):i.startsWith("polygon(")?Hy(i,t):(console.warn("Unsupported offset-path:",e),{x:0,y:0,angle:0})}function Ny(r,e){let t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttribute("d",r);let i=t.getTotalLength(),n=e<=1?e*i:e,s=t.getPointAtLength(n),o=t.getPointAtLength(Math.min(i,n+.01)),a=Math.atan2(o.y-s.y,o.x-s.x)*180/Math.PI;return{x:s.x,y:s.y,angle:a}}function Vy(r,e){let i=r.match(/ray\(([^)]+)\)/)[1].trim(),[n,s]=i.split("at").map(m=>m&&m.trim()),o=n.split(/\s+/),a=Ly(o[0]),l=a*Math.PI/180,c=0,h=0;if(s){let m=s.split(/\s+/);c=parseFloat(m[0]),h=parseFloat(m[1])}let p=(e<=1,e),d=c+Math.cos(l)*p,u=h+Math.sin(l)*p;return{x:d,y:u,angle:a}}function Ry(r,e){let i=r.match(/circle\(([^)]+)\)/)[1],[n,s]=i.split("at").map(u=>u.trim()),o=parseFloat(n),[a,l]=s.split(/\s+/).map(parseFloat),c=e*2*Math.PI,h=a+Math.cos(c)*o,p=l+Math.sin(c)*o,d=c*180/Math.PI+90;return{x:h,y:p,angle:d}}function zy(r,e){let i=r.match(/ellipse\(([^)]+)\)/)[1].split("at"),n=i[0].trim().split(/\s+/).map(parseFloat),s=i[1].trim().split(/\s+/).map(parseFloat),o=n[0],a=n[1],l=s[0],c=s[1],h=e*2*Math.PI,p=l+Math.cos(h)*o,d=c+Math.sin(h)*a,u=-Math.sin(h)*o,m=Math.cos(h)*a,f=Math.atan2(m,u)*180/Math.PI;return{x:p,y:d,angle:f}}function Fy(r,e){let i=r.match(/rect\(([^)]+)\)/)[1].split(/\s+/).map(l=>parseFloat(l)),n=i[0],s=i[1],o=i[2],a=i[3];return dm(n,a,s,o,e)}function By(r,e){let i=r.match(/xywh\(([^)]+)\)/)[1].split(/\s+/).map(parseFloat),n=i[0],s=i[1],o=i[2],a=i[3];return dm(s,n,n+o,s+a,e)}function Hy(r,e){let n=r.match(/polygon\(([^)]+)\)/)[1].split(",").map(w=>w.trim().split(/\s+/).map(parseFloat)),s=[0];for(let w=1;w<n.length;w++){let b=n[w][0]-n[w-1][0],S=n[w][1]-n[w-1][1];s.push(Math.hypot(b,S)+s[w-1])}let o=n[0][0]-n[n.length-1][0],a=n[0][1]-n[n.length-1][1];s.push(Math.hypot(o,a)+s[s.length-1]);let l=s[s.length-1],c=e*l,h=s.findIndex(w=>w>=c);h<=0&&(h=1);let p=s[h-1],d=s[h],u=(c-p)/(d-p),m=n[(h-1)%n.length],f=n[h%n.length],y=m[0]+(f[0]-m[0])*u,v=m[1]+(f[1]-m[1])*u,C=Math.atan2(f[1]-m[1],f[0]-m[0])*180/Math.PI;return{x:y,y:v,angle:C}}function dm(r,e,t,i,n){let s=t-e,o=i-r,a=2*(s+o),l=n*a;if(l<s)return{x:e+l,y:r,angle:0};if(l-=s,l<o){let h=r+l;return{x:t,y:h,angle:90}}if(l-=o,l<s)return{x:t-l,y:i,angle:180};l-=s;let c=i-l;return{x:e,y:c,angle:270}}function Gy(r){let e=[],t=0;for(;t<r.length;){let i=r[t];if(/\s/.test(i)){t++;continue}if("+-*/()".includes(i)){e.push({type:i,value:i}),t++;continue}if(/[0-9.]/.test(i)){let n=t;for(;/[0-9.]/.test(r[t]);)t++;let s=r.slice(n,t);if(r[t]==="%"){t++,e.push({type:"percentage",value:parseFloat(s)});continue}if(r.slice(t,t+2)==="px"){t+=2,e.push({type:"dimension",value:parseFloat(s),unit:"px"});continue}e.push({type:"number",value:parseFloat(s)});continue}if(/[a-zA-Z]/.test(i)){let n=t;for(;/[a-zA-Z]/.test(r[t]);)t++;let s=r.slice(n,t);if(s==="calc"&&r[t]==="("){e.push({type:"func",value:"calc"});continue}throw new Error("Unsupported function: "+s)}throw new Error("Unexpected character in calc(): "+i)}return e}function Wy(r){let e=0;function t(){return r[e]}function i(){return r[e++]}function n(){let l=s();for(;t()&&(t().type==="+"||t().type==="-");){let c=i().type,h=s();l={type:"binary",op:c,left:l,right:h}}return l}function s(){let l=o();for(;t()&&(t().type==="*"||t().type==="/");){let c=i().type,h=o();l={type:"binary",op:c,left:l,right:h}}return l}function o(){let l=t();if(!l)throw"Unexpected end in calc()";if(l.type==="number")return i(),{type:"number",value:l.value};if(l.type==="dimension")return i(),{type:"dimension",value:l.value,unit:l.unit};if(l.type==="percentage")return i(),{type:"percentage",value:l.value};if(l.type==="func"){if(i(),t().type!=="(")throw"Expected '(' after calc";i();let c=n();if(!t()||t().type!==")")throw"Expected ')'";return i(),c}if(l.type==="("){i();let c=n();if(!t()||t().type!==")")throw"Expected ')'";return i(),c}throw new Error("Unexpected calc token "+JSON.stringify(l))}let a=n();if(e!==r.length)throw"Extra tokens after calc";return a}function Bc(r,e){switch(r.type){case"number":return r.value;case"dimension":return r.value;case"percentage":return e.percentBase*(r.value/100);case"binary":{let t=Bc(r.left,e),i=Bc(r.right,e);switch(r.op){case"+":return t+i;case"-":return t-i;case"*":return t*i;case"/":return t/i}}}throw"Invalid AST node "+r.type}function hs(r,e,t=!1){if(r=r.trim(),/^[0-9.]+px$/.test(r))return parseFloat(r);let i=t?e.offsetHeight:e.offsetWidth;if(/^[0-9.]+%$/.test(r)){let s=parseFloat(r);return i*(s/100)}let n=Wy(Gy(r));return Bc(n,{percentBase:i})}function jy(r){let e=r.trim().replace(/^inset\s*\(/,"").replace(/\)\s*$/,""),t=[],i="",n=0;for(let s=0;s<e.length;s++){let o=e[s];o==="("?(n++,i+=o):o===")"?(n--,i+=o):/\s/.test(o)&&n===0?i.trim()!==""&&(t.push(i.trim()),i=""):i+=o}return i.trim()!==""&&t.push(i.trim()),t}function Yy(r,e,t){let i=jy(r);if(i.length!==4)throw new Error("inset() must have 4 arguments");let n=hs(i[0],e,!0),s=hs(i[1],e,!1),o=hs(i[2],e,!0),a=hs(i[3],e,!1),l=e.offsetWidth,c=e.offsetHeight,h=a,p=n,d=l-s,u=c-o,f=2*(d-h+(u-p))*t,y=d-h;return f<=y?{x:h+f,y:p,angle:0}:(f-=y,y=u-p,f<=y?{x:d,y:p+f,angle:90}:(f-=y,y=d-h,f<=y?{x:d-f,y:u,angle:180}:(f-=y,{x:h,y:u-f,angle:270})))}function $y(r){return um.some(e=>r[e]?r[e]!=="none":!1)||(r.containerType?r.containerType!=="normal":!1)||(r.backdropFilter?r.backdropFilter!=="none":!1)||(r.filter?r.filter!=="none":!1)||Uy.some(e=>(r.willChange||"").includes(e))||Xy.some(e=>(r.contain||"").includes(e))}function ps(r){return r.assignedSlot?r.assignedSlot:r.parentNode instanceof ShadowRoot?r.parentNode.host:r.parentNode}function Hc(r,e){for(let t=e;t;t=ps(t))if(t===r)return!0;return!1}function Ky(r){let e=new Set,t=r.getRootNode(),i=r.ownerDocument?.defaultView?.ShadowRoot??ShadowRoot;for(;t;)e.add(t),t instanceof i?t=t.host?.getRootNode()??null:t=t.parentNode?t.parentNode.getRootNode():null;return e}function Gc(r){for(let e=r;e;e=ps(e))if(e instanceof Element&&ne(e).display==="none")return null;for(let e=ps(r);e;e=ps(e)){if(!(e instanceof Element))continue;let t=ne(e);if(t.display!=="contents"&&(t.position!=="static"||$y(t)||e.tagName==="BODY"))return e}return null}function sm(r,e){let t=r[e],i=Gc(r),n=Ky(r);for(;i&&!n.has(i.getRootNode());)t-=i[e],i=Gc(i);return t}function Qy(r){let e=ne(r);if(e.transform&&e.transform!=="none"||e.perspective&&e.perspective!=="none"||e.filter&&e.filter!=="none"||e.backdropFilter&&e.backdropFilter!=="none")return!0;let t=e.contain||"";if(t.includes("paint")||t.includes("layout")||t.includes("strict")||t.includes("content"))return!0;let i=e.willChange||"";return/transform|perspective|filter|backdrop-filter/.test(i)}function us(r,e){let t=Ce(r,e);for(;t;){if(Qy(t))return t;t=Ce(t,e)}return null}var kt,ge,Jt,Cn,ds,um,Uy,Xy,Tt=g(()=>{"use strict";ds=0;um=["transform","translate","scale","rotate","perspective"],Uy=["transform","translate","scale","rotate","perspective","filter"],Xy=["paint","layout","strict","content"]});var ms,Xc=g(()=>{"use strict";me();zc();de();Tt();Le();le();ms=class extends F{_startPos;_circle;_circle2;_oldValue;_offsetInControl;constructor(e,t,i){super(e,t,i)}_getTransformOriginCanvasPoint(){let t=getComputedStyle(this.extendedItem.element).transformOrigin.split(" ");return it(this.extendedItem.element,this.designerCanvas.canvas,this.designerCanvas.iframes).transformPoint(new DOMPoint(parseFloat(t[0]),parseFloat(t[1])))}refresh(e,t){let i=this._getTransformOriginCanvasPoint();this._valuesHaveChanges(i.x,i.y,this.designerCanvas.zoomFactor)&&(this._removeAllOverlays(),this._circle=this._drawCircle(i.x,i.y,5/this.designerCanvas.zoomFactor,"svg-transform-origin"),this._circle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._circle.style.cursor="pointer",this._circle2=this._drawCircle(i.x,i.y,1/this.designerCanvas.zoomFactor,"svg-transform-origin"),this._circle2.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._circle2.style.pointerEvents="none",this._circle.addEventListener(P.PointerDown,n=>this.pointerEvent(n)),this._circle.addEventListener(P.PointerMove,n=>this.pointerEvent(n)),this._circle.addEventListener(P.PointerUp,n=>this.pointerEvent(n)))}extend(e,t){let i=this._getTransformOriginCanvasPoint();if(isNaN(i.x)||isNaN(i.y)){this.remove();return}else{let n=this.extendedItem.getStyleFromSheetOrLocal("transform-origin");n&&(this._oldValue=n),this.refresh(e,t)}}pointerEvent(e){e.stopPropagation();let t=getComputedStyle(this.extendedItem.element),i=t.transformOrigin.split(" "),n=[];n[0]=parseFloat(i[0])/parseFloat(this.extendedItem.element.style.width),n[1]=parseFloat(i[1])/parseFloat(this.extendedItem.element.style.height);let s=this._getTransformOriginCanvasPoint(),o=this.designerCanvas.getNormalizedEventCoordinates(e),a=this.extendedItem.element.convertPointFromNode(o,this.designerCanvas.canvas),l=this.designerCanvas.getNormalizedEventCoordinates(e);switch(e.type){case P.PointerDown:e.target.setPointerCapture(e.pointerId);let c=Z(e.target);this._offsetInControl={x:c.width/2+(c.x-e.x),y:c.height/2+(c.y-e.y)},this._startPos={x:l.x,y:l.y};break;case P.PointerMove:if(this._startPos&&e.buttons>0){let h=l.x-this._startPos.x,p=l.y-this._startPos.y;this._circle.setAttribute("cx",s.x+h),this._circle.setAttribute("cy",s.y+p),this._circle2.setAttribute("cx",s.x+h),this._circle2.setAttribute("cy",s.y+p)}break;case P.PointerUp:if(e.target.releasePointerCapture(e.pointerId),this._startPos){a.x+=this._offsetInControl.x,a.y+=this._offsetInControl.y;let h=this.extendedItem.openGroup("change transform-origin"),p=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.rootDesignItem.element})[0];if(this._oldValue)try{let m=this._oldValue.split(" "),f=Gi(a.x,this.extendedItem.element,"width",mi(m[0]),v=>N(this.extendedItem,v)),y=Gi(a.x,this.extendedItem.element,"width",mi(m[0]),v=>N(this.extendedItem,v));m.length>1&&(y=Gi(a.y,this.extendedItem.element,"height",mi(m[1]),v=>N(this.extendedItem,v))),this.extendedItem.updateStyleInSheetOrLocal("transform-origin",f+" "+y)}catch{this.extendedItem.updateStyleInSheetOrLocal("transform-origin",N(this.extendedItem,a.x)+"px "+N(this.extendedItem,a.y)+"px")}else this.extendedItem.updateStyleInSheetOrLocal("transform-origin",N(this.extendedItem,a.x)+"px "+N(this.extendedItem,a.y)+"px");At();let d=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.rootDesignItem.element})[0],u={x:p.p1.x-d.p1.x,y:p.p1.y-d.p1.y};t.translate&&t.translate!=="none"&&(u.x+=parseFloat(t.translate.split(" ")[0]),t.translate.split(" ").length===1?u.y+=parseFloat(t.translate.split(" ")[0]):u.y+=parseFloat(t.translate.split(" ")[1])),this.extendedItem.updateStyleInSheetOrLocal("translate",N(this.extendedItem,u.x)+"px "+N(this.extendedItem,u.y)+"px"),h.commit(),this.refresh(null,null),this._startPos=null}break}}dispose(){this._removeAllOverlays()}}});import{css as Zy}from"@node-projects/base-custom-webcomponent";var fs,$c=g(()=>{"use strict";Xc();de();fs=class{showOnlyWhenSet;constructor(e=!0){this.showOnlyWhenSet=e}shouldExtend(e,t,i){if(!i.isRootItem&&i.node instanceof HTMLElement||i.node instanceof SVGElement&&i.node.localName==="svg"){if(!this.showOnlyWhenSet||i.hasStyle("transformOrigin"))return!0;let n=getComputedStyle(i.element);if(n.display!="inline"&&i.element.getBoundingClientRect){let s=Z(i.element),o=n.transformOrigin.split(" "),a=parseFloat(o[0])-s.width/2,l=parseFloat(o[1])-s.height/2;if(a>.5||a<-.5||l>.5||l<-.5)return!0}}return!1}getExtension(e,t,i){return new ms(e,t,i)}static style=Zy`.svg-transform-origin{stroke:#3899ec;fill:#000;pointer-events:auto}`}});var gs,Kc=g(()=>{"use strict";le();se();gs=class extends F{constructor(e,t,i){super(e,t,i)}_path;_path2;extend(e,t){this.refresh(e,t)}refresh(e,t){let i=getComputedStyle(this.extendedItem.element);if(i.margin!=="0px"){let n=Number.parseFloat(i.marginLeft.replace("px","")),s=Number.parseFloat(i.marginTop.replace("px","")),o=Number.parseFloat(i.marginRight.replace("px","")),a=Number.parseFloat(i.marginBottom.replace("px",""));if(!isNaN(n)&&!isNaN(s)&&!isNaN(o)&&!isNaN(a)){let l=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!isNaN(l.p1.x)&&this._valuesHaveChanges(n,s,o,a,l.p1.x,l.p1.y,l.p2.x,l.p2.y,l.p3.x,l.p3.y,l.p4.x,l.p4.y)){let c=this.extendedItem.element.getBoxQuads({box:"margin",relativeTo:this.designerCanvas.canvas})[0],h="M"+[l.p1,l.p2,l.p3,l.p4].map(p=>p.x+","+p.y).join(" ")+"Z ";h+="M"+[c.p1,c.p2,c.p3,c.p4].map(p=>p.x+","+p.y).join(" ")+"Z ",this._path=this._drawPath(h,"svg-margin-fill",this._path,T.Background),this._path2=this._drawPath(h,"svg-margin",this._path2,T.Background)}}}}dispose(){this._removeAllOverlays()}}});function gm(r){let e=r;for(;e;){if(e instanceof(e.ownerDocument.defaultView??window).SVGSVGElement)return!0;if(e instanceof(e.ownerDocument.defaultView??window).SVGDefsElement||e instanceof(e.ownerDocument.defaultView??window).SVGMetadataElement)return!1;e=e.parentElement}return!0}function iE(r,...e){let t=document.createElementNS("http://www.w3.org/2000/svg","svg");return t.innerHTML=fi(r,...e),t}function fi(r,...e){if(r.length===1)return r.raw[0];{let t="";for(let i=0;i<r.length;i++)t+=r[i]+(e[i]??"");return t}}function Jy(r){return r instanceof SVGPathElement||r instanceof SVGRectElement||r instanceof SVGLineElement||r instanceof SVGCircleElement||r instanceof SVGEllipseElement||r instanceof SVGPolygonElement||r instanceof SVGPolylineElement}function En(r,e,t){let i=bm(r,e);if(i){let o=fm(r,t);return wm(i.matrix,o.x/i.bbox.width,o.y/i.bbox.height)}let n=fm(r,t),s=e.canvas.convertPointFromNode(n,r,{iframes:e.iframes});return{x:s.x,y:s.y}}function ym(r,e,t){let i=bm(r,e);if(i){let s=wm(i.inverseMatrix,t.x,t.y);return{x:i.bbox.x+s.x*i.bbox.width,y:i.bbox.y+s.y*i.bbox.height}}let n=r.convertPointFromNode({x:t.x,y:t.y},e.canvas,{iframes:e.iframes});return pv(r,{x:n.x,y:n.y})}function vm(r,e,t){let i=_m(r,e);if(!(t?.includeMarkers!==!1))return i;let s=qy(r,e);return i&&s?`${i} ${s}`:i??s}function _m(r,e){if(!Jy(r))return null;let t=r.getPathData;if(!t)return null;let i=t.call(r,{normalize:!0})??[];if(!i.length)return null;let n=[],s={x:0,y:0},o={x:0,y:0};for(let a of i){let l=a.type.toUpperCase(),c=a.type!==l,h=a.values??[],p=(u,m)=>c?{x:s.x+u,y:s.y+m}:{x:u,y:m},d=(u,m)=>{let f=p(u,m);return En(r,e,f)};switch(l){case"M":{let u=d(h[0],h[1]);n.push({type:"M",values:[u.x,u.y]}),s=p(h[0],h[1]),o={...s};break}case"L":{let u=d(h[0],h[1]);n.push({type:"L",values:[u.x,u.y]}),s=p(h[0],h[1]);break}case"H":{let u=c?{x:s.x+h[0],y:s.y}:{x:h[0],y:s.y},m=En(r,e,u);n.push({type:"L",values:[m.x,m.y]}),s=u;break}case"V":{let u=c?{x:s.x,y:s.y+h[0]}:{x:s.x,y:h[0]},m=En(r,e,u);n.push({type:"L",values:[m.x,m.y]}),s=u;break}case"C":{let u=d(h[0],h[1]),m=d(h[2],h[3]),f=d(h[4],h[5]);n.push({type:"C",values:[u.x,u.y,m.x,m.y,f.x,f.y]}),s=p(h[4],h[5]);break}case"S":{let u=d(h[0],h[1]),m=d(h[2],h[3]);n.push({type:"S",values:[u.x,u.y,m.x,m.y]}),s=p(h[2],h[3]);break}case"Q":{let u=d(h[0],h[1]),m=d(h[2],h[3]);n.push({type:"Q",values:[u.x,u.y,m.x,m.y]}),s=p(h[2],h[3]);break}case"T":{let u=d(h[0],h[1]);n.push({type:"T",values:[u.x,u.y]}),s=p(h[0],h[1]);break}case"A":{let u=d(h[5],h[6]);n.push({type:"A",values:[h[0],h[1],h[2],h[3],h[4],u.x,u.y]}),s=p(h[5],h[6]);break}case"Z":{n.push({type:"Z",values:[]}),s={...o};break}}}return di(n)}function qy(r,e){if(!(r instanceof SVGGraphicsElement))return null;let t=ev(r);if(!t.length)return null;let i=r.ownerSVGElement;if(!i)return null;let n=document.createElementNS("http://www.w3.org/2000/svg","g");n.setAttribute("visibility","hidden"),n.setAttribute("pointer-events","none"),i.appendChild(n);try{let s=[];for(let o of t){let a=iv(r,o);if(!a)continue;n.appendChild(a);let l=a.querySelectorAll("path, rect, line, circle, ellipse, polygon, polyline");for(let c of l){let h=_m(c,e);h&&s.push(h)}}return s.length?s.join(" "):null}finally{n.remove()}}function ev(r){let e=tv(r);if(!e.length)return[];let t=[],i=Qc(r,"marker-start"),n=Qc(r,"marker-mid"),s=Qc(r,"marker-end");if(i&&t.push({marker:i,point:e[0].start,angle:ys(i,e[0].startAngle,void 0,!0)}),n){for(let o=0;o<e.length-1;o++)mm(e[o].end,e[o+1].start)&&t.push({marker:n,point:e[o].end,angle:ys(n,e[o].endAngle,e[o+1].startAngle,!1)});mm(e[e.length-1].end,e[0].start)&&e.length>1&&t.push({marker:n,point:e[e.length-1].end,angle:ys(n,e[e.length-1].endAngle,e[0].startAngle,!1)})}if(s){let o=e[e.length-1];t.push({marker:s,point:o.end,angle:ys(s,o.endAngle,void 0,!1)})}return t}function tv(r){let e=r.getPathData;if(!e)return[];let t=e.call(r,{normalize:!0})??[],i=[],n={x:0,y:0},s={x:0,y:0};for(let o of t)switch(o.type){case"M":{n={x:o.values[0],y:o.values[1]},s={...n};break}case"L":{let a={x:o.values[0],y:o.values[1]},l=vs(n,a);l!=null&&i.push({start:{...n},end:a,startAngle:l,endAngle:l}),n=a;break}case"C":{let a={x:o.values[0],y:o.values[1]},l={x:o.values[2],y:o.values[3]},c={x:o.values[4],y:o.values[5]},h=cv([n,a,l,c]),p=hv([n,a,l,c]);h!=null&&p!=null&&i.push({start:{...n},end:c,startAngle:h,endAngle:p}),n=c;break}case"Z":{let a=vs(n,s);a!=null&&i.push({start:{...n},end:{...s},startAngle:a,endAngle:a}),n={...s};break}}return i}function Qc(r,e){let t=r.getAttribute(e)?.trim();if(!t)return null;let n=/^url\((['"]?)(.*?)\1\)$/.exec(t)?.[2]??t;if(!n.startsWith("#"))return null;let s=r.getRootNode(),o=typeof s.querySelector=="function"?s.querySelector(n):null;return o instanceof SVGMarkerElement?o:null}function iv(r,e){let t=e.marker;if(!t.childNodes.length)return null;let i=nv(r,t),n=document.createElementNS("http://www.w3.org/2000/svg","g"),s=[`translate(${e.point.x} ${e.point.y})`,`rotate(${e.angle})`];i!==1&&s.push(`scale(${i})`),n.setAttribute("transform",s.join(" "));let o=rv(t),a=sv(t,o,{x:_s(t.refX),y:_s(t.refY)}),l=document.createElementNS("http://www.w3.org/2000/svg","g");l.setAttribute("transform",`translate(${-a.x} ${-a.y})`),n.appendChild(l);let c=document.createElementNS("http://www.w3.org/2000/svg","g");o&&c.setAttribute("transform",o.transform),l.appendChild(c);for(let h of Array.from(t.childNodes))c.appendChild(h.cloneNode(!0));return n}function nv(r,e){if(e.getAttribute("markerUnits")==="userSpaceOnUse")return 1;let t=parseFloat(getComputedStyle(r).strokeWidth);return Number.isFinite(t)&&t>0?t:1}function rv(r){let e=r.viewBox.baseVal;if(e==null||e.width===0&&e.height===0)return null;let t=_s(r.markerWidth),i=_s(r.markerHeight);if(!t||!i||!e.width||!e.height)return null;let n=r.preserveAspectRatio.baseVal,s=t/e.width,o=i/e.height,a=-e.x*s,l=-e.y*o;if(n.align!==SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE){let c=n.meetOrSlice===SVGPreserveAspectRatio.SVG_MEETORSLICE_SLICE?Math.max(s,o):Math.min(s,o);s=c,o=c;let h=t-e.width*c,p=i-e.height*c,{xAlign:d,yAlign:u}=ov(n.align);a=-e.x*c+h*d,l=-e.y*c+p*u}return{transform:`matrix(${s} 0 0 ${o} ${a} ${l})`,scaleX:s,scaleY:o,translateX:a,translateY:l}}function sv(r,e,t){return e?{x:t.x*e.scaleX+e.translateX,y:t.y*e.scaleY+e.translateY}:t}function ov(r){switch(r){case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMIN:return{xAlign:.5,yAlign:0};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMIN:return{xAlign:1,yAlign:0};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMID:return{xAlign:0,yAlign:.5};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMID:return{xAlign:.5,yAlign:.5};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMID:return{xAlign:1,yAlign:.5};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMINYMAX:return{xAlign:0,yAlign:1};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMIDYMAX:return{xAlign:.5,yAlign:1};case SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_XMAXYMAX:return{xAlign:1,yAlign:1};default:return{xAlign:0,yAlign:0}}}function ys(r,e,t,i){let n=r.orientType.baseVal===SVGMarkerElement.SVG_MARKER_ORIENT_AUTO?"auto":r.getAttribute("orient")?.trim()??"0";if(n==="auto"||n==="auto-start-reverse"){let s=t==null?e:lv(e,t);return i&&n==="auto-start-reverse"&&(s+=180),s}return av(n)}function av(r){return r.endsWith("rad")?parseFloat(r)*180/Math.PI:r.endsWith("turn")?parseFloat(r)*360:r.endsWith("grad")?parseFloat(r)*.9:parseFloat(r)}function lv(r,e){let t={x:Math.cos(r*Math.PI/180),y:Math.sin(r*Math.PI/180)},i={x:Math.cos(e*Math.PI/180),y:Math.sin(e*Math.PI/180)},n={x:t.x+i.x,y:t.y+i.y};return Math.abs(n.x)<1e-10&&Math.abs(n.y)<1e-10?e:Math.atan2(n.y,n.x)*180/Math.PI}function cv(r){for(let e=0;e<r.length-1;e++){let t=vs(r[e],r[e+1]);if(t!=null)return t}return null}function hv(r){for(let e=r.length-1;e>0;e--){let t=vs(r[e-1],r[e]);if(t!=null)return t}return null}function vs(r,e){let t=e.x-r.x,i=e.y-r.y;return Math.abs(t)<1e-10&&Math.abs(i)<1e-10?null:Math.atan2(i,t)*180/Math.PI}function mm(r,e){return Math.abs(r.x-e.x)<1e-10&&Math.abs(r.y-e.y)<1e-10}function _s(r){return r?.baseVal?.value??0}function fm(r,e){let t=xm(r);return{x:e.x-t.x,y:e.y-t.y}}function pv(r,e){let t=xm(r);return{x:e.x+t.x,y:e.y+t.y}}function xm(r){if(!(r instanceof SVGGraphicsElement)||r instanceof SVGSVGElement)return{x:0,y:0};let e=r.getBBox();return{x:e.x,y:e.y}}function bm(r,e){if(!(r instanceof SVGGraphicsElement)||r instanceof SVGSVGElement)return null;let t=r.getBBox();if(Math.abs(t.width)<1e-10||Math.abs(t.height)<1e-10)return null;let i=r.getBoxQuads({relativeTo:e.canvas,iframes:e.iframes})[0];if(!i)return null;let n=dv(i);if(!n)return null;let s=uv(n);return s?{bbox:t,matrix:n,inverseMatrix:s}:null}function dv(r){let e=r.p1.x,t=r.p1.y,i=r.p2.x,n=r.p2.y,s=r.p3.x,o=r.p3.y,a=r.p4.x,l=r.p4.y,c=e-i+s-a,h=t-n+o-l,p=i-s,d=n-o,u=a-s,m=l-o,f=0,y=0;if(Math.abs(c)>=1e-10||Math.abs(h)>=1e-10){let v=p*m-d*u;if(Math.abs(v)<1e-10)return null;f=(c*m-h*u)/v,y=(p*h-d*c)/v}return[i-e+f*i,a-e+y*a,e,n-t+f*n,l-t+y*l,t,f,y,1]}function wm(r,e,t){let i=r[0]*e+r[1]*t+r[2],n=r[3]*e+r[4]*t+r[5],s=r[6]*e+r[7]*t+r[8],o=Math.abs(s)<1e-10?s<0?-1e-10:1e-10:s;return{x:i/o,y:n/o}}function uv(r){let e=r[0]*(r[4]*r[8]-r[5]*r[7])-r[1]*(r[3]*r[8]-r[5]*r[6])+r[2]*(r[3]*r[7]-r[4]*r[6]);if(Math.abs(e)<1e-10)return null;let t=1/e;return[(r[4]*r[8]-r[5]*r[7])*t,(r[2]*r[7]-r[1]*r[8])*t,(r[1]*r[5]-r[2]*r[4])*t,(r[5]*r[6]-r[3]*r[8])*t,(r[0]*r[8]-r[2]*r[6])*t,(r[2]*r[3]-r[0]*r[5])*t,(r[3]*r[7]-r[4]*r[6])*t,(r[1]*r[6]-r[0]*r[7])*t,(r[0]*r[4]-r[1]*r[3])*t]}var qt=g(()=>{"use strict";Xe();Xe()});import{css as mv}from"@node-projects/base-custom-webcomponent";var xs,Zc=g(()=>{"use strict";Kc();q();qt();xs=class{shouldExtend(e,t,i){return i.nodeType==k.Element}getExtension(e,t,i){return new gs(e,t,i)}style=mv`.svg-margin-fill{fill:color(display-p3 1 0 1 / 15%);fill-rule:evenodd}.svg-margin{fill:color(display-p3 1 0 1 / 80%);fill-rule:evenodd;mask:url(#mask-stripe-margin)}`;static svgDefs=fi`<pattern id="pattern-stripe-margin" patternUnits="userSpaceOnUse" width="10" height="10" patternTransform="rotate(45)" class="pattern"><line x1="0" y="0" x2="0" y2="10" stroke="color(display-p3 1 0 1 / 80%)" stroke-width="1"></line></pattern><mask id="mask-stripe-margin"><rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-stripe-margin)"></mask>`}});var bs,Jc=g(()=>{"use strict";le();bs=class extends F{_line1;_line2;_line3;_line4;_textX;_textY;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}_oldValues=[];refresh(){let e=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element),t=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.parent.element);if(this._valuesHaveChanges(this.designerCanvas.scaleFactor,e.x,e.y,t.x,t.y,e.height,e.width,t.height,t.width)){this._line1=this._drawLine(t.x,e.y+e.height/2,e.x,e.y+e.height/2,"svg-position",this._line1),this._line2=this._drawLine(t.x+t.width,e.y+e.height/2,e.x+e.width,e.y+e.height/2,"svg-position",this._line2),this._line3=this._drawLine(e.x+e.width/2,t.y,e.x+e.width/2,e.y,"svg-position",this._line3),this._line4=this._drawLine(e.x+e.width/2,t.y+t.height,e.x+e.width/2,e.y+e.height,"svg-position",this._line4),this._line1.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line2.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line3.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line4.style.strokeWidth=""+1/this.designerCanvas.scaleFactor,this._line1.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor,this._line2.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor,this._line3.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor,this._line4.style.strokeDasharray=""+4/this.designerCanvas.scaleFactor;let i,n;if(this.extendedItem.element.computedStyleMap){let s=this.extendedItem.element.computedStyleMap();i=s.get("right")instanceof CSSUnitValue,n=s.get("bottom")instanceof CSSUnitValue}else i=!!this.extendedItem.element?.style?.right,n=!!this.extendedItem.element?.style?.bottom;if(i){let s=Math.round(t.x+t.width-(e.x+e.width));this._textX=this._drawTextWithBackground(""+s,t.x+t.width-s/2,e.y+e.height/2,"white","svg-position-text",this._textX),this._textX[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textX[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}else{let s=Math.round(e.x-t.x);this._textX=this._drawTextWithBackground(""+s,t.x+s/2,e.y+e.height/2,"white","svg-position-text",this._textX),this._textX[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textX[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}if(n){let s=Math.round(t.y+t.height-(e.y+e.height));this._textY=this._drawTextWithBackground(""+s,e.x+e.width/2,t.y+t.height-s/2,"white","svg-position-text",this._textY),this._textY[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textY[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}else{let s=Math.round(e.y-t.y);this._textY=this._drawTextWithBackground(""+s,e.x+e.width/2,t.y+s/2,"white","svg-position-text",this._textY),this._textY[2].style.fontSize=12/this.designerCanvas.scaleFactor+"px",this._textY[3].style.fontSize=12/this.designerCanvas.scaleFactor+"px"}}}dispose(){this._removeAllOverlays()}}});import{css as fv}from"@node-projects/base-custom-webcomponent";var ws,qc=g(()=>{"use strict";Jc();ws=class{shouldExtend(e,t,i){if(!i?.parent||i.element instanceof HTMLTemplateElement)return!1;let n=getComputedStyle(i.element);return n.position==="relative"||n.position==="absolute"}getExtension(e,t,i){return new bs(e,t,i)}static style=fv`.svg-position-text{text-anchor:middle;alignment-baseline:central}`}});var Ss,eh=g(()=>{"use strict";le();se();qt();Ss=class extends F{_rect;_options;constructor(e,t,i,n){super(e,t,i),this._options={useSvgGeometryOutline:!0,includeSvgMarkers:!0,...n??{}}}extend(){this.refresh()}refresh(){if(this._options.useSvgGeometryOutline){let t=vm(this.extendedItem.element,this.designerCanvas,{includeMarkers:this._options.includeSvgMarkers});if(t){this._rect=this._drawPath(t,"svg-hover-fill",this._rect,T.Background),this._rect.style.strokeWidth=(3/this.designerCanvas.scaleFactor).toString();return}}let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];isNaN(e.p1.x)||(this._rect=this._drawTransformedRect(e,"svg-hover",this._rect,T.Background),this._rect.style.strokeWidth=(3/this.designerCanvas.scaleFactor).toString())}dispose(){this._removeAllOverlays()}}});import{css as gv}from"@node-projects/base-custom-webcomponent";var Cs,th=g(()=>{"use strict";eh();Cs=class{_options;constructor(e){this._options=e??{}}shouldExtend(e,t,i){return!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new Ss(e,t,i,this._options)}static style=gv`.svg-hover{stroke:#90caf966;fill:none}.svg-hover-fill{stroke:#90caf966;fill:#90caf966}`}});var Ee,ih=g(()=>{"use strict";(function(r){r.DragOrSelect="DragOrSelect",r.Drag="Drag",r.Resize="Resize",r.Rotate="Rotate",r.DrawSelection="DrawSelection",r.DrawingSelection="DrawingSelection"})(Ee||(Ee={}))});var Es,nh=g(()=>{"use strict";me();ih();oe();st();Dt();$e();Es=class r{cursor="default";_minMoveOffset=5;_movedSinceStartedAction=!1;_initialPoint;_actionType;_actionStartedDesignItem;_actionStartedClickDesignItem;_actionStartedDesignItems;_clonedItems;_copiedItemsInserted=!1;_previousEventName;_dragOverExtensionItem;_dragParentExtensionItem;_moveItemsOffset={x:0,y:0};_initialOffset;_started=!1;_holdTimeout;_firstTimeInMove;_secondTimeInMove;_changeGroup;constructor(){}activated(e){}dispose(){}_showContextMenu(e,t){if(e.preventDefault(),!$(e)){let i=t.elementsFromPoint(e.x,e.y);for(let o of t.instanceServiceContainer.selectionService.selectedElements)if(i.indexOf(o.element)>=0){t.showDesignItemContextMenu(t.instanceServiceContainer.selectionService.primarySelection,e);return}let n=t.serviceContainer.elementAtPointService.getElementAtPoint(t,{x:e.x,y:e.y}),s=O.GetOrCreateDesignItem(n,n,t.serviceContainer,t.instanceServiceContainer);t.instanceServiceContainer.selectionService.isSelected(s)||t.instanceServiceContainer.selectionService.setSelectedElements([s],e),t.showDesignItemContextMenu(s,e)}}pointerEventHandler(e,t,i){$(t)?this.cursor="copy":this.cursor="default";let n=e.serviceContainer.elementInteractionServices;if(n){for(let a of n)if(a.stopEventHandling(e,t,i))return}if(t.button==2&&t.type==P.PointerDown){this._showContextMenu(t,e);return}if($(t)&&t.shiftKey||t.buttons==4){let a=e.serviceContainer.designerTools.get(ee.Pan);if(a){a.pointerEventHandler(e,t,i);return}}switch(t.type){case P.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._movedSinceStartedAction=!1,this._copiedItemsInserted=!1,this._clonedItems=null,this._firstTimeInMove=!1,this._secondTimeInMove=!1;break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool(),this._copiedItemsInserted=!1,this._clonedItems=null,this._firstTimeInMove=!1,this._secondTimeInMove=!1;break;case P.PointerMove:this._firstTimeInMove&&(this._secondTimeInMove=!0),this._secondTimeInMove?this._firstTimeInMove=!1:this._firstTimeInMove=!0;break}if(!i)return;let s=e.getNormalizedEventCoordinates(t),o=O.GetOrCreateDesignItem(i,i,e.serviceContainer,e.instanceServiceContainer);this._actionType==null&&(this._initialPoint=s,t.shiftKey?(t.preventDefault(),this._actionType=Ee.DrawSelection):t.type==P.PointerDown&&(this._actionStartedDesignItem=o,this._actionStartedDesignItems=[...e.instanceServiceContainer.selectionService.selectedElements],e.snapLines.clearSnaplines(),o!==e.rootDesignItem?this._actionType=Ee.Drag:i===e||i===e.rootDesignItem.element||i==null?this._actionType=Ee.DrawSelection:this._actionType=Ee.DragOrSelect)),t.type===P.PointerMove&&(this._movedSinceStartedAction=this._movedSinceStartedAction||Math.abs(s.x-this._initialPoint.x)>this._minMoveOffset||Math.abs(s.y-this._initialPoint.y)>this._minMoveOffset,this._actionType==Ee.DrawSelection&&(this._actionType=Ee.DrawingSelection)),this._actionType==Ee.DrawSelection||this._actionType==Ee.DrawingSelection?this._pointerActionTypeDrawSelection(e,t,i):(this._actionType==Ee.DragOrSelect||this._actionType==Ee.Drag)&&this._pointerActionTypeDragOrSelect(e,t,o,s),t.type==P.PointerUp&&(e.snapLines.clearSnaplines(),this._actionType==Ee.DrawSelection&&o!==e.rootDesignItem&&e.instanceServiceContainer.selectionService.setSelectedElements([o],t),this._resetTool()),this._previousEventName=t.type}_resetTool(){this._actionType=null,this._actionStartedDesignItem=null,this._actionStartedClickDesignItem=null,this._actionStartedDesignItems=null,this._movedSinceStartedAction=!1,this._initialPoint=null,this._initialOffset=null}_pointerActionTypeDrawSelection(e,t,i){let n=e.serviceContainer.designerTools.get(ee.DrawSelection);n&&(this._resetTool(),n.pointerEventHandler(e,t,i))}async _pointerActionTypeDragOrSelect(e,t,i,n,s=!1){this._holdTimeout&&(clearTimeout(this._holdTimeout),this._holdTimeout=null);let o=i;if(t.altKey){if(t.type==P.PointerDown){let a=e.instanceServiceContainer.selectionService.primarySelection;if(a){let l=e.elementsFromPoint(t.x,t.y),c=l.indexOf(a.element);c>=0&&c++;let h=l[c];h&&(i=O.GetOrCreateDesignItem(h,h,e.serviceContainer,e.instanceServiceContainer))}}o=i}else t.type==P.PointerDown&&(i=this._getDesignItemToStartDrag(e,i,n));switch(t.type){case P.PointerDown:{this._actionStartedClickDesignItem=o,this._actionStartedDesignItem=i,this._initialOffset=e.getNormalizedOffsetInElement(t,this._actionStartedDesignItem.element),this._moveItemsOffset={x:0,y:0},this._actionStartedDesignItems=[...e.instanceServiceContainer.selectionService.selectedElements],e.alignOnSnap&&e.snapLines.calculateSnaplines(e.instanceServiceContainer.selectionService.selectedElements);break}case P.PointerMove:{if(t.buttons==0)return;if(this._firstTimeInMove){let l=this._actionStartedDesignItem??i;l.instanceServiceContainer.selectionService.selectedElements.includes(l)||($(t)?l.instanceServiceContainer.selectionService.setSelectedElements([...l.instanceServiceContainer.selectionService.selectedElements,l],t):l.instanceServiceContainer.selectionService.setSelectedElements([l],t),this._actionStartedDesignItems=[...e.instanceServiceContainer.selectionService.selectedElements],e.alignOnSnap&&e.snapLines.calculateSnaplines(e.instanceServiceContainer.selectionService.selectedElements))}if(e.readOnly)return;if(!this._clonedItems){this._clonedItems=[];for(let l of this._actionStartedDesignItems){let c=await l.clone();this._clonedItems&&c&&this._clonedItems.push(c)}}if(!this._actionStartedDesignItem)return;if(this._changeGroup||(this._changeGroup=e.rootDesignItem.openGroup("Move Elements"),window.addEventListener("pointerup",()=>{this._changeGroup?.abort(),this._changeGroup=null},{once:!0})),$(t)&&!this._copiedItemsInserted){this._changeGroup.title="Copy Elements",this._copiedItemsInserted=!0;for(let l=0;l<this._clonedItems.length;l++)this._actionStartedDesignItems[l].insertAdjacentElement(this._clonedItems[l],"beforebegin")}else if(!$(t)&&this._copiedItemsInserted){this._changeGroup.title="Move Elements";for(let l of this._clonedItems)l.remove();this._copiedItemsInserted=!1}let a=n.x!=this._initialPoint.x||n.y!=this._initialPoint.y;if(this._actionType!=Ee.Drag&&a&&(this._actionType=Ee.Drag),this._movedSinceStartedAction){let l=getComputedStyle(this._actionStartedDesignItem.parent.element),c=e.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(this._actionStartedDesignItem.parent,l,this._actionStartedDesignItem));if(c){let h=this._actionStartedDesignItem.parent;this._dragParentExtensionItem!=h?(e.extensionManager.removeExtension(this._dragParentExtensionItem,I.ContainerDrag),e.extensionManager.applyExtension(h,I.ContainerDrag,t),this._dragParentExtensionItem=h):e.extensionManager.refreshExtension(h,I.ContainerDrag);let p=c.canLeave(this._actionStartedDesignItem.parent,this._actionStartedDesignItems),d=null,u=null;if(p&&([d,u]=r.FindPossibleContainer(this._actionStartedDesignItem,this._actionStartedDesignItems,t),d!=null?this._dragOverExtensionItem!=d?(e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerDragOverAndCanBeEntered),e.extensionManager.applyExtension(d,I.ContainerDragOverAndCanBeEntered,t),this._dragOverExtensionItem=d):e.extensionManager.refreshExtension(d,I.ContainerDragOverAndCanBeEntered,t):this._dragOverExtensionItem&&(e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerDragOverAndCanBeEntered),this._dragOverExtensionItem=null)),u&&(this._holdTimeout=setTimeout(()=>{this._pointerActionTypeDragOrSelect(e,t,i,n,!0)},1e3)),u&&(t.altKey||s)){let m=c.getElementOffset(this._actionStartedDesignItem.parent,this._actionStartedDesignItem),f=u.getElementOffset(d,this._actionStartedDesignItem);this._moveItemsOffset={x:f.x-m.x+this._moveItemsOffset.x,y:f.y-m.y+this._moveItemsOffset.y},c.leaveContainer(this._actionStartedDesignItem.parent,this._actionStartedDesignItems);let y={x:n.x-this._moveItemsOffset.x,y:n.y-this._moveItemsOffset.y};u.enterContainer(d,this._actionStartedDesignItems,"normal"),u.place(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,y,this._actionStartedDesignItems),e.extensionManager.removeExtension(this._dragParentExtensionItem,I.ContainerDrag),e.extensionManager.applyExtension(d,I.ContainerDrag,t),this._dragParentExtensionItem=d,e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerDragOverAndCanBeEntered),this._dragOverExtensionItem=null,e.extensionManager.refreshAllAppliedExtentions()}else{let m={x:n.x-this._moveItemsOffset.x,y:n.y-this._moveItemsOffset.y};if(this._started)c.place(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,m,this._actionStartedDesignItems);else if(!c.startPlacementAllowed||c.startPlacementAllowed(t,e,this._actionStartedDesignItem.parent,this._actionStartedDesignItems)){for(let f of this._actionStartedDesignItems)e.extensionManager.removeExtension(f,I.Placement),e.extensionManager.removeExtension(f,I.MouseOver),e.extensionManager.applyExtension(f,I.Placement,t);c.startPlace(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,m,this._actionStartedDesignItems),this._started=!0}}e.extensionManager.refreshExtensions(this._actionStartedDesignItems,null,t,null,20)}}break}case P.PointerUp:{if(this._started=!1,!this._movedSinceStartedAction||this._actionType==Ee.DragOrSelect){this._previousEventName==P.PointerDown&&!$(t)?e.instanceServiceContainer.selectionService.setSelectedElements([this._actionStartedClickDesignItem??this._actionStartedDesignItem],t):this.checkSelectElement(t,e,i);return}if(this._movedSinceStartedAction){let a=getComputedStyle(this._actionStartedDesignItem.parent.element),l=e.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(this._actionStartedDesignItem.parent,a,this._actionStartedDesignItem)),c={x:n.x-this._moveItemsOffset.x,y:n.y-this._moveItemsOffset.y};if(l){this._changeGroup||(this._changeGroup=e.rootDesignItem.openGroup("Move Elements"));try{l.finishPlace(t,e,this._actionStartedDesignItem.parent,this._initialPoint,this._initialOffset,c,e.instanceServiceContainer.selectionService.selectedElements),this._changeGroup.commit(),this._changeGroup=null}catch(p){console.error(p),this._changeGroup.abort()}this._changeGroup=null;let h=e.elementsFromPoint(t.x,t.y);for(let p of this._actionStartedDesignItems)h.includes(p.element)&&e.extensionManager.applyExtension(p,I.MouseOver,t),e.extensionManager.removeExtension(p,I.Placement)}else this._changeGroup&&this._changeGroup.abort(),this._changeGroup=null;e.extensionManager.removeExtension(this._dragParentExtensionItem,I.ContainerDrag),this._dragParentExtensionItem=null,e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerDragOverAndCanBeEntered),this._dragOverExtensionItem=null,this._moveItemsOffset={x:0,y:0}}e.extensionManager.refreshExtensions(e.instanceServiceContainer.selectionService.selectedElements,null,t,null,20),this._changeGroup&&(this._changeGroup.abort(),this._changeGroup=null);break}}}_getDesignItemToStartDrag(e,t,i){let n=e.instanceServiceContainer.selectionService.selectedElements;if(!n?.length||t.isRootItem||n.includes(t))return t;for(let s of n)if(!(!s||s.isRootItem||s===t)&&this._isPointInsideDesignItemQuad(e,s,i))return s;return t}_isPointInsideDesignItemQuad(e,t,i){let n=t.element.getBoxQuads({box:"border",relativeTo:e.canvas,iframes:e.iframes})[0];return n?this._isPointInsideQuad(i,n):!1}_isPointInsideQuad(e,t){let i=[t.p1,t.p2,t.p3,t.p4];for(let s=0;s<i.length;s++){let o=i[s],a=i[(s+1)%i.length];if(this._isPointOnSegment(e,o,a))return!0}let n=!1;for(let s=0,o=i.length-1;s<i.length;o=s++){let a=i[s],l=i[o];a.y>e.y!=l.y>e.y&&e.x<(l.x-a.x)*(e.y-a.y)/(l.y-a.y||Number.EPSILON)+a.x&&(n=!n)}return n}_isPointOnSegment(e,t,i){let s=(e.y-t.y)*(i.x-t.x)-(e.x-t.x)*(i.y-t.y);if(Math.abs(s)>1e-4)return!1;let o=(e.x-t.x)*(i.x-t.x)+(e.y-t.y)*(i.y-t.y);if(o<-1e-4)return!1;let a=(i.x-t.x)*(i.x-t.x)+(i.y-t.y)*(i.y-t.y);return o<=a+1e-4}checkSelectElement(e,t,i){if($(e)){let n=t.instanceServiceContainer.selectionService.selectedElements.indexOf(i);if(n>=0){let s=t.instanceServiceContainer.selectionService.selectedElements.slice(0);s.splice(n,1),t.instanceServiceContainer.selectionService.setSelectedElements(s,e)}else{let s=t.instanceServiceContainer.selectionService.selectedElements.slice(0);s.push(i),t.instanceServiceContainer.selectionService.setSelectedElements(s,e)}}else t.instanceServiceContainer.selectionService.selectedElements.indexOf(i)<0&&t.instanceServiceContainer.selectionService.setSelectedElements([i],e)}static FindPossibleContainer(e,t,i){let n=null,s=null,o=e.instanceServiceContainer.designerCanvas,a=o.elementsFromPoint(i.x,i.y);a.push(o.rootDesignItem.element);for(let l of a)if(l!=e.element){if(l==e.parent.element)break;if(l==o.rootDesignItem.element){n=o.rootDesignItem;let c=getComputedStyle(n.element);if(s=o.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(n,c,e)),s){if(s.canEnter(n,t))break;n=null,s=null;break}break}else{n=O.GetOrCreateDesignItem(l,l,o.serviceContainer,o.instanceServiceContainer);let c=getComputedStyle(n.element);if(s=o.serviceContainer.getLastServiceWhere("containerService",h=>h.serviceForContainer(n,c,e)),s){if(s.canEnter(n,t))break;n=null,s=null;continue}}}return[n,s]}keyboardEventHandler(e,t,i){}}});var Se,yt=g(()=>{"use strict";Se=class{constructor(e,t,i){this.title="Insert Item",this.containerItem=e,this.index=t,this.newItem=i}title;get affectedItems(){return[this.containerItem,this.newItem]}undo(){return this.newItem.parent._removeChildInternal(this.newItem),[{changeType:"removed",designItems:[this.newItem]}]}do(){return this.containerItem._insertChildInternal(this.newItem,this.index),[{changeType:"added",designItems:[this.newItem]}]}containerItem;index;newItem;mergeWith(e){return!1}}});var Ps,yv,Is,rh=g(()=>{"use strict";me();Xe();yt();oe();se();ui();Ps=10,yv=5,Is=class{options;cursor="crosshair";_pathD;_path;_samePoint=!1;_p2pMode=!1;_dragMode=!1;_pointerMoved=!1;_eventStarted=!1;_lastPoint;_startPoint;_captureElement;_pointerId;_angleStep;constructor(e){this.options=e,e?.angleStep!==void 0&&(this._angleStep=e.angleStep)}activated(e){}dispose(){}pointerEventHandler(e,t,i){let n=e.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:e.clickOverlay.focus(),this._eventStarted=!0,this._p2pMode||(this._captureElement=t.target,this._pointerId=t.pointerId,this._captureElement.setPointerCapture(this._pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._pathD="M "+n.x+" "+n.y+" ",this._path.setAttribute("d",this._pathD),this._path.setAttribute("stroke",this.options?.strokeColor??e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("fill",this.options?.fillBrush??e.serviceContainer.globalContext.fillBrush),this._path.setAttribute("stroke-width",this.options?.strokeThickness??e.serviceContainer.globalContext.strokeThickness),e.overlayLayer.addOverlay(this.constructor.name,this._path,T.Foreground),this._startPoint=n),this._lastPoint!=null&&this._lastPoint.x===n.x&&this._lastPoint.y===n.y&&!this._samePoint&&(this._samePoint=!0),this._lastPoint==null&&(this._lastPoint=n),this._startPoint==null&&(this._startPoint=n);break;case P.PointerMove:if(this._eventStarted&&(this._pointerMoved=!0),this._p2pMode){if(this._path){let s=n;(t.shiftKey||this._angleStep)&&(s=It(this._lastPoint,n,this._angleStep??45)),this._path.setAttribute("d",this._pathD+"L "+s.x+" "+s.y)+""}}else if(this._dragMode=!0,this._path&&this._lastPoint){let s=this.options?.interpolatePoints?Yu(this._lastPoint,n,this.options.interpolationDistance??yv):[n];for(let o of s)this._pathD+="L "+o.x+" "+o.y+" ";this._path.setAttribute("d",this._pathD),this._lastPoint=n}break;case P.PointerUp:if(this._eventStarted&&!this._pointerMoved&&(this._p2pMode=!0),this._p2pMode&&!this._samePoint&&this._startPoint.x!=n.x&&this._startPoint.y!=n.y&&this._path)if(t.shiftKey||this._angleStep){let s=It(this._lastPoint,n,this._angleStep??45);this._pathD+="L "+s.x+" "+s.y+" ",this._path.setAttribute("d",this._pathD),this._lastPoint=s}else this._pathD+="L "+n.x+" "+n.y+" ",this._path.setAttribute("d",this._pathD),this._lastPoint=n;(this._samePoint&&this._p2pMode||this._dragMode&&!this._p2pMode)&&this._finalizePath(e);break}t.preventDefault(),t.stopPropagation()}keyboardEventHandler(e,t,i){t.key==="Escape"&&this._finalizePath(e)}_finalizePath(e){this._captureElement?.releasePointerCapture(this._pointerId),this._captureElement=void 0,e.releaseActiveTool(),this._eventStarted=!1,this._p2pMode=!1,this._pointerMoved=!1,this._samePoint=!1,this._dragMode=!1;let t=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let i=document.createElementNS("http://www.w3.org/2000/svg","svg"),n=t.x-Ps,s=t.y-Ps,o=e.serviceContainer.options.roundPixelsToDecimalPlaces;this._path.setAttribute("d",this._pathD);let a=Uu(this._path,n,s);this._path.setAttribute("d",Ac(a,o)),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),i.appendChild(this._path),i.style.left=pe(n,o)+"px",i.style.top=pe(s,o)+"px",i.style.position="absolute",i.style.width=Math.round(t.width+2*Ps)+"px",i.style.height=Math.round(t.height+2*Ps)+"px",i.style.overflow="visible",i.style.stroke=this.options?.strokeColor??e.serviceContainer.globalContext.strokeColor,i.style.fill=this.options?.fillBrush??e.serviceContainer.globalContext.fillBrush,i.style.strokeWidth=this.options?.strokeThickness??e.serviceContainer.globalContext.strokeThickness,this._path=void 0,this._pathD=void 0,this._lastPoint=void 0;let l=O.createDesignItemFromInstance(i,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new Se(e.rootDesignItem,e.rootDesignItem.childCount,l)),e.serviceContainer.globalContext.finishedWithTool(this)}}});var Ds,sh=g(()=>{"use strict";le();Ds=class extends F{_line1;_line2;_line3;_line4;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(i){if(isNaN(i.p1.x)||isNaN(i.p2.x)){this.remove();return}this._valuesHaveChanges(this.designerCanvas.zoomFactor,i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p3.x,i.p3.y,i.p4.x,i.p4.y)&&(this._line1=this._drawLine(i.p1.x,i.p1.y,i.p2.x,i.p2.y,"svg-selection",this._line1),this._line2=this._drawLine(i.p1.x,i.p1.y,i.p4.x,i.p4.y,"svg-selection",this._line2),this._line3=this._drawLine(i.p2.x,i.p2.y,i.p3.x,i.p3.y,"svg-selection",this._line3),this._line4=this._drawLine(i.p4.x,i.p4.y,i.p3.x,i.p3.y,"svg-selection",this._line4),this._line1.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line2.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line3.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line4.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString())}}dispose(){this._removeAllOverlays()}}});import{css as vv}from"@node-projects/base-custom-webcomponent";var ks,oh=g(()=>{"use strict";sh();q();ks=class{shouldExtend(e,t,i){return!i.isRootItem&&i.nodeType!=k.Comment&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new Ds(e,t,i)}static style=vv`.svg-selection{stroke:#3899ec;fill:transparent;stroke-width:2}`}});function Wi(r){let e=getComputedStyle(r),t=1,i=1;return e.gridRowEnd=="auto"?t=1:e.gridRowEnd.startsWith("span")?t=parseInt(e.gridRowEnd.substring(4)):t=parseInt(e.gridRowEnd)-parseInt(e.gridRowStart),e.gridColumnEnd=="auto"?i=1:e.gridColumnEnd.startsWith("span")?i=parseInt(e.gridColumnEnd.substring(4)):i=parseInt(e.gridColumnEnd)-parseInt(e.gridColumnStart),{colSpan:i,rowSpan:t}}function Pn(r,e){let t=r.instanceServiceContainer.designerCanvas,i=r.element.convertPointFromNode(new DOMPoint(e.x,e.y),t.canvas,{iframes:t.iframes});return{x:i.x,y:i.y}}function ji(r){let e=r.instanceServiceContainer.designerCanvas,t=e.canvas.convertPointFromNode(new DOMPoint(0,0),r.element,{iframes:e.iframes}),i=e.canvas.convertPointFromNode(new DOMPoint(1,0),r.element,{iframes:e.iframes}),n=e.canvas.convertPointFromNode(new DOMPoint(0,1),r.element,{iframes:e.iframes});return new DOMMatrix([i.x-t.x,i.y-t.y,n.x-t.x,n.y-t.y,t.x,t.y])}function Sm(r,e){let t=r.cells[0];if(!t?.length||!Number.isFinite(e))return 0;let i=0;for(let n=0;n<t.length;n++){let s=t[n];e>s.localX+s.width/2&&(i=n)}return i}function Cm(r,e){let t=r.cells[0];if(!t?.length||!Number.isFinite(e))return 1;let i=1;for(let n=0;n<t.length;n++){let s=t[n];e>s.localX+s.width/2&&(i=n+2)}return i}function Em(r,e){if(!r.cells.length||!Number.isFinite(e))return 0;let t=0;for(let i=0;i<r.cells.length;i++){let n=r.cells[i][0];e>n.localY+n.height/2&&(t=i)}return t}function Pm(r,e){if(!r.cells.length||!Number.isFinite(e))return 1;let t=1;for(let i=0;i<r.cells.length;i++){let n=r.cells[i][0];e>n.localY+n.height/2&&(t=i+2)}return t}function In(r,e,t=lt(r)){let i=Pn(r,e);if(!Number.isFinite(i.x)||!Number.isFinite(i.y))return null;for(let n=0;n<t.cells.length;n++)for(let s=0;s<t.cells[n].length;s++){let o=t.cells[n][s];if(i.x>=o.localX&&i.x<=o.localX+o.width&&i.y>=o.localY&&i.y<=o.localY+o.height)return{row:n,column:s,cell:o,localPoint:i}}return null}function lt(r){let e=r.instanceServiceContainer.designerCanvas,t=r.element.getBoxQuads({relativeTo:e.canvas,iframes:e.iframes})[0],i=Fe(r.element),n=getComputedStyle(r.element),s=n.gridTemplateRows.split(" "),o=n.gridTemplateColumns.split(" "),a=Number.parseFloat(n.paddingLeft),l=Number.parseFloat(n.paddingTop),c=Number.parseFloat(n.borderLeftWidth),h=Number.parseFloat(n.borderTopWidth),p=0,d=0,u=0,m=0,f=t.p1.x+c,y=t.p1.y+h,v=c,C=h,w=null;n.gridTemplateAreas&&n.gridTemplateAreas!=="none"&&(w=n.gridTemplateAreas.split('"')),n.columnGap&&n.columnGap!="normal"&&(d=Number.parseFloat(n.columnGap.replace("px",""))),n.rowGap&&n.rowGap!="normal"&&(u=Number.parseFloat(n.rowGap.replace("px","")));let b=0,S=0;for(let D of o){let j=Number.parseFloat(D.replace("px",""));b+=j+d}b-=d;for(let D of s){let j=Number.parseFloat(D.replace("px",""));S+=j+u}if(S-=u,n.justifyContent=="center"){let D=(i.width-b)/2;f+=D,v+=D}else if(n.justifyContent=="end"){let D=i.width-b;f+=D,v+=D}else if(n.justifyContent=="space-between")d+=(i.width-b)/(o.length-1);else if(n.justifyContent=="space-around"){let D=(i.width-b)/(o.length*2);d+=D*2,f+=D,v+=D}else if(n.justifyContent=="space-evenly"){let D=(i.width-b)/(o.length+1);d+=D,f+=D,v+=D}if(n.alignContent=="center"){let D=(i.height-S)/2;y+=D,C+=D}else if(n.alignContent=="end"){let D=i.height-S;y+=D,C+=D}else if(n.alignContent=="space-between")u+=(i.height-S)/(s.length-1);else if(n.alignContent=="space-around"){let D=(i.height-S)/(s.length*2);u+=D*2,y+=D,C+=D}else if(n.alignContent=="space-evenly"){let D=(i.height-S)/(s.length+1);u+=D,y+=D,C+=D}let M={cells:[],gaps:[],xGap:d,yGap:u};for(let D=0;D<s.length;D++){let j=s[D],H=null;w&&w[m+1]&&(H=w[m+1].split(" "));let V=0,K=0,Q=Number.parseFloat(j.replace("px","")),ce=[];M.cells.push(ce);for(let B=0;B<o.length;B++){let ye=o[B];B>0&&(M.gaps.push({x:V+f+a,y:p+y+l,width:d,height:Q,localX:V+v+a,localY:p+C+l,column:B,row:D,type:"v"}),V+=d);let L=Number.parseFloat(ye.replace("px",""));D>0&&M.gaps.push({x:V+f+a,y:p+y-u+l,width:L,height:u,localX:V+v+a,localY:p+C-u+l,column:B,row:D,type:"h"});let te=null;if(H&&H[K]){let J=H[K].trim();J!="."&&(te=J)}let X={x:V+f+a,y:p+y+l,width:L,height:Q,name:te,localX:V+v+a,localY:p+C+l};ce.push(X),V+=L,K++}p+=Q+u,m+=2}return M}var gi=g(()=>{"use strict";Tt()});function Yi(r,e){switch(e){case"left":let t=getComputedStyle(r).left;return r.style.removeProperty("right"),r.style.left=t,t;case"top":let i=getComputedStyle(r).top;return r.style.removeProperty("bottom"),r.style.top=i,i}}var As,ah=g(()=>{"use strict";me();de();gi();Le();Tt();le();As=class extends F{resizeAllSelected;_initialSizes=null;_actionModeStarted;_initialPoint=null;_offsetPoint;_circle1;_circle2;_circle3;_circle4;_circle5;_circle6;_circle7;_circle8;_initialHandleCanvasPoint=null;_initialLocalToCanvasMatrix=null;_initialBorderBoxSize=null;_initialFixedResizeAnchor=null;constructor(e,t,i,n){super(e,t,i),this.resizeAllSelected=n}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(i){if(isNaN(i.p1.x)||isNaN(i.p1.x)){this.remove();return}this._valuesHaveChanges(this.designerCanvas.zoomFactor,i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p3.x,i.p3.y,i.p4.x,i.p4.y)&&(this._circle1=this._drawResizerOverlay(i.p1.x,i.p1.y,"nw-resize",this._circle1),this._circle2=this._drawResizerOverlay(i.p1.x+(i.p2.x-i.p1.x)/2,i.p1.y+(i.p2.y-i.p1.y)/2,"n-resize",this._circle2),this._circle3=this._drawResizerOverlay(i.p2.x,i.p2.y,"ne-resize",this._circle3),this._circle4=this._drawResizerOverlay(i.p1.x+(i.p4.x-i.p1.x)/2,i.p1.y+(i.p4.y-i.p1.y)/2,"w-resize",this._circle4),this._circle5=this._drawResizerOverlay(i.p4.x,i.p4.y,"sw-resize",this._circle5),this._circle6=this._drawResizerOverlay(i.p4.x+(i.p3.x-i.p4.x)/2,i.p4.y+(i.p3.y-i.p4.y)/2,"s-resize",this._circle6),this._circle8=this._drawResizerOverlay(i.p2.x+(i.p3.x-i.p2.x)/2,i.p2.y+(i.p3.y-i.p2.y)/2,"e-resize",this._circle8),this._circle7=this._drawResizerOverlay(i.p3.x,i.p3.y,"se-resize",this._circle7))}}_drawResizerOverlay(e,t,i,n){let s=this._drawCircle(e,t,this.designerCanvas.serviceContainer.options.resizerPixelSize/this.designerCanvas.zoomFactor,"svg-primary-resizer",n);return s.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),n||(s.addEventListener(P.PointerDown,o=>this._pointerActionTypeResize(s,o,i)),s.addEventListener(P.PointerMove,o=>this._pointerActionTypeResize(s,o,i)),s.addEventListener(P.PointerUp,o=>this._pointerActionTypeResize(s,o,i))),s.style.cursor=i,s}_pointerActionTypeResize(e,t,i){t.stopPropagation();let n=this.designerCanvas.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:let s=parseFloat(e.getAttribute("cx")??"0"),o=parseFloat(e.getAttribute("cy")??"0");if(this._offsetPoint={x:s-n.x,y:o-n.y},t.target.setPointerCapture(t.pointerId),this._initialPoint=n,this._initialHandleCanvasPoint=new DOMPoint(s,o),this._initialLocalToCanvasMatrix=ji(this.extendedItem),this._initialBorderBoxSize=Fe(this.extendedItem.element),this._initialFixedResizeAnchor=this._getFixedResizeAnchor(this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas,iframes:this.designerCanvas.iframes})[0],i),this._initialSizes=[],this._actionModeStarted=i,this._initialSizes.push(this._getInitialSize(this.extendedItem.element)),this.resizeAllSelected)for(let l of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)this._initialSizes.push(this._getInitialSize(l.element));if(this.designerCanvas.alignOnSnap&&this.designerCanvas.snapLines.calculateSnaplines(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),this.prepareResize(this.extendedItem,this._actionModeStarted),this.resizeAllSelected)for(let l of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)l!==this.extendedItem&&this.prepareResize(l,this._actionModeStarted);break;case P.PointerMove:if(this._initialPoint){if(!this._initialSizes||!this._initialHandleCanvasPoint||!this._initialLocalToCanvasMatrix||!this._initialBorderBoxSize)return;let l=getComputedStyle(this.extendedItem.parent.element),h=this.designerCanvas.serviceContainer.getLastServiceWhere("containerService",b=>b.serviceForContainer(this.extendedItem.parent,l)).placePoint(t,this.designerCanvas,this.extendedItem.parent,this._initialPoint,{x:0,y:0},n,this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),p=new DOMPoint(h.x+this._offsetPoint.x,h.y+this._offsetPoint.y),d=this._getLocalHandleDelta(p);if(!d)return;let u=d.x,m=d.y;t.shiftKey&&(u=u<m?u:m,m=u);let f=0,y=null,v=null;switch(this._actionModeStarted){case"e-resize":if(y=this._initialSizes[f].width+u,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",this.resizeAllSelected){f++;for(let b of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)b!==this.extendedItem&&(b.element.style.width=N(this.extendedItem,this._initialSizes[f].width+u)+"px")}break;case"se-resize":if(y=this._initialSizes[f].width+u,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",v=this._initialSizes[f].height+m,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let b of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)b!==this.extendedItem&&(b.element.style.width=N(this.extendedItem,this._initialSizes[f].width+u)+"px",b.element.style.height=N(this.extendedItem,this._initialSizes[f].height+m)+"px")}break;case"s-resize":if(v=this._initialSizes[f].height+m,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let b of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)b!==this.extendedItem&&(b.element.style.height=N(this.extendedItem,this._initialSizes[f].height+m)+"px")}break;case"sw-resize":if(y=this._initialSizes[f].width-u,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",v=this._initialSizes[f].height+m,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let b of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)b!==this.extendedItem&&(b.element.style.width=N(this.extendedItem,this._initialSizes[f].width-u)+"px",b.element.style.height=N(this.extendedItem,this._initialSizes[f].height+m)+"px")}break;case"w-resize":if(y=this._initialSizes[f].width-u,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",this.resizeAllSelected){f++;for(let b of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)b!==this.extendedItem&&(b.element.style.width=N(this.extendedItem,this._initialSizes[f].width-u)+"px")}break;case"nw-resize":if(y=this._initialSizes[f].width-u,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",v=this._initialSizes[f].height-m,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let b of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)b!==this.extendedItem&&(b.element.style.width=N(this.extendedItem,this._initialSizes[f].width-u)+"px",b.element.style.height=N(this.extendedItem,this._initialSizes[f].height-m)+"px")}break;case"n-resize":if(v=this._initialSizes[f].height-m,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let b of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)b!==this.extendedItem&&(b.element.style.height=N(this.extendedItem,this._initialSizes[f].height-m)+"px")}break;case"ne-resize":if(y=this._initialSizes[f].width+u,this.extendedItem.element.style.width=N(this.extendedItem,y)+"px",v=this._initialSizes[f].height-m,this.extendedItem.element.style.height=N(this.extendedItem,v)+"px",this.resizeAllSelected){f++;for(let b of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)b!==this.extendedItem&&(b.element.style.width=N(this.extendedItem,this._initialSizes[f].width+u)+"px",b.element.style.height=N(this.extendedItem,this._initialSizes[f].height-m)+"px")}break}let C=this._getCurrentBorderBoxSize(u,m);if(!C)return;this._applyAnchorCorrection(C);let w=[this.extendedItem,this.extendedItem.parent];this.resizeAllSelected&&w.push(...this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),this.extensionManager.refreshExtensions(w),this.designerCanvas?.raiseDesignItemsChanged(w,"resize",!1)}break;case P.PointerUp:if(t.target.releasePointerCapture(t.pointerId),!this._initialPoint)return;let a=this.extendedItem.openGroup(this.resizeAllSelected&&this.designerCanvas.instanceServiceContainer.selectionService.selectedElements.length>1?"Resize Elements":"Resize <"+this.extendedItem.name+">");try{let l=this.extendedItem.element;this.extendedItem.setStyle("width",this.extendedItem.element.style.width),this.extendedItem.setStyle("height",this.extendedItem.element.style.height);let c=parseFloat(Yi(l,"left")),h=parseFloat(Yi(l,"top")),p=this._getAnchorCorrectionInParent(Fe(this.extendedItem.element));if(p&&(c+=p.x,h+=p.y,l.style.left=N(this.extendedItem,c)+"px",l.style.top=N(this.extendedItem,h)+"px"),this.extendedItem.setStyle("left",N(this.extendedItem,c)+"px"),this.extendedItem.setStyle("top",N(this.extendedItem,h)+"px"),this.resizeAllSelected){for(let d of this.designerCanvas.instanceServiceContainer.selectionService.selectedElements)d!==this.extendedItem&&(d.setStyle("width",d.element.style.width),d.setStyle("height",d.element.style.height),d.setStyle("left",N(this.extendedItem,parseFloat(Yi(d.element,"left")))+"px"),d.setStyle("top",N(this.extendedItem,parseFloat(Yi(d.element,"top")))+"px"));this.designerCanvas?.raiseDesignItemsChanged(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements,"resize",!0)}else this.designerCanvas?.raiseDesignItemsChanged([this.extendedItem],"resize",!0);a.commit()}catch(l){a.abort(),console.error(l)}this._initialSizes=null,this._initialPoint=null,this._initialHandleCanvasPoint=null,this._initialLocalToCanvasMatrix=null,this._initialBorderBoxSize=null,this._initialFixedResizeAnchor=null;break}}_getLocalHandleDelta(e){if(!this._initialHandleCanvasPoint||!this._initialLocalToCanvasMatrix)return null;let t=new DOMMatrix([this._initialLocalToCanvasMatrix.a,this._initialLocalToCanvasMatrix.b,this._initialLocalToCanvasMatrix.c,this._initialLocalToCanvasMatrix.d,0,0]);if(!t.is2D)return null;let i=new DOMPoint(e.x-this._initialHandleCanvasPoint.x,e.y-this._initialHandleCanvasPoint.y);return t.inverse().transformPoint(i)}_getCurrentBorderBoxSize(e,t){if(!this._initialBorderBoxSize)return null;let i=this._initialBorderBoxSize.width,n=this._initialBorderBoxSize.height;switch(this._actionModeStarted){case"e-resize":case"se-resize":case"ne-resize":i+=e;break;case"w-resize":case"sw-resize":case"nw-resize":i-=e;break}switch(this._actionModeStarted){case"s-resize":case"se-resize":case"sw-resize":n+=t;break;case"n-resize":case"ne-resize":case"nw-resize":n-=t;break}return{width:i,height:n}}_getInitialSize(e){let t=Fe(e),i={x:0,y:0};return getComputedStyle(e).boxSizing=="content-box"&&(i=Su(e)),{width:t.width-i.x,height:t.height-i.y}}_getFixedResizeAnchor(e,t){if(!e)return null;switch(t){case"e-resize":return new DOMPoint((e.p1.x+e.p4.x)/2,(e.p1.y+e.p4.y)/2);case"se-resize":return new DOMPoint(e.p1.x,e.p1.y);case"s-resize":return new DOMPoint((e.p1.x+e.p2.x)/2,(e.p1.y+e.p2.y)/2);case"sw-resize":return new DOMPoint(e.p2.x,e.p2.y);case"w-resize":return new DOMPoint((e.p2.x+e.p3.x)/2,(e.p2.y+e.p3.y)/2);case"nw-resize":return new DOMPoint(e.p3.x,e.p3.y);case"n-resize":return new DOMPoint((e.p4.x+e.p3.x)/2,(e.p4.y+e.p3.y)/2);case"ne-resize":return new DOMPoint(e.p4.x,e.p4.y);default:return null}}_getFixedResizeAnchorLocal(e,t){switch(t){case"e-resize":return new DOMPoint(0,e.height/2);case"se-resize":return new DOMPoint(0,0);case"s-resize":return new DOMPoint(e.width/2,0);case"sw-resize":return new DOMPoint(e.width,0);case"w-resize":return new DOMPoint(e.width,e.height/2);case"nw-resize":return new DOMPoint(e.width,e.height);case"n-resize":return new DOMPoint(e.width/2,e.height);case"ne-resize":return new DOMPoint(0,e.height);default:return null}}_getAnchorCorrectionInParent(e){if(!this._initialFixedResizeAnchor)return null;let t=this._getFixedResizeAnchorLocal(e,this._actionModeStarted);if(!t)return null;let i=this.extendedItem.parent.element.convertPointFromNode(this._initialFixedResizeAnchor,this.designerCanvas.canvas,{iframes:this.designerCanvas.iframes}),n=this.designerCanvas.canvas.convertPointFromNode(t,this.extendedItem.element,{iframes:this.designerCanvas.iframes}),s=this.extendedItem.parent.element.convertPointFromNode(n,this.designerCanvas.canvas,{iframes:this.designerCanvas.iframes});return{x:i.x-s.x,y:i.y-s.y}}_applyAnchorCorrection(e){let t=this._getAnchorCorrectionInParent(e);if(!t)return;let i=this.extendedItem.element,n=parseFloat(Yi(i,"left"))+t.x,s=parseFloat(Yi(i,"top"))+t.y;i.style.left=N(this.extendedItem,n)+"px",i.style.top=N(this.extendedItem,s)+"px"}prepareResize(e,t){let i=null,n=null,s=null,o=null;switch(this._actionModeStarted){case"e-resize":s=getComputedStyle(e.element).left,e.element.style.removeProperty("right"),e.element.style.left=s;break;case"se-resize":i=getComputedStyle(e.element).top,e.element.style.removeProperty("bottom"),e.element.style.top=i,s=getComputedStyle(e.element).left,e.element.style.removeProperty("right"),e.element.style.left=s;break;case"s-resize":i=getComputedStyle(e.element).top,e.element.style.removeProperty("bottom"),e.element.style.top=i;break;case"sw-resize":i=getComputedStyle(e.element).top,e.element.style.removeProperty("bottom"),e.element.style.top=i,o=getComputedStyle(e.element).right,e.element.style.removeProperty("left"),e.element.style.right=o;break;case"w-resize":o=getComputedStyle(e.element).right,e.element.style.removeProperty("left"),e.element.style.right=o;break;case"nw-resize":n=getComputedStyle(e.element).bottom,e.element.style.removeProperty("top"),e.element.style.bottom=n,o=getComputedStyle(e.element).right,e.element.style.removeProperty("left"),e.element.style.right=o;break;case"n-resize":n=getComputedStyle(e.element).bottom,e.element.style.removeProperty("top"),e.element.style.bottom=n;break;case"ne-resize":n=getComputedStyle(e.element).bottom,e.element.style.removeProperty("top"),e.element.style.bottom=n,s=getComputedStyle(e.element).left,e.element.style.removeProperty("right"),e.element.style.left=s;break}}dispose(){this._removeAllOverlays()}}});import{css as _v}from"@node-projects/base-custom-webcomponent";var Ts,lh=g(()=>{"use strict";ah();q();Ts=class{resizeAllSelected;constructor(e=!1){this.resizeAllSelected=e}shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem&&i.nodeType==k.Element}getExtension(e,t,i){return new As(e,t,i,this.resizeAllSelected)}static style=_v`.svg-primary-resizer{stroke:#3899ec;fill:#fff;pointer-events:auto}`}});function Im(r){let e=Math.hypot(r.x,r.y);return e<1e-8?{x:0,y:0}:{x:r.x/e,y:r.y/e}}function Ui(r){return{x:(r.p1.x+r.p2.x+r.p3.x+r.p4.x)/4,y:(r.p1.y+r.p2.y+r.p3.y+r.p4.y)/4}}function Dm(r,e){return{x:(r.x+e.x)/2,y:(r.y+e.y)/2}}function xv(r,e,t,i){let n=e.x-r.x,s=e.y-r.y,o=Im({x:-s,y:n});o.x===0&&o.y===0&&(o=Im(i));let a=Dm(r,e),l={x:t.x-a.x,y:t.y-a.y};return o.x*l.x+o.y*l.y>0&&(o={x:-o.x,y:-o.y}),o}function Be(r,e,t,i,n){let s=Dm(r,e),o=xv(r,e,t,n);return{x:s.x+o.x*i,y:s.y+o.y*i}}var Ms=g(()=>{"use strict"});var Ls,ch=g(()=>{"use strict";$e();Le();Tt();le();Ms();Ls=class extends F{_rotateLine;_rotateCircle;_startPoint=null;_rotateCirclePosition={x:0,y:0};constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!i)return;let n=[i.p1,i.p2,i.p3,i.p4];if(n.some(c=>!Number.isFinite(c.x)||!Number.isFinite(c.y))){this.remove();return}if(!this._valuesHaveChanges(this.designerCanvas.zoomFactor,...n.flatMap(c=>[c.x,c.y])))return;let s=Ui(i),o=Be(i.p1,i.p2,s,30/this.designerCanvas.zoomFactor,{x:0,y:-1}),a=Be(i.p1,i.p2,s,22/this.designerCanvas.zoomFactor,{x:0,y:-1}),l=Be(i.p1,i.p2,s,6/this.designerCanvas.zoomFactor,{x:0,y:-1});this._rotateLine=this._drawLine(a.x,a.y,l.x,l.y,"svg-primary-rotate-line",this._rotateLine),this._rotateLine.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle?(this._rotateCircle=this._drawCircle(o.x,o.y,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString()):(this._rotateCircle=this._drawCircle(o.x,o.y,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle.addEventListener("pointerdown",c=>{c.stopPropagation(),this._rotateCirclePosition=this._getRotateReferencePoint(),c.target.setPointerCapture(c.pointerId);let h=this.designerCanvas.getNormalizedEventCoordinates(c);this._startPoint=this.extendedItem.element.convertPointFromNode({x:h.x,y:h.y},this.designerCanvas.canvas)}),this._rotateCircle.addEventListener("pointermove",c=>{c.stopPropagation(),this._startPoint&&(this.extendedItem.element.style.rotate="none",this.extendedItem.element.style.rotate=this.getAngle(c)+"deg")}),this._rotateCircle.addEventListener("pointerup",c=>{c.stopPropagation(),c.target.releasePointerCapture(c.pointerId),this._startPoint=null,this.extendedItem.element.style.rotate="none",this.extendedItem.setStyle("rotate",this.getAngle(c)+"deg")}))}_getRotateReferencePoint(){let e=this.extendedItem.element,i={x:Fe(this.extendedItem.element).width/2,y:-30/this.designerCanvas.zoomFactor},n=e.style.rotate;try{e.style.rotate="none";let s=e.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!s)return i;let o=Ui(s),a=Be(s.p1,s.p2,o,30/this.designerCanvas.zoomFactor,{x:0,y:-1}),l=e.convertPointFromNode(a,this.designerCanvas.canvas);return!Number.isFinite(l.x)||!Number.isFinite(l.y)?i:{x:l.x,y:l.y}}finally{e.style.rotate=n}}getAngle(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e),i={x:t.x,y:t.y},n=this.extendedItem.element.convertPointFromNode(i,this.designerCanvas.canvas),o=getComputedStyle(this.extendedItem.element).transformOrigin.split(" "),a={x:parseFloat(o[0]),y:parseFloat(o[1])},l=Math.atan2(this._rotateCirclePosition.y-a.y,this._rotateCirclePosition.x-a.x)*180/Math.PI+90,c=Math.atan2(n.y-a.y,n.x-a.x)*180/Math.PI+90-l;return $(e)||(c=Math.round(c/15)*15),N(this.extendedItem,c)}dispose(){this._removeAllOverlays()}}});import{css as bv}from"@node-projects/base-custom-webcomponent";var Os,hh=g(()=>{"use strict";ch();Os=class{type;constructor(e="center-top"){this.type=e}shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new Ls(e,t,i)}static style=bv`.svg-primary-rotate{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto;cursor:alias}.svg-primary-rotate-transparent{fill:transparent;pointer-events:auto;cursor:alias}.svg-primary-rotate-line{stroke:#3899ec;fill:#3899ec;stroke-width:1}`}});var Ns,ph=g(()=>{"use strict";$e();Le();de();le();Ns=class extends F{_rotateLine;_rotateCircle;_rectLine1;_rectLine2;_rectLine3;_rectLine4;_initialCorners;_startAngle;_groupCenter;_initialHandleX;_initialHandleY;_initialLineX1;_initialLineY1;_initialLineX2;_initialLineY2;_currentDelta=0;_elementStartStates;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=ue(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements);if(i.length<2)return;let n,s,o,a,l,c;if(this._elementStartStates){let h=this._currentDelta*Math.PI/180,p=Math.cos(h),d=Math.sin(h),u=(C,w)=>this._groupCenter.x+(C-this._groupCenter.x)*p-(w-this._groupCenter.y)*d,m=(C,w)=>this._groupCenter.y+(C-this._groupCenter.x)*d+(w-this._groupCenter.y)*p;n=u(this._initialHandleX,this._initialHandleY),s=m(this._initialHandleX,this._initialHandleY),o=u(this._initialLineX1,this._initialLineY1),a=m(this._initialLineX1,this._initialLineY1),l=u(this._initialLineX2,this._initialLineY2),c=m(this._initialLineX2,this._initialLineY2);let y=this._initialCorners.map(C=>({x:u(C.x,C.y),y:m(C.x,C.y)})),v=(2/this.designerCanvas.zoomFactor).toString();this._rectLine1=this._drawLine(y[0].x,y[0].y,y[1].x,y[1].y,"svg-rotate-group-rect",this._rectLine1),this._rectLine2=this._drawLine(y[1].x,y[1].y,y[2].x,y[2].y,"svg-rotate-group-rect",this._rectLine2),this._rectLine3=this._drawLine(y[2].x,y[2].y,y[3].x,y[3].y,"svg-rotate-group-rect",this._rectLine3),this._rectLine4=this._drawLine(y[3].x,y[3].y,y[0].x,y[0].y,"svg-rotate-group-rect",this._rectLine4),this._rectLine1.style.strokeWidth=v,this._rectLine2.style.strokeWidth=v,this._rectLine3.style.strokeWidth=v,this._rectLine4.style.strokeWidth=v}else{this._rectLine1&&(this._rectLine1.style.display="none",this._rectLine2.style.display="none",this._rectLine3.style.display="none",this._rectLine4.style.display="none");let h=oi(i,this.designerCanvas),p=h.x+h.width/2,d=h.y;n=p,s=d-30/this.designerCanvas.zoomFactor,o=p,a=d-22/this.designerCanvas.zoomFactor,l=p,c=d-6/this.designerCanvas.zoomFactor}this._rotateLine=this._drawLine(o,a,l,c,"svg-primary-rotate-line",this._rotateLine),this._rotateLine.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle?(this._rotateCircle=this._drawCircle(n,s,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString()):(this._rotateCircle=this._drawCircle(n,s,5/this.designerCanvas.zoomFactor,"svg-primary-rotate",this._rotateCircle),this._rotateCircle.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._rotateCircle.addEventListener("pointerdown",h=>{h.stopPropagation(),h.target.setPointerCapture(h.pointerId);let p=ue(this.designerCanvas.instanceServiceContainer.selectionService.selectedElements),d=oi(p,this.designerCanvas),u=d.x+d.width/2,m=d.y;this._groupCenter={x:u,y:d.y+d.height/2},this._initialHandleX=u,this._initialHandleY=m-30/this.designerCanvas.zoomFactor,this._initialLineX1=u,this._initialLineY1=m-22/this.designerCanvas.zoomFactor,this._initialLineX2=u,this._initialLineY2=m-6/this.designerCanvas.zoomFactor,this._initialCorners=[{x:d.x,y:d.y},{x:d.x+d.width,y:d.y},{x:d.x+d.width,y:d.y+d.height},{x:d.x,y:d.y+d.height}],this._rectLine1&&(this._rectLine1.style.display="",this._rectLine2.style.display="",this._rectLine3.style.display="",this._rectLine4.style.display="");let f=this.designerCanvas.getNormalizedEventCoordinates(h);this._startAngle=Math.atan2(f.y-this._groupCenter.y,f.x-this._groupCenter.x),this._currentDelta=0,this._elementStartStates=p.map(y=>{let v=this.designerCanvas.getNormalizedElementCoordinates(y.element),C=this.designerCanvas.getNormalizedElementCoordinates(y.parent.element),w=y.getStyle("rotate")??"0deg",b=parseFloat(w)||0,S=getComputedStyle(y.element),M=parseFloat(S.width)/2,D=parseFloat(S.height)/2;return{item:y,rotation:b,centerX:v.x+v.width/2,centerY:v.y+v.height/2,cssHalfWidth:M,cssHalfHeight:D,parentX:C.x,parentY:C.y,parentWidth:C.width,parentHeight:C.height,usesRight:y.hasStyle("right")&&!y.hasStyle("left"),usesBottom:y.hasStyle("bottom")&&!y.hasStyle("top")}})}),this._rotateCircle.addEventListener("pointermove",h=>{if(h.stopPropagation(),!!this._elementStartStates){this._currentDelta=this._getDelta(h);for(let p of this._elementStartStates)this._applyRotation(p,this._currentDelta,!1)}}),this._rotateCircle.addEventListener("pointerup",h=>{if(h.stopPropagation(),h.target.releasePointerCapture(h.pointerId),!this._elementStartStates)return;let p=this._getDelta(h),d=this.designerCanvas.instanceServiceContainer.selectionService.primarySelection.openGroup("rotateGroup");for(let u of this._elementStartStates)this._applyRotation(u,p,!0);d.commit(),this._elementStartStates=null,this._currentDelta=0}))}_getDelta(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e),n=(Math.atan2(t.y-this._groupCenter.y,t.x-this._groupCenter.x)-this._startAngle)*180/Math.PI;return n=((n+180)%360+360)%360-180,$(e)||(n=Math.round(n/15)*15),n}_applyRotation(e,t,i){let n=t*Math.PI/180,s=Math.cos(n),o=Math.sin(n),a=e.centerX-this._groupCenter.x,l=e.centerY-this._groupCenter.y,c=this._groupCenter.x+a*s-l*o,h=this._groupCenter.y+a*o+l*s,p=N(e.item,e.rotation+t),d=c-e.cssHalfWidth-e.parentX,u=h-e.cssHalfHeight-e.parentY,m=e.parentX+e.parentWidth-c-e.cssHalfWidth,f=e.parentY+e.parentHeight-h-e.cssHalfHeight;if(i)e.usesRight?e.item.setStyle("right",m+"px"):e.item.setStyle("left",d+"px"),e.usesBottom?e.item.setStyle("bottom",f+"px"):e.item.setStyle("top",u+"px"),e.item.setStyle("rotate",p+"deg");else{let y=e.item.element;e.usesRight?y.style.right=m+"px":y.style.left=d+"px",e.usesBottom?y.style.bottom=f+"px":y.style.top=u+"px",y.style.rotate=p+"deg"}}dispose(){this._removeAllOverlays()}}});import{css as wv}from"@node-projects/base-custom-webcomponent";var Vs,dh=g(()=>{"use strict";ph();Vs=class{shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new Ns(e,t,i)}static style=wv`.svg-primary-rotate{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto;cursor:alias}.svg-primary-rotate-line{stroke:#3899ec;fill:#3899ec;stroke-width:1}.svg-rotate-group-rect{stroke:#3899ec;fill:transparent;stroke-width:2;stroke-dasharray:5 3}`}});var Rs,uh=g(()=>{"use strict";me();se();Rs=class{cursor="zoom-in";_rect;_startPoint;_endPoint;_pointerMovementTolerance=5;_zoomStepSize=.2;activated(e){}pointerEventHandler(e,t,i){let n=e.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._startPoint=n,this._rect||(this._rect=document.createElementNS("http://www.w3.org/2000/svg","rect")),this._rect.setAttribute("class","svg-selector"),this._rect.setAttribute("x",this._startPoint.x*e.zoomFactor),this._rect.setAttribute("y",this._startPoint.y*e.zoomFactor),this._rect.setAttribute("width",0),this._rect.setAttribute("height",0),this._rect.style.strokeWidth=""+1/e.scaleFactor,this._rect.style.strokeDasharray=""+2/e.scaleFactor,e.overlayLayer.addOverlay(this.constructor.name,this._rect,T.Foreground);break;case P.PointerMove:if(this._startPoint){let o=n.x-this._startPoint.x,a=n.y-this._startPoint.y;o>=0?(this._rect.setAttribute("x",this._startPoint.x),this._rect.setAttribute("width",o)):(this._rect.setAttribute("x",n.x),this._rect.setAttribute("width",-1*o)),a>=0?(this._rect.setAttribute("y",this._startPoint.y),this._rect.setAttribute("height",a)):(this._rect.setAttribute("y",n.y),this._rect.setAttribute("height",-1*a))}break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool(),this._endPoint=n;let s=t.button==0;switch(t.button){case 0:case 2:this._zoomOnto(s,this._startPoint,this._endPoint,e);break}e.overlayLayer.removeOverlay(this._rect),this._rect=null,this._startPoint=null;break}}_zoomOnto(e,t,i,n){if(this._isPositionEqual(t,i)){let s=n.zoomFactor,o=e?s+this._zoomStepSize:s-this._zoomStepSize;n.zoomTowardsPoint(i,o)}else n.zoomOntoRectangle(t,i)}_isPositionEqual(e,t){let i=this._pointerMovementTolerance;return Math.abs(e.x-t.x)<=i&&Math.abs(e.y-t.y)<=i}keyboardEventHandler(e,t,i){}dispose(){}}});var zs,mh=g(()=>{"use strict";me();zs=class{cursor="grab";pointerEventHandler(e,t,i){switch(t.type){case P.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this);break;case P.PointerMove:(t.buttons==1||t.buttons==4)&&(e.canvasOffset={x:e.canvasOffset.x+t.movementX/e.zoomFactor,y:e.canvasOffset.y+t.movementY/e.zoomFactor});break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();break}}keyboardEventHandler(e,t,i){}activated(e){}dispose(){}}});var A,Mt=g(()=>{"use strict";(function(r){r.copy="copy",r.paste="paste",r.cut="cut",r.delete="delete",r.undo="undo",r.redo="redo",r.holdUndo="holdUndo",r.holdRedo="holdRedo",r.rotateCounterClockwise="rotateCounterClockwise",r.rotateClockwise="rotateClockwise",r.mirrorHorizontal="mirrorHorizontal",r.mirrorVertical="mirrorVertical",r.selectAll="selectAll",r.moveToFront="moveToFront",r.moveForward="moveForward",r.moveBackward="moveBackward",r.moveToBack="moveToBack",r.arrangeLeft="arrangeLeft",r.arrangeCenter="arrangeCenter",r.arrangeRight="arrangeRight",r.arrangeTop="arrangeTop",r.arrangeMiddle="arrangeMiddle",r.arrangeBottom="arrangeBottom",r.unifyWidth="unifyWidth",r.unifyHeight="unifyHeight",r.distributeHorizontal="distributeHorizontaly",r.distributeVertical="distributeVertical",r.setTool="setTool",r.setStrokeColor="setStrokeColor",r.setFillBrush="setFillBrush",r.setStrokeThickness="setStrokeThickness",r.screenshot="screenshot"})(A||(A={}))});var Fs,fh=g(()=>{"use strict";Mt();he();Fs=class{shouldProvideContextmenu(e,t,i,n){return!0}provideContextMenuItems(e,t,i){return t.readOnly?[{title:"copy",icon:`<img src="${E+"icons/copy.svg"}">`,action:()=>{t.executeCommand({type:A.copy})},shortCut:"Ctrl + C",disabled:i===null}]:[{title:"copy",icon:`<img src="${E+"icons/copy.svg"}">`,action:()=>{t.executeCommand({type:A.copy})},shortCut:"Ctrl + C",disabled:i===null},{title:"cut",icon:`<img src="${E+"icons/cut.svg"}">`,action:()=>{t.executeCommand({type:A.cut})},shortCut:"Ctrl + X",disabled:i===null},{title:"paste",icon:`<img src="${E+"icons/paste.svg"}">`,action:()=>{t.executeCommand({type:A.paste})},shortCut:"Ctrl + V"},{title:"delete",icon:`<img src="${E+"icons/delete.svg"}">`,action:()=>{t.executeCommand({type:A.delete})},shortCut:"Del",disabled:i===null}]}}});function Ev(r){return r.startsWith("border")||r.startsWith("corner")}function Pv(r){return r.startsWith("background")}function Iv(r){return r==="transform"||r.startsWith("transform-")||Cv.has(r)}function Dv(r){return r.startsWith("font")||r.startsWith("text")||Sv.has(r)}function kv(r,e){let t=[],i=new Set;for(let n=0;n<r.length;n++){let s=z.camelToDashCase(r[n]);if(!s||i.has(s)||!e(s))continue;let o=r.getPropertyValue(s)?.trim();o&&(i.add(s),t.push({name:s,value:o}))}return t}function km(r){let e=r.filter(a=>Ev(a.name)),t=r.filter(a=>Pv(a.name)),i=r.filter(a=>Iv(a.name)),n=r.filter(a=>Dv(a.name)),s=[],o=new Set;for(let a of[e,t,i,n])for(let l of a)o.has(l.name)||(o.add(l.name),s.push(l));return{all:s,border:e,background:t,transform:i,text:n}}function T1(r){let e=kv(r,()=>!0);return km(e)}function Am(r){let e=[],t=new Set;for(let[i,n]of r){let s=i?.trim().toLowerCase(),o=n?.trim();!s||!o||t.has(s)||(t.add(s),e.push({name:s,value:o}))}return e.length?km(e):null}function Tm(r,e){return r[e]}var A1,Sv,Cv,gh=g(()=>{"use strict";Ie();A1=["all","border","background","transform","text"],Sv=new Set(["color","caret-color","line-height","letter-spacing","word-spacing","white-space","word-break","overflow-wrap","hyphens","tab-size","direction","writing-mode","unicode-bidi"]),Cv=new Set(["translate","rotate","scale"])});var Bs,yh=g(()=>{"use strict";q();gh();Bs=class{shouldProvideContextmenu(e,t,i,n){return!t.readOnly&&this._getTargetDesignItems(t).length>0}provideContextMenuItems(e,t,i){return[{title:"paste format",children:[this._createPasteFormatItem(t,"all"),{title:"-"},this._createPasteFormatItem(t,"border"),this._createPasteFormatItem(t,"background"),this._createPasteFormatItem(t,"transform"),this._createPasteFormatItem(t,"text")]}]}_createPasteFormatItem(e,t){return{title:t,action:()=>{this._pasteFormat(e,t)}}}_getTargetDesignItems(e){return e.instanceServiceContainer.selectionService.selectedElements?.filter(t=>t?.nodeType===k.Element&&!t.isRootItem)??[]}async _pasteFormat(e,t){let[i]=await e.serviceContainer.copyPasteService.getPasteItems(e.serviceContainer,e.instanceServiceContainer),n=i?.find(h=>h?.nodeType===k.Element&&h.hasStyles&&!h.isRootItem),s=n?Am(n.styles()):null;if(!s)return;let o=Tm(s,t),a=this._getTargetDesignItems(e);if(!o.length||!a.length)return;let l=a[0].openGroup(`paste format: ${t}`),c=!1;for(let h of a)for(let p of o)h.getStyle(p.name)!==p.value&&(h.setStyle(p.name,p.value),c=!0);c?l.commit():l.abort()}}});import{BaseCustomWebComponentConstructorAppend as Av,css as Tv,html as Mv}from"@node-projects/base-custom-webcomponent";var xe,Lt=g(()=>{"use strict";xe=class extends Av{static style=Tv`:host{position:fixed;display:block;z-index:9999;min-width:200px;user-select:none;touch-action:none}.window-frame{background:#2c2c2c;border:1px solid #111;border-radius:4px;box-shadow:0 4px 24px rgba(0,0,0,.7);display:flex;flex-direction:column;overflow:hidden}.title-bar{display:flex;align-items:center;justify-content:space-between;background:#1a1a1a;padding:2px 5px;cursor:move;flex-shrink:0;height:18px;box-sizing:border-box}.title-text{color:#ccc;font-size:11px;font-family:sans-serif;font-weight:500;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.close-btn{width:14px;height:14px;background:0 0;border:none;color:#888;font-size:12px;line-height:1;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;border-radius:2px;flex-shrink:0}.close-btn:hover{background:#c0392b;color:#fff}.window-content{overflow:auto}`;static template=Mv`<div class="window-frame"><div class="title-bar" id="title-bar"><span class="title-text" id="title-text"></span> <button class="close-btn" id="close-btn" title="Close">✕</button></div><div class="window-content" id="window-content"></div></div>`;get windowContentStyle(){return null}_dragging=!1;_dragOffsetX=0;_dragOffsetY=0;_titleBar;_titleText;_closeBtn;_contentArea;constructor(){super(),this._titleBar=this._getDomElement("title-bar"),this._titleText=this._getDomElement("title-text"),this._closeBtn=this._getDomElement("close-btn"),this._contentArea=this._getDomElement("window-content"),this._titleText.textContent=this.windowTitle;let e=this.windowTemplate;if(typeof e=="string"){let i=document.createElement("template");i.innerHTML=e,this._contentArea.appendChild(i.content.cloneNode(!0))}else this._contentArea.appendChild(e.content.cloneNode(!0));let t=this.windowContentStyle;t&&(this.shadowRoot.adoptedStyleSheets=[...this.shadowRoot.adoptedStyleSheets,t]),this._closeBtn.onclick=()=>this._close(),this._titleBar.addEventListener("pointerdown",i=>this._onPointerDown(i))}connectedCallback(){!this.style.left&&!this.style.top&&(this.style.left="100px",this.style.top="100px")}_close(){this.dispatchEvent(new CustomEvent("close",{bubbles:!0,composed:!0})),this.remove()}_onPointerDown(e){if(e.button!==0||e.target===this._closeBtn)return;e.preventDefault(),this._dragging=!0;let t=this.getBoundingClientRect();this._dragOffsetX=e.clientX-t.left,this._dragOffsetY=e.clientY-t.top,this._titleBar.setPointerCapture(e.pointerId),this._titleBar.addEventListener("pointermove",this._onPointerMove),this._titleBar.addEventListener("pointerup",this._onPointerUp)}_onPointerMove=e=>{if(!this._dragging)return;let t=e.clientX-this._dragOffsetX,i=e.clientY-this._dragOffsetY;t=Math.max(0,Math.min(t,window.innerWidth-40)),i=Math.max(0,Math.min(i,window.innerHeight-30)),this.style.left=t+"px",this.style.top=i+"px"};_onPointerUp=e=>{this._dragging=!1,this._titleBar.releasePointerCapture(e.pointerId),this._titleBar.removeEventListener("pointermove",this._onPointerMove),this._titleBar.removeEventListener("pointerup",this._onPointerUp)};static showWindow(e,t){if(t){let i=t.getBoundingClientRect();e.style.left=i.right+8+"px",e.style.top=i.top+"px"}else e.style.left=Math.max(0,(window.innerWidth-260)/2)+"px",e.style.top="120px";document.body.appendChild(e)}}});import{css as Lv}from"@node-projects/base-custom-webcomponent";var yi,Hs=g(()=>{"use strict";Lt();Le();de();yi=class extends xe{_designerCanvas;_previousSelectionRect;_selectionChanged;_relativeButton;_absoluteButton;_applyButton;_inputX;_inputY;_inputR;_inputSpacingX;_inputSpacingY;_originTopLeft;_originTopMid;_originTopRight;_originMidLeft;_originMidMid;_originMidRight;_originBotLeft;_originBotMid;_originBotRight;_transformMode;_transformOrigin;get windowTitle(){return"Transform"}get windowContentStyle(){return Lv`.inputs{float:left;margin-top:5px;align-items:center}.input{display:flex;align-items:center;margin-top:5px}.text{margin-left:5px;font-size:14px}#input-div{display:grid;grid-template-columns:1fr 9fr;grid-template-rows:25px 25px 25px;grid-row-gap:2px;font-size:small;margin:10px;color:#fff}#button-div{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:25px;font-size:small;margin:10px;grid-column-gap:5px}#apply-div{font-size:small;justify-content:center;width:100%;margin-top:10px;margin-bottom:10px;display:flex}#cube{display:grid;grid-template-columns:20px 20px 20px;grid-template-rows:20px 20px 20px;grid-gap:10px;padding:10px;top:-80px;position:relative}#cube-background{width:60px;height:60px;background:gray;margin-top:20px;margin-left:20px}#spacing-div{display:inline-grid;grid-template-rows:20px 20px;grid-template-columns:95px 95px;gap:5px;justify-content:center;align-items:center;width:100%;color:#fff}`}get windowTemplate(){return`
|
|
6
6
|
<div id="input-div">
|
|
7
7
|
<span>X:</span>
|
|
8
8
|
<input type="number" id="transform-input-x">
|
|
@@ -40,7 +40,7 @@ var vl=Object.defineProperty;var zf=Object.getOwnPropertyDescriptor;var Ff=Objec
|
|
|
40
40
|
|
|
41
41
|
<div id="apply-div">
|
|
42
42
|
<button id="transform-button-apply" style="width:100px;">apply</button>
|
|
43
|
-
</div>`}constructor(e){super(),this._designerCanvas=e,this._relativeButton=this._getDomElement("transform-button-relative"),this._absoluteButton=this._getDomElement("transform-button-absolute"),this._applyButton=this._getDomElement("transform-button-apply"),this._inputX=this._getDomElement("transform-input-x"),this._inputY=this._getDomElement("transform-input-y"),this._inputR=this._getDomElement("transform-input-r"),this._inputSpacingX=this._getDomElement("spacing-input-x"),this._inputSpacingY=this._getDomElement("spacing-input-y"),this._originTopLeft=this._getDomElement("origin-top-left"),this._originTopMid=this._getDomElement("origin-top-mid"),this._originTopRight=this._getDomElement("origin-top-right"),this._originMidLeft=this._getDomElement("origin-mid-left"),this._originMidMid=this._getDomElement("origin-mid-mid"),this._originMidRight=this._getDomElement("origin-mid-right"),this._originBotLeft=this._getDomElement("origin-bot-left"),this._originBotMid=this._getDomElement("origin-bot-mid"),this._originBotRight=this._getDomElement("origin-bot-right"),this._relativeButton.onclick=()=>this._changePositionMode("relative"),this._absoluteButton.onclick=()=>this._changePositionMode("absolute"),this._applyButton.onclick=()=>this._applyTransform(),this._transformMode="relative",this._changePositionMode(this._transformMode)}_changePositionMode(e){e=="relative"?(this._relativeButton.style.backgroundColor="#6F8A9D",this._relativeButton.style.color="black",this._absoluteButton.style.backgroundColor="#A4B5C1",this._absoluteButton.style.color="#77716E"):(this._absoluteButton.style.backgroundColor="#6F8A9D",this._absoluteButton.style.color="black",this._relativeButton.style.backgroundColor="#A4B5C1",this._relativeButton.style.color="#77716E"),this._transformMode=e}_applyTransform(){if(this._checkOrigin(),!this._designerCanvas)return;let e=this._designerCanvas.instanceServiceContainer.selectionService.selectedElements;if(e=
|
|
43
|
+
</div>`}constructor(e){super(),this._designerCanvas=e,this._relativeButton=this._getDomElement("transform-button-relative"),this._absoluteButton=this._getDomElement("transform-button-absolute"),this._applyButton=this._getDomElement("transform-button-apply"),this._inputX=this._getDomElement("transform-input-x"),this._inputY=this._getDomElement("transform-input-y"),this._inputR=this._getDomElement("transform-input-r"),this._inputSpacingX=this._getDomElement("spacing-input-x"),this._inputSpacingY=this._getDomElement("spacing-input-y"),this._originTopLeft=this._getDomElement("origin-top-left"),this._originTopMid=this._getDomElement("origin-top-mid"),this._originTopRight=this._getDomElement("origin-top-right"),this._originMidLeft=this._getDomElement("origin-mid-left"),this._originMidMid=this._getDomElement("origin-mid-mid"),this._originMidRight=this._getDomElement("origin-mid-right"),this._originBotLeft=this._getDomElement("origin-bot-left"),this._originBotMid=this._getDomElement("origin-bot-mid"),this._originBotRight=this._getDomElement("origin-bot-right"),this._relativeButton.onclick=()=>this._changePositionMode("relative"),this._absoluteButton.onclick=()=>this._changePositionMode("absolute"),this._applyButton.onclick=()=>this._applyTransform(),this._transformMode="relative",this._changePositionMode(this._transformMode)}_changePositionMode(e){e=="relative"?(this._relativeButton.style.backgroundColor="#6F8A9D",this._relativeButton.style.color="black",this._absoluteButton.style.backgroundColor="#A4B5C1",this._absoluteButton.style.color="#77716E"):(this._absoluteButton.style.backgroundColor="#6F8A9D",this._absoluteButton.style.color="black",this._relativeButton.style.backgroundColor="#A4B5C1",this._relativeButton.style.color="#77716E"),this._transformMode=e}_applyTransform(){if(this._checkOrigin(),!this._designerCanvas)return;let e=this._designerCanvas.instanceServiceContainer.selectionService.selectedElements;if(e=ue(e),this._selectionChanged=!1,this._designerCanvas.instanceServiceContainer.selectionService.onSelectionChanged.once(()=>{this._selectionChanged=!0,this._previousSelectionRect=null}),e.length!=0){let t={x:isNaN(this._inputX.valueAsNumber)?null:this._inputX.valueAsNumber,y:isNaN(this._inputY.valueAsNumber)?null:this._inputY.valueAsNumber},i=this._inputR.valueAsNumber?this._inputR.valueAsNumber:0,n=e[0].openGroup("Transform selection");(!this._previousSelectionRect||this._selectionChanged)&&(this._previousSelectionRect=oi(e,this._designerCanvas));let s=this._calculateTransformOriginPosition(this._previousSelectionRect);for(let o of e){let a={x:parseFloat(o.getStyle("left")),y:parseFloat(o.getStyle("top")),width:parseFloat(o.getStyle("width")),height:parseFloat(o.getStyle("height"))},l=o.getStyle("transform"),c=0;l&&(c=parseFloat(o.getStyle("transform").replaceAll("rotate(","").replaceAll("deg)","")));let h=this._calculateTransform(this._previousSelectionRect,s,a,i,t,this._transformMode);o.setStyle("left",h.x.toString()+"px"),o.setStyle("top",h.y.toString()+"px");let p;for(this._transformMode=="relative"?p=c+i:p=i;p>=360;)p-=360;p!=0?o.setStyle("transform","rotate("+p+"deg)"):o.removeStyle("transform")}this._applySpacing(e),n.commit()}}_calculateTransformOriginPosition(e){switch(this._transformOrigin){case"topLeft":return{x:e.x,y:e.y};case"topMid":return{x:e.x+e.width/2,y:e.y};case"topRight":return{x:e.x+e.width,y:e.y};case"midLeft":return{x:e.x,y:e.y+e.height/2};case"midMid":return{x:e.x+e.width/2,y:e.y+e.height/2};case"midRight":return{x:e.x+e.width,y:e.y+e.height/2};case"botLeft":return{x:e.x,y:e.y+e.height};case"botMid":return{x:e.x+e.width/2,y:e.y+e.height};case"botRight":return{x:e.x+e.width,y:e.y+e.height}}}_checkOrigin(){this._originTopLeft.checked?this._transformOrigin="topLeft":this._originTopMid.checked?this._transformOrigin="topMid":this._originTopRight.checked?this._transformOrigin="topRight":this._originMidLeft.checked?this._transformOrigin="midLeft":this._originMidMid.checked?this._transformOrigin="midMid":this._originMidRight.checked?this._transformOrigin="midRight":this._originBotLeft.checked?this._transformOrigin="botLeft":this._originBotMid.checked?this._transformOrigin="botMid":this._originBotRight.checked&&(this._transformOrigin="botRight")}_calculateTransform(e,t,i,n,s,o){let a;n=n*(Math.PI/180),o=="absolute"&&(s.x&&(s.x=s.x-e.x),s.y&&(s.y=s.y-e.y)),t={x:t.x-i.width/2,y:t.y-i.height/2};let l={x:i.x-t.x,y:i.y-t.y};return a={x:Math.cos(n)*l.x-Math.sin(n)*l.y+t.x+s.x,y:Math.sin(n)*l.x+Math.cos(n)*l.y+t.y+s.y},a}_applySpacing(e){let t=this._inputSpacingX.valueAsNumber,i=this._inputSpacingY.valueAsNumber;if(!isNaN(t)){let n=e.sort((o,a)=>parseFloat(o.getStyle("left"))-parseFloat(a.getStyle("left"))),s=parseFloat(n[0].getStyle("left"));for(let o=0;o<n.length;o++)n[o].setStyle("left",o*t+s+"px")}if(!isNaN(i)){let n=e.sort((o,a)=>parseFloat(o.getStyle("top"))-parseFloat(a.getStyle("top"))),s=parseFloat(n[0].getStyle("top"));for(let o=0;o<n.length;o++)n[o].setStyle("top",o*i+s+"px")}}};customElements.define("node-projects-designer-transform-tool-popup",yi)});import{css as Ov}from"@node-projects/base-custom-webcomponent";function Gs(){return{inset:!1,offsetX:5,offsetY:5,blur:10,spread:0,color:"#000000",opacity:50,enabled:!0}}function Nv(r,e,t){return"#"+[r,e,t].map(i=>i.toString(16).padStart(2,"0")).join("")}function Vv(r){let e=[],t=0,i="";for(let s=0;s<r.length;s++){let o=r[s];if(o==="(")t++;else if(o===")")t--;else if(o===","&&t===0){let a=i.trim();a&&e.push(a),i="";continue}i+=o}let n=i.trim();return n&&e.push(n),e}function Rv(r){if(!r||r==="none")return[Gs()];let e=[];for(let t of Vv(r)){let i=zv(t.trim());i&&e.push(i)}return e.length?e:[Gs()]}function zv(r){let e="#000000",t=100,i=r,n=i.match(/(rgba?\([^)]+\)|hsla?\([^)]+\))/);if(n){let l=n[1];i=i.replace(l,"").trim();let c=l.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*([\d.]+))?\s*\)/);c&&(e=Nv(parseInt(c[1]),parseInt(c[2]),parseInt(c[3])),t=c[4]!=null?Math.round(parseFloat(c[4])*100):100)}else{let l=i.match(/(#[0-9a-fA-F]{3,8})/);l&&(e=l[1].length===4?"#"+l[1].slice(1).split("").map(c=>c+c).join(""):l[1].slice(0,7),i=i.replace(l[1],"").trim())}let s=i.split(/\s+/).filter(Boolean),o=!1,a=[];for(let l of s){if(l==="inset"){o=!0;continue}let c=parseFloat(l);isNaN(c)||a.push(c)}return a.length<2?null:{inset:o,offsetX:a[0]??0,offsetY:a[1]??0,blur:a[2]??0,spread:a[3]??0,color:e,opacity:t,enabled:!0}}function Fv(r){let e=Bv(r.color),t=(r.opacity/100).toFixed(2);return`${r.inset?"inset ":""}${r.offsetX}px ${r.offsetY}px ${r.blur}px ${r.spread}px rgba(${e},${t})`}function Bv(r){let e=parseInt(r.slice(1,3),16),t=parseInt(r.slice(3,5),16),i=parseInt(r.slice(5,7),16);return`${e},${t},${i}`}var Dn,vh=g(()=>{"use strict";Lt();Dn=class extends xe{_designerCanvas;_layers=[Gs()];_selectedIndex=0;_layerList;_removeBtn;_insetCheck;_enabledCheck;_inputX;_inputY;_inputBlur;_inputSpread;_inputColor;_inputOpacity;_opacityVal;_previewBox;_cssOutput;_loadBtn;_copyBtn;_applyBtn;get windowTitle(){return"Box Shadow Editor"}get windowContentStyle(){return Ov`*{box-sizing:border-box}.bse-root{display:flex;flex-direction:column;width:380px;color:#ddd;font-family:sans-serif;font-size:12px;padding:8px;gap:8px;background:#2c2c2c}.preview-area{display:flex;align-items:center;justify-content:center;height:110px;background:repeating-conic-gradient(#444 0 25%,#333 0 50%) 0 0/16px 16px;border-radius:4px;border:1px solid #111}.preview-box{width:70px;height:70px;background:#fff;border-radius:4px}.layers-row{display:flex;gap:6px;align-items:flex-start}.layer-list{list-style:none;margin:0;padding:0;flex:1;min-height:60px;max-height:100px;overflow-y:auto;background:#1e1e1e;border:1px solid #111;border-radius:3px}.layer-list li{padding:4px 8px;cursor:pointer;display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layer-list li.selected{background:#3a3a5a}.layer-list li .swatch{width:12px;height:12px;border-radius:2px;border:1px solid #555;flex-shrink:0;display:inline-block}.layer-list li .disabled-label{opacity:.4}.layer-buttons{display:flex;flex-direction:column;gap:4px}.layer-buttons button{width:24px;height:24px;padding:0;font-size:14px;background:#444;color:#ddd;border:1px solid #222;border-radius:3px;cursor:pointer;line-height:1}.layer-buttons button:hover{background:#666}.controls{display:grid;grid-template-columns:90px 1fr 36px;gap:4px 6px;align-items:center}.controls label{color:#aaa}.controls input[type=range]{width:100%}.controls input[type=number]{width:100%;background:#1e1e1e;border:1px solid #444;color:#ddd;border-radius:3px;padding:2px 4px}.controls input[type=color]{width:100%;height:24px;padding:1px;background:#1e1e1e;border:1px solid #444;border-radius:3px;cursor:pointer}.check-row{display:flex;gap:14px;align-items:center;margin-bottom:2px}.check-row label{display:flex;align-items:center;gap:4px;cursor:pointer;user-select:none}.css-out{background:#1e1e1e;border:1px solid #333;border-radius:3px;color:#7ec8e3;font-family:monospace;font-size:11px;padding:6px;resize:none;width:100%;height:48px}.actions{display:flex;gap:6px;justify-content:flex-end}.actions .load-btn{margin-right:auto}.actions button,.apply-btn{padding:4px 12px;background:#3a3a3a;color:#ddd;border:1px solid #555;border-radius:3px;cursor:pointer;font-size:12px}.actions button:hover,.apply-btn:hover{background:#555}.apply-btn{background:#3a6a9a;border-color:#2a5a8a}.apply-btn:hover{background:#4a7aaa}.val-label{text-align:right;color:#888}`}get windowTemplate(){return`
|
|
44
44
|
<div class="bse-root">
|
|
45
45
|
<div class="preview-area">
|
|
46
46
|
<div class="preview-box" id="bse-preview"></div>
|
|
@@ -95,7 +95,7 @@ var vl=Object.defineProperty;var zf=Object.getOwnPropertyDescriptor;var Ff=Objec
|
|
|
95
95
|
<button id="bse-copy-btn">Copy CSS</button>
|
|
96
96
|
<button class="apply-btn" id="bse-apply-btn">Apply to selection</button>
|
|
97
97
|
</div>
|
|
98
|
-
</div>`}constructor(e){super(),this._designerCanvas=e,this._layerList=this._getDomElement("bse-layer-list"),this._removeBtn=this._getDomElement("bse-remove-btn"),this._insetCheck=this._getDomElement("bse-inset"),this._enabledCheck=this._getDomElement("bse-enabled"),this._inputX=this._getDomElement("bse-x"),this._inputY=this._getDomElement("bse-y"),this._inputBlur=this._getDomElement("bse-blur"),this._inputSpread=this._getDomElement("bse-spread"),this._inputColor=this._getDomElement("bse-color"),this._inputOpacity=this._getDomElement("bse-opacity"),this._opacityVal=this._getDomElement("bse-opacity-val"),this._previewBox=this._getDomElement("bse-preview"),this._cssOutput=this._getDomElement("bse-css-out"),this._loadBtn=this._getDomElement("bse-load-btn"),this._copyBtn=this._getDomElement("bse-copy-btn"),this._applyBtn=this._getDomElement("bse-apply-btn"),this._getDomElement("bse-add-btn").onclick=()=>this._addLayer(),this._getDomElement("bse-dup-btn").onclick=()=>this._duplicateLayer(),this._getDomElement("bse-up-btn").onclick=()=>this._moveLayer(-1),this._getDomElement("bse-down-btn").onclick=()=>this._moveLayer(1),this._removeBtn.onclick=()=>this._removeLayer(),this._insetCheck.onchange=()=>{this._currentLayer().inset=this._insetCheck.checked,this._refresh()},this._enabledCheck.onchange=()=>{this._currentLayer().enabled=this._enabledCheck.checked,this._refresh()};for(let[t,i,n]of[[this._inputX,"offsetX","bse-x-val"],[this._inputY,"offsetY","bse-y-val"],[this._inputBlur,"blur","bse-blur-val"],[this._inputSpread,"spread","bse-spread-val"]])t.oninput=()=>{this._currentLayer()[i]=Number(t.value),this._getDomElement(n).textContent=t.value+"px",this._refresh()};this._inputColor.oninput=()=>{this._currentLayer().color=this._inputColor.value,this._refresh()},this._inputOpacity.oninput=()=>{this._currentLayer().opacity=Number(this._inputOpacity.value),this._opacityVal.textContent=this._inputOpacity.value+"%",this._refresh()},this._copyBtn.onclick=()=>{navigator.clipboard?.writeText(this._cssOutput.value).catch(()=>{})},this._applyBtn.onclick=()=>this._applyToSelection(),this._loadBtn.onclick=()=>{this._loadFromPrimarySelection(),this._renderList(),this._loadControls(),this._refresh()},this._loadFromPrimarySelection(),this._renderList(),this._loadControls(),this._refresh()}_loadFromPrimarySelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.primarySelection;if(!e)return;let t=e.getStyle("box-shadow");t&&(this._layers=
|
|
98
|
+
</div>`}constructor(e){super(),this._designerCanvas=e,this._layerList=this._getDomElement("bse-layer-list"),this._removeBtn=this._getDomElement("bse-remove-btn"),this._insetCheck=this._getDomElement("bse-inset"),this._enabledCheck=this._getDomElement("bse-enabled"),this._inputX=this._getDomElement("bse-x"),this._inputY=this._getDomElement("bse-y"),this._inputBlur=this._getDomElement("bse-blur"),this._inputSpread=this._getDomElement("bse-spread"),this._inputColor=this._getDomElement("bse-color"),this._inputOpacity=this._getDomElement("bse-opacity"),this._opacityVal=this._getDomElement("bse-opacity-val"),this._previewBox=this._getDomElement("bse-preview"),this._cssOutput=this._getDomElement("bse-css-out"),this._loadBtn=this._getDomElement("bse-load-btn"),this._copyBtn=this._getDomElement("bse-copy-btn"),this._applyBtn=this._getDomElement("bse-apply-btn"),this._getDomElement("bse-add-btn").onclick=()=>this._addLayer(),this._getDomElement("bse-dup-btn").onclick=()=>this._duplicateLayer(),this._getDomElement("bse-up-btn").onclick=()=>this._moveLayer(-1),this._getDomElement("bse-down-btn").onclick=()=>this._moveLayer(1),this._removeBtn.onclick=()=>this._removeLayer(),this._insetCheck.onchange=()=>{this._currentLayer().inset=this._insetCheck.checked,this._refresh()},this._enabledCheck.onchange=()=>{this._currentLayer().enabled=this._enabledCheck.checked,this._refresh()};for(let[t,i,n]of[[this._inputX,"offsetX","bse-x-val"],[this._inputY,"offsetY","bse-y-val"],[this._inputBlur,"blur","bse-blur-val"],[this._inputSpread,"spread","bse-spread-val"]])t.oninput=()=>{this._currentLayer()[i]=Number(t.value),this._getDomElement(n).textContent=t.value+"px",this._refresh()};this._inputColor.oninput=()=>{this._currentLayer().color=this._inputColor.value,this._refresh()},this._inputOpacity.oninput=()=>{this._currentLayer().opacity=Number(this._inputOpacity.value),this._opacityVal.textContent=this._inputOpacity.value+"%",this._refresh()},this._copyBtn.onclick=()=>{navigator.clipboard?.writeText(this._cssOutput.value).catch(()=>{})},this._applyBtn.onclick=()=>this._applyToSelection(),this._loadBtn.onclick=()=>{this._loadFromPrimarySelection(),this._renderList(),this._loadControls(),this._refresh()},this._loadFromPrimarySelection(),this._renderList(),this._loadControls(),this._refresh()}_loadFromPrimarySelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.primarySelection;if(!e)return;let t=e.getStyle("box-shadow");t&&(this._layers=Rv(t),this._selectedIndex=0)}_currentLayer(){return this._layers[this._selectedIndex]}_addLayer(){this._layers.push(Gs()),this._selectedIndex=this._layers.length-1,this._renderList(),this._loadControls(),this._refresh()}_duplicateLayer(){let e={...this._currentLayer()};this._layers.splice(this._selectedIndex+1,0,e),this._selectedIndex=this._selectedIndex+1,this._renderList(),this._loadControls(),this._refresh()}_removeLayer(){this._layers.length<=1||(this._layers.splice(this._selectedIndex,1),this._selectedIndex=Math.min(this._selectedIndex,this._layers.length-1),this._renderList(),this._loadControls(),this._refresh())}_moveLayer(e){let t=this._selectedIndex,i=t+e;i<0||i>=this._layers.length||([this._layers[t],this._layers[i]]=[this._layers[i],this._layers[t]],this._selectedIndex=i,this._renderList(),this._refresh())}_renderList(){this._layerList.innerHTML="",this._layers.forEach((e,t)=>{let i=document.createElement("li");t===this._selectedIndex&&i.classList.add("selected");let n=document.createElement("span");n.className="swatch",n.style.background=e.color,i.appendChild(n);let s=document.createElement("span");s.textContent=`${e.inset?"inset ":""}${e.offsetX}px ${e.offsetY}px ${e.blur}px ${e.spread}px`,e.enabled||s.classList.add("disabled-label"),i.appendChild(s),i.onclick=()=>{this._selectedIndex=t,this._renderList(),this._loadControls()},this._layerList.appendChild(i)})}_loadControls(){let e=this._currentLayer();this._insetCheck.checked=e.inset,this._enabledCheck.checked=e.enabled,this._inputX.value=String(e.offsetX),this._getDomElement("bse-x-val").textContent=e.offsetX+"px",this._inputY.value=String(e.offsetY),this._getDomElement("bse-y-val").textContent=e.offsetY+"px",this._inputBlur.value=String(e.blur),this._getDomElement("bse-blur-val").textContent=e.blur+"px",this._inputSpread.value=String(e.spread),this._getDomElement("bse-spread-val").textContent=e.spread+"px",this._inputColor.value=e.color,this._inputOpacity.value=String(e.opacity),this._opacityVal.textContent=e.opacity+"%"}_buildCss(){return this._layers.filter(e=>e.enabled).map(Fv).join(", ")||"none"}_refresh(){let e=this._buildCss();this._previewBox.style.boxShadow=e,this._cssOutput.value=`box-shadow: ${e};`,this._renderList()}_applyToSelection(){if(!this._designerCanvas)return;let e=this._designerCanvas.instanceServiceContainer.selectionService.selectedElements;if(!e?.length)return;let t=this._buildCss(),i=e[0].openGroup("Apply box-shadow");for(let n of e)n.setStyle("box-shadow",t);i.commit()}};customElements.define("node-projects-designer-box-shadow-editor",Dn)});import{css as Hv}from"@node-projects/base-custom-webcomponent";function Ws(){return{offsetX:2,offsetY:2,blur:4,color:"#000000",opacity:50,enabled:!0}}function Gv(r,e,t){return"#"+[r,e,t].map(i=>i.toString(16).padStart(2,"0")).join("")}function Wv(r){let e=parseInt(r.slice(1,3),16),t=parseInt(r.slice(3,5),16),i=parseInt(r.slice(5,7),16);return`${e},${t},${i}`}function jv(r){let e=[],t=0,i="";for(let s of r){if(s==="(")t++;else if(s===")")t--;else if(s===","&&t===0){let o=i.trim();o&&e.push(o),i="";continue}i+=s}let n=i.trim();return n&&e.push(n),e}function Yv(r){let e=(r.opacity/100).toFixed(2);return`${r.offsetX}px ${r.offsetY}px ${r.blur}px rgba(${Wv(r.color)},${e})`}function Uv(r){if(!r||r==="none")return[Ws()];let e=[];for(let t of jv(r)){let i=Xv(t.trim());i&&e.push(i)}return e.length?e:[Ws()]}function Xv(r){let e="#000000",t=100,i=r,n=i.match(/(rgba?\([^)]+\)|hsla?\([^)]+\))/);if(n){let o=n[1];i=i.replace(o,"").trim();let a=o.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*([\d.]+))?\s*\)/);a&&(e=Gv(parseInt(a[1]),parseInt(a[2]),parseInt(a[3])),t=a[4]!=null?Math.round(parseFloat(a[4])*100):100)}else{let o=i.match(/(#[0-9a-fA-F]{3,8})/);o&&(e=o[1].length===4?"#"+o[1].slice(1).split("").map(a=>a+a).join(""):o[1].slice(0,7),i=i.replace(o[1],"").trim())}let s=i.split(/\s+/).filter(Boolean).map(o=>parseFloat(o)).filter(o=>!isNaN(o));return s.length<2?null:{offsetX:s[0]??0,offsetY:s[1]??0,blur:s[2]??0,color:e,opacity:t,enabled:!0}}var kn,_h=g(()=>{"use strict";Lt();kn=class extends xe{_designerCanvas;_layers=[Ws()];_selectedIndex=0;_layerList;_removeBtn;_enabledCheck;_inputX;_inputY;_inputBlur;_inputColor;_inputOpacity;_opacityVal;_previewText;_cssOutput;_loadBtn;_copyBtn;_applyBtn;get windowTitle(){return"Text Shadow Editor"}get windowContentStyle(){return Hv`*{box-sizing:border-box}.tse-root{display:flex;flex-direction:column;width:360px;color:#ddd;font-family:sans-serif;font-size:12px;gap:6px;padding:8px;background:#2a2a2a}.preview-area{background:#1a1a1a;border:1px solid #444;border-radius:4px;height:60px;display:flex;align-items:center;justify-content:center}.preview-text{font-size:28px;font-weight:700;color:#fff;user-select:none}.layers-row{display:flex;gap:4px}.layer-list{flex:1;list-style:none;margin:0;padding:0;border:1px solid #444;border-radius:3px;max-height:80px;overflow-y:auto;background:#1e1e1e}.layer-list li{display:flex;align-items:center;gap:5px;padding:2px 5px;cursor:pointer;font-size:11px}.layer-list li:hover{background:#333}.layer-list li.selected{background:#2a4a7a}.swatch{width:12px;height:12px;border-radius:2px;border:1px solid #555;flex-shrink:0}.disabled-label{opacity:.4}.layer-buttons{display:flex;flex-direction:column;gap:2px}.layer-buttons button{width:22px;height:22px;background:#3a3a3a;color:#ddd;border:1px solid #555;border-radius:3px;cursor:pointer;font-size:13px;padding:0}.layer-buttons button:hover{background:#555}.controls{display:grid;grid-template-columns:60px 1fr 38px;gap:3px 6px;align-items:center}.controls label{color:#aaa}.controls input[type=range]{width:100%}.controls input[type=color]{width:100%;height:22px;padding:1px;border:1px solid #555;border-radius:3px;background:#1e1e1e;cursor:pointer}.check-row{display:flex;gap:12px;align-items:center}.check-row label{display:flex;align-items:center;gap:4px;cursor:pointer;user-select:none}.css-out{background:#1e1e1e;border:1px solid #333;border-radius:3px;color:#7ec8e3;font-family:monospace;font-size:11px;padding:6px;resize:none;width:100%;height:40px}.actions{display:flex;gap:6px;justify-content:flex-end}.actions .load-btn{margin-right:auto}.actions button,.apply-btn{padding:4px 12px;background:#3a3a3a;color:#ddd;border:1px solid #555;border-radius:3px;cursor:pointer;font-size:12px}.actions button:hover,.apply-btn:hover{background:#555}.apply-btn{background:#3a6a9a;border-color:#2a5a8a}.apply-btn:hover{background:#4a7aaa}.val-label{text-align:right;color:#888}`}get windowTemplate(){return`
|
|
99
99
|
<div class="tse-root">
|
|
100
100
|
<div class="preview-area">
|
|
101
101
|
<div class="preview-text" id="tse-preview">Sample Text</div>
|
|
@@ -145,7 +145,7 @@ var vl=Object.defineProperty;var zf=Object.getOwnPropertyDescriptor;var Ff=Objec
|
|
|
145
145
|
<button id="tse-copy-btn">Copy CSS</button>
|
|
146
146
|
<button class="apply-btn" id="tse-apply-btn">Apply to selection</button>
|
|
147
147
|
</div>
|
|
148
|
-
</div>`}constructor(e){super(),this._designerCanvas=e,this._layerList=this._getDomElement("tse-layer-list"),this._removeBtn=this._getDomElement("tse-remove-btn"),this._enabledCheck=this._getDomElement("tse-enabled"),this._inputX=this._getDomElement("tse-x"),this._inputY=this._getDomElement("tse-y"),this._inputBlur=this._getDomElement("tse-blur"),this._inputColor=this._getDomElement("tse-color"),this._inputOpacity=this._getDomElement("tse-opacity"),this._opacityVal=this._getDomElement("tse-opacity-val"),this._previewText=this._getDomElement("tse-preview"),this._cssOutput=this._getDomElement("tse-css-out"),this._loadBtn=this._getDomElement("tse-load-btn"),this._copyBtn=this._getDomElement("tse-copy-btn"),this._applyBtn=this._getDomElement("tse-apply-btn"),this._getDomElement("tse-add-btn").onclick=()=>this._addLayer(),this._getDomElement("tse-dup-btn").onclick=()=>this._duplicateLayer(),this._getDomElement("tse-up-btn").onclick=()=>this._moveLayer(-1),this._getDomElement("tse-down-btn").onclick=()=>this._moveLayer(1),this._removeBtn.onclick=()=>this._removeLayer(),this._enabledCheck.onchange=()=>{this._currentLayer().enabled=this._enabledCheck.checked,this._refresh()};for(let[t,i,n]of[[this._inputX,"offsetX","tse-x-val"],[this._inputY,"offsetY","tse-y-val"],[this._inputBlur,"blur","tse-blur-val"]])t.oninput=()=>{this._currentLayer()[i]=Number(t.value),this._getDomElement(n).textContent=t.value+"px",this._refresh()};this._inputColor.oninput=()=>{this._currentLayer().color=this._inputColor.value,this._refresh()},this._inputOpacity.oninput=()=>{this._currentLayer().opacity=Number(this._inputOpacity.value),this._opacityVal.textContent=this._inputOpacity.value+"%",this._refresh()},this._copyBtn.onclick=()=>{navigator.clipboard?.writeText(this._cssOutput.value).catch(()=>{})},this._applyBtn.onclick=()=>this._applyToSelection(),this._loadBtn.onclick=()=>{this._loadFromPrimarySelection(),this._renderList(),this._loadControls(),this._refresh()},this._loadFromPrimarySelection(),this._renderList(),this._loadControls(),this._refresh()}_loadFromPrimarySelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.primarySelection;if(!e)return;let t=e.getStyle("text-shadow");t&&(this._layers=Hv(t),this._selectedIndex=0)}_currentLayer(){return this._layers[this._selectedIndex]}_addLayer(){this._layers.push(Fs()),this._selectedIndex=this._layers.length-1,this._renderList(),this._loadControls(),this._refresh()}_duplicateLayer(){this._layers.splice(this._selectedIndex+1,0,{...this._currentLayer()}),this._selectedIndex=this._selectedIndex+1,this._renderList(),this._loadControls(),this._refresh()}_removeLayer(){this._layers.length<=1||(this._layers.splice(this._selectedIndex,1),this._selectedIndex=Math.min(this._selectedIndex,this._layers.length-1),this._renderList(),this._loadControls(),this._refresh())}_moveLayer(e){let t=this._selectedIndex,i=t+e;i<0||i>=this._layers.length||([this._layers[t],this._layers[i]]=[this._layers[i],this._layers[t]],this._selectedIndex=i,this._renderList(),this._refresh())}_renderList(){this._layerList.innerHTML="",this._layers.forEach((e,t)=>{let i=document.createElement("li");t===this._selectedIndex&&i.classList.add("selected");let n=document.createElement("span");n.className="swatch",n.style.background=e.color,i.appendChild(n);let r=document.createElement("span");r.textContent=`${e.offsetX}px ${e.offsetY}px ${e.blur}px`,e.enabled||r.classList.add("disabled-label"),i.appendChild(r),i.onclick=()=>{this._selectedIndex=t,this._renderList(),this._loadControls()},this._layerList.appendChild(i)})}_loadControls(){let e=this._currentLayer();this._enabledCheck.checked=e.enabled,this._inputX.value=String(e.offsetX),this._getDomElement("tse-x-val").textContent=e.offsetX+"px",this._inputY.value=String(e.offsetY),this._getDomElement("tse-y-val").textContent=e.offsetY+"px",this._inputBlur.value=String(e.blur),this._getDomElement("tse-blur-val").textContent=e.blur+"px",this._inputColor.value=e.color,this._inputOpacity.value=String(e.opacity),this._opacityVal.textContent=e.opacity+"%"}_buildCss(){return this._layers.filter(e=>e.enabled).map(Bv).join(", ")||"none"}_refresh(){let e=this._buildCss();this._previewText.style.textShadow=e,this._cssOutput.value=e,this._renderList()}_applyToSelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.selectedElements;if(!e?.length)return;let t=this._buildCss(),i=e[0].openGroup("set text-shadow");for(let n of e)t==="none"?n.removeStyle("text-shadow"):n.setStyle("text-shadow",t);i.commit()}};customElements.define("node-projects-text-shadow-editor-window",An)});import{css as Wv}from"@node-projects/base-custom-webcomponent";function Am(){return{type:"linear",angle:135,radialShape:"ellipse",radialSize:"farthest-corner",posX:50,posY:50,stops:[{color:"#667eea",opacity:100,position:0},{color:"#764ba2",opacity:100,position:100}],repeating:!1}}function jv(s){let e=parseInt(s.slice(1,3),16),t=parseInt(s.slice(3,5),16),i=parseInt(s.slice(5,7),16);return`${e},${t},${i}`}function Yv(s,e,t){return"#"+[s,e,t].map(i=>i.toString(16).padStart(2,"0")).join("")}function Uv(s){return`rgba(${jv(s.color)},${(s.opacity/100).toFixed(2)}) ${s.position}%`}function Bs(s){let t=[...s.stops].sort((n,r)=>n.position-r.position).map(Uv).join(", "),i=s.repeating?"repeating-":"";return s.type==="linear"?`${i}linear-gradient(${s.angle}deg, ${t})`:s.type==="radial"?`${i}radial-gradient(${s.radialShape} ${s.radialSize} at ${s.posX}% ${s.posY}%, ${t})`:`${i}conic-gradient(from ${s.angle}deg at ${s.posX}% ${s.posY}%, ${t})`}function Xv(s){let e=["repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient","linear-gradient","radial-gradient","conic-gradient"];for(let t of e){let i=s.indexOf(t+"(");if(i===-1)continue;let n=i+t.length,r=0,o=n;for(let a=n;a<s.length;a++)if(s[a]==="(")r++;else if(s[a]===")"&&(r--,r===0)){o=a;break}return s.slice(i,o+1)}return null}function $v(s){let e=[],t=0,i="";for(let n of s){if(n==="(")t++;else if(n===")")t--;else if(n===","&&t===0){e.push(i),i="";continue}i+=n}return i&&e.push(i),e}function Kv(s){let e="#000000",t=100,i=0,n=s.trim(),r=n.match(/^(rgba?\([^)]+\)|hsla?\([^)]+\))/);if(r){let a=r[1];n=n.slice(a.length).trim();let l=a.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*([\d.]+))?\s*\)/);l&&(e=Yv(parseInt(l[1]),parseInt(l[2]),parseInt(l[3])),t=l[4]!=null?Math.round(parseFloat(l[4])*100):100)}else{let a=n.match(/^(#[0-9a-fA-F]{3,8})/);if(a)e=a[1].length===4?"#"+a[1].slice(1).split("").map(l=>l+l).join(""):a[1].slice(0,7),n=n.slice(a[1].length).trim();else return null}let o=n.match(/([\d.]+)%/);return o&&(i=parseFloat(o[1])),{color:e,opacity:t,position:i}}function Qv(s){let e=s.trim();return e.startsWith("#")||/^rgba?\(/.test(e)||/^hsla?\(/.test(e)}function Zv(s){let e=Am();if(!s)return e;let t=s.trim();e.repeating=t.startsWith("repeating-");let i=e.repeating?t.slice(10):t;if(i.startsWith("linear-gradient"))e.type="linear";else if(i.startsWith("radial-gradient"))e.type="radial";else if(i.startsWith("conic-gradient"))e.type="conic";else return e;let n=i.indexOf("("),r=i.lastIndexOf(")");if(n<0||r<0)return e;let o=i.slice(n+1,r),a=$v(o),l=[],c=0;for(let p=0;p<a.length;p++){if(Qv(a[p])){c=p;break}l.push(a[p]),p===a.length-1&&(c=a.length)}if(e.type==="linear"){let p=l[0]?.trim()??"",d=p.match(/^(-?[\d.]+)deg$/);if(d)e.angle=parseFloat(d[1]);else if(p.startsWith("to ")){let u={"to right":90,"to left":270,"to bottom":180,"to top":0,"to bottom right":135,"to bottom left":225,"to top right":45,"to top left":315};e.angle=u[p]??135}}else if(e.type==="radial"){let d=(l[0]?.trim()??"").match(/^(.*?)\s+at\s+([\d.]+)%\s+([\d.]+)%$/);if(d){let u=d[1].trim();e.posX=parseFloat(d[2]),e.posY=parseFloat(d[3]),e.radialShape=u.includes("circle")?"circle":"ellipse";for(let m of["closest-side","closest-corner","farthest-side","farthest-corner"])if(u.includes(m)){e.radialSize=m;break}}}else if(e.type==="conic"){let p=l[0]?.trim()??"",d=p.match(/from\s+(-?[\d.]+)deg/);d&&(e.angle=parseFloat(d[1]));let u=p.match(/at\s+([\d.]+)%\s+([\d.]+)%/);u&&(e.posX=parseFloat(u[1]),e.posY=parseFloat(u[2]))}let h=[];for(let p=c;p<a.length;p++){let d=Kv(a[p]);d&&h.push(d)}return h.length>=2&&(e.stops=h),e}var Tn,vh=g(()=>{"use strict";At();Tn=class extends be{_designerCanvas;_config=Am();_selectedStopIndex=0;_previewStrip;_stopTrack;_typeSelect;_repeatingCheck;_linearGroup;_radialGroup;_conicGroup;_angleInput;_angleVal;_conicAngleInput;_conicAngleVal;_shapeSelect;_sizeSelect;_posXInput;_posXVal;_posYInput;_posYVal;_conicPosXInput;_conicPosXVal;_conicPosYInput;_conicPosYVal;_stopColorInput;_stopOpacityInput;_stopOpacityVal;_stopPositionInput;_stopPositionVal;_removeStopBtn;_propertySelect;_cssOutput;_loadBtn;_copyBtn;_applyBtn;get windowTitle(){return"Gradient Editor"}get windowContentStyle(){return Wv`*{box-sizing:border-box}.ge-root{display:flex;flex-direction:column;width:380px;color:#ddd;font-family:sans-serif;font-size:12px;gap:6px;padding:8px;background:#2a2a2a}.preview-strip{height:50px;border-radius:4px 4px 0 0;border:1px solid #444;border-bottom:none}.stop-track{height:20px;background:repeating-conic-gradient(#333 0 25%,#444 0 50%) 0 0/10px 10px;border:1px solid #444;border-radius:0 0 4px 4px;position:relative;cursor:crosshair;margin-bottom:2px}.stop-marker{position:absolute;top:2px;width:16px;height:16px;border-radius:50%;border:2px solid #aaa;cursor:pointer;transform:translateX(-50%);transition:border-color .1s}.stop-marker.selected{border-color:#fff;box-shadow:0 0 0 2px #3a7ad5;z-index:1}.row{display:grid;grid-template-columns:70px 1fr 40px;gap:3px 6px;align-items:center}.row.two-col{grid-template-columns:70px 1fr}.row.multi{grid-template-columns:70px 1fr 70px 1fr}.row label{color:#aaa}.row input[type=range]{width:100%}.row input[type=color]{width:100%;height:22px;padding:1px;border:1px solid #555;border-radius:3px;background:#1e1e1e;cursor:pointer}select{background:#2e2e2e;color:#ddd;border:1px solid #555;border-radius:3px;padding:2px 4px;font-size:11px;width:100%}.separator{height:1px;background:#444;margin:2px 0}.stop-header{display:flex;justify-content:space-between;align-items:center;color:#888;font-size:11px}.stop-header .stop-actions{display:flex;gap:3px}.stop-actions button{padding:1px 7px;background:#3a3a3a;color:#ddd;border:1px solid #555;border-radius:3px;cursor:pointer;font-size:12px}.stop-actions button:hover{background:#555}.val-label{text-align:right;color:#888}.css-out{background:#1e1e1e;border:1px solid #333;border-radius:3px;color:#7ec8e3;font-family:monospace;font-size:11px;padding:6px;resize:none;width:100%;height:48px}.actions{display:flex;gap:6px;justify-content:flex-end}.actions .load-btn{margin-right:auto}.actions button,.apply-btn{padding:4px 12px;background:#3a3a3a;color:#ddd;border:1px solid #555;border-radius:3px;cursor:pointer;font-size:12px}.actions button:hover,.apply-btn:hover{background:#555}.apply-btn{background:#3a6a9a;border-color:#2a5a8a}.apply-btn:hover{background:#4a7aaa}`}get windowTemplate(){return`
|
|
148
|
+
</div>`}constructor(e){super(),this._designerCanvas=e,this._layerList=this._getDomElement("tse-layer-list"),this._removeBtn=this._getDomElement("tse-remove-btn"),this._enabledCheck=this._getDomElement("tse-enabled"),this._inputX=this._getDomElement("tse-x"),this._inputY=this._getDomElement("tse-y"),this._inputBlur=this._getDomElement("tse-blur"),this._inputColor=this._getDomElement("tse-color"),this._inputOpacity=this._getDomElement("tse-opacity"),this._opacityVal=this._getDomElement("tse-opacity-val"),this._previewText=this._getDomElement("tse-preview"),this._cssOutput=this._getDomElement("tse-css-out"),this._loadBtn=this._getDomElement("tse-load-btn"),this._copyBtn=this._getDomElement("tse-copy-btn"),this._applyBtn=this._getDomElement("tse-apply-btn"),this._getDomElement("tse-add-btn").onclick=()=>this._addLayer(),this._getDomElement("tse-dup-btn").onclick=()=>this._duplicateLayer(),this._getDomElement("tse-up-btn").onclick=()=>this._moveLayer(-1),this._getDomElement("tse-down-btn").onclick=()=>this._moveLayer(1),this._removeBtn.onclick=()=>this._removeLayer(),this._enabledCheck.onchange=()=>{this._currentLayer().enabled=this._enabledCheck.checked,this._refresh()};for(let[t,i,n]of[[this._inputX,"offsetX","tse-x-val"],[this._inputY,"offsetY","tse-y-val"],[this._inputBlur,"blur","tse-blur-val"]])t.oninput=()=>{this._currentLayer()[i]=Number(t.value),this._getDomElement(n).textContent=t.value+"px",this._refresh()};this._inputColor.oninput=()=>{this._currentLayer().color=this._inputColor.value,this._refresh()},this._inputOpacity.oninput=()=>{this._currentLayer().opacity=Number(this._inputOpacity.value),this._opacityVal.textContent=this._inputOpacity.value+"%",this._refresh()},this._copyBtn.onclick=()=>{navigator.clipboard?.writeText(this._cssOutput.value).catch(()=>{})},this._applyBtn.onclick=()=>this._applyToSelection(),this._loadBtn.onclick=()=>{this._loadFromPrimarySelection(),this._renderList(),this._loadControls(),this._refresh()},this._loadFromPrimarySelection(),this._renderList(),this._loadControls(),this._refresh()}_loadFromPrimarySelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.primarySelection;if(!e)return;let t=e.getStyle("text-shadow");t&&(this._layers=Uv(t),this._selectedIndex=0)}_currentLayer(){return this._layers[this._selectedIndex]}_addLayer(){this._layers.push(Ws()),this._selectedIndex=this._layers.length-1,this._renderList(),this._loadControls(),this._refresh()}_duplicateLayer(){this._layers.splice(this._selectedIndex+1,0,{...this._currentLayer()}),this._selectedIndex=this._selectedIndex+1,this._renderList(),this._loadControls(),this._refresh()}_removeLayer(){this._layers.length<=1||(this._layers.splice(this._selectedIndex,1),this._selectedIndex=Math.min(this._selectedIndex,this._layers.length-1),this._renderList(),this._loadControls(),this._refresh())}_moveLayer(e){let t=this._selectedIndex,i=t+e;i<0||i>=this._layers.length||([this._layers[t],this._layers[i]]=[this._layers[i],this._layers[t]],this._selectedIndex=i,this._renderList(),this._refresh())}_renderList(){this._layerList.innerHTML="",this._layers.forEach((e,t)=>{let i=document.createElement("li");t===this._selectedIndex&&i.classList.add("selected");let n=document.createElement("span");n.className="swatch",n.style.background=e.color,i.appendChild(n);let s=document.createElement("span");s.textContent=`${e.offsetX}px ${e.offsetY}px ${e.blur}px`,e.enabled||s.classList.add("disabled-label"),i.appendChild(s),i.onclick=()=>{this._selectedIndex=t,this._renderList(),this._loadControls()},this._layerList.appendChild(i)})}_loadControls(){let e=this._currentLayer();this._enabledCheck.checked=e.enabled,this._inputX.value=String(e.offsetX),this._getDomElement("tse-x-val").textContent=e.offsetX+"px",this._inputY.value=String(e.offsetY),this._getDomElement("tse-y-val").textContent=e.offsetY+"px",this._inputBlur.value=String(e.blur),this._getDomElement("tse-blur-val").textContent=e.blur+"px",this._inputColor.value=e.color,this._inputOpacity.value=String(e.opacity),this._opacityVal.textContent=e.opacity+"%"}_buildCss(){return this._layers.filter(e=>e.enabled).map(Yv).join(", ")||"none"}_refresh(){let e=this._buildCss();this._previewText.style.textShadow=e,this._cssOutput.value=e,this._renderList()}_applyToSelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.selectedElements;if(!e?.length)return;let t=this._buildCss(),i=e[0].openGroup("set text-shadow");for(let n of e)t==="none"?n.removeStyle("text-shadow"):n.setStyle("text-shadow",t);i.commit()}};customElements.define("node-projects-text-shadow-editor-window",kn)});import{css as $v}from"@node-projects/base-custom-webcomponent";function Mm(){return{type:"linear",angle:135,radialShape:"ellipse",radialSize:"farthest-corner",posX:50,posY:50,stops:[{color:"#667eea",opacity:100,position:0},{color:"#764ba2",opacity:100,position:100}],repeating:!1}}function Kv(r){let e=parseInt(r.slice(1,3),16),t=parseInt(r.slice(3,5),16),i=parseInt(r.slice(5,7),16);return`${e},${t},${i}`}function Qv(r,e,t){return"#"+[r,e,t].map(i=>i.toString(16).padStart(2,"0")).join("")}function Zv(r){return`rgba(${Kv(r.color)},${(r.opacity/100).toFixed(2)}) ${r.position}%`}function js(r){let t=[...r.stops].sort((n,s)=>n.position-s.position).map(Zv).join(", "),i=r.repeating?"repeating-":"";return r.type==="linear"?`${i}linear-gradient(${r.angle}deg, ${t})`:r.type==="radial"?`${i}radial-gradient(${r.radialShape} ${r.radialSize} at ${r.posX}% ${r.posY}%, ${t})`:`${i}conic-gradient(from ${r.angle}deg at ${r.posX}% ${r.posY}%, ${t})`}function Jv(r){let e=["repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient","linear-gradient","radial-gradient","conic-gradient"];for(let t of e){let i=r.indexOf(t+"(");if(i===-1)continue;let n=i+t.length,s=0,o=n;for(let a=n;a<r.length;a++)if(r[a]==="(")s++;else if(r[a]===")"&&(s--,s===0)){o=a;break}return r.slice(i,o+1)}return null}function qv(r){let e=[],t=0,i="";for(let n of r){if(n==="(")t++;else if(n===")")t--;else if(n===","&&t===0){e.push(i),i="";continue}i+=n}return i&&e.push(i),e}function e_(r){let e="#000000",t=100,i=0,n=r.trim(),s=n.match(/^(rgba?\([^)]+\)|hsla?\([^)]+\))/);if(s){let a=s[1];n=n.slice(a.length).trim();let l=a.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*([\d.]+))?\s*\)/);l&&(e=Qv(parseInt(l[1]),parseInt(l[2]),parseInt(l[3])),t=l[4]!=null?Math.round(parseFloat(l[4])*100):100)}else{let a=n.match(/^(#[0-9a-fA-F]{3,8})/);if(a)e=a[1].length===4?"#"+a[1].slice(1).split("").map(l=>l+l).join(""):a[1].slice(0,7),n=n.slice(a[1].length).trim();else return null}let o=n.match(/([\d.]+)%/);return o&&(i=parseFloat(o[1])),{color:e,opacity:t,position:i}}function t_(r){let e=r.trim();return e.startsWith("#")||/^rgba?\(/.test(e)||/^hsla?\(/.test(e)}function i_(r){let e=Mm();if(!r)return e;let t=r.trim();e.repeating=t.startsWith("repeating-");let i=e.repeating?t.slice(10):t;if(i.startsWith("linear-gradient"))e.type="linear";else if(i.startsWith("radial-gradient"))e.type="radial";else if(i.startsWith("conic-gradient"))e.type="conic";else return e;let n=i.indexOf("("),s=i.lastIndexOf(")");if(n<0||s<0)return e;let o=i.slice(n+1,s),a=qv(o),l=[],c=0;for(let p=0;p<a.length;p++){if(t_(a[p])){c=p;break}l.push(a[p]),p===a.length-1&&(c=a.length)}if(e.type==="linear"){let p=l[0]?.trim()??"",d=p.match(/^(-?[\d.]+)deg$/);if(d)e.angle=parseFloat(d[1]);else if(p.startsWith("to ")){let u={"to right":90,"to left":270,"to bottom":180,"to top":0,"to bottom right":135,"to bottom left":225,"to top right":45,"to top left":315};e.angle=u[p]??135}}else if(e.type==="radial"){let d=(l[0]?.trim()??"").match(/^(.*?)\s+at\s+([\d.]+)%\s+([\d.]+)%$/);if(d){let u=d[1].trim();e.posX=parseFloat(d[2]),e.posY=parseFloat(d[3]),e.radialShape=u.includes("circle")?"circle":"ellipse";for(let m of["closest-side","closest-corner","farthest-side","farthest-corner"])if(u.includes(m)){e.radialSize=m;break}}}else if(e.type==="conic"){let p=l[0]?.trim()??"",d=p.match(/from\s+(-?[\d.]+)deg/);d&&(e.angle=parseFloat(d[1]));let u=p.match(/at\s+([\d.]+)%\s+([\d.]+)%/);u&&(e.posX=parseFloat(u[1]),e.posY=parseFloat(u[2]))}let h=[];for(let p=c;p<a.length;p++){let d=e_(a[p]);d&&h.push(d)}return h.length>=2&&(e.stops=h),e}var An,xh=g(()=>{"use strict";Lt();An=class extends xe{_designerCanvas;_config=Mm();_selectedStopIndex=0;_previewStrip;_stopTrack;_typeSelect;_repeatingCheck;_linearGroup;_radialGroup;_conicGroup;_angleInput;_angleVal;_conicAngleInput;_conicAngleVal;_shapeSelect;_sizeSelect;_posXInput;_posXVal;_posYInput;_posYVal;_conicPosXInput;_conicPosXVal;_conicPosYInput;_conicPosYVal;_stopColorInput;_stopOpacityInput;_stopOpacityVal;_stopPositionInput;_stopPositionVal;_removeStopBtn;_propertySelect;_cssOutput;_loadBtn;_copyBtn;_applyBtn;get windowTitle(){return"Gradient Editor"}get windowContentStyle(){return $v`*{box-sizing:border-box}.ge-root{display:flex;flex-direction:column;width:380px;color:#ddd;font-family:sans-serif;font-size:12px;gap:6px;padding:8px;background:#2a2a2a}.preview-strip{height:50px;border-radius:4px 4px 0 0;border:1px solid #444;border-bottom:none}.stop-track{height:20px;background:repeating-conic-gradient(#333 0 25%,#444 0 50%) 0 0/10px 10px;border:1px solid #444;border-radius:0 0 4px 4px;position:relative;cursor:crosshair;margin-bottom:2px}.stop-marker{position:absolute;top:2px;width:16px;height:16px;border-radius:50%;border:2px solid #aaa;cursor:pointer;transform:translateX(-50%);transition:border-color .1s}.stop-marker.selected{border-color:#fff;box-shadow:0 0 0 2px #3a7ad5;z-index:1}.row{display:grid;grid-template-columns:70px 1fr 40px;gap:3px 6px;align-items:center}.row.two-col{grid-template-columns:70px 1fr}.row.multi{grid-template-columns:70px 1fr 70px 1fr}.row label{color:#aaa}.row input[type=range]{width:100%}.row input[type=color]{width:100%;height:22px;padding:1px;border:1px solid #555;border-radius:3px;background:#1e1e1e;cursor:pointer}select{background:#2e2e2e;color:#ddd;border:1px solid #555;border-radius:3px;padding:2px 4px;font-size:11px;width:100%}.separator{height:1px;background:#444;margin:2px 0}.stop-header{display:flex;justify-content:space-between;align-items:center;color:#888;font-size:11px}.stop-header .stop-actions{display:flex;gap:3px}.stop-actions button{padding:1px 7px;background:#3a3a3a;color:#ddd;border:1px solid #555;border-radius:3px;cursor:pointer;font-size:12px}.stop-actions button:hover{background:#555}.val-label{text-align:right;color:#888}.css-out{background:#1e1e1e;border:1px solid #333;border-radius:3px;color:#7ec8e3;font-family:monospace;font-size:11px;padding:6px;resize:none;width:100%;height:48px}.actions{display:flex;gap:6px;justify-content:flex-end}.actions .load-btn{margin-right:auto}.actions button,.apply-btn{padding:4px 12px;background:#3a3a3a;color:#ddd;border:1px solid #555;border-radius:3px;cursor:pointer;font-size:12px}.actions button:hover,.apply-btn:hover{background:#555}.apply-btn{background:#3a6a9a;border-color:#2a5a8a}.apply-btn:hover{background:#4a7aaa}`}get windowTemplate(){return`
|
|
149
149
|
<div class="ge-root">
|
|
150
150
|
<div class="preview-strip" id="ge-preview-strip"></div>
|
|
151
151
|
<div class="stop-track" id="ge-stop-track"></div>
|
|
@@ -263,7 +263,7 @@ var vl=Object.defineProperty;var zf=Object.getOwnPropertyDescriptor;var Ff=Objec
|
|
|
263
263
|
<button id="ge-copy-btn">Copy CSS</button>
|
|
264
264
|
<button class="apply-btn" id="ge-apply-btn">Apply to selection</button>
|
|
265
265
|
</div>
|
|
266
|
-
</div>`}constructor(e){super(),this._designerCanvas=e,this._previewStrip=this._getDomElement("ge-preview-strip"),this._stopTrack=this._getDomElement("ge-stop-track"),this._typeSelect=this._getDomElement("ge-type"),this._repeatingCheck=this._getDomElement("ge-repeating"),this._linearGroup=this._getDomElement("ge-linear-group"),this._radialGroup=this._getDomElement("ge-radial-group"),this._conicGroup=this._getDomElement("ge-conic-group"),this._angleInput=this._getDomElement("ge-angle"),this._angleVal=this._getDomElement("ge-angle-val"),this._conicAngleInput=this._getDomElement("ge-conic-angle"),this._conicAngleVal=this._getDomElement("ge-conic-angle-val"),this._shapeSelect=this._getDomElement("ge-shape"),this._sizeSelect=this._getDomElement("ge-size"),this._posXInput=this._getDomElement("ge-pos-x"),this._posXVal=this._getDomElement("ge-pos-x-val"),this._posYInput=this._getDomElement("ge-pos-y"),this._posYVal=this._getDomElement("ge-pos-y-val"),this._conicPosXInput=this._getDomElement("ge-conic-pos-x"),this._conicPosXVal=this._getDomElement("ge-conic-pos-x-val"),this._conicPosYInput=this._getDomElement("ge-conic-pos-y"),this._conicPosYVal=this._getDomElement("ge-conic-pos-y-val"),this._stopColorInput=this._getDomElement("ge-stop-color"),this._stopOpacityInput=this._getDomElement("ge-stop-opacity"),this._stopOpacityVal=this._getDomElement("ge-stop-opacity-val"),this._stopPositionInput=this._getDomElement("ge-stop-pos"),this._stopPositionVal=this._getDomElement("ge-stop-pos-val"),this._removeStopBtn=this._getDomElement("ge-remove-stop-btn"),this._propertySelect=this._getDomElement("ge-property"),this._cssOutput=this._getDomElement("ge-css-out"),this._loadBtn=this._getDomElement("ge-load-btn"),this._copyBtn=this._getDomElement("ge-copy-btn"),this._applyBtn=this._getDomElement("ge-apply-btn"),this._typeSelect.onchange=()=>{this._config.type=this._typeSelect.value,this._updateTypeVisibility(),this._refresh()},this._repeatingCheck.onchange=()=>{this._config.repeating=this._repeatingCheck.checked,this._refresh()},this._angleInput.oninput=()=>{this._config.angle=Number(this._angleInput.value),this._angleVal.textContent=this._angleInput.value+"\xB0",this._refresh()},this._conicAngleInput.oninput=()=>{this._config.angle=Number(this._conicAngleInput.value),this._conicAngleVal.textContent=this._conicAngleInput.value+"\xB0",this._refresh()},this._shapeSelect.onchange=()=>{this._config.radialShape=this._shapeSelect.value,this._refresh()},this._sizeSelect.onchange=()=>{this._config.radialSize=this._sizeSelect.value,this._refresh()},this._posXInput.oninput=()=>{this._config.posX=Number(this._posXInput.value),this._posXVal.textContent=this._posXInput.value+"%",this._refresh()},this._posYInput.oninput=()=>{this._config.posY=Number(this._posYInput.value),this._posYVal.textContent=this._posYInput.value+"%",this._refresh()},this._conicPosXInput.oninput=()=>{this._config.posX=Number(this._conicPosXInput.value),this._conicPosXVal.textContent=this._conicPosXInput.value+"%",this._refresh()},this._conicPosYInput.oninput=()=>{this._config.posY=Number(this._conicPosYInput.value),this._conicPosYVal.textContent=this._conicPosYInput.value+"%",this._refresh()},this._stopColorInput.oninput=()=>{this._currentStop().color=this._stopColorInput.value,this._refresh()},this._stopOpacityInput.oninput=()=>{this._currentStop().opacity=Number(this._stopOpacityInput.value),this._stopOpacityVal.textContent=this._stopOpacityInput.value+"%",this._refresh()},this._stopPositionInput.oninput=()=>{this._currentStop().position=Number(this._stopPositionInput.value),this._stopPositionVal.textContent=this._stopPositionInput.value+"%",this._refresh()},this._getDomElement("ge-add-stop-btn").onclick=()=>this._addStop(50),this._removeStopBtn.onclick=()=>this._removeStop(),this._stopTrack.addEventListener("click",t=>{let i=this._stopTrack.getBoundingClientRect(),n=Math.round((t.clientX-i.left)/i.width*100);this._addStop(Math.max(0,Math.min(100,n)))}),this._copyBtn.onclick=()=>{navigator.clipboard?.writeText(this._cssOutput.value).catch(()=>{})},this._applyBtn.onclick=()=>this._applyToSelection(),this._loadBtn.onclick=()=>{this._loadFromPrimarySelection(),this._selectedStopIndex=Math.max(0,Math.min(this._selectedStopIndex,this._config.stops.length-1)),this._updateTypeVisibility(),this._syncControls(),this._renderStopTrack(),this._refreshOutput()},this._loadFromPrimarySelection(),this._updateTypeVisibility(),this._syncControls(),this._renderStopTrack(),this._refreshOutput()}_loadFromPrimarySelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.primarySelection;if(e)for(let t of["background-image","background"]){let i=e.getStyle(t);if(i&&i.includes("gradient")){let n=Xv(i);n&&(this._config=Zv(n),t==="background"&&(this._propertySelect.value="background"));break}}}_currentStop(){return this._config.stops[this._selectedStopIndex]}_addStop(e){this._config.stops.push({color:"#ffffff",opacity:100,position:e}),this._selectedStopIndex=this._config.stops.length-1,this._syncControls(),this._renderStopTrack(),this._refreshOutput()}_removeStop(){this._config.stops.length<=2||(this._config.stops.splice(this._selectedStopIndex,1),this._selectedStopIndex=Math.min(this._selectedStopIndex,this._config.stops.length-1),this._syncControls(),this._renderStopTrack(),this._refreshOutput())}_updateTypeVisibility(){this._linearGroup.style.display=this._config.type==="linear"?"":"none",this._radialGroup.style.display=this._config.type==="radial"?"":"none",this._conicGroup.style.display=this._config.type==="conic"?"":"none"}_syncControls(){this._typeSelect.value=this._config.type,this._repeatingCheck.checked=this._config.repeating,this._angleInput.value=String(this._config.angle),this._angleVal.textContent=this._config.angle+"\xB0",this._conicAngleInput.value=String(this._config.angle),this._conicAngleVal.textContent=this._config.angle+"\xB0",this._shapeSelect.value=this._config.radialShape,this._sizeSelect.value=this._config.radialSize,this._posXInput.value=String(this._config.posX),this._posXVal.textContent=this._config.posX+"%",this._posYInput.value=String(this._config.posY),this._posYVal.textContent=this._config.posY+"%",this._conicPosXInput.value=String(this._config.posX),this._conicPosXVal.textContent=this._config.posX+"%",this._conicPosYInput.value=String(this._config.posY),this._conicPosYVal.textContent=this._config.posY+"%";let e=this._currentStop();this._stopColorInput.value=e.color,this._stopOpacityInput.value=String(e.opacity),this._stopOpacityVal.textContent=e.opacity+"%",this._stopPositionInput.value=String(e.position),this._stopPositionVal.textContent=e.position+"%"}_renderStopTrack(){let e=Bs(this._config);this._previewStrip.style.background=e,this._stopTrack.innerHTML="",this._config.stops.forEach((t,i)=>{let n=document.createElement("div");n.className="stop-marker"+(i===this._selectedStopIndex?" selected":""),n.style.left=`${t.position}%`,n.style.background=t.color,n.style.opacity=String(t.opacity/100),n.addEventListener("click",r=>{r.stopPropagation(),this._selectedStopIndex=i,this._syncControls(),this._renderStopTrack()}),n.addEventListener("pointerdown",r=>{r.preventDefault(),r.stopPropagation(),n.setPointerCapture(r.pointerId);let o=this._stopTrack.getBoundingClientRect(),a=c=>{let h=Math.max(0,Math.min(1,(c.clientX-o.left)/o.width)),p=Math.round(h*100);this._config.stops[i].position=p,this._selectedStopIndex=i,n.style.left=p+"%",this._stopTrack.querySelectorAll(".stop-marker").forEach((d,u)=>{d.classList.toggle("selected",u===i)}),this._previewStrip.style.background=Bs(this._config),this._refreshOutput()},l=()=>{n.removeEventListener("pointermove",a),n.removeEventListener("pointerup",l),this._syncControls(),this._renderStopTrack()};n.addEventListener("pointermove",a),n.addEventListener("pointerup",l)}),this._stopTrack.appendChild(n)})}_refreshOutput(){this._cssOutput.value=Bs(this._config)}_refresh(){this._renderStopTrack(),this._refreshOutput()}_applyToSelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.selectedElements;if(!e?.length)return;let t=Bs(this._config),i=this._propertySelect.value,n=e[0].openGroup(`set ${i}`);for(let r of e)r.setStyle(i,t);n.commit()}};customElements.define("node-projects-gradient-editor-window",Tn)});import{css as qv}from"@node-projects/base-custom-webcomponent";function Hs(){return{x:0,y:0,shape:"round"}}function Gs(){return{width:1,style:"solid",color:"#000000",opacity:100}}function Tm(){return{topLeft:{...Hs()},topRight:{...Hs()},bottomRight:{...Hs()},bottomLeft:{...Hs()},uniform:!0,width:1,borderUniform:!0,top:{...Gs()},right:{...Gs()},bottom:{...Gs()},left:{...Gs()}}}function bh(s){let e=parseInt(s.slice(1,3),16),t=parseInt(s.slice(3,5),16),i=parseInt(s.slice(5,7),16);return`${e},${t},${i}`}function Jv(s){return s.x===s.y?`${s.x}%`:`${s.x}% ${s.y}%`}function e_(s){let e=[s.topLeft,s.topRight,s.bottomRight,s.bottomLeft],t=e.map(o=>`${o.x}%`),i=e.map(o=>`${o.y}%`);return e.every(o=>o.x===e[0].x&&o.y===e[0].y)?Jv(e[0]):e.every(o=>o.x===o.y)?t.join(" "):`${t.join(" ")} / ${i.join(" ")}`}function t_(s){let e=[s.topLeft.shape,s.topRight.shape,s.bottomRight.shape,s.bottomLeft.shape];return e.every(n=>n==="round")?null:e[0]===e[1]&&e[1]===e[2]&&e[2]===e[3]?e[0]:e.join(" ")}function i_(s){let e=s.width>0?`${s.width}px`:"0px";if(s.borderUniform){let{style:t,color:i,opacity:n}=s.top,r=`${bh(i)},${(n/100).toFixed(2)}`;return{width:e,style:t,color:`rgba(${r})`}}else{let t=[s.top,s.right,s.bottom,s.left],i=t.map(a=>a.style),n=t.map(a=>`rgba(${`${bh(a.color)},${(a.opacity/100).toFixed(2)}`})`),r=i[0]===i[1]&&i[1]===i[2]&&i[2]===i[3]?i[0]:i.join(" "),o=n[0]===n[1]&&n[1]===n[2]&&n[2]===n[3]?n[0]:n.join(" ");return{width:e,style:r,color:o}}}function n_(s){let e=Tm();if(!s||(s=s.trim(),!s))return e;let t=s.split("/").map(c=>c.trim()),i=t[0]??"",n=t[1]??i,r=c=>c.split(/\s+/).map(h=>{let p=parseFloat(h);return isNaN(p)?0:p}),o=r(i),a=r(n),l=(c,h)=>c.length===1?c[0]:c.length===2?c[h===1||h===2?1:0]:c.length===3?c[h===3?1:h===2?2:0]:c[h]??0;return e.topLeft.x=l(o,0),e.topRight.x=l(o,1),e.bottomRight.x=l(o,2),e.bottomLeft.x=l(o,3),e.topLeft.y=l(a,0),e.topRight.y=l(a,1),e.bottomRight.y=l(a,2),e.bottomLeft.y=l(a,3),e}function _h(s){let e=[],t=0,i="";for(let r of s.trim()){if(r==="("?t++:r===")"&&t--,/\s/.test(r)&&t===0){let o=i.trim();o&&e.push(o),i="";continue}i+=r}let n=i.trim();return n&&e.push(n),e}function xh(s){return s.length===1?[s[0],s[0],s[0],s[0]]:s.length===2?[s[0],s[1],s[0],s[1]]:s.length===3?[s[0],s[1],s[2],s[1]]:[s[0],s[1],s[2],s[3]]}var Mn,wh=g(()=>{"use strict";At();Mn=class extends be{_designerCanvas;_config=Tm();_previewBox;_uniformCheck;_uniformXInput;_uniformYInput;_uniformShapeSelect;_uniformXVal;_uniformYVal;_tlXInput;_tlYInput;_tlShapeSelect;_tlXVal;_tlYVal;_trXInput;_trYInput;_trShapeSelect;_trXVal;_trYVal;_brXInput;_brYInput;_brShapeSelect;_brXVal;_brYVal;_blXInput;_blYInput;_blShapeSelect;_blXVal;_blYVal;_cornersUniformDiv;_cornersPersideDiv;_widthInput;_borderUniformCheck;_widthVal;_styleSelect;_colorInput;_opacityInput;_opacityVal;_topStyleSelect;_topWidthInput;_topWidthVal;_topColorInput;_topOpacityInput;_topOpacityVal;_rightStyleSelect;_rightWidthInput;_rightWidthVal;_rightColorInput;_rightOpacityInput;_rightOpacityVal;_bottomStyleSelect;_bottomWidthInput;_bottomWidthVal;_bottomColorInput;_bottomOpacityInput;_bottomOpacityVal;_leftStyleSelect;_leftWidthInput;_leftWidthVal;_leftColorInput;_leftOpacityInput;_leftOpacityVal;_borderUniformDiv;_borderPersideDiv;_cssOutput;_loadBtn;_copyBtn;_applyBtn;get windowTitle(){return"Border Radius Editor"}get windowContentStyle(){return qv`*{box-sizing:border-box}.bre-root{display:flex;flex-direction:column;width:860px;max-width:calc(100vw - 48px);color:#ddd;font-family:sans-serif;font-size:12px;gap:4px;padding:6px;background:#2a2a2a}.editors-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:start}.section-column{display:flex;flex-direction:column;gap:4px}.preview-area{background:#1a1a1a;border:1px solid #444;border-radius:3px;height:70px;display:flex;align-items:center;justify-content:center;margin-bottom:2px}.preview-box{width:60px;height:60px;background:linear-gradient(135deg,#667eea 0,#764ba2 100%);border-radius:0}.uniform-row{display:flex;align-items:center;gap:6px;font-size:11px}.uniform-row label{display:flex;align-items:center;gap:3px;cursor:pointer;user-select:none;color:#aaa}.uniform-row input[type=checkbox]{cursor:pointer;width:14px;height:14px}.section-header{color:#999;font-size:10px;font-weight:700;margin-top:3px;margin-bottom:2px;text-transform:uppercase}.corner-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px}.separate-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.corner-section{background:#1e1e1e;border:1px solid #444;border-radius:2px;padding:4px}.corner-header{color:#888;font-size:10px;margin-bottom:3px;font-weight:700}.corner-row{display:grid;grid-template-columns:35px 1fr 24px;gap:2px 3px;align-items:center;margin-bottom:2px}.corner-row:last-child{margin-bottom:0}.corner-row label{color:#888;font-size:10px}.corner-row input[type=range]{width:100%;height:16px}.corner-row input[type=color]{width:100%;height:18px;cursor:pointer}.corner-row .val-label{text-align:right;color:#777;font-size:9px}.bre-root select{background:#2e2e2e;color:#ddd;border:1px solid #555;border-radius:2px;padding:2px 3px;font-size:10px;height:18px}.corner-row select{grid-column:1/-1}.side-pair{display:grid;grid-template-columns:1fr 1fr;gap:4px}@media (max-width:900px){.bre-root{width:420px}.editors-row{grid-template-columns:1fr}}.separator{height:1px;background:#444;margin:2px 0}.css-out{background:#1e1e1e;border:1px solid #333;border-radius:3px;color:#7ec8e3;font-family:monospace;font-size:10px;padding:4px;resize:none;width:100%;height:50px}.actions{display:flex;gap:4px;justify-content:flex-end}.actions .load-btn{margin-right:auto}.actions button,.apply-btn{padding:3px 10px;background:#3a3a3a;color:#ddd;border:1px solid #555;border-radius:2px;cursor:pointer;font-size:11px}.actions button:hover,.apply-btn:hover{background:#555}.apply-btn{background:#3a6a9a;border-color:#2a5a8a}.apply-btn:hover{background:#4a7aaa}`}get windowTemplate(){return`
|
|
266
|
+
</div>`}constructor(e){super(),this._designerCanvas=e,this._previewStrip=this._getDomElement("ge-preview-strip"),this._stopTrack=this._getDomElement("ge-stop-track"),this._typeSelect=this._getDomElement("ge-type"),this._repeatingCheck=this._getDomElement("ge-repeating"),this._linearGroup=this._getDomElement("ge-linear-group"),this._radialGroup=this._getDomElement("ge-radial-group"),this._conicGroup=this._getDomElement("ge-conic-group"),this._angleInput=this._getDomElement("ge-angle"),this._angleVal=this._getDomElement("ge-angle-val"),this._conicAngleInput=this._getDomElement("ge-conic-angle"),this._conicAngleVal=this._getDomElement("ge-conic-angle-val"),this._shapeSelect=this._getDomElement("ge-shape"),this._sizeSelect=this._getDomElement("ge-size"),this._posXInput=this._getDomElement("ge-pos-x"),this._posXVal=this._getDomElement("ge-pos-x-val"),this._posYInput=this._getDomElement("ge-pos-y"),this._posYVal=this._getDomElement("ge-pos-y-val"),this._conicPosXInput=this._getDomElement("ge-conic-pos-x"),this._conicPosXVal=this._getDomElement("ge-conic-pos-x-val"),this._conicPosYInput=this._getDomElement("ge-conic-pos-y"),this._conicPosYVal=this._getDomElement("ge-conic-pos-y-val"),this._stopColorInput=this._getDomElement("ge-stop-color"),this._stopOpacityInput=this._getDomElement("ge-stop-opacity"),this._stopOpacityVal=this._getDomElement("ge-stop-opacity-val"),this._stopPositionInput=this._getDomElement("ge-stop-pos"),this._stopPositionVal=this._getDomElement("ge-stop-pos-val"),this._removeStopBtn=this._getDomElement("ge-remove-stop-btn"),this._propertySelect=this._getDomElement("ge-property"),this._cssOutput=this._getDomElement("ge-css-out"),this._loadBtn=this._getDomElement("ge-load-btn"),this._copyBtn=this._getDomElement("ge-copy-btn"),this._applyBtn=this._getDomElement("ge-apply-btn"),this._typeSelect.onchange=()=>{this._config.type=this._typeSelect.value,this._updateTypeVisibility(),this._refresh()},this._repeatingCheck.onchange=()=>{this._config.repeating=this._repeatingCheck.checked,this._refresh()},this._angleInput.oninput=()=>{this._config.angle=Number(this._angleInput.value),this._angleVal.textContent=this._angleInput.value+"\xB0",this._refresh()},this._conicAngleInput.oninput=()=>{this._config.angle=Number(this._conicAngleInput.value),this._conicAngleVal.textContent=this._conicAngleInput.value+"\xB0",this._refresh()},this._shapeSelect.onchange=()=>{this._config.radialShape=this._shapeSelect.value,this._refresh()},this._sizeSelect.onchange=()=>{this._config.radialSize=this._sizeSelect.value,this._refresh()},this._posXInput.oninput=()=>{this._config.posX=Number(this._posXInput.value),this._posXVal.textContent=this._posXInput.value+"%",this._refresh()},this._posYInput.oninput=()=>{this._config.posY=Number(this._posYInput.value),this._posYVal.textContent=this._posYInput.value+"%",this._refresh()},this._conicPosXInput.oninput=()=>{this._config.posX=Number(this._conicPosXInput.value),this._conicPosXVal.textContent=this._conicPosXInput.value+"%",this._refresh()},this._conicPosYInput.oninput=()=>{this._config.posY=Number(this._conicPosYInput.value),this._conicPosYVal.textContent=this._conicPosYInput.value+"%",this._refresh()},this._stopColorInput.oninput=()=>{this._currentStop().color=this._stopColorInput.value,this._refresh()},this._stopOpacityInput.oninput=()=>{this._currentStop().opacity=Number(this._stopOpacityInput.value),this._stopOpacityVal.textContent=this._stopOpacityInput.value+"%",this._refresh()},this._stopPositionInput.oninput=()=>{this._currentStop().position=Number(this._stopPositionInput.value),this._stopPositionVal.textContent=this._stopPositionInput.value+"%",this._refresh()},this._getDomElement("ge-add-stop-btn").onclick=()=>this._addStop(50),this._removeStopBtn.onclick=()=>this._removeStop(),this._stopTrack.addEventListener("click",t=>{let i=this._stopTrack.getBoundingClientRect(),n=Math.round((t.clientX-i.left)/i.width*100);this._addStop(Math.max(0,Math.min(100,n)))}),this._copyBtn.onclick=()=>{navigator.clipboard?.writeText(this._cssOutput.value).catch(()=>{})},this._applyBtn.onclick=()=>this._applyToSelection(),this._loadBtn.onclick=()=>{this._loadFromPrimarySelection(),this._selectedStopIndex=Math.max(0,Math.min(this._selectedStopIndex,this._config.stops.length-1)),this._updateTypeVisibility(),this._syncControls(),this._renderStopTrack(),this._refreshOutput()},this._loadFromPrimarySelection(),this._updateTypeVisibility(),this._syncControls(),this._renderStopTrack(),this._refreshOutput()}_loadFromPrimarySelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.primarySelection;if(e)for(let t of["background-image","background"]){let i=e.getStyle(t);if(i&&i.includes("gradient")){let n=Jv(i);n&&(this._config=i_(n),t==="background"&&(this._propertySelect.value="background"));break}}}_currentStop(){return this._config.stops[this._selectedStopIndex]}_addStop(e){this._config.stops.push({color:"#ffffff",opacity:100,position:e}),this._selectedStopIndex=this._config.stops.length-1,this._syncControls(),this._renderStopTrack(),this._refreshOutput()}_removeStop(){this._config.stops.length<=2||(this._config.stops.splice(this._selectedStopIndex,1),this._selectedStopIndex=Math.min(this._selectedStopIndex,this._config.stops.length-1),this._syncControls(),this._renderStopTrack(),this._refreshOutput())}_updateTypeVisibility(){this._linearGroup.style.display=this._config.type==="linear"?"":"none",this._radialGroup.style.display=this._config.type==="radial"?"":"none",this._conicGroup.style.display=this._config.type==="conic"?"":"none"}_syncControls(){this._typeSelect.value=this._config.type,this._repeatingCheck.checked=this._config.repeating,this._angleInput.value=String(this._config.angle),this._angleVal.textContent=this._config.angle+"\xB0",this._conicAngleInput.value=String(this._config.angle),this._conicAngleVal.textContent=this._config.angle+"\xB0",this._shapeSelect.value=this._config.radialShape,this._sizeSelect.value=this._config.radialSize,this._posXInput.value=String(this._config.posX),this._posXVal.textContent=this._config.posX+"%",this._posYInput.value=String(this._config.posY),this._posYVal.textContent=this._config.posY+"%",this._conicPosXInput.value=String(this._config.posX),this._conicPosXVal.textContent=this._config.posX+"%",this._conicPosYInput.value=String(this._config.posY),this._conicPosYVal.textContent=this._config.posY+"%";let e=this._currentStop();this._stopColorInput.value=e.color,this._stopOpacityInput.value=String(e.opacity),this._stopOpacityVal.textContent=e.opacity+"%",this._stopPositionInput.value=String(e.position),this._stopPositionVal.textContent=e.position+"%"}_renderStopTrack(){let e=js(this._config);this._previewStrip.style.background=e,this._stopTrack.innerHTML="",this._config.stops.forEach((t,i)=>{let n=document.createElement("div");n.className="stop-marker"+(i===this._selectedStopIndex?" selected":""),n.style.left=`${t.position}%`,n.style.background=t.color,n.style.opacity=String(t.opacity/100),n.addEventListener("click",s=>{s.stopPropagation(),this._selectedStopIndex=i,this._syncControls(),this._renderStopTrack()}),n.addEventListener("pointerdown",s=>{s.preventDefault(),s.stopPropagation(),n.setPointerCapture(s.pointerId);let o=this._stopTrack.getBoundingClientRect(),a=c=>{let h=Math.max(0,Math.min(1,(c.clientX-o.left)/o.width)),p=Math.round(h*100);this._config.stops[i].position=p,this._selectedStopIndex=i,n.style.left=p+"%",this._stopTrack.querySelectorAll(".stop-marker").forEach((d,u)=>{d.classList.toggle("selected",u===i)}),this._previewStrip.style.background=js(this._config),this._refreshOutput()},l=()=>{n.removeEventListener("pointermove",a),n.removeEventListener("pointerup",l),this._syncControls(),this._renderStopTrack()};n.addEventListener("pointermove",a),n.addEventListener("pointerup",l)}),this._stopTrack.appendChild(n)})}_refreshOutput(){this._cssOutput.value=js(this._config)}_refresh(){this._renderStopTrack(),this._refreshOutput()}_applyToSelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.selectedElements;if(!e?.length)return;let t=js(this._config),i=this._propertySelect.value,n=e[0].openGroup(`set ${i}`);for(let s of e)s.setStyle(i,t);n.commit()}};customElements.define("node-projects-gradient-editor-window",An)});import{css as n_}from"@node-projects/base-custom-webcomponent";function Ys(){return{x:0,y:0,shape:"round"}}function Us(){return{width:1,style:"solid",color:"#000000",opacity:100}}function Lm(){return{topLeft:{...Ys()},topRight:{...Ys()},bottomRight:{...Ys()},bottomLeft:{...Ys()},uniform:!0,width:1,borderUniform:!0,top:{...Us()},right:{...Us()},bottom:{...Us()},left:{...Us()}}}function Sh(r){let e=parseInt(r.slice(1,3),16),t=parseInt(r.slice(3,5),16),i=parseInt(r.slice(5,7),16);return`${e},${t},${i}`}function r_(r){return r.x===r.y?`${r.x}%`:`${r.x}% ${r.y}%`}function s_(r){let e=[r.topLeft,r.topRight,r.bottomRight,r.bottomLeft],t=e.map(o=>`${o.x}%`),i=e.map(o=>`${o.y}%`);return e.every(o=>o.x===e[0].x&&o.y===e[0].y)?r_(e[0]):e.every(o=>o.x===o.y)?t.join(" "):`${t.join(" ")} / ${i.join(" ")}`}function o_(r){let e=[r.topLeft.shape,r.topRight.shape,r.bottomRight.shape,r.bottomLeft.shape];return e.every(n=>n==="round")?null:e[0]===e[1]&&e[1]===e[2]&&e[2]===e[3]?e[0]:e.join(" ")}function a_(r){let e=r.width>0?`${r.width}px`:"0px";if(r.borderUniform){let{style:t,color:i,opacity:n}=r.top,s=`${Sh(i)},${(n/100).toFixed(2)}`;return{width:e,style:t,color:`rgba(${s})`}}else{let t=[r.top,r.right,r.bottom,r.left],i=t.map(a=>a.style),n=t.map(a=>`rgba(${`${Sh(a.color)},${(a.opacity/100).toFixed(2)}`})`),s=i[0]===i[1]&&i[1]===i[2]&&i[2]===i[3]?i[0]:i.join(" "),o=n[0]===n[1]&&n[1]===n[2]&&n[2]===n[3]?n[0]:n.join(" ");return{width:e,style:s,color:o}}}function l_(r){let e=Lm();if(!r||(r=r.trim(),!r))return e;let t=r.split("/").map(c=>c.trim()),i=t[0]??"",n=t[1]??i,s=c=>c.split(/\s+/).map(h=>{let p=parseFloat(h);return isNaN(p)?0:p}),o=s(i),a=s(n),l=(c,h)=>c.length===1?c[0]:c.length===2?c[h===1||h===2?1:0]:c.length===3?c[h===3?1:h===2?2:0]:c[h]??0;return e.topLeft.x=l(o,0),e.topRight.x=l(o,1),e.bottomRight.x=l(o,2),e.bottomLeft.x=l(o,3),e.topLeft.y=l(a,0),e.topRight.y=l(a,1),e.bottomRight.y=l(a,2),e.bottomLeft.y=l(a,3),e}function bh(r){let e=[],t=0,i="";for(let s of r.trim()){if(s==="("?t++:s===")"&&t--,/\s/.test(s)&&t===0){let o=i.trim();o&&e.push(o),i="";continue}i+=s}let n=i.trim();return n&&e.push(n),e}function wh(r){return r.length===1?[r[0],r[0],r[0],r[0]]:r.length===2?[r[0],r[1],r[0],r[1]]:r.length===3?[r[0],r[1],r[2],r[1]]:[r[0],r[1],r[2],r[3]]}var Tn,Ch=g(()=>{"use strict";Lt();Tn=class extends xe{_designerCanvas;_config=Lm();_previewBox;_uniformCheck;_uniformXInput;_uniformYInput;_uniformShapeSelect;_uniformXVal;_uniformYVal;_tlXInput;_tlYInput;_tlShapeSelect;_tlXVal;_tlYVal;_trXInput;_trYInput;_trShapeSelect;_trXVal;_trYVal;_brXInput;_brYInput;_brShapeSelect;_brXVal;_brYVal;_blXInput;_blYInput;_blShapeSelect;_blXVal;_blYVal;_cornersUniformDiv;_cornersPersideDiv;_widthInput;_borderUniformCheck;_widthVal;_styleSelect;_colorInput;_opacityInput;_opacityVal;_topStyleSelect;_topWidthInput;_topWidthVal;_topColorInput;_topOpacityInput;_topOpacityVal;_rightStyleSelect;_rightWidthInput;_rightWidthVal;_rightColorInput;_rightOpacityInput;_rightOpacityVal;_bottomStyleSelect;_bottomWidthInput;_bottomWidthVal;_bottomColorInput;_bottomOpacityInput;_bottomOpacityVal;_leftStyleSelect;_leftWidthInput;_leftWidthVal;_leftColorInput;_leftOpacityInput;_leftOpacityVal;_borderUniformDiv;_borderPersideDiv;_cssOutput;_loadBtn;_copyBtn;_applyBtn;get windowTitle(){return"Border Radius Editor"}get windowContentStyle(){return n_`*{box-sizing:border-box}.bre-root{display:flex;flex-direction:column;width:860px;max-width:calc(100vw - 48px);color:#ddd;font-family:sans-serif;font-size:12px;gap:4px;padding:6px;background:#2a2a2a}.editors-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:start}.section-column{display:flex;flex-direction:column;gap:4px}.preview-area{background:#1a1a1a;border:1px solid #444;border-radius:3px;height:70px;display:flex;align-items:center;justify-content:center;margin-bottom:2px}.preview-box{width:60px;height:60px;background:linear-gradient(135deg,#667eea 0,#764ba2 100%);border-radius:0}.uniform-row{display:flex;align-items:center;gap:6px;font-size:11px}.uniform-row label{display:flex;align-items:center;gap:3px;cursor:pointer;user-select:none;color:#aaa}.uniform-row input[type=checkbox]{cursor:pointer;width:14px;height:14px}.section-header{color:#999;font-size:10px;font-weight:700;margin-top:3px;margin-bottom:2px;text-transform:uppercase}.corner-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px}.separate-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.corner-section{background:#1e1e1e;border:1px solid #444;border-radius:2px;padding:4px}.corner-header{color:#888;font-size:10px;margin-bottom:3px;font-weight:700}.corner-row{display:grid;grid-template-columns:35px 1fr 24px;gap:2px 3px;align-items:center;margin-bottom:2px}.corner-row:last-child{margin-bottom:0}.corner-row label{color:#888;font-size:10px}.corner-row input[type=range]{width:100%;height:16px}.corner-row input[type=color]{width:100%;height:18px;cursor:pointer}.corner-row .val-label{text-align:right;color:#777;font-size:9px}.bre-root select{background:#2e2e2e;color:#ddd;border:1px solid #555;border-radius:2px;padding:2px 3px;font-size:10px;height:18px}.corner-row select{grid-column:1/-1}.side-pair{display:grid;grid-template-columns:1fr 1fr;gap:4px}@media (max-width:900px){.bre-root{width:420px}.editors-row{grid-template-columns:1fr}}.separator{height:1px;background:#444;margin:2px 0}.css-out{background:#1e1e1e;border:1px solid #333;border-radius:3px;color:#7ec8e3;font-family:monospace;font-size:10px;padding:4px;resize:none;width:100%;height:50px}.actions{display:flex;gap:4px;justify-content:flex-end}.actions .load-btn{margin-right:auto}.actions button,.apply-btn{padding:3px 10px;background:#3a3a3a;color:#ddd;border:1px solid #555;border-radius:2px;cursor:pointer;font-size:11px}.actions button:hover,.apply-btn:hover{background:#555}.apply-btn{background:#3a6a9a;border-color:#2a5a8a}.apply-btn:hover{background:#4a7aaa}`}get windowTemplate(){return`
|
|
267
267
|
<div class="bre-root">
|
|
268
268
|
<div class="preview-area">
|
|
269
269
|
<div class="preview-box" id="bre-preview"></div>
|
|
@@ -537,20 +537,20 @@ var vl=Object.defineProperty;var zf=Object.getOwnPropertyDescriptor;var Ff=Objec
|
|
|
537
537
|
<button id="bre-copy-btn">Copy CSS</button>
|
|
538
538
|
<button class="apply-btn" id="bre-apply-btn">Apply to selection</button>
|
|
539
539
|
</div>
|
|
540
|
-
</div>`}constructor(e){super(),this._designerCanvas=e,this._previewBox=this._getDomElement("bre-preview"),this._uniformCheck=this._getDomElement("bre-uniform"),this._uniformXInput=this._getDomElement("bre-uniform-x"),this._uniformYInput=this._getDomElement("bre-uniform-y"),this._uniformShapeSelect=this._getDomElement("bre-uniform-shape"),this._uniformXVal=this._getDomElement("bre-uniform-x-val"),this._uniformYVal=this._getDomElement("bre-uniform-y-val"),this._tlXInput=this._getDomElement("bre-tl-x"),this._tlYInput=this._getDomElement("bre-tl-y"),this._tlShapeSelect=this._getDomElement("bre-tl-shape"),this._tlXVal=this._getDomElement("bre-tl-x-val"),this._tlYVal=this._getDomElement("bre-tl-y-val"),this._trXInput=this._getDomElement("bre-tr-x"),this._trYInput=this._getDomElement("bre-tr-y"),this._trShapeSelect=this._getDomElement("bre-tr-shape"),this._trXVal=this._getDomElement("bre-tr-x-val"),this._trYVal=this._getDomElement("bre-tr-y-val"),this._brXInput=this._getDomElement("bre-br-x"),this._brYInput=this._getDomElement("bre-br-y"),this._brShapeSelect=this._getDomElement("bre-br-shape"),this._brXVal=this._getDomElement("bre-br-x-val"),this._brYVal=this._getDomElement("bre-br-y-val"),this._blXInput=this._getDomElement("bre-bl-x"),this._blYInput=this._getDomElement("bre-bl-y"),this._blShapeSelect=this._getDomElement("bre-bl-shape"),this._blXVal=this._getDomElement("bre-bl-x-val"),this._blYVal=this._getDomElement("bre-bl-y-val"),this._cornersUniformDiv=this._getDomElement("bre-corners-uniform"),this._cornersPersideDiv=this._getDomElement("bre-corners-perside"),this._widthInput=this._getDomElement("bre-width"),this._borderUniformCheck=this._getDomElement("bre-border-separate"),this._widthVal=this._getDomElement("bre-width-val"),this._styleSelect=this._getDomElement("bre-style"),this._colorInput=this._getDomElement("bre-color"),this._opacityInput=this._getDomElement("bre-opacity"),this._opacityVal=this._getDomElement("bre-opacity-val"),this._topStyleSelect=this._getDomElement("bre-top-style"),this._topWidthInput=this._getDomElement("bre-top-width"),this._topWidthVal=this._getDomElement("bre-top-width-val"),this._topColorInput=this._getDomElement("bre-top-color"),this._topOpacityInput=this._getDomElement("bre-top-opacity"),this._topOpacityVal=this._getDomElement("bre-top-opacity-val"),this._rightStyleSelect=this._getDomElement("bre-right-style"),this._rightWidthInput=this._getDomElement("bre-right-width"),this._rightWidthVal=this._getDomElement("bre-right-width-val"),this._rightColorInput=this._getDomElement("bre-right-color"),this._rightOpacityInput=this._getDomElement("bre-right-opacity"),this._rightOpacityVal=this._getDomElement("bre-right-opacity-val"),this._bottomStyleSelect=this._getDomElement("bre-bottom-style"),this._bottomWidthInput=this._getDomElement("bre-bottom-width"),this._bottomWidthVal=this._getDomElement("bre-bottom-width-val"),this._bottomColorInput=this._getDomElement("bre-bottom-color"),this._bottomOpacityInput=this._getDomElement("bre-bottom-opacity"),this._bottomOpacityVal=this._getDomElement("bre-bottom-opacity-val"),this._leftStyleSelect=this._getDomElement("bre-left-style"),this._leftWidthInput=this._getDomElement("bre-left-width"),this._leftWidthVal=this._getDomElement("bre-left-width-val"),this._leftColorInput=this._getDomElement("bre-left-color"),this._leftOpacityInput=this._getDomElement("bre-left-opacity"),this._leftOpacityVal=this._getDomElement("bre-left-opacity-val"),this._borderUniformDiv=this._getDomElement("bre-border-uniform-editor"),this._borderPersideDiv=this._getDomElement("bre-border-perside"),this._cssOutput=this._getDomElement("bre-css-out"),this._loadBtn=this._getDomElement("bre-load-btn"),this._copyBtn=this._getDomElement("bre-copy-btn"),this._applyBtn=this._getDomElement("bre-apply-btn"),this._uniformCheck.onchange=()=>{if(this._config.uniform=!this._uniformCheck.checked,this._cornersUniformDiv.style.display=this._config.uniform?"block":"none",this._cornersPersideDiv.style.display=this._config.uniform?"none":"grid",this._config.uniform){let i=this._config.topLeft;this._config.topRight={...i},this._config.bottomRight={...i},this._config.bottomLeft={...i}}this._syncControls(),this._refresh()},this._uniformXInput.oninput=()=>{this._config.topLeft.x=Number(this._uniformXInput.value),this._config.topRight.x=Number(this._uniformXInput.value),this._config.bottomRight.x=Number(this._uniformXInput.value),this._config.bottomLeft.x=Number(this._uniformXInput.value),this._uniformXVal.textContent=this._config.topLeft.x+"%",this._refresh()},this._uniformYInput.oninput=()=>{this._config.topLeft.y=Number(this._uniformYInput.value),this._config.topRight.y=Number(this._uniformYInput.value),this._config.bottomRight.y=Number(this._uniformYInput.value),this._config.bottomLeft.y=Number(this._uniformYInput.value),this._uniformYVal.textContent=this._config.topLeft.y+"%",this._refresh()},this._uniformShapeSelect.onchange=()=>{let i=this._uniformShapeSelect.value;this._config.topLeft.shape=i,this._config.topRight.shape=i,this._config.bottomRight.shape=i,this._config.bottomLeft.shape=i,this._refresh()},this._wireCornerControls("tl",this._tlXInput,this._tlYInput,this._tlShapeSelect,this._tlXVal,this._tlYVal),this._wireCornerControls("tr",this._trXInput,this._trYInput,this._trShapeSelect,this._trXVal,this._trYVal),this._wireCornerControls("br",this._brXInput,this._brYInput,this._brShapeSelect,this._brXVal,this._brYVal),this._wireCornerControls("bl",this._blXInput,this._blYInput,this._blShapeSelect,this._blXVal,this._blYVal),this._widthInput.oninput=()=>{this._config.width=Number(this._widthInput.value),this._config.top.width=this._config.width,this._config.right.width=this._config.width,this._config.bottom.width=this._config.width,this._config.left.width=this._config.width,this._widthVal.textContent=this._config.width+"px",this._refresh()},this._borderUniformCheck.onchange=()=>{this._config.borderUniform=!this._borderUniformCheck.checked,this._config.borderUniform&&(this._config.width=this._config.top.width,this._config.right.width=this._config.top.width,this._config.bottom.width=this._config.top.width,this._config.left.width=this._config.top.width),this._borderUniformDiv.style.display=this._config.borderUniform?"block":"none",this._borderPersideDiv.style.display=this._config.borderUniform?"none":"grid",this._syncControls(),this._refresh()},this._styleSelect.onchange=()=>{this._config.top.style=this._styleSelect.value,this._config.right.style=this._styleSelect.value,this._config.bottom.style=this._styleSelect.value,this._config.left.style=this._styleSelect.value,this._refresh()},this._colorInput.oninput=()=>{this._config.top.color=this._colorInput.value,this._config.right.color=this._colorInput.value,this._config.bottom.color=this._colorInput.value,this._config.left.color=this._colorInput.value,this._refresh()},this._opacityInput.oninput=()=>{let i=Number(this._opacityInput.value);this._config.top.opacity=i,this._config.right.opacity=i,this._config.bottom.opacity=i,this._config.left.opacity=i,this._opacityVal.textContent=i+"%",this._refresh()};let t=(i,n,r,o,a,l,c)=>{let h=()=>this._config[i];n.onchange=()=>{let p=h();p.style=n.value,this._refresh()},r.oninput=()=>{let p=h();p.width=Number(r.value),o.textContent=p.width+"px",this._refresh()},a.oninput=()=>{let p=h();p.color=a.value,this._refresh()},l.oninput=()=>{let p=h();p.opacity=Number(l.value),c.textContent=p.opacity+"%",this._refresh()}};t("top",this._topStyleSelect,this._topWidthInput,this._topWidthVal,this._topColorInput,this._topOpacityInput,this._topOpacityVal),t("right",this._rightStyleSelect,this._rightWidthInput,this._rightWidthVal,this._rightColorInput,this._rightOpacityInput,this._rightOpacityVal),t("bottom",this._bottomStyleSelect,this._bottomWidthInput,this._bottomWidthVal,this._bottomColorInput,this._bottomOpacityInput,this._bottomOpacityVal),t("left",this._leftStyleSelect,this._leftWidthInput,this._leftWidthVal,this._leftColorInput,this._leftOpacityInput,this._leftOpacityVal),this._copyBtn.onclick=()=>{navigator.clipboard?.writeText(this._cssOutput.value).catch(()=>{})},this._applyBtn.onclick=()=>this._applyToSelection(),this._loadBtn.onclick=()=>{this._loadFromPrimarySelection(),this._syncControls(),this._refresh()},this._loadFromPrimarySelection(),this._syncControls(),this._refresh()}_wireCornerControls(e,t,i,n,r,o){let a=()=>{switch(e){case"tl":return this._config.topLeft;case"tr":return this._config.topRight;case"br":return this._config.bottomRight;case"bl":return this._config.bottomLeft}};t.oninput=()=>{let l=a();l.x=Number(t.value),this._config.uniform&&(this._config.topLeft.x=this._config.topRight.x=this._config.bottomRight.x=this._config.bottomLeft.x=l.x),r.textContent=l.x+"%",this._refresh()},i.oninput=()=>{let l=a();l.y=Number(i.value),this._config.uniform&&(this._config.topLeft.y=this._config.topRight.y=this._config.bottomRight.y=this._config.bottomLeft.y=l.y),o.textContent=l.y+"%",this._refresh()},n.onchange=()=>{let l=a();l.shape=n.value,this._config.uniform&&(this._config.topLeft.shape=this._config.topRight.shape=this._config.bottomRight.shape=this._config.bottomLeft.shape=l.shape),this._refresh()}}_loadFromPrimarySelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.primarySelection;if(!e)return;let t=e.getStyle("border-radius");t&&(this._config=n_(t));let i=e.getStyle("corner-shape");if(i){let S=i.trim().split(/\s+/).filter(Boolean),L=k=>S.length===1?S[0]:S.length===2?S[k===1||k===2?1:0]:S.length===3?S[k===3?1:k===2?2:0]:S[k]??"round";this._config.topLeft.shape=L(0),this._config.topRight.shape=L(1),this._config.bottomRight.shape=L(2),this._config.bottomLeft.shape=L(3)}let n=[this._config.topLeft,this._config.topRight,this._config.bottomRight,this._config.bottomLeft];this._config.uniform=n.every(S=>S.x===n[0].x&&S.y===n[0].y&&S.shape===n[0].shape);let r=e.getStyle("border-width");if(r){let S=_h(r).map(N=>parseFloat(N)).filter(N=>!isNaN(N)),[L,k,j,H]=xh(S);L!=null&&(this._config.top.width=L),k!=null&&(this._config.right.width=k),j!=null&&(this._config.bottom.width=j),H!=null&&(this._config.left.width=H),L!=null&&(this._config.width=L)}let o=e.getStyle("border-top-width"),a=e.getStyle("border-right-width"),l=e.getStyle("border-bottom-width"),c=e.getStyle("border-left-width"),h=!!(o||a||l||c);if(h){if(this._config.borderUniform=!1,o){let S=parseFloat(o);isNaN(S)||(this._config.top.width=S)}if(a){let S=parseFloat(a);isNaN(S)||(this._config.right.width=S)}if(l){let S=parseFloat(l);isNaN(S)||(this._config.bottom.width=S)}if(c){let S=parseFloat(c);isNaN(S)||(this._config.left.width=S)}this._config.width=this._config.top.width}let p=S=>{let L=S.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*([\d.]+))?\s*\)/);if(L){let k="#"+[parseInt(L[1]),parseInt(L[2]),parseInt(L[3])].map(H=>H.toString(16).padStart(2,"0")).join(""),j=L[4]?Math.round(parseFloat(L[4])*100):100;return{hex:k,opacity:j}}else if(S.startsWith("#"))return{hex:S.slice(0,7),opacity:100};return{hex:"#000000",opacity:100}},d=e.getStyle("border-top-style"),u=e.getStyle("border-right-style"),m=e.getStyle("border-bottom-style"),f=e.getStyle("border-left-style");if(d||u||m||f)this._config.borderUniform=!1,d&&(this._config.top.style=d),u&&(this._config.right.style=u),m&&(this._config.bottom.style=m),f&&(this._config.left.style=f);else{let S=e.getStyle("border-style");if(S){h||(this._config.borderUniform=!0);let[L,k,j,H]=xh(_h(S));L&&(this._config.top.style=L),k&&(this._config.right.style=k),j&&(this._config.bottom.style=j),H&&(this._config.left.style=H)}}let v=e.getStyle("border-top-color"),y=e.getStyle("border-right-color"),x=e.getStyle("border-bottom-color"),w=e.getStyle("border-left-color");if(v||y||x||w){if(this._config.borderUniform=!1,v){let S=p(v);this._config.top.color=S.hex,this._config.top.opacity=S.opacity}if(y){let S=p(y);this._config.right.color=S.hex,this._config.right.opacity=S.opacity}if(x){let S=p(x);this._config.bottom.color=S.hex,this._config.bottom.opacity=S.opacity}if(w){let S=p(w);this._config.left.color=S.hex,this._config.left.opacity=S.opacity}}else{let S=e.getStyle("border-color");if(S){h||(this._config.borderUniform=!0);let[L,k,j,H]=xh(_h(S));if(L){let N=p(L);this._config.top.color=N.hex,this._config.top.opacity=N.opacity}if(k){let N=p(k);this._config.right.color=N.hex,this._config.right.opacity=N.opacity}if(j){let N=p(j);this._config.bottom.color=N.hex,this._config.bottom.opacity=N.opacity}if(H){let N=p(H);this._config.left.color=N.hex,this._config.left.opacity=N.opacity}}}let C=[this._config.top,this._config.right,this._config.bottom,this._config.left];this._config.borderUniform=C.every(S=>S.width===C[0].width&&S.style===C[0].style&&S.color===C[0].color&&S.opacity===C[0].opacity),this._config.width=this._config.top.width}_syncControls(){this._uniformCheck.checked=!this._config.uniform,this._cornersUniformDiv.style.display=this._config.uniform?"block":"none",this._cornersPersideDiv.style.display=this._config.uniform?"none":"grid",this._config.uniform&&(this._uniformXInput.value=String(this._config.topLeft.x),this._uniformYInput.value=String(this._config.topLeft.y),this._uniformShapeSelect.value=this._config.topLeft.shape,this._uniformXVal.textContent=this._config.topLeft.x+"%",this._uniformYVal.textContent=this._config.topLeft.y+"%");let e=(t,i,n,r,o,a)=>{t.value=String(a.x),i.value=String(a.y),n.value=a.shape,r.textContent=a.x+"%",o.textContent=a.y+"%"};e(this._tlXInput,this._tlYInput,this._tlShapeSelect,this._tlXVal,this._tlYVal,this._config.topLeft),e(this._trXInput,this._trYInput,this._trShapeSelect,this._trXVal,this._trYVal,this._config.topRight),e(this._brXInput,this._brYInput,this._brShapeSelect,this._brXVal,this._brYVal,this._config.bottomRight),e(this._blXInput,this._blYInput,this._blShapeSelect,this._blXVal,this._blYVal,this._config.bottomLeft),this._widthInput.value=String(this._config.width),this._widthVal.textContent=this._config.width+"px",this._borderUniformCheck.checked=!this._config.borderUniform,this._borderUniformDiv.style.display=this._config.borderUniform?"block":"none",this._borderPersideDiv.style.display=this._config.borderUniform?"none":"grid",this._config.borderUniform?(this._styleSelect.value=this._config.top.style,this._colorInput.value=this._config.top.color,this._opacityInput.value=String(this._config.top.opacity),this._opacityVal.textContent=this._config.top.opacity+"%"):(this._topStyleSelect.value=this._config.top.style,this._topWidthInput.value=String(this._config.top.width),this._topWidthVal.textContent=this._config.top.width+"px",this._topColorInput.value=this._config.top.color,this._topOpacityInput.value=String(this._config.top.opacity),this._topOpacityVal.textContent=this._config.top.opacity+"%",this._rightStyleSelect.value=this._config.right.style,this._rightWidthInput.value=String(this._config.right.width),this._rightWidthVal.textContent=this._config.right.width+"px",this._rightColorInput.value=this._config.right.color,this._rightOpacityInput.value=String(this._config.right.opacity),this._rightOpacityVal.textContent=this._config.right.opacity+"%",this._bottomStyleSelect.value=this._config.bottom.style,this._bottomWidthInput.value=String(this._config.bottom.width),this._bottomWidthVal.textContent=this._config.bottom.width+"px",this._bottomColorInput.value=this._config.bottom.color,this._bottomOpacityInput.value=String(this._config.bottom.opacity),this._bottomOpacityVal.textContent=this._config.bottom.opacity+"%",this._leftStyleSelect.value=this._config.left.style,this._leftWidthInput.value=String(this._config.left.width),this._leftWidthVal.textContent=this._config.left.width+"px",this._leftColorInput.value=this._config.left.color,this._leftOpacityInput.value=String(this._config.left.opacity),this._leftOpacityVal.textContent=this._config.left.opacity+"%")}_buildCss(){let e=e_(this._config),t=t_(this._config),i={},{width:n,style:r,color:o}=i_(this._config);if(this._config.borderUniform)i["border-width"]=n,i["border-style"]=r,i["border-color"]=o;else{let a=["top","right","bottom","left"],l=[this._config.top,this._config.right,this._config.bottom,this._config.left];for(let c=0;c<a.length;c++){let h=a[c],p=l[c];i[`border-${h}-width`]=`${p.width}px`,i[`border-${h}-style`]=p.style;let d=`${bh(p.color)},${(p.opacity/100).toFixed(2)}`;i[`border-${h}-color`]=`rgba(${d})`}}return{radius:e,shape:t,borderCss:i}}_refresh(){let{radius:e,shape:t,borderCss:i}=this._buildCss();this._previewBox.style.borderRadius=e,t?this._previewBox.style.cornerShape=t:this._previewBox.style.cornerShape="",Object.entries(i).forEach(([r,o])=>{this._previewBox.style[r.replace(/-([a-z])/g,(a,l)=>l.toUpperCase())]=o});let n=`border-radius: ${e};`;t&&(n+=`
|
|
541
|
-
corner-shape: ${t};`),Object.entries(i).forEach(([
|
|
542
|
-
${r}: ${o};`}),this._cssOutput.value=n}_applyToSelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.selectedElements;if(!e?.length)return;let{radius:t,shape:i,borderCss:n}=this._buildCss(),r=e[0].openGroup("set border-radius and border properties");for(let o of e)o.setStyle("border-radius",t),i?o.setStyle("corner-shape",i):o.removeStyle("corner-shape"),Object.entries(n).forEach(([a,l])=>{o.setStyle(a,l)});r.commit()}};customElements.define("node-projects-border-radius-editor-window",Mn)});var Ws,Sh=g(()=>{"use strict";At();Rs();gh();yh();vh();wh();Ws=class{shouldProvideContextmenu(e,t,i,n){return!0}provideContextMenuItems(e,t,i,n){return[{title:"tool windows",children:[{title:"transform",action:()=>{let r=new fi(t);be.showWindow(r)}},{title:"box shadow editor",action:()=>{let r=new Dn(t);be.showWindow(r)}},{title:"text shadow editor",action:()=>{let r=new An(t);be.showWindow(r)}},{title:"gradient editor",action:()=>{let r=new Tn(t);be.showWindow(r)}},{title:"border radius editor",action:()=>{let r=new Mn(t);be.showWindow(r)}}]}]}}});var js,Ch=g(()=>{"use strict";Dt();Z();he();js=class{shouldProvideContextmenu(e,t,i,n){return t.readOnly?!1:!i?.isRootItem&&i?.nodeType==D.Element}provideContextMenuItems(e,t,i){return[{title:"to front",icon:`<img style="rotate: 90deg" src="${E+"icons/moveFirst.svg"}">`,action:()=>{t.executeCommand({type:A.moveToFront})}},{title:"move forward",icon:`<img style="rotate: 90deg" src="${E+"icons/moveLeft.svg"}">`,action:()=>{t.executeCommand({type:A.moveForward})}},{title:"move backward",icon:`<img style="rotate: 270deg" src="${E+"icons/moveLeft.svg"}">`,action:()=>{t.executeCommand({type:A.moveBackward})}},{title:"to back",icon:`<img style="rotate: 270deg" src="${E+"icons/moveFirst.svg"}">`,action:()=>{t.executeCommand({type:A.moveToBack})}}]}}});function Mm(s,e,t=!1,i=0){for(let d of s)if(d==e||d.element.contains(e.element)){console.warn("could not move items into of itself or a child");return}let n=s[0],r=n.openGroup("switchContainerHelper"),o=n.instanceServiceContainer.designerCanvas,a=Number.MAX_VALUE,l=Number.MAX_VALUE,c=0,h=0;for(let d of s){let u=o.getNormalizedElementCoordinates(d.element);u.x<a&&(a=u.x),u.y<l&&(l=u.y),u.x+u.width>c&&(c=u.x+u.width),u.y+u.height>h&&(h=u.y+u.height)}let p=o.getNormalizedElementCoordinates(e.element);for(let d of s){let u=o.getNormalizedElementCoordinates(d.element);d.nodeType==D.Element&&(t?(d.setStyle("left",(u.x-a+i).toString()+"px"),d.setStyle("top",(u.y-l+i).toString()+"px")):(d.setStyle("left",(u.x-p.x).toString()+"px"),d.setStyle("top",(u.y-p.y).toString()+"px"))),e.insertChild(d)}t&&(e.setStyle("position","absolute"),e.setStyle("left",(a-i).toString()+"px"),e.setStyle("top",(l-i).toString()+"px"),e.setStyle("width",(c-a+2*i).toString()+"px"),e.setStyle("height",(h-l+2*i).toString()+"px")),r.commit()}var Eh=g(()=>{"use strict";Z()});var Ys,Ph=g(()=>{"use strict";Eh();oe();Ys=class{orderIndex=60;shouldProvideContextmenu(e,t,i,n){return i?.instanceServiceContainer.selectionService.selectedElements.length>1}provideContextMenuItems(e,t,i){return[{title:"wrap in",children:[{title:"div",action:()=>{let n=i.openGroup("wrap in Div"),r=i.instanceServiceContainer.selectionService.selectedElements,o=document.createElement("div"),a=O.createDesignItemFromInstance(o,i.serviceContainer,i.instanceServiceContainer);r[0].insertAdjacentElement(a,"beforebegin"),Mm(r,a,!0,10),n.commit(),i.instanceServiceContainer.selectionService.setSelectedElements([a])}}]}]}}});var Ln,Ih=g(()=>{"use strict";fe();Xe();oe();ie();Ln=class{cursor="progress";_rect;_initialPoint;activated(e){}pointerEventHandler(e,t,i){X(t)||t.shiftKey?this.cursor="copy":t.altKey?this.cursor="default":this.cursor="default";let n=e.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._initialPoint=n,this._rect||(this._rect=document.createElementNS("http://www.w3.org/2000/svg","rect")),this._rect.setAttribute("class","svg-selector"),this._rect.setAttribute("x",this._initialPoint.x*e.scaleFactor),this._rect.setAttribute("y",this._initialPoint.y*e.scaleFactor),this._rect.setAttribute("width",0),this._rect.setAttribute("height",0),this._rect.style.strokeWidth=""+1/e.scaleFactor,this._rect.style.strokeDasharray=""+2/e.scaleFactor,e.overlayLayer.addOverlay(this.constructor.name,this._rect,M.Foreground);break;case P.PointerMove:if(this._initialPoint){let l=n.x-this._initialPoint.x,c=n.y-this._initialPoint.y;l>=0?(this._rect.setAttribute("x",this._initialPoint.x),this._rect.setAttribute("width",l)):(this._rect.setAttribute("x",n.x),this._rect.setAttribute("width",-1*l)),c>=0?(this._rect.setAttribute("y",this._initialPoint.y),this._rect.setAttribute("height",c)):(this._rect.setAttribute("y",n.y),this._rect.setAttribute("height",-1*c))}break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let r=e.rootDesignItem.querySelectorAll("*"),o=[];(X(t)||t.shiftKey||t.altKey)&&e.instanceServiceContainer.selectionService.selectedElements&&o.push(...e.instanceServiceContainer.selectionService.selectedElements);let a=e.overlayLayer.createPoint();for(let l of r){let c=e.getNormalizedElementCoordinates(l);a.x=c.x,a.y=c.y;let h=this._rect.isPointInFill(a);a.x=c.x+c.width,a.y=c.y;let p=h&&this._rect.isPointInFill(a);a.x=c.x,a.y=c.y+c.height;let d=p&&this._rect.isPointInFill(a);if(a.x=c.x+c.width,a.y=c.y+c.height,d&&this._rect.isPointInFill(a)){let m=O.GetOrCreateDesignItem(l,l,e.serviceContainer,e.instanceServiceContainer);if(!o.includes(m)&&!t.altKey)o.push(m);else if(t.altKey){let f=o.indexOf(m);o.splice(f,1)}}}e.overlayLayer.removeOverlay(this._rect),this._rect=null,this._initialPoint=null,e.instanceServiceContainer.selectionService.setSelectedElements(o,t),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}dispose(){}}});var Us,kh=g(()=>{"use strict";fe();Xe();oe();ie();Us=class{cursor="progress";_pathD;_path;pointerEventHandler(e,t,i){X(t)?this.cursor="copy":t.altKey?this.cursor="default":this.cursor="default";let n=e.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("class","svg-selector"),this._path.style.strokeWidth=""+1/e.scaleFactor,this._path.style.strokeDasharray=""+2/e.scaleFactor,this._pathD="M"+n.x+" "+n.y,this._path.setAttribute("D",this._pathD),e.overlayLayer.addOverlay(this.constructor.name,this._path,M.Foreground);break;case P.PointerMove:this._path&&(this._pathD+="L"+n.x+" "+n.y,this._path.setAttribute("d",this._pathD+"Z"));break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let r=e.rootDesignItem.querySelectorAll("*"),o=[];(X(t)||t.altKey)&&e.instanceServiceContainer.selectionService.selectedElements&&o.push(...e.instanceServiceContainer.selectionService.selectedElements);let a=e.overlayLayer.createPoint();for(let l of r){let c=e.getNormalizedElementCoordinates(l);a.x=c.x,a.y=c.y;let h=this._path.isPointInFill(a)||this._path.isPointInStroke(a);a.x=c.x+c.width,a.y=c.y;let p=this._path.isPointInFill(a)||this._path.isPointInStroke(a);a.x=c.x,a.y=c.y+c.height;let d=this._path.isPointInFill(a)||this._path.isPointInStroke(a);a.x=c.x+c.width,a.y=c.y+c.height;let u=this._path.isPointInFill(a)||this._path.isPointInStroke(a);if(h&&p&&d&&u){let m=O.GetOrCreateDesignItem(l,l,e.serviceContainer,e.instanceServiceContainer);if(!o.includes(m)&&!t.altKey)o.push(m);else if(t.altKey){let f=o.indexOf(m);o.splice(f,1)}}}e.overlayLayer.removeOverlay(this._path),this._path=null,this._pathD=null,e.instanceServiceContainer.selectionService.setSelectedElements(o),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}activated(e){}dispose(){}}});var Xs,Dh=g(()=>{"use strict";Xs=class{cursor="crosshair";async activated(e){try{let n=(await new EyeDropper().open()).sRGBHex;e.globalContext.strokeColor=n}finally{e.globalContext.finishedWithTool(this)}}async pointerEventHandler(e,t,i){}keyboardEventHandler(e,t,i){}dispose(){}}});function Ah(s){let e=document.getSelection();return s.getSelection?e=s.getSelection():e.getComposedRanges&&(e=e.getComposedRanges(s)),e}function Lm(s,e){function t(o){let a=o.parentNode;if(!a)return;let l=document.createElement("span");e.push(l),a.insertBefore(l,o),l.appendChild(o)}function i(o){return o instanceof HTMLSpanElement&&Array.from(o.childNodes).every(a=>a.nodeType===Node.TEXT_NODE)}function n(o){switch(o.nodeType){case Node.TEXT_NODE:t(o);break;case Node.DOCUMENT_FRAGMENT_NODE:case Node.ELEMENT_NODE:if(i(o)){e.push(o);break}Array.from(o.childNodes).forEach(n);break}}let r=s.extractContents();n(r),s.insertNode(r)}function r_(s){let e=document.createRange();return e.setStart(s.startContainer,s.startOffset),e.setEnd(s.endContainer,s.endOffset),e}function Om(s){let e=[];if("getRangeAt"in s){if(!s.rangeCount)return e;let t=s.getRangeAt(0);Lm(t,e)}else{let t=s[0];if(!t)return e;Lm(r_(t),e)}return"removeAllRanges"in s&&s.removeAllRanges&&s.removeAllRanges(),e}var Th=g(()=>{"use strict"});import{html as s_}from"@node-projects/base-custom-webcomponent";var Xi,$s=g(()=>{"use strict";le();ie();Th();pc();ue();Xi=class s extends F{static template=s_`<div style="height:100%;display:flex;gap:2px;width:100%"><button data-command="font-weight" data-command-parameter="800" style="pointer-events:auto;height:24px;width:24px;padding:0;font-weight:900">b</button> <button data-command="font-style" data-command-parameter="italic" style="pointer-events:auto;height:24px;width:24px;padding:0"><em>i</em></button> <button data-command="text-decoration" data-command-parameter="underline" style="pointer-events:auto;height:24px;width:24px;padding:0"><ins>u</ins></button> <button data-command="text-decoration" data-command-parameter="line-through" style="pointer-events:auto;height:24px;width:24px;padding:0"><del>s</del></button> <button data-command="text-decoration" data-command-parameter="overline" style="pointer-events:auto;height:24px;width:24px;padding:0"><span style="text-decoration:overline">o</span></button> <select data-command="fontSize" style="pointer-events:auto;height:24px;width:60px;padding:0"><option>8px</option><option>9px</option><option>10px</option><option>11px</option><option>12px</option><option>14px</option><option>16px</option><option>18px</option><option>20px</option><option>24px</option><option>28px</option><option>32px</option><option>36px</option></select> <select id="fontFamily" data-command="font-family" style="pointer-events:auto;height:24px;width:90px;padding:0"></select></div>`;_path;_toolbar;_selectionChangedListener;_toolbarStateAnimationFrame;constructor(e,t,i){super(e,t,i),this._keyDown=this._keyDown.bind(this),this._scheduleToolbarStateRefresh=this._scheduleToolbarStateRefresh.bind(this)}_keyDown(e){e.key==="Escape"&&this.dispose()}extend(){this.extendedItem.instanceServiceContainer.selectionService.clearSelectedElements(),this.extendedItem.removeDesignerAttributesAndStylesFromChildren(),window.addEventListener("keydown",this._keyDown,!0),this.extendedItem.editContent(),this._selectionChangedListener=this.extendedItem.instanceServiceContainer.selectionService.onSelectionChanged.on(()=>{this.commitchanges(),this.extensionManager.removeExtensionInstance(this.extendedItem,this)}),this.extendedItem.element.focus();let e=K(this.extendedItem.element);this._toolbar=this.createToolbar(s.template,300,24),this._toolbar.updatePosition({x:(e.x-this.designerCanvas.containerBoundingRect.x)/this.designerCanvas.scaleFactor,y:(e.y-this.designerCanvas.containerBoundingRect.y)/this.designerCanvas.scaleFactor-36}),Vi.addFontsToSelect(this._toolbar.getById("fontFamily")),this._toolbar.querySelectorAll("button").forEach(t=>t.onpointerdown=i=>{let n=t.dataset.command;n&&this._formatSelection(n,t.dataset.commandParameter)}),this._toolbar.querySelectorAll("select").forEach(t=>t.onchange=()=>{let i=t.dataset.command;i&&this._formatSelection(i,t.value)}),document.addEventListener("selectionchange",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.addEventListener("keyup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.addEventListener("pointerup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.addEventListener("input",this._scheduleToolbarStateRefresh,!0),this.designerCanvas.clickOverlay.style.pointerEvents="none",this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("class","svg-edit-text-clickoutside"),this._path.setAttribute("fill-rule","evenodd"),this._path.style.pointerEvents="auto",this._path.onpointerdown=t=>{this.designerCanvas.ignoreEvent(t),this.commitchanges(),this.extensionManager.removeExtensionInstance(this.extendedItem,this)},this._addOverlay(this._path,M.Background),this.refresh(),this._refreshToolbarState()}refresh(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];if(this._valuesHaveChanges(this.designerCanvas.containerBoundingRect.width,this.designerCanvas.containerBoundingRect.height,this.designerCanvas.scaleFactor,e.p1.x,e.p1.y,e.p2.x,e.p2.y,e.p3.x,e.p3.y,e.p4.x,e.p4.y)){let t={width:this.designerCanvas.containerBoundingRect.width/this.designerCanvas.scaleFactor,height:this.designerCanvas.containerBoundingRect.height/this.designerCanvas.scaleFactor},i="M0 0 L"+t.width+" 0 L"+t.width+" "+t.height+" L0 "+t.height+" Z ";i+="M"+[e.p1,e.p2,e.p3,e.p4].map(n=>n.x+","+n.y).join(" ")+"Z ",this._path.setAttribute("d",i)}}dispose(){window.removeEventListener("keydown",this._keyDown,!0),document.removeEventListener("selectionchange",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.removeEventListener("keyup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.removeEventListener("pointerup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.removeEventListener("input",this._scheduleToolbarStateRefresh,!0),this._toolbarStateAnimationFrame!=null&&cancelAnimationFrame(this._toolbarStateAnimationFrame),this._selectionChangedListener?.dispose(),this._removeAllOverlays(),this.extendedItem.editContentFinish(),this.designerCanvas.clickOverlay.style.pointerEvents="auto"}commitchanges(){this._removeAllOverlays(),this.extendedItem.element.normalize(),this._cleanupFormattingMarkup(this.extendedItem.element),this.extendedItem.element.normalize();let e=!1;e:for(;!e;){for(let i of this.extendedItem.element.querySelectorAll("*"))if(i.childNodes.length==0){i.remove();continue e}e=!0}this._cleanupFormattingMarkup(this.extendedItem.element),this.extendedItem.element.normalize();let t=this.extendedItem.element.innerHTML;this.extendedItem.editContentFinish(),this.extendedItem.innerHTML=t,this.designerCanvas.clickOverlay.style.pointerEvents="auto"}_cleanupFormattingMarkup(e){let t=!1;do t=this._cleanupFormattingNode(e),e.normalize();while(t)}_cleanupFormattingNode(e){let t=!1;for(let i of Array.from(e.childNodes))t=this._cleanupFormattingNode(i)||t;if(e instanceof HTMLElement&&e.localName==="span"){let i=e;if(this._isRedundantSpan(i))return this._unwrapElement(i),!0;let n=i.parentElement;if(n instanceof HTMLElement&&n.localName==="span"&&this._haveSameAttributes(n,i))return this._unwrapElement(i),!0}return this._mergeAdjacentSpans(e)||t}_mergeAdjacentSpans(e){let t=!1,i=e.firstChild;for(;i;){if(i instanceof HTMLElement&&i.localName==="span"){let n=i.nextSibling;for(;n instanceof HTMLElement&&n.localName==="span"&&this._haveSameAttributes(i,n);){for(;n.firstChild;)i.appendChild(n.firstChild);n.remove(),t=!0,n=i.nextSibling}}i=i.nextSibling}return t}_isRedundantSpan(e){return this._getAttributeSignature(e)===""}_haveSameAttributes(e,t){return this._getAttributeSignature(e)===this._getAttributeSignature(t)}_getAttributeSignature(e){return Array.from(e.attributes).filter(t=>t.name!=="style"||t.value.trim()!=="").sort((t,i)=>t.name.localeCompare(i.name)).map(t=>`${t.name}=${t.value}`).join(";")}_unwrapElement(e){let t=e.parentNode;if(t){for(;e.firstChild;)t.insertBefore(e.firstChild,e);e.remove()}}handlesPointerEvent(e,t,i){let n=t.composedPath(),r=this._toolbar?.querySelector("stylo-editor");return r!=null&&n.indexOf(r)>=0}_formatSelection(e,t){let i=this.designerCanvas.rootDesignItem.element.shadowRoot;if(!i)return;let n=Ah(i);if(!n)return;let r=this._isFormatApplied(n,e,t),o=Om(n);if(o.length){for(let a of o)if(r){let l=this._findFormatTargets(a,e,t);if(l.length)for(let c of l)this._unsetFormat(c,e,t);else this._unsetFormat(a,e,t)}else this._setFormat(a,e,t);this.extendedItem.element.focus(),this._restoreSelection(o),this._refreshToolbarState()}}_scheduleToolbarStateRefresh(){this._toolbarStateAnimationFrame!=null&&cancelAnimationFrame(this._toolbarStateAnimationFrame),this._toolbarStateAnimationFrame=requestAnimationFrame(()=>{this._toolbarStateAnimationFrame=void 0,this._refreshToolbarState()})}_refreshToolbarState(){let e=this._getToolbarStateElement(),t=getComputedStyle(e),i=this._getTextDecorationValues(t.textDecorationLine||t.textDecoration);this._setToolbarButtonState("font-weight","800",this._isComputedFormatApplied(t,"font-weight","800")),this._setToolbarButtonState("font-style","italic",this._isComputedFormatApplied(t,"font-style","italic")),this._setToolbarButtonState("text-decoration","underline",i.includes("underline")),this._setToolbarButtonState("text-decoration","line-through",i.includes("line-through")),this._setToolbarButtonState("text-decoration","overline",i.includes("overline")),this._setToolbarSelectValue(this._getToolbarSelect("fontSize"),t.fontSize),this._setToolbarFontFamilyValue(this._getToolbarSelect("font-family"),t.fontFamily)}_getToolbarStateElement(){let e=this._getEditableSelection(),t=e?this._getFirstSelectedElement(e):null;return t&&this.extendedItem.element.contains(t)?t:this.extendedItem.element}_isComputedFormatApplied(e,t,i){switch(t){case"font-weight":{if(e.fontWeight==="bold")return!0;let n=parseFloat(e.fontWeight);return Number.isNaN(n)?!1:i?n>=parseFloat(i):n>=600}case"font-style":return e.fontStyle===i;case"text-decoration":return!!i&&this._getTextDecorationValues(e.textDecorationLine).includes(i);case"fontSize":return e.fontSize===i;case"font-family":return!!i&&this._normalizeFontFamily(e.fontFamily)===this._normalizeFontFamily(i);default:return i!=null&&e.getPropertyValue(t)===i}}_getToolbarSelect(e){return this._toolbar.querySelector(`select[data-command="${e}"]`)}_setToolbarButtonState(e,t,i){let n=this._toolbar.querySelector(`button[data-command="${e}"][data-command-parameter="${t}"]`);n&&(n.toggleAttribute("data-active",i),n.ariaPressed=String(i),n.style.backgroundColor=i?"rgb(191, 219, 254)":"",n.style.boxShadow=i?"inset 0 0 0 1px rgb(59, 130, 246)":"")}_setToolbarSelectValue(e,t){if(!e)return;this._removeTemporarySelectOptions(e);let i=Array.from(e.options).find(r=>r.value===t);if(i){e.value=i.value;return}if(!t){e.selectedIndex=-1;return}let n=document.createElement("option");n.value=t,n.text=t,n.dataset.temporaryToolbarValue="true",e.appendChild(n),e.value=t}_setToolbarFontFamilyValue(e,t){if(!e)return;let i=this._getPrimaryFontFamily(t),n=this._normalizeFontFamily(i);this._removeTemporarySelectOptions(e);let r=Array.from(e.options).find(a=>this._normalizeFontFamily(a.value)===n);if(r){e.value=r.value;return}if(!i){e.selectedIndex=-1;return}let o=document.createElement("option");o.value=i,o.text=i,o.dataset.temporaryToolbarValue="true",e.appendChild(o),e.value=i}_removeTemporarySelectOptions(e){Array.from(e.options).filter(t=>t.dataset.temporaryToolbarValue==="true").forEach(t=>t.remove())}_getPrimaryFontFamily(e){return e.replaceAll(/['"]/g,"").split(",")[0].trim()}_restoreSelection(e){let t=this._getEditableSelection();if(!t)return;let i=document.createRange();i.setStartBefore(e[0]),i.setEndAfter(e[e.length-1]),t.removeAllRanges(),t.addRange(i)}_getEditableSelection(){let e=this.designerCanvas.rootDesignItem.element.shadowRoot;if(!e)return document.getSelection();let t=Ah(e);return t&&"addRange"in t&&"removeAllRanges"in t?t:document.getSelection()}_isFormatApplied(e,t,i){let n=this._getFirstSelectedElement(e);return n?this._isComputedFormatApplied(getComputedStyle(n),t,i):!1}_getFirstSelectedElement(e){let t=this._getSelectionRange(e);if(!t)return null;if(t.startContainer.nodeType===Node.TEXT_NODE)return t.startContainer.parentElement;let i=t.commonAncestorContainer.nodeType===Node.TEXT_NODE?t.commonAncestorContainer.parentNode:t.commonAncestorContainer;if(!i)return t.startContainer instanceof HTMLElement?t.startContainer:null;let n=document.createTreeWalker(i,NodeFilter.SHOW_TEXT,{acceptNode:o=>{let a=o;return a.textContent?.length&&t.intersectsNode(a)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}}),r=i.nodeType===Node.TEXT_NODE&&t.intersectsNode(i)?i:n.nextNode();return r?.parentElement?r.parentElement:t.startContainer instanceof HTMLElement?t.startContainer:t.startContainer.parentElement}_getSelectionRange(e){if("getRangeAt"in e)return e.rangeCount?e.getRangeAt(0):null;let t=e[0];if(!t)return null;let i=document.createRange();return i.setStart(t.startContainer,t.startOffset),i.setEnd(t.endContainer,t.endOffset),i}_findFormatTargets(e,t,i){let n=[],r=e;for(;r&&r!==this.extendedItem.element;)this._hasInlineFormat(r,t,i)&&n.push(r),r=r.parentElement;return n}_hasInlineFormat(e,t,i){switch(t){case"font-weight":return e.style.fontWeight!=="";case"font-style":return e.style.fontStyle!=="";case"text-decoration":return!!i&&this._getTextDecorationValues(e.style.textDecorationLine||e.style.textDecoration).includes(i);case"fontSize":return e.style.fontSize!=="";case"font-family":return e.style.fontFamily!=="";default:return e.style.getPropertyValue(t)!==""}}_setFormat(e,t,i){switch(t){case"font-weight":e.style.fontWeight=i??"";break;case"font-style":e.style.fontStyle=i??"";break;case"text-decoration":{let n=this._getTextDecorationValues(e.style.textDecorationLine||e.style.textDecoration);i&&!n.includes(i)&&n.push(i),e.style.textDecorationLine=n.join(" ");break}case"fontSize":e.style.fontSize=i??"";break;case"font-family":e.style.fontFamily=i??"";break;default:i==null?e.style.removeProperty(t):e.style.setProperty(t,i);break}}_unsetFormat(e,t,i){switch(t){case"font-weight":e.style.removeProperty("font-weight");break;case"font-style":e.style.removeProperty("font-style");break;case"text-decoration":{let n=this._getTextDecorationValues(e.style.textDecorationLine||e.style.textDecoration).filter(r=>r!==i);n.length?e.style.textDecorationLine=n.join(" "):(e.style.removeProperty("text-decoration-line"),e.style.removeProperty("text-decoration"));break}case"fontSize":e.style.removeProperty("font-size");break;case"font-family":e.style.removeProperty("font-family");break;default:e.style.removeProperty(t);break}}_getTextDecorationValues(e){return e?e.split(" ").map(t=>t.trim()).filter(t=>t.length>0&&t!=="none"&&t!=="solid"):[]}_normalizeFontFamily(e){return e.replaceAll(/['"]/g,"").split(",")[0].trim().toLowerCase()}}});var Ks,Mh=g(()=>{"use strict";fe();oe();ft();$s();Ks=class{_textEditExtensions;constructor(e){e&&(this._editExistingText=!0)}activated(e){this._textCreated=!1}dispose(){}cursor="text";_textCreated=!1;_editExistingText=!1;pointerEventHandler(e,t,i){let n=e.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:if(!this._textCreated&&!this._editExistingText){this._textCreated=!0;let r=document.createElement("span"),o=O.createDesignItemFromInstance(r,e.serviceContainer,e.instanceServiceContainer);o.setStyle("position","absolute"),o.setStyle("left",n.x+"px"),o.setStyle("top",n.y+"px"),e.instanceServiceContainer.undoService.execute(new Se(e.rootDesignItem,e.rootDesignItem.childCount,o)),e.extensionManager.applyExtensionInstance(o,new Xi(e.extensionManager,e,o)),e.serviceContainer.globalContext.finishedWithTool(this),setTimeout(()=>{r.focus()},50)}else for(let r of this._textEditExtensions)r.handlesPointerEvent&&(r.handlesPointerEvent(e,t,i)||e.serviceContainer.globalContext.finishedWithTool(this));break}}keyboardEventHandler(e,t,i){}}});var Qs,Lh=g(()=>{"use strict";le();ie();Qs=class extends F{_path;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){this._path||(this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("class","svg-gray-out"),this._path.setAttribute("fill-rule","evenodd"),this._addOverlay(this._path,M.Background));let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0],t={width:this.designerCanvas.containerBoundingRect.width/this.designerCanvas.scaleFactor,height:this.designerCanvas.containerBoundingRect.height/this.designerCanvas.scaleFactor},i="M0 0 L"+t.width+" 0 L"+t.width+" "+t.height+" L0 "+t.height+" Z ";i+="M"+e.p1.x+" "+e.p1.y+" L"+e.p2.x+" "+e.p2.y+" L"+e.p3.x+" "+e.p3.y+" L"+e.p4.x+" "+e.p4.y+" Z",this._path.setAttribute("d",i)}dispose(){this._removeAllOverlays(),this._path=null}}});import{css as o_}from"@node-projects/base-custom-webcomponent";var Zs,Oh=g(()=>{"use strict";Lh();Zs=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new Qs(e,t,i)}style=o_`.svg-gray-out{stroke:transparent;fill:rgba(211,211,211,.8);pointer-events:none}`}});var qs,Nh=g(()=>{"use strict";le();ie();qs=class extends F{_text;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);this._text=this._drawText("Press ALT (or hold) to enter container",e.x+5,e.y+12,"svg-text-enter-container",this._text,M.Foreground),this._text.style.fontSize=14/this.designerCanvas.scaleFactor+"px",this._text.setAttribute("x",""+(e.x+5/this.designerCanvas.scaleFactor)),this._text.setAttribute("y",""+(e.y+12/this.designerCanvas.scaleFactor))}dispose(){this._removeAllOverlays()}}});import{css as a_}from"@node-projects/base-custom-webcomponent";var Js,Vh=g(()=>{"use strict";Nh();Js=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new qs(e,t,i)}static style=a_`.svg-text-enter-container{stroke:none;fill:#000;stroke-width:1;font-weight:800;font-family:monospace}`}});var eo,Rh=g(()=>{"use strict";le();ie();eo=class extends F{_rect;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];this._valuesHaveChanges(i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p3.x,i.p3.y,i.p4.x,i.p4.y)&&(this._rect=this._drawTransformedRect(i,"svg-invisible-div",this._rect,M.Background))}dispose(){this._removeAllOverlays()}}});import{css as l_}from"@node-projects/base-custom-webcomponent";var zh,to,io=g(()=>{"use strict";Rh();zh="invisibleElementExtensionShowOverlay",to=class{elementFilter;constructor(e=t=>t.name=="div"&&window.getComputedStyle(t.element).display!="inline"){this.elementFilter=e}shouldExtend(e,t,i){if(t.instanceServiceContainer.designContext.extensionOptions[zh]!==!1&&this.elementFilter(i)){let n=window.getComputedStyle(i.element);return n.backgroundColor=="rgba(0, 0, 0, 0)"&&n.borderStyle=="none"}return!1}getExtension(e,t,i){return new eo(e,t,i)}static style=l_`.svg-invisible-div{stroke:#d3d3d3;fill:transparent;stroke-width:1}`}});var no,Fh=g(()=>{"use strict";oe();no=class{shouldProvideContextmenu(e,t,i,n){return n=="designer"}provideContextMenuItems(e,t,i){let n=t.elementsFromPoint(e.x,e.y);return n.length>0?[{title:"items below",children:[...n.map(r=>({title:"select: "+r.localName+(r.id?" (#"+r.id+")":""),action:()=>this._select(t,r)}))]}]:[]}_select(e,t){let i=O.GetOrCreateDesignItem(t,t,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.selectionService.setSelectedElements([i])}}});var ro,Bh=g(()=>{"use strict";mi();Bi();ue();ro=class{_basePlacementService;constructor(e){this._basePlacementService=e??new mt}enterContainer(e,t,i){for(let n of t)e.insertChild(n),n.removeStyle("position"),n.removeStyle("left"),n.removeStyle("top"),n.removeStyle("right"),n.removeStyle("width"),n.removeStyle("height"),n.removeStyle("transform")}leaveContainer(e,t){for(let i of t)if(!i.lastContainerSize){let n=K(i.element);i.lastContainerSize={width:n.width,height:n.height}}}serviceForContainer(e,t,i){return t.display=="grid"||t.display=="inline-grid"?!(i!=null&&i.getComputedStyle()?.position=="absolute"):!1}isEnterableContainer(e){return this._basePlacementService.isEnterableContainer(e)}canEnter(e,t){return e.instanceServiceContainer.designerCanvas.readOnly?!1:this._basePlacementService.canEnter(e,t)}canLeave(e,t){return!0}getElementOffset(e,t){return K(e.element)}placePoint(e,t,i,n,r,o,a){return i.serviceContainer.getLastServiceWhere("containerService",c=>c instanceof mt).placePoint(e,t,i,n,r,o,a)}startPlace(e,t,i,n,r,o,a){}place(e,t,i,n,r,o,a){let l=at(i),c=t.getNormalizedEventCoordinates(e),h=kn(i,c,l);if(h){let{row:p,column:d,cell:u}=h,m=Wi(a[0].element);u.name?(a[0].element.style.gridColumn="",a[0].element.style.gridRow="",a[0].element.style.gridArea=u.name):(a[0].element.style.gridArea="",m.colSpan<=1?(a[0].element.style.gridColumn=""+(d+1),a[0].element.style.gridRow=""+(p+1)):(a[0].element.style.gridColumnStart=""+(d+1),a[0].element.style.gridRowStart=""+(p+1),a[0].element.style.gridColumnEnd=""+(d+m.colSpan+1),a[0].element.style.gridRowEnd=""+(p+m.rowSpan+1)))}t.extensionManager.refreshAllExtensions([i])}finishPlace(e,t,i,n,r,o,a){let l=at(i),c=t.getNormalizedEventCoordinates(e),h=kn(i,c,l);if(h){let{row:p,column:d,cell:u}=h,m=Wi(a[0].element);u.name?(a[0].setStyle("grid-area",u.name),a[0].removeStyle("grid-row-start"),a[0].removeStyle("grid-row-end"),a[0].removeStyle("grid-column-start"),a[0].removeStyle("grid-column-end"),a[0].removeStyle("grid-column"),a[0].removeStyle("grid-row"),a[0].setStyle("grid-area",u.name)):m.colSpan<=1?(a[0].removeStyle("grid-area"),a[0].removeStyle("grid-row-start"),a[0].removeStyle("grid-row-end"),a[0].removeStyle("grid-column-start"),a[0].removeStyle("grid-column-end"),a[0].setStyle("grid-column",""+(d+1)),a[0].setStyle("grid-row",""+(p+1))):(a[0].removeStyle("grid-area"),a[0].removeStyle("grid-column"),a[0].removeStyle("grid-row"),a[0].setStyle("grid-column-start",""+(d+1)),a[0].setStyle("grid-row-start",""+(p+1)),a[0].setStyle("grid-column-end",""+(d+m.colSpan+1)),a[0].setStyle("grid-row-end",""+(p+m.rowSpan+1)))}t.extensionManager.refreshAllExtensions([i])}moveElements(e,t,i){}}});var so,Hh=g(()=>{"use strict";so=class{getElementAtPoint(e,t){return e.getElementAtPoint(t)}}});var oo,Gh=g(()=>{"use strict";ue();Bi();oo=class{_basePlacementService;constructor(e){this._basePlacementService=e??new mt}enterContainer(e,t,i){for(let n of t)e.insertChild(n),n.removeStyle("position"),n.removeStyle("left"),n.removeStyle("top"),n.removeStyle("right"),n.removeStyle("transform")}leaveContainer(e,t){for(let i of t)if(!i.lastContainerSize){let n=K(i.element);i.lastContainerSize={width:n.width,height:n.height}}}serviceForContainer(e,t,i){return t.display=="flex"||t.display=="inline-flex"?!(i!=null&&i.getComputedStyle()?.position=="absolute"):!1}isEnterableContainer(e){return this._basePlacementService.isEnterableContainer(e)}canEnter(e,t){return e.instanceServiceContainer.designerCanvas.readOnly?!1:this._basePlacementService.canEnter(e,t)}canLeave(e,t){return!0}getElementOffset(e,t){return K(e.element)}placePoint(e,t,i,n,r,o,a){return i.serviceContainer.getLastServiceWhere("containerService",c=>c instanceof mt).placePoint(e,t,i,n,r,o,a)}startPlace(e,t,i,n,r,o,a){}place(e,t,i,n,r,o,a){let l=t.getNormalizedEventCoordinates(e),c=getComputedStyle(i.element),h=Array.from(i.children()).filter(p=>!p.isEmptyTextNode).map(p=>[p,t.getNormalizedElementCoordinates(p.element)]);if(c.flexDirection=="row"||c.flexDirection=="row-reverse"){h.sort(m=>m[1].x);let p=null;for(let m of h)if(m[1].x+m[1].width/2<l.x&&(p=m,c.flexDirection=="row-reverse"))break;let d=h.indexOf(p),u=h.indexOf(h.find(m=>m[0]==a[0]));if(p&&p[0]!=a[0]){if(c.flexDirection=="row-reverse"&&d-1===u||c.flexDirection=="row"&&d+1===u)return;let m=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="row-reverse"?p[0].insertAdjacentElement(a[0],"beforebegin"):p[0].insertAdjacentElement(a[0],"afterend"),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(m)}else if(p==null){if(u==0)return;let m=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="row-reverse"?i.insertChild(a[0]):i.insertChild(a[0],0),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(m)}}else if(c.flexDirection=="column"||c.flexDirection=="column-reverse"){h.sort(m=>m[1].y);let p=null;for(let m of h)if(m[1].y+m[1].height/2<l.y&&(p=m,c.flexDirection=="column-reverse"))break;let d=h.indexOf(p),u=h.indexOf(h.find(m=>m[0]==a[0]));if(p&&p[0]!=a[0]){if(c.flexDirection=="column-reverse"&&d-1===u||c.flexDirection=="column"&&d+1===u)return;let m=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="column-reverse"?p[0].insertAdjacentElement(a[0],"beforebegin"):p[0].insertAdjacentElement(a[0],"afterend"),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(m)}else if(p==null){if(u==0)return;let m=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="column-reverse"?i.insertChild(a[0]):i.insertChild(a[0],0),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(m)}}t.extensionManager.refreshAllExtensions([i])}finishPlace(e,t,i,n,r,o,a){}moveElements(e,t,i){}}});var c_,h_,ao,Wh=g(()=>{"use strict";ue();c_="provideSnaplinesWithDistance",h_="provideSnaplinesWithDistanceDistance",ao=class{provideSnaplines(e,t){{let i=e.instanceServiceContainer.designerCanvas,n=new Map(t.map(m=>[m.element,m])),r=K(e.element),o=i.instanceServiceContainer.designContext.extensionOptions[c_]!==!1,a=i.instanceServiceContainer.designContext.extensionOptions[h_]??5,l=[],c=[],h=[],p=[],d=e.document.createTreeWalker(e.usableContainer,NodeFilter.SHOW_ELEMENT),u=d.nextNode();for(;u!=null;)if(n.has(u))u=d.nextSibling();else{let m=K(u),f=(m.x-r.x)/i.scaleFactor,v=(m.x-r.x+m.width/2)/i.scaleFactor,y=(m.x-r.x+m.width)/i.scaleFactor,x=(m.y-r.y)/i.scaleFactor,w=(m.y-r.y+m.height/2)/i.scaleFactor,C=(m.y-r.y+m.height)/i.scaleFactor,S={x:f+r.x,y:x+r.y,width:m.width/i.scaleFactor,height:m.height/i.scaleFactor};o&&l.push([f-a,S]),l.push([f,S]),c.push([v,S]),l.push([y,S]),o&&l.push([y+a,S]),o&&h.push([x-a,S]),h.push([x,S]),p.push([w,S]),h.push([C,S]),o&&h.push([C+a,S]),u=d.nextNode()}return l.push([0,{x:0,y:0,width:0,height:0}]),l.sort((m,f)=>m[0]-f[0]),c.sort((m,f)=>m[0]-f[0]),h.push([0,{x:0,y:0,width:0,height:0}]),h.sort((m,f)=>m[0]-f[0]),p.sort((m,f)=>m[0]-f[0]),{outerRect:r,positionsH:l,positionsMiddleH:c,positionsV:h,positionsMiddleV:p}}}}});var lo,jh=g(()=>{"use strict";oe();ft();lo=class{dragOver(e,t){return e.readOnly?"none":t.dataTransfer.items[0].type.startsWith("image/")?"copy":"none"}async drop(e,t){if(t.dataTransfer.files[0].type.startsWith("image/")){let i=await O.createDesignItemFromImageBlob(e.serviceContainer,e.instanceServiceContainer,t.dataTransfer.files[0]),n=i.openGroup("Insert of <img>");i.setStyle("position","absolute");let r=e.getNormalizedEventCoordinates(t);i.setStyle("top",r.y+"px"),i.setStyle("left",r.x+"px"),e.instanceServiceContainer.undoService.execute(new Se(e.rootDesignItem,e.rootDesignItem.childCount,i)),n.commit(),requestAnimationFrame(()=>e.instanceServiceContainer.selectionService.setSelectedElements([i]))}}}});import{css as p_}from"@node-projects/base-custom-webcomponent";var co,Yh=g(()=>{"use strict";$s();co=class{shouldExtend(e,t,i){return!(i.isRootItem||i.name==="input")}getExtension(e,t,i){return new Xi(e,t,i)}static style=p_`.svg-edit-text-clickoutside{stroke:transparent;fill:#d3d3d3;opacity:.7}`}});async function vI(s){On([["text/plain",s]])}async function On(s){if(navigator.clipboard){try{let e=[];for(let t of s)e.push(new ClipboardItem({[t[0]]:new Blob([t[1]],{type:t[0]})}));await navigator.clipboard.write(e)}catch{await navigator.clipboard.writeText(s[0][1]),Uh=s[0][1]}console.info("Copy to clipboard successful")}else{let e=document.activeElement;for(;e?.shadowRoot?.activeElement;)e=e.shadowRoot.activeElement;Uh=s[0][1];let t=document.createElement("textarea");t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.width="2em",t.style.height="2em",t.style.padding="0",t.style.border="none",t.style.outline="none",t.style.boxShadow="none",t.style.background="transparent",t.value=s[0][1],document.body.appendChild(t),t.select();try{document.execCommand("copy")}catch{try{document.execCommand("copy")}catch(n){console.error(n)}}document.body.removeChild(t),e.focus()}}async function ho(){return navigator.clipboard?new Promise(async(s,e)=>{let t=await navigator.clipboard.readText();s(t)}):new Promise(async(s,e)=>{let t=document.createElement("textarea");t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.width="2em",t.style.height="2em",t.style.padding="0",t.style.border="none",t.style.outline="none",t.style.boxShadow="none",t.style.background="transparent",document.body.appendChild(t),t.focus(),t.select(),document.execCommand("paste");let i=t.value;i||(i=Uh),document.body.removeChild(t),s(i)})}async function po(){return navigator.clipboard?await navigator.clipboard.read():null}var Uh,uo=g(()=>{"use strict";Uh=null});var Nm,mo,Xh=g(()=>{"use strict";st();uo();Me();Nm="web text/positions",mo=class{async copyItems(e){let t=me(e),i=J.ConvertToString(t,!1),n=t.map(r=>r.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(r.element));On([["text/html",i],[Nm,JSON.stringify(n)]])}async getPasteItems(e,t){let i="",n=null,r=await po();if(r!=null){try{i=await(await r[0].getType("text/html"))?.text()}catch{}i||(i=await(await r[0].getType("text/plain"))?.text());try{let a=await(await r[0].getType(Nm))?.text();n=JSON.parse(a)}catch{}}else i=await ho();return[await e.htmlParserService.parse(i,e,t,!0),n??void 0]}}});var ke,$h=g(()=>{"use strict";(function(s){s[s.TOP=0]="TOP",s[s.RIGHT=1]="RIGHT",s[s.BOTTOM=2]="BOTTOM",s[s.LEFT=3]="LEFT",s[s.VERTICAL_CENTER=4]="VERTICAL_CENTER",s[s.HORIZONTAL_CENTER=5]="HORIZONTAL_CENTER"})(ke||(ke={}))});var Tt,qt,Vm=g(()=>{"use strict";$h();Tt=class{static arrangeElements(e,t,i){switch(e){case ke.TOP:{let n=this.formGroup(qt.TOP,t),o=t.getNormalizedElementCoordinates(i[0].element).y;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.y){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("bottom")&&!a.hasStyle("top")){let h=c.y+c.height-o-l.height;this.arrange(a,"bottom",h+"px")}else{let h=o-c.y;this.arrange(a,"top",h+"px")}}}n.commit();break}case ke.BOTTOM:{let n=this.formGroup(qt.BOTTOM,t),r=t.getNormalizedElementCoordinates(i[0].element),o=r.y+r.height;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.y+l.height){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("bottom")&&!a.hasStyle("top")){let h=c.y+c.height-o;this.arrange(a,"bottom",h+"px")}else{let h=o-l.height-c.y;this.arrange(a,"top",h+"px")}}}n.commit();break}case ke.LEFT:{let n=this.formGroup(qt.LEFT,t),o=t.getNormalizedElementCoordinates(i[0].element).x;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.x){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("right")&&!a.hasStyle("left")){let h=c.x+c.width-o-l.width;this.arrange(a,"right",h+"px")}else{let h=o-c.x;this.arrange(a,"left",h+"px")}}}n.commit();break}case ke.RIGHT:{let n=this.formGroup(qt.RIGHT,t),r=t.getNormalizedElementCoordinates(i[0].element),o=r.x+r.width;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.x+l.width){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("right")&&!a.hasStyle("left")){let h=c.x+c.width-o;this.arrange(a,"right",h+"px")}else{let h=o-l.width-c.x;this.arrange(a,"left",h+"px")}}}n.commit();break}case ke.VERTICAL_CENTER:{let n=this.formGroup(qt.VERTICAL_CENTER,t),r=t.getNormalizedElementCoordinates(i[0].element),o=r.y+r.height/2;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.y+l.height/2){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("bottom")&&!a.hasStyle("top")){let h=c.y+c.height-o-l.height/2;this.arrange(a,"bottom",h+"px")}else{let h=o-l.height/2-c.y;this.arrange(a,"top",h+"px")}}}n.commit();break}case ke.HORIZONTAL_CENTER:{let n=this.formGroup(qt.HORIZONTAL_CENTER,t),r=t.getNormalizedElementCoordinates(i[0].element),o=r.x+r.width/2;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.x+l.width/2){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("right")&&!a.hasStyle("left")){let h=c.x+c.width-o-l.width/2;this.arrange(a,"right",h+"px")}else{let h=o-l.width/2-c.x;this.arrange(a,"left",h+"px")}}}n.commit();break}}}static arrange(e,t,i){e.setStyle(t,i)}static formGroup(e,t){return t.instanceServiceContainer.selectionService.primarySelection.openGroup(e)}};(function(s){s.TOP="arrangeTop",s.RIGHT="arrangeRight",s.BOTTOM="arrangeBottom",s.LEFT="arrangeLeft",s.HORIZONTAL_CENTER="arrangeHorizontalCenter",s.VERTICAL_CENTER="arrangeVerticalCenter"})(qt||(qt={}))});var fo,Kh=g(()=>{"use strict";Dt();Vm();$h();fo=class{canExecuteCommand(e,t,i){return t.type==A.moveBackward||t.type==A.moveForward||t.type==A.moveToBack||t.type==A.moveToFront?e.instanceServiceContainer.selectionService.primarySelection!=null&&!e.instanceServiceContainer.selectionService.primarySelection.isRootItem:t.type==A.arrangeBottom||t.type==A.arrangeCenter||t.type==A.arrangeLeft||t.type==A.arrangeMiddle||t.type==A.arrangeRight||t.type==A.arrangeTop||t.type==A.unifyHeight||t.type==A.unifyWidth?e.instanceServiceContainer.selectionService.selectedElements.length>1:t.type==A.rotateCounterClockwise||t.type==A.rotateClockwise||t.type==A.mirrorHorizontal||t.type==A.mirrorVertical?e.instanceServiceContainer.selectionService.selectedElements.length>0&&!e.instanceServiceContainer.selectionService.primarySelection.isRootItem:null}async executeCommand(e,t,i){i=i??[...e.instanceServiceContainer.selectionService.selectedElements];let n=i[0];if(t.type==A.moveBackward){let o=n.parent.indexOf(n)-1;o>=0&&n.parent.insertChild(n,o)}else if(t.type==A.moveForward){let o=n.parent.indexOf(n)+1;o<n.parent.childCount&&n.parent.insertChild(n,o)}else if(t.type==A.moveToBack)n.parent.insertChild(n,0);else if(t.type==A.moveToFront)n.parent.insertChild(n);else if(t.type==A.arrangeTop)Tt.arrangeElements(ke.TOP,e,i);else if(t.type==A.arrangeRight)Tt.arrangeElements(ke.RIGHT,e,i);else if(t.type==A.arrangeLeft)Tt.arrangeElements(ke.LEFT,e,i);else if(t.type==A.arrangeBottom)Tt.arrangeElements(ke.BOTTOM,e,i);else if(t.type==A.arrangeCenter)Tt.arrangeElements(ke.HORIZONTAL_CENTER,e,i);else if(t.type==A.arrangeMiddle)Tt.arrangeElements(ke.VERTICAL_CENTER,e,i);else if(t.type==A.unifyHeight){let o=n.openGroup("unifyHeight"),a=n.getStyle("height");for(let l of i)l.setStyle("height",a);o.commit()}else if(t.type==A.unifyWidth){let o=n.openGroup("unifyWidth"),a=n.getStyle("width");for(let l of i)l.setStyle("width",a);o.commit()}else if(t.type==A.rotateCounterClockwise){let o=n.openGroup("rotateCounterClockwise");var r=n.getStyle("transform");let a=0,l="";if(r!=null)try{r.includes("-")?a=parseInt(r.match(/\d+/)[0])*-1:a=parseInt(r.match(/\d+/)[0]),l="rotate("+(a-90)+"deg)"}catch{l="rotate(-90deg)"}else l="rotate(-90deg)";for(let c of i)c.setStyle("transform",l);o.commit()}else if(t.type==A.rotateClockwise){let o=n.openGroup("rotateClockwise");var r=n.getStyle("transform");let l=0,c="";if(r!=null)try{r.includes("-")?l=parseInt(r.match(/\d+/)[0])*-1:l=parseInt(r.match(/\d+/)[0]),c="rotate("+(l+90)+"deg)"}catch{c="rotate(90deg)"}else c="rotate(90deg)";for(let h of i)h.setStyle("transform",c);o.commit()}else if(t.type==A.mirrorHorizontal){let o=n.openGroup("mirrorHorizontal");for(let a of i)a.setStyle("transform","scaleX(-1)");o.commit()}else if(t.type==A.mirrorVertical){let o=n.openGroup("mirrorVertical");for(let a of i)a.setStyle("transform","scaleY(-1)");o.commit()}else return null;return!0}}});var Mt,Qh=g(()=>{"use strict";Mt=class{_space;constructor(e){this._space=e}provideButtons(e,t){let i=document.createElement("div");return i.style.width=this._space+"px",i.oncontextmenu=n=>{n.preventDefault()},[i]}}});var go,Zh=g(()=>{"use strict";mi();le();ie();go=class extends F{_cells;_texts;_gaps;_group;gridInformation;gridInformationString;_lastEvent;gridColor;gridFillColor;constructor(e,t,i,n,r){super(e,t,i),this.gridColor=n,this.gridFillColor=r}extend(e,t){this._initSVGArrays(),this.refresh(t)}refresh(e,t){this.gridInformation=at(this.extendedItem);let i=JSON.stringify(this.gridInformation);if(i!==this.gridInformationString||t!=null&&this._lastEvent!==t){t&&(this._lastEvent=t),this.gridInformationString=i;let n=this.gridInformation.cells,r=this._lastEvent&&this._lastEvent instanceof MouseEvent?kn(this.extendedItem,this.designerCanvas.getNormalizedEventCoordinates(this._lastEvent),this.gridInformation):null;n[0][0]&&!isNaN(n[0][0].height)&&!isNaN(n[0][0].width)&&((this.gridInformation.cells.length!=this._cells.length||this.gridInformation.cells[0].length!=this._cells[0].length)&&this._initSVGArrays(),this._group||(this._group=this._drawGroup(null,this._group,M.Background),this._group.style.transformOrigin="0 0",this._group.style.setProperty("--svg-grid-stroke-color",this.gridColor),this._group.style.setProperty("--svg-grid-fill-color",this.gridFillColor)),this._group.style.transform=ji(this.extendedItem).toString(),this.gridInformation.gaps.forEach((o,a)=>{this._gaps[a]=this._drawRect(o.localX,o.localY,o.width,o.height,"svg-grid-gap",this._gaps[a],M.Background),this._group.appendChild(this._gaps[a])}),n.forEach((o,a)=>{o.forEach((l,c)=>{this._cells[a][c]=this._drawRect(l.localX,l.localY,l.width,l.height,"svg-grid",this._cells[a][c],M.Background),this._group.appendChild(this._cells[a][c]),l.name&&(this._texts[a][c]=this._drawText(l.name,l.localX,l.localY,"svg-grid-area",this._texts[a][c],M.Background),this._texts[a][c].setAttribute("dominant-baseline","hanging")),r?.row===a&&r?.column===c&&this._cells[a][c].setAttribute("class","svg-grid-current-cell")})}))}}dispose(){this._removeAllOverlays()}_initSVGArrays(){this._removeAllOverlays(),this._group=null,this.gridInformation=at(this.extendedItem),this._cells=new Array(this.gridInformation.cells.length),this.gridInformation.cells.forEach((e,t)=>this._cells[t]=new Array(e.length)),this._texts=new Array(this.gridInformation.cells.length),this.gridInformation.cells.forEach((e,t)=>this._texts[t]=new Array(e.length)),this._gaps=new Array(this.gridInformation.gaps.length)}}});import{css as d_}from"@node-projects/base-custom-webcomponent";var Nn,gi,Vn=g(()=>{"use strict";Zh();Zt();Z();Nn="gridExtensionShowOverlay",gi=class{gridColor;gridFillColor;constructor(e="orange",t="#ff944722"){this.gridColor=e,this.gridFillColor=t}shouldExtend(e,t,i){if(i.nodeType!=D.Element)return!1;let n=getComputedStyle(i.element).display;return n=="grid"||n=="inline-grid"?t.instanceServiceContainer.designContext.extensionOptions[Nn]!==!1:!1}getExtension(e,t,i){return new go(e,t,i,this.gridColor,this.gridFillColor)}static style=d_`.svg-grid{stroke:var(--svg-grid-stroke-color);stroke-dasharray:5;fill:var(--svg-grid-fill-color)}.svg-grid-current-cell{stroke:var(--svg-grid-stroke-color);stroke-dasharray:5;fill:#e3ff4722}.svg-grid-area{font-size:8px}.svg-grid-gap{stroke:transparent;fill:var(--svg-grid-stroke-color);opacity:.3;mask:url(#mask-stripe-grid)}.svg-grid-header{fill:var(--svg-grid-fill-color);stroke:var(--svg-grid-stroke-color)}.svg-grid-plus-sign{stroke:#000}`;static svgDefs=ui`<pattern id="pattern-stripe-grid" width="4" height="4" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1" height="4" transform="translate(0,0)" fill="white"></rect></pattern><mask id="mask-stripe-grid"><rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-stripe-grid)"></mask>`}});var yo,qh=g(()=>{"use strict";Vn();si();yo=class extends tt{constructor(){super(Nn,"G","show grid overlay")}}});var vo,Jh=g(()=>{"use strict";fe();ie();Ue();oe();ft();Xe();pi();vo=class{cursor="crosshair";_path;_startPoint;_minX;_minY;_maxX;_maxY;_px;_py;constructor(){}activated(e){}dispose(){}pointerEventHandler(e,t,i){let n=e.getNormalizedEventCoordinates(t),r=10;switch(t.type){case P.PointerDown:this._startPoint=n,t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("fill",e.serviceContainer.globalContext.fillBrush),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),this._path.setAttribute("x",n.x.toString()),this._path.setAttribute("y",n.y.toString()),this._path.setAttribute("width","0"),this._path.setAttribute("height","0"),e.overlayLayer.addOverlay(this.constructor.name,this._path,M.Foreground);break;case P.PointerMove:if(this._path)if(this._minX=n.x<this._startPoint.x?n.x:this._startPoint.x,this._maxX=n.x>this._startPoint.x?n.x:this._startPoint.x,this._minY=n.y<this._startPoint.y?n.y:this._startPoint.y,this._maxY=n.y>this._startPoint.y?n.y:this._startPoint.y,X(t)){if(t.shiftKey){let d=2*zi(this._startPoint,n);this._px=this._startPoint.x-d/2,this._py=this._startPoint.y-d/2,this._path.setAttribute("width",d.toString()),this._path.setAttribute("height",d.toString())}else{let d=2*(this._maxX-this._minX),u=2*(this._maxY-this._minY);this._px=n.x<this._startPoint.x?n.x:this._startPoint.x-d/2,this._py=n.y<this._startPoint.y?n.y:this._startPoint.y-u/2,this._path.setAttribute("width",d.toString()),this._path.setAttribute("height",u.toString())}this._path.setAttribute("x",this._px.toString()),this._path.setAttribute("y",this._py.toString())}else{if(t.shiftKey){let d=zi(this._startPoint,n);this._px=n.x<this._startPoint.x?this._startPoint.x-d:this._startPoint.x,this._py=n.y<this._startPoint.y?this._startPoint.y-d:this._startPoint.y,this._path.setAttribute("width",d.toString()),this._path.setAttribute("height",d.toString())}else this._px=n.x<this._startPoint.x?n.x:this._startPoint.x,this._py=n.y<this._startPoint.y?n.y:this._startPoint.y,this._path.setAttribute("width",(this._maxX-this._minX).toString()),this._path.setAttribute("height",(this._maxY-this._minY).toString());this._path.setAttribute("x",this._px.toString()),this._path.setAttribute("y",this._py.toString())}break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let o=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let a=document.createElementNS("http://www.w3.org/2000/svg","svg"),l=o.x-r,c=o.y-r,h=e.serviceContainer.options.roundPixelsToDecimalPlaces;this._path.setAttribute("x",pe(this._px-l,h)),this._path.setAttribute("y",pe(this._py-c,h)),this._path.setAttribute("width",pe(Number(this._path.getAttribute("width")),h)),this._path.setAttribute("height",pe(Number(this._path.getAttribute("height")),h)),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),a.appendChild(this._path),a.style.left=pe(l,h)+"px",a.style.top=pe(c,h)+"px",a.style.position="absolute",a.style.width=Math.round(o.width+2*r)+"px",a.style.height=Math.round(o.height+2*r)+"px",a.style.overflow="visible",a.style.stroke=e.serviceContainer.globalContext.strokeColor,a.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=null;let p=O.createDesignItemFromInstance(a,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new Se(e.rootDesignItem,e.rootDesignItem.childCount,p)),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}}});var _o,ep=g(()=>{"use strict";fe();ie();Ue();oe();ft();Xe();pi();_o=class{cursor="crosshair";_path;_startPoint;_radius;_cx;_cy;constructor(){}activated(e){}dispose(){}pointerEventHandler(e,t,i){let n=e.getNormalizedEventCoordinates(t),r=10;switch(t.type){case P.PointerDown:this._startPoint=n,t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","ellipse"),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("fill",e.serviceContainer.globalContext.fillBrush),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),this._path.setAttribute("cx",n.x.toString()),this._path.setAttribute("cy",n.y.toString()),this._path.setAttribute("rx","0"),this._path.setAttribute("ry","0"),e.overlayLayer.addOverlay(this.constructor.name,this._path,M.Foreground);break;case P.PointerMove:if(this._path)if(this._radius={x:Math.abs(n.x-this._startPoint.x),y:Math.abs(n.y-this._startPoint.y)},X(t))if(this._path.setAttribute("cx",this._startPoint.x.toString()),this._path.setAttribute("cy",this._startPoint.y.toString()),this._cx=this._startPoint.x,this._cy=this._startPoint.y,t.shiftKey){let d=zi(this._startPoint,n);this._path.setAttribute("rx",d.toString()),this._path.setAttribute("ry",d.toString())}else this._path.setAttribute("rx",this._radius.x.toString()),this._path.setAttribute("ry",this._radius.y.toString());else{if(t.shiftKey){let d=zi(this._startPoint,n);this._radius={x:d,y:d}}this._cx=n.x<this._startPoint.x?this._startPoint.x-this._radius.x/2:this._startPoint.x+this._radius.x/2,this._cy=n.y<this._startPoint.y?this._startPoint.y-this._radius.y/2:this._startPoint.y+this._radius.y/2,this._path.setAttribute("cx",this._cx.toString()),this._path.setAttribute("cy",this._cy.toString()),this._path.setAttribute("rx",(this._radius.x/2).toString()),this._path.setAttribute("ry",(this._radius.y/2).toString())}break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let o=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let a=document.createElementNS("http://www.w3.org/2000/svg","svg"),l=o.x-r,c=o.y-r,h=e.serviceContainer.options.roundPixelsToDecimalPlaces;a.appendChild(this._path),this._path.setAttribute("cx",pe(this._cx-l,h)),this._path.setAttribute("cy",pe(this._cy-c,h)),this._path.setAttribute("rx",pe(Number(this._path.getAttribute("rx")),h)),this._path.setAttribute("ry",pe(Number(this._path.getAttribute("ry")),h)),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),a.style.left=pe(l,h)+"px",a.style.top=pe(c,h)+"px",a.style.position="absolute",a.style.width=Math.round(o.width+2*r)+"px",a.style.height=Math.round(o.height+2*r)+"px",a.style.overflow="visible",a.style.stroke=e.serviceContainer.globalContext.strokeColor,a.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=null;let p=O.createDesignItemFromInstance(a,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new Se(e.rootDesignItem,e.rootDesignItem.childCount,p)),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}}});var xo,tp=g(()=>{"use strict";fe();ie();Ue();oe();ft();pi();xo=class{cursor="crosshair";_path;_startPoint;_endPoint;constructor(){}activated(e){}dispose(){}pointerEventHandler(e,t,i){let n=e.getNormalizedEventCoordinates(t),r=10;switch(t.type){case P.PointerDown:this._startPoint=n,t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","line"),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),this._path.setAttribute("x1",n.x.toString()),this._path.setAttribute("y1",n.y.toString()),this._path.setAttribute("x2",n.x.toString()),this._path.setAttribute("y2",n.y.toString()),e.overlayLayer.addOverlay(this.constructor.name,this._path,M.Foreground);break;case P.PointerMove:if(this._path)if(t.shiftKey){let d=Ct(this._startPoint,n);this._path.setAttribute("x2",d.x.toString()),this._path.setAttribute("y2",d.y.toString()),this._endPoint=d}else this._path.setAttribute("x2",n.x.toString()),this._path.setAttribute("y2",n.y.toString()),this._endPoint=n;break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let o=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let a=document.createElementNS("http://www.w3.org/2000/svg","svg"),l=o.x-r,c=o.y-r,h=e.serviceContainer.options.roundPixelsToDecimalPlaces;this._path.setAttribute("x1",pe(this._startPoint.x-l,h)),this._path.setAttribute("y1",pe(this._startPoint.y-c,h)),this._path.setAttribute("x2",pe(this._endPoint.x-l,h)),this._path.setAttribute("y2",pe(this._endPoint.y-c,h)),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),a.appendChild(this._path),a.style.left=pe(l,h)+"px",a.style.top=pe(c,h)+"px",a.style.position="absolute",a.style.width=Math.round(o.width+2*r)+"px",a.style.height=Math.round(o.height+2*r)+"px",a.style.overflow="visible",a.style.stroke=e.serviceContainer.globalContext.strokeColor,a.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=null;let p=O.createDesignItemFromInstance(a,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new Se(e.rootDesignItem,e.rootDesignItem.childCount,p)),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}}});var $i,bo=g(()=>{"use strict";$i=class s{static _helperElement=document.createElement("div");static combine(e,t){if(s.applyStylesToHelper(e),s.combineBorder(e),s.combineMargin(e),s.combinePadding(e),s.combineInset(e),s.combineBackground(e),s.combineFont(e),e=s.combineBrowserSupportedShorthands(e),t)for(let i of t)e.has(i[0])&&e.get(i[0])===i[1]&&e.delete(i[0]);return e}static applyStylesToHelper(e){let t=s._helperElement;t.setAttribute("style","");for(let i of e)i[0].startsWith("--")||i[0].includes("-")?t.style.setProperty(i[0],i[1]):t.style[i[0]]=i[1];return t}static combineBrowserSupportedShorthands(e){let t=s.getNormalizedStyleValues(e),i=new Map(e);for(;;){let n=s.parseStyleDeclarationList(s.applyStylesToHelper(i).style.cssText),r=null,o=0;for(let a of n){let l=s.getCandidateCoverage(i,t,a[0],a[1]);if(l.length===0)continue;let c=new Map(i);for(let p of l)c.delete(p);c.set(a[0],a[1]);let h=s.getSerializedSize(i)-s.getSerializedSize(c);h<=0||s.matchesNormalizedStyleValues(c,t)&&h>o&&(o=h,r=c)}if(!r)return i;i=r}}static getNormalizedStyleValues(e){let t=s.applyStylesToHelper(e),i=new Map;for(let n of e)i.set(n[0],s.readStyleValue(t.style,n[0]));return i}static getCandidateCoverage(e,t,i,n){let r=s.applyStylesToHelper(new Map([[i,n]])),o=[];for(let a of e){let l=t.get(a[0]);l&&s.readStyleValue(r.style,a[0])===l&&o.push(a[0])}return o}static matchesNormalizedStyleValues(e,t){let i=s.applyStylesToHelper(e);for(let n of t)if(s.readStyleValue(i.style,n[0])!==n[1])return!1;return!0}static readStyleValue(e,t){return t.startsWith("--")||t.includes("-")?e.getPropertyValue(t).trim():String(e[t]??"").trim()}static getSerializedSize(e){let t=0;for(let i of e)t+=i[0].length+i[1].length+2;return t}static parseStyleDeclarationList(e){let t=new Map,i=0,n=null,r=0;for(let o=0;o<e.length;o++){let a=e[o];if(n){a===n&&e[o-1]!=="\\"&&(n=null);continue}if(a==='"'||a==="'"){n=a;continue}if(a==="("){r++;continue}if(a===")"&&r>0){r--;continue}a===";"&&r===0&&(s.addStyleDeclaration(t,e.substring(i,o)),i=o+1)}return s.addStyleDeclaration(t,e.substring(i)),t}static addStyleDeclaration(e,t){let i=t.trim();if(!i)return;let n=null,r=0;for(let o=0;o<i.length;o++){let a=i[o];if(n){a===n&&i[o-1]!=="\\"&&(n=null);continue}if(a==='"'||a==="'"){n=a;continue}if(a==="("){r++;continue}if(a===")"&&r>0){r--;continue}if(a===":"&&r===0){let l=i.substring(0,o).trim(),c=i.substring(o+1).trim();l&&e.set(l,c);return}}}static combineBorder(e){if(!s.checkIfStyleIsCombinable(e,"border-left-style")||!s.checkIfStyleIsCombinable(e,"border-right-style")||!s.checkIfStyleIsCombinable(e,"border-top-style")||!s.checkIfStyleIsCombinable(e,"border-bottom-style")||!s.checkIfStyleIsCombinable(e,"border-left-color")||!s.checkIfStyleIsCombinable(e,"border-right-color")||!s.checkIfStyleIsCombinable(e,"border-top-color")||!s.checkIfStyleIsCombinable(e,"border-bottom-color")||!s.checkIfStyleIsCombinable(e,"border-left-width")||!s.checkIfStyleIsCombinable(e,"border-right-width")||!s.checkIfStyleIsCombinable(e,"border-top-width")||!s.checkIfStyleIsCombinable(e,"border-bottom-width")||!s.checkIfStyleIsCombinable(e,"border-width")||!s.checkIfStyleIsCombinable(e,"border-style")||!s.checkIfStyleIsCombinable(e,"border-color")||!s.checkIfStyleIsCombinable(e,"border-top")||!s.checkIfStyleIsCombinable(e,"border-right")||!s.checkIfStyleIsCombinable(e,"border-left")||!s.checkIfStyleIsCombinable(e,"border-bottom")||!s.checkIfStyleIsCombinable(e,"border-width"))return;let t=s._helperElement,i=t.style.borderLeftStyle,n=t.style.borderLeftColor;if(i&&n&&t.style.borderRightStyle===i&&t.style.borderTopStyle===i&&t.style.borderBottomStyle===i&&t.style.borderRightColor===n&&t.style.borderTopColor===n&&t.style.borderBottomColor===n){let r=t.style.borderTopWidth,o=t.style.borderRightWidth,a=t.style.borderBottomWidth,l=t.style.borderLeftWidth;e.delete("border-left-style"),e.delete("border-right-style"),e.delete("border-top-style"),e.delete("border-bottom-style"),e.delete("border-left-color"),e.delete("border-right-color"),e.delete("border-top-color"),e.delete("border-bottom-color"),e.delete("border-left-width"),e.delete("border-right-width"),e.delete("border-top-width"),e.delete("border-bottom-width"),e.delete("border-width"),e.delete("border-style"),e.delete("border-color"),e.delete("border-top"),e.delete("border-right"),e.delete("border-left"),e.delete("border-bottom"),t.style.borderRightWidth==l&&t.style.borderTopWidth===l&&t.style.borderBottomWidth===l?e.set("border",l+" "+i+" "+n):(e.set("border",i+" "+n),r===a&&o===l?e.set("border-width",r+" "+o):e.set("border-width",r+" "+o+" "+a+" "+l))}t.style.borderImageSource==="initial"&&e.delete("border-image-source"),t.style.borderImageSlice==="initial"&&e.delete("border-image-slice"),t.style.borderImageWidth==="initial"&&e.delete("border-image-width"),t.style.borderImageOutset==="initial"&&e.delete("border-image-outset"),t.style.borderImageRepeat==="initial"&&e.delete("border-image-repeat")}static combineMargin(e){if(!s.checkIfStyleIsCombinable(e,"margin-top")||!s.checkIfStyleIsCombinable(e,"margin-right")||!s.checkIfStyleIsCombinable(e,"margin-bottom")||!s.checkIfStyleIsCombinable(e,"margin-left")||!s.checkIfStyleIsCombinable(e,"margin"))return;let t=s._helperElement;t.style.marginTop&&t.style.marginRight&&t.style.marginBottom&&t.style.marginLeft&&(e.delete("margin-top"),e.delete("margin-right"),e.delete("margin-bottom"),e.delete("margin-left"),t.style.marginTop==t.style.marginRight&&t.style.marginTop==t.style.marginBottom&&t.style.marginTop==t.style.marginLeft?e.set("margin",t.style.marginTop):e.set("margin",t.style.marginTop+" "+t.style.marginRight+" "+t.style.marginBottom+" "+t.style.marginLeft))}static combinePadding(e){if(!s.checkIfStyleIsCombinable(e,"padding-top")||!s.checkIfStyleIsCombinable(e,"padding-right")||!s.checkIfStyleIsCombinable(e,"padding-bottom")||!s.checkIfStyleIsCombinable(e,"padding-left")||!s.checkIfStyleIsCombinable(e,"padding"))return;let t=s._helperElement;t.style.paddingTop&&t.style.paddingRight&&t.style.paddingBottom&&t.style.paddingLeft&&(e.delete("padding-top"),e.delete("padding-right"),e.delete("padding-bottom"),e.delete("padding-left"),t.style.paddingTop==t.style.paddingRight&&t.style.paddingTop==t.style.paddingBottom&&t.style.paddingTop==t.style.paddingLeft?e.set("padding",t.style.paddingTop):e.set("padding",t.style.paddingTop+" "+t.style.paddingRight+" "+t.style.paddingBottom+" "+t.style.paddingLeft))}static combineInset(e){if(!s.checkIfStyleIsCombinable(e,"top")||!s.checkIfStyleIsCombinable(e,"right")||!s.checkIfStyleIsCombinable(e,"bottom")||!s.checkIfStyleIsCombinable(e,"left")||!s.checkIfStyleIsCombinable(e,"inset"))return;let t=s._helperElement;t.style.top&&t.style.right&&t.style.bottom&&t.style.left&&(e.delete("top"),e.delete("right"),e.delete("bottom"),e.delete("left"),e.set("inset",t.style.top+" "+t.style.right+" "+t.style.bottom+" "+t.style.left))}static combineBackground(e){if(!s.checkIfStyleIsCombinable(e,"background-image")||!s.checkIfStyleIsCombinable(e,"background-position")||!s.checkIfStyleIsCombinable(e,"background-position-x")||!s.checkIfStyleIsCombinable(e,"background-position-y")||!s.checkIfStyleIsCombinable(e,"background-size")||!s.checkIfStyleIsCombinable(e,"background-repeat")||!s.checkIfStyleIsCombinable(e,"background-repeat-x")||!s.checkIfStyleIsCombinable(e,"background-repeat-y")||!s.checkIfStyleIsCombinable(e,"background-attachment")||!s.checkIfStyleIsCombinable(e,"background-origin")||!s.checkIfStyleIsCombinable(e,"background-clip")||!s.checkIfStyleIsCombinable(e,"background-color")||!s.checkIfStyleIsCombinable(e,"background"))return;let t=s._helperElement;e.delete("background-image"),e.delete("background-position"),e.delete("background-position-x"),e.delete("background-position-y"),e.delete("background-size"),e.delete("background-repeat"),e.delete("background-repeat-x"),e.delete("background-repeat-y"),e.delete("background-attachment"),e.delete("background-origin"),e.delete("background-clip"),e.delete("background-color"),e.delete("background");let i="";t.style.backgroundImage&&t.style.backgroundImage!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundImage),t.style.backgroundPosition&&t.style.backgroundPosition!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundPosition),t.style.backgroundSize&&t.style.backgroundSize!=="initial"&&(i+=(i===""?"":" / ")+t.style.backgroundSize),t.style.backgroundRepeat&&t.style.backgroundRepeat!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundRepeat),t.style.backgroundAttachment&&t.style.backgroundAttachment!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundAttachment),t.style.backgroundOrigin&&t.style.backgroundOrigin!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundOrigin),t.style.backgroundClip&&t.style.backgroundClip!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundClip),t.style.backgroundColor&&t.style.backgroundColor!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundColor),i&&e.set("background",i)}static combineFont(e){if(!s.checkIfStyleIsCombinable(e,"font-style")||!s.checkIfStyleIsCombinable(e,"font-weight")||!s.checkIfStyleIsCombinable(e,"font-size")||!s.checkIfStyleIsCombinable(e,"line-height")||!s.checkIfStyleIsCombinable(e,"font-family")||!s.checkIfStyleIsCombinable(e,"font"))return;let t=s._helperElement;if(t.style.fontFamily){e.delete("font-style"),e.delete("font-weight"),e.delete("font-size"),e.delete("line-height"),e.delete("font-family"),e.delete("font");let i="";t.style.fontStyle&&(i+=(i===""?"":" ")+t.style.fontStyle),t.style.fontWeight&&(i+=(i===""?"":" ")+t.style.fontWeight),t.style.fontSize&&(i+=(i===""?"":" ")+t.style.fontSize),t.style.lineHeight&&(i+="/"+t.style.lineHeight),t.style.fontFamily&&(i+=(i===""?"":" ")+t.style.fontFamily),e.set("font",i)}}static checkIfStyleIsCombinable(e,t){if(e.has(t)){let i=e.get(t);return typeof i=="string"?!i.startsWith("var("):!1}return!0}}});var wo,ip=g(()=>{"use strict";st();bo();Ee();wt();wo=class{options;constructor(e){this.options=e??{},this.options.beautifyOutput??=!0,this.options.compressCssToShorthandProperties??=!0,this.options.writeDesignerProperties??=!0,this.options.parseJsonInAttributes??=!0,this.options.jsonWriteMode??="min"}writeAttributes(e,t,i=!1){if(t.hasAttributes)for(let n of t.attributes()){let r=e.position;if(e.write(" "),typeof n[1]=="string")if(n[1]==="")e.write(n[0]);else{if(this.options.parseJsonInAttributes&&(n[1].startsWith("{")&&!n[1].startsWith("{{")&&n[1].endsWith("}")||n[1].startsWith("[")&&!n[1].startsWith("[[")&&n[1].endsWith("]")))try{let a=JSON.parse(n[1]),l;this.options.jsonWriteMode=="beauty"?l=JSON.stringify(a,null,2):l=JSON.stringify(a);let c=J.normalizeAttributeValue(l,!0);this._writeAttributeWithValue(e,t,n[0],c,"'",i);continue}catch{}let o=J.normalizeAttributeValue(n[1]);if(o.indexOf(""")){let a=J.normalizeAttributeValue(n[1],!0);a.length<o.length?this._writeAttributeWithValue(e,t,n[0],a,"'",i):this._writeAttributeWithValue(e,t,n[0],o,'"',i)}else this._writeAttributeWithValue(e,t,n[0],o,'"',i)}else n[1]||e.write(n[0]);i&&this._addAttributeSourcePart(t,n[0],{start:r+1,length:e.position-r-1})}}_writeAttributeWithValue(e,t,i,n,r,o){e.write(i+"="+r);let a=e.position;e.write(n);let l={start:a,length:e.position-a};if(e.write(r),!o)return;let c=t.instanceServiceContainer.designItemDocumentPositionService;c.addSourcePart({designItem:t,kind:"attribute-value",key:`attribute:${i}/value`,name:i,textRange:l});let h={designItem:t,sourceKind:"attribute",name:i,value:n,valueTextRange:l};for(let p of t.serviceContainer.sourceMapProviders)p.canMap(h)&&c.addSourceParts(p.map(h))}_addAttributeSourcePart(e,t,i){e.instanceServiceContainer.designItemDocumentPositionService.addSourcePart({designItem:e,kind:"attribute",key:`attribute:${t}`,name:t,textRange:i})}writeStyles(e,t){if(t.hasStyles){e.write(' style="');let i=[...t.styles()],n=i.some(o=>t.isStyleImportant(o[0])),r=i;this.options.compressCssToShorthandProperties&&!n&&(r=$i.combine(new Map(i)));for(let o of r)if(o[0]){let a=J.normalizeAttributeValue(je(o[1],t.isStyleImportant(o[0])));o[0].startsWith("--")?e.write(o[0]+":"+a+";"):e.write(z.camelToDashCase(o[0])+":"+a+";")}e.write('"')}}}});var So,np=g(()=>{"use strict";st();Z();ue();ip();So=class extends wo{constructor(e){super(e)}_conditionalyWriteIndent(e,t,i){i||(t.element instanceof t.window.HTMLElement&&!ni(t.element)||t.element.previousElementSibling instanceof t.window.HTMLElement&&!Ft(t.element.previousElementSibling)||t.element.previousElementSibling==null&&!this._isInlineElement(t.element.parentElement)&&(t.element.previousSibling==null||ar(t.element.previousSibling))||t.element instanceof t.window.SVGElement)&&e.writeIndent()}_conditionalyWriteIndentBefore(e,t,i){i||(t.element.previousElementSibling instanceof t.window.HTMLElement&&!Ft(t.element.previousElementSibling)||t.element.previousElementSibling==null&&!this._isInlineElement(t.element.parentElement)&&(t.element.previousSibling==null||ar(t.element.previousSibling))||t.element instanceof t.window.SVGElement)&&e.writeIndent()}_conditionalyWriteNewline(e,t,i){i||(t.element instanceof t.window.HTMLElement&&!ni(t.element)||t.element.nextElementSibling instanceof t.window.HTMLElement&&!Ft(t.element.nextElementSibling)||t.element instanceof t.window.SVGElement)&&e.writeNewline()}write(e,t,i,n=!1){n&&t[0]?.instanceServiceContainer.designItemDocumentPositionService?.clearSourceParts();for(let r of t)this.internalWrite(e,r,n,!1)}internalWrite(e,t,i,n){let r=e.position,o=e.position,a=n||this._isInlineContainer(t);if(t.nodeType==D.TextNode)ar(t.element)&&(t.element.previousSibling instanceof t.window.HTMLElement&&!ni(t.element.previousSibling)||t.element.nextSibling instanceof t.window.HTMLElement&&!Ft(t.element.nextSibling))||this.writeTextNode(e,t,!0,!0,a),o=e.position;else if(t.nodeType==D.Comment)this._conditionalyWriteIndent(e,t,a),r=e.position,e.write("<!--"+t.content+"-->"),o=e.position,this._conditionalyWriteNewline(e,t,a);else{this._conditionalyWriteIndentBefore(e,t,a),r=e.position,e.write("<"+t.name),this.writeAttributes(e,t,i),this.writeStyles(e,t),e.write(">");let l=!1;if(t.hasChildren){let c=t.children();if(l=t.childCount===1&&t.firstChild.nodeType===D.TextNode,l){let h=t.name=="script"||t.name=="style"||t.name=="pre";this.writeTextNode(e,t,!1,!h,a)}else{!a&&(t.element instanceof t.window.HTMLElement&&!ni(t.element)||t.element instanceof t.window.SVGElement)&&(e.writeNewline(),e.levelRaise());for(let h of c)this.internalWrite(e,h,i,a),h.childCount===1&&h.firstChild.nodeType===D.TextNode&&(e.isLastCharNewline()||this._conditionalyWriteNewline(e,h,a));!a&&(t.element instanceof t.window.HTMLElement&&!ni(t.element)||t.element instanceof t.window.SVGElement)&&(e.levelShrink(),e.isLastCharNewline()||e.writeNewline(),e.writeIndent())}}else t.hasContent&&e.write(J.normalizeContentValue(t.content));o=e.position,J.IsSelfClosingElement(t.name)||e.write("</"+t.name+">"),o=e.position,!a&&!e.isLastCharNewline()&&(!t.parent||!ni(t.parent.element))&&this._conditionalyWriteNewline(e,t,a)}i&&t.instanceServiceContainer.designItemDocumentPositionService&&t.instanceServiceContainer.designItemDocumentPositionService.setPosition(t,{start:r,length:o-r})}writeTextNode(e,t,i,n=!0,r=!1){let o=e.position,a=e.position,l=J.normalizeContentValue(t.content);r||this._hasInlineParent(t)?l=this._normalizeInlineTextContent(l):n&&(l=l.trim()),l&&(i&&this._conditionalyWriteIndent(e,t,r),e.write(l),i&&this._conditionalyWriteNewline(e,t,r)),a=e.position;for(let c of t.children())t.instanceServiceContainer.designItemDocumentPositionService.setPosition(c,{start:o,length:a-o})}_hasInlineParent(e){return e.parent?.element instanceof e.window.HTMLElement&&Ft(e.parent.element)}_normalizeInlineTextContent(e){if(!e?.trim())return"";let t=/^\s/.test(e),i=/\s$/.test(e),n=e.replaceAll(/[\t\r\n ]+/g," ").trim();return`${t?" ":""}${n}${i?" ":""}`}_isInlineContainer(e){return e.nodeType===D.Element&&e.element instanceof e.window.HTMLElement&&Ft(e.element)}_isInlineElement(e){return e instanceof HTMLElement&&Ft(e)}}});var Co,rp=g(()=>{"use strict";oe();ft();Co=class{shouldProvideContextmenu(e,t,i,n){return i?.element instanceof SVGRectElement}provideContextMenuItems(e,t,i){return[{title:"convert to path",action:()=>{let n=i.element,r="";r+="M"+n.x.baseVal.value+" "+n.y.baseVal.value+"L"+(n.x.baseVal.value+n.width.baseVal.value)+" "+n.y.baseVal.value+"L"+(n.x.baseVal.value+n.width.baseVal.value)+" "+(n.y.baseVal.value+n.height.baseVal.value)+"L"+n.x.baseVal.value+" "+(n.y.baseVal.value+n.height.baseVal.value)+"Z";let o=document.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d",r),o.setAttribute("stroke",n.getAttribute("stroke")),o.setAttribute("fill",n.getAttribute("fill")),o.setAttribute("stroke-width",n.getAttribute("stroke-width"));let a=O.createDesignItemFromInstance(o,t.serviceContainer,t.instanceServiceContainer);t.instanceServiceContainer.undoService.execute(new Se(i.parent,i.childCount,a)),t.serviceContainer.deletionService.removeItems([i])}}]}}});var Eo,sp=g(()=>{"use strict";Ue();Eo=class{shouldProvideContextmenu(e,t,i,n){return i?.element instanceof SVGPathElement}provideContextMenuItems(e,t,i){let n=i.node.getPathData({normalize:!0}),r=[],o=n[n.length-1].type;return r.push({title:"-"}),o=="z"||o=="Z"?r.push({title:"open path ",action:()=>{n.splice(n.length-1,1),i.setAttribute("d",hi(n))}}):r.push({title:"close path ",action:()=>{n.push({type:"Z"}),i.setAttribute("d",hi(n))}}),r}}});var De,Po=g(()=>{"use strict";De=class{shouldProvideContextmenu(e,t,i,n){return!0}provideContextMenuItems(e,t,i){return[{title:"-"}]}}});var Io,ko,op=g(()=>{"use strict";he();Io=10,ko=class{shouldProvideContextmenu(e,t,i,n){return i!==null}provideContextMenuItems(e,t,i){return[{title:"zoom to",icon:`<img src="${E+"icons/zoomIn.svg"}">`,action:()=>{let n=t.getNormalizedElementCoordinates(i.element),r={x:n.x-Io,y:n.y-Io},o={x:n.x+n.width+Io,y:n.y+n.height+Io},a={x:r.x<o.x?r.x:o.x,y:r.y<o.y?r.y:o.y,width:Math.abs(r.x-o.x),height:Math.abs(r.y-o.y)},l=t.outerRect.width/a.width,c=t.outerRect.height/a.height,h=l>=c?c:l;t.zoomPoint({x:n.x+n.width/2,y:n.y+n.height/2},h)}}]}}});var Do,ap=g(()=>{"use strict";Dt();Z();he();Do=class{shouldProvideContextmenu(e,t,i,n){return t.readOnly?!1:!i?.isRootItem&&i?.nodeType==D.Element}provideContextMenuItems(e,t,i){return[{title:"rotate right",icon:`<img src="${E+"icons/rotateRight.svg"}">`,action:()=>{t.executeCommand({type:A.rotateClockwise})},shortCut:"Ctrl + R"},{title:"rotate left",icon:`<img src="${E+"icons/rotateLeft.svg"}">`,action:()=>{t.executeCommand({type:A.rotateCounterClockwise})},shortCut:"Ctrl + Shift + R"}]}}});var Ao,lp=g(()=>{"use strict";Z();Ao=class{shouldProvideContextmenu(e,t,i,n){return i?.hasChildren}provideContextMenuItems(e,t,i){return[{title:"select all Children",action:()=>{t.instanceServiceContainer.selectionService.setSelectedElements(Array.from(i.children()).filter(n=>n.nodeType==D.Element))}}]}}});import{BaseCustomWebComponentConstructorAppend as u_,css as m_,html as f_}from"@node-projects/base-custom-webcomponent";var we,gt=g(()=>{"use strict";we=class extends u_{static style=m_`div{width:24px;height:24px;display:flex;justify-content:center;align-items:center;background-color:inherit}div:hover{background-color:#a9a9a9}img{width:calc(100% - 4px);height:calc(100% - 4px);-webkit-user-drag:none}`;static template=f_`<div id="div"><img id="img"></div>`;tools;popup;currentToolOnButton;_img;_div;_longPress;constructor(e,t){super(),this.tools=t,this._img=this._getDomElement("img"),this._div=this._getDomElement("div"),this._div.onpointerdown=()=>{this.currentToolOnButton?(this.getRootNode().host.setTool(this.currentToolOnButton),setTimeout(()=>{e.clickOverlay.focus()},50),this.popup&&(this._longPress=setTimeout(()=>{this._longPress=null,this.getRootNode().host.showPopup(this)},200))):this.popup&&this.getRootNode().host.showPopup(this)},this._div.onpointerup=()=>{this._longPress&&(clearTimeout(this._longPress),this._longPress=null)},this.showTool(Object.getOwnPropertyNames(t)[0])}showTool(e){let t=this.tools[e];t&&(this._img.title=e,this._img.src=t.icon,this.currentToolOnButton=e)}setActiveTool(e){this.showTool(e),this.tools[e]?this._div.style.backgroundColor="lightgreen":this._div.style.backgroundColor=""}};customElements.define("node-projects-designer-toolbar-button",we)});import{BaseCustomWebComponentConstructorAppend as g_,css as y_}from"@node-projects/base-custom-webcomponent";var Jt,Rn=g(()=>{"use strict";Jt=class extends g_{static style=y_`.container{width:120px;min-height:100px;color:#fff;background-color:#404040;border:1px solid #000}header{text-align:center}.tool{height:32px;width:32px;background-color:#fff;background-size:65%;background-repeat:no-repeat;background-position:center center;flex-shrink:0;border-bottom:1px solid #000}.tools{display:flex;flex-wrap:wrap;margin-bottom:5px;gap:3px}`;constructor(){super();for(let e of[...this.shadowRoot.querySelectorAll("div.tool")]){let t=e;t.onclick=()=>this.getRootNode().host.setTool(t.dataset.commandParameter)}}}});import{html as v_}from"@node-projects/base-custom-webcomponent";var zn,cp=g(()=>{"use strict";he();Rn();zn=class extends Jt{static template=v_`<div class="container"><header><h2 id="title" style="margin:0">Selection</h2></header><main id="content-area"><div class="tools"><div class="tool" data-command="setTool" data-command-parameter="Pointer" title="Pointer" style="background-image:url('${E}images/tools/PointerTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="Pan" title="Pan" style="background-image:url('${E}images/tools/PanTool.svg')"></div></div></main></div>`};customElements.define("node-projects-designer-pointer-tool-popup",zn)});var To,hp=g(()=>{"use strict";gt();he();cp();To=class{provideButton(e){let t=new we(e,{Pointer:{icon:E+"images/tools/PointerTool.svg"}});return t.popup=zn,t}}});var yt,pp=g(()=>{"use strict";yt=class{constructor(e){this.distance=e}distance;provideButton(e){let t=document.createElement("div");return t.style.marginTop=this.distance+"px",t}}});var Mo,dp=g(()=>{"use strict";gt();he();Mo=class{provideButton(e){return new we(e,{Zoom:{icon:E+"images/tools/ZoomTool.svg"}})}}});import{html as __,css as x_}from"@node-projects/base-custom-webcomponent";var Fn,up=g(()=>{"use strict";he();Rn();Fn=class extends Jt{designerCanvas;static style=[super.style,x_`.container{width:220px;min-height:300px}.inputs{display:grid;grid-template-columns:1fr 1fr;margin:5px;align-items:center}`];static template=__`<div class="container"><header><h2 id="title" style="margin:0">Draw</h2></header><main id="content-area"><div class="tools"><div class="tool" data-command="setTool" data-command-parameter="DrawLine" title="Draw Line" style="background-image:url('${E}images/tools/DrawLineTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="DrawPath" title="Pointer Tool" style="background-image:url('${E}images/tools/DrawPathTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="DrawRect" title="Draw Rectangle" style="background-image:url('${E}images/tools/DrawRectTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="DrawEllipsis" title="Draw Ellipsis" style="background-image:url('${E}images/tools/DrawEllipTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="PickColor" title="Pick Color" style="background-image:url('${E}images/tools/ColorPickerTool.svg')"></div></div><div class="inputs"><text class="text">Stroke Color</text>[[this.getEditor('setStrokeColor', 'color', {}, this.designerCanvas.serviceContainer.globalContext.strokeColor)]]<text class="text">Fill Brush</text>[[this.getEditor('setFillBrush', 'color', {}, this.designerCanvas.serviceContainer.globalContext.fillBrush)]]<text class="text">Stroke Thickness</text>[[this.getEditor('setStrokeThickness', 'range', { min: 1, max: 20, step: 1 }, this.designerCanvas.serviceContainer.globalContext.strokeThickness)]]</div></main></div>`;constructor(e){super(),this.designerCanvas=e}ready(){this._bindingsParse(),this.designerCanvas.serviceContainer.globalContext.strokeColor}getEditor(e,t,i,n){let r=this.designerCanvas.serviceContainer.forSomeServicesTillResult("editorTypeService",o=>o.getEditor(t,{changedCallback:a=>this.designerCanvas.executeCommand({type:e,parameter:a}),...i}));return r.setValue(n),r.element}};customElements.define("node-projects-designer-draw-tool-popup",Fn)});var Lo,mp=g(()=>{"use strict";gt();he();up();Lo=class{provideButton(e){if(e.readOnly)return null;let t=new we(e,{DrawLine:{icon:E+"images/tools/DrawLineTool.svg"},DrawPath:{icon:E+"images/tools/DrawPathTool.svg"},DrawRect:{icon:E+"images/tools/DrawRectTool.svg"},DrawEllipsis:{icon:E+"images/tools/DrawEllipTool.svg"},PickColor:{icon:E+"images/tools/ColorPickerTool.svg"}});return t.popup=Fn,t}}});var Oo,fp=g(()=>{"use strict";gt();he();Oo=class{provideButton(e){return e.readOnly?null:new we(e,{Text:{icon:E+"images/tools/TextTool.svg"}})}}});import{html as b_}from"@node-projects/base-custom-webcomponent";var Bn,gp=g(()=>{"use strict";he();Rn();Bn=class extends Jt{static template=b_`<div class="container"><header><h2 id="title" style="margin:0">Selection</h2></header><main id="content-area"><div class="tools"><div class="tool" data-command="setTool" data-command-parameter="RectangleSelector" title="Rectangle Selector" style="background-image:url('${E}images/tools/SelectRectTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="MagicWandSelector" title="Magic Wand Selector" style="background-image:url('${E}images/tools/MagicWandTool.svg')"></div></div></main></div>`};customElements.define("node-projects-designer-selection-tool-popup",Bn)});var No,yp=g(()=>{"use strict";gt();he();gp();No=class{provideButton(e){let t=new we(e,{RectangleSelector:{icon:E+"images/tools/SelectRectTool.svg"},MagicWandSelector:{icon:E+"images/tools/MagicWandTool.svg"}});return t.popup=Bn,t}}});var Vo,vp=g(()=>{"use strict";le();ie();Vo=class extends F{_rect;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];this._rect=this._drawTransformedRect(e,"svg-rect-enter-container",this._rect,M.Background)}dispose(){this._removeAllOverlays()}}});import{css as w_}from"@node-projects/base-custom-webcomponent";var Hn,_p=g(()=>{"use strict";vp();Hn=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new Vo(e,t,i)}static style=w_`.svg-rect-enter-container{stroke:none;fill:#aa00ff2e}`}});var Ro,xp=g(()=>{"use strict";Re();_e();Ro=class extends te{name="attached";getRefreshMode(e){return Y.full}isHandledElement(e){return e.serviceContainer.forSomeServicesTillResult("attachedPropertyService",t=>t.isHandledElement(e))}async getProperties(e){let t=[];if(e.serviceContainer.attachedPropertyServices)for(let i of e.serviceContainer.attachedPropertyServices)i.isHandledElement(e)&&t.push(...await i.getProperties(e));return t}}});var Ki,bp=g(()=>{"use strict";_e();pt();nt();ye();Ee();Re();Ki=class extends te{name="attributes";getRefreshMode(e){return Y.fullOnValueChange}isHandledElement(e){return!e.isRootItem}async getProperty(e,t){return{name:t,type:"string",service:this,propertyType:_.attribute}}async getProperties(e){if(e){let t=[];for(let i of e.attributes())t.push({name:i[0],renamable:!0,type:"string",service:this,propertyType:_.attribute});return t.push({name:"",type:"addNew",service:this,propertyType:_.complex}),t}return null}async setValue(e,t,i){let n=e[0].openGroup("properties changed");for(let r of e)r.setAttribute(t.name,i);n.commit()}getPropertyTarget(e,t){return R.attribute}clearValue(e,t){for(let i of e)i.removeAttribute(t.name),i.serviceContainer.forSomeServicesTillResult("bindingService",n=>n.clearBinding(i,t.name,this.getPropertyTarget(i,t)))}isSet(e,t){let i=!0,n=!1;if(e!=null&&e.length!==0){if(e.length==1&&typeof e[0].getAttribute(t.name)=="object")return W.bound;let r=z.dashToCamelCase(t.name),o=t.name;e.forEach(l=>{let c=l.hasAttribute(o);i=i&&c,n=n||c});let a=te.getOrBuildCachedBindings(e[0]);if(a&&a.find(l=>l.target==R.attribute&&l.targetName==r))return W.bound}else return W.none;return i?W.all:n?W.some:W.none}getValue(e,t){if(e!=null&&e.length!==0){let i=t.name,n=e[0].getAttribute(i);return typeof n=="object"?n.rawValue:n}return null}getBinding(e,t){return te.getOrBuildCachedBindings(e[0]).find(n=>(n.target==R.property||n.target==R.explicitProperty||n.target==R.attribute)&&n.targetName==t.name)}getUnsetValue(e,t){return t.defaultValue}getContextMenu(e,t){let i=super.getContextMenu(e,t),n=this._getAttributeSourcePart(e,t);return n&&i.splice(1,0,{title:"jump to definition",action:()=>{let r=e[0].instanceServiceContainer.selectionService;r.primarySelection!==e[0]?r.setSelectedElements([e[0]],null,n):r.setSelectedPart(n)}}),i}_getAttributeSourcePart(e,t){return e?.length!==1||!t?.name?null:e[0].instanceServiceContainer.designItemDocumentPositionService?.getSourceParts(e[0]).find(i=>i.kind==="attribute"&&i.key===`attribute:${t.name}`)}}});var zo,wp=g(()=>{"use strict";Te();mi();zo=class extends ae{_root;constructor(e){super(e),this._root=document.createElement("div"),this._root.style.display="grid",this._root.style.padding="4px 0px",this._root.style.boxSizing="border-box",this._root.style.minHeight="50px",this.element=this._root}refreshValue(e,t){if(this._root.innerHTML="",this.designItems!=null&&this.designItems.length){let i=this.designItems[0].element.parentElement;if(i){let n=getComputedStyle(i),r=Wi(this.designItems[0].element),o=getComputedStyle(this.designItems[0].element),a=n.gridTemplateColumns.split(" ").length,l=n.gridTemplateRows.split(" ").length;this._root.style.gridTemplateColumns="repeat("+a+", 1fr)",this._root.style.gridTemplateRows="repeat("+l+", 1fr)";let c=parseInt(o.gridRowStart),h=c+r.rowSpan,p=parseInt(o.gridColumnStart),d=p+r.colSpan;for(let u=1;u<=l;u++)for(let m=1;m<=a;m++){let f=document.createElement("button");f.style.minHeight="10px",f.onclick=()=>{let v=Wi(this.designItems[0].element),y=this.designItems[0].openGroup("Change grid row/column");this.designItems[0].setStyle("grid-row",u+" / "+(u+v.rowSpan)),this.designItems[0].setStyle("grid-column",m+" / "+(m+v.colSpan)),y.commit()},u>=c&&u<h&&m>=p&&m<d&&(f.style.backgroundColor="coral"),this._root.appendChild(f)}}}}}});var Fo,Sp=g(()=>{"use strict";Te();Al();ye();Fo=class extends ae{constructor(e){super(e);let t=new cn;t.property=e.name,t.style.height="auto",t.style.border="none",t.style.margin="2px 0",t.addEventListener("value-changed",i=>this._metricValueChanged(i.detail)),this.element=t}refreshValue(e,t){this.element.refresh(this.designItems?.[0]?.element)}async _metricValueChanged(e){if(!e?.property||!this.designItems?.length||this.disableChangeNotification)return;let t={...this.property,name:e.property,propertyName:e.property,propertyType:_.cssValue,type:"css-length"},i=e.newValue==null||e.newValue===""||e.newValue===this.element.unsetValue?null:e.newValue;i==null?this.property.service.clearValue(this.designItems,t,"value"):await this.property.service.setValue(this.designItems,t,i),this.designItems[0].instanceServiceContainer?.designerCanvas?.extensionManager?.refreshAllExtensions(this.designItems)}}});var Bo,Rm=g(()=>{Bo={accentColor:{type:"color"},additiveSymbols:{},alignContent:{type:"list",values:["start","end","flex-start","flex-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},alignItems:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},alignSelf:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},alignmentBaseline:{},all:{},animation:{},animationDelay:{type:"time"},animationDirection:{},animationDuration:{type:"time"},animationFillMode:{},animationIterationCount:{},animationName:{},animationPlayState:{},animationTimingFunction:{},appRegion:{},appearance:{},ascentOverride:{},aspectRatio:{},backdropFilter:{},backfaceVisibility:{},background:{},backgroundAttachment:{},backgroundBlendMode:{},backgroundClip:{},backgroundColor:{type:"color"},backgroundImage:{},backgroundOrigin:{},backgroundPosition:{},backgroundPositionX:{},backgroundPositionY:{},backgroundRepeat:{},backgroundRepeatX:{},backgroundRepeatY:{},backgroundSize:{},basePalette:{},baselineShift:{},blockSize:{type:"length"},border:{},borderBlock:{},borderBlockColor:{type:"color"},borderBlockEnd:{},borderBlockEndColor:{type:"color"},borderBlockEndStyle:{},borderBlockEndWidth:{},borderBlockStart:{},borderBlockStartColor:{type:"color"},borderBlockStartStyle:{},borderBlockStartWidth:{},borderBlockStyle:{},borderBlockWidth:{},borderBottom:{},borderBottomColor:{type:"color"},borderBottomLeftRadius:{},borderBottomRightRadius:{},borderBottomStyle:{},borderBottomWidth:{},borderCollapse:{},borderColor:{type:"color"},borderEndEndRadius:{},borderEndStartRadius:{},borderImage:{},borderImageOutset:{},borderImageRepeat:{},borderImageSlice:{},borderImageSource:{},borderImageWidth:{},borderInline:{},borderInlineColor:{type:"color"},borderInlineEnd:{},borderInlineEndColor:{type:"color"},borderInlineEndStyle:{},borderInlineEndWidth:{},borderInlineStart:{},borderInlineStartColor:{type:"color"},borderInlineStartStyle:{},borderInlineStartWidth:{},borderInlineStyle:{},borderInlineWidth:{},borderLeft:{},borderLeftColor:{type:"color"},borderLeftStyle:{},borderLeftWidth:{},borderRadius:{},borderRight:{},borderRightColor:{type:"color"},borderRightStyle:{},borderRightWidth:{},borderSpacing:{},borderStartEndRadius:{},borderStartStartRadius:{},borderStyle:{},borderTop:{},borderTopColor:{type:"color"},borderTopLeftRadius:{},borderTopRightRadius:{},borderTopStyle:{},borderTopWidth:{},borderWidth:{type:"length",values:["medium","thin","thick"]},bottom:{type:"length"},boxShadow:{},boxSizing:{type:"list",values:["border-box","content-box"]},breakAfter:{},breakBefore:{},breakInside:{},bufferedRendering:{},captionSide:{},caretColor:{type:"color"},clear:{},clip:{},clipPath:{},clipRule:{},color:{type:"color"},colorInterpolation:{},colorInterpolationFilters:{},colorRendering:{},colorScheme:{},columnCount:{},columnFill:{},columnGap:{type:"length"},columnRule:{},columnRuleColor:{type:"color"},columnRuleStyle:{},columnRuleWidth:{},columnSpan:{},columnWidth:{},columns:{},contain:{},containIntrinsicBlockSize:{},containIntrinsicHeight:{},containIntrinsicInlineSize:{},containIntrinsicSize:{},containIntrinsicWidth:{},container:{},containerName:{},containerType:{},content:{},contentVisibility:{},counterIncrement:{},counterReset:{},counterSet:{},cursor:{},cx:{},cy:{},d:{},descentOverride:{},direction:{},display:{type:"list",values:["block","inline","inline-block","flex","inline-flex","contents","grid","inline-grid","inline-table","list-item","run-in","table","table-caption","table-column-group","table-header-group","table-footer-group","tabl-row-group","table-cell","table-column","table-row","inherit","initial","none"]},dominantBaseline:{},emptyCells:{},fallback:{},fill:{type:"color"},fillOpacity:{},fillRule:{},filter:{},flex:{},flexBasis:{type:"length"},flexDirection:{type:"list",values:["row","column","row-reverse","column-reverse"]},flexFlow:{},flexGrow:{type:"number"},flexShrink:{type:"number"},flexWrap:{type:"list",values:["nowrap","wrap","wrap-reverse"]},fieldSizing:{},float:{type:"list",values:["none","left","right","inline-start","inline-end"]},floodColor:{type:"color"},floodOpacity:{},font:{},fontDisplay:{},fontFamily:{type:"font"},fontFeatureSettings:{},fontKerning:{},fontOpticalSizing:{},fontPalette:{},fontSize:{type:"length"},fontSizeAdjust:{},fontStretch:{},fontStyle:{},fontSynthesis:{},fontSynthesisSmallCaps:{},fontSynthesisStyle:{},fontSynthesisWeight:{},fontVariant:{},fontVariantCaps:{},fontVariantEastAsian:{},fontVariantLigatures:{},fontVariantNumeric:{},fontVariationSettings:{},fontWeight:{},forcedColorAdjust:{},gap:{type:"length"},grid:{},gridArea:{},gridAutoColumns:{},gridAutoFlow:{},gridAutoRows:{},gridColumn:{},gridColumnEnd:{},gridColumnGap:{type:"length"},gridColumnStart:{},gridGap:{type:"length"},gridRow:{},gridRowEnd:{},gridRowGap:{type:"length"},gridRowStart:{},gridTemplate:{},gridTemplateAreas:{},gridTemplateColumns:{},gridTemplateRows:{},height:{type:"length"},hyphenateCharacter:{},hyphens:{},imageOrientation:{},imageRendering:{},imageResolution:{type:"resolution"},inherits:{},initialValue:{},inlineSize:{type:"length"},inset:{},insetBlock:{},insetBlockEnd:{},insetBlockStart:{},insetInline:{},insetInlineEnd:{},insetInlineStart:{},isolation:{},justifyContent:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},justifyItems:{type:"list",values:["start","end","flex-start","flex-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},justifySelf:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},left:{type:"length"},letterSpacing:{type:"length"},lightingColor:{type:"color"},lineBreak:{},lineGapOverride:{},lineHeight:{type:"length"},listStyle:{},listStyleImage:{},listStylePosition:{},listStyleType:{},margin:{},marginBlock:{},marginBlockEnd:{type:"length"},marginBlockStart:{type:"length"},marginBottom:{type:"length"},marginInline:{},marginInlineEnd:{type:"length"},marginInlineStart:{type:"length"},marginLeft:{type:"length"},marginRight:{type:"length"},marginTop:{type:"length"},marker:{},markerEnd:{},markerMid:{},markerStart:{},mask:{},maskType:{},maxBlockSize:{type:"length"},maxHeight:{type:"length"},maxInlineSize:{type:"length"},maxWidth:{type:"length"},minBlockSize:{type:"length"},minHeight:{type:"length"},minInlineSize:{type:"length"},minWidth:{type:"length"},mixBlendMode:{},negative:{},objectFit:{},objectPosition:{type:"position"},objectViewBox:{},offset:{},offsetDistance:{},offsetPath:{},offsetRotate:{type:"angle"},opacity:{type:"number"},order:{},orphans:{},outline:{},outlineColor:{type:"color"},outlineOffset:{type:"length"},outlineStyle:{},outlineWidth:{type:"length",values:["medium","thin","thick"]},overflow:{type:"list",values:["visible","hidden","clip","scroll","auto"]},overflowAnchor:{},overflowClipMargin:{},overflowWrap:{},overflowX:{type:"list",values:["visible","hidden","clip","scroll","auto"]},overflowY:{type:"list",values:["visible","hidden","clip","scroll","auto"]},overrideColors:{},overscrollBehavior:{},overscrollBehaviorBlock:{},overscrollBehaviorInline:{},overscrollBehaviorX:{},overscrollBehaviorY:{},pad:{},padding:{},paddingBlock:{},paddingBlockEnd:{},paddingBlockStart:{},paddingBottom:{},paddingInline:{},paddingInlineEnd:{},paddingInlineStart:{},paddingLeft:{},paddingRight:{},paddingTop:{},page:{},pageBreakAfter:{},pageBreakBefore:{},pageBreakInside:{},pageOrientation:{},paintOrder:{},perspective:{type:"length"},perspectiveOrigin:{},placeContent:{},placeItems:{},placeSelf:{},pointerEvents:{},position:{type:"list",values:["static","relative","absolute","fixed","sticky"]},prefix:{},quotes:{},r:{},range:{},resize:{},right:{type:"length"},rotate:{type:"angle"},rowGap:{type:"length"},rubyAlign:{},rubyPosition:{},rx:{},ry:{},scale:{type:"scale"},scrollbarColor:{},scrollbarGutter:{type:"list",values:["auto","stable","stable both-edges"]},scrollbarWidth:{},scrollBehavior:{},scrollMargin:{},scrollMarginBlock:{},scrollMarginBlockEnd:{},scrollMarginBlockStart:{},scrollMarginBottom:{},scrollMarginInline:{},scrollMarginInlineEnd:{},scrollMarginInlineStart:{},scrollMarginLeft:{},scrollMarginRight:{},scrollMarginTop:{},scrollPadding:{},scrollPaddingBlock:{},scrollPaddingBlockEnd:{},scrollPaddingBlockStart:{},scrollPaddingBottom:{},scrollPaddingInline:{},scrollPaddingInlineEnd:{},scrollPaddingInlineStart:{},scrollPaddingLeft:{},scrollPaddingRight:{},scrollPaddingTop:{},scrollSnapAlign:{},scrollSnapStop:{},scrollSnapType:{},shapeImageThreshold:{},shapeMargin:{},shapeOutside:{},shapeRendering:{type:"list",values:["auto","optimizeSpeed","crispEdges","geometricPrecision"]},size:{},sizeAdjust:{},speak:{},speakAs:{},src:{},stopColor:{type:"color"},stopOpacity:{},stroke:{type:"color"},strokeDasharray:{},strokeDashoffset:{},strokeLinecap:{},strokeLinejoin:{},strokeMiterlimit:{},strokeOpacity:{},strokeWidth:{type:"number"},suffix:{},symbols:{},syntax:{},system:{},tabSize:{},tableLayout:{},textAlign:{type:"list",values:["start","end","left","right","center","justify","justify-all","match-parent"]},textAlignLast:{},textAnchor:{},textCombineUpright:{},textDecoration:{},textDecorationColor:{type:"color"},textDecorationLine:{},textDecorationSkipInk:{},textDecorationStyle:{},textDecorationThickness:{},textEmphasis:{},textEmphasisColor:{type:"color"},textEmphasisPosition:{},textEmphasisStyle:{},textIndent:{type:"length"},textOrientation:{},textOverflow:{},textRendering:{},textShadow:{},textSizeAdjust:{},textTransform:{},textUnderlineOffset:{},textUnderlinePosition:{},textWrap:{},textWrapMode:{type:"list",values:["wrap","nowrap"]},textWrapStyle:{type:"list",values:["auto","balance","pretty","stable"]},top:{type:"length"},touchAction:{},transform:{},transformBox:{},transformOrigin:{},transformStyle:{},transition:{},transitionDelay:{type:"time"},transitionBehavior:{},transitionDuration:{type:"time"},transitionProperty:{},transitionTimingFunction:{},translate:{},unicodeBidi:{},unicodeRange:{},userSelect:{},vectorEffect:{},verticalAlign:{},visibility:{},whiteSpace:{},widows:{},width:{type:"length"},willChange:{},wordBreak:{},wordSpacing:{type:"length"},wordWrap:{},writingMode:{},x:{},y:{},zIndex:{},zoom:{type:"scale"}}});var Qi,Ho=g(()=>{"use strict";Ai();_e();Ee();Rr();wt();Qi=class extends et{_enrichCssProperty(e){return Bu(e)}getRefreshMode(e){return Y.none}async previewValue(e,t,i){let n=t.propertyName??t.name;n.startsWith("--")||(n=z.camelToDashCase(n));let r=typeof i=="string"?Bt(i):{value:i,important:!1};for(let o of e)o.element.style.setProperty(n,r.value,r.important?"important":"")}async removePreviewValue(e,t){let i=t.propertyName??t.name;i.startsWith("--")||(i=z.camelToDashCase(i));for(let n of e)n.hasStyle(i)?n.element.style.setProperty(i,n.getStyle(i),n.isStyleImportant(i)?"important":""):n.element.style.setProperty(i,"")}constructor(){super(!1)}}});var He,Go=g(()=>{"use strict";nt();ye();_e();Ee();wp();Sp();Rm();Ho();He=class extends Qi{getRefreshMode(e){return Y.none}layout={common:["display","color","background-color","box-sizing","border","box-shadow","opacity","position","align-content"],font:["font-family","font-size","font-weight"],layout:["inset","margin","border","padding","overflow","metrics"]};grid=["display","position","grid-template-columns","grid-template-rows","gap","column-gap","row-gap","align-content","justify-content","align-items","justify-items"];gridChild=["grid-row","grid-column","assigned-row-column","align-self","justify-self"];flex=["display","position","flex-direction","flex-wrap","align-content","justify-content","align-items","gap"];flexChild=["align-self","justify-self"];svg=["fill","fill-rule","fill-opacity","stroke","stroke-width","stroke-dasharray","stroke-dashoffset","stroke-opacity"];layoutSvgChild={common:["display","fill","fill-rule","fill-opacity","stroke","stroke-width","stroke-dasharray","stroke-dashoffset","stroke-opacity"]};constructor(e){super(),this.name=e}isHandledElement(e){return!0}async getProperty(e,t){return this._getPropertyDef(t)}async getProperties(e){let t=this[this.name];if(Array.isArray(t))return t.map(n=>this._getPropertyDef(n));{let i=[];for(let n in t){let r={name:n,properties:t[n].map(o=>this._getPropertyDef(o))};i.push(r)}return i}}getPropertyNameSuggestions(e){return Object.keys(Bo).map(t=>z.camelToDashCase(t))}_getPropertyType(e){let t=Bo[e]?.type;return t?"css-"+t:"string"}_getPropertyValues(e){return Bo[e]?.values}_getPropertyDef(e){let t=z.dashToCamelCase(e);switch(t){case"assignedRowColumn":return{name:e,service:this,propertyType:_.complex,createEditor:i=>new zo(i)};case"metrics":return{name:e,service:this,propertyType:_.complex,hideLabel:!0,createEditor:i=>new Fo(i)};default:return this._enrichCssProperty({name:e,type:this._getPropertyType(t),values:this._getPropertyValues(t),service:this,propertyType:_.cssValue})}}getPropertyTarget(e,t){return R.css}}});var C_,yi,Cp=g(()=>{"use strict";ye();_e();pt();Z();nt();Ee();Re();Go();wt();C_="<local>",yi=class extends He{getRefreshMode(e){return Y.fullOnValueChange}constructor(){super(null),this.name="styles"}isHandledElement(e){return!0}async getProperty(e,t){let i=z.dashToCamelCase(t);return this._enrichCssProperty({name:t,type:this._getPropertyType(i),values:this._getPropertyValues(i),service:this,propertyType:_.cssValue})}async getProperties(e){if(!e||e.nodeType!=D.Element)return[];let t=e.getAllStyles().reverse().sort((o,a)=>o.specificity==null?-1:a.specificity==null?1:o.specificity.A>a.specificity.A||o.specificity.A===a.specificity.A&&o.specificity.B>a.specificity.B||o.specificity.A===a.specificity.A&&o.specificity.B===a.specificity.B&&o.specificity.C>a.specificity.C?-1:o.specificity.A===a.specificity.A&&o.specificity.B===a.specificity.B&&o.specificity.C===a.specificity.C?0:1),i=te.getOrBuildCachedBindings(e),n=t.find(o=>o.selector===null);for(let o of i)o.target===R.css&&(n.declarations.find(a=>a.name==o.targetName)||n.declarations.push({name:o.targetName,value:null,important:!1,parent:null}));return t.map(o=>({name:(o.selector??C_)+(o.specificity?" ("+o.specificity.A+"-"+o.specificity.B+"-"+o.specificity.C+")":""),description:o.stylesheetName??"",properties:[...o.declarations.map(a=>{let l=z.dashToCamelCase(a.name);return this._enrichCssProperty({name:a.name,renamable:!0,type:this._getPropertyType(l),values:this._getPropertyValues(l),service:this,propertyType:_.cssValue,styleRule:o,styleDeclaration:a})}),{name:"",type:"addNew",service:this,propertyType:_.complex,styleRule:o}]}))}async setValue(e,t,i){let n=typeof i=="string"?Bt(i):{value:i,important:!1};if(t.styleRule?.selector!==null&&t.styleDeclaration){e[0].instanceServiceContainer.stylesheetService.updateDeclarationValue(t.styleDeclaration,n.value,n.important),this._notifyChangedProperty(e[0],t,i);return}if(t.styleRule?.selector!==null&&!t.styleDeclaration){e[0].instanceServiceContainer.stylesheetService.insertDeclarationIntoRule(t.styleRule,t.name,n.value,n.important),this._notifyChangedProperty(e[0],t,i);return}for(let r of e)r.setStyle(t.name,n.value,n.important),r.element.setAttribute("style",r.element.getAttribute("style"))}clearValue(e,t,i){if(t.styleRule?.selector!==null&&t.styleDeclaration){e[0].instanceServiceContainer.stylesheetService.removeDeclarationFromRule(t.styleRule,t.styleDeclaration.name);return}super.clearValue(e,t,i)}getValue(e,t){return t.styleRule?.selector&&t.styleDeclaration?je(t.styleDeclaration.value,t.styleDeclaration.important):super.getValue(e,t)}getUnsetValue(e,t){return t.styleRule?.selector&&t.styleDeclaration?je(t.styleDeclaration.value,t.styleDeclaration.important):super.getUnsetValue(e,t)}isSet(e,t){return t.styleRule?.selector&&t.styleDeclaration?e[0].hasStyle(t.name)?W.none:W.fromStylesheet:super.isSet(e,t)}getPropertyTarget(e,t){return t.name.startsWith("--")?R.cssvar:R.css}}});var vi,Ep=g(()=>{"use strict";ye();_e();pt();nt();Ho();wt();vi=class extends Qi{removeInheritedCustomProperties;constructor(e=!0){super(),this.name="customProperties",this.removeInheritedCustomProperties=e}getRefreshMode(e){return Y.fullOnValueChange}isHandledElement(e){return!0}async getProperty(e,t){return this._enrichCssProperty({name:t,type:"string",service:this,propertyType:_.cssValue})}async getProperties(e){if(e.nodeType!=Node.ELEMENT_NODE)return[];if(e?.element?.computedStyleMap){let r=Array.from(e.instanceServiceContainer.designerCanvas.computedStyleMap()).map(l=>l[0]).filter(l=>l.startsWith("--")),o=Array.from(e.element.computedStyleMap()).map(l=>l[0]).filter(l=>l.startsWith("--"));return this.removeInheritedCustomProperties&&(o=o.filter(l=>!r.includes(l))),o.map(l=>({name:l,service:this,propertyType:_.cssValue})).map(l=>this._enrichCssProperty(l))}let t=Array.from(getComputedStyle(e.instanceServiceContainer.designerCanvas)).map(r=>r[0]).filter(r=>r.startsWith("--")),i=Array.from(getComputedStyle(e.element)).map(r=>r[0]).filter(r=>r.startsWith("--"));return this.removeInheritedCustomProperties&&(i=i.filter(r=>!t.includes(r))),i.map(r=>({name:r,service:this,propertyType:_.cssValue})).map(r=>this._enrichCssProperty(r))}clearValue(e,t,i){super.clearValue(e,t,i)}getValue(e,t){let i=e[0].getStyle(t.name);return i?je(i,e[0].isStyleImportant(t.name)):getComputedStyle(e[0].element).getPropertyValue(t.name)}getUnsetValue(e,t){return e?.[0].element?.computedStyleMap?e[0].element.computedStyleMap().get(t.name)?.[0]:getComputedStyle(e[0].element).getPropertyValue(t.name)}isSet(e,t){return super.isSet(e,t)==W.bound?W.bound:e[0].hasStyle(t.name)?W.all:W.none}getPropertyTarget(e,t){return R.cssvar}}});var Wo,Pp=g(()=>{"use strict";Z();xp();bp();Ai();Cp();Ep();Go();Wo=class{_attachedPropertiesService=new Ro;_rootPgList=[{name:"styles",propertiesService:new yi},{name:"css vars",propertiesService:new vi},{name:"layout",propertiesService:new He("layout")}];_pgList=[{name:"properties",propertiesService:null},{name:"attached",propertiesService:this._attachedPropertiesService},{name:"attributes",propertiesService:new Ki},{name:"common",propertiesService:new et},{name:"styles",propertiesService:new yi},{name:"css vars",propertiesService:new vi},{name:"layout",propertiesService:new He("layout")}];_svgPgList=[{name:"properties",propertiesService:null},{name:"attached",propertiesService:this._attachedPropertiesService},{name:"attributes",propertiesService:new Ki},{name:"common",propertiesService:new et},{name:"styles",propertiesService:new yi},{name:"css vars",propertiesService:new vi},{name:"layout",propertiesService:new He("layout")},{name:"svg",propertiesService:new He("svg")}];_svgChildPgList=[{name:"properties",propertiesService:null},{name:"attached",propertiesService:this._attachedPropertiesService},{name:"attributes",propertiesService:new Ki},{name:"common",propertiesService:new et},{name:"styles",propertiesService:new yi},{name:"css vars",propertiesService:new vi},{name:"layout",propertiesService:new He("layoutSvgChild")}];_gridChild=[{name:"gridChild",propertiesService:new He("gridChild")}];_grid=[{name:"grid",propertiesService:new He("grid")}];_flexChild=[{name:"flexChild",propertiesService:new He("flexChild")}];_flex=[{name:"flex",propertiesService:new He("flex")}];getPropertygroups(e){if(e==null||e.length==0)return[];if(e[0].nodeType==D.TextNode||e[0].nodeType==D.Comment)return[];if(e[0].isRootItem){let n=e[0].getComputedStyle(),r=this._rootPgList;return n.display.includes("grid")?r=[...r,...this._grid]:n.display.includes("flex")&&(r=[...r,...this._flex]),r}this._svgChildPgList[0].propertiesService=this._svgPgList[0].propertiesService=this._pgList[0].propertiesService=e[0].serviceContainer.getLastServiceWhere("propertyService",n=>n.isHandledElement(e[0]));let t=this._pgList;e[0].element instanceof e[0].window.SVGElement&&(e[0].element instanceof e[0].window.SVGSVGElement?t=this._svgPgList:t=this._svgChildPgList);let i=e[0].getComputedStyle();if(i.display.includes("grid")?t=[...t,...this._grid]:i.display.includes("flex")&&(t=[...t,...this._flex]),e[0].parent){let n=e[0].parent.getComputedStyle();n.display.includes("grid")?t=[...t,...this._gridChild]:n.display.includes("flex")&&(t=[...t,...this._flexChild])}return t}}});var jo,Ip=g(()=>{"use strict";le();jo=class extends F{_rect;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element),t=getComputedStyle(this.extendedItem.element),i=Number.parseFloat(t.marginLeft.replace("px","")),n=Number.parseFloat(t.marginTop.replace("px","")),r=Number.parseFloat(t.marginRight.replace("px","")),o=Number.parseFloat(t.marginBottom.replace("px",""));this._rect=this._drawRect(e.x-i,e.y-n,i+e.width+r,n+e.height+o,"svg-placement",this._rect)}dispose(){this._removeAllOverlays()}}});import{css as E_}from"@node-projects/base-custom-webcomponent";var Yo,kp=g(()=>{"use strict";Ip();Yo=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new jo(e,t,i)}static style=E_`.svg-placement{stroke:#90caf9;fill:none}`}});var Uo,Dp=g(()=>{"use strict";le();ie();Uo=class extends F{_path;constructor(e,t,i){super(e,t,i)}extend(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];this._path=this._drawTransformedRect(e,"svg-flexbox",this._path,M.Background)}refresh(){this._removeAllOverlays(),this.extend()}dispose(){this._removeAllOverlays()}}});import{css as P_}from"@node-projects/base-custom-webcomponent";var Ap,Gn,Xo=g(()=>{"use strict";Dp();Z();Ap="flexboxExtensionShowOverlay",Gn=class{shouldExtend(e,t,i){if(i.nodeType!=D.Element)return!1;let n=getComputedStyle(i.element).display;return n=="flex"||n=="inline-flex"?t.instanceServiceContainer.designContext.extensionOptions[Ap]!==!1:!1}getExtension(e,t,i){return new Uo(e,t,i)}style=P_`.svg-flexbox{stroke:orange;fill:#9a47ff22}`}});var $o,Tp=g(()=>{"use strict";Xo();si();$o=class extends tt{constructor(){super(Ap,"F","show flexbox overlay")}}});var Ko,Mp=g(()=>{"use strict";io();si();Ko=class extends tt{constructor(){super(zh,"I","show invisible div overlay")}}});var Qo,Lp=g(()=>{"use strict";Qo=class{redoBranches;source;_contentChanges=[];title;get affectedItems(){let e=new Set;for(let t of this.undoStack)for(let i of t.affectedItems)e.add(i);for(let t of this.redoStack)for(let i of t.affectedItems)e.add(i);return[...e.values()]}commitHandler;abortHandler;constructor(e,t,i,n="local"){this.title=e,this.commitHandler=t,this.abortHandler=i,this.source=n}get contentChanges(){return this._contentChanges.length>0?this._contentChanges:null}do(){let e=null,t=[];for(;e=this.redoStack.pop();)try{let i=e.do();i&&t.push(...i),this.undoStack.push(e)}catch(i){throw i}return t.length>0?t:null}undo(){let e=null,t=[];for(;e=this.undoStack.pop();)try{let i=e.undo();i&&t.push(...i),this.redoStack.push(e)}catch(i){throw i}return t.length>0?t:null}commit(){this.commitHandler(this)}abort(){this.abortHandler(this)}mergeWith(e){return!1}addCommitedSubchangeGroup(e){this.undoStack.push(e),this._recordContentChanges(e.contentChanges)}undoStack=[];redoStack=[];execute(e){let t=e.do();this._recordContentChanges(t);for(let i of this.undoStack)if(i.mergeWith(e))return t;return this.undoStack.push(e),t}_recordContentChanges(e){e?.length&&this._contentChanges.push(...e)}}});import{TypedEvent as I_}from"@node-projects/base-custom-webcomponent";var Zo,Op=g(()=>{"use strict";Lp();Zo=class{_undoStack=[];_redoStack=[];_transactionStack=[];_designerCanvas;_storeRedoBranches;constructor(e,t=!1){this._designerCanvas=e,this._storeRedoBranches=t}openGroup(e,t="local"){let i=new Qo(e,n=>this.commitTransactionItem(n),n=>this.abortTransactionItem(n),t);return this._transactionStack.push(i),i}commitTransactionItem(e){let t=this._transactionStack.pop();if(t!==e)throw this.clear(),"UndoService - Commited Transaction was not the last";t.undoStack.length&&(this._transactionStack.length>0?this._transactionStack[this._transactionStack.length-1].addCommitedSubchangeGroup(t):(this._storeRedoBranches&&this._redoStack.length&&(t.redoBranches==null&&(t.redoBranches=[]),t.redoBranches.push(this._redoStack)),this._redoStack=[],this._undoStack.push(t))),this._transactionStack.length==0&&(this._designerCanvas.extensionManager.refreshAllExtensions(e.affectedItems),this.emitTransaction(e,"execute",e.source??"local"),e.contentChanges&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(e.contentChanges))}abortTransactionItem(e){if(this._transactionStack.length>0){let t=this._transactionStack.pop();if(t!==e)throw this.clear(),"UndoService - Aborted Transaction was not the last";t.undo()}}execute(e,t="local"){let i=null;this._transactionStack.length==0?(i=e.do(),this._storeRedoBranches&&this._redoStack.length&&(e.redoBranches==null&&(e.redoBranches=[]),e.redoBranches.push(this._redoStack)),this._redoStack=[],this._undoStack.push(e)):i=this._transactionStack[this._transactionStack.length-1].execute(e),this._transactionStack.length==0&&(this._designerCanvas.extensionManager.refreshAllExtensions(e.affectedItems),this.emitTransaction(e,"execute",t),i&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(i))}clear(){this._undoStack=[],this._redoStack=[],this._transactionStack=[]}clearTransactionstackIfNotEmpty(){this._transactionStack.length&&(console.error("transactionStack was not empty, but should be",this._transactionStack),this._transactionStack=[])}undo(e="local"){if(!this.canUndo())return;if(this._transactionStack.length!=0)throw"Cannot Undo while transaction is running";let t=this._undoStack.pop(),i=null;try{i=t.undo(),this._redoStack.push(t)}catch(n){throw this.clear(),n}this._designerCanvas.extensionManager.refreshAllExtensions(t.affectedItems),this.emitTransaction(t,"undo",e),i&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(i)}redo(e="local"){if(!this.canRedo())return;if(this._transactionStack.length!=0)throw"Cannot Redo while transaction is running";let t=this._redoStack.pop(),i=null;try{i=t.do(),this._undoStack.push(t)}catch(n){throw this.clear(),n}this._designerCanvas.extensionManager.refreshAllExtensions(t.affectedItems),this.emitTransaction(t,"redo",e),i&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(i)}redoTo(e){this._redoStack=e.toReversed();for(let t=0;t<e.length;t++)this.redo()}canUndo(){return this._undoStack.length>0}canRedo(){return this._redoStack.length>0}get undoCount(){return this._undoStack.length}get redoCount(){return this._redoStack.length}*getUndoEntryNames(e=999){for(let t=Math.min(this._undoStack.length,e)-1;t>=0;t--)yield this._undoStack[t].title}*getUndoEntries(e=999){for(let t=Math.min(this._undoStack.length,e)-1;t>=0;t--)yield this._undoStack[t]}*getRedoEntryNames(e=999){for(let t=Math.min(this._redoStack.length,e)-1;t>=0;t--)yield this._redoStack[t].title}*getRedoEntries(e=999){for(let t=Math.min(this._redoStack.length,e)-1;t>=0;t--)yield this._redoStack[t]}onTransaction=new I_;emitTransaction(e,t,i){this.onTransaction.emit({item:e,kind:t,source:i})}}});var qo,zm=g(()=>{"use strict";qo=class{constructor(e,t,i){this.title="Change Selection",this.oldSelection=e,this.newSelection=t,this.selectionService=i}title;get affectedItems(){return this.oldSelection&&this.newSelection?[...this.oldSelection,...this.newSelection]:this.oldSelection?[...this.oldSelection]:[...this.newSelection]}undo(){return this.selectionService._withoutUndoSetSelectedElements(this.oldSelection),null}do(){return this.selectionService._withoutUndoSetSelectedElements(this.newSelection),null}oldSelection;newSelection;selectionService;mergeWith(e){return!1}}});import{TypedEvent as Fm}from"@node-projects/base-custom-webcomponent";function Bm(s,e){let t=null;if(s.hasChildren)for(let i of s.children()){let n=s.instanceServiceContainer.designItemDocumentPositionService.getPosition(i);n&&n.start<=e&&n.start+n.length>=e&&(t=i)}return t?Bm(t,e):s}var Jo,Np=g(()=>{"use strict";zm();Jo=class{primarySelection;selectedElements=[];selectedPart;_designerCanvas;_undoSelectionChanges;constructor(e,t){this._designerCanvas=e,this._undoSelectionChanges=t}setSelectedElements(e,t,i){this._setSelectedElements(e,t,i)}_setSelectedElements(e,t,i){if((e===null||e.length===0)&&(e=[this._designerCanvas.rootDesignItem]),this.selectedElements!=e&&!(this.selectedElements.length===0&&(e==null||e.length===0))){if(this.selectedElements?.length===1&&e?.length===1&&e[0]===this.selectedElements[0]){this._setSelectedPart(i),this.onSelectionRefresh.emit({selectedElements:this.selectedElements,selectedPart:this.selectedPart,event:t});return}if(this._undoSelectionChanges){let n=new qo(this.selectedElements,e,this);this._designerCanvas.instanceServiceContainer.undoService.execute(n)}else this._withoutUndoSetSelectedElements(e,t,i)}}setSelectedPart(e,t){this._setSelectedPart(e)&&this.onSelectionRefresh.emit({selectedElements:this.selectedElements,selectedPart:this.selectedPart,event:t})}_setSelectedPart(e){let t=this.selectedPart;return t===e||t?.designItem===e?.designItem&&t?.key===e?.key?!1:(this.selectedPart=e,!0)}setSelectionByTextRange(e,t){let i=this._designerCanvas.instanceServiceContainer.designItemDocumentPositionService?.getSourcePartAt(e),n=Bm(this._designerCanvas.rootDesignItem,e);n&&(this.selectedElements.length!=1||this.primarySelection!=n?this._setSelectedElements([n],void 0,i):this.setSelectedPart(i))}_withoutUndoSetSelectedElements(e,t,i){let n=this.selectedElements,r=this.selectedPart;if(!e)this.selectedElements=[],this.primarySelection=null,this.selectedPart=null;else{let o=[];for(let a of e)a&&(e.length==1||a!==a.instanceServiceContainer.designerCanvas.rootDesignItem)&&o.push(a);this.selectedElements=o,o&&o.length>0?this.primarySelection=o[0]:this.primarySelection=null,this.selectedPart=i?.designItem===this.primarySelection?i:null}this.onSelectionChanged.emit({selectedElements:this.selectedElements,oldSelectedElements:n,selectedPart:this.selectedPart,oldSelectedPart:r,event:t})}clearSelectedElements(){this.setSelectedElements([])}isSelected(e){return this.selectedElements.indexOf(e)>=0}onSelectionChanged=new Fm;onSelectionRefresh=new Fm}});var ea,Vp=g(()=>{"use strict";he();ea=class{shouldProvideContextmenu(e,t,i,n){return i!==null}provideContextMenuItems(e,t,i){return[{title:"jump to",icon:`<img src="${E+"icons/jump.svg"}">`,action:()=>{let n=t.getNormalizedElementCoordinates(i.element);t.zoomPoint({x:n.x+n.width/2,y:n.y+n.height/2},t.zoomFactor)}}]}}});var ta,Rp=g(()=>{"use strict";fe();Vc();ue();mi();le();ie();ta=class extends F{gridInformation;_resizers=[];_initalPos;_initialSizes;_group;_hasChanged;constructor(e,t,i){super(e,t,i)}extend(e,t){this._group=this._drawGroup(null,this._group,M.Background),this._group.style.transformOrigin="0 0",this.refresh(t)}refresh(e,t){this.gridInformation=at(this.extendedItem),this._group.style.transform=ji(this.extendedItem).toString(),this.gridInformation.gaps.forEach((i,n)=>{i.width<3&&(i.width=3,i.x--,i.localX--),i.height<3&&(i.height=3,i.y--,i.localY--);let r=this._drawRect(i.localX,i.localY,i.width,i.height,"svg-grid-resizer-"+i.type,this._resizers[n],M.Normal);this._resizers[n]||(this._resizers[n]=r,r.addEventListener(P.PointerDown,o=>this._pointerActionTypeResize(o,r,i)),r.addEventListener(P.PointerMove,o=>this._pointerActionTypeResize(o,r,i)),r.addEventListener(P.PointerUp,o=>this._pointerActionTypeResize(o,r,i)),this._group.appendChild(r))})}_pointerActionTypeResize(e,t,i){e.stopPropagation();let n=i.type=="h"?"gridTemplateRows":"gridTemplateColumns",r=(i.type=="h"?i.row:i.column)-1,o=i.type=="h"?"height":"width",a=this._getAxisLocalPosition(e,i.type);switch(e.type){case P.PointerDown:t.setPointerCapture(e.pointerId),this._initalPos=a,this._initialSizes=getComputedStyle(this.extendedItem.element)[n];break;case P.PointerMove:if(this._initialSizes){let c=a-this._initalPos;if(Math.abs(c)>5||this._hasChanged){this._hasChanged=!0;let h=this._initialSizes.split(" ");h[r]=parseFloat(h[r])+c+"px",h[r+1]=parseFloat(h[r+1])-c+"px",this.extendedItem.element.style[n]=h.join(" "),this.extensionManager.refreshExtensions([this.extendedItem],null,e)}}break;case P.PointerUp:t.releasePointerCapture(e.pointerId);let l=a-this._initalPos;if(this._hasChanged){this._hasChanged=!1;let c=this.extendedItem.getStyleFromSheetOrLocalOrComputed(n),h=this._initialSizes.split(" "),p=qu(c);p.length!=h.length&&(p=h.map(m=>di(m))),this.extendedItem.element.style[n]="";let d=h.map(m=>parseFloat(m));d[r]+=l,d[r+1]-=l;let u=this._convertCssUnits(d,p,this.extendedItem.element,o);this.extendedItem.updateStyleInSheetOrLocal(n,u.join(" "),null,!0)}this._initalPos=null,this._initialSizes=null,this.extensionManager.refreshExtensions([this.extendedItem]);break}}_getAxisLocalPosition(e,t){let i=In(this.extendedItem,this.designerCanvas.getNormalizedEventCoordinates(e));return t=="h"?i.y:i.x}_convertCssUnits(e,t,i,n){let r=getComputedStyle(i),a=K(i)[n],l=n=="height"?this.gridInformation.cells.length-1:this.gridInformation.cells[0].length-1,c=n=="width"?r.columnGap:r.rowGap;c=="normal"&&(c="0px");let h=Nc(c,i,n)??0,d=a-h*l;for(let m=0;m<e.length;m++)t[m]!="fr"&&(d-=e[m]);let u=[];for(let m=0;m<e.length;m++)t[m]!="fr"?u.push(Gi(e[m],i,n,t[m])):u.push((e[m]/d*10).toFixed(2)+"fr");return u}dispose(){this._removeAllOverlays()}}});import{css as k_}from"@node-projects/base-custom-webcomponent";var ia,zp=g(()=>{"use strict";Rp();Vn();ia=class{shouldExtend(e,t,i){let n=getComputedStyle(i.element).display;return n=="grid"||n=="inline-grid"?t.instanceServiceContainer.designContext.extensionOptions[Nn]!==!1:!1}getExtension(e,t,i){return new ta(e,t,i)}static style=k_`.svg-grid-resizer-v{fill:transparent;cursor:ew-resize;pointer-events:auto}.svg-grid-resizer-v:hover{fill:#ff7f5052}.svg-grid-resizer-h{fill:transparent;cursor:ns-resize;pointer-events:auto}.svg-grid-resizer-h:hover{fill:#ff7f5052}`}});var Zi,Fp=g(()=>{"use strict";Zi=class{extensions;extIndex;style;svgDefs;constructor(...e){this.extensions=e;for(let t of e)t.style&&(this.style||(this.style=[]),Array.isArray(t.style)?this.style.push(...t.style):this.style.push(t.style)),t.constructor.style&&(this.style||(this.style=[]),Array.isArray(t.constructor.style)?this.style.push(...t.constructor.style):this.style.push(t.constructor.style)),t.svgDefs&&(this.svgDefs||(this.svgDefs=[]),Array.isArray(t.svgDefs)?this.svgDefs.push(...t.svgDefs):this.svgDefs.push(t.svgDefs)),t.constructor.svgDefs&&(this.svgDefs||(this.svgDefs=[]),Array.isArray(t.constructor.svgDefs)?this.svgDefs.push(...t.svgDefs):this.svgDefs.push(t.constructor.svgDefs))}shouldExtend(e,t,i){for(this.extIndex=0;this.extIndex<this.extensions.length;this.extIndex++)if(this.extensions[this.extIndex].shouldExtend(e,t,i))return!0;return!1}getExtension(e,t,i){return this.extensions[this.extIndex].getExtension(e,t,i)}}});var na,Bp=g(()=>{"use strict";na=class{_designItemsAssignmentList=new WeakMap;_sourceParts=[];_sourcePartsByDesignItem=new WeakMap;_sourcePartsByDesignItemAndKey=new WeakMap;constructor(e){}setPosition(e,t){this._designItemsAssignmentList.set(e,t)}getPosition(e){return this._designItemsAssignmentList.get(e)}clearSourceParts(){this._sourceParts=[],this._sourcePartsByDesignItem=new WeakMap,this._sourcePartsByDesignItemAndKey=new WeakMap}addSourcePart(e){if(!e?.designItem||!e.textRange)return;this._sourceParts.push(e);let t=this._sourcePartsByDesignItem.get(e.designItem);t||(t=[],this._sourcePartsByDesignItem.set(e.designItem,t)),t.push(e);let i=this._sourcePartsByDesignItemAndKey.get(e.designItem);i||(i=new Map,this._sourcePartsByDesignItemAndKey.set(e.designItem,i)),i.set(e.key,e)}addSourceParts(e){for(let t of e??[])this.addSourcePart(t)}getSourcePartAt(e){let t=null;for(let i of this._sourceParts){let n=i.textRange.start,r=n+i.textRange.length;n<=e&&r>=e&&(!t||i.textRange.length<=t.textRange.length)&&(t=i)}return t}getSourceParts(e){return this._sourcePartsByDesignItem.get(e)??[]}getSourcePartPosition(e,t){return this._sourcePartsByDesignItemAndKey.get(e)?.get(t)?.textRange}}});var ra,Hp=g(()=>{"use strict";gt();he();Rs();ra=class{provideButton(e){if(e.readOnly)return null;let t=new we(e,{"":{icon:E+"images/tools/TransformTool.svg"}});return t.popup=fi,t}}});var sa,Gp=g(()=>{"use strict";ue();Me();le();ie();sa=class extends F{_line1;_line2;_line3;_line4;_designerView;constructor(e,t,i){super(e,t,i),this._designerView=t}extend(){this.refresh()}refresh(){let e=this._designerView.instanceServiceContainer.selectionService.selectedElements;if(e.length>1){e=me(e);let t=ri(e,this._designerView);this._line1=this._drawLine(t.x,t.y,t.x+t.width,t.y,"svg-multiple-rect-selection",this._line1,M.Background),this._line2=this._drawLine(t.x+t.width,t.y,t.x+t.width,t.y+t.height,"svg-multiple-rect-selection",this._line2,M.Background),this._line3=this._drawLine(t.x+t.width,t.y+t.height,t.x,t.y+t.height,"svg-multiple-rect-selection",this._line3,M.Background),this._line4=this._drawLine(t.x,t.y+t.height,t.x,t.y,"svg-multiple-rect-selection",this._line4,M.Background),this._line1.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line2.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line3.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line4.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString()}}dispose(){this._removeAllOverlays()}}});import{css as D_}from"@node-projects/base-custom-webcomponent";var oa,Wp=g(()=>{"use strict";Gp();oa=class{shouldExtend(e,t,i){return!i.isRootItem&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new sa(e,t,i)}static style=D_`.svg-multiple-rect-selection{stroke:#909090;stroke-dasharray:3;fill:transparent;stroke-width:2}`}});var aa,jp=g(()=>{"use strict";oe();rt();he();aa=class{_dragOverExtensionItem;_oldX;_oldY;_currentDragDropFormatNameElementDefinition;constructor(){window.addEventListener("dragstart",e=>{let t=e.dataTransfer;if(!t)return;let i=t.setData.bind(t);t.setData=(n,r)=>(n==Ni&&(this._currentDragDropFormatNameElementDefinition=r),i(n,r))},!0),window.addEventListener("dragend",e=>{this._currentDragDropFormatNameElementDefinition=null},!0)}dragEnter(e,t){}dragLeave(e,t){this._dragOverExtensionItem&&(e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerExternalDragOverAndCanBeEntered),this._dragOverExtensionItem=null)}async dragOver(e,t){if(e.readOnly){t.dataTransfer.dropEffect="none";return}let i=null,n=t.dataTransfer.getData(Ni);if(n||(n=this._currentDragDropFormatNameElementDefinition),n){let o=JSON.parse(n);o&&(i=await e.serviceContainer.forSomeServicesTillResult("instanceService",a=>a.getElement(o,e.serviceContainer,e.instanceServiceContainer)))}let[r]=this.getPossibleContainerForDragDrop(e,t,i?[i]:null);r||(r=e.rootDesignItem),this._dragOverExtensionItem!=r?(e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerExternalDragOverAndCanBeEntered),e.extensionManager.applyExtension(r,I.ContainerExternalDragOverAndCanBeEntered,t),this._dragOverExtensionItem=r):t.x!=this._oldX&&t.y!=this._oldY&&(this._oldX=t.x,this._oldY=t.y,e.extensionManager.refreshExtension(r,I.ContainerExternalDragOverAndCanBeEntered,t))}async drop(e,t){this._dragOverExtensionItem&&(e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerExternalDragOverAndCanBeEntered),this._dragOverExtensionItem=null);let i=t.dataTransfer.getData(Ni),n=JSON.parse(i),r=await e.serviceContainer.forSomeServicesTillResult("instanceService",u=>u.getElement(n,e.serviceContainer,e.instanceServiceContainer)),[o]=this.getPossibleContainerForDragDrop(e,t,[r]);o||(o=e.rootDesignItem);let a=r.openGroup("Insert of <"+r.name+">"),l=e.serviceContainer.getLastServiceWhere("containerService",u=>u.serviceForContainer(o,o.getComputedStyle(),r));l.enterContainer(o,[r],"drop");let c=e.getNormalizedElementCoordinates(o.element),h=e.getNormalizedEventCoordinates(t),p={x:h.x-c.x,y:h.y-c.y},d={x:0,y:0};n.mouseOffset&&(d=n.mouseOffset),l.place(t,e,o,d,{x:0,y:0},p,[r]),l.finishPlace(t,e,o,d,{x:0,y:0},p,[r]),requestAnimationFrame(()=>{e.instanceServiceContainer.selectionService.setSelectedElements([r],t),a.commit()})}getPossibleContainerForDragDrop(e,t,i){let n=null,r=null,o=e.elementsFromPoint(t.clientX,t.clientY);for(let a of o)if(a==e.rootDesignItem.element){n=e.rootDesignItem;let l=getComputedStyle(n.element);r=e.serviceContainer.getLastServiceWhere("containerService",c=>c.serviceForContainer(n,l));break}else{n=O.GetOrCreateDesignItem(a,a,e.serviceContainer,e.instanceServiceContainer);let l=getComputedStyle(n.element);if(r=e.serviceContainer.getLastServiceWhere("containerService",c=>c.serviceForContainer(n,l)),r){if(i&&r.canEnter(n,i)&&!(n.element instanceof n.window.SVGElement))break;if(!i&&r.isEnterableContainer(n)&&!(n.element instanceof n.window.SVGElement))break;n=null,r=null;continue}}return[n,r]}}});var Ne,Wn=g(()=>{"use strict";Ne=class s{constructor(){}static _windowEvents=[{name:"afterprint",propertyName:"onafterprint",eventObjectName:"Event"},{name:"beforeprint",propertyName:"onbeforeprint",eventObjectName:"Event"},{name:"beforeunload",propertyName:"onbeforeunload",eventObjectName:"Event"},{name:"error",propertyName:"onerror",eventObjectName:"Event"},{name:"load",propertyName:"onload",eventObjectName:"Event"},{name:"hashchange",propertyName:"onhashchange",eventObjectName:"Event"},{name:"message",propertyName:"onmessage",eventObjectName:"Event"},{name:"offline",propertyName:"onoffline",eventObjectName:"Event"},{name:"online",propertyName:"ononline",eventObjectName:"Event"},{name:"pageshow",propertyName:"onpageshow",eventObjectName:"Event"},{name:"popstate",propertyName:"onpopstate",eventObjectName:"Event"},{name:"resize",propertyName:"onresize",eventObjectName:"Event"},{name:"storage",propertyName:"onstorage",eventObjectName:"Event"},{name:"unload",propertyName:"onunload",eventObjectName:"Event"}];static _allElements=[{name:"contextmenu",propertyName:"oncontextmenu",eventObjectName:"PointerEvent"}];static _focusableEvents=[{name:"blur",propertyName:"onblur",eventObjectName:"FocusEvent"},{name:"focus",propertyName:"onfocus",eventObjectName:"FocusEvent"},{name:"keydown",propertyName:"onkeydown",eventObjectName:"KeyboardEvent"},{name:"keyup",propertyName:"onkeyup",eventObjectName:"KeyboardEvent"}];static _simpleForm=[{name:"input",propertyName:"oninput",eventObjectName:"InputEvent"},{name:"change",propertyName:"onchange",eventObjectName:"Event"}];static _form=[{name:"beforeinput",propertyName:"onbeforeinput",eventObjectName:"InputEvent"},{name:"invalid",propertyName:"oninvalid",eventObjectName:"Event"},{name:"reset",propertyName:"onreset",eventObjectName:"Event"},{name:"select",propertyName:"onselect",eventObjectName:"Event"},{name:"submit",propertyName:"onsubmit",eventObjectName:"SubmitEvent"}];static _simpleMouseEvents=[{name:"click",propertyName:"onclick",eventObjectName:"PointerEvent"},{name:"dblclick",propertyName:"ondblclick",eventObjectName:"MouseEvent"},{name:"wheel",propertyName:"onwheel",eventObjectName:"WheelEvent"},{name:"scroll",propertyName:"onscroll",eventObjectName:"Event"}];static _mouseEvents=[{name:"mousedown",propertyName:"onmousedown",eventObjectName:"MouseEvent"},{name:"mouseup",propertyName:"onmouseup",eventObjectName:"MouseEvent"},{name:"mousemove",propertyName:"onmousemove",eventObjectName:"MouseEvent"},{name:"mouseover",propertyName:"onmouseover",eventObjectName:"MouseEvent"},{name:"mouseout",propertyName:"onmouseout",eventObjectName:"MouseEvent"}];static _pointerEvents=[{name:"pointerdown",propertyName:"onpointerdown",eventObjectName:"PointerEvent"},{name:"pointerup",propertyName:"onpointerup",eventObjectName:"PointerEvent"},{name:"pointerenter",propertyName:"onpointerenter",eventObjectName:"PointerEvent"},{name:"pointerleave",propertyName:"onpointerleave",eventObjectName:"PointerEvent"},{name:"pointermove",propertyName:"onpointermove",eventObjectName:"PointerEvent"},{name:"pointerover",propertyName:"onpointerover",eventObjectName:"PointerEvent"},{name:"pointerout",propertyName:"onpointerout",eventObjectName:"PointerEvent"},{name:"pointercancel",propertyName:"onpointercancel",eventObjectName:"PointerEvent"}];static _touchEvents=[{name:"touchstart",propertyName:"ontouchstart",eventObjectName:"TouchEvent"},{name:"touchend",propertyName:"ontouchend",eventObjectName:"TouchEvent"},{name:"touchmove",propertyName:"ontouchmove",eventObjectName:"TouchEvent"},{name:"touchcancel",propertyName:"ontouchcancel",eventObjectName:"TouchEvent"}];static _dragEvents=[{name:"drag",propertyName:"ondrag",eventObjectName:"DragEvent"},{name:"dragend",propertyName:"ondragend",eventObjectName:"DragEvent"},{name:"dragenter",propertyName:"ondragenter",eventObjectName:"DragEvent"},{name:"dragleave",propertyName:"ondragleave",eventObjectName:"DragEvent"},{name:"dragover",propertyName:"ondragover",eventObjectName:"DragEvent"},{name:"dragstart",propertyName:"ondragstart",eventObjectName:"DragEvent"},{name:"drop",propertyName:"ondrop",eventObjectName:"DragEvent"}];static _clipboard=[{name:"copy",propertyName:"oncopy",eventObjectName:"ClipboardEvent"},{name:"cut",propertyName:"oncut",eventObjectName:"ClipboardEvent"},{name:"paste",propertyName:"onpaste",eventObjectName:"ClipboardEvent"}];static _details=[{name:"toggle",propertyName:"ontoggle",eventObjectName:"Event"}];static _allEvents=[...s._windowEvents,...s._form,...s._simpleMouseEvents,...s._mouseEvents,...s._pointerEvents,...s._touchEvents,...s._allElements,...s._focusableEvents,...s._dragEvents,...s._clipboard,...s._dragEvents];isHandledElementFromEventsService(e){return!0}getPossibleEvents(e){return e.element instanceof e.window.HTMLInputElement||e.element instanceof e.window.HTMLTextAreaElement||e.element instanceof e.window.HTMLSelectElement?[...s._simpleForm,...s._simpleMouseEvents,...s._form,...s._pointerEvents,...s._allElements,...s._focusableEvents]:[...s._simpleMouseEvents,...s._pointerEvents,...s._allElements,...s._focusableEvents]}getEvent(e,t){return s._allEvents.find(n=>n.name==t)??{name:t,propertyName:"on"+t,eventObjectName:"Event"}}}});import{DomHelper as A_,cssFromString as T_}from"@node-projects/base-custom-webcomponent";var la,Yp=g(()=>{"use strict";la=class{async provideDemo(e,t,i,n){let r=document.createElement("div"),o=r.attachShadow({mode:"open",serializable:!0});r.style.width="100%",r.style.height="100%",r.style.border="none",r.style.display="none",r.style.overflow="auto",r.style.position="absolute",e.style.position="relative",A_.removeAllChildnodes(e),e.appendChild(r);let a=[];i.designerCanvas.additionalStyles&&a.push(...i.designerCanvas.additionalStyles),i.stylesheetService&&a.push(...i.stylesheetService.getStylesheets().map(l=>T_(l.content))),o.adoptedStyleSheets=a,o.innerHTML="","setHTMLUnsafe"in o?o.setHTMLUnsafe(n):o.innerHTML=n,r.style.display=""}}});var ca,Up=g(()=>{"use strict";fe();Me();ie();ca=class{_elementDefinition;_createdItem;_startPosition;_changeGroup;cursor="crosshair";_rect;constructor(e){this._elementDefinition=e}activated(e){}dispose(){this._createdItem&&this._createdItem.element.parentElement.removeChild(this._createdItem.element)}pointerEventHandler(e,t,i){switch(t.type){case P.PointerDown:this._onPointerDown(e,t);break;case P.PointerMove:this._onPointerMove(e,t);break;case P.PointerUp:this._onPointerUp(e,t);break}}keyboardEventHandler(e,t,i){}sizeOverlapThreshold=!1;async _onPointerDown(e,t){let i=e.getNormalizedEventCoordinates(t);t.preventDefault(),this._startPosition={x:i.x,y:i.y},this._changeGroup=e.rootDesignItem.openGroup("Insert Item"),this._createdItem=await e.serviceContainer.forSomeServicesTillResult("instanceService",n=>n.getElement(this._elementDefinition,e.serviceContainer,e.instanceServiceContainer)),this._createdItem.setStyle("position","absolute"),this._createdItem.setStyle("left",V(this._createdItem,i.x)+"px"),this._createdItem.setStyle("top",V(this._createdItem,i.y)+"px"),this._createdItem.setStyle("width","0"),this._createdItem.setStyle("height","0"),e.rootDesignItem.insertChild(this._createdItem),e.instanceServiceContainer.selectionService.clearSelectedElements()}async _onPointerMove(e,t){let i=e.getNormalizedEventCoordinates(t);if(this._createdItem){this._rect||(this._rect=document.createElementNS("http://www.w3.org/2000/svg","rect"),e.overlayLayer.addOverlay(this.constructor.name,this._rect,M.Foreground),this._rect.setAttribute("class","svg-draw-new-element"),this._rect.setAttribute("x",V(this._createdItem,this._startPosition.x)),this._rect.setAttribute("y",V(this._createdItem,this._startPosition.y)));let n=V(this._createdItem,i.x-this._startPosition.x),r=V(this._createdItem,i.y-this._startPosition.y);parseFloat(""+n)>=0&&(this._rect.setAttribute("width",n),this._createdItem.setStyle("width",n+"px")),parseFloat(""+r)>=0&&(this._rect.setAttribute("height",r),this._createdItem.setStyle("height",r+"px")),(parseFloat(""+n)>5||parseFloat(""+r)>5)&&(this.sizeOverlapThreshold=!0)}}async _onPointerUp(e,t){this.sizeOverlapThreshold?(this._changeGroup.commit(),e.instanceServiceContainer.selectionService.setSelectedElements([this._createdItem],t)):this._changeGroup.abort(),e.overlayLayer.removeOverlay(this._rect),this._startPosition=null,this._rect=null,this._createdItem=null,e.serviceContainer.globalContext.finishedWithTool(this)}}});var ha,Xp=g(()=>{"use strict";ha=class{constructor(){}provideButtons(e,t){let i=document.createElement("div");i.className="toolbar-control",i.title="round pixels to";let n=document.createElement("input");return n.type="number",n.step="1",n.min="-1",n.valueAsNumber=e.serviceContainer.options.roundPixelsToDecimalPlaces,n.onchange=()=>e.serviceContainer.options.roundPixelsToDecimalPlaces=n.valueAsNumber,i.appendChild(n),[i]}}});var pa,$p=g(()=>{"use strict";Ai();ye();_e();pa=class extends et{commonMathProperties=[{name:"displaystyle",type:"boolean",service:this,defaultValue:!0,propertyType:_.propertyAndAttribute}];mathProperties=[{name:"display",type:"list",values:["block","inline"],service:this,defaultValue:"text",propertyType:_.propertyAndAttribute}];mfracProperties=[{name:"denomalign",type:"list",values:["left","center","right"],service:this,defaultValue:"center",propertyType:_.propertyAndAttribute},{name:"linethickness",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"numalign",type:"list",values:["left","center","right"],service:this,defaultValue:"center",propertyType:_.propertyAndAttribute}];name="mathml";getRefreshMode(e){return Y.full}isHandledElement(e){return e.element instanceof e.window.MathMLElement}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){if(!this.isHandledElement(e))return null;switch(e.element.localName){case"math":return[...this.commonMathProperties,...this.mathProperties];case"merror":return[...this.commonMathProperties];case"mfrac":return[...this.commonMathProperties,...this.mfracProperties];default:return[...this.commonMathProperties]}}}});function Gm(s){return"command"in s}function M_(s){return"value"in s}function L_(s){let e=[],t=/[AaCcHhLlMmQqSsTtVvZz]|[-+]?(?:(?:\d*\.\d+)|(?:\d+\.?))(?:[eE][-+]?\d+)?/g,i;for(;i=t.exec(s);){let n=i[0];/^[AaCcHhLlMmQqSsTtVvZz]$/.test(n)?e.push({command:n,start:i.index,end:i.index+n.length}):e.push({value:Number(n),start:i.index,end:i.index+n.length})}return e}function O_(s,e){let t=e.map(r=>s[r]).filter(r=>r),i=Math.min(...t.map(r=>r.start)),n=Math.max(...t.map(r=>r.end));return{start:i,length:n-i}}function vt(s,e,t,i,n){let r=O_(i,n);s.push({segmentIndex:e,handleType:t,start:r.start,length:r.length})}function N_(s,e,t,i){switch(e.toUpperCase()){case"M":case"L":case"T":vt(s,t,"anchor",i,[0,1]);break;case"H":case"V":vt(s,t,"anchor",i,[0]);break;case"C":vt(s,t,"cp1",i,[0,1]),vt(s,t,"cp2",i,[2,3]),vt(s,t,"anchor",i,[4,5]);break;case"S":vt(s,t,"cp2",i,[0,1]),vt(s,t,"anchor",i,[2,3]);break;case"Q":vt(s,t,"cp1",i,[0,1]),vt(s,t,"anchor",i,[2,3]);break;case"A":vt(s,t,"anchor",i,[5,6]);break}}function Wm(s){let e=L_(s),t=[],i=0,n=null,r=0;for(;i<e.length;){let o=e[i];if(Gm(o)){if(n=o.command,i++,n.toUpperCase()==="Z"){r++;continue}}else if(!n){i++;continue}let a=n,l=Hm[a.toUpperCase()];if(l==null||l===0)continue;let c=a.toUpperCase()==="M";for(;i<e.length&&!Gm(e[i]);){c?(a=n,c=!1):n.toUpperCase()==="M"&&(a=n===n.toLowerCase()?"l":"L"),l=Hm[a.toUpperCase()];let h=[];for(let p=0;p<l&&i<e.length;p++,i++){let d=e[i];if(!M_(d))break;h.push(d)}if(h.length!==l)break;N_(t,a,r,h),r++}}return t}var Hm,Kp=g(()=>{"use strict";Hm={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0}});function Qp(s,e){return`attribute:d/svg-path/segment:${s}/handle:${e}`}var da,ua=g(()=>{"use strict";Kp();da=class{canMap(e){return e.sourceKind==="attribute"&&e.name==="d"&&e.designItem.element instanceof e.designItem.window.SVGPathElement}map(e){return Wm(e.value).map(t=>({designItem:e.designItem,kind:"svg-path-handle",key:Qp(t.segmentIndex,t.handleType),name:"d",textRange:{start:e.valueTextRange.start+t.start,length:t.length},data:{attribute:"d",segmentIndex:t.segmentIndex,handleType:t.handleType}}))}}});var ma,Zp=g(()=>{"use strict";le();fe();Gt();ie();Ye();Fi();pi();Zt();ua();ma=class extends F{_geometry=null;_reader;_dragState=null;_options;_overlayStructureSignature=null;_eventCleanups=[];_overlayCircles=new Map;_overlayLines=[];constructor(e,t,i,n,r){super(e,t,i),this._reader=n??$t(i.element),this._options=r??{}}extend(){this.refresh()}refresh(){if(!this._reader){this._cleanupAll();return}if(this._geometry=this._reader.read(this.extendedItem.element),!this._geometry){this._cleanupAll();return}let e=this._getOverlayStructureSignature(this._geometry);if(this._overlayStructureSignature!==e||this._hasOverlayStructureMismatch(this._geometry)){this._cleanupAll(),this._overlayStructureSignature=e,this._drawOverlays();return}this._valuesHaveChanges(...this._getRefreshValues(this._geometry))&&(this._updateOverlayAppearance(),this._updateOverlayPositions())}dispose(){this._cleanupAll(),this._geometry=null,this._dragState=null}_cleanupAll(){for(let e of this._eventCleanups)try{e()}catch{}this._eventCleanups=[],this._overlayStructureSignature=null,this._overlayCircles.clear(),this._overlayLines=[],this._removeAllOverlays()}_getOverlayStructureSignature(e){return e.segments.map(t=>`${t.type}:${t.cp1?1:0}:${t.cp2?1:0}`).join("|")}_hasOverlayStructureMismatch(e){let t=0,i=0;for(let n=0;n<e.segments.length;n++){let r=e.segments[n];r.type!==b.Close&&(this._shouldRenderAnchorHandle(n,r,e)&&i++,r.cp1&&(i++,t++,r.type===b.QuadraticBezier&&t++),r.cp2&&(i++,t++))}return this._overlayCircles.size!==i||this._overlayLines.length!==t}_getRefreshValues(e){let t=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0],i=[this.designerCanvas.zoomFactor,this.designerCanvas.scaleFactor,this._overlayStructureSignature??"",this._getSelectedHandleRefreshKey()];t&&i.push(t.p1.x,t.p1.y,t.p2.x,t.p2.y,t.p3.x,t.p3.y,t.p4.x,t.p4.y);for(let n of e.segments)i.push(n.type,n.point.x,n.point.y),n.cp1?i.push(n.cp1.x,n.cp1.y):i.push("cp1:none"),n.cp2?i.push(n.cp2.x,n.cp2.y):i.push("cp2:none");return i}_getSelectedHandleRefreshKey(){let e=this.extendedItem.instanceServiceContainer.selectionService.selectedPart,t=e?.data;return e?.designItem!==this.extendedItem||e.kind!=="svg-path-handle"?"selected:none":`selected:${t?.segmentIndex}:${t?.handleType}`}_toOverlay(e){return Pn(this.extendedItem.element,this.designerCanvas,e)}_fromOverlay(e){return fm(this.extendedItem.element,this.designerCanvas,e)}_drawOverlays(){if(!this._geometry)return;let e=null;for(let t=0;t<this._geometry.segments.length;t++){let i=this._geometry.segments[t];if(i.type===b.Close){e=this._geometry.segments[0]?.point??null;continue}if(i.cp1){let n=this._toOverlay(i.cp1);if(e){let r=this._toOverlay(e),o=this._drawLine(r.x,r.y,n.x,n.y,"svg-control-line");this._overlayLines.push(o)}if(i.type===b.QuadraticBezier){let r=this._toOverlay(i.point),o=this._drawLine(r.x,r.y,n.x,n.y,"svg-control-line");this._overlayLines.push(o)}this._drawControlCircle(n,t,"cp1")}if(i.cp2){let n=this._toOverlay(i.cp2),r=this._toOverlay(i.point),o=this._drawLine(r.x,r.y,n.x,n.y,"svg-control-line");this._overlayLines.push(o),this._drawControlCircle(n,t,"cp2")}if(this._shouldRenderAnchorHandle(t,i,this._geometry)){let n=this._toOverlay(i.point);this._drawAnchorCircle(n,t,i)}e=i.point}this._updateOverlayAppearance()}_updateOverlayAppearance(){let e=5/this.designerCanvas.scaleFactor,t=4/this.designerCanvas.scaleFactor,i=(1/this.designerCanvas.zoomFactor).toString(),n=(4/this.designerCanvas.scaleFactor).toString();for(let[r,o]of this._overlayCircles)o.setAttribute("r",(r.startsWith("anchor-")?e:t).toString()),o.style.strokeWidth=i,o.classList.toggle("svg-path-selected-part",this._isSelectedHandle(r));for(let r of this._overlayLines)r.style.strokeDasharray=n,r.style.strokeWidth=i}_addTrackedListener(e,t,i){e.addEventListener(t,i),this._eventCleanups.push(()=>e.removeEventListener(t,i))}_drawAnchorCircle(e,t,i){let n=5/this.designerCanvas.scaleFactor,r=this._drawCircle(e.x,e.y,n,"svg-path",void 0,M.Foreground);r.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),r.style.cursor="move",this._overlayCircles.set(`anchor-${t}`,r);let o=h=>this._onPointerDown(h,r,t,"anchor"),a=h=>this._onPointerMove(h,r,t,"anchor"),l=h=>this._onPointerUp(h,t),c=h=>{h.preventDefault(),this._showContextMenu(h,t,i)};this._addTrackedListener(r,P.PointerDown,o),this._addTrackedListener(r,P.PointerMove,a),this._addTrackedListener(r,P.PointerUp,l),this._addTrackedListener(r,P.ContextMenu,c)}_drawControlCircle(e,t,i){let n=4/this.designerCanvas.scaleFactor,r=this._drawCircle(e.x,e.y,n,"svg-control-point",void 0,M.Foreground);r.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),r.style.cursor="move",this._overlayCircles.set(`${i}-${t}`,r);let o=c=>this._onPointerDown(c,r,t,i),a=c=>this._onPointerMove(c,r,t,i),l=c=>this._onPointerUp(c,t);this._addTrackedListener(r,P.PointerDown,o),this._addTrackedListener(r,P.PointerMove,a),this._addTrackedListener(r,P.PointerUp,l)}_onPointerDown(e,t,i,n){e.stopPropagation(),e.preventDefault(),this._selectSourcePart(i,n,e),e.target.setPointerCapture(e.pointerId);let r=this.designerCanvas.getNormalizedEventCoordinates(e);if(!this._geometry)return;let o=this._geometry.segments[i],a;n==="anchor"?a={...o.point}:n==="cp1"?a={...o.cp1}:a={...o.cp2};let l=this._geometry.segments.map(c=>({point:{...c.point},cp1:c.cp1?{...c.cp1}:void 0,cp2:c.cp2?{...c.cp2}:void 0}));this._dragState={startCursorPos:r,segmentIndex:i,handleType:n,originalPoint:a,originalSegments:l,startScrollOffset:this.designerCanvas.canvasOffset,geometryChanged:!1}}_selectSourcePart(e,t,i){let n=this.extendedItem.instanceServiceContainer.selectionService,r=this._getSourcePart(e,t);n.primarySelection!==this.extendedItem?n.setSelectedElements([this.extendedItem],i,r):r&&n.setSelectedPart(r,i)}_getSourcePart(e,t){let i=Qp(e,t);return this.extendedItem.instanceServiceContainer.designItemDocumentPositionService?.getSourceParts(this.extendedItem).find(n=>n.key===i)}_isSelectedHandle(e){let[t,i]=e.split("-"),n=this.extendedItem.instanceServiceContainer.selectionService.selectedPart,r=n?.data;return n?.designItem===this.extendedItem&&n.kind==="svg-path-handle"&&r?.segmentIndex===Number(i)&&r?.handleType===t}_onPointerMove(e,t,i,n){if(e.stopPropagation(),e.preventDefault(),!this._dragState||!this._geometry||e.buttons===0||this._dragState.segmentIndex!==i||this._dragState.handleType!==n)return;let r=this.designerCanvas.getNormalizedEventCoordinates(e),o=r.x-this._dragState.startCursorPos.x,a=r.y-this._dragState.startCursorPos.y;o===0&&a===0||(e.shiftKey&&(Math.abs(o)>=Math.abs(a)?a=0:o=0),!(o===0&&a===0)&&(e.altKey&&n==="anchor"&&this._options.allowShapeDrag!==!1?this._dragWholeShape(o,a):this._dragSingleHandle(i,n,o,a),n==="anchor"&&this._normalizeAxisLineSegments(),this._dragState.geometryChanged=!0,this._applyGeometryToElement(),this._updateOverlayPositions(),this.designerCanvas.extensionManager.refreshAllExtensions([this.extendedItem],this)))}_dragSingleHandle(e,t,i,n){let r=this._toOverlay(this._dragState.originalPoint),o={x:r.x+i,y:r.y+n},a=this._fromOverlay(o),l=this._geometry.segments[e];if(t==="anchor"){if(this.extendedItem.element instanceof SVGRectElement&&this._dragRectCorner(e,a)||this.extendedItem.element instanceof SVGCircleElement&&this._dragCircleCardinal(e,a)||this.extendedItem.element instanceof SVGEllipseElement&&this._dragEllipseCardinal(e,a))return;if(l.type===b.HorizontalLine){let c=this._findPreviousAnchor(e);l.point.x=a.x,l.point.y=c?.y??l.point.y}else if(l.type===b.VerticalLine){let c=this._findPreviousAnchor(e);l.point.x=c?.x??l.point.x,l.point.y=a.y}else l.point.x=a.x,l.point.y=a.y}else t==="cp1"?(l.cp1.x=a.x,l.cp1.y=a.y):(l.cp2.x=a.x,l.cp2.y=a.y)}_normalizeAxisLineSegments(){if(!this._geometry)return;let e=null,t=this._geometry.segments.find(i=>i.type!==b.Close)?.point;for(let i of this._geometry.segments){if(i.type===b.Close){t&&(i.point={...t});continue}e&&(i.type===b.HorizontalLine?i.point.y=e.y:i.type===b.VerticalLine&&(i.point.x=e.x)),e=i.point}}_dragRectCorner(e,t){if(!this._geometry||!this._dragState?.originalSegments||this._geometry.segments.length<4||e<0||e>3)return!1;let i=this._dragState.originalSegments;switch(e){case 0:this._setRectCornerPoints(t,{x:i[2].point.x,y:t.y},{...i[2].point},{x:t.x,y:i[2].point.y});break;case 1:this._setRectCornerPoints({x:i[3].point.x,y:t.y},t,{x:t.x,y:i[3].point.y},{...i[3].point});break;case 2:this._setRectCornerPoints({...i[0].point},{x:t.x,y:i[0].point.y},t,{x:i[0].point.x,y:t.y});break;case 3:this._setRectCornerPoints({x:t.x,y:i[1].point.y},{...i[1].point},{x:i[1].point.x,y:t.y},t);break;default:return!1}let n=this._geometry.segments[4];return n?.type===b.Close&&(n.point={...this._geometry.segments[0].point}),!0}_setRectCornerPoints(e,t,i,n){this._geometry.segments[0].point={...e},this._geometry.segments[1].point={...t},this._geometry.segments[2].point={...i},this._geometry.segments[3].point={...n}}_dragCircleCardinal(e,t){if(!this._geometry||!this._dragState?.originalSegments)return!1;let i=this._normalizeCardinalIndex(e);if(i===null)return!1;let n=this._dragState.originalSegments,r=(n[1].point.x+n[3].point.x)/2,o=(n[0].point.y+n[2].point.y)/2,a=r,l=o,c=Math.abs(n[1].point.x-n[3].point.x)/2;switch(i){case 0:{let h=n[2].point.y;l=(t.y+h)/2,c=Math.abs(h-t.y)/2;break}case 1:{let h=n[3].point.x;a=(t.x+h)/2,c=Math.abs(t.x-h)/2;break}case 2:{let h=n[0].point.y;l=(n[0].point.y+t.y)/2,c=Math.abs(t.y-h)/2;break}case 3:{let h=n[1].point.x;a=(h+t.x)/2,c=Math.abs(h-t.x)/2;break}default:return!1}return this._setCardinalArcPoints(a,l,c,c),!0}_dragEllipseCardinal(e,t){if(!this._geometry||!this._dragState?.originalSegments)return!1;let i=this._normalizeCardinalIndex(e);if(i===null)return!1;let n=this._dragState.originalSegments,r=(n[1].point.x+n[3].point.x)/2,o=(n[0].point.y+n[2].point.y)/2,a=Math.abs(n[1].point.x-n[3].point.x)/2,l=Math.abs(n[2].point.y-n[0].point.y)/2;switch(i){case 0:{let c=n[2].point.y;o=(t.y+c)/2,l=Math.abs(c-t.y)/2;break}case 1:{let c=n[3].point.x;r=(t.x+c)/2,a=Math.abs(t.x-c)/2;break}case 2:{let c=n[0].point.y;o=(c+t.y)/2,l=Math.abs(t.y-c)/2;break}case 3:{let c=n[1].point.x;r=(c+t.x)/2,a=Math.abs(c-t.x)/2;break}default:return!1}return this._setCardinalArcPoints(r,o,a,l),!0}_normalizeCardinalIndex(e){return e>=0&&e<=3?e:e===4?0:null}_setCardinalArcPoints(e,t,i,n){this._geometry&&(this._geometry.segments[0].point={x:e,y:t-n},this._geometry.segments[1].point={x:e+i,y:t},this._geometry.segments[2].point={x:e,y:t+n},this._geometry.segments[3].point={x:e-i,y:t},this._geometry.segments[1].arc&&(this._geometry.segments[1].arc.rx=i,this._geometry.segments[1].arc.ry=n),this._geometry.segments[2].arc&&(this._geometry.segments[2].arc.rx=i,this._geometry.segments[2].arc.ry=n),this._geometry.segments[3].arc&&(this._geometry.segments[3].arc.rx=i,this._geometry.segments[3].arc.ry=n),this._geometry.segments[4]?.arc&&(this._geometry.segments[4].point={x:e,y:t-n},this._geometry.segments[4].arc.rx=i,this._geometry.segments[4].arc.ry=n),this._geometry.segments[5]?.type===b.Close&&(this._geometry.segments[5].point={x:e,y:t-n}))}_shouldRenderAnchorHandle(e,t,i){if(!(this.extendedItem.element instanceof SVGCircleElement)&&!(this.extendedItem.element instanceof SVGEllipseElement)||e!==4)return!0;let n=i.segments[0];return t.point.x!==n?.point.x||t.point.y!==n?.point.y}_dragWholeShape(e,t){if(!(!this._dragState?.originalSegments||!this._geometry))for(let i=0;i<this._geometry.segments.length;i++){let n=this._dragState.originalSegments[i],r=this._geometry.segments[i],o=this._toOverlay(n.point),a={x:o.x+e,y:o.y+t},l=this._fromOverlay(a);if(r.point.x=l.x,r.point.y=l.y,r.cp1&&n.cp1){let c=this._toOverlay(n.cp1),h={x:c.x+e,y:c.y+t},p=this._fromOverlay(h);r.cp1.x=p.x,r.cp1.y=p.y}if(r.cp2&&n.cp2){let c=this._toOverlay(n.cp2),h={x:c.x+e,y:c.y+t},p=this._fromOverlay(h);r.cp2.x=p.x,r.cp2.y=p.y}}}_updateOverlayPositions(){if(!this._geometry)return;let e=null,t=0;for(let i=0;i<this._geometry.segments.length;i++){let n=this._geometry.segments[i];if(n.type===b.Close){e=this._geometry.segments[0]?.point??null;continue}if(n.cp1){let r=this._toOverlay(n.cp1);if(e&&t<this._overlayLines.length){let a=this._toOverlay(e),l=this._overlayLines[t++];l.setAttribute("x1",a.x.toString()),l.setAttribute("y1",a.y.toString()),l.setAttribute("x2",r.x.toString()),l.setAttribute("y2",r.y.toString())}if(n.type===b.QuadraticBezier&&t<this._overlayLines.length){let a=this._toOverlay(n.point),l=this._overlayLines[t++];l.setAttribute("x1",a.x.toString()),l.setAttribute("y1",a.y.toString()),l.setAttribute("x2",r.x.toString()),l.setAttribute("y2",r.y.toString())}let o=this._overlayCircles.get(`cp1-${i}`);o&&(o.setAttribute("cx",r.x.toString()),o.setAttribute("cy",r.y.toString()))}if(n.cp2){let r=this._toOverlay(n.cp2),o=this._toOverlay(n.point);if(t<this._overlayLines.length){let l=this._overlayLines[t++];l.setAttribute("x1",o.x.toString()),l.setAttribute("y1",o.y.toString()),l.setAttribute("x2",r.x.toString()),l.setAttribute("y2",r.y.toString())}let a=this._overlayCircles.get(`cp2-${i}`);a&&(a.setAttribute("cx",r.x.toString()),a.setAttribute("cy",r.y.toString()))}if(this._shouldRenderAnchorHandle(i,n,this._geometry)){let r=this._toOverlay(n.point),o=this._overlayCircles.get(`anchor-${i}`);o&&(o.setAttribute("cx",r.x.toString()),o.setAttribute("cy",r.y.toString()))}e=n.point}}_onPointerUp(e,t){e.stopPropagation(),e.target.releasePointerCapture(e.pointerId),this._dragState?.geometryChanged&&this._geometry&&this._commitGeometryChange(),this._dragState=null}_applyGeometryToElement(){if(!this._reader||!this._geometry)return;let e=this._reader.serialize(this._geometry);Xu(this.extendedItem.element,e,this.extendedItem.serviceContainer.options.roundPixelsToDecimalPlaces)}_commitGeometryChange(){if(!this._reader||!this._geometry)return;let e=this._reader.serialize(this._geometry),t=this.extendedItem.openGroup("editGeometry");Qr(this.extendedItem,e),t.commit()}_showContextMenu(e,t,i){if(!this._geometry)return;let n=[],r=this.extendedItem.element instanceof SVGPathElement;if(this._geometry.segments.filter(a=>a.type!==b.Close).length>2&&n.push({title:"Delete point",action:()=>{this._geometry&&(this._geometry.segments.splice(t,1),t===0&&this._geometry.segments.length>0&&this._geometry.segments[0].type!==b.Close&&(this._geometry.segments[0].type=b.Move),this._applyGeometryToElement(),this._commitGeometryChange())}}),r&&this._findNextNonCloseSegment(t)!==null&&n.push({title:"Insert point after",action:()=>{this._insertPointAfter(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),r&&this._geometry.segments.length>0){let a=this._geometry.segments.some(c=>c.type===b.Close),l=this._findLastNonCloseIndex();(t===l||a&&i.type!==b.Close)&&(n.push({title:"---"}),a?n.push({title:"Open path",action:()=>{this._geometry&&(this._geometry.segments=this._geometry.segments.filter(c=>c.type!==b.Close),this._geometry.closed=!1,this._applyGeometryToElement(),this._commitGeometryChange())}}):n.push({title:"Close path",action:()=>{this._geometry&&(this._geometry.segments.push({type:b.Close,relative:!1,point:this._geometry.segments[0].point}),this._geometry.closed=!0,this._applyGeometryToElement(),this._commitGeometryChange())}}))}if(r&&t>0&&i.type!==b.Close){n.push({title:"---"});let a=[];i.type!==b.Move&&a.push({title:"moveto",action:()=>{this._convertToMove(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==b.Line&&i.type!==b.HorizontalLine&&i.type!==b.VerticalLine&&a.push({title:"line",action:()=>{this._convertToLine(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==b.HorizontalLine&&a.push({title:"horizontal line",action:()=>{this._convertToHorizontalLine(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==b.VerticalLine&&a.push({title:"vertical line",action:()=>{this._convertToVerticalLine(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==b.QuadraticBezier&&a.push({title:"quadratic b\xE9zier",action:()=>{this._convertToQuadratic(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==b.CubicBezier&&a.push({title:"cubic b\xE9zier",action:()=>{this._convertToCubic(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==b.Arc&&(a.push({title:"arc",action:()=>{this._convertToArc(t,!1),this._applyGeometryToElement(),this._commitGeometryChange()}}),a.push({title:"inverted arc",action:()=>{this._convertToArc(t,!0),this._applyGeometryToElement(),this._commitGeometryChange()}})),a.length>0&&n.push({title:"Convert to",children:a}),i.type===b.Arc&&n.push({title:"Invert arc",action:()=>{this._invertArc(t),this._applyGeometryToElement(),this._commitGeometryChange()}})}n.length>0&&Pe.show(n,e)}_findLastNonCloseIndex(){if(!this._geometry)return-1;for(let e=this._geometry.segments.length-1;e>=0;e--)if(this._geometry.segments[e].type!==b.Close)return e;return-1}_findNextNonCloseSegment(e){if(!this._geometry)return null;for(let t=e+1;t<this._geometry.segments.length;t++)if(this._geometry.segments[t].type!==b.Close)return t;return null}_findPreviousAnchor(e){if(!this._geometry)return null;for(let t=e-1;t>=0;t--){let i=this._geometry.segments[t];if(i.type!==b.Close)return i.point}return null}_insertPointAfter(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findNextNonCloseSegment(e);if(i===null)return;let n=this._geometry.segments[i],r;switch(n.type){case b.CubicBezier:{let a=t.point,l=n.cp1,c=n.cp2,h=n.point;r=this._evalCubicBezier(a,l,c,h,.5);break}case b.QuadraticBezier:{let a=t.point,l=n.cp1,c=n.point;r=this._evalQuadraticBezier(a,l,c,.5);break}default:{r={x:(t.point.x+n.point.x)/2,y:(t.point.y+n.point.y)/2};break}}let o={type:b.Line,relative:t.relative,point:r};this._geometry.segments.splice(e+1,0,o)}_convertToMove(e){if(!this._geometry)return;let t=this._geometry.segments[e];t.type=b.Move,delete t.cp1,delete t.cp2,delete t.arc}_convertToLine(e){if(!this._geometry)return;let t=this._geometry.segments[e];t.type=b.Line,delete t.cp1,delete t.cp2,delete t.arc}_convertToHorizontalLine(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findPreviousAnchor(e);i&&(t.type=b.HorizontalLine,t.point.y=i.y,delete t.cp1,delete t.cp2,delete t.arc)}_convertToVerticalLine(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findPreviousAnchor(e);i&&(t.type=b.VerticalLine,t.point.x=i.x,delete t.cp1,delete t.cp2,delete t.arc)}_convertToQuadratic(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findPreviousAnchor(e);if(!i)return;let n=t.point,r=(i.x+n.x)/2,o=(i.y+n.y)/2,a=Math.sqrt(Math.pow(n.x-i.x,2)+Math.pow(n.y-i.y,2)),l=Math.max(20,a*.25),c=Math.atan2(n.y-i.y,n.x-i.x)-Math.PI/2;t.type=b.QuadraticBezier,t.cp1={x:r+l*Math.cos(c),y:o+l*Math.sin(c)},delete t.cp2,delete t.arc}_convertToCubic(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findPreviousAnchor(e);if(!i)return;let n=t.point;if(t.type===b.QuadraticBezier&&t.cp1){t.type=b.CubicBezier;let r=t.cp1;t.cp1={x:i.x+2/3*(r.x-i.x),y:i.y+2/3*(r.y-i.y)},t.cp2={x:n.x+2/3*(r.x-n.x),y:n.y+2/3*(r.y-n.y)}}else t.type=b.CubicBezier,t.cp1={x:i.x+(n.x-i.x)/3,y:i.y+(n.y-i.y)/3},t.cp2={x:i.x+2*(n.x-i.x)/3,y:i.y+2*(n.y-i.y)/3};delete t.arc}_convertToArc(e,t=!1){if(!this._geometry)return;let i=this._geometry.segments[e],n=this._findPreviousAnchor(e);if(!n)return;let r=i.point,o=r.x-n.x,a=r.y-n.y,l=Math.sqrt(o*o+a*a),c=Math.max(1,l/2);i.type=b.Arc,i.arc={rx:c,ry:c,rotation:0,largeArc:!1,sweep:!t},delete i.cp1,delete i.cp2}_invertArc(e){if(!this._geometry)return;let t=this._geometry.segments[e];t.type!==b.Arc||!t.arc||(t.arc.sweep=!t.arc.sweep)}_evalCubicBezier(e,t,i,n,r){let o=1-r;return{x:o*o*o*e.x+3*o*o*r*t.x+3*o*r*r*i.x+r*r*r*n.x,y:o*o*o*e.y+3*o*o*r*t.y+3*o*r*r*i.y+r*r*r*n.y}}_evalQuadraticBezier(e,t,i,n){let r=1-n;return{x:r*r*e.x+2*r*n*t.x+n*n*i.x,y:r*r*e.y+2*r*n*t.y+n*n*i.y}}}});import{css as V_}from"@node-projects/base-custom-webcomponent";var fa,qp=g(()=>{"use strict";Zp();Zt();fa=class{_customReader;constructor(e){this._customReader=e}shouldExtend(e,t,i){if(this._customReader)return!0;let n=i.node;return n instanceof SVGPathElement||n instanceof SVGRectElement||n instanceof SVGLineElement||n instanceof SVGEllipseElement||n instanceof SVGCircleElement||n instanceof SVGPolygonElement||n instanceof SVGPolylineElement?mm(n):!1}getExtension(e,t,i){return new ma(e,t,i,this._customReader)}style=V_`.svg-control-line{stroke:#3899ec;fill:none;stroke-dasharray:4;pointer-events:none;opacity:.9}.svg-control-point{stroke:#3899ec;fill:#fff;pointer-events:auto}.svg-path-selected-part{stroke:#000;fill:#0f0}`}});var Lt,Jp=g(()=>{"use strict";Lt=class{constructor(e,t,i=!1){this.extensionProvider=e,this.condition=t,this.style=e.style??e.constructor.style,this.svgDefs=e.svgDefs??e.constructor.svgDefs}extensionProvider;condition;style;svgDefs;shouldExtend(e,t,i){return this.condition(i,t)?this.extensionProvider.shouldExtend(e,t,i):!1}getExtension(e,t,i){return this.extensionProvider.getExtension(e,t,i)}}});var _t,$e,lt=g(()=>{"use strict";he();le();ze();_t="basicStackedToolbarExtensionShowOverlay",$e=class s extends F{static basicTemplate=Su`<select title="position" id="position" style="pointer-events:auto;height:24px;width:80px;padding:0;font-weight:900;text-transform:uppercase;margin-left:5px;margin-right:10px"><option>static</option><option>relative</option><option>absolute</option><option>fixed</option></select><node-projects-image-button-list-selector id="inline" no-value-in-header property="inline"><img data-value="block" title="block" src="${E}images/display/block.svg"> <img data-value="inline" title="inline" src="${E}images/display/inline.svg"></node-projects-image-button-list-selector><select title="display" id="displayType" style="pointer-events:auto;height:24px;width:80px;padding:0;font-weight:900;text-transform:uppercase;margin-left:5px;margin-right:10px"><option>block</option><option>flex</option><option>grid</option></select>`;static toolBars=[];_toolbar;_size={width:220,height:30};_display;_inline;constructor(e,t,i){super(e,t,i)}extend(e,t){let i=getComputedStyle(this.extendedItem.element);this._display=i.display.replace("inline-","").replace("inline","block"),this._inline=i.display.startsWith("inline")?"inline":"block",this._toolbar=this.createToolbar(this.constructor.template,this._size.width,this._size.height),s.toolBars.push(this._toolbar);let n=this._toolbar.getById("position");n&&(n.value=i.position,n.onchange=async()=>{await this.extendedItem.updateStyleInSheetOrLocalAsync("position",n.value),this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem])});let r=this._toolbar.getById("displayType");r&&(r.value=this._display,r.onchange=async()=>{this._display=r.value,await this.updateDisplayValue(),this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem])});let o=this._toolbar.getById("inline");o&&(o.value=this._inline,o.addEventListener("value-changed",async()=>{this._inline=o.value,this._inline&&i.position==="absolute"&&this.extendedItem.setStyle("position","static"),await this.updateDisplayValue(),this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem])}))}async updateDisplayValue(){let e=(this._inline=="inline"?"inline ":"")+this._display;e==="inline block"&&(e="inline"),await this.extendedItem.updateStyleInSheetOrLocalAsync("display",e)}refresh(e,t){if(t){let i=this.designerCanvas.getNormalizedEventCoordinates(t),n=0;for(let r=0;r<s.toolBars.length-1&&s.toolBars[r]!==this._toolbar;r++)n+=this._toolbar.children[0].getBoundingClientRect().height+4;this._toolbar.updatePosition({x:i.x-16/this.designerCanvas.zoomFactor,y:i.y-n-(this._size.height+14)/this.designerCanvas.zoomFactor})}}_addStyleButton(e){let t=getComputedStyle(this.extendedItem.element),i=this._toolbar.getById(e);i.addEventListener("value-changed",async()=>{await this.extendedItem.updateStyleInSheetOrLocalAsync(e,i.value)}),i.value=t[e]}dispose(){s.toolBars.splice(s.toolBars.indexOf(this._toolbar),1),this._removeAllOverlays()}}});import{html as R_}from"@node-projects/base-custom-webcomponent";var ga,ed=g(()=>{"use strict";lt();he();ga=class extends $e{static template=R_`<div style="height:100%;width:100%">${$e.basicTemplate} <select title="display" id="gridType" style="pointer-events:auto;height:24px;width:60px;padding:0;margin-right:10px"><option>1x1</option><option>1x16</option><option>2x8</option><option>4x4</option><option>8x2</option><option>16x1</option><option>custom</option></select><node-projects-image-button-list-selector property="align-content" no-value-in-header id="align-content"><img title="center" data-value="center" src="${E}images/chromeDevtools/align-content-center-icon.svg"> <img title="space-around" data-value="space-around" src="${E}images/chromeDevtools/align-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${E}images/chromeDevtools/align-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${E}images/chromeDevtools/align-content-space-between-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/align-content-stretch-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-content" no-value-in-header id="justify-content"><img title="start" data-value="start" src="${E}images/chromeDevtools/justify-content-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/justify-content-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/justify-content-end-icon.svg"> <img title="space-around" data-value="space-around" src="${E}images/chromeDevtools/justify-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${E}images/chromeDevtools/justify-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${E}images/chromeDevtools/justify-content-space-between-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="align-items" no-value-in-header id="align-items"><img title="start" data-value="start" src="${E}images/chromeDevtools/align-items-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/align-items-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/align-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/align-items-stretch-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${E}images/chromeDevtools/align-items-baseline-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-items" no-value-in-header id="justify-items"><img title="start" data-value="start" src="${E}images/chromeDevtools/justify-items-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/justify-items-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/justify-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/justify-items-stretch-icon.svg"></node-projects-image-button-list-selector></div>`;constructor(e,t,i){super(e,t,i),this._size.width=624}extend(e,t){super.extend(e,t);let i=getComputedStyle(this.extendedItem.element),n=this._toolbar.getById("gridType"),r=document.createElement("option");r.innerText=i.gridTemplateColumns.split(" ").length+"x"+i.gridTemplateRows.split(" ").length,n.insertAdjacentElement("afterbegin",r),n.selectedIndex=0,n.onchange=async()=>{if(n.value=="custom"){let o=prompt("Number of columns?","4");if(!o)return;let a=prompt("Number of rows?","4");if(!a)return;let l=this.extendedItem.openGroup("change grid type");await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-columns","repeat("+o+", 1fr)"),await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-rows","repeat("+a+", 1fr)"),l.commit()}else{let o=n.value.split("x"),a=this.extendedItem.openGroup("change grid type");await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-columns","repeat("+o[0]+", 1fr)"),await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-rows","repeat("+o[1]+", 1fr)"),a.commit()}},this._addStyleButton("align-content"),this._addStyleButton("justify-content"),this._addStyleButton("align-items"),this._addStyleButton("justify-items"),this.refresh(e,t)}}});var ya,td=g(()=>{"use strict";ed();Z();lt();ya=class{shouldExtend(e,t,i){if(i.nodeType===D.Element){let n=getComputedStyle(i.element).display;if(n==="grid"||n==="inline-grid")return t.instanceServiceContainer.designContext.extensionOptions[_t]!==!1}return!1}getExtension(e,t,i){return new ga(e,t,i)}}});import{html as z_}from"@node-projects/base-custom-webcomponent";var va,id=g(()=>{"use strict";he();lt();va=class extends $e{static template=z_`<div style="height:100%;width:100%">${$e.basicTemplate}<node-projects-image-button-list-selector property="direction" no-value-in-header id="flex-direction"><img title="row" data-value="row" src="${E}images/chromeDevtools/flex-direction-row-icon.svg"> <img title="column" data-value="column" src="${E}images/chromeDevtools/flex-direction-column-icon.svg"> <img title="row-reverse" data-value="row-reverse" style="transform:scaleX(-1)" src="${E}images/chromeDevtools/flex-direction-row-icon.svg"> <img title="column-reverse" data-value="column-reverse" style="transform:scaleY(-1)" src="${E}images/chromeDevtools/flex-direction-column-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="wrap" no-value-in-header id="flex-wrap"><img title="nowrap" data-value="nowrap" src="${E}images/chromeDevtools/flex-wrap-nowrap-icon.svg"> <img title="wrap" data-value="wrap" src="${E}images/chromeDevtools/flex-wrap-wrap-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="align-content" no-value-in-header id="align-content"><img title="start" data-value="start" src="${E}images/chromeDevtools/align-content-flex-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/align-content-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/align-content-flex-end-icon.svg"> <img title="space-around" data-value="space-around" src="${E}images/chromeDevtools/align-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${E}images/chromeDevtools/align-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${E}images/chromeDevtools/align-content-space-between-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/align-content-stretch-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-content" no-value-in-header id="justify-content"><img title="start" data-value="start" src="${E}images/chromeDevtools/justify-content-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/justify-content-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/justify-content-end-icon.svg"> <img title="space-around" data-value="space-around" src="${E}images/chromeDevtools/justify-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${E}images/chromeDevtools/justify-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${E}images/chromeDevtools/justify-content-space-between-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="align-items" no-value-in-header id="align-items"><img title="start" data-value="start" src="${E}images/chromeDevtools/align-items-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/align-items-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/align-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/align-items-stretch-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${E}images/chromeDevtools/align-items-baseline-icon.svg"></node-projects-image-button-list-selector></div>`;constructor(e,t,i){super(e,t,i),this._size.width=625}extend(e,t){super.extend(e,t),this._addFlexDirectionButton(),this._addStyleButton("flex-wrap"),this._addStyleButton("align-content"),this._addStyleButton("justify-content"),this._addStyleButton("align-items"),this.refresh(e,t)}_addFlexDirectionButton(){let e=getComputedStyle(this.extendedItem.element),t=this._toolbar.getById("flex-direction");t.addEventListener("value-changed",async()=>{await this.extendedItem.updateStyleInSheetOrLocalAsync("flex-direction",t.value),this.rotateImagesAcordingFlexDirection(t.value)}),t.value=e["flex-direction"],this.rotateImagesAcordingFlexDirection(t.value)}rotateImagesAcordingFlexDirection(e){let t=0;(e=="column"||e=="column-reverse")&&(t=-90),this._toolbar.getById("flex-wrap").querySelectorAll("img").forEach(i=>i.style.rotate=t+"deg"),this._toolbar.getById("align-content").querySelectorAll("img").forEach(i=>i.style.rotate=t+"deg"),this._toolbar.getById("justify-content").querySelectorAll("img").forEach(i=>i.style.rotate=t+"deg"),this._toolbar.getById("align-items").querySelectorAll("img:nth-child(-n+4)").forEach(i=>i.style.rotate=t+"deg")}}});var _a,nd=g(()=>{"use strict";id();Z();lt();_a=class{shouldExtend(e,t,i){if(i.nodeType===D.Element){let n=getComputedStyle(i.element).display;if(n==="flex"||n==="inline-flex")return t.instanceServiceContainer.designContext.extensionOptions[_t]!==!1}return!1}getExtension(e,t,i){return new va(e,t,i)}}});import{html as F_}from"@node-projects/base-custom-webcomponent";var xa,rd=g(()=>{"use strict";lt();xa=class extends $e{static template=F_`<div style="height:100%;width:100%">${$e.basicTemplate}</div>`;constructor(e,t,i){super(e,t,i)}extend(e,t){super.extend(e,t),this.refresh(e,t)}}});var ba,sd=g(()=>{"use strict";rd();Z();lt();ba=class{shouldExtend(e,t,i){if(i.nodeType===D.Element){let n=getComputedStyle(i.element).display;if(n==="block"||n==="inline"||n==="inline-block")return t.instanceServiceContainer.designContext.extensionOptions[_t]!==!1}return!1}getExtension(e,t,i){return new xa(e,t,i)}}});var _i,od=g(()=>{"use strict";Po();_i=class{_title;_contextMenus;constructor(e,...t){this._title=e,this._contextMenus=t}shouldProvideContextmenu(e,t,i,n){return this._contextMenus.some(r=>!(r instanceof De)&&r.shouldProvideContextmenu(e,t,i,n))}provideContextMenuItems(e,t,i,n){return[{title:this._title,children:this._contextMenus.map(r=>r.shouldProvideContextmenu(e,t,i,n)?r.provideContextMenuItems(e,t,i,n):[]).flat()}]}}});import{html as B_}from"@node-projects/base-custom-webcomponent";var wa,ad=g(()=>{"use strict";he();lt();wa=class extends $e{static template=B_`<div style="height:100%;width:100%"><div style="display:flex;flex-direction:column"><span style="font-size:10px;color:#00aff0">column:</span> <input type="text" title="column" id="gridColumn" style="pointer-events:auto;height:12px;width:45px;padding:0;margin-right:5px"></div><div style="display:flex;flex-direction:column"><span style="font-size:10px;color:#00aff0">row:</span> <input type="text" title="column" id="gridRow" style="pointer-events:auto;height:12px;width:45px;padding:0;margin-right:10px"></div><node-projects-image-button-list-selector property="align-self" no-value-in-header id="align-self"><img title="start" data-value="start" src="${E}images/chromeDevtools/align-items-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/align-items-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/align-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/align-items-stretch-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-self" no-value-in-header id="justify-self"><img title="start" data-value="start" src="${E}images/chromeDevtools/justify-items-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/justify-items-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/justify-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/justify-items-stretch-icon.svg"></node-projects-image-button-list-selector></div>`;constructor(e,t,i){super(e,t,i),this._size.width=250}extend(e,t){super.extend(e,t);let i=getComputedStyle(this.extendedItem.element),n=this._toolbar.getById("gridColumn");n&&(n.value=i.gridColumn,n.onkeyup=async o=>{o.key==="Enter"&&await this.extendedItem.updateStyleInSheetOrLocalAsync("gridColumn",n.value)});let r=this._toolbar.getById("gridRow");r&&(r.value=i.gridColumn,r.onkeyup=async o=>{o.key==="Enter"&&await this.extendedItem.updateStyleInSheetOrLocalAsync("gridRow",r.value)}),this._addStyleButton("align-self"),this._addStyleButton("justify-self"),this.refresh(e,t)}}});var Sa,ld=g(()=>{"use strict";Z();ad();lt();Sa=class{shouldExtend(e,t,i){if(i.nodeType===D.Element&&i.parent){let n=i.parent?.getComputedStyle();if(n!=null&&(n.display==="grid"||n.display==="inline-grid"))return t.instanceServiceContainer.designContext.extensionOptions[_t]!==!1}return!1}getExtension(e,t,i){return new wa(e,t,i)}}});var Ca,cd=g(()=>{"use strict";lt();si();Ca=class extends tt{constructor(){super(_t,"T","show Toolbars")}}});var Ea,hd=g(()=>{"use strict";le();ie();Ea=class extends F{constructor(e,t,i){super(e,t,i)}_path;_path2;extend(e,t){this.refresh(e,t)}refresh(e,t){let i=getComputedStyle(this.extendedItem.element);if(i.padding!=="0px"){let n=Number.parseFloat(i.paddingLeft.replace("px","")),r=Number.parseFloat(i.paddingTop.replace("px","")),o=Number.parseFloat(i.paddingRight.replace("px","")),a=Number.parseFloat(i.paddingBottom.replace("px",""));if(n+=Number.parseFloat(i.borderLeftWidth.replace("px","")),r+=Number.parseFloat(i.borderTopWidth.replace("px","")),o+=Number.parseFloat(i.borderRightWidth.replace("px","")),a+=Number.parseFloat(i.borderBottomWidth.replace("px","")),!isNaN(n)&&!isNaN(r)&&!isNaN(o)&&!isNaN(a)){let l=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!isNaN(l.p1.x)&&this._valuesHaveChanges(n,r,o,a,l.p1.x,l.p1.y,l.p2.x,l.p2.y,l.p3.x,l.p3.y,l.p4.x,l.p4.y)){let c=this.extendedItem.element.getBoxQuads({box:"content",relativeTo:this.designerCanvas.canvas})[0],h="M"+[l.p1,l.p2,l.p3,l.p4].map(p=>p.x+","+p.y).join(" ")+"Z ";h+="M"+[c.p1,c.p2,c.p3,c.p4].map(p=>p.x+","+p.y).join(" ")+"Z ",this._path=this._drawPath(h,"svg-padding-fill",this._path,M.Background),this._path2=this._drawPath(h,"svg-padding",this._path2,M.Background)}}}}dispose(){this._removeAllOverlays()}}});import{css as jm}from"@node-projects/base-custom-webcomponent";var Pa,pd=g(()=>{"use strict";Z();hd();Zt();Pa=class{shouldExtend(e,t,i){return i.nodeType==D.Element}getExtension(e,t,i){return new Ea(e,t,i)}static style=jm`.svg-padding{fill:#32cd3266;fill-rule:evenodd}`;style=jm`.svg-padding-fill{fill:#32cd3266;fill-rule:evenodd}.svg-padding{fill:#32cd32FF;fill-rule:evenodd;mask:url(#mask-stripe-padding)}`;static svgDefs=ui`<pattern id="pattern-stripe-padding" patternUnits="userSpaceOnUse" width="10" height="10" patternTransform="rotate(45)" class="pattern"><line x1="0" y="0" x2="0" y2="10" stroke="color(display-p3 1 0 1 / 80%)" stroke-width="1"></line></pattern><mask id="mask-stripe-padding"><rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-stripe-padding)"></mask>`}});var Ia,dd=g(()=>{"use strict";fe();mi();le();Ia=class extends F{_actionModeStarted;_initialPoint;_circle1;_circle2;_circle3;_circle4;_circle5;_circle6;_circle7;_circle8;_initialComputedTransformOrigins;_initialTransformOrigins;_styleBackup;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(isNaN(i.p1.x)||isNaN(i.p2.x)){this.remove();return}this._valuesHaveChanges(this.designerCanvas.zoomFactor,i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p4.x,i.p4.y,i.p3.x,i.p3.y)&&(this._circle1=this._drawResizerOverlay(i.p1.x,i.p1.y,"nw-resize",this._circle1),this._circle2=this._drawResizerOverlay(i.p1.x+(i.p2.x-i.p1.x)/2,i.p1.y+(i.p2.y-i.p1.y)/2,"n-resize",this._circle2),this._circle3=this._drawResizerOverlay(i.p2.x,i.p2.y,"ne-resize",this._circle3),this._circle4=this._drawResizerOverlay(i.p1.x+(i.p4.x-i.p1.x)/2,i.p1.y+(i.p4.y-i.p1.y)/2,"w-resize",this._circle4),this._circle5=this._drawResizerOverlay(i.p4.x,i.p4.y,"sw-resize",this._circle5),this._circle6=this._drawResizerOverlay(i.p4.x+(i.p3.x-i.p4.x)/2,i.p4.y+(i.p3.y-i.p4.y)/2,"s-resize",this._circle6),this._circle8=this._drawResizerOverlay(i.p2.x+(i.p3.x-i.p2.x)/2,i.p2.y+(i.p3.y-i.p2.y)/2,"e-resize",this._circle8),this._circle7=this._drawResizerOverlay(i.p3.x,i.p3.y,"se-resize",this._circle7))}_drawResizerOverlay(e,t,i,n){let r=this._drawCircle(e,t,this.designerCanvas.serviceContainer.options.resizerPixelSize/this.designerCanvas.zoomFactor,"svg-grid-resizer",n);return r.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),n||(r.addEventListener(P.PointerDown,o=>this._pointerActionTypeResize(r,o,i)),r.addEventListener(P.PointerMove,o=>this._pointerActionTypeResize(r,o,i)),r.addEventListener(P.PointerUp,o=>this._pointerActionTypeResize(r,o,i))),r.style.cursor=i,r}_pointerActionTypeResize(e,t,i){t.stopPropagation();let n=this.designerCanvas.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:this._styleBackup=this.extendedItem.element.getAttribute("style"),t.target.setPointerCapture(t.pointerId),this._initialPoint=n,this._actionModeStarted=i,this._initialComputedTransformOrigins=[],this._initialTransformOrigins=[];let r=getComputedStyle(this.extendedItem.element).transformOrigin.split(" ").map(u=>parseFloat(u.replace("px",""))),o=new DOMPoint(r[0],r[1]);this._initialComputedTransformOrigins.push(o),this._initialTransformOrigins.push(this.extendedItem.element.style.transformOrigin);break;case P.PointerMove:if(this._initialPoint){let u=0,m=0,f=at(this.extendedItem.parent),v=In(this.extendedItem.parent,this.designerCanvas.getNormalizedEventCoordinates(t)),y=getComputedStyle(this.extendedItem.element);this.extendedItem.element.style.gridColumnStart=y.gridColumnStart,this.extendedItem.element.style.gridColumnEnd=y.gridColumnEnd==="auto"?""+(parseInt(y.gridColumnStart)+1):y.gridColumnEnd,this.extendedItem.element.style.gridRowStart=y.gridRowStart,this.extendedItem.element.style.gridRowEnd=y.gridRowEnd==="auto"?""+(parseInt(y.gridRowStart)+1):y.gridRowEnd,(this._actionModeStarted=="nw-resize"||this._actionModeStarted=="w-resize"||this._actionModeStarted=="sw-resize")&&(this.extendedItem.element.style.gridColumnStart=""+wm(f,v.x)),(this._actionModeStarted=="nw-resize"||this._actionModeStarted=="n-resize"||this._actionModeStarted=="ne-resize")&&(this.extendedItem.element.style.gridRowStart=""+Cm(f,v.y)),(this._actionModeStarted=="se-resize"||this._actionModeStarted=="e-resize"||this._actionModeStarted=="ne-resize")&&(u=bm(f,v.x),this.extendedItem.element.style.gridColumnEnd=""+(u+2)),(this._actionModeStarted=="sw-resize"||this._actionModeStarted=="s-resize"||this._actionModeStarted=="se-resize")&&(m=Sm(f,v.y),this.extendedItem.element.style.gridRowEnd=""+(m+2));let x=[this.extendedItem,this.extendedItem.parent];this.extensionManager.refreshExtensions(x)}break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId);let a=getComputedStyle(this.extendedItem.element),l=a.gridColumnStart,c=a.gridColumnEnd,h=a.gridRowStart,p=a.gridRowEnd;this._styleBackup?this.extendedItem.element.setAttribute("style",this._styleBackup):this.extendedItem.element.removeAttribute("style");let d=this.extendedItem.openGroup("Resize <"+this.extendedItem.name+">");this.extendedItem.setStyle("gridColumnStart",l),this.extendedItem.setStyle("gridColumnEnd",c),this.extendedItem.setStyle("gridRowStart",h),this.extendedItem.setStyle("gridRowEnd",p),d.commit(),this._initialPoint=null;break}}dispose(){this._removeAllOverlays()}}});import{css as H_}from"@node-projects/base-custom-webcomponent";var ka,ud=g(()=>{"use strict";Z();dd();ka=class{shouldExtend(e,t,i){return i.nodeType===D.Element&&i.parent?.nodeType===D.Element&&getComputedStyle(i.parent.element).display==="grid"}getExtension(e,t,i){return new Ia(e,t,i)}static style=H_`.svg-grid-resizer{stroke:#3899ec;fill:#fff;pointer-events:auto}`}});var Da,md=g(()=>{"use strict";Dt();Z();he();Da=class{shouldProvideContextmenu(e,t,i,n){return t.readOnly?!1:i?.instanceServiceContainer.selectionService.selectedElements.length>1?!i?.isRootItem&&i?.nodeType==D.Element:!1}provideContextMenuItems(e,t,i){return[{title:"align left",icon:`<img src="${E+"icons/alignHorizontalLeft.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeLeft})}},{title:"align center",icon:`<img src="${E+"icons/alignHorizontalCenter.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeCenter})}},{title:"align right",icon:`<img src="${E+"icons/alignHorizontalRight.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeRight})}},{title:"distribute horizontal",icon:`<img src="${E+"icons/horizontalDistribute.svg"}">`,action:()=>{t.executeCommand({type:A.distributeHorizontal})}},{title:"align top",icon:`<img src="${E+"icons/alignVerticalTop.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeTop})}},{title:"align middle",icon:`<img src="${E+"icons/alignVerticalCenter.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeMiddle})}},{title:"align bottom",icon:`<img src="${E+"icons/alignVerticalBottom.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeBottom})}},{title:"distribute vertical",icon:`<img src="${E+"icons/verticalDistribute.svg"}">`,action:()=>{t.executeCommand({type:A.distributeVertical})}}]}}});var Aa,fd=g(()=>{"use strict";ye();_e();Re();Ee();Aa=class extends te{name="webcomponent";getRefreshMode(e){return Y.full}isHandledElement(e){let t=e.element.constructor?.observedAttributes;return!!(t&&t.length>0)}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){return(e.element.constructor?.observedAttributes).map(i=>({name:z.dashToCamelCase(i),type:"string",service:this,propertyType:_.propertyAndAttribute}))}}});var Ta,gd=g(()=>{"use strict";le();Ta=class extends F{constructor(e,t,i){super(e,t,i)}_path;_rect;_clickRect;_g;extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(i&&!isNaN(i.p2.x)&&this._valuesHaveChanges(i.p1.x,i.p1.y,i.p2.x,i.p2.y,this.designerCanvas.scaleFactor)){let n=Math.atan2(i.p2.y-i.p1.y,i.p2.x-i.p1.x)*180/Math.PI,r=15/this.designerCanvas.scaleFactor;this._rect=this._drawRect(0,0,r,r,"svg-previous-select",this._rect),this._clickRect=this._drawRect(0,0,r,r,"svg-invisible",this._clickRect),this._g||(this._g=document.createElementNS("http://www.w3.org/2000/svg","g"),this._g.setAttribute("class","svg-previous-select"),this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("d","m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z"),this._g.appendChild(this._rect),this._g.appendChild(this._path),this._addOverlay(this._g),this._clickRect.onpointerdown=o=>{o.preventDefault(),o.stopPropagation(),this.extendedItem.instanceServiceContainer.selectionService.setSelectedElements([this.extendedItem.parent])},this._clickRect.onpointermove=o=>{o.preventDefault(),o.stopPropagation()},this._g.appendChild(this._clickRect)),this._path.style.scale=(.6/this.designerCanvas.scaleFactor).toString(),this._g.style.translate=i.p2.x-14.5/this.designerCanvas.scaleFactor+"px "+(i.p2.y-15/this.designerCanvas.scaleFactor)+"px",this._g.style.rotate=n+"deg",this._g.style.transformOrigin="100% 100%",this._g.style.transformBox="fill-box"}}dispose(){this._removeAllOverlays()}}});import{css as G_}from"@node-projects/base-custom-webcomponent";var Ma,yd=g(()=>{"use strict";gd();Ma=class{shouldExtend(e,t,i){return!i.isRootItem&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new Ta(e,t,i)}static style=G_`rect.svg-previous-select{stroke:none;fill:#3899ec;pointer-events:auto}g.svg-previous-select{fill:#fff;pointer-events:auto}`}});var La,vd=g(()=>{"use strict";Z();La=class{shouldProvideContextmenu(e,t,i,n){return i!=null&&i.nodeType==D.Element}provideContextMenuItems(e,t,i){return[{title:":hover",action:()=>{i.cssForceHover=!i.cssForceHover},checked:i.cssForceHover},{title:":active",action:()=>{i.cssForceActive=!i.cssForceActive},checked:i.cssForceActive},{title:":visited",action:()=>{i.cssForceVisited=!i.cssForceVisited},checked:i.cssForceVisited},{title:":focus",action:()=>{i.cssForceFocus=!i.cssForceFocus},checked:i.cssForceFocus},{title:":focus-within",action:()=>{i.cssForceFocusWithin=!i.cssForceFocusWithin},checked:i.cssForceFocusWithin},{title:":focus-visible",action:()=>{i.cssForceFocusVisible=!i.cssForceFocusVisible},checked:i.cssForceFocusVisible}]}}});var Oa,_d=g(()=>{"use strict";Gt();Oa=class{constructor(){}provideButtons(e,t){let i=document.createElement("div");return i.innerHTML="O",i.title="options",i.className="toolbar-control",i.onclick=n=>{this.showCtxMenu(n,t)},i.oncontextmenu=n=>{n.preventDefault(),this.showCtxMenu(n,t)},[i]}prepareContextMenu(e,t){return[{title:"simulate hover on hover",checked:t.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover,action:()=>{t.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover=!t.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover}},{title:"select unhitable elements",checked:t.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements,action:()=>{t.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements=!t.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements}},{title:"pause animations",checked:t.pauseAnimations,action:()=>{t.pauseAnimations=!t.pauseAnimations}},{title:"hide overflowing content",checked:t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent,action:()=>{if(t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent=!t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent,t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent)for(let n of t.rootDesignItem.children(!0))n.element instanceof HTMLElement&&(n.element.style.overflow="hidden",n.element.style.whiteSpace="nowrap");else for(let n of t.rootDesignItem.children(!0))n.element instanceof HTMLElement&&(n.element.style.overflow=n.hasStyle("overflow")?n.getStyle("overflow"):"",n.element.style.whiteSpace=n.hasStyle("white-space")?n.getStyle("white-space"):"")}}]}showCtxMenu(e,t){Pe.show(this.prepareContextMenu(e,t),e)}}});var Na,xd=g(()=>{"use strict";oe();Na=class{shouldProvideContextmenu(e,t,i,n){return n=="designer"}provideContextMenuItems(e,t,i){if(i){let n=[...i.element.children];if(n.length>0)return[{title:"children",children:[...n.map(r=>({title:"select: "+r.localName+(r.id?" (#"+r.id+")":""),action:()=>this._select(t,r)}))]}]}return[]}_select(e,t){let i=O.GetOrCreateDesignItem(t,t,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.selectionService.setSelectedElements([i])}}});var qi,bd=g(()=>{"use strict";fe();Et();qi=class{cursor="pointer";_changeGroup;pointerEventHandler(e,t,i){e.serviceContainer.designerTools.get(q.Pointer).pointerEventHandler(e,t,i)}keyboardEventHandler(e,t,i){t.preventDefault();let n=e.instanceServiceContainer.selectionService.primarySelection,r=getComputedStyle(n.element),o="";switch(t.key){case"ArrowLeft":o="margin-left";break;case"ArrowRight":o="margin-right";break;case"ArrowUp":o="margin-top";break;case"ArrowDown":o="margin-bottom";break}o&&(t.type==P.KeyDown&&!this._changeGroup&&(this._changeGroup=n.openGroup("change margin")),this._changeGroup&&(n.setStyleAsync(o,parseFloat(r[o])+(t.altKey?-1:1)+"px"),t.type==P.KeyUp&&(this._changeGroup.commit(),this._changeGroup=null)))}activated(e){}dispose(){this._changeGroup&&(this._changeGroup.abort(),this._changeGroup=null)}}});var jn,wd=g(()=>{"use strict";gt();jn=class{_name;_icon;constructor(e,t){this._name=e,this._icon=t}provideButton(e){let t={};return t[this._name]={icon:this._icon},new we(e,t)}}});var Ji,Sd=g(()=>{"use strict";fe();Et();Ji=class{cursor="pointer";_changeGroup;pointerEventHandler(e,t,i){e.serviceContainer.designerTools.get(q.Pointer).pointerEventHandler(e,t,i)}keyboardEventHandler(e,t,i){t.preventDefault();let n=e.instanceServiceContainer.selectionService.primarySelection,r=getComputedStyle(n.element),o="";switch(t.key){case"ArrowLeft":o="padding-left";break;case"ArrowRight":o="padding-right";break;case"ArrowUp":o="padding-top";break;case"ArrowDown":o="padding-bottom";break}o&&(t.type==P.KeyDown&&!this._changeGroup&&(this._changeGroup=n.openGroup("change padding")),this._changeGroup&&(n.setStyleAsync(o,parseFloat(r[o])+(t.altKey?-1:1)+"px"),t.type==P.KeyUp&&(this._changeGroup.commit(),this._changeGroup=null)))}activated(e){}dispose(){this._changeGroup&&(this._changeGroup.abort(),this._changeGroup=null)}}});var en,Va=g(()=>{"use strict";oe();en=class{createDesignItem(e,t,i,n){return new O(e,t,i,n)}handleSpecialAttributes(e,t){e==Li?(t.element instanceof(t.node.ownerDocument.defaultView??window).HTMLElement||t.element instanceof(t.node.ownerDocument.defaultView??window).SVGElement)&&(t.hasAttribute(Li)?t.element.style.display="none":t.element.style.display=t.getStyle("display")??""):e==Oi?(t.element instanceof(t.node.ownerDocument.defaultView??window).HTMLElement||t.element instanceof(t.node.ownerDocument.defaultView??window).SVGElement)&&(t.hasAttribute(Oi)?t.element.style.opacity="0.3":t.element.style.opacity=t.getStyle("opacity")??""):e==ai&&(t.element instanceof(t.node.ownerDocument.defaultView??window).HTMLElement||t.element instanceof(t.node.ownerDocument.defaultView??window).SVGElement)&&(t.hasAttribute(ai)?t.element.style.pointerEvents="none":requestAnimationFrame(()=>t.element.style.pointerEvents="auto"))}}});import{DomHelper as W_}from"@node-projects/base-custom-webcomponent";var Ra,Cd=g(()=>{"use strict";Ra=class{constructor(e){this.title="Delete Items",this.deletedItems=e}title;get affectedItems(){return this.deletedItems}undo(){for(let e=0;e<this.deletedItems.length;e++)this._parentItems[e]._insertChildInternal(this.deletedItems[e],this._parentIndexes[e]);return[{changeType:"added",designItems:this.deletedItems}]}do(){this._parentItems=[],this._parentIndexes=[];for(let e=0;e<this.deletedItems.length;e++)this._parentItems.push(this.deletedItems[e].parent),this._parentIndexes.push(W_.nodeIndex(this.deletedItems[e].element));for(let e=0;e<this.deletedItems.length;e++)this.deletedItems[e].parent._removeChildInternal(this.deletedItems[e]);return[{changeType:"removed",designItems:this.deletedItems}]}deletedItems;_parentItems;_parentIndexes;mergeWith(e){return!1}}});var za,Ed=g(()=>{"use strict";Cd();za=class{removeItems(e){e[0].instanceServiceContainer.undoService.execute(new Ra(e)),e[0].serviceContainer.referencesChangedService&&e[0].serviceContainer.referencesChangedService.notifyReferencesChanged(e.map(t=>({designItem:t,type:"deleted"})))}}});var Fa,Pd=g(()=>{"use strict";Fa=class{async provideMiniatureView(e){let t=document.createDocumentFragment();for(let i of e.rootDesignItem.children())t.appendChild(i.element.cloneNode(!0));return t}}});var xi,Ba=g(()=>{"use strict";ue();xi=class s{static _canvas;static _context;static _video;static _captureStream;static _disableStream(){s._captureStream.getTracks().forEach(e=>e.stop()),s._canvas=null}static get screenshotsEnabled(){return s._captureStream&&s._captureStream.active}static async enableScreenshots(e=document.body){if(s._captureStream&&!s._captureStream.active&&s._disableStream(),s._canvas==null){s._canvas=document.createElement("canvas"),s._context=s._canvas.getContext("2d"),s._video=document.createElement("video");let t={video:{cursor:"never",displaySurface:"browser"},audio:!1,selfBrowserSurface:"include",preferCurrentTab:!0};s._video.style.display="none",e.appendChild(s._video);try{s._captureStream=await navigator.mediaDevices.getDisplayMedia(t)}catch(n){throw s._canvas=null,n}if(s._captureStream.getVideoTracks()[0].getSettings().displaySurface!="browser")throw s._disableStream(),alert("You need to share the current Tab, for the screenshot API to work"),"You need to share the current Tab, for the screenshot API to work";s._video.srcObject=s._captureStream,s._video.play(),await s._sleep(2e3)}}static async takeScreenshot(e,t=100,i=100,n=document.body){await s.enableScreenshots(n);let r=K(e);s._canvas.width=t,s._canvas.height=i,s._context.drawImage(s._video,0,0,1,1,0,0,t,i);let o=s._video.videoWidth/window.innerWidth,a=s._video.videoHeight/window.innerHeight;return s._context.drawImage(s._video,r.left*o,r.top*a,r.width*o,r.height*a,0,0,t,i),s._canvas.toDataURL("image/png")}static _sleep(e){let t=null,i=new Promise(n=>t=n);return window.setTimeout(t,e),i}}});var Ha,Id=g(()=>{"use strict";Ba();ze();Ha=class{async takePng(e,t){if(!e||e.length===0)return null;let i=e[0].instanceServiceContainer.designerCanvas,n=e[0].instanceServiceContainer.selectionService,r=i.zoomFactor,o=i.canvasOffset,a=n.selectedElements;try{await xi.enableScreenshots(),i.disableBackgroud(),i.zoomFactor=1,t?.removeSelection&&n.setSelectedElements([]),i.canvasOffset={x:0,y:0},await fn();let l=1/0,c=1/0,h=-1/0,p=-1/0;for(let $ of e){let se=i.getNormalizedElementCoordinates($.element);l=Math.min(l,se.x),c=Math.min(c,se.y),h=Math.max(h,se.x+se.width),p=Math.max(p,se.y+se.height)}let d=t?.margin??0;l-=d,c-=d,h+=d,p+=d;let u=Math.ceil(h-l),m=Math.ceil(p-c),f=i.outercanvas2,v=f.offsetWidth,y=f.offsetHeight,x=1,w=v-2*x,C=y-2*x,S=Math.ceil(u/w),L=Math.ceil(m/C),k=window.devicePixelRatio||1,j=Math.ceil(v*k),H=Math.ceil(y*k),N=Math.ceil(x*k),Q=j-2*N,B=H-2*N,ce=document.createElement("canvas");ce.width=Math.ceil(u*k),ce.height=Math.ceil(m*k);let T=ce.getContext("2d"),re=1e3;for(let $=0;$<L;$++)for(let se=0;se<S;se++){let Qe=l+se*w,Ae=c+$*C;i.canvasOffset={x:-(Qe-x),y:-(Ae-x)},await St(re),re=300;let Ot=await xi.takeScreenshot(f,j,H),Nt=await this._loadImage(Ot);T.drawImage(Nt,N,N,Q,B,se*Q,$*B,Q,B)}let ee=await(await new Promise($=>ce.toBlob($,"image/png"))).arrayBuffer();return new Uint8Array(ee)}finally{i.zoomFactor=r,i.canvasOffset=o,i.enableBackground(),t?.removeSelection&&n.setSelectedElements(a)}}_loadImage(e){return new Promise((t,i)=>{let n=new Image;n.onload=()=>t(n),n.onerror=i,n.src=e})}}});var Ga,kd=g(()=>{"use strict";oe();Ga=class{async search(e,t,i){if(t!=""){let n=e.rootDesignItem.querySelectorAll(t),r=[];for(let o=0;o<n.length;o++){let a=O.GetDesignItem(n[o]);a&&r.push({designItem:a})}return r}return null}}});var Wa,Dd=g(()=>{"use strict";Wa=class{_item;_shouldProvide;constructor(e,t){this._item=e,this._shouldProvide=t||(()=>!0)}shouldProvideContextmenu(e,t,i,n){return this._shouldProvide(e,t,i,n)}provideContextMenuItems(e,t,i,n){return[{...this._item,action:r=>this._item.action?.(r,t,i,n)}]}}});var tn,ja=g(()=>{"use strict";fe();kt();le();tn=class extends F{_outline;_handles=[];_handleCrossHorizontalLines=[];_handleCrossVerticalLines=[];_activeHandleIndex=null;_baseTransform="";_projectiveTransform="";_targetPoints=[];constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!i)return;let n=[i.p1,i.p2,i.p3,i.p4];if(n.some(r=>!Number.isFinite(r.x)||!Number.isFinite(r.y))){this.remove();return}if(this._valuesHaveChanges(this.designerCanvas.zoomFactor,...n.flatMap(r=>[r.x,r.y]))){this._outline=this._drawTransformedRect(i,"svg-primary-projective-outline",this._outline),this._outline.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._outline.style.pointerEvents="none";let r=5/this.designerCanvas.zoomFactor,o=r*.55;for(let a=0;a<n.length;a++){let l=a,c=n[a],h=this._handles[a];h?(h=this._drawCircle(c.x,c.y,r,"svg-primary-projective-handle",h),this._handles[a]=h):(h=this._drawCircle(c.x,c.y,r,"svg-primary-projective-handle"),h.addEventListener(P.PointerDown,u=>this._handlePointerEvent(l,u)),h.addEventListener(P.PointerMove,u=>this._handlePointerEvent(l,u)),h.addEventListener(P.PointerUp,u=>this._handlePointerEvent(l,u)),this._handles[a]=h),h.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),h.style.cursor="move";let p=this._handleCrossHorizontalLines[a];p=this._drawLine(c.x-o,c.y,c.x+o,c.y,"svg-primary-projective-handle-cross",p),p.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),p.style.pointerEvents="none",this._handleCrossHorizontalLines[a]=p;let d=this._handleCrossVerticalLines[a];d=this._drawLine(c.x,c.y-o,c.x,c.y+o,"svg-primary-projective-handle-cross",d),d.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),d.style.pointerEvents="none",this._handleCrossVerticalLines[a]=d}}}dispose(){this._activeHandleIndex=null,this._restorePersistedTransform(),this._removeAllOverlays()}_handlePointerEvent(e,t){t.stopPropagation();let i=t.target;switch(t.type){case P.PointerDown:if(!this._startDrag(e))return;i.setPointerCapture(t.pointerId),this._activeHandleIndex=e;break;case P.PointerMove:if(this._activeHandleIndex===e&&t.buttons>0){let n=this._getLocalPointerPoint(t);if(!n)return;this._targetPoints[e]=n,this._applyPreviewTransform()}break;case P.PointerUp:if(this._activeHandleIndex===e){let n=this._getLocalPointerPoint(t);n&&(this._targetPoints[e]=n,this._applyPreviewTransform()),i.releasePointerCapture(t.pointerId),this._commitTransform(),this._activeHandleIndex=null}break}}_startDrag(e){let{baseTransform:t,projectiveTransform:i}=this._parseTransform(this.extendedItem.getStyleFromSheetOrLocal("transform")??"");this._baseTransform=t,this._projectiveTransform=i;let n=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!n)return!1;let r=this.extendedItem.element;return r.style.transform=this._buildTransform(this._baseTransform,""),this._targetPoints=this._convertQuadToLocalPoints(n),this._targetPoints.length!==4||this._targetPoints.some(o=>!Number.isFinite(o.x)||!Number.isFinite(o.y))?(this._restorePersistedTransform(),!1):(r.style.transform=this._buildTransform(this._baseTransform,this._projectiveTransform),this._targetPoints[e]!=null)}_convertQuadToLocalPoints(e){return[e.p1,e.p2,e.p3,e.p4].map(t=>{let i=this.extendedItem.element.convertPointFromNode({x:t.x,y:t.y},this.designerCanvas.canvas);return{x:i.x,y:i.y}})}_getLocalPointerPoint(e){let t=this.extendedItem.element,i=t.style.transform;t.style.transform=this._buildTransform(this._baseTransform,"");let n=this.designerCanvas.getNormalizedEventCoordinates(e),r=t.convertPointFromNode({x:n.x,y:n.y},this.designerCanvas.canvas);return t.style.transform=i,!Number.isFinite(r.x)||!Number.isFinite(r.y)?null:{x:r.x,y:r.y}}_applyPreviewTransform(){let e=this._buildProjectiveTransform(this._targetPoints);e!=null&&(this._projectiveTransform=e,this.extendedItem.element.style.transform=this._buildTransform(this._baseTransform,this._projectiveTransform))}_commitTransform(){let e=this._buildProjectiveTransform(this._targetPoints);e!=null&&(this._projectiveTransform=e);let t=this._buildTransform(this._baseTransform,this._projectiveTransform);t?this.extendedItem.updateStyleInSheetOrLocal("transform",t):this.extendedItem.hasStyle("transform")?this.extendedItem.removeStyle("transform"):this.extendedItem.updateStyleInSheetOrLocal("transform",null),this._restorePersistedTransform()}_restorePersistedTransform(){let e=this.extendedItem.element;this.extendedItem.hasStyle("transform")?e.style.transform=this.extendedItem.getStyle("transform")??"":e.style.transform=""}_buildProjectiveTransform(e){let t=Fe(this.extendedItem.element);if(!t.width||!t.height||e.length!==4)return"";let i=[{x:0,y:0},{x:t.width,y:0},{x:t.width,y:t.height},{x:0,y:t.height}];if(this._pointsApproximatelyEqual(e,i))return"";let n=this._createProjectiveMatrix(e,t.width,t.height);if(!n)return null;let r=getComputedStyle(this.extendedItem.element).transformOrigin.split(" "),o={x:parseFloat(r[0])||0,y:parseFloat(r[1])||0},a=new DOMMatrix().translate(-o.x,-o.y).multiply(n).multiply(new DOMMatrix().translate(o.x,o.y));return this._serializeMatrix3d(a)}_createProjectiveMatrix(e,t,i){let[n,r,o,a]=e,l=r.x-o.x,c=a.x-o.x,h=n.x-r.x+o.x-a.x,p=r.y-o.y,d=a.y-o.y,u=n.y-r.y+o.y-a.y,m,f,v,y,x,w;if(Math.abs(h)<1e-8&&Math.abs(u)<1e-8)m=r.x-n.x,f=a.x-n.x,v=r.y-n.y,y=a.y-n.y,x=0,w=0;else{let L=l*d-c*p;if(Math.abs(L)<1e-8)return null;x=(h*d-c*u)/L,w=(l*u-h*p)/L,m=r.x-n.x+x*r.x,f=a.x-n.x+w*a.x,v=r.y-n.y+x*r.y,y=a.y-n.y+w*a.y}let C=new DOMMatrix([m/t,v/t,0,x/t,f/i,y/i,0,w/i,0,0,1,0,n.x,n.y,0,1]);return[C.m11,C.m12,C.m13,C.m14,C.m21,C.m22,C.m23,C.m24,C.m31,C.m32,C.m33,C.m34,C.m41,C.m42,C.m43,C.m44].some(L=>!Number.isFinite(L))?null:C}_serializeMatrix3d(e){return`matrix3d(${[e.m11,e.m12,e.m13,e.m14,e.m21,e.m22,e.m23,e.m24,e.m31,e.m32,e.m33,e.m34,e.m41,e.m42,e.m43,e.m44].map(i=>this._formatMatrixNumber(i)).join(", ")})`}_formatMatrixNumber(e){if(Math.abs(e)<1e-10)return"0";let t=e.toFixed(8);return t.includes(".")&&(t=t.replace(/0+$/,"").replace(/\.$/,"")),t==="-0"?"0":t}_buildTransform(e,t){let i=[];return e?.trim()&&i.push(e.trim()),t?.trim()&&i.push(t.trim()),i.join(" ").trim()}_parseTransform(e){if(!e||e==="none")return{baseTransform:"",projectiveTransform:""};let t=this._splitTransformFunctions(e);if(!t.length)return{baseTransform:e.trim(),projectiveTransform:""};let i=t[t.length-1],n=i.slice(0,i.indexOf("(")).trim().toLowerCase();return n==="matrix"||n==="matrix3d"?{baseTransform:t.slice(0,-1).join(" ").trim(),projectiveTransform:i.trim()}:{baseTransform:e.trim(),projectiveTransform:""}}_splitTransformFunctions(e){let t=[],i=-1,n=0;for(let r=0;r<e.length;r++){let o=e[r];o==="("?n++:o===")"?(n--,n===0&&i!==-1&&(t.push(e.slice(i,r+1).trim()),i=-1)):n===0&&i===-1&&o.trim()&&(i=r)}return!t.length&&e.trim()&&t.push(e.trim()),t}_pointsApproximatelyEqual(e,t){return e.length!==t.length?!1:e.every((i,n)=>{let r=t[n];return Math.abs(i.x-r.x)<.01&&Math.abs(i.y-r.y)<.01})}}});import{css as j_}from"@node-projects/base-custom-webcomponent";var Ya,Ad=g(()=>{"use strict";ja();Ya=class{shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new tn(e,t,i)}static style=j_`.svg-primary-projective-handle{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto}.svg-primary-projective-handle-cross{stroke:#3899ec;fill:none;stroke-width:1;stroke-linecap:round;pointer-events:none}.svg-primary-projective-outline{stroke:#3899ec;fill:none;stroke-width:1;stroke-dasharray:4 2}`}});var Ua,Td=g(()=>{"use strict";Ua=class{getEditor(e,t){if(e==="color"||e==="css-color"){let n=document.createElement("node-projects-color-input");return n.addEventListener("change",()=>t.changedCallback(n.value)),{element:n,getValue:()=>n.value,setValue:r=>{n.value=r}}}let i=document.createElement("input");return i.type=e,t.min!==void 0&&(i.min=t.min),t.max!==void 0&&(i.max=t.max),t.step!==void 0&&(i.step=t.step),i.addEventListener("change",n=>t.changedCallback(n.target.value)),{element:i,getValue:()=>i.value,setValue:n=>{i.value=n}}}}});function Xa(s,e){return s.replaceAll(/:root\b/g,":host").replaceAll(":focus-within","["+e.forceFocusWithinAttributeName+"]").replaceAll(":focus-visible","["+e.forceFocusVisibleAttributeName+"]").replaceAll(":hover","["+e.forceHoverAttributeName+"]").replaceAll(":active","["+e.forceActiveAttributeName+"]").replaceAll(":visited","["+e.forceVisitedAttributeName+"]").replaceAll(":focus","["+e.forceFocusAttributeName+"]")}var Md=g(()=>{"use strict"});var $a,Ld=g(()=>{"use strict";oe();Md();$a=class{updateRenderedDesignItem(e){let t=this.getStyleDesignItem(e);if(!t)return;let i=this.patchStyleText([...t.children()].map(n=>n.content).join(""));this.updateStyleElementText(t.element,i),this.updateDeclarativeShadowStyle(t,i),t.instanceServiceContainer.designerCanvas.lazyTriggerReparseDocumentStylesheets()}updateRenderedNode(e){let t=e.ownerDocument?.defaultView??window;if(e instanceof t.HTMLStyleElement&&this.updateStyleElementText(e,this.patchStyleText(e.textContent)),e instanceof t.HTMLTemplateElement&&this.updateRenderedNode(e.content),"querySelectorAll"in e)for(let i of e.querySelectorAll("style"))this.updateStyleElementText(i,this.patchStyleText(i.textContent));return e}getStyleDesignItem(e){return e?.name=="style"?e:e?.parent?.name=="style"?e.parent:null}updateDeclarativeShadowStyle(e,t){let i=this.getDeclarativeShadowTemplateDesignItem(e);if(!i)return;let n=i.parent?.element;if(!n?.shadowRoot)return;let o=[...i.node.content.querySelectorAll("style")].indexOf(e.node),a=[...n.shadowRoot.querySelectorAll("style")];o>=0&&o<a.length?this.updateStyleElementText(a[o],t):this.updateRenderedNode(n.shadowRoot)}getDeclarativeShadowTemplateDesignItem(e){let t=e.parent;for(;t;){let i=t.node.ownerDocument.defaultView??window;if(t.node instanceof i.HTMLTemplateElement&&t.getAttribute("shadowrootmode")=="open")return t;t=t.parent}return null}updateStyleElementText(e,t){e.textContent!==t&&(e.textContent=t)}patchStyleText(e){return Xa(e,{forceHoverAttributeName:ot,forceActiveAttributeName:Wt,forceVisitedAttributeName:jt,forceFocusAttributeName:Yt,forceFocusWithinAttributeName:Ut,forceFocusVisibleAttributeName:Xt})}}});var Xm={};Zd(Xm,{createDefaultServiceContainer:()=>Ym,default:()=>Um});function Ym(){let s=new sr,e=new mt;return s.register("containerService",e),s.register("containerService",new ro(e)),s.register("containerService",new oo(e)),s.register("propertyService",new Aa),s.register("propertyService",new cr),s.register("propertyService",new hr),s.register("propertyService",new pr),s.register("propertyService",new dr),s.register("propertyService",new pa),s.register("propertyService",new es),s.register("propertyService",new Hr),s.register("propertyGroupsService",new Wo),s.register("instanceService",new Cr),s.register("propertyEditorTypesService",new Br),s.register("editorTypeService",new Ua),s.register("htmlWriterService",new So),s.register("snaplinesProviderService",new ao),s.register("htmlParserService",new Kt),s.register("renderedDesignItemService",new $a),s.register("elementAtPointService",new so),s.register("externalDragDropService",new lo),s.register("dragDropService",new aa),s.register("copyPasteService",new mo),s.register("modelCommandService",new fo),s.register("demoProviderService",new la),s.register("eventsService",new Ne),s.register("designItemService",new en),s.register("deletionService",new za),s.register("miniatureViewService",new Fa),s.register("pngCreatorService",new Ha),s.register("searchService",new Ga),s.register("undoService",t=>new Zo(t)),s.register("selectionService",t=>new Jo(t,!1)),s.register("designItemDocumentPositionService",t=>new na(t)),s.sourceMapProviders.push(new da),s.designerExtensions.set(I.Permanent,[new to]),s.designerExtensions.set(I.PrimarySelection,[new Lt(new oa,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement)]),s.designerExtensions.set(I.Selection,[new Lt(new Es,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement)]),s.designerExtensions.set(I.OnlyOneItemSelected,[new Lt(new is,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement),new Lt(new Ma,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement),new Lt(new gs,(t,i)=>i.activeTool instanceof qi||i.activeTool instanceof Ji,!0),new Lt(new Pa,(t,i)=>i.activeTool instanceof qi||i.activeTool instanceof Ji,!0),new vs,new fa,new Zi(new ka,new Is(!0)),new ps(!0),new As]),s.designerExtensions.set(I.MultipleItemsSelected,[new Ms]),s.designerExtensions.set(I.PrimarySelectionRefreshed,[new Sa,new ya,new _a,new ba]),s.designerExtensions.set(I.PrimarySelectionAndCanBeEntered,[new gi,new ia,new Gn]),s.designerExtensions.set(I.PrimarySelectionContainerAndCanBeEntered,[new gi("lightgray","#8080802b"),new Gn]),s.designerExtensions.set(I.MouseOver,[new xs]),s.designerExtensions.set(I.Placement,[new Yo]),s.designerExtensions.set(I.ContainerDrag,[new Zs]),s.designerExtensions.set(I.ContainerDragOverAndCanBeEntered,[new Zi(new gi,new Hn),new Js]),s.designerExtensions.set(I.ContainerExternalDragOverAndCanBeEntered,[new Zi(new gi,new Hn)]),s.designerExtensions.set(I.Doubleclick,[new co]),s.designerExtensions.set(I.ManualApplied,[new Ya]),s.designerPointerExtensions.push(),s.designerTools.set(q.Pointer,new bs),s.designerTools.set(q.DrawSelection,new Ln),s.designerTools.set(q.DrawPath,new Ss({interpolatePoints:!0})),s.designerTools.set(q.DrawRect,new vo),s.designerTools.set(q.DrawEllipsis,new _o),s.designerTools.set(q.DrawLine,new xo),s.designerTools.set(q.Zoom,new Ls),s.designerTools.set(q.Pan,new Os),s.designerTools.set(q.RectangleSelector,new Ln),s.designerTools.set(q.MagicWandSelector,new Us),s.designerTools.set(q.PickColor,new Xs),s.designerTools.set(q.Text,new Ks),s.designerTools.set(q.DrawElementTool,ca),s.designerTools.set(q.Margin,new qi),s.designerTools.set(q.Padding,new Ji),s.designViewConfigButtons.push(new Mt(20),new yo,new $o,new Mt(10),new Ko,new Mt(10),new yr,new Mt(10),new Ca,new Mt(30),new ha,new Mt(30),new Oa),s.designViewToolbarButtons.push(new To,new yt(22),new No,new yt(22),new jn("Margin",E+"images/tools/Margin.svg"),new yt(22),new jn("Padding",E+"images/tools/Padding.svg"),new yt(22),new Mo,new yt(22),new Lo,new yt(22),new Oo,new yt(22),new ra),s.designerContextMenuExtensions=[new _i("edit",new Ns,new De,new Vs),new De,new Ws,new De,new _i("modify",new Do,new De,new js,new De,new Da,new De,new Wa({title:"3D transform",action:(t,i,n)=>{i.extensionManager.removeExtensions([n],!1,I.PrimarySelection),i.extensionManager.removeExtensions([n],!1,I.OnlyOneItemSelected),i.extensionManager.applyExtensionInstance(n,new tn(i.extensionManager,i,n),I.OnlyOneItemSelected)}})),new De,new _i("view",new ea,new ko),new De,new _i("force",new La),new De,new Ys,new Eo,new Co,new De,new Ao,new De,new no,new Na],s}var Um,Ka=g(()=>{"use strict";Fl();Hl();Gl();Wl();jl();ec();vc();_c();Bi();Sn();Ac();rt();Oc();Uc();Kc();Zc();Jc();Et();th();ih();rh();oh();lh();hh();ph();dh();uh();fh();Sh();Ch();Ph();Ih();kh();Dh();Mh();Oh();Vh();io();Fh();Bh();Hh();Gh();Wh();jh();Yh();Xh();Kh();Qh();qh();Jh();ep();tp();np();rp();sp();Po();op();ap();lp();hp();pp();dp();mp();fp();yp();_p();Pp();kp();Xo();Tp();Mp();Op();Np();_r();Vp();zp();Vn();Fp();Bp();Hp();Wp();jp();Wn();Yp();Up();Xp();$p();qp();ua();Jp();td();nd();sd();od();ld();cd();pd();ud();md();fd();yd();vd();_d();xd();bd();wd();he();Sd();Va();Ed();Pd();Id();kd();Dd();ja();Ad();Td();Ld();Um=Ym});import{BaseCustomWebComponentLazyAppend as Gf,css as Wf,TypedEvent as jf,DomHelper as Jd}from"@node-projects/base-custom-webcomponent";var bt=class extends Gf{_selectedIndex=-1;_panels;_headerDiv;_moreDiv;_moreContainer;_elementMap=new WeakMap;_firstConnect=!0;static style=Wf`:host{height:100%}.outer{display:flex;flex-direction:column;height:100%;position:relative;overflow:hidden}.header{display:inline-flex;user-select:none;-webkit-user-select:none;flex-direction:row;cursor:pointer;height:30px;width:calc(100% - 30px);background-color:var(--dark-grey,#232733);overflow-x:auto;scrollbar-width:none}.header-more{right:0;top:0;width:30px;position:absolute;color:#fff;display:flex;justify-content:center;align-items:center;font-family:math}.header-more:hover{background:var(--light-grey,#383f52)}.more-container{z-index:1;user-select:none;-webkit-user-select:none;background-color:var(--dark-grey,#232733);right:0;top:30px;position:absolute;color:#fff;display:flex;flex-direction:column;align-items:flex-start;cursor:pointer}.more-container .tab-header{width:100%}.header::-webkit-scrollbar{display:none}.tab-header{height:30px;font-family:Arial;display:flex;justify-content:center;align-items:center;text-transform:uppercase;box-sizing:content-box;padding-left:5px;padding-right:5px;color:#fff;font-size:12px;font-weight:500;line-height:1.5;letter-spacing:1px;white-space:nowrap}.tab-header:hover{background:var(--light-grey,#383f52)}.selected{background:var(--medium-grey,#2f3545);box-shadow:inset 0 3px 0 var(--highlight-pink,#e91e63)}.panels{z-index:0;background:var(--medium-grey,#2f3545);height:calc(100% - 30px)}`;constructor(){super();let e=document.createElement("div");e.className="outer",this.shadowRoot.appendChild(e),this._headerDiv=document.createElement("div"),this._headerDiv.className="header",e.appendChild(this._headerDiv),this._moreDiv=document.createElement("div"),this._moreDiv.className="header header-more",this._moreDiv.innerText="<<",e.appendChild(this._moreDiv),this._moreContainer=document.createElement("div"),this._moreContainer.className="more-container",this._moreContainer.style.visibility="hidden",e.appendChild(this._moreContainer),this._moreDiv.onclick=()=>{this._moreContainer.children.length&&this._moreContainer.style.visibility=="hidden"?this._moreContainer.style.visibility="":this._moreContainer.style.visibility="hidden"},this._panels=document.createElement("div"),this._panels.className="panels",e.appendChild(this._panels);let t=document.createElement("slot");t.name="panels",this._panels.appendChild(t),new ResizeObserver(n=>{this._showHideHeaderItems()}).observe(this._headerDiv)}_showHideHeaderItems(){this._moreContainer.style.visibility="hidden";let e=0;Jd.removeAllChildnodes(this._moreContainer),Jd.removeAllChildnodes(this._headerDiv);let t=!0;for(let i of this.children)if(i.style.display!="none"){let n=i;!this._elementMap.has(n)&&t&&(this.refreshItems(),t=!1);let r=this._elementMap.get(n);this._moreContainer.appendChild(r),(this._headerDiv.children.length==0||e+r.clientWidth/2<this._headerDiv.clientWidth)&&(this._headerDiv.appendChild(r),e+=r.clientWidth)}}connectedCallback(){if(this._firstConnect){this.refreshItems(),this._firstConnect=!1;let e=this.getAttribute("selected-index");e&&(this.selectedIndex=parseInt(e))}}get selectedIndex(){return this._firstConnect?-1:this._selectedIndex}set selectedIndex(e){let t=this._selectedIndex;this._selectedIndex=e,this.children.length&&t!=this._selectedIndex&&this._selectedIndexChanged(t)}refreshItems(){this._headerDiv.innerHTML="";let e=0;for(let t of this.children)if(t.style.display!="none"){let i=t,n=document.createElement("div");n.innerText=i.dataset.title||i.title,n.title=i.dataset.title||i.title,n.className="tab-header";let r=e;n.onpointerdown=()=>{let o=this._selectedIndex;this._selectedIndex=r,this._headerDiv.children.length&&this._selectedIndexChanged(o,!0),this._moreContainer.style.visibility="hidden"},this._elementMap.set(i,n),this._headerDiv.appendChild(n),e++}this._showHideHeaderItems(),this._selectedIndexChanged()}_selectedIndexChanged(e,t=!1){let i=-1;for(let n of this.children)if(n.style.display!="none")if(i++,i==this._selectedIndex){n.slot!="panels"&&(n.slot="panels");let r=this._elementMap.get(n);r&&(r.classList.add("selected"),n.activated&&n.activated())}else{n.removeAttribute("slot");let r=this._elementMap.get(n);r&&r.classList.remove("selected")}this.onSelectedTabChanged.emit({newIndex:this._selectedIndex,oldIndex:e,changedViaClick:t}),this._moreContainer.style.visibility="hidden"}onSelectedTabChanged=new jf};customElements.define("node-projects-designer-tab-control",bt);import{BaseCustomWebComponentConstructorAppend as su,css as ou,html as au,TypedEvent as eu}from"@node-projects/base-custom-webcomponent";var Qn=class s{red=0;green=0;blue=0;hue=0;sat=0;lightness=0;whiteness=0;blackness=0;cyan=0;magenta=0;yellow=0;black=0;ncol="R";opacity=1;valid=!1;toRgbString(){return"rgb("+this.red+", "+this.green+", "+this.blue+")"}toRgbaString(){return"rgba("+this.red+", "+this.green+", "+this.blue+", "+this.opacity+")"}toHwbString(){return"hwb("+this.hue+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%)"}toHwbStringDecimal(){return"hwb("+this.hue+", "+this.whiteness+", "+this.blackness+")"}toHwbaString(){return"hwba("+this.hue+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%, "+this.opacity+")"}toHslString(){return"hsl("+this.hue+", "+Math.round(this.sat*100)+"%, "+Math.round(this.lightness*100)+"%)"}toHslStringDecimal(){return"hsl("+this.hue+", "+this.sat+", "+this.lightness+")"}toHslaString(){return"hsla("+this.hue+", "+Math.round(this.sat*100)+"%, "+Math.round(this.lightness*100)+"%, "+this.opacity+")"}toCmykString(){return"cmyk("+Math.round(this.cyan*100)+"%, "+Math.round(this.magenta*100)+"%, "+Math.round(this.yellow*100)+"%, "+Math.round(this.black*100)+"%)"}toCmykStringDecimal(){return"cmyk("+this.cyan+", "+this.magenta+", "+this.yellow+", "+this.black+")"}toNcolString(){return this.ncol+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%"}toNcolStringDecimal(){return this.ncol+", "+this.whiteness+", "+this.blackness}toNcolaString(){return this.ncol+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%, "+this.opacity}toName(){let e,t,i,n=s.getColorArr("hexs");for(let r=0;r<n.length;r++)if(e=parseInt(n[r].substr(0,2),16),t=parseInt(n[r].substr(2,2),16),i=parseInt(n[r].substr(4,2),16),this.red==e&&this.green==t&&this.blue==i)return s.getColorArr("names")[r];return null}toHexString(){let e=s.toHex(this.red),t=s.toHex(this.green),i=s.toHex(this.blue);return"#"+e+t+i}toNameOrHexString(){let e=this.toName();return e||(e=this.toHexString()),e}toRgb(){return{r:this.red,g:this.green,b:this.blue,a:this.opacity}}toHsl(){return{h:this.hue,s:this.sat,l:this.lightness,a:this.opacity}}toHwb(){return{h:this.hue,w:this.whiteness,b:this.blackness,a:this.opacity}}toCmyk(){return{c:this.cyan,m:this.magenta,y:this.yellow,k:this.black,a:this.opacity}}toNcol(){return{ncol:this.ncol,w:this.whiteness,b:this.blackness,a:this.opacity}}isDark(e){let t=e||128;return(this.red*299+this.green*587+this.blue*114)/1e3<t}saturate(e){let t,i,n;t=e/100||.1,this.sat+=t,this.sat>1&&(this.sat=1),i=s.hslToRgb(this.hue,this.sat,this.lightness),n=s.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(n)}desaturate(e){let t,i,n;t=e/100||.1,this.sat-=t,this.sat<0&&(this.sat=0),i=s.hslToRgb(this.hue,this.sat,this.lightness),n=s.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(n)}lighter(e){let t,i,n;t=e/100||.1,this.lightness+=t,this.lightness>1&&(this.lightness=1),i=s.hslToRgb(this.hue,this.sat,this.lightness),n=s.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(n)}darker(e){let t,i,n;t=e/100||.1,this.lightness-=t,this.lightness<0&&(this.lightness=0),i=s.hslToRgb(this.hue,this.sat,this.lightness),n=s.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(n)}attachValues(e){this.red=e.red,this.green=e.green,this.blue=e.blue,this.hue=e.hue,this.sat=e.sat,this.lightness=e.lightness,this.whiteness=e.whiteness,this.blackness=e.blackness,this.cyan=e.cyan,this.magenta=e.magenta,this.yellow=e.yellow,this.black=e.black,this.ncol=e.ncol,this.opacity=e.opacity,this.valid=e.valid}static toColorObject(e){let t,i,n,r=[],o,a,l,c,h,p,d,u,m=[],f=[];if(e=s.w3trim(e.toLowerCase()),t=e.substr(0,1).toUpperCase(),i=e.substr(1),h=1,(t=="R"||t=="Y"||t=="G"||t=="C"||t=="B"||t=="M"||t=="W")&&!isNaN(i)&&(e.length==6&&e.indexOf(",")==-1||(e="ncol("+e+")")),e.length!=3&&e.length!=6&&!isNaN(e)&&(e="ncol("+e+")"),e.indexOf(",")>0&&e.indexOf("(")==-1&&(e="ncol("+e+")"),e.substr(0,3)=="rgb"||e.substr(0,3)=="hsl"||e.substr(0,3)=="hwb"||e.substr(0,4)=="ncol"||e.substr(0,4)=="cmyk"){if(e.substr(0,4)=="ncol"?(e.split(",").length==4&&e.indexOf("ncola")==-1&&(e=e.replace("ncol","ncola")),n="ncol",e=e.substr(4)):e.substr(0,4)=="cmyk"?(n="cmyk",e=e.substr(4)):(n=e.substr(0,3),e=e.substr(3)),o=3,l=!1,e.substr(0,1).toLowerCase()=="a"?(o=4,l=!0,e=e.substr(1)):n=="cmyk"&&(o=4,e.split(",").length==5&&(o=5,l=!0)),e=e.replace("(",""),e=e.replace(")",""),r=e.split(","),n=="rgb"){if(r.length!=o)return new s;for(a=0;a<o;a++){if((r[a]==""||r[a]==" ")&&(r[a]="0"),r[a].indexOf("%")>-1&&(r[a]=r[a].replace("%",""),r[a]=Number(r[a]/100),a<3&&(r[a]=Math.round(r[a]*255))),isNaN(r[a]))return new s;parseInt(r[a])>255&&(r[a]=255),a<3&&(r[a]=parseInt(r[a])),a==3&&Number(r[a])>1&&(r[a]=1)}u={r:r[0],g:r[1],b:r[2]},l==!0&&(h=Number(r[3]))}if(n=="hsl"||n=="hwb"||n=="ncol"){for(;r.length<o;)r.push("0");for((n=="hsl"||n=="hwb")&&parseInt(r[0])>=360&&(r[0]=0),a=1;a<o;a++){if(r[a].indexOf("%")>-1){if(r[a]=r[a].replace("%",""),r[a]=Number(r[a]),isNaN(r[a]))return new s;r[a]=r[a]/100}else r[a]=Number(r[a]);Number(r[a])>1&&(r[a]=1),Number(r[a])<0&&(r[a]=0)}n=="hsl"&&(u=s.hslToRgb(r[0],r[1],r[2]),p=Number(r[0]),d=Number(r[1])),n=="hwb"&&(u=s.hwbToRgb(r[0],r[1],r[2])),n=="ncol"&&(u=s.ncolToRgb(r[0],r[1],r[2])),l==!0&&(h=Number(r[3]))}if(n=="cmyk"){for(;r.length<o;)r.push("0");for(a=0;a<o;a++){if(r[a].indexOf("%")>-1){if(r[a]=r[a].replace("%",""),r[a]=Number(r[a]),isNaN(r[a]))return new s;r[a]=r[a]/100}else r[a]=Number(r[a]);Number(r[a])>1&&(r[a]=1),Number(r[a])<0&&(r[a]=0)}u=s.cmykToRgb(r[0],r[1],r[2],r[3]),l==!0&&(h=Number(r[4]))}}else if(e.substr(0,3)=="ncs")u=s.ncsToRgb(e);else{for(c=!1,m=s.getColorArr("names"),a=0;a<m.length;a++)if(e.toLowerCase()==m[a].toLowerCase()){f=s.getColorArr("hexs"),c=!0,u={r:parseInt(f[a].substr(0,2),16),g:parseInt(f[a].substr(2,2),16),b:parseInt(f[a].substr(4,2),16)};break}if(c==!1){for(e=e.replace("#",""),e.length==3&&(e=e.substr(0,1)+e.substr(0,1)+e.substr(1,1)+e.substr(1,1)+e.substr(2,1)+e.substr(2,1)),a=0;a<e.length;a++)if(!s.isHex(e.substr(a,1)))return new s;for(r[0]=parseInt(e.substr(0,2),16),r[1]=parseInt(e.substr(2,2),16),r[2]=parseInt(e.substr(4,2),16),a=0;a<3;a++)if(isNaN(r[a]))return new s;u={r:r[0],g:r[1],b:r[2]}}}return s.colorObject(u,h,p,d)}static colorObject(e,t,i,n){let r,o,a,l,c,h,p;return e?(t===null&&(t=1),r=s.rgbToHsl(e.r,e.g,e.b),o=s.rgbToHwb(e.r,e.g,e.b),a=s.rgbToCmyk(e.r,e.g,e.b),h=i||r.h,p=n||r.s,l=s.hueToNcol(h),c={red:e.r,green:e.g,blue:e.b,hue:h,sat:p,lightness:r.l,whiteness:o.w,blackness:o.b,cyan:a.c,magenta:a.m,yellow:a.y,black:a.k,ncol:l,opacity:t,valid:!0},c=s.roundDecimals(c),Object.assign(new s,c)):new s}static getColorArr(e){return e=="names"?["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGrey","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkSlateGrey","DarkTurquoise","DarkViolet","DeepPink","DeepSkyBlue","DimGray","DimGrey","DodgerBlue","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Grey","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGray","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateGray","LightSlateGrey","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","RebeccaPurple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","SlateGrey","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","Wheat","White","WhiteSmoke","Yellow","YellowGreen"]:e=="hexs"?["f0f8ff","faebd7","00ffff","7fffd4","f0ffff","f5f5dc","ffe4c4","000000","ffebcd","0000ff","8a2be2","a52a2a","deb887","5f9ea0","7fff00","d2691e","ff7f50","6495ed","fff8dc","dc143c","00ffff","00008b","008b8b","b8860b","a9a9a9","a9a9a9","006400","bdb76b","8b008b","556b2f","ff8c00","9932cc","8b0000","e9967a","8fbc8f","483d8b","2f4f4f","2f4f4f","00ced1","9400d3","ff1493","00bfff","696969","696969","1e90ff","b22222","fffaf0","228b22","ff00ff","dcdcdc","f8f8ff","ffd700","daa520","808080","808080","008000","adff2f","f0fff0","ff69b4","cd5c5c","4b0082","fffff0","f0e68c","e6e6fa","fff0f5","7cfc00","fffacd","add8e6","f08080","e0ffff","fafad2","d3d3d3","d3d3d3","90ee90","ffb6c1","ffa07a","20b2aa","87cefa","778899","778899","b0c4de","ffffe0","00ff00","32cd32","faf0e6","ff00ff","800000","66cdaa","0000cd","ba55d3","9370db","3cb371","7b68ee","00fa9a","48d1cc","c71585","191970","f5fffa","ffe4e1","ffe4b5","ffdead","000080","fdf5e6","808000","6b8e23","ffa500","ff4500","da70d6","eee8aa","98fb98","afeeee","db7093","ffefd5","ffdab9","cd853f","ffc0cb","dda0dd","b0e0e6","800080","663399","ff0000","bc8f8f","4169e1","8b4513","fa8072","f4a460","2e8b57","fff5ee","a0522d","c0c0c0","87ceeb","6a5acd","708090","708090","fffafa","00ff7f","4682b4","d2b48c","008080","d8bfd8","ff6347","40e0d0","ee82ee","f5deb3","ffffff","f5f5f5","ffff00","9acd32"]:null}static roundDecimals(e){return e.red=Number(e.red.toFixed(0)),e.green=Number(e.green.toFixed(0)),e.blue=Number(e.blue.toFixed(0)),e.hue=Number(e.hue.toFixed(0)),e.sat=Number(e.sat.toFixed(2)),e.lightness=Number(e.lightness.toFixed(2)),e.whiteness=Number(e.whiteness.toFixed(2)),e.blackness=Number(e.blackness.toFixed(2)),e.cyan=Number(e.cyan.toFixed(2)),e.magenta=Number(e.magenta.toFixed(2)),e.yellow=Number(e.yellow.toFixed(2)),e.black=Number(e.black.toFixed(2)),e.ncol=e.ncol.substr(0,1)+Math.round(Number(e.ncol.substr(1))),e.opacity=Number(e.opacity.toFixed(2)),e}static hslToRgb(e,t,i){let n,r,o,a,l;return e=e/60,i<=.5?r=i*(t+1):r=i+t-i*t,n=i*2-r,o=s.hueToRgb(n,r,e+2)*255,a=s.hueToRgb(n,r,e)*255,l=s.hueToRgb(n,r,e-2)*255,{r:o,g:a,b:l}}static hueToRgb(e,t,i){return i<0&&(i+=6),i>=6&&(i-=6),i<1?(t-e)*i+e:i<3?t:i<4?(t-e)*(4-i)+e:e}static hwbToRgb(e,t,i){let n,r,o=[],a;for(r=s.hslToRgb(e,1,.5),o[0]=r.r/255,o[1]=r.g/255,o[2]=r.b/255,a=t+i,a>1&&(t=Number((t/a).toFixed(2)),i=Number((i/a).toFixed(2))),n=0;n<3;n++)o[n]*=1-t-i,o[n]+=t,o[n]=Number(o[n]*255);return{r:o[0],g:o[1],b:o[2]}}static cmykToRgb(e,t,i,n){let r,o,a;return r=255-Math.min(1,e*(1-n)+n)*255,o=255-Math.min(1,t*(1-n)+n)*255,a=255-Math.min(1,i*(1-n)+n)*255,{r,g:o,b:a}}static ncolToRgb(e,t,i){let n,r,o;if(o=e,isNaN(e.substr(0,1))){if(n=e.substr(0,1).toUpperCase(),r=e.substr(1),r==""&&(r=0),r=Number(r),isNaN(r))return!1;n=="R"&&(o=0+r*.6),n=="Y"&&(o=60+r*.6),n=="G"&&(o=120+r*.6),n=="C"&&(o=180+r*.6),n=="B"&&(o=240+r*.6),n=="M"&&(o=300+r*.6),n=="W"&&(o=0,t=1-r/100,i=r/100)}return s.hwbToRgb(o,t,i)}static hueToNcol(e){for(;e>=360;)e=e-360;return e<60?"R"+e/.6:e<120?"Y"+(e-60)/.6:e<180?"G"+(e-120)/.6:e<240?"C"+(e-180)/.6:e<300?"B"+(e-240)/.6:e<360?"M"+(e-300)/.6:null}static ncsToRgb(e){let t,i,n,r,o,a,l,c,h,p,d,u,m,f,v,y,x,w,C;return e=s.w3trim(e).toUpperCase(),e=e.replace("(",""),e=e.replace(")",""),e=e.replace("NCS","NCS "),e=e.replace(/ /g," "),e.indexOf("NCS")==-1&&(e="NCS "+e),e=e.match(/^(?:NCS|NCS\sS)\s(\d{2})(\d{2})-(N|[A-Z])(\d{2})?([A-Z])?$/),e===null||(t=parseInt(e[1],10),i=parseInt(e[2],10),n=e[3],n!="N"&&n!="Y"&&n!="R"&&n!="B"&&n!="G")?null:(r=parseInt(e[4],10)||0,n!=="N"?(o=1.05*t-5.25,a=i,n==="Y"&&r<=60?h=1:n==="Y"&&r>60||n==="R"&&r<=80?(n==="Y"?l=r-60:l=r+40,h=(Math.sqrt(14884-Math.pow(l,2))-22)/100):n==="R"&&r>80||n==="B"?h=0:n==="G"&&(l=r-170,h=(Math.sqrt(33800-Math.pow(l,2))-70)/100),n==="Y"&&r<=80?c=0:n==="Y"&&r>80||n==="R"&&r<=60?(n==="Y"?l=r-80+20.5:l=r+20+20.5,c=(104-Math.sqrt(11236-Math.pow(l,2)))/100):n==="R"&&r>60||n==="B"&&r<=80?(n==="R"?l=r-60-60:l=r+40-60,c=(Math.sqrt(1e4-Math.pow(l,2))-10)/100):n==="B"&&r>80||n==="G"&&r<=40?(n==="B"?l=r-80-131:l=r+20-131,c=(122-Math.sqrt(19881-Math.pow(l,2)))/100):n==="G"&&r>40&&(c=0),n==="Y"?d=(85-17/20*r)/100:n==="R"&&r<=60?d=0:n==="R"&&r>60?(l=r-60+35,d=(67.5-Math.sqrt(5776-Math.pow(l,2)))/100):n==="B"&&r<=60?(l=1*r-68.5,d=(6.5+Math.sqrt(7044.5-Math.pow(l,2)))/100):n==="B"&&r>60||n==="G"&&r<=60?d=.9:n==="G"&&r>60&&(l=r-60,d=(90-1/8*l)/100),l=(h+d+c)/3,p=(l-h)*(100-a)/100+h,u=(l-d)*(100-a)/100+d,m=(l-c)*(100-a)/100+c,p>u&&p>m?f=p:u>p&&u>m?f=u:m>p&&m>u?f=m:f=(p+u+m)/3,v=1/f,x=parseInt(p*v*(100-o)/100*255,10),w=parseInt(u*v*(100-o)/100*255,10),C=parseInt(m*v*(100-o)/100*255,10),x>255&&(x=255),w>255&&(w=255),C>255&&(C=255),x<0&&(x=0),w<0&&(w=0),C<0&&(C=0)):(y=parseInt((1-t/100)*255,10),y>255&&(y=255),y<0&&(y=0),x=y,w=y,C=y),{r:x,g:w,b:C})}static rgbToHsl(e,t,i){let n,r,o,a,l,c,h,p=[];for(p[0]=e/255,p[1]=t/255,p[2]=i/255,n=p[0],r=p[0],c=0,o=0;o<p.length-1;o++)p[o+1]<=n&&(n=p[o+1]),p[o+1]>=r&&(r=p[o+1],c=o+1);return c==0&&(h=(p[1]-p[2])/(r-n)),c==1&&(h=2+(p[2]-p[0])/(r-n)),c==2&&(h=4+(p[0]-p[1])/(r-n)),isNaN(h)&&(h=0),h=h*60,h<0&&(h=h+360),a=(n+r)/2,n==r?l=0:a<.5?l=(r-n)/(r+n):l=(r-n)/(2-r-n),l=l,{h,s:l,l:a}}static rgbToHwb(e,t,i){let n,r,o;e=e/255,t=t/255,i=i/255;let a=Math.max(e,t,i),l=Math.min(e,t,i),c=a-l;return c==0?n=0:e==a?n=(t-i)/c%6*360:t==a?n=((i-e)/c+2)%6*360:n=((e-t)/c+4)%6*360,r=l,o=1-a,{h:n,w:r,b:o}}static rgbToCmyk(e,t,i){let n,r,o,a;return e=e/255,t=t/255,i=i/255,a=1-Math.max(e,t,i),a==1?(n=0,r=0,o=0):(n=(1-e-a)/(1-a),r=(1-t-a)/(1-a),o=(1-i-a)/(1-a)),{c:n,m:r,y:o,k:a}}static toHex(e){let t=e.toString(16);for(;t.length<2;)t="0"+t;return t}static w3trim(e){return e.replace(/^\s+|\s+$/g,"")}static isHex(e){return"0123456789ABCDEFabcdef".indexOf(e)>-1}};var tu=["rgb","hsl","cmyk","oklab","oklch"],qn=1e-6,Cl=class extends su{static style=ou`:host{display:block;box-sizing:border-box;width:280px;color:var(--property-grid-text-color,#e8edf2);font:12px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}#editor{display:grid;gap:10px;box-sizing:border-box;padding:12px;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:var(--color-editor-background,#20252b);box-shadow:0 14px 38px rgba(0,0,0,.36)}#plane{position:relative;height:150px;border-radius:6px;overflow:hidden;cursor:crosshair;background:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,transparent),hsl(var(--hue,0) 100% 50%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12);touch-action:none}#plane-handle{position:absolute;width:12px;height:12px;box-sizing:border-box;border:2px solid #fff;border-radius:50%;transform:translate(-6px,-6px);box-shadow:0 0 0 1px rgba(0,0,0,.85),0 1px 4px rgba(0,0,0,.55);pointer-events:none}.slider-row{display:grid;grid-template-columns:18px minmax(0,1fr) 42px;gap:8px;align-items:center}.slider-row span{color:rgba(232,237,242,.68);font-size:11px;text-transform:uppercase}input[type=range]{--slider-background:#79b8ff;-webkit-appearance:none;appearance:none;width:100%;height:16px;margin:0;background:0 0;outline:0}#hue{--slider-background:linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00)}#alpha{--slider-background:linear-gradient(to right, rgba(var(--rgb-color, 0, 0, 0), 0), var(--opaque-color, #000)),linear-gradient(45deg, rgba(255, 255, 255, .24) 25%, transparent 25% 75%, rgba(255, 255, 255, .24) 75%),linear-gradient(45deg, rgba(255, 255, 255, .24) 25%, transparent 25% 75%, rgba(255, 255, 255, .24) 75%),#2a3037;--slider-background-position:0 0,0 0,5px 5px,0 0;--slider-background-size:auto,10px 10px,10px 10px,auto}input[type=range]::-webkit-slider-runnable-track{height:7px;border-radius:999px;background:var(--slider-background);background-position:var(--slider-background-position,0 0);background-size:var(--slider-background-size,auto);box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}input[type=range]::-moz-range-track{height:7px;border-radius:999px;background:var(--slider-background);background-position:var(--slider-background-position,0 0);background-size:var(--slider-background-size,auto);box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;margin-top:-3.5px;border:2px solid #fff;border-radius:50%;background:hsl(var(--hue,0) 100% 50%);box-shadow:0 0 0 1px rgba(0,0,0,.75),0 1px 3px rgba(0,0,0,.45)}input[type=range]::-moz-range-thumb{width:10px;height:10px;border:2px solid #fff;border-radius:50%;background:hsl(var(--hue,0) 100% 50%);box-shadow:0 0 0 1px rgba(0,0,0,.75),0 1px 3px rgba(0,0,0,.45)}#alpha::-webkit-slider-thumb{background:var(--color,#000)}#alpha::-moz-range-thumb{background:var(--color,#000)}.swatch{width:42px;height:22px;border-radius:5px;background:linear-gradient(var(--color,#000),var(--color,#000)),linear-gradient(45deg,rgba(255,255,255,.22) 25%,transparent 25% 75%,rgba(255,255,255,.22) 75%),linear-gradient(45deg,rgba(255,255,255,.22) 25%,transparent 25% 75%,rgba(255,255,255,.22) 75%);background-position:0 0,0 0,5px 5px;background-size:auto,10px 10px,10px 10px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)}#mode{height:26px;min-width:0;border:1px solid rgba(255,255,255,.14);border-radius:5px;background:#161a1f;color:inherit;font:inherit;outline:0}#channels{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}label{display:grid;gap:3px;min-width:0;color:rgba(232,237,242,.68);font-size:10px;text-transform:uppercase}#text,input[type=number]{box-sizing:border-box;width:100%;min-width:0;height:26px;border:1px solid rgba(255,255,255,.14);border-radius:5px;background:#161a1f;color:inherit;font:inherit;outline:0}input[type=number]{padding:0 4px}#text{padding:0 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;text-transform:none}#text.invalid{border-color:#e66b6b;box-shadow:0 0 0 1px rgba(230,107,107,.35)}input:focus,select:focus{border-color:#79b8ff;box-shadow:0 0 0 1px rgba(121,184,255,.28)}:host([disabled]) #plane,:host([disabled]) input,:host([disabled]) select,:host([readonly]) #plane,:host([readonly]) input,:host([readonly]) select{opacity:.65;pointer-events:none}`;static template=au`<div id="editor"><div id="plane"><div id="plane-handle"></div></div><div class="slider-row"><span>Hue</span> <input id="hue" type="range" min="0" max="360" step="1"><div id="preview" class="swatch"></div></div><div class="slider-row"><span>Alpha</span> <input id="alpha" type="range" min="0" max="100" step="1"> <span id="alpha-label"></span></div><select id="mode" aria-label="Color mode"><option value="rgb">RGB</option><option value="hsl">HSL</option><option value="cmyk">CMYK</option><option value="oklab">OKLab</option><option value="oklch">OKLCH</option></select><div id="channels"></div><input id="text" type="text" spellcheck="false" aria-label="Color text"></div>`;valueChanged=new eu;valuePreviewChanged=new eu;_value="#000000";_color={r:0,g:0,b:0,a:1};_mode="rgb";_hue=0;_plane;_planeHandle;_hueInput;_alphaInput;_alphaLabel;_modeSelect;_channels;_textInput;_dragPointerId=null;get value(){return this._value}set value(e){let t=Zn(e);if(t){this._color=t,this._mode=iu(e)??this._mode,this._syncHueFromColor(),this._value=this._formatColor(),this._render();return}this._value=e??"",this._render()}get mode(){return this._mode}set mode(e){tu.includes(e)&&(this._mode=e,this._value=this._formatColor(),this._render())}get readOnly(){return this.hasAttribute("readonly")}set readOnly(e){this.toggleAttribute("readonly",e)}get disabled(){return this.hasAttribute("disabled")}set disabled(e){this.toggleAttribute("disabled",e)}constructor(){super(),this._plane=this._getDomElement("plane"),this._planeHandle=this._getDomElement("plane-handle"),this._hueInput=this._getDomElement("hue"),this._alphaInput=this._getDomElement("alpha"),this._alphaLabel=this._getDomElement("alpha-label"),this._modeSelect=this._getDomElement("mode"),this._channels=this._getDomElement("channels"),this._textInput=this._getDomElement("text")}ready(){this._wireEvents();let e=this.getAttribute("value");e!=null&&(this.value=e);let t=this.getAttribute("mode");tu.includes(t)&&(this._mode=t,this._value=this._formatColor()),this._render()}_wireEvents(){this._plane.addEventListener("pointerdown",e=>this._startPlaneDrag(e)),this._hueInput.addEventListener("input",()=>this._applyHue(!0)),this._hueInput.addEventListener("change",()=>this._commitCurrentValue()),this._alphaInput.addEventListener("input",()=>this._applyAlpha(!0)),this._alphaInput.addEventListener("change",()=>this._commitCurrentValue()),this._modeSelect.addEventListener("change",()=>{this.mode=this._modeSelect.value,this._commitCurrentValue()}),this._channels.addEventListener("input",()=>this._applyChannelInputs(!0)),this._channels.addEventListener("change",()=>this._commitCurrentValue()),this._textInput.addEventListener("input",()=>this._validateTextInput()),this._textInput.addEventListener("change",()=>this._applyText()),this._textInput.addEventListener("keydown",e=>{e.key==="Enter"&&(this._applyText(),this._textInput.blur())})}_startPlaneDrag(e){this.readOnly||this.disabled||(this._dragPointerId=e.pointerId,this._plane.setPointerCapture(e.pointerId),this._applyPlanePointer(e,!0),this._plane.addEventListener("pointermove",this._planePointerMove),this._plane.addEventListener("pointerup",this._finishPlaneDrag),this._plane.addEventListener("pointercancel",this._finishPlaneDrag),e.preventDefault())}_planePointerMove=e=>{e.pointerId===this._dragPointerId&&this._applyPlanePointer(e,!0)};_finishPlaneDrag=e=>{e.pointerId===this._dragPointerId&&(this._dragPointerId=null,this._plane.removeEventListener("pointermove",this._planePointerMove),this._plane.removeEventListener("pointerup",this._finishPlaneDrag),this._plane.removeEventListener("pointercancel",this._finishPlaneDrag),this._commitCurrentValue())};_applyPlanePointer(e,t){let i=this._plane.getBoundingClientRect(),n=Rt((e.clientX-i.left)/i.width,0,1),r=Rt(1-(e.clientY-i.top)/i.height,0,1),o=Number(this._hueInput.value)||0;this._hue=Sl(o),this._setColor({...ru(o,n,r),a:this._color.a},t)}_applyHue(e){let t=_l(this._color),i=Number(this._hueInput.value)||0;this._hue=Sl(i),this._setColor({...ru(i,t.s||1,t.v||1),a:this._color.a},e)}_applyAlpha(e){this._setColor({...this._color,a:Rt(Number(this._alphaInput.value)/100,0,1)},e)}_applyChannelInputs(e){let t=[...this._channels.querySelectorAll("input")].reduce((n,r)=>(n[r.name]=Number(r.value),n),{}),i;this._mode==="rgb"?i={r:t.r,g:t.g,b:t.b,a:t.a/100}:this._mode==="hsl"?i={...Qf(t.h,t.s/100,t.l/100),a:t.a/100}:this._mode==="cmyk"?i={...Zf(t.c/100,t.m/100,t.y/100,t.k/100),a:t.a/100}:this._mode==="oklab"?i={...Il(t.l/100,t.a1,t.b1),a:t.alpha/100}:i={...du(t.l/100,t.c,t.h),a:t.a/100},this._setColor(ii(i),e,!1,!0)}_validateTextInput(){let e=this._textInput.value.trim();this._textInput.classList.toggle("invalid",e.length>0&&!Zn(e))}_applyText(){let e=Zn(this._textInput.value);this._textInput.classList.toggle("invalid",!e),e&&(this._mode=iu(this._textInput.value)??this._mode,this._setColor(e,!1,!0,!0))}_setColor(e,t,i=!0,n=!1){let r=this._value;this._color=ii(e),n&&this._syncHueFromColor(),this._value=this._formatColor(),this._render(i),t?this.valuePreviewChanged.emit({newValue:this._value,oldValue:r}):this.valueChanged.emit({newValue:this._value,oldValue:r})}_commitCurrentValue(){let e=this._value;this._value=this._formatColor(),this.valueChanged.emit({newValue:this._value,oldValue:e})}_render(e=!0){if(!this._textInput)return;let t=_l(this._color);this.style.setProperty("--hue",String(Math.round(this._hue))),this.style.setProperty("--color",lu(this._color)),this.style.setProperty("--opaque-color",`rgb(${this._color.r}, ${this._color.g}, ${this._color.b})`),this.style.setProperty("--rgb-color",`${this._color.r}, ${this._color.g}, ${this._color.b}`),this._planeHandle.style.left=`${t.s*100}%`,this._planeHandle.style.top=`${(1-t.v)*100}%`,this._hueInput.value=String(Math.round(this._hue)),this._alphaInput.value=String(Math.round(this._color.a*100)),this._alphaLabel.textContent=`${Math.round(this._color.a*100)}%`,this._modeSelect.value=this._mode,e&&this._renderChannelInputs(),document.activeElement!==this._textInput&&(this._textInput.value=this._value),this._textInput.classList.remove("invalid")}_renderChannelInputs(){let e=Kf(this._color,this._mode);this._channels.innerHTML=e.map(t=>`
|
|
540
|
+
</div>`}constructor(e){super(),this._designerCanvas=e,this._previewBox=this._getDomElement("bre-preview"),this._uniformCheck=this._getDomElement("bre-uniform"),this._uniformXInput=this._getDomElement("bre-uniform-x"),this._uniformYInput=this._getDomElement("bre-uniform-y"),this._uniformShapeSelect=this._getDomElement("bre-uniform-shape"),this._uniformXVal=this._getDomElement("bre-uniform-x-val"),this._uniformYVal=this._getDomElement("bre-uniform-y-val"),this._tlXInput=this._getDomElement("bre-tl-x"),this._tlYInput=this._getDomElement("bre-tl-y"),this._tlShapeSelect=this._getDomElement("bre-tl-shape"),this._tlXVal=this._getDomElement("bre-tl-x-val"),this._tlYVal=this._getDomElement("bre-tl-y-val"),this._trXInput=this._getDomElement("bre-tr-x"),this._trYInput=this._getDomElement("bre-tr-y"),this._trShapeSelect=this._getDomElement("bre-tr-shape"),this._trXVal=this._getDomElement("bre-tr-x-val"),this._trYVal=this._getDomElement("bre-tr-y-val"),this._brXInput=this._getDomElement("bre-br-x"),this._brYInput=this._getDomElement("bre-br-y"),this._brShapeSelect=this._getDomElement("bre-br-shape"),this._brXVal=this._getDomElement("bre-br-x-val"),this._brYVal=this._getDomElement("bre-br-y-val"),this._blXInput=this._getDomElement("bre-bl-x"),this._blYInput=this._getDomElement("bre-bl-y"),this._blShapeSelect=this._getDomElement("bre-bl-shape"),this._blXVal=this._getDomElement("bre-bl-x-val"),this._blYVal=this._getDomElement("bre-bl-y-val"),this._cornersUniformDiv=this._getDomElement("bre-corners-uniform"),this._cornersPersideDiv=this._getDomElement("bre-corners-perside"),this._widthInput=this._getDomElement("bre-width"),this._borderUniformCheck=this._getDomElement("bre-border-separate"),this._widthVal=this._getDomElement("bre-width-val"),this._styleSelect=this._getDomElement("bre-style"),this._colorInput=this._getDomElement("bre-color"),this._opacityInput=this._getDomElement("bre-opacity"),this._opacityVal=this._getDomElement("bre-opacity-val"),this._topStyleSelect=this._getDomElement("bre-top-style"),this._topWidthInput=this._getDomElement("bre-top-width"),this._topWidthVal=this._getDomElement("bre-top-width-val"),this._topColorInput=this._getDomElement("bre-top-color"),this._topOpacityInput=this._getDomElement("bre-top-opacity"),this._topOpacityVal=this._getDomElement("bre-top-opacity-val"),this._rightStyleSelect=this._getDomElement("bre-right-style"),this._rightWidthInput=this._getDomElement("bre-right-width"),this._rightWidthVal=this._getDomElement("bre-right-width-val"),this._rightColorInput=this._getDomElement("bre-right-color"),this._rightOpacityInput=this._getDomElement("bre-right-opacity"),this._rightOpacityVal=this._getDomElement("bre-right-opacity-val"),this._bottomStyleSelect=this._getDomElement("bre-bottom-style"),this._bottomWidthInput=this._getDomElement("bre-bottom-width"),this._bottomWidthVal=this._getDomElement("bre-bottom-width-val"),this._bottomColorInput=this._getDomElement("bre-bottom-color"),this._bottomOpacityInput=this._getDomElement("bre-bottom-opacity"),this._bottomOpacityVal=this._getDomElement("bre-bottom-opacity-val"),this._leftStyleSelect=this._getDomElement("bre-left-style"),this._leftWidthInput=this._getDomElement("bre-left-width"),this._leftWidthVal=this._getDomElement("bre-left-width-val"),this._leftColorInput=this._getDomElement("bre-left-color"),this._leftOpacityInput=this._getDomElement("bre-left-opacity"),this._leftOpacityVal=this._getDomElement("bre-left-opacity-val"),this._borderUniformDiv=this._getDomElement("bre-border-uniform-editor"),this._borderPersideDiv=this._getDomElement("bre-border-perside"),this._cssOutput=this._getDomElement("bre-css-out"),this._loadBtn=this._getDomElement("bre-load-btn"),this._copyBtn=this._getDomElement("bre-copy-btn"),this._applyBtn=this._getDomElement("bre-apply-btn"),this._uniformCheck.onchange=()=>{if(this._config.uniform=!this._uniformCheck.checked,this._cornersUniformDiv.style.display=this._config.uniform?"block":"none",this._cornersPersideDiv.style.display=this._config.uniform?"none":"grid",this._config.uniform){let i=this._config.topLeft;this._config.topRight={...i},this._config.bottomRight={...i},this._config.bottomLeft={...i}}this._syncControls(),this._refresh()},this._uniformXInput.oninput=()=>{this._config.topLeft.x=Number(this._uniformXInput.value),this._config.topRight.x=Number(this._uniformXInput.value),this._config.bottomRight.x=Number(this._uniformXInput.value),this._config.bottomLeft.x=Number(this._uniformXInput.value),this._uniformXVal.textContent=this._config.topLeft.x+"%",this._refresh()},this._uniformYInput.oninput=()=>{this._config.topLeft.y=Number(this._uniformYInput.value),this._config.topRight.y=Number(this._uniformYInput.value),this._config.bottomRight.y=Number(this._uniformYInput.value),this._config.bottomLeft.y=Number(this._uniformYInput.value),this._uniformYVal.textContent=this._config.topLeft.y+"%",this._refresh()},this._uniformShapeSelect.onchange=()=>{let i=this._uniformShapeSelect.value;this._config.topLeft.shape=i,this._config.topRight.shape=i,this._config.bottomRight.shape=i,this._config.bottomLeft.shape=i,this._refresh()},this._wireCornerControls("tl",this._tlXInput,this._tlYInput,this._tlShapeSelect,this._tlXVal,this._tlYVal),this._wireCornerControls("tr",this._trXInput,this._trYInput,this._trShapeSelect,this._trXVal,this._trYVal),this._wireCornerControls("br",this._brXInput,this._brYInput,this._brShapeSelect,this._brXVal,this._brYVal),this._wireCornerControls("bl",this._blXInput,this._blYInput,this._blShapeSelect,this._blXVal,this._blYVal),this._widthInput.oninput=()=>{this._config.width=Number(this._widthInput.value),this._config.top.width=this._config.width,this._config.right.width=this._config.width,this._config.bottom.width=this._config.width,this._config.left.width=this._config.width,this._widthVal.textContent=this._config.width+"px",this._refresh()},this._borderUniformCheck.onchange=()=>{this._config.borderUniform=!this._borderUniformCheck.checked,this._config.borderUniform&&(this._config.width=this._config.top.width,this._config.right.width=this._config.top.width,this._config.bottom.width=this._config.top.width,this._config.left.width=this._config.top.width),this._borderUniformDiv.style.display=this._config.borderUniform?"block":"none",this._borderPersideDiv.style.display=this._config.borderUniform?"none":"grid",this._syncControls(),this._refresh()},this._styleSelect.onchange=()=>{this._config.top.style=this._styleSelect.value,this._config.right.style=this._styleSelect.value,this._config.bottom.style=this._styleSelect.value,this._config.left.style=this._styleSelect.value,this._refresh()},this._colorInput.oninput=()=>{this._config.top.color=this._colorInput.value,this._config.right.color=this._colorInput.value,this._config.bottom.color=this._colorInput.value,this._config.left.color=this._colorInput.value,this._refresh()},this._opacityInput.oninput=()=>{let i=Number(this._opacityInput.value);this._config.top.opacity=i,this._config.right.opacity=i,this._config.bottom.opacity=i,this._config.left.opacity=i,this._opacityVal.textContent=i+"%",this._refresh()};let t=(i,n,s,o,a,l,c)=>{let h=()=>this._config[i];n.onchange=()=>{let p=h();p.style=n.value,this._refresh()},s.oninput=()=>{let p=h();p.width=Number(s.value),o.textContent=p.width+"px",this._refresh()},a.oninput=()=>{let p=h();p.color=a.value,this._refresh()},l.oninput=()=>{let p=h();p.opacity=Number(l.value),c.textContent=p.opacity+"%",this._refresh()}};t("top",this._topStyleSelect,this._topWidthInput,this._topWidthVal,this._topColorInput,this._topOpacityInput,this._topOpacityVal),t("right",this._rightStyleSelect,this._rightWidthInput,this._rightWidthVal,this._rightColorInput,this._rightOpacityInput,this._rightOpacityVal),t("bottom",this._bottomStyleSelect,this._bottomWidthInput,this._bottomWidthVal,this._bottomColorInput,this._bottomOpacityInput,this._bottomOpacityVal),t("left",this._leftStyleSelect,this._leftWidthInput,this._leftWidthVal,this._leftColorInput,this._leftOpacityInput,this._leftOpacityVal),this._copyBtn.onclick=()=>{navigator.clipboard?.writeText(this._cssOutput.value).catch(()=>{})},this._applyBtn.onclick=()=>this._applyToSelection(),this._loadBtn.onclick=()=>{this._loadFromPrimarySelection(),this._syncControls(),this._refresh()},this._loadFromPrimarySelection(),this._syncControls(),this._refresh()}_wireCornerControls(e,t,i,n,s,o){let a=()=>{switch(e){case"tl":return this._config.topLeft;case"tr":return this._config.topRight;case"br":return this._config.bottomRight;case"bl":return this._config.bottomLeft}};t.oninput=()=>{let l=a();l.x=Number(t.value),this._config.uniform&&(this._config.topLeft.x=this._config.topRight.x=this._config.bottomRight.x=this._config.bottomLeft.x=l.x),s.textContent=l.x+"%",this._refresh()},i.oninput=()=>{let l=a();l.y=Number(i.value),this._config.uniform&&(this._config.topLeft.y=this._config.topRight.y=this._config.bottomRight.y=this._config.bottomLeft.y=l.y),o.textContent=l.y+"%",this._refresh()},n.onchange=()=>{let l=a();l.shape=n.value,this._config.uniform&&(this._config.topLeft.shape=this._config.topRight.shape=this._config.bottomRight.shape=this._config.bottomLeft.shape=l.shape),this._refresh()}}_loadFromPrimarySelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.primarySelection;if(!e)return;let t=e.getStyle("border-radius");t&&(this._config=l_(t));let i=e.getStyle("corner-shape");if(i){let S=i.trim().split(/\s+/).filter(Boolean),M=D=>S.length===1?S[0]:S.length===2?S[D===1||D===2?1:0]:S.length===3?S[D===3?1:D===2?2:0]:S[D]??"round";this._config.topLeft.shape=M(0),this._config.topRight.shape=M(1),this._config.bottomRight.shape=M(2),this._config.bottomLeft.shape=M(3)}let n=[this._config.topLeft,this._config.topRight,this._config.bottomRight,this._config.bottomLeft];this._config.uniform=n.every(S=>S.x===n[0].x&&S.y===n[0].y&&S.shape===n[0].shape);let s=e.getStyle("border-width");if(s){let S=bh(s).map(V=>parseFloat(V)).filter(V=>!isNaN(V)),[M,D,j,H]=wh(S);M!=null&&(this._config.top.width=M),D!=null&&(this._config.right.width=D),j!=null&&(this._config.bottom.width=j),H!=null&&(this._config.left.width=H),M!=null&&(this._config.width=M)}let o=e.getStyle("border-top-width"),a=e.getStyle("border-right-width"),l=e.getStyle("border-bottom-width"),c=e.getStyle("border-left-width"),h=!!(o||a||l||c);if(h){if(this._config.borderUniform=!1,o){let S=parseFloat(o);isNaN(S)||(this._config.top.width=S)}if(a){let S=parseFloat(a);isNaN(S)||(this._config.right.width=S)}if(l){let S=parseFloat(l);isNaN(S)||(this._config.bottom.width=S)}if(c){let S=parseFloat(c);isNaN(S)||(this._config.left.width=S)}this._config.width=this._config.top.width}let p=S=>{let M=S.match(/rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*([\d.]+))?\s*\)/);if(M){let D="#"+[parseInt(M[1]),parseInt(M[2]),parseInt(M[3])].map(H=>H.toString(16).padStart(2,"0")).join(""),j=M[4]?Math.round(parseFloat(M[4])*100):100;return{hex:D,opacity:j}}else if(S.startsWith("#"))return{hex:S.slice(0,7),opacity:100};return{hex:"#000000",opacity:100}},d=e.getStyle("border-top-style"),u=e.getStyle("border-right-style"),m=e.getStyle("border-bottom-style"),f=e.getStyle("border-left-style");if(d||u||m||f)this._config.borderUniform=!1,d&&(this._config.top.style=d),u&&(this._config.right.style=u),m&&(this._config.bottom.style=m),f&&(this._config.left.style=f);else{let S=e.getStyle("border-style");if(S){h||(this._config.borderUniform=!0);let[M,D,j,H]=wh(bh(S));M&&(this._config.top.style=M),D&&(this._config.right.style=D),j&&(this._config.bottom.style=j),H&&(this._config.left.style=H)}}let y=e.getStyle("border-top-color"),v=e.getStyle("border-right-color"),C=e.getStyle("border-bottom-color"),w=e.getStyle("border-left-color");if(y||v||C||w){if(this._config.borderUniform=!1,y){let S=p(y);this._config.top.color=S.hex,this._config.top.opacity=S.opacity}if(v){let S=p(v);this._config.right.color=S.hex,this._config.right.opacity=S.opacity}if(C){let S=p(C);this._config.bottom.color=S.hex,this._config.bottom.opacity=S.opacity}if(w){let S=p(w);this._config.left.color=S.hex,this._config.left.opacity=S.opacity}}else{let S=e.getStyle("border-color");if(S){h||(this._config.borderUniform=!0);let[M,D,j,H]=wh(bh(S));if(M){let V=p(M);this._config.top.color=V.hex,this._config.top.opacity=V.opacity}if(D){let V=p(D);this._config.right.color=V.hex,this._config.right.opacity=V.opacity}if(j){let V=p(j);this._config.bottom.color=V.hex,this._config.bottom.opacity=V.opacity}if(H){let V=p(H);this._config.left.color=V.hex,this._config.left.opacity=V.opacity}}}let b=[this._config.top,this._config.right,this._config.bottom,this._config.left];this._config.borderUniform=b.every(S=>S.width===b[0].width&&S.style===b[0].style&&S.color===b[0].color&&S.opacity===b[0].opacity),this._config.width=this._config.top.width}_syncControls(){this._uniformCheck.checked=!this._config.uniform,this._cornersUniformDiv.style.display=this._config.uniform?"block":"none",this._cornersPersideDiv.style.display=this._config.uniform?"none":"grid",this._config.uniform&&(this._uniformXInput.value=String(this._config.topLeft.x),this._uniformYInput.value=String(this._config.topLeft.y),this._uniformShapeSelect.value=this._config.topLeft.shape,this._uniformXVal.textContent=this._config.topLeft.x+"%",this._uniformYVal.textContent=this._config.topLeft.y+"%");let e=(t,i,n,s,o,a)=>{t.value=String(a.x),i.value=String(a.y),n.value=a.shape,s.textContent=a.x+"%",o.textContent=a.y+"%"};e(this._tlXInput,this._tlYInput,this._tlShapeSelect,this._tlXVal,this._tlYVal,this._config.topLeft),e(this._trXInput,this._trYInput,this._trShapeSelect,this._trXVal,this._trYVal,this._config.topRight),e(this._brXInput,this._brYInput,this._brShapeSelect,this._brXVal,this._brYVal,this._config.bottomRight),e(this._blXInput,this._blYInput,this._blShapeSelect,this._blXVal,this._blYVal,this._config.bottomLeft),this._widthInput.value=String(this._config.width),this._widthVal.textContent=this._config.width+"px",this._borderUniformCheck.checked=!this._config.borderUniform,this._borderUniformDiv.style.display=this._config.borderUniform?"block":"none",this._borderPersideDiv.style.display=this._config.borderUniform?"none":"grid",this._config.borderUniform?(this._styleSelect.value=this._config.top.style,this._colorInput.value=this._config.top.color,this._opacityInput.value=String(this._config.top.opacity),this._opacityVal.textContent=this._config.top.opacity+"%"):(this._topStyleSelect.value=this._config.top.style,this._topWidthInput.value=String(this._config.top.width),this._topWidthVal.textContent=this._config.top.width+"px",this._topColorInput.value=this._config.top.color,this._topOpacityInput.value=String(this._config.top.opacity),this._topOpacityVal.textContent=this._config.top.opacity+"%",this._rightStyleSelect.value=this._config.right.style,this._rightWidthInput.value=String(this._config.right.width),this._rightWidthVal.textContent=this._config.right.width+"px",this._rightColorInput.value=this._config.right.color,this._rightOpacityInput.value=String(this._config.right.opacity),this._rightOpacityVal.textContent=this._config.right.opacity+"%",this._bottomStyleSelect.value=this._config.bottom.style,this._bottomWidthInput.value=String(this._config.bottom.width),this._bottomWidthVal.textContent=this._config.bottom.width+"px",this._bottomColorInput.value=this._config.bottom.color,this._bottomOpacityInput.value=String(this._config.bottom.opacity),this._bottomOpacityVal.textContent=this._config.bottom.opacity+"%",this._leftStyleSelect.value=this._config.left.style,this._leftWidthInput.value=String(this._config.left.width),this._leftWidthVal.textContent=this._config.left.width+"px",this._leftColorInput.value=this._config.left.color,this._leftOpacityInput.value=String(this._config.left.opacity),this._leftOpacityVal.textContent=this._config.left.opacity+"%")}_buildCss(){let e=s_(this._config),t=o_(this._config),i={},{width:n,style:s,color:o}=a_(this._config);if(this._config.borderUniform)i["border-width"]=n,i["border-style"]=s,i["border-color"]=o;else{let a=["top","right","bottom","left"],l=[this._config.top,this._config.right,this._config.bottom,this._config.left];for(let c=0;c<a.length;c++){let h=a[c],p=l[c];i[`border-${h}-width`]=`${p.width}px`,i[`border-${h}-style`]=p.style;let d=`${Sh(p.color)},${(p.opacity/100).toFixed(2)}`;i[`border-${h}-color`]=`rgba(${d})`}}return{radius:e,shape:t,borderCss:i}}_refresh(){let{radius:e,shape:t,borderCss:i}=this._buildCss();this._previewBox.style.borderRadius=e,t?this._previewBox.style.cornerShape=t:this._previewBox.style.cornerShape="",Object.entries(i).forEach(([s,o])=>{this._previewBox.style[s.replace(/-([a-z])/g,(a,l)=>l.toUpperCase())]=o});let n=`border-radius: ${e};`;t&&(n+=`
|
|
541
|
+
corner-shape: ${t};`),Object.entries(i).forEach(([s,o])=>{n+=`
|
|
542
|
+
${s}: ${o};`}),this._cssOutput.value=n}_applyToSelection(){let e=this._designerCanvas?.instanceServiceContainer?.selectionService?.selectedElements;if(!e?.length)return;let{radius:t,shape:i,borderCss:n}=this._buildCss(),s=e[0].openGroup("set border-radius and border properties");for(let o of e)o.setStyle("border-radius",t),i?o.setStyle("corner-shape",i):o.removeStyle("corner-shape"),Object.entries(n).forEach(([a,l])=>{o.setStyle(a,l)});s.commit()}};customElements.define("node-projects-border-radius-editor-window",Tn)});var Xs,Eh=g(()=>{"use strict";Lt();Hs();vh();_h();xh();Ch();Xs=class{shouldProvideContextmenu(e,t,i,n){return!0}provideContextMenuItems(e,t,i,n){return[{title:"tool windows",children:[{title:"transform",action:()=>{let s=new yi(t);xe.showWindow(s)}},{title:"box shadow editor",action:()=>{let s=new Dn(t);xe.showWindow(s)}},{title:"text shadow editor",action:()=>{let s=new kn(t);xe.showWindow(s)}},{title:"gradient editor",action:()=>{let s=new An(t);xe.showWindow(s)}},{title:"border radius editor",action:()=>{let s=new Tn(t);xe.showWindow(s)}}]}]}}});var $s,Ph=g(()=>{"use strict";Mt();q();he();$s=class{shouldProvideContextmenu(e,t,i,n){return t.readOnly?!1:!i?.isRootItem&&i?.nodeType==k.Element}provideContextMenuItems(e,t,i){return[{title:"to front",icon:`<img style="rotate: 90deg" src="${E+"icons/moveFirst.svg"}">`,action:()=>{t.executeCommand({type:A.moveToFront})}},{title:"move forward",icon:`<img style="rotate: 90deg" src="${E+"icons/moveLeft.svg"}">`,action:()=>{t.executeCommand({type:A.moveForward})}},{title:"move backward",icon:`<img style="rotate: 270deg" src="${E+"icons/moveLeft.svg"}">`,action:()=>{t.executeCommand({type:A.moveBackward})}},{title:"to back",icon:`<img style="rotate: 270deg" src="${E+"icons/moveFirst.svg"}">`,action:()=>{t.executeCommand({type:A.moveToBack})}}]}}});function Om(r,e,t=!1,i=0){for(let d of r)if(d==e||d.element.contains(e.element)){console.warn("could not move items into of itself or a child");return}let n=r[0],s=n.openGroup("switchContainerHelper"),o=n.instanceServiceContainer.designerCanvas,a=Number.MAX_VALUE,l=Number.MAX_VALUE,c=0,h=0;for(let d of r){let u=o.getNormalizedElementCoordinates(d.element);u.x<a&&(a=u.x),u.y<l&&(l=u.y),u.x+u.width>c&&(c=u.x+u.width),u.y+u.height>h&&(h=u.y+u.height)}let p=o.getNormalizedElementCoordinates(e.element);for(let d of r){let u=o.getNormalizedElementCoordinates(d.element);d.nodeType==k.Element&&(t?(d.setStyle("left",(u.x-a+i).toString()+"px"),d.setStyle("top",(u.y-l+i).toString()+"px")):(d.setStyle("left",(u.x-p.x).toString()+"px"),d.setStyle("top",(u.y-p.y).toString()+"px"))),e.insertChild(d)}t&&(e.setStyle("position","absolute"),e.setStyle("left",(a-i).toString()+"px"),e.setStyle("top",(l-i).toString()+"px"),e.setStyle("width",(c-a+2*i).toString()+"px"),e.setStyle("height",(h-l+2*i).toString()+"px")),s.commit()}var Ih=g(()=>{"use strict";q()});var Ks,Dh=g(()=>{"use strict";Ih();oe();Ks=class{orderIndex=60;shouldProvideContextmenu(e,t,i,n){return i?.instanceServiceContainer.selectionService.selectedElements.length>1}provideContextMenuItems(e,t,i){return[{title:"wrap in",children:[{title:"div",action:()=>{let n=i.openGroup("wrap in Div"),s=i.instanceServiceContainer.selectionService.selectedElements,o=document.createElement("div"),a=O.createDesignItemFromInstance(o,i.serviceContainer,i.instanceServiceContainer);s[0].insertAdjacentElement(a,"beforebegin"),Om(s,a,!0,10),n.commit(),i.instanceServiceContainer.selectionService.setSelectedElements([a])}}]}]}}});var Mn,kh=g(()=>{"use strict";me();$e();oe();se();Mn=class{cursor="progress";_rect;_initialPoint;activated(e){}pointerEventHandler(e,t,i){$(t)||t.shiftKey?this.cursor="copy":t.altKey?this.cursor="default":this.cursor="default";let n=e.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._initialPoint=n,this._rect||(this._rect=document.createElementNS("http://www.w3.org/2000/svg","rect")),this._rect.setAttribute("class","svg-selector"),this._rect.setAttribute("x",this._initialPoint.x*e.scaleFactor),this._rect.setAttribute("y",this._initialPoint.y*e.scaleFactor),this._rect.setAttribute("width",0),this._rect.setAttribute("height",0),this._rect.style.strokeWidth=""+1/e.scaleFactor,this._rect.style.strokeDasharray=""+2/e.scaleFactor,e.overlayLayer.addOverlay(this.constructor.name,this._rect,T.Foreground);break;case P.PointerMove:if(this._initialPoint){let l=n.x-this._initialPoint.x,c=n.y-this._initialPoint.y;l>=0?(this._rect.setAttribute("x",this._initialPoint.x),this._rect.setAttribute("width",l)):(this._rect.setAttribute("x",n.x),this._rect.setAttribute("width",-1*l)),c>=0?(this._rect.setAttribute("y",this._initialPoint.y),this._rect.setAttribute("height",c)):(this._rect.setAttribute("y",n.y),this._rect.setAttribute("height",-1*c))}break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let s=e.rootDesignItem.querySelectorAll("*"),o=[];($(t)||t.shiftKey||t.altKey)&&e.instanceServiceContainer.selectionService.selectedElements&&o.push(...e.instanceServiceContainer.selectionService.selectedElements);let a=e.overlayLayer.createPoint();for(let l of s){let c=e.getNormalizedElementCoordinates(l);a.x=c.x,a.y=c.y;let h=this._rect.isPointInFill(a);a.x=c.x+c.width,a.y=c.y;let p=h&&this._rect.isPointInFill(a);a.x=c.x,a.y=c.y+c.height;let d=p&&this._rect.isPointInFill(a);if(a.x=c.x+c.width,a.y=c.y+c.height,d&&this._rect.isPointInFill(a)){let m=O.GetOrCreateDesignItem(l,l,e.serviceContainer,e.instanceServiceContainer);if(!o.includes(m)&&!t.altKey)o.push(m);else if(t.altKey){let f=o.indexOf(m);o.splice(f,1)}}}e.overlayLayer.removeOverlay(this._rect),this._rect=null,this._initialPoint=null,e.instanceServiceContainer.selectionService.setSelectedElements(o,t),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}dispose(){}}});var Qs,Ah=g(()=>{"use strict";me();$e();oe();se();Qs=class{cursor="progress";_pathD;_path;pointerEventHandler(e,t,i){$(t)?this.cursor="copy":t.altKey?this.cursor="default":this.cursor="default";let n=e.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("class","svg-selector"),this._path.style.strokeWidth=""+1/e.scaleFactor,this._path.style.strokeDasharray=""+2/e.scaleFactor,this._pathD="M"+n.x+" "+n.y,this._path.setAttribute("D",this._pathD),e.overlayLayer.addOverlay(this.constructor.name,this._path,T.Foreground);break;case P.PointerMove:this._path&&(this._pathD+="L"+n.x+" "+n.y,this._path.setAttribute("d",this._pathD+"Z"));break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let s=e.rootDesignItem.querySelectorAll("*"),o=[];($(t)||t.altKey)&&e.instanceServiceContainer.selectionService.selectedElements&&o.push(...e.instanceServiceContainer.selectionService.selectedElements);let a=e.overlayLayer.createPoint();for(let l of s){let c=e.getNormalizedElementCoordinates(l);a.x=c.x,a.y=c.y;let h=this._path.isPointInFill(a)||this._path.isPointInStroke(a);a.x=c.x+c.width,a.y=c.y;let p=this._path.isPointInFill(a)||this._path.isPointInStroke(a);a.x=c.x,a.y=c.y+c.height;let d=this._path.isPointInFill(a)||this._path.isPointInStroke(a);a.x=c.x+c.width,a.y=c.y+c.height;let u=this._path.isPointInFill(a)||this._path.isPointInStroke(a);if(h&&p&&d&&u){let m=O.GetOrCreateDesignItem(l,l,e.serviceContainer,e.instanceServiceContainer);if(!o.includes(m)&&!t.altKey)o.push(m);else if(t.altKey){let f=o.indexOf(m);o.splice(f,1)}}}e.overlayLayer.removeOverlay(this._path),this._path=null,this._pathD=null,e.instanceServiceContainer.selectionService.setSelectedElements(o),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}activated(e){}dispose(){}}});var Zs,Th=g(()=>{"use strict";Zs=class{cursor="crosshair";async activated(e){try{let n=(await new EyeDropper().open()).sRGBHex;e.globalContext.strokeColor=n}finally{e.globalContext.finishedWithTool(this)}}async pointerEventHandler(e,t,i){}keyboardEventHandler(e,t,i){}dispose(){}}});function Mh(r){let e=document.getSelection();return r.getSelection?e=r.getSelection():e.getComposedRanges&&(e=e.getComposedRanges(r)),e}function Nm(r,e){function t(o){let a=o.parentNode;if(!a)return;let l=document.createElement("span");e.push(l),a.insertBefore(l,o),l.appendChild(o)}function i(o){return o instanceof HTMLSpanElement&&Array.from(o.childNodes).every(a=>a.nodeType===Node.TEXT_NODE)}function n(o){switch(o.nodeType){case Node.TEXT_NODE:t(o);break;case Node.DOCUMENT_FRAGMENT_NODE:case Node.ELEMENT_NODE:if(i(o)){e.push(o);break}Array.from(o.childNodes).forEach(n);break}}let s=r.extractContents();n(s),r.insertNode(s)}function c_(r){let e=document.createRange();return e.setStart(r.startContainer,r.startOffset),e.setEnd(r.endContainer,r.endOffset),e}function Vm(r){let e=[];if("getRangeAt"in r){if(!r.rangeCount)return e;let t=r.getRangeAt(0);Nm(t,e)}else{let t=r[0];if(!t)return e;Nm(c_(t),e)}return"removeAllRanges"in r&&r.removeAllRanges&&r.removeAllRanges(),e}var Lh=g(()=>{"use strict"});import{html as h_}from"@node-projects/base-custom-webcomponent";var Xi,Js=g(()=>{"use strict";le();se();Lh();uc();de();Xi=class r extends F{static template=h_`<div style="height:100%;display:flex;gap:2px;width:100%"><button data-command="font-weight" data-command-parameter="800" style="pointer-events:auto;height:24px;width:24px;padding:0;font-weight:900">b</button> <button data-command="font-style" data-command-parameter="italic" style="pointer-events:auto;height:24px;width:24px;padding:0"><em>i</em></button> <button data-command="text-decoration" data-command-parameter="underline" style="pointer-events:auto;height:24px;width:24px;padding:0"><ins>u</ins></button> <button data-command="text-decoration" data-command-parameter="line-through" style="pointer-events:auto;height:24px;width:24px;padding:0"><del>s</del></button> <button data-command="text-decoration" data-command-parameter="overline" style="pointer-events:auto;height:24px;width:24px;padding:0"><span style="text-decoration:overline">o</span></button> <select data-command="fontSize" style="pointer-events:auto;height:24px;width:60px;padding:0"><option>8px</option><option>9px</option><option>10px</option><option>11px</option><option>12px</option><option>14px</option><option>16px</option><option>18px</option><option>20px</option><option>24px</option><option>28px</option><option>32px</option><option>36px</option></select> <select id="fontFamily" data-command="font-family" style="pointer-events:auto;height:24px;width:90px;padding:0"></select></div>`;_path;_toolbar;_selectionChangedListener;_toolbarStateAnimationFrame;constructor(e,t,i){super(e,t,i),this._keyDown=this._keyDown.bind(this),this._scheduleToolbarStateRefresh=this._scheduleToolbarStateRefresh.bind(this)}_keyDown(e){e.key==="Escape"&&this.dispose()}extend(){this.extendedItem.instanceServiceContainer.selectionService.clearSelectedElements(),this.extendedItem.removeDesignerAttributesAndStylesFromChildren(),window.addEventListener("keydown",this._keyDown,!0),this.extendedItem.editContent(),this._selectionChangedListener=this.extendedItem.instanceServiceContainer.selectionService.onSelectionChanged.on(()=>{this.commitchanges(),this.extensionManager.removeExtensionInstance(this.extendedItem,this)}),this.extendedItem.element.focus();let e=Z(this.extendedItem.element);this._toolbar=this.createToolbar(r.template,300,24),this._toolbar.updatePosition({x:(e.x-this.designerCanvas.containerBoundingRect.x)/this.designerCanvas.scaleFactor,y:(e.y-this.designerCanvas.containerBoundingRect.y)/this.designerCanvas.scaleFactor-36}),Vi.addFontsToSelect(this._toolbar.getById("fontFamily")),this._toolbar.querySelectorAll("button").forEach(t=>t.onpointerdown=i=>{let n=t.dataset.command;n&&this._formatSelection(n,t.dataset.commandParameter)}),this._toolbar.querySelectorAll("select").forEach(t=>t.onchange=()=>{let i=t.dataset.command;i&&this._formatSelection(i,t.value)}),document.addEventListener("selectionchange",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.addEventListener("keyup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.addEventListener("pointerup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.addEventListener("input",this._scheduleToolbarStateRefresh,!0),this.designerCanvas.clickOverlay.style.pointerEvents="none",this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("class","svg-edit-text-clickoutside"),this._path.setAttribute("fill-rule","evenodd"),this._path.style.pointerEvents="auto",this._path.onpointerdown=t=>{this.designerCanvas.ignoreEvent(t),this.commitchanges(),this.extensionManager.removeExtensionInstance(this.extendedItem,this)},this._addOverlay(this._path,T.Background),this.refresh(),this._refreshToolbarState()}refresh(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];if(this._valuesHaveChanges(this.designerCanvas.containerBoundingRect.width,this.designerCanvas.containerBoundingRect.height,this.designerCanvas.scaleFactor,e.p1.x,e.p1.y,e.p2.x,e.p2.y,e.p3.x,e.p3.y,e.p4.x,e.p4.y)){let t={width:this.designerCanvas.containerBoundingRect.width/this.designerCanvas.scaleFactor,height:this.designerCanvas.containerBoundingRect.height/this.designerCanvas.scaleFactor},i="M0 0 L"+t.width+" 0 L"+t.width+" "+t.height+" L0 "+t.height+" Z ";i+="M"+[e.p1,e.p2,e.p3,e.p4].map(n=>n.x+","+n.y).join(" ")+"Z ",this._path.setAttribute("d",i)}}dispose(){window.removeEventListener("keydown",this._keyDown,!0),document.removeEventListener("selectionchange",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.removeEventListener("keyup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.removeEventListener("pointerup",this._scheduleToolbarStateRefresh,!0),this.extendedItem.element.removeEventListener("input",this._scheduleToolbarStateRefresh,!0),this._toolbarStateAnimationFrame!=null&&cancelAnimationFrame(this._toolbarStateAnimationFrame),this._selectionChangedListener?.dispose(),this._removeAllOverlays(),this.extendedItem.editContentFinish(),this.designerCanvas.clickOverlay.style.pointerEvents="auto"}commitchanges(){this._removeAllOverlays(),this.extendedItem.element.normalize(),this._cleanupFormattingMarkup(this.extendedItem.element),this.extendedItem.element.normalize();let e=!1;e:for(;!e;){for(let i of this.extendedItem.element.querySelectorAll("*"))if(i.childNodes.length==0){i.remove();continue e}e=!0}this._cleanupFormattingMarkup(this.extendedItem.element),this.extendedItem.element.normalize();let t=this.extendedItem.element.innerHTML;this.extendedItem.editContentFinish(),this.extendedItem.innerHTML=t,this.designerCanvas.clickOverlay.style.pointerEvents="auto"}_cleanupFormattingMarkup(e){let t=!1;do t=this._cleanupFormattingNode(e),e.normalize();while(t)}_cleanupFormattingNode(e){let t=!1;for(let i of Array.from(e.childNodes))t=this._cleanupFormattingNode(i)||t;if(e instanceof HTMLElement&&e.localName==="span"){let i=e;if(this._isRedundantSpan(i))return this._unwrapElement(i),!0;let n=i.parentElement;if(n instanceof HTMLElement&&n.localName==="span"&&this._haveSameAttributes(n,i))return this._unwrapElement(i),!0}return this._mergeAdjacentSpans(e)||t}_mergeAdjacentSpans(e){let t=!1,i=e.firstChild;for(;i;){if(i instanceof HTMLElement&&i.localName==="span"){let n=i.nextSibling;for(;n instanceof HTMLElement&&n.localName==="span"&&this._haveSameAttributes(i,n);){for(;n.firstChild;)i.appendChild(n.firstChild);n.remove(),t=!0,n=i.nextSibling}}i=i.nextSibling}return t}_isRedundantSpan(e){return this._getAttributeSignature(e)===""}_haveSameAttributes(e,t){return this._getAttributeSignature(e)===this._getAttributeSignature(t)}_getAttributeSignature(e){return Array.from(e.attributes).filter(t=>t.name!=="style"||t.value.trim()!=="").sort((t,i)=>t.name.localeCompare(i.name)).map(t=>`${t.name}=${t.value}`).join(";")}_unwrapElement(e){let t=e.parentNode;if(t){for(;e.firstChild;)t.insertBefore(e.firstChild,e);e.remove()}}handlesPointerEvent(e,t,i){let n=t.composedPath(),s=this._toolbar?.querySelector("stylo-editor");return s!=null&&n.indexOf(s)>=0}_formatSelection(e,t){let i=this.designerCanvas.rootDesignItem.element.shadowRoot;if(!i)return;let n=Mh(i);if(!n)return;let s=this._isFormatApplied(n,e,t),o=Vm(n);if(o.length){for(let a of o)if(s){let l=this._findFormatTargets(a,e,t);if(l.length)for(let c of l)this._unsetFormat(c,e,t);else this._unsetFormat(a,e,t)}else this._setFormat(a,e,t);this.extendedItem.element.focus(),this._restoreSelection(o),this._refreshToolbarState()}}_scheduleToolbarStateRefresh(){this._toolbarStateAnimationFrame!=null&&cancelAnimationFrame(this._toolbarStateAnimationFrame),this._toolbarStateAnimationFrame=requestAnimationFrame(()=>{this._toolbarStateAnimationFrame=void 0,this._refreshToolbarState()})}_refreshToolbarState(){let e=this._getToolbarStateElement(),t=getComputedStyle(e),i=this._getTextDecorationValues(t.textDecorationLine||t.textDecoration);this._setToolbarButtonState("font-weight","800",this._isComputedFormatApplied(t,"font-weight","800")),this._setToolbarButtonState("font-style","italic",this._isComputedFormatApplied(t,"font-style","italic")),this._setToolbarButtonState("text-decoration","underline",i.includes("underline")),this._setToolbarButtonState("text-decoration","line-through",i.includes("line-through")),this._setToolbarButtonState("text-decoration","overline",i.includes("overline")),this._setToolbarSelectValue(this._getToolbarSelect("fontSize"),t.fontSize),this._setToolbarFontFamilyValue(this._getToolbarSelect("font-family"),t.fontFamily)}_getToolbarStateElement(){let e=this._getEditableSelection(),t=e?this._getFirstSelectedElement(e):null;return t&&this.extendedItem.element.contains(t)?t:this.extendedItem.element}_isComputedFormatApplied(e,t,i){switch(t){case"font-weight":{if(e.fontWeight==="bold")return!0;let n=parseFloat(e.fontWeight);return Number.isNaN(n)?!1:i?n>=parseFloat(i):n>=600}case"font-style":return e.fontStyle===i;case"text-decoration":return!!i&&this._getTextDecorationValues(e.textDecorationLine).includes(i);case"fontSize":return e.fontSize===i;case"font-family":return!!i&&this._normalizeFontFamily(e.fontFamily)===this._normalizeFontFamily(i);default:return i!=null&&e.getPropertyValue(t)===i}}_getToolbarSelect(e){return this._toolbar.querySelector(`select[data-command="${e}"]`)}_setToolbarButtonState(e,t,i){let n=this._toolbar.querySelector(`button[data-command="${e}"][data-command-parameter="${t}"]`);n&&(n.toggleAttribute("data-active",i),n.ariaPressed=String(i),n.style.backgroundColor=i?"rgb(191, 219, 254)":"",n.style.boxShadow=i?"inset 0 0 0 1px rgb(59, 130, 246)":"")}_setToolbarSelectValue(e,t){if(!e)return;this._removeTemporarySelectOptions(e);let i=Array.from(e.options).find(s=>s.value===t);if(i){e.value=i.value;return}if(!t){e.selectedIndex=-1;return}let n=document.createElement("option");n.value=t,n.text=t,n.dataset.temporaryToolbarValue="true",e.appendChild(n),e.value=t}_setToolbarFontFamilyValue(e,t){if(!e)return;let i=this._getPrimaryFontFamily(t),n=this._normalizeFontFamily(i);this._removeTemporarySelectOptions(e);let s=Array.from(e.options).find(a=>this._normalizeFontFamily(a.value)===n);if(s){e.value=s.value;return}if(!i){e.selectedIndex=-1;return}let o=document.createElement("option");o.value=i,o.text=i,o.dataset.temporaryToolbarValue="true",e.appendChild(o),e.value=i}_removeTemporarySelectOptions(e){Array.from(e.options).filter(t=>t.dataset.temporaryToolbarValue==="true").forEach(t=>t.remove())}_getPrimaryFontFamily(e){return e.replaceAll(/['"]/g,"").split(",")[0].trim()}_restoreSelection(e){let t=this._getEditableSelection();if(!t)return;let i=document.createRange();i.setStartBefore(e[0]),i.setEndAfter(e[e.length-1]),t.removeAllRanges(),t.addRange(i)}_getEditableSelection(){let e=this.designerCanvas.rootDesignItem.element.shadowRoot;if(!e)return document.getSelection();let t=Mh(e);return t&&"addRange"in t&&"removeAllRanges"in t?t:document.getSelection()}_isFormatApplied(e,t,i){let n=this._getFirstSelectedElement(e);return n?this._isComputedFormatApplied(getComputedStyle(n),t,i):!1}_getFirstSelectedElement(e){let t=this._getSelectionRange(e);if(!t)return null;if(t.startContainer.nodeType===Node.TEXT_NODE)return t.startContainer.parentElement;let i=t.commonAncestorContainer.nodeType===Node.TEXT_NODE?t.commonAncestorContainer.parentNode:t.commonAncestorContainer;if(!i)return t.startContainer instanceof HTMLElement?t.startContainer:null;let n=document.createTreeWalker(i,NodeFilter.SHOW_TEXT,{acceptNode:o=>{let a=o;return a.textContent?.length&&t.intersectsNode(a)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}}),s=i.nodeType===Node.TEXT_NODE&&t.intersectsNode(i)?i:n.nextNode();return s?.parentElement?s.parentElement:t.startContainer instanceof HTMLElement?t.startContainer:t.startContainer.parentElement}_getSelectionRange(e){if("getRangeAt"in e)return e.rangeCount?e.getRangeAt(0):null;let t=e[0];if(!t)return null;let i=document.createRange();return i.setStart(t.startContainer,t.startOffset),i.setEnd(t.endContainer,t.endOffset),i}_findFormatTargets(e,t,i){let n=[],s=e;for(;s&&s!==this.extendedItem.element;)this._hasInlineFormat(s,t,i)&&n.push(s),s=s.parentElement;return n}_hasInlineFormat(e,t,i){switch(t){case"font-weight":return e.style.fontWeight!=="";case"font-style":return e.style.fontStyle!=="";case"text-decoration":return!!i&&this._getTextDecorationValues(e.style.textDecorationLine||e.style.textDecoration).includes(i);case"fontSize":return e.style.fontSize!=="";case"font-family":return e.style.fontFamily!=="";default:return e.style.getPropertyValue(t)!==""}}_setFormat(e,t,i){switch(t){case"font-weight":e.style.fontWeight=i??"";break;case"font-style":e.style.fontStyle=i??"";break;case"text-decoration":{let n=this._getTextDecorationValues(e.style.textDecorationLine||e.style.textDecoration);i&&!n.includes(i)&&n.push(i),e.style.textDecorationLine=n.join(" ");break}case"fontSize":e.style.fontSize=i??"";break;case"font-family":e.style.fontFamily=i??"";break;default:i==null?e.style.removeProperty(t):e.style.setProperty(t,i);break}}_unsetFormat(e,t,i){switch(t){case"font-weight":e.style.removeProperty("font-weight");break;case"font-style":e.style.removeProperty("font-style");break;case"text-decoration":{let n=this._getTextDecorationValues(e.style.textDecorationLine||e.style.textDecoration).filter(s=>s!==i);n.length?e.style.textDecorationLine=n.join(" "):(e.style.removeProperty("text-decoration-line"),e.style.removeProperty("text-decoration"));break}case"fontSize":e.style.removeProperty("font-size");break;case"font-family":e.style.removeProperty("font-family");break;default:e.style.removeProperty(t);break}}_getTextDecorationValues(e){return e?e.split(" ").map(t=>t.trim()).filter(t=>t.length>0&&t!=="none"&&t!=="solid"):[]}_normalizeFontFamily(e){return e.replaceAll(/['"]/g,"").split(",")[0].trim().toLowerCase()}}});var qs,Oh=g(()=>{"use strict";me();oe();yt();Js();qs=class{_textEditExtensions;constructor(e){e&&(this._editExistingText=!0)}activated(e){this._textCreated=!1}dispose(){}cursor="text";_textCreated=!1;_editExistingText=!1;pointerEventHandler(e,t,i){let n=e.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:if(!this._textCreated&&!this._editExistingText){this._textCreated=!0;let s=document.createElement("span"),o=O.createDesignItemFromInstance(s,e.serviceContainer,e.instanceServiceContainer);o.setStyle("position","absolute"),o.setStyle("left",n.x+"px"),o.setStyle("top",n.y+"px"),e.instanceServiceContainer.undoService.execute(new Se(e.rootDesignItem,e.rootDesignItem.childCount,o)),e.extensionManager.applyExtensionInstance(o,new Xi(e.extensionManager,e,o)),e.serviceContainer.globalContext.finishedWithTool(this),setTimeout(()=>{s.focus()},50)}else for(let s of this._textEditExtensions)s.handlesPointerEvent&&(s.handlesPointerEvent(e,t,i)||e.serviceContainer.globalContext.finishedWithTool(this));break}}keyboardEventHandler(e,t,i){}}});var eo,Nh=g(()=>{"use strict";le();se();eo=class extends F{_path;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){this._path||(this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("class","svg-gray-out"),this._path.setAttribute("fill-rule","evenodd"),this._addOverlay(this._path,T.Background));let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0],t={width:this.designerCanvas.containerBoundingRect.width/this.designerCanvas.scaleFactor,height:this.designerCanvas.containerBoundingRect.height/this.designerCanvas.scaleFactor},i="M0 0 L"+t.width+" 0 L"+t.width+" "+t.height+" L0 "+t.height+" Z ";i+="M"+e.p1.x+" "+e.p1.y+" L"+e.p2.x+" "+e.p2.y+" L"+e.p3.x+" "+e.p3.y+" L"+e.p4.x+" "+e.p4.y+" Z",this._path.setAttribute("d",i)}dispose(){this._removeAllOverlays(),this._path=null}}});import{css as p_}from"@node-projects/base-custom-webcomponent";var to,Vh=g(()=>{"use strict";Nh();to=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new eo(e,t,i)}style=p_`.svg-gray-out{stroke:transparent;fill:rgba(211,211,211,.8);pointer-events:none}`}});var io,Rh=g(()=>{"use strict";le();se();io=class extends F{_text;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element);this._text=this._drawText("Press ALT (or hold) to enter container",e.x+5,e.y+12,"svg-text-enter-container",this._text,T.Foreground),this._text.style.fontSize=14/this.designerCanvas.scaleFactor+"px",this._text.setAttribute("x",""+(e.x+5/this.designerCanvas.scaleFactor)),this._text.setAttribute("y",""+(e.y+12/this.designerCanvas.scaleFactor))}dispose(){this._removeAllOverlays()}}});import{css as d_}from"@node-projects/base-custom-webcomponent";var no,zh=g(()=>{"use strict";Rh();no=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new io(e,t,i)}static style=d_`.svg-text-enter-container{stroke:none;fill:#000;stroke-width:1;font-weight:800;font-family:monospace}`}});var ro,Fh=g(()=>{"use strict";le();se();ro=class extends F{_rect;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];this._valuesHaveChanges(i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p3.x,i.p3.y,i.p4.x,i.p4.y)&&(this._rect=this._drawTransformedRect(i,"svg-invisible-div",this._rect,T.Background))}dispose(){this._removeAllOverlays()}}});import{css as u_}from"@node-projects/base-custom-webcomponent";var Bh,so,oo=g(()=>{"use strict";Fh();Bh="invisibleElementExtensionShowOverlay",so=class{elementFilter;constructor(e=t=>t.name=="div"&&window.getComputedStyle(t.element).display!="inline"){this.elementFilter=e}shouldExtend(e,t,i){if(t.instanceServiceContainer.designContext.extensionOptions[Bh]!==!1&&this.elementFilter(i)){let n=window.getComputedStyle(i.element);return n.backgroundColor=="rgba(0, 0, 0, 0)"&&n.borderStyle=="none"}return!1}getExtension(e,t,i){return new ro(e,t,i)}static style=u_`.svg-invisible-div{stroke:#d3d3d3;fill:transparent;stroke-width:1}`}});var ao,Hh=g(()=>{"use strict";oe();ao=class{shouldProvideContextmenu(e,t,i,n){return n=="designer"}provideContextMenuItems(e,t,i){let n=t.elementsFromPoint(e.x,e.y);return n.length>0?[{title:"items below",children:[...n.map(s=>({title:"select: "+s.localName+(s.id?" (#"+s.id+")":""),action:()=>this._select(t,s)}))]}]:[]}_select(e,t){let i=O.GetOrCreateDesignItem(t,t,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.selectionService.setSelectedElements([i])}}});var lo,Gh=g(()=>{"use strict";gi();Bi();de();lo=class{_basePlacementService;constructor(e){this._basePlacementService=e??new gt}enterContainer(e,t,i){for(let n of t)e.insertChild(n),n.removeStyle("position"),n.removeStyle("left"),n.removeStyle("top"),n.removeStyle("right"),n.removeStyle("width"),n.removeStyle("height"),n.removeStyle("transform")}leaveContainer(e,t){for(let i of t)if(!i.lastContainerSize){let n=Z(i.element);i.lastContainerSize={width:n.width,height:n.height}}}serviceForContainer(e,t,i){return t.display=="grid"||t.display=="inline-grid"?!(i!=null&&i.getComputedStyle()?.position=="absolute"):!1}isEnterableContainer(e){return this._basePlacementService.isEnterableContainer(e)}canEnter(e,t){return e.instanceServiceContainer.designerCanvas.readOnly?!1:this._basePlacementService.canEnter(e,t)}canLeave(e,t){return!0}getElementOffset(e,t){return Z(e.element)}placePoint(e,t,i,n,s,o,a){return i.serviceContainer.getLastServiceWhere("containerService",c=>c instanceof gt).placePoint(e,t,i,n,s,o,a)}startPlace(e,t,i,n,s,o,a){}place(e,t,i,n,s,o,a){let l=lt(i),c=t.getNormalizedEventCoordinates(e),h=In(i,c,l);if(h){let{row:p,column:d,cell:u}=h,m=Wi(a[0].element);u.name?(a[0].element.style.gridColumn="",a[0].element.style.gridRow="",a[0].element.style.gridArea=u.name):(a[0].element.style.gridArea="",m.colSpan<=1?(a[0].element.style.gridColumn=""+(d+1),a[0].element.style.gridRow=""+(p+1)):(a[0].element.style.gridColumnStart=""+(d+1),a[0].element.style.gridRowStart=""+(p+1),a[0].element.style.gridColumnEnd=""+(d+m.colSpan+1),a[0].element.style.gridRowEnd=""+(p+m.rowSpan+1)))}t.extensionManager.refreshAllExtensions([i])}finishPlace(e,t,i,n,s,o,a){let l=lt(i),c=t.getNormalizedEventCoordinates(e),h=In(i,c,l);if(h){let{row:p,column:d,cell:u}=h,m=Wi(a[0].element);u.name?(a[0].setStyle("grid-area",u.name),a[0].removeStyle("grid-row-start"),a[0].removeStyle("grid-row-end"),a[0].removeStyle("grid-column-start"),a[0].removeStyle("grid-column-end"),a[0].removeStyle("grid-column"),a[0].removeStyle("grid-row"),a[0].setStyle("grid-area",u.name)):m.colSpan<=1?(a[0].removeStyle("grid-area"),a[0].removeStyle("grid-row-start"),a[0].removeStyle("grid-row-end"),a[0].removeStyle("grid-column-start"),a[0].removeStyle("grid-column-end"),a[0].setStyle("grid-column",""+(d+1)),a[0].setStyle("grid-row",""+(p+1))):(a[0].removeStyle("grid-area"),a[0].removeStyle("grid-column"),a[0].removeStyle("grid-row"),a[0].setStyle("grid-column-start",""+(d+1)),a[0].setStyle("grid-row-start",""+(p+1)),a[0].setStyle("grid-column-end",""+(d+m.colSpan+1)),a[0].setStyle("grid-row-end",""+(p+m.rowSpan+1)))}t.extensionManager.refreshAllExtensions([i])}moveElements(e,t,i){}}});var co,Wh=g(()=>{"use strict";co=class{getElementAtPoint(e,t){return e.getElementAtPoint(t)}}});var ho,jh=g(()=>{"use strict";de();Bi();ho=class{_basePlacementService;constructor(e){this._basePlacementService=e??new gt}enterContainer(e,t,i){for(let n of t)e.insertChild(n),n.removeStyle("position"),n.removeStyle("left"),n.removeStyle("top"),n.removeStyle("right"),n.removeStyle("transform")}leaveContainer(e,t){for(let i of t)if(!i.lastContainerSize){let n=Z(i.element);i.lastContainerSize={width:n.width,height:n.height}}}serviceForContainer(e,t,i){return t.display=="flex"||t.display=="inline-flex"?!(i!=null&&i.getComputedStyle()?.position=="absolute"):!1}isEnterableContainer(e){return this._basePlacementService.isEnterableContainer(e)}canEnter(e,t){return e.instanceServiceContainer.designerCanvas.readOnly?!1:this._basePlacementService.canEnter(e,t)}canLeave(e,t){return!0}getElementOffset(e,t){return Z(e.element)}placePoint(e,t,i,n,s,o,a){return i.serviceContainer.getLastServiceWhere("containerService",c=>c instanceof gt).placePoint(e,t,i,n,s,o,a)}startPlace(e,t,i,n,s,o,a){}place(e,t,i,n,s,o,a){let l=t.getNormalizedEventCoordinates(e),c=getComputedStyle(i.element),h=Array.from(i.children()).filter(p=>!p.isEmptyTextNode).map(p=>[p,t.getNormalizedElementCoordinates(p.element)]);if(c.flexDirection=="row"||c.flexDirection=="row-reverse"){h.sort(m=>m[1].x);let p=null;for(let m of h)if(m[1].x+m[1].width/2<l.x&&(p=m,c.flexDirection=="row-reverse"))break;let d=h.indexOf(p),u=h.indexOf(h.find(m=>m[0]==a[0]));if(p&&p[0]!=a[0]){if(c.flexDirection=="row-reverse"&&d-1===u||c.flexDirection=="row"&&d+1===u)return;let m=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="row-reverse"?p[0].insertAdjacentElement(a[0],"beforebegin"):p[0].insertAdjacentElement(a[0],"afterend"),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(m)}else if(p==null){if(u==0)return;let m=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="row-reverse"?i.insertChild(a[0]):i.insertChild(a[0],0),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(m)}}else if(c.flexDirection=="column"||c.flexDirection=="column-reverse"){h.sort(m=>m[1].y);let p=null;for(let m of h)if(m[1].y+m[1].height/2<l.y&&(p=m,c.flexDirection=="column-reverse"))break;let d=h.indexOf(p),u=h.indexOf(h.find(m=>m[0]==a[0]));if(p&&p[0]!=a[0]){if(c.flexDirection=="column-reverse"&&d-1===u||c.flexDirection=="column"&&d+1===u)return;let m=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="column-reverse"?p[0].insertAdjacentElement(a[0],"beforebegin"):p[0].insertAdjacentElement(a[0],"afterend"),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(m)}else if(p==null){if(u==0)return;let m=[...i.instanceServiceContainer.selectionService.selectedElements],f=a[0].openGroup("move in flexbox");a[0].parent&&a[0].remove(),c.flexDirection=="column-reverse"?i.insertChild(a[0]):i.insertChild(a[0],0),f.commit(),i.instanceServiceContainer.selectionService.setSelectedElements(m)}}t.extensionManager.refreshAllExtensions([i])}finishPlace(e,t,i,n,s,o,a){}moveElements(e,t,i){}}});var m_,f_,po,Yh=g(()=>{"use strict";de();m_="provideSnaplinesWithDistance",f_="provideSnaplinesWithDistanceDistance",po=class{provideSnaplines(e,t){{let i=e.instanceServiceContainer.designerCanvas,n=new Map(t.map(m=>[m.element,m])),s=Z(e.element),o=i.instanceServiceContainer.designContext.extensionOptions[m_]!==!1,a=i.instanceServiceContainer.designContext.extensionOptions[f_]??5,l=[],c=[],h=[],p=[],d=e.document.createTreeWalker(e.usableContainer,NodeFilter.SHOW_ELEMENT),u=d.nextNode();for(;u!=null;)if(n.has(u))u=d.nextSibling();else{let m=Z(u),f=(m.x-s.x)/i.scaleFactor,y=(m.x-s.x+m.width/2)/i.scaleFactor,v=(m.x-s.x+m.width)/i.scaleFactor,C=(m.y-s.y)/i.scaleFactor,w=(m.y-s.y+m.height/2)/i.scaleFactor,b=(m.y-s.y+m.height)/i.scaleFactor,S={x:f+s.x,y:C+s.y,width:m.width/i.scaleFactor,height:m.height/i.scaleFactor};o&&l.push([f-a,S]),l.push([f,S]),c.push([y,S]),l.push([v,S]),o&&l.push([v+a,S]),o&&h.push([C-a,S]),h.push([C,S]),p.push([w,S]),h.push([b,S]),o&&h.push([b+a,S]),u=d.nextNode()}return l.push([0,{x:0,y:0,width:0,height:0}]),l.sort((m,f)=>m[0]-f[0]),c.sort((m,f)=>m[0]-f[0]),h.push([0,{x:0,y:0,width:0,height:0}]),h.sort((m,f)=>m[0]-f[0]),p.sort((m,f)=>m[0]-f[0]),{outerRect:s,positionsH:l,positionsMiddleH:c,positionsV:h,positionsMiddleV:p}}}}});var uo,Uh=g(()=>{"use strict";oe();yt();uo=class{dragOver(e,t){return e.readOnly?"none":t.dataTransfer.items[0].type.startsWith("image/")?"copy":"none"}async drop(e,t){if(t.dataTransfer.files[0].type.startsWith("image/")){let i=await O.createDesignItemFromImageBlob(e.serviceContainer,e.instanceServiceContainer,t.dataTransfer.files[0]),n=i.openGroup("Insert of <img>");i.setStyle("position","absolute");let s=e.getNormalizedEventCoordinates(t);i.setStyle("top",s.y+"px"),i.setStyle("left",s.x+"px"),e.instanceServiceContainer.undoService.execute(new Se(e.rootDesignItem,e.rootDesignItem.childCount,i)),n.commit(),requestAnimationFrame(()=>e.instanceServiceContainer.selectionService.setSelectedElements([i]))}}}});import{css as g_}from"@node-projects/base-custom-webcomponent";var mo,Xh=g(()=>{"use strict";Js();mo=class{shouldExtend(e,t,i){return!(i.isRootItem||i.name==="input")}getExtension(e,t,i){return new Xi(e,t,i)}static style=g_`.svg-edit-text-clickoutside{stroke:transparent;fill:#d3d3d3;opacity:.7}`}});async function SI(r){Ln([["text/plain",r]])}async function Ln(r){if(navigator.clipboard){try{let e=[];for(let t of r)e.push(new ClipboardItem({[t[0]]:new Blob([t[1]],{type:t[0]})}));await navigator.clipboard.write(e)}catch{await navigator.clipboard.writeText(r[0][1]),$h=r[0][1]}console.info("Copy to clipboard successful")}else{let e=document.activeElement;for(;e?.shadowRoot?.activeElement;)e=e.shadowRoot.activeElement;$h=r[0][1];let t=document.createElement("textarea");t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.width="2em",t.style.height="2em",t.style.padding="0",t.style.border="none",t.style.outline="none",t.style.boxShadow="none",t.style.background="transparent",t.value=r[0][1],document.body.appendChild(t),t.select();try{document.execCommand("copy")}catch{try{document.execCommand("copy")}catch(n){console.error(n)}}document.body.removeChild(t),e.focus()}}async function fo(){return navigator.clipboard?new Promise(async(r,e)=>{let t=await navigator.clipboard.readText();r(t)}):new Promise(async(r,e)=>{let t=document.createElement("textarea");t.style.position="fixed",t.style.top="0",t.style.left="0",t.style.width="2em",t.style.height="2em",t.style.padding="0",t.style.border="none",t.style.outline="none",t.style.boxShadow="none",t.style.background="transparent",document.body.appendChild(t),t.focus(),t.select(),document.execCommand("paste");let i=t.value;i||(i=$h),document.body.removeChild(t),r(i)})}async function go(){return navigator.clipboard?await navigator.clipboard.read():null}var $h,yo=g(()=>{"use strict";$h=null});var Rm,vo,Kh=g(()=>{"use strict";ot();yo();Le();Rm="web text/positions",vo=class{async copyItems(e){let t=ue(e),i=ie.ConvertToString(t,!1),n=t.map(s=>s.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(s.element));Ln([["text/html",i],[Rm,JSON.stringify(n)]])}async getPasteItems(e,t){let i="",n=null,s=await go();if(s!=null){try{i=await(await s[0].getType("text/html"))?.text()}catch{}i||(i=await(await s[0].getType("text/plain"))?.text());try{let a=await(await s[0].getType(Rm))?.text();n=JSON.parse(a)}catch{}}else i=await fo();return[await e.htmlParserService.parse(i,e,t,!0),n??void 0]}}});var Ae,Qh=g(()=>{"use strict";(function(r){r[r.TOP=0]="TOP",r[r.RIGHT=1]="RIGHT",r[r.BOTTOM=2]="BOTTOM",r[r.LEFT=3]="LEFT",r[r.VERTICAL_CENTER=4]="VERTICAL_CENTER",r[r.HORIZONTAL_CENTER=5]="HORIZONTAL_CENTER"})(Ae||(Ae={}))});var Ot,ei,zm=g(()=>{"use strict";Qh();Ot=class{static arrangeElements(e,t,i){switch(e){case Ae.TOP:{let n=this.formGroup(ei.TOP,t),o=t.getNormalizedElementCoordinates(i[0].element).y;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.y){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("bottom")&&!a.hasStyle("top")){let h=c.y+c.height-o-l.height;this.arrange(a,"bottom",h+"px")}else{let h=o-c.y;this.arrange(a,"top",h+"px")}}}n.commit();break}case Ae.BOTTOM:{let n=this.formGroup(ei.BOTTOM,t),s=t.getNormalizedElementCoordinates(i[0].element),o=s.y+s.height;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.y+l.height){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("bottom")&&!a.hasStyle("top")){let h=c.y+c.height-o;this.arrange(a,"bottom",h+"px")}else{let h=o-l.height-c.y;this.arrange(a,"top",h+"px")}}}n.commit();break}case Ae.LEFT:{let n=this.formGroup(ei.LEFT,t),o=t.getNormalizedElementCoordinates(i[0].element).x;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.x){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("right")&&!a.hasStyle("left")){let h=c.x+c.width-o-l.width;this.arrange(a,"right",h+"px")}else{let h=o-c.x;this.arrange(a,"left",h+"px")}}}n.commit();break}case Ae.RIGHT:{let n=this.formGroup(ei.RIGHT,t),s=t.getNormalizedElementCoordinates(i[0].element),o=s.x+s.width;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.x+l.width){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("right")&&!a.hasStyle("left")){let h=c.x+c.width-o;this.arrange(a,"right",h+"px")}else{let h=o-l.width-c.x;this.arrange(a,"left",h+"px")}}}n.commit();break}case Ae.VERTICAL_CENTER:{let n=this.formGroup(ei.VERTICAL_CENTER,t),s=t.getNormalizedElementCoordinates(i[0].element),o=s.y+s.height/2;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.y+l.height/2){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("bottom")&&!a.hasStyle("top")){let h=c.y+c.height-o-l.height/2;this.arrange(a,"bottom",h+"px")}else{let h=o-l.height/2-c.y;this.arrange(a,"top",h+"px")}}}n.commit();break}case Ae.HORIZONTAL_CENTER:{let n=this.formGroup(ei.HORIZONTAL_CENTER,t),s=t.getNormalizedElementCoordinates(i[0].element),o=s.x+s.width/2;for(let a of i){let l=t.getNormalizedElementCoordinates(a.element);if(o!=l.x+l.width/2){let c=t.getNormalizedElementCoordinates(a.parent.element);if(a.hasStyle("right")&&!a.hasStyle("left")){let h=c.x+c.width-o-l.width/2;this.arrange(a,"right",h+"px")}else{let h=o-l.width/2-c.x;this.arrange(a,"left",h+"px")}}}n.commit();break}}}static arrange(e,t,i){e.setStyle(t,i)}static formGroup(e,t){return t.instanceServiceContainer.selectionService.primarySelection.openGroup(e)}};(function(r){r.TOP="arrangeTop",r.RIGHT="arrangeRight",r.BOTTOM="arrangeBottom",r.LEFT="arrangeLeft",r.HORIZONTAL_CENTER="arrangeHorizontalCenter",r.VERTICAL_CENTER="arrangeVerticalCenter"})(ei||(ei={}))});var _o,Zh=g(()=>{"use strict";Mt();zm();Qh();_o=class{canExecuteCommand(e,t,i){return t.type==A.moveBackward||t.type==A.moveForward||t.type==A.moveToBack||t.type==A.moveToFront?e.instanceServiceContainer.selectionService.primarySelection!=null&&!e.instanceServiceContainer.selectionService.primarySelection.isRootItem:t.type==A.arrangeBottom||t.type==A.arrangeCenter||t.type==A.arrangeLeft||t.type==A.arrangeMiddle||t.type==A.arrangeRight||t.type==A.arrangeTop||t.type==A.unifyHeight||t.type==A.unifyWidth?e.instanceServiceContainer.selectionService.selectedElements.length>1:t.type==A.rotateCounterClockwise||t.type==A.rotateClockwise||t.type==A.mirrorHorizontal||t.type==A.mirrorVertical?e.instanceServiceContainer.selectionService.selectedElements.length>0&&!e.instanceServiceContainer.selectionService.primarySelection.isRootItem:null}async executeCommand(e,t,i){i=i??[...e.instanceServiceContainer.selectionService.selectedElements];let n=i[0];if(t.type==A.moveBackward){let o=n.parent.indexOf(n)-1;o>=0&&n.parent.insertChild(n,o)}else if(t.type==A.moveForward){let o=n.parent.indexOf(n)+1;o<n.parent.childCount&&n.parent.insertChild(n,o)}else if(t.type==A.moveToBack)n.parent.insertChild(n,0);else if(t.type==A.moveToFront)n.parent.insertChild(n);else if(t.type==A.arrangeTop)Ot.arrangeElements(Ae.TOP,e,i);else if(t.type==A.arrangeRight)Ot.arrangeElements(Ae.RIGHT,e,i);else if(t.type==A.arrangeLeft)Ot.arrangeElements(Ae.LEFT,e,i);else if(t.type==A.arrangeBottom)Ot.arrangeElements(Ae.BOTTOM,e,i);else if(t.type==A.arrangeCenter)Ot.arrangeElements(Ae.HORIZONTAL_CENTER,e,i);else if(t.type==A.arrangeMiddle)Ot.arrangeElements(Ae.VERTICAL_CENTER,e,i);else if(t.type==A.unifyHeight){let o=n.openGroup("unifyHeight"),a=n.getStyle("height");for(let l of i)l.setStyle("height",a);o.commit()}else if(t.type==A.unifyWidth){let o=n.openGroup("unifyWidth"),a=n.getStyle("width");for(let l of i)l.setStyle("width",a);o.commit()}else if(t.type==A.rotateCounterClockwise){let o=n.openGroup("rotateCounterClockwise");var s=n.getStyle("transform");let a=0,l="";if(s!=null)try{s.includes("-")?a=parseInt(s.match(/\d+/)[0])*-1:a=parseInt(s.match(/\d+/)[0]),l="rotate("+(a-90)+"deg)"}catch{l="rotate(-90deg)"}else l="rotate(-90deg)";for(let c of i)c.setStyle("transform",l);o.commit()}else if(t.type==A.rotateClockwise){let o=n.openGroup("rotateClockwise");var s=n.getStyle("transform");let l=0,c="";if(s!=null)try{s.includes("-")?l=parseInt(s.match(/\d+/)[0])*-1:l=parseInt(s.match(/\d+/)[0]),c="rotate("+(l+90)+"deg)"}catch{c="rotate(90deg)"}else c="rotate(90deg)";for(let h of i)h.setStyle("transform",c);o.commit()}else if(t.type==A.mirrorHorizontal){let o=n.openGroup("mirrorHorizontal");for(let a of i)a.setStyle("transform","scaleX(-1)");o.commit()}else if(t.type==A.mirrorVertical){let o=n.openGroup("mirrorVertical");for(let a of i)a.setStyle("transform","scaleY(-1)");o.commit()}else return null;return!0}}});var Nt,Jh=g(()=>{"use strict";Nt=class{_space;constructor(e){this._space=e}provideButtons(e,t){let i=document.createElement("div");return i.style.width=this._space+"px",i.oncontextmenu=n=>{n.preventDefault()},[i]}}});var xo,qh=g(()=>{"use strict";gi();le();se();xo=class extends F{_cells;_texts;_gaps;_group;gridInformation;gridInformationString;_lastEvent;gridColor;gridFillColor;constructor(e,t,i,n,s){super(e,t,i),this.gridColor=n,this.gridFillColor=s}extend(e,t){this._initSVGArrays(),this.refresh(t)}refresh(e,t){this.gridInformation=lt(this.extendedItem);let i=JSON.stringify(this.gridInformation);if(i!==this.gridInformationString||t!=null&&this._lastEvent!==t){t&&(this._lastEvent=t),this.gridInformationString=i;let n=this.gridInformation.cells,s=this._lastEvent&&this._lastEvent instanceof MouseEvent?In(this.extendedItem,this.designerCanvas.getNormalizedEventCoordinates(this._lastEvent),this.gridInformation):null;n[0][0]&&!isNaN(n[0][0].height)&&!isNaN(n[0][0].width)&&((this.gridInformation.cells.length!=this._cells.length||this.gridInformation.cells[0].length!=this._cells[0].length)&&this._initSVGArrays(),this._group||(this._group=this._drawGroup(null,this._group,T.Background),this._group.style.transformOrigin="0 0",this._group.style.setProperty("--svg-grid-stroke-color",this.gridColor),this._group.style.setProperty("--svg-grid-fill-color",this.gridFillColor)),this._group.style.transform=ji(this.extendedItem).toString(),this.gridInformation.gaps.forEach((o,a)=>{this._gaps[a]=this._drawRect(o.localX,o.localY,o.width,o.height,"svg-grid-gap",this._gaps[a],T.Background),this._group.appendChild(this._gaps[a])}),n.forEach((o,a)=>{o.forEach((l,c)=>{this._cells[a][c]=this._drawRect(l.localX,l.localY,l.width,l.height,"svg-grid",this._cells[a][c],T.Background),this._group.appendChild(this._cells[a][c]),l.name&&(this._texts[a][c]=this._drawText(l.name,l.localX,l.localY,"svg-grid-area",this._texts[a][c],T.Background),this._texts[a][c].setAttribute("dominant-baseline","hanging")),s?.row===a&&s?.column===c&&this._cells[a][c].setAttribute("class","svg-grid-current-cell")})}))}}dispose(){this._removeAllOverlays()}_initSVGArrays(){this._removeAllOverlays(),this._group=null,this.gridInformation=lt(this.extendedItem),this._cells=new Array(this.gridInformation.cells.length),this.gridInformation.cells.forEach((e,t)=>this._cells[t]=new Array(e.length)),this._texts=new Array(this.gridInformation.cells.length),this.gridInformation.cells.forEach((e,t)=>this._texts[t]=new Array(e.length)),this._gaps=new Array(this.gridInformation.gaps.length)}}});import{css as y_}from"@node-projects/base-custom-webcomponent";var On,vi,Nn=g(()=>{"use strict";qh();qt();q();On="gridExtensionShowOverlay",vi=class{gridColor;gridFillColor;constructor(e="orange",t="#ff944722"){this.gridColor=e,this.gridFillColor=t}shouldExtend(e,t,i){if(i.nodeType!=k.Element)return!1;let n=getComputedStyle(i.element).display;return n=="grid"||n=="inline-grid"?t.instanceServiceContainer.designContext.extensionOptions[On]!==!1:!1}getExtension(e,t,i){return new xo(e,t,i,this.gridColor,this.gridFillColor)}static style=y_`.svg-grid{stroke:var(--svg-grid-stroke-color);stroke-dasharray:5;fill:var(--svg-grid-fill-color)}.svg-grid-current-cell{stroke:var(--svg-grid-stroke-color);stroke-dasharray:5;fill:#e3ff4722}.svg-grid-area{font-size:8px}.svg-grid-gap{stroke:transparent;fill:var(--svg-grid-stroke-color);opacity:.3;mask:url(#mask-stripe-grid)}.svg-grid-header{fill:var(--svg-grid-fill-color);stroke:var(--svg-grid-stroke-color)}.svg-grid-plus-sign{stroke:#000}`;static svgDefs=fi`<pattern id="pattern-stripe-grid" width="4" height="4" patternUnits="userSpaceOnUse" patternTransform="rotate(45)"><rect width="1" height="4" transform="translate(0,0)" fill="white"></rect></pattern><mask id="mask-stripe-grid"><rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-stripe-grid)"></mask>`}});var bo,ep=g(()=>{"use strict";Nn();ai();bo=class extends tt{constructor(){super(On,"G","show grid overlay")}}});var wo,tp=g(()=>{"use strict";me();se();Xe();oe();yt();$e();ui();wo=class{cursor="crosshair";_path;_startPoint;_minX;_minY;_maxX;_maxY;_px;_py;constructor(){}activated(e){}dispose(){}pointerEventHandler(e,t,i){let n=e.getNormalizedEventCoordinates(t),s=10;switch(t.type){case P.PointerDown:this._startPoint=n,t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","rect"),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("fill",e.serviceContainer.globalContext.fillBrush),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),this._path.setAttribute("x",n.x.toString()),this._path.setAttribute("y",n.y.toString()),this._path.setAttribute("width","0"),this._path.setAttribute("height","0"),e.overlayLayer.addOverlay(this.constructor.name,this._path,T.Foreground);break;case P.PointerMove:if(this._path)if(this._minX=n.x<this._startPoint.x?n.x:this._startPoint.x,this._maxX=n.x>this._startPoint.x?n.x:this._startPoint.x,this._minY=n.y<this._startPoint.y?n.y:this._startPoint.y,this._maxY=n.y>this._startPoint.y?n.y:this._startPoint.y,$(t)){if(t.shiftKey){let d=2*zi(this._startPoint,n);this._px=this._startPoint.x-d/2,this._py=this._startPoint.y-d/2,this._path.setAttribute("width",d.toString()),this._path.setAttribute("height",d.toString())}else{let d=2*(this._maxX-this._minX),u=2*(this._maxY-this._minY);this._px=n.x<this._startPoint.x?n.x:this._startPoint.x-d/2,this._py=n.y<this._startPoint.y?n.y:this._startPoint.y-u/2,this._path.setAttribute("width",d.toString()),this._path.setAttribute("height",u.toString())}this._path.setAttribute("x",this._px.toString()),this._path.setAttribute("y",this._py.toString())}else{if(t.shiftKey){let d=zi(this._startPoint,n);this._px=n.x<this._startPoint.x?this._startPoint.x-d:this._startPoint.x,this._py=n.y<this._startPoint.y?this._startPoint.y-d:this._startPoint.y,this._path.setAttribute("width",d.toString()),this._path.setAttribute("height",d.toString())}else this._px=n.x<this._startPoint.x?n.x:this._startPoint.x,this._py=n.y<this._startPoint.y?n.y:this._startPoint.y,this._path.setAttribute("width",(this._maxX-this._minX).toString()),this._path.setAttribute("height",(this._maxY-this._minY).toString());this._path.setAttribute("x",this._px.toString()),this._path.setAttribute("y",this._py.toString())}break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let o=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let a=document.createElementNS("http://www.w3.org/2000/svg","svg"),l=o.x-s,c=o.y-s,h=e.serviceContainer.options.roundPixelsToDecimalPlaces;this._path.setAttribute("x",pe(this._px-l,h)),this._path.setAttribute("y",pe(this._py-c,h)),this._path.setAttribute("width",pe(Number(this._path.getAttribute("width")),h)),this._path.setAttribute("height",pe(Number(this._path.getAttribute("height")),h)),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),a.appendChild(this._path),a.style.left=pe(l,h)+"px",a.style.top=pe(c,h)+"px",a.style.position="absolute",a.style.width=Math.round(o.width+2*s)+"px",a.style.height=Math.round(o.height+2*s)+"px",a.style.overflow="visible",a.style.stroke=e.serviceContainer.globalContext.strokeColor,a.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=null;let p=O.createDesignItemFromInstance(a,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new Se(e.rootDesignItem,e.rootDesignItem.childCount,p)),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}}});var So,ip=g(()=>{"use strict";me();se();Xe();oe();yt();$e();ui();So=class{cursor="crosshair";_path;_startPoint;_radius;_cx;_cy;constructor(){}activated(e){}dispose(){}pointerEventHandler(e,t,i){let n=e.getNormalizedEventCoordinates(t),s=10;switch(t.type){case P.PointerDown:this._startPoint=n,t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","ellipse"),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("fill",e.serviceContainer.globalContext.fillBrush),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),this._path.setAttribute("cx",n.x.toString()),this._path.setAttribute("cy",n.y.toString()),this._path.setAttribute("rx","0"),this._path.setAttribute("ry","0"),e.overlayLayer.addOverlay(this.constructor.name,this._path,T.Foreground);break;case P.PointerMove:if(this._path)if(this._radius={x:Math.abs(n.x-this._startPoint.x),y:Math.abs(n.y-this._startPoint.y)},$(t))if(this._path.setAttribute("cx",this._startPoint.x.toString()),this._path.setAttribute("cy",this._startPoint.y.toString()),this._cx=this._startPoint.x,this._cy=this._startPoint.y,t.shiftKey){let d=zi(this._startPoint,n);this._path.setAttribute("rx",d.toString()),this._path.setAttribute("ry",d.toString())}else this._path.setAttribute("rx",this._radius.x.toString()),this._path.setAttribute("ry",this._radius.y.toString());else{if(t.shiftKey){let d=zi(this._startPoint,n);this._radius={x:d,y:d}}this._cx=n.x<this._startPoint.x?this._startPoint.x-this._radius.x/2:this._startPoint.x+this._radius.x/2,this._cy=n.y<this._startPoint.y?this._startPoint.y-this._radius.y/2:this._startPoint.y+this._radius.y/2,this._path.setAttribute("cx",this._cx.toString()),this._path.setAttribute("cy",this._cy.toString()),this._path.setAttribute("rx",(this._radius.x/2).toString()),this._path.setAttribute("ry",(this._radius.y/2).toString())}break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let o=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let a=document.createElementNS("http://www.w3.org/2000/svg","svg"),l=o.x-s,c=o.y-s,h=e.serviceContainer.options.roundPixelsToDecimalPlaces;a.appendChild(this._path),this._path.setAttribute("cx",pe(this._cx-l,h)),this._path.setAttribute("cy",pe(this._cy-c,h)),this._path.setAttribute("rx",pe(Number(this._path.getAttribute("rx")),h)),this._path.setAttribute("ry",pe(Number(this._path.getAttribute("ry")),h)),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),a.style.left=pe(l,h)+"px",a.style.top=pe(c,h)+"px",a.style.position="absolute",a.style.width=Math.round(o.width+2*s)+"px",a.style.height=Math.round(o.height+2*s)+"px",a.style.overflow="visible",a.style.stroke=e.serviceContainer.globalContext.strokeColor,a.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=null;let p=O.createDesignItemFromInstance(a,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new Se(e.rootDesignItem,e.rootDesignItem.childCount,p)),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}}});var Co,np=g(()=>{"use strict";me();se();Xe();oe();yt();ui();Co=class{cursor="crosshair";_path;_startPoint;_endPoint;constructor(){}activated(e){}dispose(){}pointerEventHandler(e,t,i){let n=e.getNormalizedEventCoordinates(t),s=10;switch(t.type){case P.PointerDown:this._startPoint=n,t.target.setPointerCapture(t.pointerId),e.captureActiveTool(this),this._path=document.createElementNS("http://www.w3.org/2000/svg","line"),this._path.setAttribute("stroke",e.serviceContainer.globalContext.strokeColor),this._path.setAttribute("stroke-width",e.serviceContainer.globalContext.strokeThickness),this._path.setAttribute("x1",n.x.toString()),this._path.setAttribute("y1",n.y.toString()),this._path.setAttribute("x2",n.x.toString()),this._path.setAttribute("y2",n.y.toString()),e.overlayLayer.addOverlay(this.constructor.name,this._path,T.Foreground);break;case P.PointerMove:if(this._path)if(t.shiftKey){let d=It(this._startPoint,n);this._path.setAttribute("x2",d.x.toString()),this._path.setAttribute("y2",d.y.toString()),this._endPoint=d}else this._path.setAttribute("x2",n.x.toString()),this._path.setAttribute("y2",n.y.toString()),this._endPoint=n;break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId),e.releaseActiveTool();let o=e.getNormalizedElementCoordinates(this._path);e.overlayLayer.removeOverlay(this._path);let a=document.createElementNS("http://www.w3.org/2000/svg","svg"),l=o.x-s,c=o.y-s,h=e.serviceContainer.options.roundPixelsToDecimalPlaces;this._path.setAttribute("x1",pe(this._startPoint.x-l,h)),this._path.setAttribute("y1",pe(this._startPoint.y-c,h)),this._path.setAttribute("x2",pe(this._endPoint.x-l,h)),this._path.setAttribute("y2",pe(this._endPoint.y-c,h)),this._path.removeAttribute("stroke"),this._path.removeAttribute("stroke-width"),this._path.removeAttribute("overlay-source"),a.appendChild(this._path),a.style.left=pe(l,h)+"px",a.style.top=pe(c,h)+"px",a.style.position="absolute",a.style.width=Math.round(o.width+2*s)+"px",a.style.height=Math.round(o.height+2*s)+"px",a.style.overflow="visible",a.style.stroke=e.serviceContainer.globalContext.strokeColor,a.style.strokeWidth=e.serviceContainer.globalContext.strokeThickness,this._path=null;let p=O.createDesignItemFromInstance(a,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.undoService.execute(new Se(e.rootDesignItem,e.rootDesignItem.childCount,p)),e.serviceContainer.globalContext.finishedWithTool(this);break}}keyboardEventHandler(e,t,i){}}});var $i,Eo=g(()=>{"use strict";$i=class r{static _helperElement=document.createElement("div");static combine(e,t){if(r.applyStylesToHelper(e),r.combineBorder(e),r.combineMargin(e),r.combinePadding(e),r.combineInset(e),r.combineBackground(e),r.combineFont(e),e=r.combineBrowserSupportedShorthands(e),t)for(let i of t)e.has(i[0])&&e.get(i[0])===i[1]&&e.delete(i[0]);return e}static applyStylesToHelper(e){let t=r._helperElement;t.setAttribute("style","");for(let i of e)i[0].startsWith("--")||i[0].includes("-")?t.style.setProperty(i[0],i[1]):t.style[i[0]]=i[1];return t}static combineBrowserSupportedShorthands(e){let t=r.getNormalizedStyleValues(e),i=new Map(e);for(;;){let n=r.parseStyleDeclarationList(r.applyStylesToHelper(i).style.cssText),s=null,o=0;for(let a of n){let l=r.getCandidateCoverage(i,t,a[0],a[1]);if(l.length===0)continue;let c=new Map(i);for(let p of l)c.delete(p);c.set(a[0],a[1]);let h=r.getSerializedSize(i)-r.getSerializedSize(c);h<=0||r.matchesNormalizedStyleValues(c,t)&&h>o&&(o=h,s=c)}if(!s)return i;i=s}}static getNormalizedStyleValues(e){let t=r.applyStylesToHelper(e),i=new Map;for(let n of e)i.set(n[0],r.readStyleValue(t.style,n[0]));return i}static getCandidateCoverage(e,t,i,n){let s=r.applyStylesToHelper(new Map([[i,n]])),o=[];for(let a of e){let l=t.get(a[0]);l&&r.readStyleValue(s.style,a[0])===l&&o.push(a[0])}return o}static matchesNormalizedStyleValues(e,t){let i=r.applyStylesToHelper(e);for(let n of t)if(r.readStyleValue(i.style,n[0])!==n[1])return!1;return!0}static readStyleValue(e,t){return t.startsWith("--")||t.includes("-")?e.getPropertyValue(t).trim():String(e[t]??"").trim()}static getSerializedSize(e){let t=0;for(let i of e)t+=i[0].length+i[1].length+2;return t}static parseStyleDeclarationList(e){let t=new Map,i=0,n=null,s=0;for(let o=0;o<e.length;o++){let a=e[o];if(n){a===n&&e[o-1]!=="\\"&&(n=null);continue}if(a==='"'||a==="'"){n=a;continue}if(a==="("){s++;continue}if(a===")"&&s>0){s--;continue}a===";"&&s===0&&(r.addStyleDeclaration(t,e.substring(i,o)),i=o+1)}return r.addStyleDeclaration(t,e.substring(i)),t}static addStyleDeclaration(e,t){let i=t.trim();if(!i)return;let n=null,s=0;for(let o=0;o<i.length;o++){let a=i[o];if(n){a===n&&i[o-1]!=="\\"&&(n=null);continue}if(a==='"'||a==="'"){n=a;continue}if(a==="("){s++;continue}if(a===")"&&s>0){s--;continue}if(a===":"&&s===0){let l=i.substring(0,o).trim(),c=i.substring(o+1).trim();l&&e.set(l,c);return}}}static combineBorder(e){if(!r.checkIfStyleIsCombinable(e,"border-left-style")||!r.checkIfStyleIsCombinable(e,"border-right-style")||!r.checkIfStyleIsCombinable(e,"border-top-style")||!r.checkIfStyleIsCombinable(e,"border-bottom-style")||!r.checkIfStyleIsCombinable(e,"border-left-color")||!r.checkIfStyleIsCombinable(e,"border-right-color")||!r.checkIfStyleIsCombinable(e,"border-top-color")||!r.checkIfStyleIsCombinable(e,"border-bottom-color")||!r.checkIfStyleIsCombinable(e,"border-left-width")||!r.checkIfStyleIsCombinable(e,"border-right-width")||!r.checkIfStyleIsCombinable(e,"border-top-width")||!r.checkIfStyleIsCombinable(e,"border-bottom-width")||!r.checkIfStyleIsCombinable(e,"border-width")||!r.checkIfStyleIsCombinable(e,"border-style")||!r.checkIfStyleIsCombinable(e,"border-color")||!r.checkIfStyleIsCombinable(e,"border-top")||!r.checkIfStyleIsCombinable(e,"border-right")||!r.checkIfStyleIsCombinable(e,"border-left")||!r.checkIfStyleIsCombinable(e,"border-bottom")||!r.checkIfStyleIsCombinable(e,"border-width"))return;let t=r._helperElement,i=t.style.borderLeftStyle,n=t.style.borderLeftColor;if(i&&n&&t.style.borderRightStyle===i&&t.style.borderTopStyle===i&&t.style.borderBottomStyle===i&&t.style.borderRightColor===n&&t.style.borderTopColor===n&&t.style.borderBottomColor===n){let s=t.style.borderTopWidth,o=t.style.borderRightWidth,a=t.style.borderBottomWidth,l=t.style.borderLeftWidth;e.delete("border-left-style"),e.delete("border-right-style"),e.delete("border-top-style"),e.delete("border-bottom-style"),e.delete("border-left-color"),e.delete("border-right-color"),e.delete("border-top-color"),e.delete("border-bottom-color"),e.delete("border-left-width"),e.delete("border-right-width"),e.delete("border-top-width"),e.delete("border-bottom-width"),e.delete("border-width"),e.delete("border-style"),e.delete("border-color"),e.delete("border-top"),e.delete("border-right"),e.delete("border-left"),e.delete("border-bottom"),t.style.borderRightWidth==l&&t.style.borderTopWidth===l&&t.style.borderBottomWidth===l?e.set("border",l+" "+i+" "+n):(e.set("border",i+" "+n),s===a&&o===l?e.set("border-width",s+" "+o):e.set("border-width",s+" "+o+" "+a+" "+l))}t.style.borderImageSource==="initial"&&e.delete("border-image-source"),t.style.borderImageSlice==="initial"&&e.delete("border-image-slice"),t.style.borderImageWidth==="initial"&&e.delete("border-image-width"),t.style.borderImageOutset==="initial"&&e.delete("border-image-outset"),t.style.borderImageRepeat==="initial"&&e.delete("border-image-repeat")}static combineMargin(e){if(!r.checkIfStyleIsCombinable(e,"margin-top")||!r.checkIfStyleIsCombinable(e,"margin-right")||!r.checkIfStyleIsCombinable(e,"margin-bottom")||!r.checkIfStyleIsCombinable(e,"margin-left")||!r.checkIfStyleIsCombinable(e,"margin"))return;let t=r._helperElement;t.style.marginTop&&t.style.marginRight&&t.style.marginBottom&&t.style.marginLeft&&(e.delete("margin-top"),e.delete("margin-right"),e.delete("margin-bottom"),e.delete("margin-left"),t.style.marginTop==t.style.marginRight&&t.style.marginTop==t.style.marginBottom&&t.style.marginTop==t.style.marginLeft?e.set("margin",t.style.marginTop):e.set("margin",t.style.marginTop+" "+t.style.marginRight+" "+t.style.marginBottom+" "+t.style.marginLeft))}static combinePadding(e){if(!r.checkIfStyleIsCombinable(e,"padding-top")||!r.checkIfStyleIsCombinable(e,"padding-right")||!r.checkIfStyleIsCombinable(e,"padding-bottom")||!r.checkIfStyleIsCombinable(e,"padding-left")||!r.checkIfStyleIsCombinable(e,"padding"))return;let t=r._helperElement;t.style.paddingTop&&t.style.paddingRight&&t.style.paddingBottom&&t.style.paddingLeft&&(e.delete("padding-top"),e.delete("padding-right"),e.delete("padding-bottom"),e.delete("padding-left"),t.style.paddingTop==t.style.paddingRight&&t.style.paddingTop==t.style.paddingBottom&&t.style.paddingTop==t.style.paddingLeft?e.set("padding",t.style.paddingTop):e.set("padding",t.style.paddingTop+" "+t.style.paddingRight+" "+t.style.paddingBottom+" "+t.style.paddingLeft))}static combineInset(e){if(!r.checkIfStyleIsCombinable(e,"top")||!r.checkIfStyleIsCombinable(e,"right")||!r.checkIfStyleIsCombinable(e,"bottom")||!r.checkIfStyleIsCombinable(e,"left")||!r.checkIfStyleIsCombinable(e,"inset"))return;let t=r._helperElement;t.style.top&&t.style.right&&t.style.bottom&&t.style.left&&(e.delete("top"),e.delete("right"),e.delete("bottom"),e.delete("left"),e.set("inset",t.style.top+" "+t.style.right+" "+t.style.bottom+" "+t.style.left))}static combineBackground(e){if(!r.checkIfStyleIsCombinable(e,"background-image")||!r.checkIfStyleIsCombinable(e,"background-position")||!r.checkIfStyleIsCombinable(e,"background-position-x")||!r.checkIfStyleIsCombinable(e,"background-position-y")||!r.checkIfStyleIsCombinable(e,"background-size")||!r.checkIfStyleIsCombinable(e,"background-repeat")||!r.checkIfStyleIsCombinable(e,"background-repeat-x")||!r.checkIfStyleIsCombinable(e,"background-repeat-y")||!r.checkIfStyleIsCombinable(e,"background-attachment")||!r.checkIfStyleIsCombinable(e,"background-origin")||!r.checkIfStyleIsCombinable(e,"background-clip")||!r.checkIfStyleIsCombinable(e,"background-color")||!r.checkIfStyleIsCombinable(e,"background"))return;let t=r._helperElement;e.delete("background-image"),e.delete("background-position"),e.delete("background-position-x"),e.delete("background-position-y"),e.delete("background-size"),e.delete("background-repeat"),e.delete("background-repeat-x"),e.delete("background-repeat-y"),e.delete("background-attachment"),e.delete("background-origin"),e.delete("background-clip"),e.delete("background-color"),e.delete("background");let i="";t.style.backgroundImage&&t.style.backgroundImage!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundImage),t.style.backgroundPosition&&t.style.backgroundPosition!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundPosition),t.style.backgroundSize&&t.style.backgroundSize!=="initial"&&(i+=(i===""?"":" / ")+t.style.backgroundSize),t.style.backgroundRepeat&&t.style.backgroundRepeat!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundRepeat),t.style.backgroundAttachment&&t.style.backgroundAttachment!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundAttachment),t.style.backgroundOrigin&&t.style.backgroundOrigin!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundOrigin),t.style.backgroundClip&&t.style.backgroundClip!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundClip),t.style.backgroundColor&&t.style.backgroundColor!=="initial"&&(i+=(i===""?"":" ")+t.style.backgroundColor),i&&e.set("background",i)}static combineFont(e){if(!r.checkIfStyleIsCombinable(e,"font-style")||!r.checkIfStyleIsCombinable(e,"font-weight")||!r.checkIfStyleIsCombinable(e,"font-size")||!r.checkIfStyleIsCombinable(e,"line-height")||!r.checkIfStyleIsCombinable(e,"font-family")||!r.checkIfStyleIsCombinable(e,"font"))return;let t=r._helperElement;if(t.style.fontFamily){e.delete("font-style"),e.delete("font-weight"),e.delete("font-size"),e.delete("line-height"),e.delete("font-family"),e.delete("font");let i="";t.style.fontStyle&&(i+=(i===""?"":" ")+t.style.fontStyle),t.style.fontWeight&&(i+=(i===""?"":" ")+t.style.fontWeight),t.style.fontSize&&(i+=(i===""?"":" ")+t.style.fontSize),t.style.lineHeight&&(i+="/"+t.style.lineHeight),t.style.fontFamily&&(i+=(i===""?"":" ")+t.style.fontFamily),e.set("font",i)}}static checkIfStyleIsCombinable(e,t){if(e.has(t)){let i=e.get(t);return typeof i=="string"?!i.startsWith("var("):!1}return!0}}});var Po,rp=g(()=>{"use strict";ot();Eo();Ie();Et();Po=class{options;constructor(e){this.options=e??{},this.options.beautifyOutput??=!0,this.options.compressCssToShorthandProperties??=!0,this.options.writeDesignerProperties??=!0,this.options.parseJsonInAttributes??=!0,this.options.jsonWriteMode??="min"}writeAttributes(e,t,i=!1){if(t.hasAttributes)for(let n of t.attributes()){let s=e.position;if(e.write(" "),typeof n[1]=="string")if(n[1]==="")e.write(n[0]);else{if(this.options.parseJsonInAttributes&&(n[1].startsWith("{")&&!n[1].startsWith("{{")&&n[1].endsWith("}")||n[1].startsWith("[")&&!n[1].startsWith("[[")&&n[1].endsWith("]")))try{let a=JSON.parse(n[1]),l;this.options.jsonWriteMode=="beauty"?l=JSON.stringify(a,null,2):l=JSON.stringify(a);let c=ie.normalizeAttributeValue(l,!0);this._writeAttributeWithValue(e,t,n[0],c,"'",i);continue}catch{}let o=ie.normalizeAttributeValue(n[1]);if(o.indexOf(""")){let a=ie.normalizeAttributeValue(n[1],!0);a.length<o.length?this._writeAttributeWithValue(e,t,n[0],a,"'",i):this._writeAttributeWithValue(e,t,n[0],o,'"',i)}else this._writeAttributeWithValue(e,t,n[0],o,'"',i)}else n[1]||e.write(n[0]);i&&this._addAttributeSourcePart(t,n[0],{start:s+1,length:e.position-s-1})}}_writeAttributeWithValue(e,t,i,n,s,o){e.write(i+"="+s);let a=e.position;e.write(n);let l={start:a,length:e.position-a};if(e.write(s),!o)return;let c=t.instanceServiceContainer.designItemDocumentPositionService;c.addSourcePart({designItem:t,kind:"attribute-value",key:`attribute:${i}/value`,name:i,textRange:l});let h={designItem:t,sourceKind:"attribute",name:i,value:n,valueTextRange:l};for(let p of t.serviceContainer.sourceMapProviders)p.canMap(h)&&c.addSourceParts(p.map(h))}_addAttributeSourcePart(e,t,i){e.instanceServiceContainer.designItemDocumentPositionService.addSourcePart({designItem:e,kind:"attribute",key:`attribute:${t}`,name:t,textRange:i})}writeStyles(e,t){if(t.hasStyles){e.write(' style="');let i=[...t.styles()],n=i.some(o=>t.isStyleImportant(o[0])),s=i;this.options.compressCssToShorthandProperties&&!n&&(s=$i.combine(new Map(i)));for(let o of s)if(o[0]){let a=ie.normalizeAttributeValue(Ye(o[1],t.isStyleImportant(o[0])));o[0].startsWith("--")?e.write(o[0]+":"+a+";"):e.write(z.camelToDashCase(o[0])+":"+a+";")}e.write('"')}}}});var Io,sp=g(()=>{"use strict";ot();q();de();rp();Io=class extends Po{constructor(e){super(e)}_conditionalyWriteIndent(e,t,i){i||(t.element instanceof t.window.HTMLElement&&!si(t.element)||t.element.previousElementSibling instanceof t.window.HTMLElement&&!Ht(t.element.previousElementSibling)||t.element.previousElementSibling==null&&!this._isInlineElement(t.element.parentElement)&&(t.element.previousSibling==null||hr(t.element.previousSibling))||t.element instanceof t.window.SVGElement)&&e.writeIndent()}_conditionalyWriteIndentBefore(e,t,i){i||(t.element.previousElementSibling instanceof t.window.HTMLElement&&!Ht(t.element.previousElementSibling)||t.element.previousElementSibling==null&&!this._isInlineElement(t.element.parentElement)&&(t.element.previousSibling==null||hr(t.element.previousSibling))||t.element instanceof t.window.SVGElement)&&e.writeIndent()}_conditionalyWriteNewline(e,t,i){i||(t.element instanceof t.window.HTMLElement&&!si(t.element)||t.element.nextElementSibling instanceof t.window.HTMLElement&&!Ht(t.element.nextElementSibling)||t.element instanceof t.window.SVGElement)&&e.writeNewline()}write(e,t,i,n=!1){n&&t[0]?.instanceServiceContainer.designItemDocumentPositionService?.clearSourceParts();for(let s of t)this.internalWrite(e,s,n,!1)}internalWrite(e,t,i,n){let s=e.position,o=e.position,a=n||this._isInlineContainer(t);if(t.nodeType==k.TextNode)hr(t.element)&&(t.element.previousSibling instanceof t.window.HTMLElement&&!si(t.element.previousSibling)||t.element.nextSibling instanceof t.window.HTMLElement&&!Ht(t.element.nextSibling))||this.writeTextNode(e,t,!0,!0,a),o=e.position;else if(t.nodeType==k.Comment)this._conditionalyWriteIndent(e,t,a),s=e.position,e.write("<!--"+t.content+"-->"),o=e.position,this._conditionalyWriteNewline(e,t,a);else{this._conditionalyWriteIndentBefore(e,t,a),s=e.position,e.write("<"+t.name),this.writeAttributes(e,t,i),this.writeStyles(e,t),e.write(">");let l=!1;if(t.hasChildren){let c=t.children();if(l=t.childCount===1&&t.firstChild.nodeType===k.TextNode,l){let h=t.name=="script"||t.name=="style"||t.name=="pre";this.writeTextNode(e,t,!1,!h,a)}else{!a&&(t.element instanceof t.window.HTMLElement&&!si(t.element)||t.element instanceof t.window.SVGElement)&&(e.writeNewline(),e.levelRaise());for(let h of c)this.internalWrite(e,h,i,a),h.childCount===1&&h.firstChild.nodeType===k.TextNode&&(e.isLastCharNewline()||this._conditionalyWriteNewline(e,h,a));!a&&(t.element instanceof t.window.HTMLElement&&!si(t.element)||t.element instanceof t.window.SVGElement)&&(e.levelShrink(),e.isLastCharNewline()||e.writeNewline(),e.writeIndent())}}else t.hasContent&&e.write(ie.normalizeContentValue(t.content));o=e.position,ie.IsSelfClosingElement(t.name)||e.write("</"+t.name+">"),o=e.position,!a&&!e.isLastCharNewline()&&(!t.parent||!si(t.parent.element))&&this._conditionalyWriteNewline(e,t,a)}i&&t.instanceServiceContainer.designItemDocumentPositionService&&t.instanceServiceContainer.designItemDocumentPositionService.setPosition(t,{start:s,length:o-s})}writeTextNode(e,t,i,n=!0,s=!1){let o=e.position,a=e.position,l=ie.normalizeContentValue(t.content);s||this._hasInlineParent(t)?l=this._normalizeInlineTextContent(l):n&&(l=l.trim()),l&&(i&&this._conditionalyWriteIndent(e,t,s),e.write(l),i&&this._conditionalyWriteNewline(e,t,s)),a=e.position;for(let c of t.children())t.instanceServiceContainer.designItemDocumentPositionService.setPosition(c,{start:o,length:a-o})}_hasInlineParent(e){return e.parent?.element instanceof e.window.HTMLElement&&Ht(e.parent.element)}_normalizeInlineTextContent(e){if(!e?.trim())return"";let t=/^\s/.test(e),i=/\s$/.test(e),n=e.replaceAll(/[\t\r\n ]+/g," ").trim();return`${t?" ":""}${n}${i?" ":""}`}_isInlineContainer(e){return e.nodeType===k.Element&&e.element instanceof e.window.HTMLElement&&Ht(e.element)}_isInlineElement(e){return e instanceof HTMLElement&&Ht(e)}}});var Do,op=g(()=>{"use strict";oe();yt();Do=class{shouldProvideContextmenu(e,t,i,n){return i?.element instanceof SVGRectElement}provideContextMenuItems(e,t,i){return[{title:"convert to path",action:()=>{let n=i.element,s="";s+="M"+n.x.baseVal.value+" "+n.y.baseVal.value+"L"+(n.x.baseVal.value+n.width.baseVal.value)+" "+n.y.baseVal.value+"L"+(n.x.baseVal.value+n.width.baseVal.value)+" "+(n.y.baseVal.value+n.height.baseVal.value)+"L"+n.x.baseVal.value+" "+(n.y.baseVal.value+n.height.baseVal.value)+"Z";let o=document.createElementNS("http://www.w3.org/2000/svg","path");o.setAttribute("d",s),o.setAttribute("stroke",n.getAttribute("stroke")),o.setAttribute("fill",n.getAttribute("fill")),o.setAttribute("stroke-width",n.getAttribute("stroke-width"));let a=O.createDesignItemFromInstance(o,t.serviceContainer,t.instanceServiceContainer);t.instanceServiceContainer.undoService.execute(new Se(i.parent,i.childCount,a)),t.serviceContainer.deletionService.removeItems([i])}}]}}});var ko,ap=g(()=>{"use strict";Xe();ko=class{shouldProvideContextmenu(e,t,i,n){return i?.element instanceof SVGPathElement}provideContextMenuItems(e,t,i){let n=i.node.getPathData({normalize:!0}),s=[],o=n[n.length-1].type;return s.push({title:"-"}),o=="z"||o=="Z"?s.push({title:"open path ",action:()=>{n.splice(n.length-1,1),i.setAttribute("d",di(n))}}):s.push({title:"close path ",action:()=>{n.push({type:"Z"}),i.setAttribute("d",di(n))}}),s}}});var Te,Ao=g(()=>{"use strict";Te=class{shouldProvideContextmenu(e,t,i,n){return!0}provideContextMenuItems(e,t,i){return[{title:"-"}]}}});var To,Mo,lp=g(()=>{"use strict";he();To=10,Mo=class{shouldProvideContextmenu(e,t,i,n){return i!==null}provideContextMenuItems(e,t,i){return[{title:"zoom to",icon:`<img src="${E+"icons/zoomIn.svg"}">`,action:()=>{let n=t.getNormalizedElementCoordinates(i.element),s={x:n.x-To,y:n.y-To},o={x:n.x+n.width+To,y:n.y+n.height+To},a={x:s.x<o.x?s.x:o.x,y:s.y<o.y?s.y:o.y,width:Math.abs(s.x-o.x),height:Math.abs(s.y-o.y)},l=t.outerRect.width/a.width,c=t.outerRect.height/a.height,h=l>=c?c:l;t.zoomPoint({x:n.x+n.width/2,y:n.y+n.height/2},h)}}]}}});var Lo,cp=g(()=>{"use strict";Mt();q();he();Lo=class{shouldProvideContextmenu(e,t,i,n){return t.readOnly?!1:!i?.isRootItem&&i?.nodeType==k.Element}provideContextMenuItems(e,t,i){return[{title:"rotate right",icon:`<img src="${E+"icons/rotateRight.svg"}">`,action:()=>{t.executeCommand({type:A.rotateClockwise})},shortCut:"Ctrl + R"},{title:"rotate left",icon:`<img src="${E+"icons/rotateLeft.svg"}">`,action:()=>{t.executeCommand({type:A.rotateCounterClockwise})},shortCut:"Ctrl + Shift + R"}]}}});var Oo,hp=g(()=>{"use strict";q();Oo=class{shouldProvideContextmenu(e,t,i,n){return i?.hasChildren}provideContextMenuItems(e,t,i){return[{title:"select all Children",action:()=>{t.instanceServiceContainer.selectionService.setSelectedElements(Array.from(i.children()).filter(n=>n.nodeType==k.Element))}}]}}});import{BaseCustomWebComponentConstructorAppend as v_,css as __,html as x_}from"@node-projects/base-custom-webcomponent";var we,vt=g(()=>{"use strict";we=class extends v_{static style=__`div{width:24px;height:24px;display:flex;justify-content:center;align-items:center;background-color:inherit}div:hover{background-color:#a9a9a9}img{width:calc(100% - 4px);height:calc(100% - 4px);-webkit-user-drag:none}`;static template=x_`<div id="div"><img id="img"></div>`;tools;popup;currentToolOnButton;_img;_div;_longPress;constructor(e,t){super(),this.tools=t,this._img=this._getDomElement("img"),this._div=this._getDomElement("div"),this._div.onpointerdown=()=>{this.currentToolOnButton?(this.getRootNode().host.setTool(this.currentToolOnButton),setTimeout(()=>{e.clickOverlay.focus()},50),this.popup&&(this._longPress=setTimeout(()=>{this._longPress=null,this.getRootNode().host.showPopup(this)},200))):this.popup&&this.getRootNode().host.showPopup(this)},this._div.onpointerup=()=>{this._longPress&&(clearTimeout(this._longPress),this._longPress=null)},this.showTool(Object.getOwnPropertyNames(t)[0])}showTool(e){let t=this.tools[e];t&&(this._img.title=e,this._img.src=t.icon,this.currentToolOnButton=e)}setActiveTool(e){this.showTool(e),this.tools[e]?this._div.style.backgroundColor="lightgreen":this._div.style.backgroundColor=""}};customElements.define("node-projects-designer-toolbar-button",we)});import{BaseCustomWebComponentConstructorAppend as b_,css as w_}from"@node-projects/base-custom-webcomponent";var ti,Vn=g(()=>{"use strict";ti=class extends b_{static style=w_`.container{width:120px;min-height:100px;color:#fff;background-color:#404040;border:1px solid #000}header{text-align:center}.tool{height:32px;width:32px;background-color:#fff;background-size:65%;background-repeat:no-repeat;background-position:center center;flex-shrink:0;border-bottom:1px solid #000}.tools{display:flex;flex-wrap:wrap;margin-bottom:5px;gap:3px}`;constructor(){super();for(let e of[...this.shadowRoot.querySelectorAll("div.tool")]){let t=e;t.onclick=()=>this.getRootNode().host.setTool(t.dataset.commandParameter)}}}});import{html as S_}from"@node-projects/base-custom-webcomponent";var Rn,pp=g(()=>{"use strict";he();Vn();Rn=class extends ti{static template=S_`<div class="container"><header><h2 id="title" style="margin:0">Selection</h2></header><main id="content-area"><div class="tools"><div class="tool" data-command="setTool" data-command-parameter="Pointer" title="Pointer" style="background-image:url('${E}images/tools/PointerTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="Pan" title="Pan" style="background-image:url('${E}images/tools/PanTool.svg')"></div></div></main></div>`};customElements.define("node-projects-designer-pointer-tool-popup",Rn)});var No,dp=g(()=>{"use strict";vt();he();pp();No=class{provideButton(e){let t=new we(e,{Pointer:{icon:E+"images/tools/PointerTool.svg"}});return t.popup=Rn,t}}});var _t,up=g(()=>{"use strict";_t=class{constructor(e){this.distance=e}distance;provideButton(e){let t=document.createElement("div");return t.style.marginTop=this.distance+"px",t}}});var Vo,mp=g(()=>{"use strict";vt();he();Vo=class{provideButton(e){return new we(e,{Zoom:{icon:E+"images/tools/ZoomTool.svg"}})}}});import{html as C_,css as E_}from"@node-projects/base-custom-webcomponent";var zn,fp=g(()=>{"use strict";he();Vn();zn=class extends ti{designerCanvas;static style=[super.style,E_`.container{width:220px;min-height:300px}.inputs{display:grid;grid-template-columns:1fr 1fr;margin:5px;align-items:center}`];static template=C_`<div class="container"><header><h2 id="title" style="margin:0">Draw</h2></header><main id="content-area"><div class="tools"><div class="tool" data-command="setTool" data-command-parameter="DrawLine" title="Draw Line" style="background-image:url('${E}images/tools/DrawLineTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="DrawPath" title="Pointer Tool" style="background-image:url('${E}images/tools/DrawPathTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="DrawRect" title="Draw Rectangle" style="background-image:url('${E}images/tools/DrawRectTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="DrawEllipsis" title="Draw Ellipsis" style="background-image:url('${E}images/tools/DrawEllipTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="PickColor" title="Pick Color" style="background-image:url('${E}images/tools/ColorPickerTool.svg')"></div></div><div class="inputs"><text class="text">Stroke Color</text>[[this.getEditor('setStrokeColor', 'color', {}, this.designerCanvas.serviceContainer.globalContext.strokeColor)]]<text class="text">Fill Brush</text>[[this.getEditor('setFillBrush', 'color', {}, this.designerCanvas.serviceContainer.globalContext.fillBrush)]]<text class="text">Stroke Thickness</text>[[this.getEditor('setStrokeThickness', 'range', { min: 1, max: 20, step: 1 }, this.designerCanvas.serviceContainer.globalContext.strokeThickness)]]</div></main></div>`;constructor(e){super(),this.designerCanvas=e}ready(){this._bindingsParse(),this.designerCanvas.serviceContainer.globalContext.strokeColor}getEditor(e,t,i,n){let s=this.designerCanvas.serviceContainer.forSomeServicesTillResult("editorTypeService",o=>o.getEditor(t,{changedCallback:a=>this.designerCanvas.executeCommand({type:e,parameter:a}),...i}));return s.setValue(n),s.element}};customElements.define("node-projects-designer-draw-tool-popup",zn)});var Ro,gp=g(()=>{"use strict";vt();he();fp();Ro=class{provideButton(e){if(e.readOnly)return null;let t=new we(e,{DrawLine:{icon:E+"images/tools/DrawLineTool.svg"},DrawPath:{icon:E+"images/tools/DrawPathTool.svg"},DrawRect:{icon:E+"images/tools/DrawRectTool.svg"},DrawEllipsis:{icon:E+"images/tools/DrawEllipTool.svg"},PickColor:{icon:E+"images/tools/ColorPickerTool.svg"}});return t.popup=zn,t}}});var zo,yp=g(()=>{"use strict";vt();he();zo=class{provideButton(e){return e.readOnly?null:new we(e,{Text:{icon:E+"images/tools/TextTool.svg"}})}}});import{html as P_}from"@node-projects/base-custom-webcomponent";var Fn,vp=g(()=>{"use strict";he();Vn();Fn=class extends ti{static template=P_`<div class="container"><header><h2 id="title" style="margin:0">Selection</h2></header><main id="content-area"><div class="tools"><div class="tool" data-command="setTool" data-command-parameter="RectangleSelector" title="Rectangle Selector" style="background-image:url('${E}images/tools/SelectRectTool.svg')"></div><div class="tool" data-command="setTool" data-command-parameter="MagicWandSelector" title="Magic Wand Selector" style="background-image:url('${E}images/tools/MagicWandTool.svg')"></div></div></main></div>`};customElements.define("node-projects-designer-selection-tool-popup",Fn)});var Fo,_p=g(()=>{"use strict";vt();he();vp();Fo=class{provideButton(e){let t=new we(e,{RectangleSelector:{icon:E+"images/tools/SelectRectTool.svg"},MagicWandSelector:{icon:E+"images/tools/MagicWandTool.svg"}});return t.popup=Fn,t}}});var Bo,xp=g(()=>{"use strict";le();se();Bo=class extends F{_rect;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];this._rect=this._drawTransformedRect(e,"svg-rect-enter-container",this._rect,T.Background)}dispose(){this._removeAllOverlays()}}});import{css as I_}from"@node-projects/base-custom-webcomponent";var Bn,bp=g(()=>{"use strict";xp();Bn=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new Bo(e,t,i)}static style=I_`.svg-rect-enter-container{stroke:none;fill:#aa00ff2e}`}});var Ho,wp=g(()=>{"use strict";Re();ve();Ho=class extends re{name="attached";getRefreshMode(e){return Y.full}isHandledElement(e){return e.serviceContainer.forSomeServicesTillResult("attachedPropertyService",t=>t.isHandledElement(e))}async getProperties(e){let t=[];if(e.serviceContainer.attachedPropertyServices)for(let i of e.serviceContainer.attachedPropertyServices)i.isHandledElement(e)&&t.push(...await i.getProperties(e));return t}}});var Ki,Sp=g(()=>{"use strict";ve();ut();rt();fe();Ie();Re();Ki=class extends re{name="attributes";getRefreshMode(e){return Y.fullOnValueChange}isHandledElement(e){return!e.isRootItem}async getProperty(e,t){return{name:t,type:"string",service:this,propertyType:_.attribute}}async getProperties(e){if(e){let t=[];for(let i of e.attributes())t.push({name:i[0],renamable:!0,type:"string",service:this,propertyType:_.attribute});return t.push({name:"",type:"addNew",service:this,propertyType:_.complex}),t}return null}async setValue(e,t,i){let n=e[0].openGroup("properties changed");for(let s of e)s.setAttribute(t.name,i);n.commit()}getPropertyTarget(e,t){return R.attribute}clearValue(e,t){for(let i of e)i.removeAttribute(t.name),i.serviceContainer.forSomeServicesTillResult("bindingService",n=>n.clearBinding(i,t.name,this.getPropertyTarget(i,t)))}isSet(e,t){let i=!0,n=!1;if(e!=null&&e.length!==0){if(e.length==1&&typeof e[0].getAttribute(t.name)=="object")return W.bound;let s=z.dashToCamelCase(t.name),o=t.name;e.forEach(l=>{let c=l.hasAttribute(o);i=i&&c,n=n||c});let a=re.getOrBuildCachedBindings(e[0]);if(a&&a.find(l=>l.target==R.attribute&&l.targetName==s))return W.bound}else return W.none;return i?W.all:n?W.some:W.none}getValue(e,t){if(e!=null&&e.length!==0){let i=t.name,n=e[0].getAttribute(i);return typeof n=="object"?n.rawValue:n}return null}getBinding(e,t){return re.getOrBuildCachedBindings(e[0]).find(n=>(n.target==R.property||n.target==R.explicitProperty||n.target==R.attribute)&&n.targetName==t.name)}getUnsetValue(e,t){return t.defaultValue}getContextMenu(e,t){let i=super.getContextMenu(e,t),n=this._getAttributeSourcePart(e,t);return n&&i.splice(1,0,{title:"jump to definition",action:()=>{let s=e[0].instanceServiceContainer.selectionService;s.primarySelection!==e[0]?s.setSelectedElements([e[0]],null,n):s.setSelectedPart(n)}}),i}_getAttributeSourcePart(e,t){return e?.length!==1||!t?.name?null:e[0].instanceServiceContainer.designItemDocumentPositionService?.getSourceParts(e[0]).find(i=>i.kind==="attribute"&&i.key===`attribute:${t.name}`)}}});var Go,Cp=g(()=>{"use strict";Me();gi();Go=class extends ae{_root;constructor(e){super(e),this._root=document.createElement("div"),this._root.style.display="grid",this._root.style.padding="4px 0px",this._root.style.boxSizing="border-box",this._root.style.minHeight="50px",this.element=this._root}refreshValue(e,t){if(this._root.innerHTML="",this.designItems!=null&&this.designItems.length){let i=this.designItems[0].element.parentElement;if(i){let n=getComputedStyle(i),s=Wi(this.designItems[0].element),o=getComputedStyle(this.designItems[0].element),a=n.gridTemplateColumns.split(" ").length,l=n.gridTemplateRows.split(" ").length;this._root.style.gridTemplateColumns="repeat("+a+", 1fr)",this._root.style.gridTemplateRows="repeat("+l+", 1fr)";let c=parseInt(o.gridRowStart),h=c+s.rowSpan,p=parseInt(o.gridColumnStart),d=p+s.colSpan;for(let u=1;u<=l;u++)for(let m=1;m<=a;m++){let f=document.createElement("button");f.style.minHeight="10px",f.onclick=()=>{let y=Wi(this.designItems[0].element),v=this.designItems[0].openGroup("Change grid row/column");this.designItems[0].setStyle("grid-row",u+" / "+(u+y.rowSpan)),this.designItems[0].setStyle("grid-column",m+" / "+(m+y.colSpan)),v.commit()},u>=c&&u<h&&m>=p&&m<d&&(f.style.backgroundColor="coral"),this._root.appendChild(f)}}}}}});var Wo,Ep=g(()=>{"use strict";Me();Ml();fe();Wo=class extends ae{constructor(e){super(e);let t=new ln;t.property=e.name,t.style.height="auto",t.style.border="none",t.style.margin="2px 0",t.addEventListener("value-changed",i=>this._metricValueChanged(i.detail)),this.element=t}refreshValue(e,t){this.element.refresh(this.designItems?.[0]?.element)}async _metricValueChanged(e){if(!e?.property||!this.designItems?.length||this.disableChangeNotification)return;let t={...this.property,name:e.property,propertyName:e.property,propertyType:_.cssValue,type:"css-length"},i=e.newValue==null||e.newValue===""||e.newValue===this.element.unsetValue?null:e.newValue;i==null?this.property.service.clearValue(this.designItems,t,"value"):await this.property.service.setValue(this.designItems,t,i),this.designItems[0].instanceServiceContainer?.designerCanvas?.extensionManager?.refreshAllExtensions(this.designItems)}}});var jo,Fm=g(()=>{jo={accentColor:{type:"color"},additiveSymbols:{},alignContent:{type:"list",values:["start","end","flex-start","flex-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},alignItems:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},alignSelf:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},alignmentBaseline:{},all:{},animation:{},animationDelay:{type:"time"},animationDirection:{},animationDuration:{type:"time"},animationFillMode:{},animationIterationCount:{},animationName:{},animationPlayState:{},animationTimingFunction:{},appRegion:{},appearance:{},ascentOverride:{},aspectRatio:{},backdropFilter:{},backfaceVisibility:{},background:{},backgroundAttachment:{},backgroundBlendMode:{},backgroundClip:{},backgroundColor:{type:"color"},backgroundImage:{},backgroundOrigin:{},backgroundPosition:{},backgroundPositionX:{},backgroundPositionY:{},backgroundRepeat:{},backgroundRepeatX:{},backgroundRepeatY:{},backgroundSize:{},basePalette:{},baselineShift:{},blockSize:{type:"length"},border:{},borderBlock:{},borderBlockColor:{type:"color"},borderBlockEnd:{},borderBlockEndColor:{type:"color"},borderBlockEndStyle:{},borderBlockEndWidth:{},borderBlockStart:{},borderBlockStartColor:{type:"color"},borderBlockStartStyle:{},borderBlockStartWidth:{},borderBlockStyle:{},borderBlockWidth:{},borderBottom:{},borderBottomColor:{type:"color"},borderBottomLeftRadius:{},borderBottomRightRadius:{},borderBottomStyle:{},borderBottomWidth:{},borderCollapse:{},borderColor:{type:"color"},borderEndEndRadius:{},borderEndStartRadius:{},borderImage:{},borderImageOutset:{},borderImageRepeat:{},borderImageSlice:{},borderImageSource:{},borderImageWidth:{},borderInline:{},borderInlineColor:{type:"color"},borderInlineEnd:{},borderInlineEndColor:{type:"color"},borderInlineEndStyle:{},borderInlineEndWidth:{},borderInlineStart:{},borderInlineStartColor:{type:"color"},borderInlineStartStyle:{},borderInlineStartWidth:{},borderInlineStyle:{},borderInlineWidth:{},borderLeft:{},borderLeftColor:{type:"color"},borderLeftStyle:{},borderLeftWidth:{},borderRadius:{},borderRight:{},borderRightColor:{type:"color"},borderRightStyle:{},borderRightWidth:{},borderSpacing:{},borderStartEndRadius:{},borderStartStartRadius:{},borderStyle:{},borderTop:{},borderTopColor:{type:"color"},borderTopLeftRadius:{},borderTopRightRadius:{},borderTopStyle:{},borderTopWidth:{},borderWidth:{type:"length",values:["medium","thin","thick"]},bottom:{type:"length"},boxShadow:{},boxSizing:{type:"list",values:["border-box","content-box"]},breakAfter:{},breakBefore:{},breakInside:{},bufferedRendering:{},captionSide:{},caretColor:{type:"color"},clear:{},clip:{},clipPath:{},clipRule:{},color:{type:"color"},colorInterpolation:{},colorInterpolationFilters:{},colorRendering:{},colorScheme:{},columnCount:{},columnFill:{},columnGap:{type:"length"},columnRule:{},columnRuleColor:{type:"color"},columnRuleStyle:{},columnRuleWidth:{},columnSpan:{},columnWidth:{},columns:{},contain:{},containIntrinsicBlockSize:{},containIntrinsicHeight:{},containIntrinsicInlineSize:{},containIntrinsicSize:{},containIntrinsicWidth:{},container:{},containerName:{},containerType:{},content:{},contentVisibility:{},counterIncrement:{},counterReset:{},counterSet:{},cursor:{},cx:{},cy:{},d:{},descentOverride:{},direction:{},display:{type:"list",values:["block","inline","inline-block","flex","inline-flex","contents","grid","inline-grid","inline-table","list-item","run-in","table","table-caption","table-column-group","table-header-group","table-footer-group","tabl-row-group","table-cell","table-column","table-row","inherit","initial","none"]},dominantBaseline:{},emptyCells:{},fallback:{},fill:{type:"color"},fillOpacity:{},fillRule:{},filter:{},flex:{},flexBasis:{type:"length"},flexDirection:{type:"list",values:["row","column","row-reverse","column-reverse"]},flexFlow:{},flexGrow:{type:"number"},flexShrink:{type:"number"},flexWrap:{type:"list",values:["nowrap","wrap","wrap-reverse"]},fieldSizing:{},float:{type:"list",values:["none","left","right","inline-start","inline-end"]},floodColor:{type:"color"},floodOpacity:{},font:{},fontDisplay:{},fontFamily:{type:"font"},fontFeatureSettings:{},fontKerning:{},fontOpticalSizing:{},fontPalette:{},fontSize:{type:"length"},fontSizeAdjust:{},fontStretch:{},fontStyle:{},fontSynthesis:{},fontSynthesisSmallCaps:{},fontSynthesisStyle:{},fontSynthesisWeight:{},fontVariant:{},fontVariantCaps:{},fontVariantEastAsian:{},fontVariantLigatures:{},fontVariantNumeric:{},fontVariationSettings:{},fontWeight:{},forcedColorAdjust:{},gap:{type:"length"},grid:{},gridArea:{},gridAutoColumns:{},gridAutoFlow:{},gridAutoRows:{},gridColumn:{},gridColumnEnd:{},gridColumnGap:{type:"length"},gridColumnStart:{},gridGap:{type:"length"},gridRow:{},gridRowEnd:{},gridRowGap:{type:"length"},gridRowStart:{},gridTemplate:{},gridTemplateAreas:{},gridTemplateColumns:{},gridTemplateRows:{},height:{type:"length"},hyphenateCharacter:{},hyphens:{},imageOrientation:{},imageRendering:{},imageResolution:{type:"resolution"},inherits:{},initialValue:{},inlineSize:{type:"length"},inset:{},insetBlock:{},insetBlockEnd:{},insetBlockStart:{},insetInline:{},insetInlineEnd:{},insetInlineStart:{},isolation:{},justifyContent:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},justifyItems:{type:"list",values:["start","end","flex-start","flex-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},justifySelf:{type:"list",values:["start","end","flex-start","flex-end","self-start","self-end","center","normal","baseline","first baseline","last baseline","space-between","space-around","space-evenly","stretch","safe","unsafe"]},left:{type:"length"},letterSpacing:{type:"length"},lightingColor:{type:"color"},lineBreak:{},lineGapOverride:{},lineHeight:{type:"length"},listStyle:{},listStyleImage:{},listStylePosition:{},listStyleType:{},margin:{},marginBlock:{},marginBlockEnd:{type:"length"},marginBlockStart:{type:"length"},marginBottom:{type:"length"},marginInline:{},marginInlineEnd:{type:"length"},marginInlineStart:{type:"length"},marginLeft:{type:"length"},marginRight:{type:"length"},marginTop:{type:"length"},marker:{},markerEnd:{},markerMid:{},markerStart:{},mask:{},maskType:{},maxBlockSize:{type:"length"},maxHeight:{type:"length"},maxInlineSize:{type:"length"},maxWidth:{type:"length"},minBlockSize:{type:"length"},minHeight:{type:"length"},minInlineSize:{type:"length"},minWidth:{type:"length"},mixBlendMode:{},negative:{},objectFit:{},objectPosition:{type:"position"},objectViewBox:{},offset:{},offsetDistance:{},offsetPath:{},offsetRotate:{type:"angle"},opacity:{type:"number"},order:{},orphans:{},outline:{},outlineColor:{type:"color"},outlineOffset:{type:"length"},outlineStyle:{},outlineWidth:{type:"length",values:["medium","thin","thick"]},overflow:{type:"list",values:["visible","hidden","clip","scroll","auto"]},overflowAnchor:{},overflowClipMargin:{},overflowWrap:{},overflowX:{type:"list",values:["visible","hidden","clip","scroll","auto"]},overflowY:{type:"list",values:["visible","hidden","clip","scroll","auto"]},overrideColors:{},overscrollBehavior:{},overscrollBehaviorBlock:{},overscrollBehaviorInline:{},overscrollBehaviorX:{},overscrollBehaviorY:{},pad:{},padding:{},paddingBlock:{},paddingBlockEnd:{},paddingBlockStart:{},paddingBottom:{},paddingInline:{},paddingInlineEnd:{},paddingInlineStart:{},paddingLeft:{},paddingRight:{},paddingTop:{},page:{},pageBreakAfter:{},pageBreakBefore:{},pageBreakInside:{},pageOrientation:{},paintOrder:{},perspective:{type:"length"},perspectiveOrigin:{},placeContent:{},placeItems:{},placeSelf:{},pointerEvents:{},position:{type:"list",values:["static","relative","absolute","fixed","sticky"]},prefix:{},quotes:{},r:{},range:{},resize:{},right:{type:"length"},rotate:{type:"angle"},rowGap:{type:"length"},rubyAlign:{},rubyPosition:{},rx:{},ry:{},scale:{type:"scale"},scrollbarColor:{},scrollbarGutter:{type:"list",values:["auto","stable","stable both-edges"]},scrollbarWidth:{},scrollBehavior:{},scrollMargin:{},scrollMarginBlock:{},scrollMarginBlockEnd:{},scrollMarginBlockStart:{},scrollMarginBottom:{},scrollMarginInline:{},scrollMarginInlineEnd:{},scrollMarginInlineStart:{},scrollMarginLeft:{},scrollMarginRight:{},scrollMarginTop:{},scrollPadding:{},scrollPaddingBlock:{},scrollPaddingBlockEnd:{},scrollPaddingBlockStart:{},scrollPaddingBottom:{},scrollPaddingInline:{},scrollPaddingInlineEnd:{},scrollPaddingInlineStart:{},scrollPaddingLeft:{},scrollPaddingRight:{},scrollPaddingTop:{},scrollSnapAlign:{},scrollSnapStop:{},scrollSnapType:{},shapeImageThreshold:{},shapeMargin:{},shapeOutside:{},shapeRendering:{type:"list",values:["auto","optimizeSpeed","crispEdges","geometricPrecision"]},size:{},sizeAdjust:{},speak:{},speakAs:{},src:{},stopColor:{type:"color"},stopOpacity:{},stroke:{type:"color"},strokeDasharray:{},strokeDashoffset:{},strokeLinecap:{},strokeLinejoin:{},strokeMiterlimit:{},strokeOpacity:{},strokeWidth:{type:"number"},suffix:{},symbols:{},syntax:{},system:{},tabSize:{},tableLayout:{},textAlign:{type:"list",values:["start","end","left","right","center","justify","justify-all","match-parent"]},textAlignLast:{},textAnchor:{},textCombineUpright:{},textDecoration:{},textDecorationColor:{type:"color"},textDecorationLine:{},textDecorationSkipInk:{},textDecorationStyle:{},textDecorationThickness:{},textEmphasis:{},textEmphasisColor:{type:"color"},textEmphasisPosition:{},textEmphasisStyle:{},textIndent:{type:"length"},textOrientation:{},textOverflow:{},textRendering:{},textShadow:{},textSizeAdjust:{},textTransform:{},textUnderlineOffset:{},textUnderlinePosition:{},textWrap:{},textWrapMode:{type:"list",values:["wrap","nowrap"]},textWrapStyle:{type:"list",values:["auto","balance","pretty","stable"]},top:{type:"length"},touchAction:{},transform:{},transformBox:{},transformOrigin:{},transformStyle:{},transition:{},transitionDelay:{type:"time"},transitionBehavior:{},transitionDuration:{type:"time"},transitionProperty:{},transitionTimingFunction:{},translate:{},unicodeBidi:{},unicodeRange:{},userSelect:{},vectorEffect:{},verticalAlign:{},visibility:{},whiteSpace:{},widows:{},width:{type:"length"},willChange:{},wordBreak:{},wordSpacing:{type:"length"},wordWrap:{},writingMode:{},x:{},y:{},zIndex:{},zoom:{type:"scale"}}});var Qi,Yo=g(()=>{"use strict";Ai();ve();Ie();Br();Et();Qi=class extends et{_enrichCssProperty(e){return Gu(e)}getRefreshMode(e){return Y.none}async previewValue(e,t,i){let n=t.propertyName??t.name;n.startsWith("--")||(n=z.camelToDashCase(n));let s=typeof i=="string"?Gt(i):{value:i,important:!1};for(let o of e)o.element.style.setProperty(n,s.value,s.important?"important":"")}async removePreviewValue(e,t){let i=t.propertyName??t.name;i.startsWith("--")||(i=z.camelToDashCase(i));for(let n of e)n.hasStyle(i)?n.element.style.setProperty(i,n.getStyle(i),n.isStyleImportant(i)?"important":""):n.element.style.setProperty(i,"")}constructor(){super(!1)}}});var He,Uo=g(()=>{"use strict";rt();fe();ve();Ie();Cp();Ep();Fm();Yo();He=class extends Qi{getRefreshMode(e){return Y.none}layout={common:["display","color","background-color","box-sizing","border","box-shadow","opacity","position","align-content"],font:["font-family","font-size","font-weight"],layout:["inset","margin","border","padding","overflow","metrics"]};grid=["display","position","grid-template-columns","grid-template-rows","gap","column-gap","row-gap","align-content","justify-content","align-items","justify-items"];gridChild=["grid-row","grid-column","assigned-row-column","align-self","justify-self"];flex=["display","position","flex-direction","flex-wrap","align-content","justify-content","align-items","gap"];flexChild=["align-self","justify-self"];svg=["fill","fill-rule","fill-opacity","stroke","stroke-width","stroke-dasharray","stroke-dashoffset","stroke-opacity"];layoutSvgChild={common:["display","fill","fill-rule","fill-opacity","stroke","stroke-width","stroke-dasharray","stroke-dashoffset","stroke-opacity"]};constructor(e){super(),this.name=e}isHandledElement(e){return!0}async getProperty(e,t){return this._getPropertyDef(t)}async getProperties(e){let t=this[this.name];if(Array.isArray(t))return t.map(n=>this._getPropertyDef(n));{let i=[];for(let n in t){let s={name:n,properties:t[n].map(o=>this._getPropertyDef(o))};i.push(s)}return i}}getPropertyNameSuggestions(e){return Object.keys(jo).map(t=>z.camelToDashCase(t))}_getPropertyType(e){let t=jo[e]?.type;return t?"css-"+t:"string"}_getPropertyValues(e){return jo[e]?.values}_getPropertyDef(e){let t=z.dashToCamelCase(e);switch(t){case"assignedRowColumn":return{name:e,service:this,propertyType:_.complex,createEditor:i=>new Go(i)};case"metrics":return{name:e,service:this,propertyType:_.complex,hideLabel:!0,createEditor:i=>new Wo(i)};default:return this._enrichCssProperty({name:e,type:this._getPropertyType(t),values:this._getPropertyValues(t),service:this,propertyType:_.cssValue})}}getPropertyTarget(e,t){return R.css}}});var k_,_i,Pp=g(()=>{"use strict";fe();ve();ut();q();rt();Ie();Re();Uo();Et();k_="<local>",_i=class extends He{getRefreshMode(e){return Y.fullOnValueChange}constructor(){super(null),this.name="styles"}isHandledElement(e){return!0}async getProperty(e,t){let i=z.dashToCamelCase(t);return this._enrichCssProperty({name:t,type:this._getPropertyType(i),values:this._getPropertyValues(i),service:this,propertyType:_.cssValue})}async getProperties(e){if(!e||e.nodeType!=k.Element)return[];let t=e.getAllStyles().reverse().sort((o,a)=>o.specificity==null?-1:a.specificity==null?1:o.specificity.A>a.specificity.A||o.specificity.A===a.specificity.A&&o.specificity.B>a.specificity.B||o.specificity.A===a.specificity.A&&o.specificity.B===a.specificity.B&&o.specificity.C>a.specificity.C?-1:o.specificity.A===a.specificity.A&&o.specificity.B===a.specificity.B&&o.specificity.C===a.specificity.C?0:1),i=re.getOrBuildCachedBindings(e),n=t.find(o=>o.selector===null);for(let o of i)o.target===R.css&&(n.declarations.find(a=>a.name==o.targetName)||n.declarations.push({name:o.targetName,value:null,important:!1,parent:null}));return t.map(o=>({name:(o.selector??k_)+(o.specificity?" ("+o.specificity.A+"-"+o.specificity.B+"-"+o.specificity.C+")":""),description:o.stylesheetName??"",properties:[...o.declarations.map(a=>{let l=z.dashToCamelCase(a.name);return this._enrichCssProperty({name:a.name,renamable:!0,type:this._getPropertyType(l),values:this._getPropertyValues(l),service:this,propertyType:_.cssValue,styleRule:o,styleDeclaration:a})}),{name:"",type:"addNew",service:this,propertyType:_.complex,styleRule:o}]}))}async setValue(e,t,i){let n=typeof i=="string"?Gt(i):{value:i,important:!1};if(t.styleRule?.selector!==null&&t.styleDeclaration){e[0].instanceServiceContainer.stylesheetService.updateDeclarationValue(t.styleDeclaration,n.value,n.important),this._notifyChangedProperty(e[0],t,i);return}if(t.styleRule?.selector!==null&&!t.styleDeclaration){e[0].instanceServiceContainer.stylesheetService.insertDeclarationIntoRule(t.styleRule,t.name,n.value,n.important),this._notifyChangedProperty(e[0],t,i);return}for(let s of e)s.setStyle(t.name,n.value,n.important),s.element.setAttribute("style",s.element.getAttribute("style"))}clearValue(e,t,i){if(t.styleRule?.selector!==null&&t.styleDeclaration){e[0].instanceServiceContainer.stylesheetService.removeDeclarationFromRule(t.styleRule,t.styleDeclaration.name);return}super.clearValue(e,t,i)}getValue(e,t){return t.styleRule?.selector&&t.styleDeclaration?Ye(t.styleDeclaration.value,t.styleDeclaration.important):super.getValue(e,t)}getUnsetValue(e,t){return t.styleRule?.selector&&t.styleDeclaration?Ye(t.styleDeclaration.value,t.styleDeclaration.important):super.getUnsetValue(e,t)}isSet(e,t){return t.styleRule?.selector&&t.styleDeclaration?e[0].hasStyle(t.name)?W.none:W.fromStylesheet:super.isSet(e,t)}getPropertyTarget(e,t){return t.name.startsWith("--")?R.cssvar:R.css}}});var xi,Ip=g(()=>{"use strict";fe();ve();ut();rt();Yo();Et();xi=class extends Qi{removeInheritedCustomProperties;constructor(e=!0){super(),this.name="customProperties",this.removeInheritedCustomProperties=e}getRefreshMode(e){return Y.fullOnValueChange}isHandledElement(e){return!0}async getProperty(e,t){return this._enrichCssProperty({name:t,type:"string",service:this,propertyType:_.cssValue})}async getProperties(e){if(e.nodeType!=Node.ELEMENT_NODE)return[];if(e?.element?.computedStyleMap){let s=Array.from(e.instanceServiceContainer.designerCanvas.computedStyleMap()).map(l=>l[0]).filter(l=>l.startsWith("--")),o=Array.from(e.element.computedStyleMap()).map(l=>l[0]).filter(l=>l.startsWith("--"));return this.removeInheritedCustomProperties&&(o=o.filter(l=>!s.includes(l))),o.map(l=>({name:l,service:this,propertyType:_.cssValue})).map(l=>this._enrichCssProperty(l))}let t=Array.from(getComputedStyle(e.instanceServiceContainer.designerCanvas)).map(s=>s[0]).filter(s=>s.startsWith("--")),i=Array.from(getComputedStyle(e.element)).map(s=>s[0]).filter(s=>s.startsWith("--"));return this.removeInheritedCustomProperties&&(i=i.filter(s=>!t.includes(s))),i.map(s=>({name:s,service:this,propertyType:_.cssValue})).map(s=>this._enrichCssProperty(s))}clearValue(e,t,i){super.clearValue(e,t,i)}getValue(e,t){let i=e[0].getStyle(t.name);return i?Ye(i,e[0].isStyleImportant(t.name)):getComputedStyle(e[0].element).getPropertyValue(t.name)}getUnsetValue(e,t){return e?.[0].element?.computedStyleMap?e[0].element.computedStyleMap().get(t.name)?.[0]:getComputedStyle(e[0].element).getPropertyValue(t.name)}isSet(e,t){return super.isSet(e,t)==W.bound?W.bound:e[0].hasStyle(t.name)?W.all:W.none}getPropertyTarget(e,t){return R.cssvar}}});var Xo,Dp=g(()=>{"use strict";q();wp();Sp();Ai();Pp();Ip();Uo();Xo=class{_attachedPropertiesService=new Ho;_rootPgList=[{name:"styles",propertiesService:new _i},{name:"css vars",propertiesService:new xi},{name:"layout",propertiesService:new He("layout")}];_pgList=[{name:"properties",propertiesService:null},{name:"attached",propertiesService:this._attachedPropertiesService},{name:"attributes",propertiesService:new Ki},{name:"common",propertiesService:new et},{name:"styles",propertiesService:new _i},{name:"css vars",propertiesService:new xi},{name:"layout",propertiesService:new He("layout")}];_svgPgList=[{name:"properties",propertiesService:null},{name:"attached",propertiesService:this._attachedPropertiesService},{name:"attributes",propertiesService:new Ki},{name:"common",propertiesService:new et},{name:"styles",propertiesService:new _i},{name:"css vars",propertiesService:new xi},{name:"layout",propertiesService:new He("layout")},{name:"svg",propertiesService:new He("svg")}];_svgChildPgList=[{name:"properties",propertiesService:null},{name:"attached",propertiesService:this._attachedPropertiesService},{name:"attributes",propertiesService:new Ki},{name:"common",propertiesService:new et},{name:"styles",propertiesService:new _i},{name:"css vars",propertiesService:new xi},{name:"layout",propertiesService:new He("layoutSvgChild")}];_gridChild=[{name:"gridChild",propertiesService:new He("gridChild")}];_grid=[{name:"grid",propertiesService:new He("grid")}];_flexChild=[{name:"flexChild",propertiesService:new He("flexChild")}];_flex=[{name:"flex",propertiesService:new He("flex")}];getPropertygroups(e){if(e==null||e.length==0)return[];if(e[0].nodeType==k.TextNode||e[0].nodeType==k.Comment)return[];if(e[0].isRootItem){let n=e[0].getComputedStyle(),s=this._rootPgList;return n.display.includes("grid")?s=[...s,...this._grid]:n.display.includes("flex")&&(s=[...s,...this._flex]),s}this._svgChildPgList[0].propertiesService=this._svgPgList[0].propertiesService=this._pgList[0].propertiesService=e[0].serviceContainer.getLastServiceWhere("propertyService",n=>n.isHandledElement(e[0]));let t=this._pgList;e[0].element instanceof e[0].window.SVGElement&&(e[0].element instanceof e[0].window.SVGSVGElement?t=this._svgPgList:t=this._svgChildPgList);let i=e[0].getComputedStyle();if(i.display.includes("grid")?t=[...t,...this._grid]:i.display.includes("flex")&&(t=[...t,...this._flex]),e[0].parent){let n=e[0].parent.getComputedStyle();n.display.includes("grid")?t=[...t,...this._gridChild]:n.display.includes("flex")&&(t=[...t,...this._flexChild])}return t}}});var $o,kp=g(()=>{"use strict";le();$o=class extends F{_rect;constructor(e,t,i){super(e,t,i)}extend(){this.refresh()}refresh(){let e=this.designerCanvas.getNormalizedElementCoordinates(this.extendedItem.element),t=getComputedStyle(this.extendedItem.element),i=Number.parseFloat(t.marginLeft.replace("px","")),n=Number.parseFloat(t.marginTop.replace("px","")),s=Number.parseFloat(t.marginRight.replace("px","")),o=Number.parseFloat(t.marginBottom.replace("px",""));this._rect=this._drawRect(e.x-i,e.y-n,i+e.width+s,n+e.height+o,"svg-placement",this._rect)}dispose(){this._removeAllOverlays()}}});import{css as A_}from"@node-projects/base-custom-webcomponent";var Ko,Ap=g(()=>{"use strict";kp();Ko=class{shouldExtend(e,t,i){return!0}getExtension(e,t,i){return new $o(e,t,i)}static style=A_`.svg-placement{stroke:#90caf9;fill:none}`}});var Qo,Tp=g(()=>{"use strict";le();se();Qo=class extends F{_path;constructor(e,t,i){super(e,t,i)}extend(){let e=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0];this._path=this._drawTransformedRect(e,"svg-flexbox",this._path,T.Background)}refresh(){this._removeAllOverlays(),this.extend()}dispose(){this._removeAllOverlays()}}});import{css as T_}from"@node-projects/base-custom-webcomponent";var Mp,Hn,Zo=g(()=>{"use strict";Tp();q();Mp="flexboxExtensionShowOverlay",Hn=class{shouldExtend(e,t,i){if(i.nodeType!=k.Element)return!1;let n=getComputedStyle(i.element).display;return n=="flex"||n=="inline-flex"?t.instanceServiceContainer.designContext.extensionOptions[Mp]!==!1:!1}getExtension(e,t,i){return new Qo(e,t,i)}style=T_`.svg-flexbox{stroke:orange;fill:#9a47ff22}`}});var Jo,Lp=g(()=>{"use strict";Zo();ai();Jo=class extends tt{constructor(){super(Mp,"F","show flexbox overlay")}}});var qo,Op=g(()=>{"use strict";oo();ai();qo=class extends tt{constructor(){super(Bh,"I","show invisible div overlay")}}});var ea,Np=g(()=>{"use strict";ea=class{redoBranches;source;_contentChanges=[];title;get affectedItems(){let e=new Set;for(let t of this.undoStack)for(let i of t.affectedItems)e.add(i);for(let t of this.redoStack)for(let i of t.affectedItems)e.add(i);return[...e.values()]}commitHandler;abortHandler;constructor(e,t,i,n="local"){this.title=e,this.commitHandler=t,this.abortHandler=i,this.source=n}get contentChanges(){return this._contentChanges.length>0?this._contentChanges:null}do(){let e=null,t=[];for(;e=this.redoStack.pop();)try{let i=e.do();i&&t.push(...i),this.undoStack.push(e)}catch(i){throw i}return t.length>0?t:null}undo(){let e=null,t=[];for(;e=this.undoStack.pop();)try{let i=e.undo();i&&t.push(...i),this.redoStack.push(e)}catch(i){throw i}return t.length>0?t:null}commit(){this.commitHandler(this)}abort(){this.abortHandler(this)}mergeWith(e){return!1}addCommitedSubchangeGroup(e){this.undoStack.push(e),this._recordContentChanges(e.contentChanges)}undoStack=[];redoStack=[];execute(e){let t=e.do();this._recordContentChanges(t);for(let i of this.undoStack)if(i.mergeWith(e))return t;return this.undoStack.push(e),t}_recordContentChanges(e){e?.length&&this._contentChanges.push(...e)}}});import{TypedEvent as M_}from"@node-projects/base-custom-webcomponent";var ta,Vp=g(()=>{"use strict";Np();ta=class{_undoStack=[];_redoStack=[];_transactionStack=[];_designerCanvas;_storeRedoBranches;constructor(e,t=!1){this._designerCanvas=e,this._storeRedoBranches=t}openGroup(e,t="local"){let i=new ea(e,n=>this.commitTransactionItem(n),n=>this.abortTransactionItem(n),t);return this._transactionStack.push(i),i}commitTransactionItem(e){let t=this._transactionStack.pop();if(t!==e)throw this.clear(),"UndoService - Commited Transaction was not the last";t.undoStack.length&&(this._transactionStack.length>0?this._transactionStack[this._transactionStack.length-1].addCommitedSubchangeGroup(t):(this._storeRedoBranches&&this._redoStack.length&&(t.redoBranches==null&&(t.redoBranches=[]),t.redoBranches.push(this._redoStack)),this._redoStack=[],this._undoStack.push(t))),this._transactionStack.length==0&&(this._designerCanvas.extensionManager.refreshAllExtensions(e.affectedItems),this.emitTransaction(e,"execute",e.source??"local"),e.contentChanges&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(e.contentChanges))}abortTransactionItem(e){if(this._transactionStack.length>0){let t=this._transactionStack.pop();if(t!==e)throw this.clear(),"UndoService - Aborted Transaction was not the last";t.undo()}}execute(e,t="local"){let i=null;this._transactionStack.length==0?(i=e.do(),this._storeRedoBranches&&this._redoStack.length&&(e.redoBranches==null&&(e.redoBranches=[]),e.redoBranches.push(this._redoStack)),this._redoStack=[],this._undoStack.push(e)):i=this._transactionStack[this._transactionStack.length-1].execute(e),this._transactionStack.length==0&&(this._designerCanvas.extensionManager.refreshAllExtensions(e.affectedItems),this.emitTransaction(e,"execute",t),i&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(i))}clear(){this._undoStack=[],this._redoStack=[],this._transactionStack=[]}clearTransactionstackIfNotEmpty(){this._transactionStack.length&&(console.error("transactionStack was not empty, but should be",this._transactionStack),this._transactionStack=[])}undo(e="local"){if(!this.canUndo())return;if(this._transactionStack.length!=0)throw"Cannot Undo while transaction is running";let t=this._undoStack.pop(),i=null;try{i=t.undo(),this._redoStack.push(t)}catch(n){throw this.clear(),n}this._designerCanvas.extensionManager.refreshAllExtensions(t.affectedItems),this.emitTransaction(t,"undo",e),i&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(i)}redo(e="local"){if(!this.canRedo())return;if(this._transactionStack.length!=0)throw"Cannot Redo while transaction is running";let t=this._redoStack.pop(),i=null;try{i=t.do(),this._undoStack.push(t)}catch(n){throw this.clear(),n}this._designerCanvas.extensionManager.refreshAllExtensions(t.affectedItems),this.emitTransaction(t,"redo",e),i&&this._designerCanvas.instanceServiceContainer.onContentChanged.emit(i)}redoTo(e){this._redoStack=e.toReversed();for(let t=0;t<e.length;t++)this.redo()}canUndo(){return this._undoStack.length>0}canRedo(){return this._redoStack.length>0}get undoCount(){return this._undoStack.length}get redoCount(){return this._redoStack.length}*getUndoEntryNames(e=999){for(let t=Math.min(this._undoStack.length,e)-1;t>=0;t--)yield this._undoStack[t].title}*getUndoEntries(e=999){for(let t=Math.min(this._undoStack.length,e)-1;t>=0;t--)yield this._undoStack[t]}*getRedoEntryNames(e=999){for(let t=Math.min(this._redoStack.length,e)-1;t>=0;t--)yield this._redoStack[t].title}*getRedoEntries(e=999){for(let t=Math.min(this._redoStack.length,e)-1;t>=0;t--)yield this._redoStack[t]}onTransaction=new M_;emitTransaction(e,t,i){this.onTransaction.emit({item:e,kind:t,source:i})}}});var ia,Bm=g(()=>{"use strict";ia=class{constructor(e,t,i){this.title="Change Selection",this.oldSelection=e,this.newSelection=t,this.selectionService=i}title;get affectedItems(){return this.oldSelection&&this.newSelection?[...this.oldSelection,...this.newSelection]:this.oldSelection?[...this.oldSelection]:[...this.newSelection]}undo(){return this.selectionService._withoutUndoSetSelectedElements(this.oldSelection),null}do(){return this.selectionService._withoutUndoSetSelectedElements(this.newSelection),null}oldSelection;newSelection;selectionService;mergeWith(e){return!1}}});import{TypedEvent as Hm}from"@node-projects/base-custom-webcomponent";function Gm(r,e){let t=null;if(r.hasChildren)for(let i of r.children()){let n=r.instanceServiceContainer.designItemDocumentPositionService.getPosition(i);n&&n.start<=e&&n.start+n.length>=e&&(t=i)}return t?Gm(t,e):r}var na,Rp=g(()=>{"use strict";Bm();na=class{primarySelection;selectedElements=[];selectedPart;_designerCanvas;_undoSelectionChanges;constructor(e,t){this._designerCanvas=e,this._undoSelectionChanges=t}setSelectedElements(e,t,i){this._setSelectedElements(e,t,i)}_setSelectedElements(e,t,i){if((e===null||e.length===0)&&(e=[this._designerCanvas.rootDesignItem]),this.selectedElements!=e&&!(this.selectedElements.length===0&&(e==null||e.length===0))){if(this.selectedElements?.length===1&&e?.length===1&&e[0]===this.selectedElements[0]){this._setSelectedPart(i),this.onSelectionRefresh.emit({selectedElements:this.selectedElements,selectedPart:this.selectedPart,event:t});return}if(this._undoSelectionChanges){let n=new ia(this.selectedElements,e,this);this._designerCanvas.instanceServiceContainer.undoService.execute(n)}else this._withoutUndoSetSelectedElements(e,t,i)}}setSelectedPart(e,t){this._setSelectedPart(e)&&this.onSelectionRefresh.emit({selectedElements:this.selectedElements,selectedPart:this.selectedPart,event:t})}_setSelectedPart(e){let t=this.selectedPart;return t===e||t?.designItem===e?.designItem&&t?.key===e?.key?!1:(this.selectedPart=e,!0)}setSelectionByTextRange(e,t){let i=this._designerCanvas.instanceServiceContainer.designItemDocumentPositionService?.getSourcePartAt(e),n=Gm(this._designerCanvas.rootDesignItem,e);n&&(this.selectedElements.length!=1||this.primarySelection!=n?this._setSelectedElements([n],void 0,i):this.setSelectedPart(i))}_withoutUndoSetSelectedElements(e,t,i){let n=this.selectedElements,s=this.selectedPart;if(!e)this.selectedElements=[],this.primarySelection=null,this.selectedPart=null;else{let o=[];for(let a of e)a&&(e.length==1||a!==a.instanceServiceContainer.designerCanvas.rootDesignItem)&&o.push(a);this.selectedElements=o,o&&o.length>0?this.primarySelection=o[0]:this.primarySelection=null,this.selectedPart=i?.designItem===this.primarySelection?i:null}this.onSelectionChanged.emit({selectedElements:this.selectedElements,oldSelectedElements:n,selectedPart:this.selectedPart,oldSelectedPart:s,event:t})}clearSelectedElements(){this.setSelectedElements([])}isSelected(e){return this.selectedElements.indexOf(e)>=0}onSelectionChanged=new Hm;onSelectionRefresh=new Hm}});var ra,zp=g(()=>{"use strict";he();ra=class{shouldProvideContextmenu(e,t,i,n){return i!==null}provideContextMenuItems(e,t,i){return[{title:"jump to",icon:`<img src="${E+"icons/jump.svg"}">`,action:()=>{let n=t.getNormalizedElementCoordinates(i.element);t.zoomPoint({x:n.x+n.width/2,y:n.y+n.height/2},t.zoomFactor)}}]}}});var sa,Fp=g(()=>{"use strict";me();zc();de();gi();le();se();sa=class extends F{gridInformation;_resizers=[];_initalPos;_initialSizes;_group;_hasChanged;constructor(e,t,i){super(e,t,i)}extend(e,t){this._group=this._drawGroup(null,this._group,T.Background),this._group.style.transformOrigin="0 0",this.refresh(t)}refresh(e,t){this.gridInformation=lt(this.extendedItem),this._group.style.transform=ji(this.extendedItem).toString(),this.gridInformation.gaps.forEach((i,n)=>{i.width<3&&(i.width=3,i.x--,i.localX--),i.height<3&&(i.height=3,i.y--,i.localY--);let s=this._drawRect(i.localX,i.localY,i.width,i.height,"svg-grid-resizer-"+i.type,this._resizers[n],T.Normal);this._resizers[n]||(this._resizers[n]=s,s.addEventListener(P.PointerDown,o=>this._pointerActionTypeResize(o,s,i)),s.addEventListener(P.PointerMove,o=>this._pointerActionTypeResize(o,s,i)),s.addEventListener(P.PointerUp,o=>this._pointerActionTypeResize(o,s,i)),this._group.appendChild(s))})}_pointerActionTypeResize(e,t,i){e.stopPropagation();let n=i.type=="h"?"gridTemplateRows":"gridTemplateColumns",s=(i.type=="h"?i.row:i.column)-1,o=i.type=="h"?"height":"width",a=this._getAxisLocalPosition(e,i.type);switch(e.type){case P.PointerDown:t.setPointerCapture(e.pointerId),this._initalPos=a,this._initialSizes=getComputedStyle(this.extendedItem.element)[n];break;case P.PointerMove:if(this._initialSizes){let c=a-this._initalPos;if(Math.abs(c)>5||this._hasChanged){this._hasChanged=!0;let h=this._initialSizes.split(" ");h[s]=parseFloat(h[s])+c+"px",h[s+1]=parseFloat(h[s+1])-c+"px",this.extendedItem.element.style[n]=h.join(" "),this.extensionManager.refreshExtensions([this.extendedItem],null,e)}}break;case P.PointerUp:t.releasePointerCapture(e.pointerId);let l=a-this._initalPos;if(this._hasChanged){this._hasChanged=!1;let c=this.extendedItem.getStyleFromSheetOrLocalOrComputed(n),h=this._initialSizes.split(" "),p=em(c);p.length!=h.length&&(p=h.map(m=>mi(m))),this.extendedItem.element.style[n]="";let d=h.map(m=>parseFloat(m));d[s]+=l,d[s+1]-=l;let u=this._convertCssUnits(d,p,this.extendedItem.element,o);this.extendedItem.updateStyleInSheetOrLocal(n,u.join(" "),null,!0)}this._initalPos=null,this._initialSizes=null,this.extensionManager.refreshExtensions([this.extendedItem]);break}}_getAxisLocalPosition(e,t){let i=Pn(this.extendedItem,this.designerCanvas.getNormalizedEventCoordinates(e));return t=="h"?i.y:i.x}_convertCssUnits(e,t,i,n){let s=getComputedStyle(i),a=Z(i)[n],l=n=="height"?this.gridInformation.cells.length-1:this.gridInformation.cells[0].length-1,c=n=="width"?s.columnGap:s.rowGap;c=="normal"&&(c="0px");let h=Rc(c,i,n)??0,d=a-h*l;for(let m=0;m<e.length;m++)t[m]!="fr"&&(d-=e[m]);let u=[];for(let m=0;m<e.length;m++)t[m]!="fr"?u.push(Gi(e[m],i,n,t[m])):u.push((e[m]/d*10).toFixed(2)+"fr");return u}dispose(){this._removeAllOverlays()}}});import{css as L_}from"@node-projects/base-custom-webcomponent";var oa,Bp=g(()=>{"use strict";Fp();Nn();oa=class{shouldExtend(e,t,i){let n=getComputedStyle(i.element).display;return n=="grid"||n=="inline-grid"?t.instanceServiceContainer.designContext.extensionOptions[On]!==!1:!1}getExtension(e,t,i){return new sa(e,t,i)}static style=L_`.svg-grid-resizer-v{fill:transparent;cursor:ew-resize;pointer-events:auto}.svg-grid-resizer-v:hover{fill:#ff7f5052}.svg-grid-resizer-h{fill:transparent;cursor:ns-resize;pointer-events:auto}.svg-grid-resizer-h:hover{fill:#ff7f5052}`}});var Zi,Hp=g(()=>{"use strict";Zi=class{extensions;extIndex;style;svgDefs;constructor(...e){this.extensions=e;for(let t of e)t.style&&(this.style||(this.style=[]),Array.isArray(t.style)?this.style.push(...t.style):this.style.push(t.style)),t.constructor.style&&(this.style||(this.style=[]),Array.isArray(t.constructor.style)?this.style.push(...t.constructor.style):this.style.push(t.constructor.style)),t.svgDefs&&(this.svgDefs||(this.svgDefs=[]),Array.isArray(t.svgDefs)?this.svgDefs.push(...t.svgDefs):this.svgDefs.push(t.svgDefs)),t.constructor.svgDefs&&(this.svgDefs||(this.svgDefs=[]),Array.isArray(t.constructor.svgDefs)?this.svgDefs.push(...t.svgDefs):this.svgDefs.push(t.constructor.svgDefs))}shouldExtend(e,t,i){for(this.extIndex=0;this.extIndex<this.extensions.length;this.extIndex++)if(this.extensions[this.extIndex].shouldExtend(e,t,i))return!0;return!1}getExtension(e,t,i){return this.extensions[this.extIndex].getExtension(e,t,i)}}});var aa,Gp=g(()=>{"use strict";aa=class{_designItemsAssignmentList=new WeakMap;_sourceParts=[];_sourcePartsByDesignItem=new WeakMap;_sourcePartsByDesignItemAndKey=new WeakMap;constructor(e){}setPosition(e,t){this._designItemsAssignmentList.set(e,t)}getPosition(e){return this._designItemsAssignmentList.get(e)}clearSourceParts(){this._sourceParts=[],this._sourcePartsByDesignItem=new WeakMap,this._sourcePartsByDesignItemAndKey=new WeakMap}addSourcePart(e){if(!e?.designItem||!e.textRange)return;this._sourceParts.push(e);let t=this._sourcePartsByDesignItem.get(e.designItem);t||(t=[],this._sourcePartsByDesignItem.set(e.designItem,t)),t.push(e);let i=this._sourcePartsByDesignItemAndKey.get(e.designItem);i||(i=new Map,this._sourcePartsByDesignItemAndKey.set(e.designItem,i)),i.set(e.key,e)}addSourceParts(e){for(let t of e??[])this.addSourcePart(t)}getSourcePartAt(e){let t=null;for(let i of this._sourceParts){let n=i.textRange.start,s=n+i.textRange.length;n<=e&&s>=e&&(!t||i.textRange.length<=t.textRange.length)&&(t=i)}return t}getSourceParts(e){return this._sourcePartsByDesignItem.get(e)??[]}getSourcePartPosition(e,t){return this._sourcePartsByDesignItemAndKey.get(e)?.get(t)?.textRange}}});var la,Wp=g(()=>{"use strict";vt();he();Hs();la=class{provideButton(e){if(e.readOnly)return null;let t=new we(e,{"":{icon:E+"images/tools/TransformTool.svg"}});return t.popup=yi,t}}});var ca,jp=g(()=>{"use strict";de();Le();le();se();ca=class extends F{_line1;_line2;_line3;_line4;_designerView;constructor(e,t,i){super(e,t,i),this._designerView=t}extend(){this.refresh()}refresh(){let e=this._designerView.instanceServiceContainer.selectionService.selectedElements;if(e.length>1){e=ue(e);let t=oi(e,this._designerView);this._line1=this._drawLine(t.x,t.y,t.x+t.width,t.y,"svg-multiple-rect-selection",this._line1,T.Background),this._line2=this._drawLine(t.x+t.width,t.y,t.x+t.width,t.y+t.height,"svg-multiple-rect-selection",this._line2,T.Background),this._line3=this._drawLine(t.x+t.width,t.y+t.height,t.x,t.y+t.height,"svg-multiple-rect-selection",this._line3,T.Background),this._line4=this._drawLine(t.x,t.y+t.height,t.x,t.y,"svg-multiple-rect-selection",this._line4,T.Background),this._line1.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line2.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line3.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString(),this._line4.style.strokeWidth=(2/this.designerCanvas.zoomFactor).toString()}}dispose(){this._removeAllOverlays()}}});import{css as O_}from"@node-projects/base-custom-webcomponent";var ha,Yp=g(()=>{"use strict";jp();ha=class{shouldExtend(e,t,i){return!i.isRootItem&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new ca(e,t,i)}static style=O_`.svg-multiple-rect-selection{stroke:#909090;stroke-dasharray:3;fill:transparent;stroke-width:2}`}});var pa,Up=g(()=>{"use strict";oe();st();he();pa=class{_dragOverExtensionItem;_oldX;_oldY;_currentDragDropFormatNameElementDefinition;constructor(){window.addEventListener("dragstart",e=>{let t=e.dataTransfer;if(!t)return;let i=t.setData.bind(t);t.setData=(n,s)=>(n==Ni&&(this._currentDragDropFormatNameElementDefinition=s),i(n,s))},!0),window.addEventListener("dragend",e=>{this._currentDragDropFormatNameElementDefinition=null},!0)}dragEnter(e,t){}dragLeave(e,t){this._dragOverExtensionItem&&(e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerExternalDragOverAndCanBeEntered),this._dragOverExtensionItem=null)}async dragOver(e,t){if(e.readOnly){t.dataTransfer.dropEffect="none";return}let i=null,n=t.dataTransfer.getData(Ni);if(n||(n=this._currentDragDropFormatNameElementDefinition),n){let o=JSON.parse(n);o&&(i=await e.serviceContainer.forSomeServicesTillResult("instanceService",a=>a.getElement(o,e.serviceContainer,e.instanceServiceContainer)))}let[s]=this.getPossibleContainerForDragDrop(e,t,i?[i]:null);s||(s=e.rootDesignItem),this._dragOverExtensionItem!=s?(e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerExternalDragOverAndCanBeEntered),e.extensionManager.applyExtension(s,I.ContainerExternalDragOverAndCanBeEntered,t),this._dragOverExtensionItem=s):t.x!=this._oldX&&t.y!=this._oldY&&(this._oldX=t.x,this._oldY=t.y,e.extensionManager.refreshExtension(s,I.ContainerExternalDragOverAndCanBeEntered,t))}async drop(e,t){this._dragOverExtensionItem&&(e.extensionManager.removeExtension(this._dragOverExtensionItem,I.ContainerExternalDragOverAndCanBeEntered),this._dragOverExtensionItem=null);let i=t.dataTransfer.getData(Ni),n=JSON.parse(i),s=await e.serviceContainer.forSomeServicesTillResult("instanceService",u=>u.getElement(n,e.serviceContainer,e.instanceServiceContainer)),[o]=this.getPossibleContainerForDragDrop(e,t,[s]);o||(o=e.rootDesignItem);let a=s.openGroup("Insert of <"+s.name+">"),l=e.serviceContainer.getLastServiceWhere("containerService",u=>u.serviceForContainer(o,o.getComputedStyle(),s));l.enterContainer(o,[s],"drop");let c=e.getNormalizedElementCoordinates(o.element),h=e.getNormalizedEventCoordinates(t),p={x:h.x-c.x,y:h.y-c.y},d={x:0,y:0};n.mouseOffset&&(d=n.mouseOffset),l.place(t,e,o,d,{x:0,y:0},p,[s]),l.finishPlace(t,e,o,d,{x:0,y:0},p,[s]),requestAnimationFrame(()=>{e.instanceServiceContainer.selectionService.setSelectedElements([s],t),a.commit()})}getPossibleContainerForDragDrop(e,t,i){let n=null,s=null,o=e.elementsFromPoint(t.clientX,t.clientY);for(let a of o)if(a==e.rootDesignItem.element){n=e.rootDesignItem;let l=getComputedStyle(n.element);s=e.serviceContainer.getLastServiceWhere("containerService",c=>c.serviceForContainer(n,l));break}else{n=O.GetOrCreateDesignItem(a,a,e.serviceContainer,e.instanceServiceContainer);let l=getComputedStyle(n.element);if(s=e.serviceContainer.getLastServiceWhere("containerService",c=>c.serviceForContainer(n,l)),s){if(i&&s.canEnter(n,i)&&!(n.element instanceof n.window.SVGElement))break;if(!i&&s.isEnterableContainer(n)&&!(n.element instanceof n.window.SVGElement))break;n=null,s=null;continue}}return[n,s]}}});var Ne,Gn=g(()=>{"use strict";Ne=class r{constructor(){}static _windowEvents=[{name:"afterprint",propertyName:"onafterprint",eventObjectName:"Event"},{name:"beforeprint",propertyName:"onbeforeprint",eventObjectName:"Event"},{name:"beforeunload",propertyName:"onbeforeunload",eventObjectName:"Event"},{name:"error",propertyName:"onerror",eventObjectName:"Event"},{name:"load",propertyName:"onload",eventObjectName:"Event"},{name:"hashchange",propertyName:"onhashchange",eventObjectName:"Event"},{name:"message",propertyName:"onmessage",eventObjectName:"Event"},{name:"offline",propertyName:"onoffline",eventObjectName:"Event"},{name:"online",propertyName:"ononline",eventObjectName:"Event"},{name:"pageshow",propertyName:"onpageshow",eventObjectName:"Event"},{name:"popstate",propertyName:"onpopstate",eventObjectName:"Event"},{name:"resize",propertyName:"onresize",eventObjectName:"Event"},{name:"storage",propertyName:"onstorage",eventObjectName:"Event"},{name:"unload",propertyName:"onunload",eventObjectName:"Event"}];static _allElements=[{name:"contextmenu",propertyName:"oncontextmenu",eventObjectName:"PointerEvent"}];static _focusableEvents=[{name:"blur",propertyName:"onblur",eventObjectName:"FocusEvent"},{name:"focus",propertyName:"onfocus",eventObjectName:"FocusEvent"},{name:"keydown",propertyName:"onkeydown",eventObjectName:"KeyboardEvent"},{name:"keyup",propertyName:"onkeyup",eventObjectName:"KeyboardEvent"}];static _simpleForm=[{name:"input",propertyName:"oninput",eventObjectName:"InputEvent"},{name:"change",propertyName:"onchange",eventObjectName:"Event"}];static _form=[{name:"beforeinput",propertyName:"onbeforeinput",eventObjectName:"InputEvent"},{name:"invalid",propertyName:"oninvalid",eventObjectName:"Event"},{name:"reset",propertyName:"onreset",eventObjectName:"Event"},{name:"select",propertyName:"onselect",eventObjectName:"Event"},{name:"submit",propertyName:"onsubmit",eventObjectName:"SubmitEvent"}];static _simpleMouseEvents=[{name:"click",propertyName:"onclick",eventObjectName:"PointerEvent"},{name:"dblclick",propertyName:"ondblclick",eventObjectName:"MouseEvent"},{name:"wheel",propertyName:"onwheel",eventObjectName:"WheelEvent"},{name:"scroll",propertyName:"onscroll",eventObjectName:"Event"}];static _mouseEvents=[{name:"mousedown",propertyName:"onmousedown",eventObjectName:"MouseEvent"},{name:"mouseup",propertyName:"onmouseup",eventObjectName:"MouseEvent"},{name:"mousemove",propertyName:"onmousemove",eventObjectName:"MouseEvent"},{name:"mouseover",propertyName:"onmouseover",eventObjectName:"MouseEvent"},{name:"mouseout",propertyName:"onmouseout",eventObjectName:"MouseEvent"}];static _pointerEvents=[{name:"pointerdown",propertyName:"onpointerdown",eventObjectName:"PointerEvent"},{name:"pointerup",propertyName:"onpointerup",eventObjectName:"PointerEvent"},{name:"pointerenter",propertyName:"onpointerenter",eventObjectName:"PointerEvent"},{name:"pointerleave",propertyName:"onpointerleave",eventObjectName:"PointerEvent"},{name:"pointermove",propertyName:"onpointermove",eventObjectName:"PointerEvent"},{name:"pointerover",propertyName:"onpointerover",eventObjectName:"PointerEvent"},{name:"pointerout",propertyName:"onpointerout",eventObjectName:"PointerEvent"},{name:"pointercancel",propertyName:"onpointercancel",eventObjectName:"PointerEvent"}];static _touchEvents=[{name:"touchstart",propertyName:"ontouchstart",eventObjectName:"TouchEvent"},{name:"touchend",propertyName:"ontouchend",eventObjectName:"TouchEvent"},{name:"touchmove",propertyName:"ontouchmove",eventObjectName:"TouchEvent"},{name:"touchcancel",propertyName:"ontouchcancel",eventObjectName:"TouchEvent"}];static _dragEvents=[{name:"drag",propertyName:"ondrag",eventObjectName:"DragEvent"},{name:"dragend",propertyName:"ondragend",eventObjectName:"DragEvent"},{name:"dragenter",propertyName:"ondragenter",eventObjectName:"DragEvent"},{name:"dragleave",propertyName:"ondragleave",eventObjectName:"DragEvent"},{name:"dragover",propertyName:"ondragover",eventObjectName:"DragEvent"},{name:"dragstart",propertyName:"ondragstart",eventObjectName:"DragEvent"},{name:"drop",propertyName:"ondrop",eventObjectName:"DragEvent"}];static _clipboard=[{name:"copy",propertyName:"oncopy",eventObjectName:"ClipboardEvent"},{name:"cut",propertyName:"oncut",eventObjectName:"ClipboardEvent"},{name:"paste",propertyName:"onpaste",eventObjectName:"ClipboardEvent"}];static _details=[{name:"toggle",propertyName:"ontoggle",eventObjectName:"Event"}];static _allEvents=[...r._windowEvents,...r._form,...r._simpleMouseEvents,...r._mouseEvents,...r._pointerEvents,...r._touchEvents,...r._allElements,...r._focusableEvents,...r._dragEvents,...r._clipboard,...r._dragEvents];isHandledElementFromEventsService(e){return!0}getPossibleEvents(e){return e.element instanceof e.window.HTMLInputElement||e.element instanceof e.window.HTMLTextAreaElement||e.element instanceof e.window.HTMLSelectElement?[...r._simpleForm,...r._simpleMouseEvents,...r._form,...r._pointerEvents,...r._allElements,...r._focusableEvents]:[...r._simpleMouseEvents,...r._pointerEvents,...r._allElements,...r._focusableEvents]}getEvent(e,t){return r._allEvents.find(n=>n.name==t)??{name:t,propertyName:"on"+t,eventObjectName:"Event"}}}});import{DomHelper as N_,cssFromString as V_}from"@node-projects/base-custom-webcomponent";var da,Xp=g(()=>{"use strict";da=class{async provideDemo(e,t,i,n){let s=document.createElement("div"),o=s.attachShadow({mode:"open",serializable:!0});s.style.width="100%",s.style.height="100%",s.style.border="none",s.style.display="none",s.style.overflow="auto",s.style.position="absolute",e.style.position="relative",N_.removeAllChildnodes(e),e.appendChild(s);let a=[];i.designerCanvas.additionalStyles&&a.push(...i.designerCanvas.additionalStyles),i.stylesheetService&&a.push(...i.stylesheetService.getStylesheets().map(l=>V_(l.content))),o.adoptedStyleSheets=a,o.innerHTML="","setHTMLUnsafe"in o?o.setHTMLUnsafe(n):o.innerHTML=n,s.style.display=""}}});var ua,$p=g(()=>{"use strict";me();Le();se();ua=class{_elementDefinition;_createdItem;_startPosition;_changeGroup;cursor="crosshair";_rect;constructor(e){this._elementDefinition=e}activated(e){}dispose(){this._createdItem&&this._createdItem.element.parentElement.removeChild(this._createdItem.element)}pointerEventHandler(e,t,i){switch(t.type){case P.PointerDown:this._onPointerDown(e,t);break;case P.PointerMove:this._onPointerMove(e,t);break;case P.PointerUp:this._onPointerUp(e,t);break}}keyboardEventHandler(e,t,i){}sizeOverlapThreshold=!1;async _onPointerDown(e,t){let i=e.getNormalizedEventCoordinates(t);t.preventDefault(),this._startPosition={x:i.x,y:i.y},this._changeGroup=e.rootDesignItem.openGroup("Insert Item"),this._createdItem=await e.serviceContainer.forSomeServicesTillResult("instanceService",n=>n.getElement(this._elementDefinition,e.serviceContainer,e.instanceServiceContainer)),this._createdItem.setStyle("position","absolute"),this._createdItem.setStyle("left",N(this._createdItem,i.x)+"px"),this._createdItem.setStyle("top",N(this._createdItem,i.y)+"px"),this._createdItem.setStyle("width","0"),this._createdItem.setStyle("height","0"),e.rootDesignItem.insertChild(this._createdItem),e.instanceServiceContainer.selectionService.clearSelectedElements()}async _onPointerMove(e,t){let i=e.getNormalizedEventCoordinates(t);if(this._createdItem){this._rect||(this._rect=document.createElementNS("http://www.w3.org/2000/svg","rect"),e.overlayLayer.addOverlay(this.constructor.name,this._rect,T.Foreground),this._rect.setAttribute("class","svg-draw-new-element"),this._rect.setAttribute("x",N(this._createdItem,this._startPosition.x)),this._rect.setAttribute("y",N(this._createdItem,this._startPosition.y)));let n=N(this._createdItem,i.x-this._startPosition.x),s=N(this._createdItem,i.y-this._startPosition.y);parseFloat(""+n)>=0&&(this._rect.setAttribute("width",n),this._createdItem.setStyle("width",n+"px")),parseFloat(""+s)>=0&&(this._rect.setAttribute("height",s),this._createdItem.setStyle("height",s+"px")),(parseFloat(""+n)>5||parseFloat(""+s)>5)&&(this.sizeOverlapThreshold=!0)}}async _onPointerUp(e,t){this.sizeOverlapThreshold?(this._changeGroup.commit(),e.instanceServiceContainer.selectionService.setSelectedElements([this._createdItem],t)):this._changeGroup.abort(),e.overlayLayer.removeOverlay(this._rect),this._startPosition=null,this._rect=null,this._createdItem=null,e.serviceContainer.globalContext.finishedWithTool(this)}}});var ma,Kp=g(()=>{"use strict";ma=class{constructor(){}provideButtons(e,t){let i=document.createElement("div");i.className="toolbar-control",i.title="round pixels to";let n=document.createElement("input");return n.type="number",n.step="1",n.min="-1",n.valueAsNumber=e.serviceContainer.options.roundPixelsToDecimalPlaces,n.onchange=()=>e.serviceContainer.options.roundPixelsToDecimalPlaces=n.valueAsNumber,i.appendChild(n),[i]}}});var fa,Qp=g(()=>{"use strict";Ai();fe();ve();fa=class extends et{commonMathProperties=[{name:"displaystyle",type:"boolean",service:this,defaultValue:!0,propertyType:_.propertyAndAttribute}];mathProperties=[{name:"display",type:"list",values:["block","inline"],service:this,defaultValue:"text",propertyType:_.propertyAndAttribute}];mfracProperties=[{name:"denomalign",type:"list",values:["left","center","right"],service:this,defaultValue:"center",propertyType:_.propertyAndAttribute},{name:"linethickness",type:"string",service:this,propertyType:_.propertyAndAttribute},{name:"numalign",type:"list",values:["left","center","right"],service:this,defaultValue:"center",propertyType:_.propertyAndAttribute}];name="mathml";getRefreshMode(e){return Y.full}isHandledElement(e){return e.element instanceof e.window.MathMLElement}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){if(!this.isHandledElement(e))return null;switch(e.element.localName){case"math":return[...this.commonMathProperties,...this.mathProperties];case"merror":return[...this.commonMathProperties];case"mfrac":return[...this.commonMathProperties,...this.mfracProperties];default:return[...this.commonMathProperties]}}}});function jm(r){return"command"in r}function R_(r){return"value"in r}function z_(r){let e=[],t=/[AaCcHhLlMmQqSsTtVvZz]|[-+]?(?:(?:\d*\.\d+)|(?:\d+\.?))(?:[eE][-+]?\d+)?/g,i;for(;i=t.exec(r);){let n=i[0];/^[AaCcHhLlMmQqSsTtVvZz]$/.test(n)?e.push({command:n,start:i.index,end:i.index+n.length}):e.push({value:Number(n),start:i.index,end:i.index+n.length})}return e}function F_(r,e){let t=e.map(s=>r[s]).filter(s=>s),i=Math.min(...t.map(s=>s.start)),n=Math.max(...t.map(s=>s.end));return{start:i,length:n-i}}function xt(r,e,t,i,n){let s=F_(i,n);r.push({segmentIndex:e,handleType:t,start:s.start,length:s.length})}function B_(r,e,t,i){switch(e.toUpperCase()){case"M":case"L":case"T":xt(r,t,"anchor",i,[0,1]);break;case"H":case"V":xt(r,t,"anchor",i,[0]);break;case"C":xt(r,t,"cp1",i,[0,1]),xt(r,t,"cp2",i,[2,3]),xt(r,t,"anchor",i,[4,5]);break;case"S":xt(r,t,"cp2",i,[0,1]),xt(r,t,"anchor",i,[2,3]);break;case"Q":xt(r,t,"cp1",i,[0,1]),xt(r,t,"anchor",i,[2,3]);break;case"A":xt(r,t,"anchor",i,[5,6]);break}}function Ym(r){let e=z_(r),t=[],i=0,n=null,s=0;for(;i<e.length;){let o=e[i];if(jm(o)){if(n=o.command,i++,n.toUpperCase()==="Z"){s++;continue}}else if(!n){i++;continue}let a=n,l=Wm[a.toUpperCase()];if(l==null||l===0)continue;let c=a.toUpperCase()==="M";for(;i<e.length&&!jm(e[i]);){c?(a=n,c=!1):n.toUpperCase()==="M"&&(a=n===n.toLowerCase()?"l":"L"),l=Wm[a.toUpperCase()];let h=[];for(let p=0;p<l&&i<e.length;p++,i++){let d=e[i];if(!R_(d))break;h.push(d)}if(h.length!==l)break;B_(t,a,s,h),s++}}return t}var Wm,Zp=g(()=>{"use strict";Wm={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0}});function Jp(r,e){return`attribute:d/svg-path/segment:${r}/handle:${e}`}var ga,ya=g(()=>{"use strict";Zp();ga=class{canMap(e){return e.sourceKind==="attribute"&&e.name==="d"&&e.designItem.element instanceof e.designItem.window.SVGPathElement}map(e){return Ym(e.value).map(t=>({designItem:e.designItem,kind:"svg-path-handle",key:Jp(t.segmentIndex,t.handleType),name:"d",textRange:{start:e.valueTextRange.start+t.start,length:t.length},data:{attribute:"d",segmentIndex:t.segmentIndex,handleType:t.handleType}}))}}});var va,qp=g(()=>{"use strict";le();me();jt();se();Ue();Fi();ui();qt();ya();va=class extends F{_geometry=null;_reader;_dragState=null;_options;_overlayStructureSignature=null;_eventCleanups=[];_overlayCircles=new Map;_overlayLines=[];constructor(e,t,i,n,s){super(e,t,i),this._reader=n??Qt(i.element),this._options=s??{}}extend(){this.refresh()}refresh(){if(!this._reader){this._cleanupAll();return}if(this._geometry=this._reader.read(this.extendedItem.element),!this._geometry){this._cleanupAll();return}let e=this._getOverlayStructureSignature(this._geometry);if(this._overlayStructureSignature!==e||this._hasOverlayStructureMismatch(this._geometry)){this._cleanupAll(),this._overlayStructureSignature=e,this._drawOverlays();return}this._valuesHaveChanges(...this._getRefreshValues(this._geometry))&&(this._updateOverlayAppearance(),this._updateOverlayPositions())}dispose(){this._cleanupAll(),this._geometry=null,this._dragState=null}_cleanupAll(){for(let e of this._eventCleanups)try{e()}catch{}this._eventCleanups=[],this._overlayStructureSignature=null,this._overlayCircles.clear(),this._overlayLines=[],this._removeAllOverlays()}_getOverlayStructureSignature(e){return e.segments.map(t=>`${t.type}:${t.cp1?1:0}:${t.cp2?1:0}`).join("|")}_hasOverlayStructureMismatch(e){let t=0,i=0;for(let n=0;n<e.segments.length;n++){let s=e.segments[n];s.type!==x.Close&&(this._shouldRenderAnchorHandle(n,s,e)&&i++,s.cp1&&(i++,t++,s.type===x.QuadraticBezier&&t++),s.cp2&&(i++,t++))}return this._overlayCircles.size!==i||this._overlayLines.length!==t}_getRefreshValues(e){let t=this.extendedItem.element.getBoxQuads({relativeTo:this.designerCanvas.canvas})[0],i=[this.designerCanvas.zoomFactor,this.designerCanvas.scaleFactor,this._overlayStructureSignature??"",this._getSelectedHandleRefreshKey()];t&&i.push(t.p1.x,t.p1.y,t.p2.x,t.p2.y,t.p3.x,t.p3.y,t.p4.x,t.p4.y);for(let n of e.segments)i.push(n.type,n.point.x,n.point.y),n.cp1?i.push(n.cp1.x,n.cp1.y):i.push("cp1:none"),n.cp2?i.push(n.cp2.x,n.cp2.y):i.push("cp2:none");return i}_getSelectedHandleRefreshKey(){let e=this.extendedItem.instanceServiceContainer.selectionService.selectedPart,t=e?.data;return e?.designItem!==this.extendedItem||e.kind!=="svg-path-handle"?"selected:none":`selected:${t?.segmentIndex}:${t?.handleType}`}_toOverlay(e){return En(this.extendedItem.element,this.designerCanvas,e)}_fromOverlay(e){return ym(this.extendedItem.element,this.designerCanvas,e)}_drawOverlays(){if(!this._geometry)return;let e=null;for(let t=0;t<this._geometry.segments.length;t++){let i=this._geometry.segments[t];if(i.type===x.Close){e=this._geometry.segments[0]?.point??null;continue}if(i.cp1){let n=this._toOverlay(i.cp1);if(e){let s=this._toOverlay(e),o=this._drawLine(s.x,s.y,n.x,n.y,"svg-control-line");this._overlayLines.push(o)}if(i.type===x.QuadraticBezier){let s=this._toOverlay(i.point),o=this._drawLine(s.x,s.y,n.x,n.y,"svg-control-line");this._overlayLines.push(o)}this._drawControlCircle(n,t,"cp1")}if(i.cp2){let n=this._toOverlay(i.cp2),s=this._toOverlay(i.point),o=this._drawLine(s.x,s.y,n.x,n.y,"svg-control-line");this._overlayLines.push(o),this._drawControlCircle(n,t,"cp2")}if(this._shouldRenderAnchorHandle(t,i,this._geometry)){let n=this._toOverlay(i.point);this._drawAnchorCircle(n,t,i)}e=i.point}this._updateOverlayAppearance()}_updateOverlayAppearance(){let e=5/this.designerCanvas.scaleFactor,t=4/this.designerCanvas.scaleFactor,i=(1/this.designerCanvas.zoomFactor).toString(),n=(4/this.designerCanvas.scaleFactor).toString();for(let[s,o]of this._overlayCircles)o.setAttribute("r",(s.startsWith("anchor-")?e:t).toString()),o.style.strokeWidth=i,o.classList.toggle("svg-path-selected-part",this._isSelectedHandle(s));for(let s of this._overlayLines)s.style.strokeDasharray=n,s.style.strokeWidth=i}_addTrackedListener(e,t,i){e.addEventListener(t,i),this._eventCleanups.push(()=>e.removeEventListener(t,i))}_drawAnchorCircle(e,t,i){let n=5/this.designerCanvas.scaleFactor,s=this._drawCircle(e.x,e.y,n,"svg-path",void 0,T.Foreground);s.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),s.style.cursor="move",this._overlayCircles.set(`anchor-${t}`,s);let o=h=>this._onPointerDown(h,s,t,"anchor"),a=h=>this._onPointerMove(h,s,t,"anchor"),l=h=>this._onPointerUp(h,t),c=h=>{h.preventDefault(),this._showContextMenu(h,t,i)};this._addTrackedListener(s,P.PointerDown,o),this._addTrackedListener(s,P.PointerMove,a),this._addTrackedListener(s,P.PointerUp,l),this._addTrackedListener(s,P.ContextMenu,c)}_drawControlCircle(e,t,i){let n=4/this.designerCanvas.scaleFactor,s=this._drawCircle(e.x,e.y,n,"svg-control-point",void 0,T.Foreground);s.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),s.style.cursor="move",this._overlayCircles.set(`${i}-${t}`,s);let o=c=>this._onPointerDown(c,s,t,i),a=c=>this._onPointerMove(c,s,t,i),l=c=>this._onPointerUp(c,t);this._addTrackedListener(s,P.PointerDown,o),this._addTrackedListener(s,P.PointerMove,a),this._addTrackedListener(s,P.PointerUp,l)}_onPointerDown(e,t,i,n){e.stopPropagation(),e.preventDefault(),this._selectSourcePart(i,n,e),e.target.setPointerCapture(e.pointerId);let s=this.designerCanvas.getNormalizedEventCoordinates(e);if(!this._geometry)return;let o=this._geometry.segments[i],a;n==="anchor"?a={...o.point}:n==="cp1"?a={...o.cp1}:a={...o.cp2};let l=this._geometry.segments.map(c=>({point:{...c.point},cp1:c.cp1?{...c.cp1}:void 0,cp2:c.cp2?{...c.cp2}:void 0}));this._dragState={startCursorPos:s,segmentIndex:i,handleType:n,originalPoint:a,originalSegments:l,startScrollOffset:this.designerCanvas.canvasOffset,geometryChanged:!1}}_selectSourcePart(e,t,i){let n=this.extendedItem.instanceServiceContainer.selectionService,s=this._getSourcePart(e,t);n.primarySelection!==this.extendedItem?n.setSelectedElements([this.extendedItem],i,s):s&&n.setSelectedPart(s,i)}_getSourcePart(e,t){let i=Jp(e,t);return this.extendedItem.instanceServiceContainer.designItemDocumentPositionService?.getSourceParts(this.extendedItem).find(n=>n.key===i)}_isSelectedHandle(e){let[t,i]=e.split("-"),n=this.extendedItem.instanceServiceContainer.selectionService.selectedPart,s=n?.data;return n?.designItem===this.extendedItem&&n.kind==="svg-path-handle"&&s?.segmentIndex===Number(i)&&s?.handleType===t}_onPointerMove(e,t,i,n){if(e.stopPropagation(),e.preventDefault(),!this._dragState||!this._geometry||e.buttons===0||this._dragState.segmentIndex!==i||this._dragState.handleType!==n)return;let s=this.designerCanvas.getNormalizedEventCoordinates(e),o=s.x-this._dragState.startCursorPos.x,a=s.y-this._dragState.startCursorPos.y;o===0&&a===0||(e.shiftKey&&(Math.abs(o)>=Math.abs(a)?a=0:o=0),!(o===0&&a===0)&&(e.altKey&&n==="anchor"&&this._options.allowShapeDrag!==!1?this._dragWholeShape(o,a):this._dragSingleHandle(i,n,o,a),n==="anchor"&&this._normalizeAxisLineSegments(),this._dragState.geometryChanged=!0,this._applyGeometryToElement(),this._updateOverlayPositions(),this.designerCanvas.extensionManager.refreshAllExtensions([this.extendedItem],this)))}_dragSingleHandle(e,t,i,n){let s=this._toOverlay(this._dragState.originalPoint),o={x:s.x+i,y:s.y+n},a=this._fromOverlay(o),l=this._geometry.segments[e];if(t==="anchor"){if(this.extendedItem.element instanceof SVGRectElement&&this._dragRectCorner(e,a)||this.extendedItem.element instanceof SVGCircleElement&&this._dragCircleCardinal(e,a)||this.extendedItem.element instanceof SVGEllipseElement&&this._dragEllipseCardinal(e,a))return;if(l.type===x.HorizontalLine){let c=this._findPreviousAnchor(e);l.point.x=a.x,l.point.y=c?.y??l.point.y}else if(l.type===x.VerticalLine){let c=this._findPreviousAnchor(e);l.point.x=c?.x??l.point.x,l.point.y=a.y}else l.point.x=a.x,l.point.y=a.y}else t==="cp1"?(l.cp1.x=a.x,l.cp1.y=a.y):(l.cp2.x=a.x,l.cp2.y=a.y)}_normalizeAxisLineSegments(){if(!this._geometry)return;let e=null,t=this._geometry.segments.find(i=>i.type!==x.Close)?.point;for(let i of this._geometry.segments){if(i.type===x.Close){t&&(i.point={...t});continue}e&&(i.type===x.HorizontalLine?i.point.y=e.y:i.type===x.VerticalLine&&(i.point.x=e.x)),e=i.point}}_dragRectCorner(e,t){if(!this._geometry||!this._dragState?.originalSegments||this._geometry.segments.length<4||e<0||e>3)return!1;let i=this._dragState.originalSegments;switch(e){case 0:this._setRectCornerPoints(t,{x:i[2].point.x,y:t.y},{...i[2].point},{x:t.x,y:i[2].point.y});break;case 1:this._setRectCornerPoints({x:i[3].point.x,y:t.y},t,{x:t.x,y:i[3].point.y},{...i[3].point});break;case 2:this._setRectCornerPoints({...i[0].point},{x:t.x,y:i[0].point.y},t,{x:i[0].point.x,y:t.y});break;case 3:this._setRectCornerPoints({x:t.x,y:i[1].point.y},{...i[1].point},{x:i[1].point.x,y:t.y},t);break;default:return!1}let n=this._geometry.segments[4];return n?.type===x.Close&&(n.point={...this._geometry.segments[0].point}),!0}_setRectCornerPoints(e,t,i,n){this._geometry.segments[0].point={...e},this._geometry.segments[1].point={...t},this._geometry.segments[2].point={...i},this._geometry.segments[3].point={...n}}_dragCircleCardinal(e,t){if(!this._geometry||!this._dragState?.originalSegments)return!1;let i=this._normalizeCardinalIndex(e);if(i===null)return!1;let n=this._dragState.originalSegments,s=(n[1].point.x+n[3].point.x)/2,o=(n[0].point.y+n[2].point.y)/2,a=s,l=o,c=Math.abs(n[1].point.x-n[3].point.x)/2;switch(i){case 0:{let h=n[2].point.y;l=(t.y+h)/2,c=Math.abs(h-t.y)/2;break}case 1:{let h=n[3].point.x;a=(t.x+h)/2,c=Math.abs(t.x-h)/2;break}case 2:{let h=n[0].point.y;l=(n[0].point.y+t.y)/2,c=Math.abs(t.y-h)/2;break}case 3:{let h=n[1].point.x;a=(h+t.x)/2,c=Math.abs(h-t.x)/2;break}default:return!1}return this._setCardinalArcPoints(a,l,c,c),!0}_dragEllipseCardinal(e,t){if(!this._geometry||!this._dragState?.originalSegments)return!1;let i=this._normalizeCardinalIndex(e);if(i===null)return!1;let n=this._dragState.originalSegments,s=(n[1].point.x+n[3].point.x)/2,o=(n[0].point.y+n[2].point.y)/2,a=Math.abs(n[1].point.x-n[3].point.x)/2,l=Math.abs(n[2].point.y-n[0].point.y)/2;switch(i){case 0:{let c=n[2].point.y;o=(t.y+c)/2,l=Math.abs(c-t.y)/2;break}case 1:{let c=n[3].point.x;s=(t.x+c)/2,a=Math.abs(t.x-c)/2;break}case 2:{let c=n[0].point.y;o=(c+t.y)/2,l=Math.abs(t.y-c)/2;break}case 3:{let c=n[1].point.x;s=(c+t.x)/2,a=Math.abs(c-t.x)/2;break}default:return!1}return this._setCardinalArcPoints(s,o,a,l),!0}_normalizeCardinalIndex(e){return e>=0&&e<=3?e:e===4?0:null}_setCardinalArcPoints(e,t,i,n){this._geometry&&(this._geometry.segments[0].point={x:e,y:t-n},this._geometry.segments[1].point={x:e+i,y:t},this._geometry.segments[2].point={x:e,y:t+n},this._geometry.segments[3].point={x:e-i,y:t},this._geometry.segments[1].arc&&(this._geometry.segments[1].arc.rx=i,this._geometry.segments[1].arc.ry=n),this._geometry.segments[2].arc&&(this._geometry.segments[2].arc.rx=i,this._geometry.segments[2].arc.ry=n),this._geometry.segments[3].arc&&(this._geometry.segments[3].arc.rx=i,this._geometry.segments[3].arc.ry=n),this._geometry.segments[4]?.arc&&(this._geometry.segments[4].point={x:e,y:t-n},this._geometry.segments[4].arc.rx=i,this._geometry.segments[4].arc.ry=n),this._geometry.segments[5]?.type===x.Close&&(this._geometry.segments[5].point={x:e,y:t-n}))}_shouldRenderAnchorHandle(e,t,i){if(!(this.extendedItem.element instanceof SVGCircleElement)&&!(this.extendedItem.element instanceof SVGEllipseElement)||e!==4)return!0;let n=i.segments[0];return t.point.x!==n?.point.x||t.point.y!==n?.point.y}_dragWholeShape(e,t){if(!(!this._dragState?.originalSegments||!this._geometry))for(let i=0;i<this._geometry.segments.length;i++){let n=this._dragState.originalSegments[i],s=this._geometry.segments[i],o=this._toOverlay(n.point),a={x:o.x+e,y:o.y+t},l=this._fromOverlay(a);if(s.point.x=l.x,s.point.y=l.y,s.cp1&&n.cp1){let c=this._toOverlay(n.cp1),h={x:c.x+e,y:c.y+t},p=this._fromOverlay(h);s.cp1.x=p.x,s.cp1.y=p.y}if(s.cp2&&n.cp2){let c=this._toOverlay(n.cp2),h={x:c.x+e,y:c.y+t},p=this._fromOverlay(h);s.cp2.x=p.x,s.cp2.y=p.y}}}_updateOverlayPositions(){if(!this._geometry)return;let e=null,t=0;for(let i=0;i<this._geometry.segments.length;i++){let n=this._geometry.segments[i];if(n.type===x.Close){e=this._geometry.segments[0]?.point??null;continue}if(n.cp1){let s=this._toOverlay(n.cp1);if(e&&t<this._overlayLines.length){let a=this._toOverlay(e),l=this._overlayLines[t++];l.setAttribute("x1",a.x.toString()),l.setAttribute("y1",a.y.toString()),l.setAttribute("x2",s.x.toString()),l.setAttribute("y2",s.y.toString())}if(n.type===x.QuadraticBezier&&t<this._overlayLines.length){let a=this._toOverlay(n.point),l=this._overlayLines[t++];l.setAttribute("x1",a.x.toString()),l.setAttribute("y1",a.y.toString()),l.setAttribute("x2",s.x.toString()),l.setAttribute("y2",s.y.toString())}let o=this._overlayCircles.get(`cp1-${i}`);o&&(o.setAttribute("cx",s.x.toString()),o.setAttribute("cy",s.y.toString()))}if(n.cp2){let s=this._toOverlay(n.cp2),o=this._toOverlay(n.point);if(t<this._overlayLines.length){let l=this._overlayLines[t++];l.setAttribute("x1",o.x.toString()),l.setAttribute("y1",o.y.toString()),l.setAttribute("x2",s.x.toString()),l.setAttribute("y2",s.y.toString())}let a=this._overlayCircles.get(`cp2-${i}`);a&&(a.setAttribute("cx",s.x.toString()),a.setAttribute("cy",s.y.toString()))}if(this._shouldRenderAnchorHandle(i,n,this._geometry)){let s=this._toOverlay(n.point),o=this._overlayCircles.get(`anchor-${i}`);o&&(o.setAttribute("cx",s.x.toString()),o.setAttribute("cy",s.y.toString()))}e=n.point}}_onPointerUp(e,t){e.stopPropagation(),e.target.releasePointerCapture(e.pointerId),this._dragState?.geometryChanged&&this._geometry&&this._commitGeometryChange(),this._dragState=null}_applyGeometryToElement(){if(!this._reader||!this._geometry)return;let e=this._reader.serialize(this._geometry);Ku(this.extendedItem.element,e,this.extendedItem.serviceContainer.options.roundPixelsToDecimalPlaces)}_commitGeometryChange(){if(!this._reader||!this._geometry)return;let e=this._reader.serialize(this._geometry),t=this.extendedItem.openGroup("editGeometry");qr(this.extendedItem,e),t.commit()}_showContextMenu(e,t,i){if(!this._geometry)return;let n=[],s=this.extendedItem.element instanceof SVGPathElement;if(this._geometry.segments.filter(a=>a.type!==x.Close).length>2&&n.push({title:"Delete point",action:()=>{this._geometry&&(this._geometry.segments.splice(t,1),t===0&&this._geometry.segments.length>0&&this._geometry.segments[0].type!==x.Close&&(this._geometry.segments[0].type=x.Move),this._applyGeometryToElement(),this._commitGeometryChange())}}),s&&this._findNextNonCloseSegment(t)!==null&&n.push({title:"Insert point after",action:()=>{this._insertPointAfter(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),s&&this._geometry.segments.length>0){let a=this._geometry.segments.some(c=>c.type===x.Close),l=this._findLastNonCloseIndex();(t===l||a&&i.type!==x.Close)&&(n.push({title:"---"}),a?n.push({title:"Open path",action:()=>{this._geometry&&(this._geometry.segments=this._geometry.segments.filter(c=>c.type!==x.Close),this._geometry.closed=!1,this._applyGeometryToElement(),this._commitGeometryChange())}}):n.push({title:"Close path",action:()=>{this._geometry&&(this._geometry.segments.push({type:x.Close,relative:!1,point:this._geometry.segments[0].point}),this._geometry.closed=!0,this._applyGeometryToElement(),this._commitGeometryChange())}}))}if(s&&t>0&&i.type!==x.Close){n.push({title:"---"});let a=[];i.type!==x.Move&&a.push({title:"moveto",action:()=>{this._convertToMove(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==x.Line&&i.type!==x.HorizontalLine&&i.type!==x.VerticalLine&&a.push({title:"line",action:()=>{this._convertToLine(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==x.HorizontalLine&&a.push({title:"horizontal line",action:()=>{this._convertToHorizontalLine(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==x.VerticalLine&&a.push({title:"vertical line",action:()=>{this._convertToVerticalLine(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==x.QuadraticBezier&&a.push({title:"quadratic b\xE9zier",action:()=>{this._convertToQuadratic(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==x.CubicBezier&&a.push({title:"cubic b\xE9zier",action:()=>{this._convertToCubic(t),this._applyGeometryToElement(),this._commitGeometryChange()}}),i.type!==x.Arc&&(a.push({title:"arc",action:()=>{this._convertToArc(t,!1),this._applyGeometryToElement(),this._commitGeometryChange()}}),a.push({title:"inverted arc",action:()=>{this._convertToArc(t,!0),this._applyGeometryToElement(),this._commitGeometryChange()}})),a.length>0&&n.push({title:"Convert to",children:a}),i.type===x.Arc&&n.push({title:"Invert arc",action:()=>{this._invertArc(t),this._applyGeometryToElement(),this._commitGeometryChange()}})}n.length>0&&De.show(n,e)}_findLastNonCloseIndex(){if(!this._geometry)return-1;for(let e=this._geometry.segments.length-1;e>=0;e--)if(this._geometry.segments[e].type!==x.Close)return e;return-1}_findNextNonCloseSegment(e){if(!this._geometry)return null;for(let t=e+1;t<this._geometry.segments.length;t++)if(this._geometry.segments[t].type!==x.Close)return t;return null}_findPreviousAnchor(e){if(!this._geometry)return null;for(let t=e-1;t>=0;t--){let i=this._geometry.segments[t];if(i.type!==x.Close)return i.point}return null}_insertPointAfter(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findNextNonCloseSegment(e);if(i===null)return;let n=this._geometry.segments[i],s;switch(n.type){case x.CubicBezier:{let a=t.point,l=n.cp1,c=n.cp2,h=n.point;s=this._evalCubicBezier(a,l,c,h,.5);break}case x.QuadraticBezier:{let a=t.point,l=n.cp1,c=n.point;s=this._evalQuadraticBezier(a,l,c,.5);break}default:{s={x:(t.point.x+n.point.x)/2,y:(t.point.y+n.point.y)/2};break}}let o={type:x.Line,relative:t.relative,point:s};this._geometry.segments.splice(e+1,0,o)}_convertToMove(e){if(!this._geometry)return;let t=this._geometry.segments[e];t.type=x.Move,delete t.cp1,delete t.cp2,delete t.arc}_convertToLine(e){if(!this._geometry)return;let t=this._geometry.segments[e];t.type=x.Line,delete t.cp1,delete t.cp2,delete t.arc}_convertToHorizontalLine(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findPreviousAnchor(e);i&&(t.type=x.HorizontalLine,t.point.y=i.y,delete t.cp1,delete t.cp2,delete t.arc)}_convertToVerticalLine(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findPreviousAnchor(e);i&&(t.type=x.VerticalLine,t.point.x=i.x,delete t.cp1,delete t.cp2,delete t.arc)}_convertToQuadratic(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findPreviousAnchor(e);if(!i)return;let n=t.point,s=(i.x+n.x)/2,o=(i.y+n.y)/2,a=Math.sqrt(Math.pow(n.x-i.x,2)+Math.pow(n.y-i.y,2)),l=Math.max(20,a*.25),c=Math.atan2(n.y-i.y,n.x-i.x)-Math.PI/2;t.type=x.QuadraticBezier,t.cp1={x:s+l*Math.cos(c),y:o+l*Math.sin(c)},delete t.cp2,delete t.arc}_convertToCubic(e){if(!this._geometry)return;let t=this._geometry.segments[e],i=this._findPreviousAnchor(e);if(!i)return;let n=t.point;if(t.type===x.QuadraticBezier&&t.cp1){t.type=x.CubicBezier;let s=t.cp1;t.cp1={x:i.x+2/3*(s.x-i.x),y:i.y+2/3*(s.y-i.y)},t.cp2={x:n.x+2/3*(s.x-n.x),y:n.y+2/3*(s.y-n.y)}}else t.type=x.CubicBezier,t.cp1={x:i.x+(n.x-i.x)/3,y:i.y+(n.y-i.y)/3},t.cp2={x:i.x+2*(n.x-i.x)/3,y:i.y+2*(n.y-i.y)/3};delete t.arc}_convertToArc(e,t=!1){if(!this._geometry)return;let i=this._geometry.segments[e],n=this._findPreviousAnchor(e);if(!n)return;let s=i.point,o=s.x-n.x,a=s.y-n.y,l=Math.sqrt(o*o+a*a),c=Math.max(1,l/2);i.type=x.Arc,i.arc={rx:c,ry:c,rotation:0,largeArc:!1,sweep:!t},delete i.cp1,delete i.cp2}_invertArc(e){if(!this._geometry)return;let t=this._geometry.segments[e];t.type!==x.Arc||!t.arc||(t.arc.sweep=!t.arc.sweep)}_evalCubicBezier(e,t,i,n,s){let o=1-s;return{x:o*o*o*e.x+3*o*o*s*t.x+3*o*s*s*i.x+s*s*s*n.x,y:o*o*o*e.y+3*o*o*s*t.y+3*o*s*s*i.y+s*s*s*n.y}}_evalQuadraticBezier(e,t,i,n){let s=1-n;return{x:s*s*e.x+2*s*n*t.x+n*n*i.x,y:s*s*e.y+2*s*n*t.y+n*n*i.y}}}});import{css as H_}from"@node-projects/base-custom-webcomponent";var _a,ed=g(()=>{"use strict";qp();qt();_a=class{_customReader;constructor(e){this._customReader=e}shouldExtend(e,t,i){if(this._customReader)return!0;let n=i.node;return n instanceof SVGPathElement||n instanceof SVGRectElement||n instanceof SVGLineElement||n instanceof SVGEllipseElement||n instanceof SVGCircleElement||n instanceof SVGPolygonElement||n instanceof SVGPolylineElement?gm(n):!1}getExtension(e,t,i){return new va(e,t,i,this._customReader)}style=H_`.svg-control-line{stroke:#3899ec;fill:none;stroke-dasharray:4;pointer-events:none;opacity:.9}.svg-control-point{stroke:#3899ec;fill:#fff;pointer-events:auto}.svg-path-selected-part{stroke:#000;fill:#0f0}`}});var Vt,td=g(()=>{"use strict";Vt=class{constructor(e,t,i=!1){this.extensionProvider=e,this.condition=t,this.style=e.style??e.constructor.style,this.svgDefs=e.svgDefs??e.constructor.svgDefs}extensionProvider;condition;style;svgDefs;shouldExtend(e,t,i){return this.condition(i,t)?this.extensionProvider.shouldExtend(e,t,i):!1}getExtension(e,t,i){return this.extensionProvider.getExtension(e,t,i)}}});var bt,Ke,ct=g(()=>{"use strict";he();le();ze();bt="basicStackedToolbarExtensionShowOverlay",Ke=class r extends F{static basicTemplate=Eu`<select title="position" id="position" style="pointer-events:auto;height:24px;width:80px;padding:0;font-weight:900;text-transform:uppercase;margin-left:5px;margin-right:10px"><option>static</option><option>relative</option><option>absolute</option><option>fixed</option></select><node-projects-image-button-list-selector id="inline" no-value-in-header property="inline"><img data-value="block" title="block" src="${E}images/display/block.svg"> <img data-value="inline" title="inline" src="${E}images/display/inline.svg"></node-projects-image-button-list-selector><select title="display" id="displayType" style="pointer-events:auto;height:24px;width:80px;padding:0;font-weight:900;text-transform:uppercase;margin-left:5px;margin-right:10px"><option>block</option><option>flex</option><option>grid</option></select>`;static toolBars=[];_toolbar;_size={width:220,height:30};_display;_inline;constructor(e,t,i){super(e,t,i)}extend(e,t){let i=getComputedStyle(this.extendedItem.element);this._display=i.display.replace("inline-","").replace("inline","block"),this._inline=i.display.startsWith("inline")?"inline":"block",this._toolbar=this.createToolbar(this.constructor.template,this._size.width,this._size.height),r.toolBars.push(this._toolbar);let n=this._toolbar.getById("position");n&&(n.value=i.position,n.onchange=async()=>{await this.extendedItem.updateStyleInSheetOrLocalAsync("position",n.value),this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem])});let s=this._toolbar.getById("displayType");s&&(s.value=this._display,s.onchange=async()=>{this._display=s.value,await this.updateDisplayValue(),this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem])});let o=this._toolbar.getById("inline");o&&(o.value=this._inline,o.addEventListener("value-changed",async()=>{this._inline=o.value,this._inline&&i.position==="absolute"&&this.extendedItem.setStyle("position","static"),await this.updateDisplayValue(),this.extensionManager.reapplyAllAppliedExtentions([this.extendedItem])}))}async updateDisplayValue(){let e=(this._inline=="inline"?"inline ":"")+this._display;e==="inline block"&&(e="inline"),await this.extendedItem.updateStyleInSheetOrLocalAsync("display",e)}refresh(e,t){if(t){let i=this.designerCanvas.getNormalizedEventCoordinates(t),n=0;for(let s=0;s<r.toolBars.length-1&&r.toolBars[s]!==this._toolbar;s++)n+=this._toolbar.children[0].getBoundingClientRect().height+4;this._toolbar.updatePosition({x:i.x-16/this.designerCanvas.zoomFactor,y:i.y-n-(this._size.height+14)/this.designerCanvas.zoomFactor})}}_addStyleButton(e){let t=getComputedStyle(this.extendedItem.element),i=this._toolbar.getById(e);i.addEventListener("value-changed",async()=>{await this.extendedItem.updateStyleInSheetOrLocalAsync(e,i.value)}),i.value=t[e]}dispose(){r.toolBars.splice(r.toolBars.indexOf(this._toolbar),1),this._removeAllOverlays()}}});import{html as G_}from"@node-projects/base-custom-webcomponent";var xa,id=g(()=>{"use strict";ct();he();xa=class extends Ke{static template=G_`<div style="height:100%;width:100%">${Ke.basicTemplate} <select title="display" id="gridType" style="pointer-events:auto;height:24px;width:60px;padding:0;margin-right:10px"><option>1x1</option><option>1x16</option><option>2x8</option><option>4x4</option><option>8x2</option><option>16x1</option><option>custom</option></select><node-projects-image-button-list-selector property="align-content" no-value-in-header id="align-content"><img title="center" data-value="center" src="${E}images/chromeDevtools/align-content-center-icon.svg"> <img title="space-around" data-value="space-around" src="${E}images/chromeDevtools/align-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${E}images/chromeDevtools/align-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${E}images/chromeDevtools/align-content-space-between-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/align-content-stretch-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-content" no-value-in-header id="justify-content"><img title="start" data-value="start" src="${E}images/chromeDevtools/justify-content-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/justify-content-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/justify-content-end-icon.svg"> <img title="space-around" data-value="space-around" src="${E}images/chromeDevtools/justify-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${E}images/chromeDevtools/justify-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${E}images/chromeDevtools/justify-content-space-between-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="align-items" no-value-in-header id="align-items"><img title="start" data-value="start" src="${E}images/chromeDevtools/align-items-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/align-items-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/align-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/align-items-stretch-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${E}images/chromeDevtools/align-items-baseline-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-items" no-value-in-header id="justify-items"><img title="start" data-value="start" src="${E}images/chromeDevtools/justify-items-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/justify-items-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/justify-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/justify-items-stretch-icon.svg"></node-projects-image-button-list-selector></div>`;constructor(e,t,i){super(e,t,i),this._size.width=624}extend(e,t){super.extend(e,t);let i=getComputedStyle(this.extendedItem.element),n=this._toolbar.getById("gridType"),s=document.createElement("option");s.innerText=i.gridTemplateColumns.split(" ").length+"x"+i.gridTemplateRows.split(" ").length,n.insertAdjacentElement("afterbegin",s),n.selectedIndex=0,n.onchange=async()=>{if(n.value=="custom"){let o=prompt("Number of columns?","4");if(!o)return;let a=prompt("Number of rows?","4");if(!a)return;let l=this.extendedItem.openGroup("change grid type");await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-columns","repeat("+o+", 1fr)"),await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-rows","repeat("+a+", 1fr)"),l.commit()}else{let o=n.value.split("x"),a=this.extendedItem.openGroup("change grid type");await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-columns","repeat("+o[0]+", 1fr)"),await this.extendedItem.updateStyleInSheetOrLocalAsync("grid-template-rows","repeat("+o[1]+", 1fr)"),a.commit()}},this._addStyleButton("align-content"),this._addStyleButton("justify-content"),this._addStyleButton("align-items"),this._addStyleButton("justify-items"),this.refresh(e,t)}}});var ba,nd=g(()=>{"use strict";id();q();ct();ba=class{shouldExtend(e,t,i){if(i.nodeType===k.Element){let n=getComputedStyle(i.element).display;if(n==="grid"||n==="inline-grid")return t.instanceServiceContainer.designContext.extensionOptions[bt]!==!1}return!1}getExtension(e,t,i){return new xa(e,t,i)}}});import{html as W_}from"@node-projects/base-custom-webcomponent";var wa,rd=g(()=>{"use strict";he();ct();wa=class extends Ke{static template=W_`<div style="height:100%;width:100%">${Ke.basicTemplate}<node-projects-image-button-list-selector property="direction" no-value-in-header id="flex-direction"><img title="row" data-value="row" src="${E}images/chromeDevtools/flex-direction-row-icon.svg"> <img title="column" data-value="column" src="${E}images/chromeDevtools/flex-direction-column-icon.svg"> <img title="row-reverse" data-value="row-reverse" style="transform:scaleX(-1)" src="${E}images/chromeDevtools/flex-direction-row-icon.svg"> <img title="column-reverse" data-value="column-reverse" style="transform:scaleY(-1)" src="${E}images/chromeDevtools/flex-direction-column-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="wrap" no-value-in-header id="flex-wrap"><img title="nowrap" data-value="nowrap" src="${E}images/chromeDevtools/flex-wrap-nowrap-icon.svg"> <img title="wrap" data-value="wrap" src="${E}images/chromeDevtools/flex-wrap-wrap-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="align-content" no-value-in-header id="align-content"><img title="start" data-value="start" src="${E}images/chromeDevtools/align-content-flex-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/align-content-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/align-content-flex-end-icon.svg"> <img title="space-around" data-value="space-around" src="${E}images/chromeDevtools/align-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${E}images/chromeDevtools/align-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${E}images/chromeDevtools/align-content-space-between-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/align-content-stretch-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-content" no-value-in-header id="justify-content"><img title="start" data-value="start" src="${E}images/chromeDevtools/justify-content-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/justify-content-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/justify-content-end-icon.svg"> <img title="space-around" data-value="space-around" src="${E}images/chromeDevtools/justify-content-space-around-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${E}images/chromeDevtools/justify-content-space-evenly-icon.svg"> <img title="space-between" data-value="space-between" src="${E}images/chromeDevtools/justify-content-space-between-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="align-items" no-value-in-header id="align-items"><img title="start" data-value="start" src="${E}images/chromeDevtools/align-items-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/align-items-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/align-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/align-items-stretch-icon.svg"> <img title="space-evenly" data-value="space-evenly" src="${E}images/chromeDevtools/align-items-baseline-icon.svg"></node-projects-image-button-list-selector></div>`;constructor(e,t,i){super(e,t,i),this._size.width=625}extend(e,t){super.extend(e,t),this._addFlexDirectionButton(),this._addStyleButton("flex-wrap"),this._addStyleButton("align-content"),this._addStyleButton("justify-content"),this._addStyleButton("align-items"),this.refresh(e,t)}_addFlexDirectionButton(){let e=getComputedStyle(this.extendedItem.element),t=this._toolbar.getById("flex-direction");t.addEventListener("value-changed",async()=>{await this.extendedItem.updateStyleInSheetOrLocalAsync("flex-direction",t.value),this.rotateImagesAcordingFlexDirection(t.value)}),t.value=e["flex-direction"],this.rotateImagesAcordingFlexDirection(t.value)}rotateImagesAcordingFlexDirection(e){let t=0;(e=="column"||e=="column-reverse")&&(t=-90),this._toolbar.getById("flex-wrap").querySelectorAll("img").forEach(i=>i.style.rotate=t+"deg"),this._toolbar.getById("align-content").querySelectorAll("img").forEach(i=>i.style.rotate=t+"deg"),this._toolbar.getById("justify-content").querySelectorAll("img").forEach(i=>i.style.rotate=t+"deg"),this._toolbar.getById("align-items").querySelectorAll("img:nth-child(-n+4)").forEach(i=>i.style.rotate=t+"deg")}}});var Sa,sd=g(()=>{"use strict";rd();q();ct();Sa=class{shouldExtend(e,t,i){if(i.nodeType===k.Element){let n=getComputedStyle(i.element).display;if(n==="flex"||n==="inline-flex")return t.instanceServiceContainer.designContext.extensionOptions[bt]!==!1}return!1}getExtension(e,t,i){return new wa(e,t,i)}}});import{html as j_}from"@node-projects/base-custom-webcomponent";var Ca,od=g(()=>{"use strict";ct();Ca=class extends Ke{static template=j_`<div style="height:100%;width:100%">${Ke.basicTemplate}</div>`;constructor(e,t,i){super(e,t,i)}extend(e,t){super.extend(e,t),this.refresh(e,t)}}});var Ea,ad=g(()=>{"use strict";od();q();ct();Ea=class{shouldExtend(e,t,i){if(i.nodeType===k.Element){let n=getComputedStyle(i.element).display;if(n==="block"||n==="inline"||n==="inline-block")return t.instanceServiceContainer.designContext.extensionOptions[bt]!==!1}return!1}getExtension(e,t,i){return new Ca(e,t,i)}}});var bi,ld=g(()=>{"use strict";Ao();bi=class{_title;_contextMenus;constructor(e,...t){this._title=e,this._contextMenus=t}shouldProvideContextmenu(e,t,i,n){return this._contextMenus.some(s=>!(s instanceof Te)&&s.shouldProvideContextmenu(e,t,i,n))}provideContextMenuItems(e,t,i,n){return[{title:this._title,children:this._contextMenus.map(s=>s.shouldProvideContextmenu(e,t,i,n)?s.provideContextMenuItems(e,t,i,n):[]).flat()}]}}});import{html as Y_}from"@node-projects/base-custom-webcomponent";var Pa,cd=g(()=>{"use strict";he();ct();Pa=class extends Ke{static template=Y_`<div style="height:100%;width:100%"><div style="display:flex;flex-direction:column"><span style="font-size:10px;color:#00aff0">column:</span> <input type="text" title="column" id="gridColumn" style="pointer-events:auto;height:12px;width:45px;padding:0;margin-right:5px"></div><div style="display:flex;flex-direction:column"><span style="font-size:10px;color:#00aff0">row:</span> <input type="text" title="column" id="gridRow" style="pointer-events:auto;height:12px;width:45px;padding:0;margin-right:10px"></div><node-projects-image-button-list-selector property="align-self" no-value-in-header id="align-self"><img title="start" data-value="start" src="${E}images/chromeDevtools/align-items-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/align-items-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/align-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/align-items-stretch-icon.svg"></node-projects-image-button-list-selector><node-projects-image-button-list-selector property="justify-self" no-value-in-header id="justify-self"><img title="start" data-value="start" src="${E}images/chromeDevtools/justify-items-start-icon.svg"> <img title="center" data-value="center" src="${E}images/chromeDevtools/justify-items-center-icon.svg"> <img title="end" data-value="end" src="${E}images/chromeDevtools/justify-items-end-icon.svg"> <img title="stretch" data-value="stretch" src="${E}images/chromeDevtools/justify-items-stretch-icon.svg"></node-projects-image-button-list-selector></div>`;constructor(e,t,i){super(e,t,i),this._size.width=250}extend(e,t){super.extend(e,t);let i=getComputedStyle(this.extendedItem.element),n=this._toolbar.getById("gridColumn");n&&(n.value=i.gridColumn,n.onkeyup=async o=>{o.key==="Enter"&&await this.extendedItem.updateStyleInSheetOrLocalAsync("gridColumn",n.value)});let s=this._toolbar.getById("gridRow");s&&(s.value=i.gridColumn,s.onkeyup=async o=>{o.key==="Enter"&&await this.extendedItem.updateStyleInSheetOrLocalAsync("gridRow",s.value)}),this._addStyleButton("align-self"),this._addStyleButton("justify-self"),this.refresh(e,t)}}});var Ia,hd=g(()=>{"use strict";q();cd();ct();Ia=class{shouldExtend(e,t,i){if(i.nodeType===k.Element&&i.parent){let n=i.parent?.getComputedStyle();if(n!=null&&(n.display==="grid"||n.display==="inline-grid"))return t.instanceServiceContainer.designContext.extensionOptions[bt]!==!1}return!1}getExtension(e,t,i){return new Pa(e,t,i)}}});var Da,pd=g(()=>{"use strict";ct();ai();Da=class extends tt{constructor(){super(bt,"T","show Toolbars")}}});var ka,dd=g(()=>{"use strict";le();se();ka=class extends F{constructor(e,t,i){super(e,t,i)}_path;_path2;extend(e,t){this.refresh(e,t)}refresh(e,t){let i=getComputedStyle(this.extendedItem.element);if(i.padding!=="0px"){let n=Number.parseFloat(i.paddingLeft.replace("px","")),s=Number.parseFloat(i.paddingTop.replace("px","")),o=Number.parseFloat(i.paddingRight.replace("px","")),a=Number.parseFloat(i.paddingBottom.replace("px",""));if(n+=Number.parseFloat(i.borderLeftWidth.replace("px","")),s+=Number.parseFloat(i.borderTopWidth.replace("px","")),o+=Number.parseFloat(i.borderRightWidth.replace("px","")),a+=Number.parseFloat(i.borderBottomWidth.replace("px","")),!isNaN(n)&&!isNaN(s)&&!isNaN(o)&&!isNaN(a)){let l=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!isNaN(l.p1.x)&&this._valuesHaveChanges(n,s,o,a,l.p1.x,l.p1.y,l.p2.x,l.p2.y,l.p3.x,l.p3.y,l.p4.x,l.p4.y)){let c=this.extendedItem.element.getBoxQuads({box:"content",relativeTo:this.designerCanvas.canvas})[0],h="M"+[l.p1,l.p2,l.p3,l.p4].map(p=>p.x+","+p.y).join(" ")+"Z ";h+="M"+[c.p1,c.p2,c.p3,c.p4].map(p=>p.x+","+p.y).join(" ")+"Z ",this._path=this._drawPath(h,"svg-padding-fill",this._path,T.Background),this._path2=this._drawPath(h,"svg-padding",this._path2,T.Background)}}}}dispose(){this._removeAllOverlays()}}});import{css as Um}from"@node-projects/base-custom-webcomponent";var Aa,ud=g(()=>{"use strict";q();dd();qt();Aa=class{shouldExtend(e,t,i){return i.nodeType==k.Element}getExtension(e,t,i){return new ka(e,t,i)}static style=Um`.svg-padding{fill:#32cd3266;fill-rule:evenodd}`;style=Um`.svg-padding-fill{fill:#32cd3266;fill-rule:evenodd}.svg-padding{fill:#32cd32FF;fill-rule:evenodd;mask:url(#mask-stripe-padding)}`;static svgDefs=fi`<pattern id="pattern-stripe-padding" patternUnits="userSpaceOnUse" width="10" height="10" patternTransform="rotate(45)" class="pattern"><line x1="0" y="0" x2="0" y2="10" stroke="color(display-p3 1 0 1 / 80%)" stroke-width="1"></line></pattern><mask id="mask-stripe-padding"><rect x="0" y="0" width="100%" height="100%" fill="url(#pattern-stripe-padding)"></mask>`}});var Ta,md=g(()=>{"use strict";me();gi();le();Ta=class extends F{_actionModeStarted;_initialPoint;_circle1;_circle2;_circle3;_circle4;_circle5;_circle6;_circle7;_circle8;_initialComputedTransformOrigins;_initialTransformOrigins;_styleBackup;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(isNaN(i.p1.x)||isNaN(i.p2.x)){this.remove();return}this._valuesHaveChanges(this.designerCanvas.zoomFactor,i.p1.x,i.p1.y,i.p2.x,i.p2.y,i.p4.x,i.p4.y,i.p3.x,i.p3.y)&&(this._circle1=this._drawResizerOverlay(i.p1.x,i.p1.y,"nw-resize",this._circle1),this._circle2=this._drawResizerOverlay(i.p1.x+(i.p2.x-i.p1.x)/2,i.p1.y+(i.p2.y-i.p1.y)/2,"n-resize",this._circle2),this._circle3=this._drawResizerOverlay(i.p2.x,i.p2.y,"ne-resize",this._circle3),this._circle4=this._drawResizerOverlay(i.p1.x+(i.p4.x-i.p1.x)/2,i.p1.y+(i.p4.y-i.p1.y)/2,"w-resize",this._circle4),this._circle5=this._drawResizerOverlay(i.p4.x,i.p4.y,"sw-resize",this._circle5),this._circle6=this._drawResizerOverlay(i.p4.x+(i.p3.x-i.p4.x)/2,i.p4.y+(i.p3.y-i.p4.y)/2,"s-resize",this._circle6),this._circle8=this._drawResizerOverlay(i.p2.x+(i.p3.x-i.p2.x)/2,i.p2.y+(i.p3.y-i.p2.y)/2,"e-resize",this._circle8),this._circle7=this._drawResizerOverlay(i.p3.x,i.p3.y,"se-resize",this._circle7))}_drawResizerOverlay(e,t,i,n){let s=this._drawCircle(e,t,this.designerCanvas.serviceContainer.options.resizerPixelSize/this.designerCanvas.zoomFactor,"svg-grid-resizer",n);return s.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),n||(s.addEventListener(P.PointerDown,o=>this._pointerActionTypeResize(s,o,i)),s.addEventListener(P.PointerMove,o=>this._pointerActionTypeResize(s,o,i)),s.addEventListener(P.PointerUp,o=>this._pointerActionTypeResize(s,o,i))),s.style.cursor=i,s}_pointerActionTypeResize(e,t,i){t.stopPropagation();let n=this.designerCanvas.getNormalizedEventCoordinates(t);switch(t.type){case P.PointerDown:this._styleBackup=this.extendedItem.element.getAttribute("style"),t.target.setPointerCapture(t.pointerId),this._initialPoint=n,this._actionModeStarted=i,this._initialComputedTransformOrigins=[],this._initialTransformOrigins=[];let s=getComputedStyle(this.extendedItem.element).transformOrigin.split(" ").map(u=>parseFloat(u.replace("px",""))),o=new DOMPoint(s[0],s[1]);this._initialComputedTransformOrigins.push(o),this._initialTransformOrigins.push(this.extendedItem.element.style.transformOrigin);break;case P.PointerMove:if(this._initialPoint){let u=0,m=0,f=lt(this.extendedItem.parent),y=Pn(this.extendedItem.parent,this.designerCanvas.getNormalizedEventCoordinates(t)),v=getComputedStyle(this.extendedItem.element);this.extendedItem.element.style.gridColumnStart=v.gridColumnStart,this.extendedItem.element.style.gridColumnEnd=v.gridColumnEnd==="auto"?""+(parseInt(v.gridColumnStart)+1):v.gridColumnEnd,this.extendedItem.element.style.gridRowStart=v.gridRowStart,this.extendedItem.element.style.gridRowEnd=v.gridRowEnd==="auto"?""+(parseInt(v.gridRowStart)+1):v.gridRowEnd,(this._actionModeStarted=="nw-resize"||this._actionModeStarted=="w-resize"||this._actionModeStarted=="sw-resize")&&(this.extendedItem.element.style.gridColumnStart=""+Cm(f,y.x)),(this._actionModeStarted=="nw-resize"||this._actionModeStarted=="n-resize"||this._actionModeStarted=="ne-resize")&&(this.extendedItem.element.style.gridRowStart=""+Pm(f,y.y)),(this._actionModeStarted=="se-resize"||this._actionModeStarted=="e-resize"||this._actionModeStarted=="ne-resize")&&(u=Sm(f,y.x),this.extendedItem.element.style.gridColumnEnd=""+(u+2)),(this._actionModeStarted=="sw-resize"||this._actionModeStarted=="s-resize"||this._actionModeStarted=="se-resize")&&(m=Em(f,y.y),this.extendedItem.element.style.gridRowEnd=""+(m+2));let C=[this.extendedItem,this.extendedItem.parent];this.extensionManager.refreshExtensions(C)}break;case P.PointerUp:t.target.releasePointerCapture(t.pointerId);let a=getComputedStyle(this.extendedItem.element),l=a.gridColumnStart,c=a.gridColumnEnd,h=a.gridRowStart,p=a.gridRowEnd;this._styleBackup?this.extendedItem.element.setAttribute("style",this._styleBackup):this.extendedItem.element.removeAttribute("style");let d=this.extendedItem.openGroup("Resize <"+this.extendedItem.name+">");this.extendedItem.setStyle("gridColumnStart",l),this.extendedItem.setStyle("gridColumnEnd",c),this.extendedItem.setStyle("gridRowStart",h),this.extendedItem.setStyle("gridRowEnd",p),d.commit(),this._initialPoint=null;break}}dispose(){this._removeAllOverlays()}}});import{css as U_}from"@node-projects/base-custom-webcomponent";var Ma,fd=g(()=>{"use strict";q();md();Ma=class{shouldExtend(e,t,i){return i.nodeType===k.Element&&i.parent?.nodeType===k.Element&&getComputedStyle(i.parent.element).display==="grid"}getExtension(e,t,i){return new Ta(e,t,i)}static style=U_`.svg-grid-resizer{stroke:#3899ec;fill:#fff;pointer-events:auto}`}});var La,gd=g(()=>{"use strict";Mt();q();he();La=class{shouldProvideContextmenu(e,t,i,n){return t.readOnly?!1:i?.instanceServiceContainer.selectionService.selectedElements.length>1?!i?.isRootItem&&i?.nodeType==k.Element:!1}provideContextMenuItems(e,t,i){return[{title:"align left",icon:`<img src="${E+"icons/alignHorizontalLeft.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeLeft})}},{title:"align center",icon:`<img src="${E+"icons/alignHorizontalCenter.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeCenter})}},{title:"align right",icon:`<img src="${E+"icons/alignHorizontalRight.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeRight})}},{title:"distribute horizontal",icon:`<img src="${E+"icons/horizontalDistribute.svg"}">`,action:()=>{t.executeCommand({type:A.distributeHorizontal})}},{title:"align top",icon:`<img src="${E+"icons/alignVerticalTop.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeTop})}},{title:"align middle",icon:`<img src="${E+"icons/alignVerticalCenter.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeMiddle})}},{title:"align bottom",icon:`<img src="${E+"icons/alignVerticalBottom.svg"}">`,action:()=>{t.executeCommand({type:A.arrangeBottom})}},{title:"distribute vertical",icon:`<img src="${E+"icons/verticalDistribute.svg"}">`,action:()=>{t.executeCommand({type:A.distributeVertical})}}]}}});var Oa,yd=g(()=>{"use strict";fe();ve();Re();Ie();Oa=class extends re{name="webcomponent";getRefreshMode(e){return Y.full}isHandledElement(e){let t=e.element.constructor?.observedAttributes;return!!(t&&t.length>0)}async getProperty(e,t){return(await this.getProperties(e)).find(i=>i.name==t)}async getProperties(e){return(e.element.constructor?.observedAttributes).map(i=>({name:z.dashToCamelCase(i),type:"string",service:this,propertyType:_.propertyAndAttribute}))}}});var Na,vd=g(()=>{"use strict";le();Na=class extends F{constructor(e,t,i){super(e,t,i)}_path;_rect;_clickRect;_g;extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(i&&!isNaN(i.p2.x)&&this._valuesHaveChanges(i.p1.x,i.p1.y,i.p2.x,i.p2.y,this.designerCanvas.scaleFactor)){let n=Math.atan2(i.p2.y-i.p1.y,i.p2.x-i.p1.x)*180/Math.PI,s=15/this.designerCanvas.scaleFactor;this._rect=this._drawRect(0,0,s,s,"svg-previous-select",this._rect),this._clickRect=this._drawRect(0,0,s,s,"svg-invisible",this._clickRect),this._g||(this._g=document.createElementNS("http://www.w3.org/2000/svg","g"),this._g.setAttribute("class","svg-previous-select"),this._path=document.createElementNS("http://www.w3.org/2000/svg","path"),this._path.setAttribute("d","m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z"),this._g.appendChild(this._rect),this._g.appendChild(this._path),this._addOverlay(this._g),this._clickRect.onpointerdown=o=>{o.preventDefault(),o.stopPropagation(),this.extendedItem.instanceServiceContainer.selectionService.setSelectedElements([this.extendedItem.parent])},this._clickRect.onpointermove=o=>{o.preventDefault(),o.stopPropagation()},this._g.appendChild(this._clickRect)),this._path.style.scale=(.6/this.designerCanvas.scaleFactor).toString(),this._g.style.translate=i.p2.x-14.5/this.designerCanvas.scaleFactor+"px "+(i.p2.y-15/this.designerCanvas.scaleFactor)+"px",this._g.style.rotate=n+"deg",this._g.style.transformOrigin="100% 100%",this._g.style.transformBox="fill-box"}}dispose(){this._removeAllOverlays()}}});import{css as X_}from"@node-projects/base-custom-webcomponent";var Va,_d=g(()=>{"use strict";vd();Va=class{shouldExtend(e,t,i){return!i.isRootItem&&!(i.element instanceof HTMLTemplateElement)}getExtension(e,t,i){return new Na(e,t,i)}static style=X_`rect.svg-previous-select{stroke:none;fill:#3899ec;pointer-events:auto}g.svg-previous-select{fill:#fff;pointer-events:auto}`}});var Ra,xd=g(()=>{"use strict";q();Ra=class{shouldProvideContextmenu(e,t,i,n){return i!=null&&i.nodeType==k.Element}provideContextMenuItems(e,t,i){return[{title:":hover",action:()=>{i.cssForceHover=!i.cssForceHover},checked:i.cssForceHover},{title:":active",action:()=>{i.cssForceActive=!i.cssForceActive},checked:i.cssForceActive},{title:":visited",action:()=>{i.cssForceVisited=!i.cssForceVisited},checked:i.cssForceVisited},{title:":focus",action:()=>{i.cssForceFocus=!i.cssForceFocus},checked:i.cssForceFocus},{title:":focus-within",action:()=>{i.cssForceFocusWithin=!i.cssForceFocusWithin},checked:i.cssForceFocusWithin},{title:":focus-visible",action:()=>{i.cssForceFocusVisible=!i.cssForceFocusVisible},checked:i.cssForceFocusVisible}]}}});var za,bd=g(()=>{"use strict";jt();za=class{constructor(){}provideButtons(e,t){let i=document.createElement("div");return i.innerHTML="O",i.title="options",i.className="toolbar-control",i.onclick=n=>{this.showCtxMenu(n,t)},i.oncontextmenu=n=>{n.preventDefault(),this.showCtxMenu(n,t)},[i]}prepareContextMenu(e,t){return[{title:"simulate hover on hover",checked:t.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover,action:()=>{t.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover=!t.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover}},{title:"select unhitable elements",checked:t.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements,action:()=>{t.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements=!t.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements}},{title:"pause animations",checked:t.pauseAnimations,action:()=>{t.pauseAnimations=!t.pauseAnimations}},{title:"hide overflowing content",checked:t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent,action:()=>{if(t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent=!t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent,t.instanceServiceContainer.designContext.extensionOptions.hideOverflowingContent)for(let n of t.rootDesignItem.children(!0))n.element instanceof HTMLElement&&(n.element.style.overflow="hidden",n.element.style.whiteSpace="nowrap");else for(let n of t.rootDesignItem.children(!0))n.element instanceof HTMLElement&&(n.element.style.overflow=n.hasStyle("overflow")?n.getStyle("overflow"):"",n.element.style.whiteSpace=n.hasStyle("white-space")?n.getStyle("white-space"):"")}}]}showCtxMenu(e,t){De.show(this.prepareContextMenu(e,t),e)}}});var Fa,wd=g(()=>{"use strict";oe();Fa=class{shouldProvideContextmenu(e,t,i,n){return n=="designer"}provideContextMenuItems(e,t,i){if(i){let n=[...i.element.children];if(n.length>0)return[{title:"children",children:[...n.map(s=>({title:"select: "+s.localName+(s.id?" (#"+s.id+")":""),action:()=>this._select(t,s)}))]}]}return[]}_select(e,t){let i=O.GetOrCreateDesignItem(t,t,e.serviceContainer,e.instanceServiceContainer);e.instanceServiceContainer.selectionService.setSelectedElements([i])}}});var Ji,Sd=g(()=>{"use strict";me();Dt();Ji=class{cursor="pointer";_changeGroup;pointerEventHandler(e,t,i){e.serviceContainer.designerTools.get(ee.Pointer).pointerEventHandler(e,t,i)}keyboardEventHandler(e,t,i){t.preventDefault();let n=e.instanceServiceContainer.selectionService.primarySelection,s=getComputedStyle(n.element),o="";switch(t.key){case"ArrowLeft":o="margin-left";break;case"ArrowRight":o="margin-right";break;case"ArrowUp":o="margin-top";break;case"ArrowDown":o="margin-bottom";break}o&&(t.type==P.KeyDown&&!this._changeGroup&&(this._changeGroup=n.openGroup("change margin")),this._changeGroup&&(n.setStyleAsync(o,parseFloat(s[o])+(t.altKey?-1:1)+"px"),t.type==P.KeyUp&&(this._changeGroup.commit(),this._changeGroup=null)))}activated(e){}dispose(){this._changeGroup&&(this._changeGroup.abort(),this._changeGroup=null)}}});var Wn,Cd=g(()=>{"use strict";vt();Wn=class{_name;_icon;constructor(e,t){this._name=e,this._icon=t}provideButton(e){let t={};return t[this._name]={icon:this._icon},new we(e,t)}}});var qi,Ed=g(()=>{"use strict";me();Dt();qi=class{cursor="pointer";_changeGroup;pointerEventHandler(e,t,i){e.serviceContainer.designerTools.get(ee.Pointer).pointerEventHandler(e,t,i)}keyboardEventHandler(e,t,i){t.preventDefault();let n=e.instanceServiceContainer.selectionService.primarySelection,s=getComputedStyle(n.element),o="";switch(t.key){case"ArrowLeft":o="padding-left";break;case"ArrowRight":o="padding-right";break;case"ArrowUp":o="padding-top";break;case"ArrowDown":o="padding-bottom";break}o&&(t.type==P.KeyDown&&!this._changeGroup&&(this._changeGroup=n.openGroup("change padding")),this._changeGroup&&(n.setStyleAsync(o,parseFloat(s[o])+(t.altKey?-1:1)+"px"),t.type==P.KeyUp&&(this._changeGroup.commit(),this._changeGroup=null)))}activated(e){}dispose(){this._changeGroup&&(this._changeGroup.abort(),this._changeGroup=null)}}});var en,Ba=g(()=>{"use strict";oe();en=class{createDesignItem(e,t,i,n){return new O(e,t,i,n)}handleSpecialAttributes(e,t){e==Li?(t.element instanceof(t.node.ownerDocument.defaultView??window).HTMLElement||t.element instanceof(t.node.ownerDocument.defaultView??window).SVGElement)&&(t.hasAttribute(Li)?t.element.style.display="none":t.element.style.display=t.getStyle("display")??""):e==Oi?(t.element instanceof(t.node.ownerDocument.defaultView??window).HTMLElement||t.element instanceof(t.node.ownerDocument.defaultView??window).SVGElement)&&(t.hasAttribute(Oi)?t.element.style.opacity="0.3":t.element.style.opacity=t.getStyle("opacity")??""):e==ci&&(t.element instanceof(t.node.ownerDocument.defaultView??window).HTMLElement||t.element instanceof(t.node.ownerDocument.defaultView??window).SVGElement)&&(t.hasAttribute(ci)?t.element.style.pointerEvents="none":requestAnimationFrame(()=>t.element.style.pointerEvents="auto"))}}});import{DomHelper as $_}from"@node-projects/base-custom-webcomponent";var Ha,Pd=g(()=>{"use strict";Ha=class{constructor(e){this.title="Delete Items",this.deletedItems=e}title;get affectedItems(){return this.deletedItems}undo(){for(let e=0;e<this.deletedItems.length;e++)this._parentItems[e]._insertChildInternal(this.deletedItems[e],this._parentIndexes[e]);return[{changeType:"added",designItems:this.deletedItems}]}do(){this._parentItems=[],this._parentIndexes=[];for(let e=0;e<this.deletedItems.length;e++)this._parentItems.push(this.deletedItems[e].parent),this._parentIndexes.push($_.nodeIndex(this.deletedItems[e].element));for(let e=0;e<this.deletedItems.length;e++)this.deletedItems[e].parent._removeChildInternal(this.deletedItems[e]);return[{changeType:"removed",designItems:this.deletedItems}]}deletedItems;_parentItems;_parentIndexes;mergeWith(e){return!1}}});var Ga,Id=g(()=>{"use strict";Pd();Ga=class{removeItems(e){e[0].instanceServiceContainer.undoService.execute(new Ha(e)),e[0].serviceContainer.referencesChangedService&&e[0].serviceContainer.referencesChangedService.notifyReferencesChanged(e.map(t=>({designItem:t,type:"deleted"})))}}});var Wa,Dd=g(()=>{"use strict";Wa=class{async provideMiniatureView(e){let t=document.createDocumentFragment();for(let i of e.rootDesignItem.children())t.appendChild(i.element.cloneNode(!0));return t}}});var wi,ja=g(()=>{"use strict";de();wi=class r{static _canvas;static _context;static _video;static _captureStream;static _disableStream(){r._captureStream.getTracks().forEach(e=>e.stop()),r._canvas=null}static get screenshotsEnabled(){return r._captureStream&&r._captureStream.active}static async enableScreenshots(e=document.body){if(r._captureStream&&!r._captureStream.active&&r._disableStream(),r._canvas==null){r._canvas=document.createElement("canvas"),r._context=r._canvas.getContext("2d"),r._video=document.createElement("video");let t={video:{cursor:"never",displaySurface:"browser"},audio:!1,selfBrowserSurface:"include",preferCurrentTab:!0};r._video.style.display="none",e.appendChild(r._video);try{r._captureStream=await navigator.mediaDevices.getDisplayMedia(t)}catch(n){throw r._canvas=null,n}if(r._captureStream.getVideoTracks()[0].getSettings().displaySurface!="browser")throw r._disableStream(),alert("You need to share the current Tab, for the screenshot API to work"),"You need to share the current Tab, for the screenshot API to work";r._video.srcObject=r._captureStream,r._video.play(),await r._sleep(2e3)}}static async takeScreenshot(e,t=100,i=100,n=document.body){await r.enableScreenshots(n);let s=Z(e);r._canvas.width=t,r._canvas.height=i,r._context.drawImage(r._video,0,0,1,1,0,0,t,i);let o=r._video.videoWidth/window.innerWidth,a=r._video.videoHeight/window.innerHeight;return r._context.drawImage(r._video,s.left*o,s.top*a,s.width*o,s.height*a,0,0,t,i),r._canvas.toDataURL("image/png")}static _sleep(e){let t=null,i=new Promise(n=>t=n);return window.setTimeout(t,e),i}}});var Ya,kd=g(()=>{"use strict";ja();ze();Ya=class{async takePng(e,t){if(!e||e.length===0)return null;let i=e[0].instanceServiceContainer.designerCanvas,n=e[0].instanceServiceContainer.selectionService,s=i.zoomFactor,o=i.canvasOffset,a=n.selectedElements;try{await wi.enableScreenshots(),i.disableBackgroud(),i.zoomFactor=1,t?.removeSelection&&n.setSelectedElements([]),i.canvasOffset={x:0,y:0},await mn();let l=1/0,c=1/0,h=-1/0,p=-1/0;for(let X of e){let J=i.getNormalizedElementCoordinates(X.element);l=Math.min(l,J.x),c=Math.min(c,J.y),h=Math.max(h,J.x+J.width),p=Math.max(p,J.y+J.height)}let d=t?.margin??0;l-=d,c-=d,h+=d,p+=d;let u=Math.ceil(h-l),m=Math.ceil(p-c),f=i.outercanvas2,y=f.offsetWidth,v=f.offsetHeight,C=1,w=y-2*C,b=v-2*C,S=Math.ceil(u/w),M=Math.ceil(m/b),D=window.devicePixelRatio||1,j=Math.ceil(y*D),H=Math.ceil(v*D),V=Math.ceil(C*D),K=j-2*V,Q=H-2*V,ce=document.createElement("canvas");ce.width=Math.ceil(u*D),ce.height=Math.ceil(m*D);let B=ce.getContext("2d"),ye=1e3;for(let X=0;X<M;X++)for(let J=0;J<S;J++){let Ge=l+J*w,Pe=c+X*b;i.canvasOffset={x:-(Ge-C),y:-(Pe-C)},await Pt(ye),ye=300;let Ze=await wi.takeScreenshot(f,j,H),Je=await this._loadImage(Ze);B.drawImage(Je,V,V,K,Q,J*K,X*Q,K,Q)}let te=await(await new Promise(X=>ce.toBlob(X,"image/png"))).arrayBuffer();return new Uint8Array(te)}finally{i.zoomFactor=s,i.canvasOffset=o,i.enableBackground(),t?.removeSelection&&n.setSelectedElements(a)}}_loadImage(e){return new Promise((t,i)=>{let n=new Image;n.onload=()=>t(n),n.onerror=i,n.src=e})}}});var Ua,Ad=g(()=>{"use strict";oe();Ua=class{async search(e,t,i){if(t!=""){let n=e.rootDesignItem.querySelectorAll(t),s=[];for(let o=0;o<n.length;o++){let a=O.GetDesignItem(n[o]);a&&s.push({designItem:a})}return s}return null}}});var Xa,Td=g(()=>{"use strict";Xa=class{_item;_shouldProvide;constructor(e,t){this._item=e,this._shouldProvide=t||(()=>!0)}shouldProvideContextmenu(e,t,i,n){return this._shouldProvide(e,t,i,n)}provideContextMenuItems(e,t,i,n){return[{...this._item,action:s=>this._item.action?.(s,t,i,n)}]}}});var tn,$a=g(()=>{"use strict";me();Tt();le();tn=class extends F{_outline;_handles=[];_handleCrossHorizontalLines=[];_handleCrossVerticalLines=[];_activeHandleIndex=null;_baseTransform="";_projectiveTransform="";_targetPoints=[];constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!i)return;let n=[i.p1,i.p2,i.p3,i.p4];if(n.some(s=>!Number.isFinite(s.x)||!Number.isFinite(s.y))){this.remove();return}if(this._valuesHaveChanges(this.designerCanvas.zoomFactor,...n.flatMap(s=>[s.x,s.y]))){this._outline=this._drawTransformedRect(i,"svg-primary-projective-outline",this._outline),this._outline.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),this._outline.style.pointerEvents="none";let s=5/this.designerCanvas.zoomFactor,o=s*.55;for(let a=0;a<n.length;a++){let l=a,c=n[a],h=this._handles[a];h?(h=this._drawCircle(c.x,c.y,s,"svg-primary-projective-handle",h),this._handles[a]=h):(h=this._drawCircle(c.x,c.y,s,"svg-primary-projective-handle"),h.addEventListener(P.PointerDown,u=>this._handlePointerEvent(l,u)),h.addEventListener(P.PointerMove,u=>this._handlePointerEvent(l,u)),h.addEventListener(P.PointerUp,u=>this._handlePointerEvent(l,u)),this._handles[a]=h),h.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),h.style.cursor="move";let p=this._handleCrossHorizontalLines[a];p=this._drawLine(c.x-o,c.y,c.x+o,c.y,"svg-primary-projective-handle-cross",p),p.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),p.style.pointerEvents="none",this._handleCrossHorizontalLines[a]=p;let d=this._handleCrossVerticalLines[a];d=this._drawLine(c.x,c.y-o,c.x,c.y+o,"svg-primary-projective-handle-cross",d),d.style.strokeWidth=(1/this.designerCanvas.zoomFactor).toString(),d.style.pointerEvents="none",this._handleCrossVerticalLines[a]=d}}}dispose(){this._activeHandleIndex=null,this._restorePersistedTransform(),this._removeAllOverlays()}_handlePointerEvent(e,t){t.stopPropagation();let i=t.target;switch(t.type){case P.PointerDown:if(!this._startDrag(e))return;i.setPointerCapture(t.pointerId),this._activeHandleIndex=e;break;case P.PointerMove:if(this._activeHandleIndex===e&&t.buttons>0){let n=this._getLocalPointerPoint(t);if(!n)return;this._targetPoints[e]=n,this._applyPreviewTransform()}break;case P.PointerUp:if(this._activeHandleIndex===e){let n=this._getLocalPointerPoint(t);n&&(this._targetPoints[e]=n,this._applyPreviewTransform()),i.releasePointerCapture(t.pointerId),this._commitTransform(),this._activeHandleIndex=null}break}}_startDrag(e){let{baseTransform:t,projectiveTransform:i}=this._parseTransform(this.extendedItem.getStyleFromSheetOrLocal("transform")??"");this._baseTransform=t,this._projectiveTransform=i;let n=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!n)return!1;let s=this.extendedItem.element;return s.style.transform=this._buildTransform(this._baseTransform,""),this._targetPoints=this._convertQuadToLocalPoints(n),this._targetPoints.length!==4||this._targetPoints.some(o=>!Number.isFinite(o.x)||!Number.isFinite(o.y))?(this._restorePersistedTransform(),!1):(s.style.transform=this._buildTransform(this._baseTransform,this._projectiveTransform),this._targetPoints[e]!=null)}_convertQuadToLocalPoints(e){return[e.p1,e.p2,e.p3,e.p4].map(t=>{let i=this.extendedItem.element.convertPointFromNode({x:t.x,y:t.y},this.designerCanvas.canvas);return{x:i.x,y:i.y}})}_getLocalPointerPoint(e){let t=this.extendedItem.element,i=t.style.transform;t.style.transform=this._buildTransform(this._baseTransform,"");let n=this.designerCanvas.getNormalizedEventCoordinates(e),s=t.convertPointFromNode({x:n.x,y:n.y},this.designerCanvas.canvas);return t.style.transform=i,!Number.isFinite(s.x)||!Number.isFinite(s.y)?null:{x:s.x,y:s.y}}_applyPreviewTransform(){let e=this._buildProjectiveTransform(this._targetPoints);e!=null&&(this._projectiveTransform=e,this.extendedItem.element.style.transform=this._buildTransform(this._baseTransform,this._projectiveTransform))}_commitTransform(){let e=this._buildProjectiveTransform(this._targetPoints);e!=null&&(this._projectiveTransform=e);let t=this._buildTransform(this._baseTransform,this._projectiveTransform);t?this.extendedItem.updateStyleInSheetOrLocal("transform",t):this.extendedItem.hasStyle("transform")?this.extendedItem.removeStyle("transform"):this.extendedItem.updateStyleInSheetOrLocal("transform",null),this._restorePersistedTransform()}_restorePersistedTransform(){let e=this.extendedItem.element;this.extendedItem.hasStyle("transform")?e.style.transform=this.extendedItem.getStyle("transform")??"":e.style.transform=""}_buildProjectiveTransform(e){let t=Fe(this.extendedItem.element);if(!t.width||!t.height||e.length!==4)return"";let i=[{x:0,y:0},{x:t.width,y:0},{x:t.width,y:t.height},{x:0,y:t.height}];if(this._pointsApproximatelyEqual(e,i))return"";let n=this._createProjectiveMatrix(e,t.width,t.height);if(!n)return null;let s=getComputedStyle(this.extendedItem.element).transformOrigin.split(" "),o={x:parseFloat(s[0])||0,y:parseFloat(s[1])||0},a=new DOMMatrix().translate(-o.x,-o.y).multiply(n).multiply(new DOMMatrix().translate(o.x,o.y));return this._serializeMatrix3d(a)}_createProjectiveMatrix(e,t,i){let[n,s,o,a]=e,l=s.x-o.x,c=a.x-o.x,h=n.x-s.x+o.x-a.x,p=s.y-o.y,d=a.y-o.y,u=n.y-s.y+o.y-a.y,m,f,y,v,C,w;if(Math.abs(h)<1e-8&&Math.abs(u)<1e-8)m=s.x-n.x,f=a.x-n.x,y=s.y-n.y,v=a.y-n.y,C=0,w=0;else{let M=l*d-c*p;if(Math.abs(M)<1e-8)return null;C=(h*d-c*u)/M,w=(l*u-h*p)/M,m=s.x-n.x+C*s.x,f=a.x-n.x+w*a.x,y=s.y-n.y+C*s.y,v=a.y-n.y+w*a.y}let b=new DOMMatrix([m/t,y/t,0,C/t,f/i,v/i,0,w/i,0,0,1,0,n.x,n.y,0,1]);return[b.m11,b.m12,b.m13,b.m14,b.m21,b.m22,b.m23,b.m24,b.m31,b.m32,b.m33,b.m34,b.m41,b.m42,b.m43,b.m44].some(M=>!Number.isFinite(M))?null:b}_serializeMatrix3d(e){return`matrix3d(${[e.m11,e.m12,e.m13,e.m14,e.m21,e.m22,e.m23,e.m24,e.m31,e.m32,e.m33,e.m34,e.m41,e.m42,e.m43,e.m44].map(i=>this._formatMatrixNumber(i)).join(", ")})`}_formatMatrixNumber(e){if(Math.abs(e)<1e-10)return"0";let t=e.toFixed(8);return t.includes(".")&&(t=t.replace(/0+$/,"").replace(/\.$/,"")),t==="-0"?"0":t}_buildTransform(e,t){let i=[];return e?.trim()&&i.push(e.trim()),t?.trim()&&i.push(t.trim()),i.join(" ").trim()}_parseTransform(e){if(!e||e==="none")return{baseTransform:"",projectiveTransform:""};let t=this._splitTransformFunctions(e);if(!t.length)return{baseTransform:e.trim(),projectiveTransform:""};let i=t[t.length-1],n=i.slice(0,i.indexOf("(")).trim().toLowerCase();return n==="matrix"||n==="matrix3d"?{baseTransform:t.slice(0,-1).join(" ").trim(),projectiveTransform:i.trim()}:{baseTransform:e.trim(),projectiveTransform:""}}_splitTransformFunctions(e){let t=[],i=-1,n=0;for(let s=0;s<e.length;s++){let o=e[s];o==="("?n++:o===")"?(n--,n===0&&i!==-1&&(t.push(e.slice(i,s+1).trim()),i=-1)):n===0&&i===-1&&o.trim()&&(i=s)}return!t.length&&e.trim()&&t.push(e.trim()),t}_pointsApproximatelyEqual(e,t){return e.length!==t.length?!1:e.every((i,n)=>{let s=t[n];return Math.abs(i.x-s.x)<.01&&Math.abs(i.y-s.y)<.01})}}});import{css as K_}from"@node-projects/base-custom-webcomponent";var Ka,Md=g(()=>{"use strict";$a();Ka=class{shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new tn(e,t,i)}static style=K_`.svg-primary-projective-handle{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto}.svg-primary-projective-handle-cross{stroke:#3899ec;fill:none;stroke-width:1;stroke-linecap:round;pointer-events:none}.svg-primary-projective-outline{stroke:#3899ec;fill:none;stroke-width:1;stroke-dasharray:4 2}`}});var Qa,Ld=g(()=>{"use strict";Qa=class{getEditor(e,t){if(e==="color"||e==="css-color"){let n=document.createElement("node-projects-color-input");return n.addEventListener("change",()=>t.changedCallback(n.value)),{element:n,getValue:()=>n.value,setValue:s=>{n.value=s}}}let i=document.createElement("input");return i.type=e,t.min!==void 0&&(i.min=t.min),t.max!==void 0&&(i.max=t.max),t.step!==void 0&&(i.step=t.step),i.addEventListener("change",n=>t.changedCallback(n.target.value)),{element:i,getValue:()=>i.value,setValue:n=>{i.value=n}}}}});function Za(r,e){return r.replaceAll(/:root\b/g,":host").replaceAll(":focus-within","["+e.forceFocusWithinAttributeName+"]").replaceAll(":focus-visible","["+e.forceFocusVisibleAttributeName+"]").replaceAll(":hover","["+e.forceHoverAttributeName+"]").replaceAll(":active","["+e.forceActiveAttributeName+"]").replaceAll(":visited","["+e.forceVisitedAttributeName+"]").replaceAll(":focus","["+e.forceFocusAttributeName+"]")}var Od=g(()=>{"use strict"});var Ja,Nd=g(()=>{"use strict";oe();Od();Ja=class{updateRenderedDesignItem(e){let t=this.getStyleDesignItem(e);if(!t)return;let i=this.patchStyleText([...t.children()].map(n=>n.content).join(""));this.updateStyleElementText(t.element,i),this.updateDeclarativeShadowStyle(t,i),t.instanceServiceContainer.designerCanvas.lazyTriggerReparseDocumentStylesheets()}updateRenderedNode(e){let t=e.ownerDocument?.defaultView??window;if(e instanceof t.HTMLStyleElement&&this.updateStyleElementText(e,this.patchStyleText(e.textContent)),e instanceof t.HTMLTemplateElement&&this.updateRenderedNode(e.content),"querySelectorAll"in e)for(let i of e.querySelectorAll("style"))this.updateStyleElementText(i,this.patchStyleText(i.textContent));return e}getStyleDesignItem(e){return e?.name=="style"?e:e?.parent?.name=="style"?e.parent:null}updateDeclarativeShadowStyle(e,t){let i=this.getDeclarativeShadowTemplateDesignItem(e);if(!i)return;let n=i.parent?.element;if(!n?.shadowRoot)return;let o=[...i.node.content.querySelectorAll("style")].indexOf(e.node),a=[...n.shadowRoot.querySelectorAll("style")];o>=0&&o<a.length?this.updateStyleElementText(a[o],t):this.updateRenderedNode(n.shadowRoot)}getDeclarativeShadowTemplateDesignItem(e){let t=e.parent;for(;t;){let i=t.node.ownerDocument.defaultView??window;if(t.node instanceof i.HTMLTemplateElement&&t.getAttribute("shadowrootmode")=="open")return t;t=t.parent}return null}updateStyleElementText(e,t){e.textContent!==t&&(e.textContent=t)}patchStyleText(e){return Za(e,{forceHoverAttributeName:at,forceActiveAttributeName:Yt,forceVisitedAttributeName:Ut,forceFocusAttributeName:Xt,forceFocusWithinAttributeName:$t,forceFocusVisibleAttributeName:Kt})}}});var Km={};qd(Km,{createDefaultServiceContainer:()=>Xm,default:()=>$m});function Xm(){let r=new lr,e=new gt;return r.register("containerService",e),r.register("containerService",new lo(e)),r.register("containerService",new ho(e)),r.register("propertyService",new Oa),r.register("propertyService",new dr),r.register("propertyService",new ur),r.register("propertyService",new mr),r.register("propertyService",new fr),r.register("propertyService",new fa),r.register("propertyService",new ns),r.register("propertyService",new jr),r.register("propertyGroupsService",new Xo),r.register("instanceService",new Ir),r.register("propertyEditorTypesService",new Wr),r.register("editorTypeService",new Qa),r.register("htmlWriterService",new Io),r.register("snaplinesProviderService",new po),r.register("htmlParserService",new Zt),r.register("renderedDesignItemService",new Ja),r.register("elementAtPointService",new co),r.register("externalDragDropService",new uo),r.register("dragDropService",new pa),r.register("copyPasteService",new vo),r.register("modelCommandService",new _o),r.register("demoProviderService",new da),r.register("eventsService",new Ne),r.register("designItemService",new en),r.register("deletionService",new Ga),r.register("miniatureViewService",new Wa),r.register("pngCreatorService",new Ya),r.register("searchService",new Ua),r.register("undoService",t=>new ta(t)),r.register("selectionService",t=>new na(t,!1)),r.register("designItemDocumentPositionService",t=>new aa(t)),r.sourceMapProviders.push(new ga),r.designerExtensions.set(I.Permanent,[new so]),r.designerExtensions.set(I.PrimarySelection,[new Vt(new ha,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement)]),r.designerExtensions.set(I.Selection,[new Vt(new ks,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement)]),r.designerExtensions.set(I.OnlyOneItemSelected,[new Vt(new ss,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement),new Vt(new Va,t=>!(t.node instanceof t.window.SVGElement)||t.node instanceof t.window.SVGSVGElement),new Vt(new xs,(t,i)=>i.activeTool instanceof Ji||i.activeTool instanceof qi,!0),new Vt(new Aa,(t,i)=>i.activeTool instanceof Ji||i.activeTool instanceof qi,!0),new ws,new _a,new Zi(new Ma,new Ts(!0)),new fs(!0),new Os]),r.designerExtensions.set(I.MultipleItemsSelected,[new Vs]),r.designerExtensions.set(I.PrimarySelectionRefreshed,[new Ia,new ba,new Sa,new Ea]),r.designerExtensions.set(I.PrimarySelectionAndCanBeEntered,[new vi,new oa,new Hn]),r.designerExtensions.set(I.PrimarySelectionContainerAndCanBeEntered,[new vi("lightgray","#8080802b"),new Hn]),r.designerExtensions.set(I.MouseOver,[new Cs]),r.designerExtensions.set(I.Placement,[new Ko]),r.designerExtensions.set(I.ContainerDrag,[new to]),r.designerExtensions.set(I.ContainerDragOverAndCanBeEntered,[new Zi(new vi,new Bn),new no]),r.designerExtensions.set(I.ContainerExternalDragOverAndCanBeEntered,[new Zi(new vi,new Bn)]),r.designerExtensions.set(I.Doubleclick,[new mo]),r.designerExtensions.set(I.ManualApplied,[new Ka]),r.designerPointerExtensions.push(),r.designerTools.set(ee.Pointer,new Es),r.designerTools.set(ee.DrawSelection,new Mn),r.designerTools.set(ee.DrawPath,new Is({interpolatePoints:!0})),r.designerTools.set(ee.DrawRect,new wo),r.designerTools.set(ee.DrawEllipsis,new So),r.designerTools.set(ee.DrawLine,new Co),r.designerTools.set(ee.Zoom,new Rs),r.designerTools.set(ee.Pan,new zs),r.designerTools.set(ee.RectangleSelector,new Mn),r.designerTools.set(ee.MagicWandSelector,new Qs),r.designerTools.set(ee.PickColor,new Zs),r.designerTools.set(ee.Text,new qs),r.designerTools.set(ee.DrawElementTool,ua),r.designerTools.set(ee.Margin,new Ji),r.designerTools.set(ee.Padding,new qi),r.designViewConfigButtons.push(new Nt(20),new bo,new Jo,new Nt(10),new qo,new Nt(10),new xr,new Nt(10),new Da,new Nt(30),new ma,new Nt(30),new za),r.designViewToolbarButtons.push(new No,new _t(22),new Fo,new _t(22),new Wn("Margin",E+"images/tools/Margin.svg"),new _t(22),new Wn("Padding",E+"images/tools/Padding.svg"),new _t(22),new Vo,new _t(22),new Ro,new _t(22),new zo,new _t(22),new la),r.designerContextMenuExtensions=[new bi("edit",new Fs,new Te,new Bs),new Te,new Xs,new Te,new bi("modify",new Lo,new Te,new $s,new Te,new La,new Te,new Xa({title:"3D transform",action:(t,i,n)=>{i.extensionManager.removeExtensions([n],!1,I.PrimarySelection),i.extensionManager.removeExtensions([n],!1,I.OnlyOneItemSelected),i.extensionManager.applyExtensionInstance(n,new tn(i.extensionManager,i,n),I.OnlyOneItemSelected)}})),new Te,new bi("view",new ra,new Mo),new Te,new bi("force",new Ra),new Te,new Ks,new ko,new Do,new Te,new Oo,new Te,new ao,new Fa],r}var $m,qa=g(()=>{"use strict";Hl();Wl();jl();Yl();Ul();ic();xc();bc();Bi();wn();Mc();st();Vc();$c();Zc();qc();th();Dt();nh();rh();oh();lh();hh();dh();uh();mh();fh();yh();Eh();Ph();Dh();kh();Ah();Th();Oh();Vh();zh();oo();Hh();Gh();Wh();jh();Yh();Uh();Xh();Kh();Zh();Jh();ep();tp();ip();np();sp();op();ap();Ao();lp();cp();hp();dp();up();mp();gp();yp();_p();bp();Dp();Ap();Zo();Lp();Op();Vp();Rp();wr();zp();Bp();Nn();Hp();Gp();Wp();Yp();Up();Gn();Xp();$p();Kp();Qp();ed();ya();td();nd();sd();ad();ld();hd();pd();ud();fd();gd();yd();_d();xd();bd();wd();Sd();Cd();he();Ed();Ba();Id();Dd();kd();Ad();Td();$a();Md();Ld();Nd();$m=Xm});import{BaseCustomWebComponentLazyAppend as Yf,css as Uf,TypedEvent as Xf,DomHelper as tu}from"@node-projects/base-custom-webcomponent";var Ct=class extends Yf{_selectedIndex=-1;_panels;_headerDiv;_moreDiv;_moreContainer;_elementMap=new WeakMap;_firstConnect=!0;static style=Uf`:host{height:100%}.outer{display:flex;flex-direction:column;height:100%;position:relative;overflow:hidden}.header{display:inline-flex;user-select:none;-webkit-user-select:none;flex-direction:row;cursor:pointer;height:30px;width:calc(100% - 30px);background-color:var(--dark-grey,#232733);overflow-x:auto;scrollbar-width:none}.header-more{right:0;top:0;width:30px;position:absolute;color:#fff;display:flex;justify-content:center;align-items:center;font-family:math}.header-more:hover{background:var(--light-grey,#383f52)}.more-container{z-index:1;user-select:none;-webkit-user-select:none;background-color:var(--dark-grey,#232733);right:0;top:30px;position:absolute;color:#fff;display:flex;flex-direction:column;align-items:flex-start;cursor:pointer}.more-container .tab-header{width:100%}.header::-webkit-scrollbar{display:none}.tab-header{height:30px;font-family:Arial;display:flex;justify-content:center;align-items:center;text-transform:uppercase;box-sizing:content-box;padding-left:5px;padding-right:5px;color:#fff;font-size:12px;font-weight:500;line-height:1.5;letter-spacing:1px;white-space:nowrap}.tab-header:hover{background:var(--light-grey,#383f52)}.selected{background:var(--medium-grey,#2f3545);box-shadow:inset 0 3px 0 var(--highlight-pink,#e91e63)}.panels{z-index:0;background:var(--medium-grey,#2f3545);height:calc(100% - 30px)}`;constructor(){super();let e=document.createElement("div");e.className="outer",this.shadowRoot.appendChild(e),this._headerDiv=document.createElement("div"),this._headerDiv.className="header",e.appendChild(this._headerDiv),this._moreDiv=document.createElement("div"),this._moreDiv.className="header header-more",this._moreDiv.innerText="<<",e.appendChild(this._moreDiv),this._moreContainer=document.createElement("div"),this._moreContainer.className="more-container",this._moreContainer.style.visibility="hidden",e.appendChild(this._moreContainer),this._moreDiv.onclick=()=>{this._moreContainer.children.length&&this._moreContainer.style.visibility=="hidden"?this._moreContainer.style.visibility="":this._moreContainer.style.visibility="hidden"},this._panels=document.createElement("div"),this._panels.className="panels",e.appendChild(this._panels);let t=document.createElement("slot");t.name="panels",this._panels.appendChild(t),new ResizeObserver(n=>{this._showHideHeaderItems()}).observe(this._headerDiv)}_showHideHeaderItems(){this._moreContainer.style.visibility="hidden";let e=0;tu.removeAllChildnodes(this._moreContainer),tu.removeAllChildnodes(this._headerDiv);let t=!0;for(let i of this.children)if(i.style.display!="none"){let n=i;!this._elementMap.has(n)&&t&&(this.refreshItems(),t=!1);let s=this._elementMap.get(n);this._moreContainer.appendChild(s),(this._headerDiv.children.length==0||e+s.clientWidth/2<this._headerDiv.clientWidth)&&(this._headerDiv.appendChild(s),e+=s.clientWidth)}}connectedCallback(){if(this._firstConnect){this.refreshItems(),this._firstConnect=!1;let e=this.getAttribute("selected-index");e&&(this.selectedIndex=parseInt(e))}}get selectedIndex(){return this._firstConnect?-1:this._selectedIndex}set selectedIndex(e){let t=this._selectedIndex;this._selectedIndex=e,this.children.length&&t!=this._selectedIndex&&this._selectedIndexChanged(t)}refreshItems(){this._headerDiv.innerHTML="";let e=0;for(let t of this.children)if(t.style.display!="none"){let i=t,n=document.createElement("div");n.innerText=i.dataset.title||i.title,n.title=i.dataset.title||i.title,n.className="tab-header";let s=e;n.onpointerdown=()=>{let o=this._selectedIndex;this._selectedIndex=s,this._headerDiv.children.length&&this._selectedIndexChanged(o,!0),this._moreContainer.style.visibility="hidden"},this._elementMap.set(i,n),this._headerDiv.appendChild(n),e++}this._showHideHeaderItems(),this._selectedIndexChanged()}_selectedIndexChanged(e,t=!1){let i=-1;for(let n of this.children)if(n.style.display!="none")if(i++,i==this._selectedIndex){n.slot!="panels"&&(n.slot="panels");let s=this._elementMap.get(n);s&&(s.classList.add("selected"),n.activated&&n.activated())}else{n.removeAttribute("slot");let s=this._elementMap.get(n);s&&s.classList.remove("selected")}this.onSelectedTabChanged.emit({newIndex:this._selectedIndex,oldIndex:e,changedViaClick:t}),this._moreContainer.style.visibility="hidden"}onSelectedTabChanged=new Xf};customElements.define("node-projects-designer-tab-control",Ct);import{BaseCustomWebComponentConstructorAppend as au,css as lu,html as cu,TypedEvent as iu}from"@node-projects/base-custom-webcomponent";var qn=class r{red=0;green=0;blue=0;hue=0;sat=0;lightness=0;whiteness=0;blackness=0;cyan=0;magenta=0;yellow=0;black=0;ncol="R";opacity=1;valid=!1;toRgbString(){return"rgb("+this.red+", "+this.green+", "+this.blue+")"}toRgbaString(){return"rgba("+this.red+", "+this.green+", "+this.blue+", "+this.opacity+")"}toHwbString(){return"hwb("+this.hue+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%)"}toHwbStringDecimal(){return"hwb("+this.hue+", "+this.whiteness+", "+this.blackness+")"}toHwbaString(){return"hwba("+this.hue+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%, "+this.opacity+")"}toHslString(){return"hsl("+this.hue+", "+Math.round(this.sat*100)+"%, "+Math.round(this.lightness*100)+"%)"}toHslStringDecimal(){return"hsl("+this.hue+", "+this.sat+", "+this.lightness+")"}toHslaString(){return"hsla("+this.hue+", "+Math.round(this.sat*100)+"%, "+Math.round(this.lightness*100)+"%, "+this.opacity+")"}toCmykString(){return"cmyk("+Math.round(this.cyan*100)+"%, "+Math.round(this.magenta*100)+"%, "+Math.round(this.yellow*100)+"%, "+Math.round(this.black*100)+"%)"}toCmykStringDecimal(){return"cmyk("+this.cyan+", "+this.magenta+", "+this.yellow+", "+this.black+")"}toNcolString(){return this.ncol+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%"}toNcolStringDecimal(){return this.ncol+", "+this.whiteness+", "+this.blackness}toNcolaString(){return this.ncol+", "+Math.round(this.whiteness*100)+"%, "+Math.round(this.blackness*100)+"%, "+this.opacity}toName(){let e,t,i,n=r.getColorArr("hexs");for(let s=0;s<n.length;s++)if(e=parseInt(n[s].substr(0,2),16),t=parseInt(n[s].substr(2,2),16),i=parseInt(n[s].substr(4,2),16),this.red==e&&this.green==t&&this.blue==i)return r.getColorArr("names")[s];return null}toHexString(){let e=r.toHex(this.red),t=r.toHex(this.green),i=r.toHex(this.blue);return"#"+e+t+i}toNameOrHexString(){let e=this.toName();return e||(e=this.toHexString()),e}toRgb(){return{r:this.red,g:this.green,b:this.blue,a:this.opacity}}toHsl(){return{h:this.hue,s:this.sat,l:this.lightness,a:this.opacity}}toHwb(){return{h:this.hue,w:this.whiteness,b:this.blackness,a:this.opacity}}toCmyk(){return{c:this.cyan,m:this.magenta,y:this.yellow,k:this.black,a:this.opacity}}toNcol(){return{ncol:this.ncol,w:this.whiteness,b:this.blackness,a:this.opacity}}isDark(e){let t=e||128;return(this.red*299+this.green*587+this.blue*114)/1e3<t}saturate(e){let t,i,n;t=e/100||.1,this.sat+=t,this.sat>1&&(this.sat=1),i=r.hslToRgb(this.hue,this.sat,this.lightness),n=r.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(n)}desaturate(e){let t,i,n;t=e/100||.1,this.sat-=t,this.sat<0&&(this.sat=0),i=r.hslToRgb(this.hue,this.sat,this.lightness),n=r.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(n)}lighter(e){let t,i,n;t=e/100||.1,this.lightness+=t,this.lightness>1&&(this.lightness=1),i=r.hslToRgb(this.hue,this.sat,this.lightness),n=r.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(n)}darker(e){let t,i,n;t=e/100||.1,this.lightness-=t,this.lightness<0&&(this.lightness=0),i=r.hslToRgb(this.hue,this.sat,this.lightness),n=r.colorObject(i,this.opacity,this.hue,this.sat),this.attachValues(n)}attachValues(e){this.red=e.red,this.green=e.green,this.blue=e.blue,this.hue=e.hue,this.sat=e.sat,this.lightness=e.lightness,this.whiteness=e.whiteness,this.blackness=e.blackness,this.cyan=e.cyan,this.magenta=e.magenta,this.yellow=e.yellow,this.black=e.black,this.ncol=e.ncol,this.opacity=e.opacity,this.valid=e.valid}static toColorObject(e){let t,i,n,s=[],o,a,l,c,h,p,d,u,m=[],f=[];if(e=r.w3trim(e.toLowerCase()),t=e.substr(0,1).toUpperCase(),i=e.substr(1),h=1,(t=="R"||t=="Y"||t=="G"||t=="C"||t=="B"||t=="M"||t=="W")&&!isNaN(i)&&(e.length==6&&e.indexOf(",")==-1||(e="ncol("+e+")")),e.length!=3&&e.length!=6&&!isNaN(e)&&(e="ncol("+e+")"),e.indexOf(",")>0&&e.indexOf("(")==-1&&(e="ncol("+e+")"),e.substr(0,3)=="rgb"||e.substr(0,3)=="hsl"||e.substr(0,3)=="hwb"||e.substr(0,4)=="ncol"||e.substr(0,4)=="cmyk"){if(e.substr(0,4)=="ncol"?(e.split(",").length==4&&e.indexOf("ncola")==-1&&(e=e.replace("ncol","ncola")),n="ncol",e=e.substr(4)):e.substr(0,4)=="cmyk"?(n="cmyk",e=e.substr(4)):(n=e.substr(0,3),e=e.substr(3)),o=3,l=!1,e.substr(0,1).toLowerCase()=="a"?(o=4,l=!0,e=e.substr(1)):n=="cmyk"&&(o=4,e.split(",").length==5&&(o=5,l=!0)),e=e.replace("(",""),e=e.replace(")",""),s=e.split(","),n=="rgb"){if(s.length!=o)return new r;for(a=0;a<o;a++){if((s[a]==""||s[a]==" ")&&(s[a]="0"),s[a].indexOf("%")>-1&&(s[a]=s[a].replace("%",""),s[a]=Number(s[a]/100),a<3&&(s[a]=Math.round(s[a]*255))),isNaN(s[a]))return new r;parseInt(s[a])>255&&(s[a]=255),a<3&&(s[a]=parseInt(s[a])),a==3&&Number(s[a])>1&&(s[a]=1)}u={r:s[0],g:s[1],b:s[2]},l==!0&&(h=Number(s[3]))}if(n=="hsl"||n=="hwb"||n=="ncol"){for(;s.length<o;)s.push("0");for((n=="hsl"||n=="hwb")&&parseInt(s[0])>=360&&(s[0]=0),a=1;a<o;a++){if(s[a].indexOf("%")>-1){if(s[a]=s[a].replace("%",""),s[a]=Number(s[a]),isNaN(s[a]))return new r;s[a]=s[a]/100}else s[a]=Number(s[a]);Number(s[a])>1&&(s[a]=1),Number(s[a])<0&&(s[a]=0)}n=="hsl"&&(u=r.hslToRgb(s[0],s[1],s[2]),p=Number(s[0]),d=Number(s[1])),n=="hwb"&&(u=r.hwbToRgb(s[0],s[1],s[2])),n=="ncol"&&(u=r.ncolToRgb(s[0],s[1],s[2])),l==!0&&(h=Number(s[3]))}if(n=="cmyk"){for(;s.length<o;)s.push("0");for(a=0;a<o;a++){if(s[a].indexOf("%")>-1){if(s[a]=s[a].replace("%",""),s[a]=Number(s[a]),isNaN(s[a]))return new r;s[a]=s[a]/100}else s[a]=Number(s[a]);Number(s[a])>1&&(s[a]=1),Number(s[a])<0&&(s[a]=0)}u=r.cmykToRgb(s[0],s[1],s[2],s[3]),l==!0&&(h=Number(s[4]))}}else if(e.substr(0,3)=="ncs")u=r.ncsToRgb(e);else{for(c=!1,m=r.getColorArr("names"),a=0;a<m.length;a++)if(e.toLowerCase()==m[a].toLowerCase()){f=r.getColorArr("hexs"),c=!0,u={r:parseInt(f[a].substr(0,2),16),g:parseInt(f[a].substr(2,2),16),b:parseInt(f[a].substr(4,2),16)};break}if(c==!1){for(e=e.replace("#",""),e.length==3&&(e=e.substr(0,1)+e.substr(0,1)+e.substr(1,1)+e.substr(1,1)+e.substr(2,1)+e.substr(2,1)),a=0;a<e.length;a++)if(!r.isHex(e.substr(a,1)))return new r;for(s[0]=parseInt(e.substr(0,2),16),s[1]=parseInt(e.substr(2,2),16),s[2]=parseInt(e.substr(4,2),16),a=0;a<3;a++)if(isNaN(s[a]))return new r;u={r:s[0],g:s[1],b:s[2]}}}return r.colorObject(u,h,p,d)}static colorObject(e,t,i,n){let s,o,a,l,c,h,p;return e?(t===null&&(t=1),s=r.rgbToHsl(e.r,e.g,e.b),o=r.rgbToHwb(e.r,e.g,e.b),a=r.rgbToCmyk(e.r,e.g,e.b),h=i||s.h,p=n||s.s,l=r.hueToNcol(h),c={red:e.r,green:e.g,blue:e.b,hue:h,sat:p,lightness:s.l,whiteness:o.w,blackness:o.b,cyan:a.c,magenta:a.m,yellow:a.y,black:a.k,ncol:l,opacity:t,valid:!0},c=r.roundDecimals(c),Object.assign(new r,c)):new r}static getColorArr(e){return e=="names"?["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","Black","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGrey","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","DarkOrange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkSlateGrey","DarkTurquoise","DarkViolet","DeepPink","DeepSkyBlue","DimGray","DimGrey","DodgerBlue","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Grey","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGray","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateGray","LightSlateGrey","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","RebeccaPurple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","SlateGrey","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","Wheat","White","WhiteSmoke","Yellow","YellowGreen"]:e=="hexs"?["f0f8ff","faebd7","00ffff","7fffd4","f0ffff","f5f5dc","ffe4c4","000000","ffebcd","0000ff","8a2be2","a52a2a","deb887","5f9ea0","7fff00","d2691e","ff7f50","6495ed","fff8dc","dc143c","00ffff","00008b","008b8b","b8860b","a9a9a9","a9a9a9","006400","bdb76b","8b008b","556b2f","ff8c00","9932cc","8b0000","e9967a","8fbc8f","483d8b","2f4f4f","2f4f4f","00ced1","9400d3","ff1493","00bfff","696969","696969","1e90ff","b22222","fffaf0","228b22","ff00ff","dcdcdc","f8f8ff","ffd700","daa520","808080","808080","008000","adff2f","f0fff0","ff69b4","cd5c5c","4b0082","fffff0","f0e68c","e6e6fa","fff0f5","7cfc00","fffacd","add8e6","f08080","e0ffff","fafad2","d3d3d3","d3d3d3","90ee90","ffb6c1","ffa07a","20b2aa","87cefa","778899","778899","b0c4de","ffffe0","00ff00","32cd32","faf0e6","ff00ff","800000","66cdaa","0000cd","ba55d3","9370db","3cb371","7b68ee","00fa9a","48d1cc","c71585","191970","f5fffa","ffe4e1","ffe4b5","ffdead","000080","fdf5e6","808000","6b8e23","ffa500","ff4500","da70d6","eee8aa","98fb98","afeeee","db7093","ffefd5","ffdab9","cd853f","ffc0cb","dda0dd","b0e0e6","800080","663399","ff0000","bc8f8f","4169e1","8b4513","fa8072","f4a460","2e8b57","fff5ee","a0522d","c0c0c0","87ceeb","6a5acd","708090","708090","fffafa","00ff7f","4682b4","d2b48c","008080","d8bfd8","ff6347","40e0d0","ee82ee","f5deb3","ffffff","f5f5f5","ffff00","9acd32"]:null}static roundDecimals(e){return e.red=Number(e.red.toFixed(0)),e.green=Number(e.green.toFixed(0)),e.blue=Number(e.blue.toFixed(0)),e.hue=Number(e.hue.toFixed(0)),e.sat=Number(e.sat.toFixed(2)),e.lightness=Number(e.lightness.toFixed(2)),e.whiteness=Number(e.whiteness.toFixed(2)),e.blackness=Number(e.blackness.toFixed(2)),e.cyan=Number(e.cyan.toFixed(2)),e.magenta=Number(e.magenta.toFixed(2)),e.yellow=Number(e.yellow.toFixed(2)),e.black=Number(e.black.toFixed(2)),e.ncol=e.ncol.substr(0,1)+Math.round(Number(e.ncol.substr(1))),e.opacity=Number(e.opacity.toFixed(2)),e}static hslToRgb(e,t,i){let n,s,o,a,l;return e=e/60,i<=.5?s=i*(t+1):s=i+t-i*t,n=i*2-s,o=r.hueToRgb(n,s,e+2)*255,a=r.hueToRgb(n,s,e)*255,l=r.hueToRgb(n,s,e-2)*255,{r:o,g:a,b:l}}static hueToRgb(e,t,i){return i<0&&(i+=6),i>=6&&(i-=6),i<1?(t-e)*i+e:i<3?t:i<4?(t-e)*(4-i)+e:e}static hwbToRgb(e,t,i){let n,s,o=[],a;for(s=r.hslToRgb(e,1,.5),o[0]=s.r/255,o[1]=s.g/255,o[2]=s.b/255,a=t+i,a>1&&(t=Number((t/a).toFixed(2)),i=Number((i/a).toFixed(2))),n=0;n<3;n++)o[n]*=1-t-i,o[n]+=t,o[n]=Number(o[n]*255);return{r:o[0],g:o[1],b:o[2]}}static cmykToRgb(e,t,i,n){let s,o,a;return s=255-Math.min(1,e*(1-n)+n)*255,o=255-Math.min(1,t*(1-n)+n)*255,a=255-Math.min(1,i*(1-n)+n)*255,{r:s,g:o,b:a}}static ncolToRgb(e,t,i){let n,s,o;if(o=e,isNaN(e.substr(0,1))){if(n=e.substr(0,1).toUpperCase(),s=e.substr(1),s==""&&(s=0),s=Number(s),isNaN(s))return!1;n=="R"&&(o=0+s*.6),n=="Y"&&(o=60+s*.6),n=="G"&&(o=120+s*.6),n=="C"&&(o=180+s*.6),n=="B"&&(o=240+s*.6),n=="M"&&(o=300+s*.6),n=="W"&&(o=0,t=1-s/100,i=s/100)}return r.hwbToRgb(o,t,i)}static hueToNcol(e){for(;e>=360;)e=e-360;return e<60?"R"+e/.6:e<120?"Y"+(e-60)/.6:e<180?"G"+(e-120)/.6:e<240?"C"+(e-180)/.6:e<300?"B"+(e-240)/.6:e<360?"M"+(e-300)/.6:null}static ncsToRgb(e){let t,i,n,s,o,a,l,c,h,p,d,u,m,f,y,v,C,w,b;return e=r.w3trim(e).toUpperCase(),e=e.replace("(",""),e=e.replace(")",""),e=e.replace("NCS","NCS "),e=e.replace(/ /g," "),e.indexOf("NCS")==-1&&(e="NCS "+e),e=e.match(/^(?:NCS|NCS\sS)\s(\d{2})(\d{2})-(N|[A-Z])(\d{2})?([A-Z])?$/),e===null||(t=parseInt(e[1],10),i=parseInt(e[2],10),n=e[3],n!="N"&&n!="Y"&&n!="R"&&n!="B"&&n!="G")?null:(s=parseInt(e[4],10)||0,n!=="N"?(o=1.05*t-5.25,a=i,n==="Y"&&s<=60?h=1:n==="Y"&&s>60||n==="R"&&s<=80?(n==="Y"?l=s-60:l=s+40,h=(Math.sqrt(14884-Math.pow(l,2))-22)/100):n==="R"&&s>80||n==="B"?h=0:n==="G"&&(l=s-170,h=(Math.sqrt(33800-Math.pow(l,2))-70)/100),n==="Y"&&s<=80?c=0:n==="Y"&&s>80||n==="R"&&s<=60?(n==="Y"?l=s-80+20.5:l=s+20+20.5,c=(104-Math.sqrt(11236-Math.pow(l,2)))/100):n==="R"&&s>60||n==="B"&&s<=80?(n==="R"?l=s-60-60:l=s+40-60,c=(Math.sqrt(1e4-Math.pow(l,2))-10)/100):n==="B"&&s>80||n==="G"&&s<=40?(n==="B"?l=s-80-131:l=s+20-131,c=(122-Math.sqrt(19881-Math.pow(l,2)))/100):n==="G"&&s>40&&(c=0),n==="Y"?d=(85-17/20*s)/100:n==="R"&&s<=60?d=0:n==="R"&&s>60?(l=s-60+35,d=(67.5-Math.sqrt(5776-Math.pow(l,2)))/100):n==="B"&&s<=60?(l=1*s-68.5,d=(6.5+Math.sqrt(7044.5-Math.pow(l,2)))/100):n==="B"&&s>60||n==="G"&&s<=60?d=.9:n==="G"&&s>60&&(l=s-60,d=(90-1/8*l)/100),l=(h+d+c)/3,p=(l-h)*(100-a)/100+h,u=(l-d)*(100-a)/100+d,m=(l-c)*(100-a)/100+c,p>u&&p>m?f=p:u>p&&u>m?f=u:m>p&&m>u?f=m:f=(p+u+m)/3,y=1/f,C=parseInt(p*y*(100-o)/100*255,10),w=parseInt(u*y*(100-o)/100*255,10),b=parseInt(m*y*(100-o)/100*255,10),C>255&&(C=255),w>255&&(w=255),b>255&&(b=255),C<0&&(C=0),w<0&&(w=0),b<0&&(b=0)):(v=parseInt((1-t/100)*255,10),v>255&&(v=255),v<0&&(v=0),C=v,w=v,b=v),{r:C,g:w,b})}static rgbToHsl(e,t,i){let n,s,o,a,l,c,h,p=[];for(p[0]=e/255,p[1]=t/255,p[2]=i/255,n=p[0],s=p[0],c=0,o=0;o<p.length-1;o++)p[o+1]<=n&&(n=p[o+1]),p[o+1]>=s&&(s=p[o+1],c=o+1);return c==0&&(h=(p[1]-p[2])/(s-n)),c==1&&(h=2+(p[2]-p[0])/(s-n)),c==2&&(h=4+(p[0]-p[1])/(s-n)),isNaN(h)&&(h=0),h=h*60,h<0&&(h=h+360),a=(n+s)/2,n==s?l=0:a<.5?l=(s-n)/(s+n):l=(s-n)/(2-s-n),l=l,{h,s:l,l:a}}static rgbToHwb(e,t,i){let n,s,o;e=e/255,t=t/255,i=i/255;let a=Math.max(e,t,i),l=Math.min(e,t,i),c=a-l;return c==0?n=0:e==a?n=(t-i)/c%6*360:t==a?n=((i-e)/c+2)%6*360:n=((e-t)/c+4)%6*360,s=l,o=1-a,{h:n,w:s,b:o}}static rgbToCmyk(e,t,i){let n,s,o,a;return e=e/255,t=t/255,i=i/255,a=1-Math.max(e,t,i),a==1?(n=0,s=0,o=0):(n=(1-e-a)/(1-a),s=(1-t-a)/(1-a),o=(1-i-a)/(1-a)),{c:n,m:s,y:o,k:a}}static toHex(e){let t=e.toString(16);for(;t.length<2;)t="0"+t;return t}static w3trim(e){return e.replace(/^\s+|\s+$/g,"")}static isHex(e){return"0123456789ABCDEFabcdef".indexOf(e)>-1}};var nu=["rgb","hsl","cmyk","oklab","oklch"],tr=1e-6,Pl=class extends au{static style=lu`:host{display:block;box-sizing:border-box;width:280px;color:var(--property-grid-text-color,#e8edf2);font:12px system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}#editor{display:grid;gap:10px;box-sizing:border-box;padding:12px;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:var(--color-editor-background,#20252b);box-shadow:0 14px 38px rgba(0,0,0,.36)}#plane{position:relative;height:150px;border-radius:6px;overflow:hidden;cursor:crosshair;background:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,transparent),hsl(var(--hue,0) 100% 50%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12);touch-action:none}#plane-handle{position:absolute;width:12px;height:12px;box-sizing:border-box;border:2px solid #fff;border-radius:50%;transform:translate(-6px,-6px);box-shadow:0 0 0 1px rgba(0,0,0,.85),0 1px 4px rgba(0,0,0,.55);pointer-events:none}.slider-row{display:grid;grid-template-columns:18px minmax(0,1fr) 42px;gap:8px;align-items:center}.slider-row span{color:rgba(232,237,242,.68);font-size:11px;text-transform:uppercase}input[type=range]{--slider-background:#79b8ff;-webkit-appearance:none;appearance:none;width:100%;height:16px;margin:0;background:0 0;outline:0}#hue{--slider-background:linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00)}#alpha{--slider-background:linear-gradient(to right, rgba(var(--rgb-color, 0, 0, 0), 0), var(--opaque-color, #000)),linear-gradient(45deg, rgba(255, 255, 255, .24) 25%, transparent 25% 75%, rgba(255, 255, 255, .24) 75%),linear-gradient(45deg, rgba(255, 255, 255, .24) 25%, transparent 25% 75%, rgba(255, 255, 255, .24) 75%),#2a3037;--slider-background-position:0 0,0 0,5px 5px,0 0;--slider-background-size:auto,10px 10px,10px 10px,auto}input[type=range]::-webkit-slider-runnable-track{height:7px;border-radius:999px;background:var(--slider-background);background-position:var(--slider-background-position,0 0);background-size:var(--slider-background-size,auto);box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}input[type=range]::-moz-range-track{height:7px;border-radius:999px;background:var(--slider-background);background-position:var(--slider-background-position,0 0);background-size:var(--slider-background-size,auto);box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;margin-top:-3.5px;border:2px solid #fff;border-radius:50%;background:hsl(var(--hue,0) 100% 50%);box-shadow:0 0 0 1px rgba(0,0,0,.75),0 1px 3px rgba(0,0,0,.45)}input[type=range]::-moz-range-thumb{width:10px;height:10px;border:2px solid #fff;border-radius:50%;background:hsl(var(--hue,0) 100% 50%);box-shadow:0 0 0 1px rgba(0,0,0,.75),0 1px 3px rgba(0,0,0,.45)}#alpha::-webkit-slider-thumb{background:var(--color,#000)}#alpha::-moz-range-thumb{background:var(--color,#000)}.swatch{width:42px;height:22px;border-radius:5px;background:linear-gradient(var(--color,#000),var(--color,#000)),linear-gradient(45deg,rgba(255,255,255,.22) 25%,transparent 25% 75%,rgba(255,255,255,.22) 75%),linear-gradient(45deg,rgba(255,255,255,.22) 25%,transparent 25% 75%,rgba(255,255,255,.22) 75%);background-position:0 0,0 0,5px 5px;background-size:auto,10px 10px,10px 10px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.16)}#mode{height:26px;min-width:0;border:1px solid rgba(255,255,255,.14);border-radius:5px;background:#161a1f;color:inherit;font:inherit;outline:0}#channels{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}label{display:grid;gap:3px;min-width:0;color:rgba(232,237,242,.68);font-size:10px;text-transform:uppercase}#text,input[type=number]{box-sizing:border-box;width:100%;min-width:0;height:26px;border:1px solid rgba(255,255,255,.14);border-radius:5px;background:#161a1f;color:inherit;font:inherit;outline:0}input[type=number]{padding:0 4px}#text{padding:0 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;text-transform:none}#text.invalid{border-color:#e66b6b;box-shadow:0 0 0 1px rgba(230,107,107,.35)}input:focus,select:focus{border-color:#79b8ff;box-shadow:0 0 0 1px rgba(121,184,255,.28)}:host([disabled]) #plane,:host([disabled]) input,:host([disabled]) select,:host([readonly]) #plane,:host([readonly]) input,:host([readonly]) select{opacity:.65;pointer-events:none}`;static template=cu`<div id="editor"><div id="plane"><div id="plane-handle"></div></div><div class="slider-row"><span>Hue</span> <input id="hue" type="range" min="0" max="360" step="1"><div id="preview" class="swatch"></div></div><div class="slider-row"><span>Alpha</span> <input id="alpha" type="range" min="0" max="100" step="1"> <span id="alpha-label"></span></div><select id="mode" aria-label="Color mode"><option value="rgb">RGB</option><option value="hsl">HSL</option><option value="cmyk">CMYK</option><option value="oklab">OKLab</option><option value="oklch">OKLCH</option></select><div id="channels"></div><input id="text" type="text" spellcheck="false" aria-label="Color text"></div>`;valueChanged=new iu;valuePreviewChanged=new iu;_value="#000000";_color={r:0,g:0,b:0,a:1};_mode="rgb";_hue=0;_plane;_planeHandle;_hueInput;_alphaInput;_alphaLabel;_modeSelect;_channels;_textInput;_dragPointerId=null;get value(){return this._value}set value(e){let t=er(e);if(t){this._color=t,this._mode=ru(e)??this._mode,this._syncHueFromColor(),this._value=this._formatColor(),this._render();return}this._value=e??"",this._render()}get mode(){return this._mode}set mode(e){nu.includes(e)&&(this._mode=e,this._value=this._formatColor(),this._render())}get readOnly(){return this.hasAttribute("readonly")}set readOnly(e){this.toggleAttribute("readonly",e)}get disabled(){return this.hasAttribute("disabled")}set disabled(e){this.toggleAttribute("disabled",e)}constructor(){super(),this._plane=this._getDomElement("plane"),this._planeHandle=this._getDomElement("plane-handle"),this._hueInput=this._getDomElement("hue"),this._alphaInput=this._getDomElement("alpha"),this._alphaLabel=this._getDomElement("alpha-label"),this._modeSelect=this._getDomElement("mode"),this._channels=this._getDomElement("channels"),this._textInput=this._getDomElement("text")}ready(){this._wireEvents();let e=this.getAttribute("value");e!=null&&(this.value=e);let t=this.getAttribute("mode");nu.includes(t)&&(this._mode=t,this._value=this._formatColor()),this._render()}_wireEvents(){this._plane.addEventListener("pointerdown",e=>this._startPlaneDrag(e)),this._hueInput.addEventListener("input",()=>this._applyHue(!0)),this._hueInput.addEventListener("change",()=>this._commitCurrentValue()),this._alphaInput.addEventListener("input",()=>this._applyAlpha(!0)),this._alphaInput.addEventListener("change",()=>this._commitCurrentValue()),this._modeSelect.addEventListener("change",()=>{this.mode=this._modeSelect.value,this._commitCurrentValue()}),this._channels.addEventListener("input",()=>this._applyChannelInputs(!0)),this._channels.addEventListener("change",()=>this._commitCurrentValue()),this._textInput.addEventListener("input",()=>this._validateTextInput()),this._textInput.addEventListener("change",()=>this._applyText()),this._textInput.addEventListener("keydown",e=>{e.key==="Enter"&&(this._applyText(),this._textInput.blur())})}_startPlaneDrag(e){this.readOnly||this.disabled||(this._dragPointerId=e.pointerId,this._plane.setPointerCapture(e.pointerId),this._applyPlanePointer(e,!0),this._plane.addEventListener("pointermove",this._planePointerMove),this._plane.addEventListener("pointerup",this._finishPlaneDrag),this._plane.addEventListener("pointercancel",this._finishPlaneDrag),e.preventDefault())}_planePointerMove=e=>{e.pointerId===this._dragPointerId&&this._applyPlanePointer(e,!0)};_finishPlaneDrag=e=>{e.pointerId===this._dragPointerId&&(this._dragPointerId=null,this._plane.removeEventListener("pointermove",this._planePointerMove),this._plane.removeEventListener("pointerup",this._finishPlaneDrag),this._plane.removeEventListener("pointercancel",this._finishPlaneDrag),this._commitCurrentValue())};_applyPlanePointer(e,t){let i=this._plane.getBoundingClientRect(),n=Ft((e.clientX-i.left)/i.width,0,1),s=Ft(1-(e.clientY-i.top)/i.height,0,1),o=Number(this._hueInput.value)||0;this._hue=El(o),this._setColor({...ou(o,n,s),a:this._color.a},t)}_applyHue(e){let t=bl(this._color),i=Number(this._hueInput.value)||0;this._hue=El(i),this._setColor({...ou(i,t.s||1,t.v||1),a:this._color.a},e)}_applyAlpha(e){this._setColor({...this._color,a:Ft(Number(this._alphaInput.value)/100,0,1)},e)}_applyChannelInputs(e){let t=[...this._channels.querySelectorAll("input")].reduce((n,s)=>(n[s.name]=Number(s.value),n),{}),i;this._mode==="rgb"?i={r:t.r,g:t.g,b:t.b,a:t.a/100}:this._mode==="hsl"?i={...qf(t.h,t.s/100,t.l/100),a:t.a/100}:this._mode==="cmyk"?i={...eg(t.c/100,t.m/100,t.y/100,t.k/100),a:t.a/100}:this._mode==="oklab"?i={...kl(t.l/100,t.a1,t.b1),a:t.alpha/100}:i={...mu(t.l/100,t.c,t.h),a:t.a/100},this._setColor(ri(i),e,!1,!0)}_validateTextInput(){let e=this._textInput.value.trim();this._textInput.classList.toggle("invalid",e.length>0&&!er(e))}_applyText(){let e=er(this._textInput.value);this._textInput.classList.toggle("invalid",!e),e&&(this._mode=ru(this._textInput.value)??this._mode,this._setColor(e,!1,!0,!0))}_setColor(e,t,i=!0,n=!1){let s=this._value;this._color=ri(e),n&&this._syncHueFromColor(),this._value=this._formatColor(),this._render(i),t?this.valuePreviewChanged.emit({newValue:this._value,oldValue:s}):this.valueChanged.emit({newValue:this._value,oldValue:s})}_commitCurrentValue(){let e=this._value;this._value=this._formatColor(),this.valueChanged.emit({newValue:this._value,oldValue:e})}_render(e=!0){if(!this._textInput)return;let t=bl(this._color);this.style.setProperty("--hue",String(Math.round(this._hue))),this.style.setProperty("--color",hu(this._color)),this.style.setProperty("--opaque-color",`rgb(${this._color.r}, ${this._color.g}, ${this._color.b})`),this.style.setProperty("--rgb-color",`${this._color.r}, ${this._color.g}, ${this._color.b}`),this._planeHandle.style.left=`${t.s*100}%`,this._planeHandle.style.top=`${(1-t.v)*100}%`,this._hueInput.value=String(Math.round(this._hue)),this._alphaInput.value=String(Math.round(this._color.a*100)),this._alphaLabel.textContent=`${Math.round(this._color.a*100)}%`,this._modeSelect.value=this._mode,e&&this._renderChannelInputs(),document.activeElement!==this._textInput&&(this._textInput.value=this._value),this._textInput.classList.remove("invalid")}_renderChannelInputs(){let e=Jf(this._color,this._mode);this._channels.innerHTML=e.map(t=>`
|
|
543
543
|
<label>${t.label}
|
|
544
544
|
<input type="number" name="${t.name}" min="${t.min}" max="${t.max}" step="${t.step}" value="${t.value}">
|
|
545
|
-
</label>`).join("")}_formatColor(){return $f(this._color,this._mode)}_syncHueFromColor(){let e=_l(this._color);e.s>qn&&e.v>qn&&(this._hue=Sl(e.h))}},El=class extends su{static style=ou`:host{display:inline-block;box-sizing:border-box;width:100%;height:100%;padding:2px}button{display:block;box-sizing:border-box;width:100%;height:100%;padding:3px;border:1px solid var(--input-border-color,#596c7a);border-radius:4px;background:var(--input-background-color,#1d2228);cursor:pointer;outline:0}button:focus{border-color:#79b8ff;box-shadow:0 0 0 1px rgba(121,184,255,.28)}#swatch{display:block;width:100%;height:100%;border-radius:2px;background:linear-gradient(var(--color,#000),var(--color,#000)),linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25% 75%,rgba(255,255,255,.25) 75%),linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25% 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 0,5px 5px;background-size:auto,10px 10px,10px 10px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.28)}:host([disabled]) button,:host([readonly]) button{cursor:default;opacity:.65}`;static template=au`<button id="button" type="button" aria-label="Edit color"><span id="swatch"></span></button>`;_value="#000000";_button;_popup;_editor;_ignoreNextClick=!1;_outsidePointerHandler=e=>this._handleOutsidePointer(e);_windowKeyHandler=e=>this._handleWindowKey(e);get value(){return this._value}set value(e){this._setValue(e,!1)}get readOnly(){return this.hasAttribute("readonly")}set readOnly(e){this.toggleAttribute("readonly",e)}get disabled(){return this.hasAttribute("disabled")}set disabled(e){this.toggleAttribute("disabled",e),this._button&&(this._button.disabled=e)}constructor(){super(),this._button=this._getDomElement("button")}ready(){let e=this.getAttribute("value");e!=null&&this._setValue(e,!1),this._button.disabled=this.disabled,this._button.addEventListener("pointerdown",t=>this._handleButtonPointerDown(t)),this._button.addEventListener("click",t=>this._handleButtonClick(t)),this._button.addEventListener("keydown",t=>this._handleButtonKeyDown(t)),this._renderSwatch()}disconnectedCallback(){this._closePopup()}_togglePopup(){this.readOnly||this.disabled||(this._popup?this._closePopup():this._openPopup())}_handleButtonPointerDown(e){e.button===0&&(this._ignoreNextClick=!0,this._togglePopup(),e.preventDefault(),e.stopPropagation())}_handleButtonClick(e){if(this._ignoreNextClick){this._ignoreNextClick=!1,e.preventDefault(),e.stopPropagation();return}this._togglePopup()}_handleButtonKeyDown(e){e.key!=="Enter"&&e.key!==" "||(this._togglePopup(),e.preventDefault(),e.stopPropagation())}_openPopup(){this._popup=document.createElement("div"),this._popup.style.position="fixed",this._popup.style.zIndex="100000",this._popup.style.width="280px",this._editor=document.createElement("node-projects-color-editor"),this._editor.value=this._value,this._editor.valuePreviewChanged.on(e=>{this._setValue(e.newValue,!0),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0}))}),this._editor.valueChanged.on(e=>{this._setValue(e.newValue,!0),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}),this._popup.appendChild(this._editor),document.body.appendChild(this._popup),this._positionPopup(),window.addEventListener("resize",()=>this._positionPopup(),{once:!0}),window.addEventListener("scroll",()=>this._positionPopup(),{once:!0,capture:!0}),window.addEventListener("keydown",this._windowKeyHandler),requestAnimationFrame(()=>window.addEventListener("pointerdown",this._outsidePointerHandler,!0))}_positionPopup(){if(!this._popup)return;let e=this.getBoundingClientRect(),t=this._popup.offsetWidth||280,i=this._popup.offsetHeight||360,n=e.left,r=e.bottom+4;n+t>window.innerWidth-8&&(n=window.innerWidth-t-8),r+i>window.innerHeight-8&&(r=e.top-i-4),this._popup.style.left=`${Math.max(8,n)}px`,this._popup.style.top=`${Math.max(8,r)}px`}_handleOutsidePointer(e){let t=e.composedPath();t.includes(this)||this._popup&&t.includes(this._popup)||this._closePopup()}_handleWindowKey(e){e.key==="Escape"&&this._closePopup()}_closePopup(){window.removeEventListener("pointerdown",this._outsidePointerHandler,!0),window.removeEventListener("keydown",this._windowKeyHandler),this._popup?.remove(),this._popup=null,this._editor=null}_setValue(e,t){this._value=e??"",t&&this.setAttribute("value",this._value),this._renderSwatch()}_renderSwatch(){let e=Zn(this._value)??{r:0,g:0,b:0,a:1};this.style.setProperty("--color",lu(e))}};function Zn(s){if(!s)return null;let e=s.trim();if(e.toLowerCase()==="transparent")return{r:0,g:0,b:0,a:0};let t=Uf(e);if(t)return t;let i=Xf(e);if(i)return i;let n=Yf(e),r=Qn.toColorObject(n);return r?.valid?ii({r:r.red,g:r.green,b:r.blue,a:r.opacity}):null}function iu(s){let t=/^\s*(rgba?|hsla?|cmyk|oklab|oklch)\s*\(/i.exec(s??"")?.[1]?.toLowerCase();return t==="rgb"||t==="rgba"?"rgb":t==="hsl"||t==="hsla"?"hsl":t==="cmyk"?"cmyk":t==="oklab"?"oklab":t==="oklch"?"oklch":null}function Yf(s){return s.replace(/,\s*/g,",").replace(/rgba?\(([^)]*)\)/i,(e,t)=>nu("rgb",t)).replace(/hsla?\(([^)]*)\)/i,(e,t)=>nu("hsl",t))}function nu(s,e){if(e.includes(",")){let r=e.split(",").map(o=>o.trim());return r.length===4&&r[3].endsWith("%")&&(r[3]=String(Number(r[3].slice(0,-1))/100)),`${s}${r.length===4?"a":""}(${r.join(",")})`}let[t,i]=e.split("/").map(r=>r.trim()),n=t.split(/\s+/).filter(Boolean);return i&&n.push(i.endsWith("%")?String(Number(i.slice(0,-1))/100):i),`${s}${n.length===4?"a":""}(${n.join(",")})`}function Uf(s){let e=/^#([0-9a-f]{3,8})$/i.exec(s);if(!e)return null;let t=e[1],i=n=>parseInt(n.length===1?n+n:n,16);return t.length===3||t.length===4?ii({r:i(t[0]),g:i(t[1]),b:i(t[2]),a:t.length===4?i(t[3])/255:1}):t.length===6||t.length===8?ii({r:i(t.slice(0,2)),g:i(t.slice(2,4)),b:i(t.slice(4,6)),a:t.length===8?i(t.slice(6,8))/255:1}):null}function Xf(s){let e=/^(oklab|oklch)\((.*)\)$/i.exec(s);if(!e)return null;let t=e[1].toLowerCase(),[i,n]=e[2].split("/").map(a=>a.trim()),r=i.replace(/,/g," ").split(/\s+/).filter(Boolean);if(r.length!==3)return null;let o=n?wl(n,1):1;return ii(t==="oklab"?{...Il(wl(r[0],1),Number(r[1]),Number(r[2])),a:o}:{...du(wl(r[0],1),Number(r[1]),Number(r[2])),a:o})}function $f(s,e){let t=Ve(s.a,3);if(e==="rgb")return s.a>=1?`rgb(${s.r}, ${s.g}, ${s.b})`:`rgba(${s.r}, ${s.g}, ${s.b}, ${t})`;if(e==="hsl"){let n=cu(s);return s.a>=1?`hsl(${Math.round(n.h)}, ${Math.round(n.s*100)}%, ${Math.round(n.l*100)}%)`:`hsla(${Math.round(n.h)}, ${Math.round(n.s*100)}%, ${Math.round(n.l*100)}%, ${t})`}if(e==="cmyk"){let n=hu(s),r=`${Math.round(n.c*100)}%, ${Math.round(n.m*100)}%, ${Math.round(n.y*100)}%, ${Math.round(n.k*100)}%`;return s.a>=1?`cmyk(${r})`:`cmyk(${r}, ${t})`}if(e==="oklab"){let n=Pl(s);return`oklab(${Ve(n.l*100,2)}% ${Ve(n.a,4)} ${Ve(n.b,4)}${s.a>=1?"":` / ${t}`})`}let i=pu(s);return`oklch(${Ve(i.l*100,2)}% ${Ve(i.c,4)} ${Ve(i.h,2)}${s.a>=1?"":` / ${t}`})`}function Kf(s,e){if(e==="rgb")return[{label:"R",name:"r",value:s.r,min:0,max:255,step:1},{label:"G",name:"g",value:s.g,min:0,max:255,step:1},{label:"B",name:"b",value:s.b,min:0,max:255,step:1},{label:"A",name:"a",value:Math.round(s.a*100),min:0,max:100,step:1}];if(e==="hsl"){let i=cu(s);return[{label:"H",name:"h",value:Math.round(i.h),min:0,max:360,step:1},{label:"S",name:"s",value:Math.round(i.s*100),min:0,max:100,step:1},{label:"L",name:"l",value:Math.round(i.l*100),min:0,max:100,step:1},{label:"A",name:"a",value:Math.round(s.a*100),min:0,max:100,step:1}]}if(e==="cmyk"){let i=hu(s);return[{label:"C",name:"c",value:Math.round(i.c*100),min:0,max:100,step:1},{label:"M",name:"m",value:Math.round(i.m*100),min:0,max:100,step:1},{label:"Y",name:"y",value:Math.round(i.y*100),min:0,max:100,step:1},{label:"K",name:"k",value:Math.round(i.k*100),min:0,max:100,step:1},{label:"A",name:"a",value:Math.round(s.a*100),min:0,max:100,step:1}]}if(e==="oklab"){let i=Pl(s);return[{label:"L",name:"l",value:Ve(i.l*100,2),min:0,max:100,step:.1},{label:"A",name:"a1",value:Ve(i.a,4),min:-1,max:1,step:.001},{label:"B",name:"b1",value:Ve(i.b,4),min:-1,max:1,step:.001},{label:"Alpha",name:"alpha",value:Math.round(s.a*100),min:0,max:100,step:1}]}let t=pu(s);return[{label:"L",name:"l",value:Ve(t.l*100,2),min:0,max:100,step:.1},{label:"C",name:"c",value:Ve(t.c,4),min:0,max:1,step:.001},{label:"H",name:"h",value:Ve(t.h,2),min:0,max:360,step:.1},{label:"A",name:"a",value:Math.round(s.a*100),min:0,max:100,step:1}]}function ii(s){return{r:Math.round(Rt(s.r,0,255)),g:Math.round(Rt(s.g,0,255)),b:Math.round(Rt(s.b,0,255)),a:Rt(Number.isFinite(s.a)?s.a:1,0,1)}}function lu(s){return`rgba(${s.r}, ${s.g}, ${s.b}, ${Ve(s.a,3)})`}function _l(s){let e=s.r/255,t=s.g/255,i=s.b/255,n=Math.max(e,t,i),r=Math.min(e,t,i),o=n-r,a=0;return o!==0&&(n===e?a=(t-i)/o%6:n===t?a=(i-e)/o+2:a=(e-t)/o+4,a*=60),{h:(a+360)%360,s:n===0?0:o/n,v:n}}function ru(s,e,t){let i=t*e,n=i*(1-Math.abs(s/60%2-1)),r=t-i,o=0,a=0,l=0;return s<60?[o,a,l]=[i,n,0]:s<120?[o,a,l]=[n,i,0]:s<180?[o,a,l]=[0,i,n]:s<240?[o,a,l]=[0,n,i]:s<300?[o,a,l]=[n,0,i]:[o,a,l]=[i,0,n],{r:(o+r)*255,g:(a+r)*255,b:(l+r)*255}}function cu(s){let e=s.r/255,t=s.g/255,i=s.b/255,n=Math.max(e,t,i),r=Math.min(e,t,i),o=(n+r)/2,a=n-r,l=0,c=0;return a!==0&&(c=a/(1-Math.abs(2*o-1)),n===e?l=(t-i)/a%6:n===t?l=(i-e)/a+2:l=(e-t)/a+4,l*=60),{h:(l+360)%360,s:c,l:o}}function Qf(s,e,t){let i=(1-Math.abs(2*t-1))*e,n=i*(1-Math.abs(s/60%2-1)),r=t-i/2,o=0,a=0,l=0;return s<60?[o,a,l]=[i,n,0]:s<120?[o,a,l]=[n,i,0]:s<180?[o,a,l]=[0,i,n]:s<240?[o,a,l]=[0,n,i]:s<300?[o,a,l]=[n,0,i]:[o,a,l]=[i,0,n],{r:(o+r)*255,g:(a+r)*255,b:(l+r)*255}}function hu(s){let e=s.r/255,t=s.g/255,i=s.b/255,n=1-Math.max(e,t,i);return n>=1-qn?{c:0,m:0,y:0,k:1}:{c:(1-e-n)/(1-n),m:(1-t-n)/(1-n),y:(1-i-n)/(1-n),k:n}}function Zf(s,e,t,i){return{r:255*(1-s)*(1-i),g:255*(1-e)*(1-i),b:255*(1-t)*(1-i)}}function Pl(s){let e=xl(s.r/255),t=xl(s.g/255),i=xl(s.b/255),n=Math.cbrt(.4122214708*e+.5363325363*t+.0514459929*i),r=Math.cbrt(.2119034982*e+.6806995451*t+.1073969566*i),o=Math.cbrt(.0883024619*e+.2817188376*t+.6299787005*i);return{l:.2104542553*n+.793617785*r-.0040720468*o,a:1.9779984951*n-2.428592205*r+.4505937099*o,b:.0259040371*n+.7827717662*r-.808675766*o}}function Il(s,e,t){let i=Math.pow(s+.3963377774*e+.2158037573*t,3),n=Math.pow(s-.1055613458*e-.0638541728*t,3),r=Math.pow(s-.0894841775*e-1.291485548*t,3);return{r:255*bl(4.0767416621*i-3.3077115913*n+.2309699292*r),g:255*bl(-1.2684380046*i+2.6097574011*n-.3413193965*r),b:255*bl(-.0041960863*i-.7034186147*n+1.707614701*r)}}function pu(s){let e=Pl(s),t=Math.sqrt(e.a*e.a+e.b*e.b),i=t<qn?0:(Math.atan2(e.b,e.a)*180/Math.PI+360)%360;return{l:e.l,c:t,h:i}}function du(s,e,t){let i=t*Math.PI/180;return Il(s,e*Math.cos(i),e*Math.sin(i))}function xl(s){return s<=.04045?s/12.92:Math.pow((s+.055)/1.055,2.4)}function bl(s){return s<=.0031308?12.92*s:1.055*Math.pow(s,1/2.4)-.055}function wl(s,e){return s.endsWith("%")?Number(s.slice(0,-1))/100*e:Number(s)}function Rt(s,e,t){return Math.min(t,Math.max(e,Number.isFinite(s)?s:e))}function Sl(s){return Rt(s,0,360)}function Ve(s,e){let t=Math.pow(10,e);return Math.round(s*t)/t}customElements.define("node-projects-color-editor",Cl);customElements.define("node-projects-color-input",El);Al();Ol();import{css as og,html as ag}from"@node-projects/base-custom-webcomponent";var Nl=class{host;root;trough;button1;button2;thumb;isConnected=!1;thumbSize=.3;value=0;orientation=!1;clickRepeatDelay=300;clickRepeatInterval=100;defaultThumbMinSize=25;dragStartPos;dragStartValue;eventTimeoutId;pointerCaptureId;pointerCaptureElement;thumbDragging;button1Active;button2Active;troughActive;constructor(e){this.host=e,e.attachShadow({mode:"open"});let t=e.shadowRoot;t.appendChild(hg.content.cloneNode(!0)),t.adoptedStyleSheets=[cg],this.root=t.querySelector("#root"),this.trough=t.querySelector("#trough"),this.button1=t.querySelector("#button1"),this.button2=t.querySelector("#button2"),this.thumb=t.querySelector("#thumb"),this.trough.addEventListener("pointerdown",this.onTroughPointerDown),this.trough.addEventListener("pointerup",this.onPointerUp),this.trough.addEventListener("pointercancel",this.onPointerUp),this.button1.addEventListener("pointerdown",i=>this.onButtonPointerDown(i,1)),this.button1.addEventListener("pointerup",this.onPointerUp),this.button1.addEventListener("pointercancel",this.onPointerUp),this.button1.addEventListener("contextmenu",i=>i.preventDefault()),this.button2.addEventListener("pointerdown",i=>this.onButtonPointerDown(i,2)),this.button2.addEventListener("pointerup",this.onPointerUp),this.button2.addEventListener("pointercancel",this.onPointerUp),this.button2.addEventListener("contextmenu",i=>i.preventDefault()),this.thumb.addEventListener("pointerdown",this.onThumbPointerDown),this.thumb.addEventListener("pointerup",this.onPointerUp),this.thumb.addEventListener("pointercancel",this.onPointerUp),this.thumb.addEventListener("pointermove",this.onThumbPointerMove),this.resetInteractionState()}resetInteractionState(){this.thumbDragging=!1,this.button1Active=!1,this.button2Active=!1,this.troughActive=!1}connectedCallback(){this.isConnected=!0,this.resetInteractionState(),this.updateLayout(),this.updateStyle()}disconnectedCallback(){this.isConnected=!1,this.resetInteractionState(),this.stopEventRepetition(),this.stopPointerCapture()}updateLayout(){this.isConnected&&(this.root.classList.toggle("horizontal",!this.orientation),this.root.classList.toggle("vertical",this.orientation),this.thumb.style.display=this.thumbSize==0?"none":"",this.thumb.style.height=this.orientation?tr(this.getEffectiveThumbSize()):"",this.thumb.style.width=this.orientation?"":tr(this.getEffectiveThumbSize()),this.thumb.style.top="",this.thumb.style.left="",this.updateThumbPosition())}updateStyle(){this.isConnected&&(this.thumb.classList.toggle("active",this.thumbDragging),this.button1.classList.toggle("active",this.button1Active),this.button2.classList.toggle("active",this.button2Active),this.troughActive)}updateThumbPosition(){let e=(1-this.getEffectiveThumbSize())*this.value;this.orientation?this.thumb.style.top=tr(e):this.thumb.style.left=tr(e)}getThroughSize(){return this.orientation?this.trough.clientHeight:this.trough.clientWidth}computeThumbMoveValue(e){let t=this.getThroughSize()*(1-this.getEffectiveThumbSize());return t<lg?0:e/t}setThumbSize(e){let t=Math.max(0,Math.min(1,e));t!=this.thumbSize&&(this.thumbSize=t,this.updateLayout())}getThumbMinSize(){let e=this.getCssVar("--plain-scrollbar-thumb-min-size");if(!e)return this.defaultThumbMinSize;let t=dg(e);return t||this.defaultThumbMinSize}getEffectiveThumbSize(){let e=this.getThumbMinSize(),t=this.getThroughSize();if(!t)return this.thumbSize;let i=Math.min(1,e/t);return Math.max(i,this.thumbSize)}setValue(e){let t=Math.max(0,Math.min(1,e));return t==this.value?!1:(this.value=isNaN(t)?0:t,this.updateThumbPosition(),!0)}setOrientation(e){return e==this.orientation?!1:(this.orientation=e,this.updateLayout(),!0)}getCssVar(e){let t=getComputedStyle(this.root).getPropertyValue(e);return t?t.trim():null}fireEvent(e){let t=new CustomEvent("scrollbar-input",{detail:e});this.host.dispatchEvent(t)}fireEventRepeatedly(e,t,i,n=0){this.stopEventRepetition(),this.fireEvent(e);let r=n==0?t:i,o=()=>this.fireEventRepeatedly(e,t,i,n+1);this.eventTimeoutId=setTimeout(o,r)}stopEventRepetition(){this.eventTimeoutId&&(clearTimeout(this.eventTimeoutId),this.eventTimeoutId=void 0)}startPointerCapture(e,t){this.stopPointerCapture(),e.setPointerCapture(t),this.pointerCaptureElement=e,this.pointerCaptureId=t}stopPointerCapture(){this.pointerCaptureId&&(this.pointerCaptureElement.releasePointerCapture(this.pointerCaptureId),this.pointerCaptureId=void 0)}onTroughPointerDown=e=>{if(!this.isConnected||this.pointerCaptureId||!e.isPrimary||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.button!=0)return;let t=this.trough.getBoundingClientRect(),i=this.orientation?e.clientY-t.top:e.clientX-t.left,n=(this.orientation?t.height:t.width)*(1-this.getEffectiveThumbSize())*this.value,o=i>n?"incrementLarge":"decrementLarge";this.troughActive=!0,e.preventDefault(),this.startPointerCapture(this.trough,e.pointerId),this.fireEventRepeatedly(o,this.clickRepeatDelay,this.clickRepeatInterval)};onButtonPointerDown=(e,t)=>{if(!this.isConnected||this.pointerCaptureId||!e.isPrimary||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.button!=0)return;switch(t){case 1:this.button1Active=!0;break;case 2:this.button2Active=!0;break}let i=t==1?"decrementSmall":"incrementSmall";this.updateStyle(),e.preventDefault();let n=t==1?this.button1:this.button2;this.startPointerCapture(n,e.pointerId),this.fireEventRepeatedly(i,this.clickRepeatDelay,this.clickRepeatInterval)};onThumbPointerDown=e=>{!this.isConnected||this.pointerCaptureId||!e.isPrimary||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.button!=0||(this.dragStartPos=this.orientation?e.clientY:e.clientX,this.dragStartValue=this.value,this.thumbDragging=!0,this.updateStyle(),e.preventDefault(),this.startPointerCapture(this.thumb,e.pointerId))};onThumbPointerMove=e=>{if(!this.isConnected||!e.isPrimary||!this.thumbDragging)return;let i=(this.orientation?e.clientY:e.clientX)-this.dragStartPos,n=this.computeThumbMoveValue(i),r=this.dragStartValue+n;e.preventDefault(),this.setValue(r)&&this.fireEvent("value")};onPointerUp=e=>{this.isConnected&&e.isPrimary&&(this.resetInteractionState(),this.updateStyle(),this.stopEventRepetition(),this.stopPointerCapture(),e.preventDefault())}},Vl=class extends HTMLElement{widget;constructor(){super(),this.widget=new Nl(this);let e=parseFloat(this.getAttribute("value"));if(isNaN(e)||(this.widget.value=e),this.hasOwnProperty("value")){let t=this.value;delete this.value,isNaN(t)||(this.widget.value=t)}}connectedCallback(){this.widget.connectedCallback()}disconnectedCallback(){this.widget.disconnectedCallback()}get thumbSize(){return this.widget.thumbSize}set thumbSize(e){this.widget.setThumbSize(e)}get value(){return this.widget.value}set value(e){this.widget.setValue(e)}get orientation(){return pg(this.widget.orientation)}set orientation(e){this.widget.setOrientation(yu(e))&&this.setAttribute("orientation",this.orientation)}get orientationBoolean(){return this.widget.orientation}static get observedAttributes(){return["orientation"]}attributeChangedCallback(e,t,i){switch(e){case"orientation":{i&&this.widget.setOrientation(yu(i));break}}}},lg=1e-9,zt="var(--plain-scrollbar-button-size, 13px)",er='<path d="M -60 30 h 120 L 0 -30 z" stroke-width="0"/>',cg=og`:host{display:block;contain:content;background-color:#f8f8f8;border-style:solid;border-width:1px;border-color:#ddd}#root{touch-action:none;user-select:none;box-sizing:border-box;position:relative;width:100%;height:100%}#trough{position:absolute}#root.vertical #trough{width:100%;top:${zt};bottom:${zt}}#root.horizontal #trough{height:100%;left:${zt};right:${zt}}#thumb{box-sizing:border-box;position:absolute;width:100%;height:100%;background-color:var(--plain-scrollbar-thumb-background-color,#f0f0f0);border-style:solid;border-width:var(--plain-scrollbar-thumb-border-width,1px);border-color:var(--plain-scrollbar-thumb-border-color,#b8b8b8);border-radius:var(--plain-scrollbar-thumb-border-radius,4px);transition:background-color 50ms linear}#thumb:hover{background-color:var(--plain-scrollbar-thumb-background-color-hover,#e0e0e0)}#thumb.active{background-color:var(--plain-scrollbar-thumb-background-color-active,silver)}#button1,#button2{box-sizing:border-box;position:absolute;display:block;fill:var(--plain-scrollbar-button-color,#606060)}#root.vertical #button1{top:0;width:100%;height:${zt}}#root.vertical #button2{bottom:0;width:100%;height:${zt}}#root.horizontal #button1{left:0;height:100%;width:${zt}}#root.horizontal #button2{right:0;height:100%;width:${zt}}#downArrow,#leftArrow,#rightArrow,#upArrow{display:none;width:100%;height:100%}#root.vertical #downArrow,#root.vertical #upArrow{display:block}#root.horizontal #leftArrow,#root.horizontal #rightArrow{display:block}#button1:hover,#button2:hover{background-color:var(--plain-scrollbar-button-color-hover,#e0e0e0)}#button1.active,#button2.active{background-color:var(--plain-scrollbar-button-color-active,silver)}`,hg=ag`<div id="root" part="root"><div id="button1" part="button button1"><svg id="upArrow" part="arrow upArrow" viewBox="-100 -100 200 200">${er}</svg> <svg id="leftArrow" part="arrow leftArrow" viewBox="-100 -100 200 200"><g transform="rotate(-90)">${er}</g></svg></div><div id="trough" part="trough"><div id="thumb" part="thumb"></div></div><div id="button2" part="button button2"><svg id="downArrow" part="arrow downArrow" viewBox="-100 -100 200 200"><g transform="rotate(180)">${er}</g></svg> <svg id="rightArrow" part="arrow rightArrow" viewBox="-100 -100 200 200"><g transform="rotate(90)">${er}</g></svg></div></div>`;function pg(s){return s?"vertical":"horizontal"}function yu(s){switch(s){case"vertical":return!0;case"horizontal":return!1;default:throw new Error('Invalid orientation value "'+s+'".')}}function tr(s){return(s*100).toFixed(3)+"%"}function dg(s){if(!(!s||!s.endsWith("px")))return Number(s.substring(0,s.length-2))}customElements.define("node-projects-plain-scrollbar",Vl);Ka();Xl();wt();Xe();bo();var Qa=class{_originalCustomElementsRegistry;_newElements=[];constructor(){this._originalCustomElementsRegistry=window.customElements;let e={},t=this._originalCustomElementsRegistry,i=this._newElements;e.define=function(n,r,o){i.push(n),t.define(n,r,o)},e.get=function(n){return t.get(n)},e.upgrade=function(n){return t.upgrade(n)},e.whenDefined=function(n){return t.whenDefined(n)},Object.defineProperty(window,"customElements",{get(){return e}})}dispose(){let e=this._originalCustomElementsRegistry;Object.defineProperty(window,"customElements",{get(){return e}})}getNewElements(){let e=this._newElements;return this._newElements=[],e}};ue();fr();Ue();function wN(s,e,t){let i=e.getRootNode(),n=document.createElement("div");return n.popover="auto",typeof s=="string"?n.innerHTML=s:n.append(s),i instanceof ShadowRoot?i.appendChild(n):document.body.appendChild(n),Object.assign(n.style,{positionArea:"right bottom",positionTryFallbacks:`
|
|
545
|
+
</label>`).join("")}_formatColor(){return Zf(this._color,this._mode)}_syncHueFromColor(){let e=bl(this._color);e.s>tr&&e.v>tr&&(this._hue=El(e.h))}},Il=class extends au{static style=lu`:host{display:inline-block;box-sizing:border-box;width:100%;height:100%;padding:2px}button{display:block;box-sizing:border-box;width:100%;height:100%;padding:3px;border:1px solid var(--input-border-color,#596c7a);border-radius:4px;background:var(--input-background-color,#1d2228);cursor:pointer;outline:0}button:focus{border-color:#79b8ff;box-shadow:0 0 0 1px rgba(121,184,255,.28)}#swatch{display:block;width:100%;height:100%;border-radius:2px;background:linear-gradient(var(--color,#000),var(--color,#000)),linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25% 75%,rgba(255,255,255,.25) 75%),linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25% 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 0,5px 5px;background-size:auto,10px 10px,10px 10px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.28)}:host([disabled]) button,:host([readonly]) button{cursor:default;opacity:.65}`;static template=cu`<button id="button" type="button" aria-label="Edit color"><span id="swatch"></span></button>`;_value="#000000";_button;_popup;_editor;_ignoreNextClick=!1;_outsidePointerHandler=e=>this._handleOutsidePointer(e);_windowKeyHandler=e=>this._handleWindowKey(e);get value(){return this._value}set value(e){this._setValue(e,!1)}get readOnly(){return this.hasAttribute("readonly")}set readOnly(e){this.toggleAttribute("readonly",e)}get disabled(){return this.hasAttribute("disabled")}set disabled(e){this.toggleAttribute("disabled",e),this._button&&(this._button.disabled=e)}constructor(){super(),this._button=this._getDomElement("button")}ready(){let e=this.getAttribute("value");e!=null&&this._setValue(e,!1),this._button.disabled=this.disabled,this._button.addEventListener("pointerdown",t=>this._handleButtonPointerDown(t)),this._button.addEventListener("click",t=>this._handleButtonClick(t)),this._button.addEventListener("keydown",t=>this._handleButtonKeyDown(t)),this._renderSwatch()}disconnectedCallback(){this._closePopup()}_togglePopup(){this.readOnly||this.disabled||(this._popup?this._closePopup():this._openPopup())}_handleButtonPointerDown(e){e.button===0&&(this._ignoreNextClick=!0,this._togglePopup(),e.preventDefault(),e.stopPropagation())}_handleButtonClick(e){if(this._ignoreNextClick){this._ignoreNextClick=!1,e.preventDefault(),e.stopPropagation();return}this._togglePopup()}_handleButtonKeyDown(e){e.key!=="Enter"&&e.key!==" "||(this._togglePopup(),e.preventDefault(),e.stopPropagation())}_openPopup(){this._popup=document.createElement("div"),this._popup.style.position="fixed",this._popup.style.zIndex="100000",this._popup.style.width="280px",this._editor=document.createElement("node-projects-color-editor"),this._editor.value=this._value,this._editor.valuePreviewChanged.on(e=>{this._setValue(e.newValue,!0),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0}))}),this._editor.valueChanged.on(e=>{this._setValue(e.newValue,!0),this.dispatchEvent(new Event("change",{bubbles:!0,composed:!0}))}),this._popup.appendChild(this._editor),document.body.appendChild(this._popup),this._positionPopup(),window.addEventListener("resize",()=>this._positionPopup(),{once:!0}),window.addEventListener("scroll",()=>this._positionPopup(),{once:!0,capture:!0}),window.addEventListener("keydown",this._windowKeyHandler),requestAnimationFrame(()=>window.addEventListener("pointerdown",this._outsidePointerHandler,!0))}_positionPopup(){if(!this._popup)return;let e=this.getBoundingClientRect(),t=this._popup.offsetWidth||280,i=this._popup.offsetHeight||360,n=e.left,s=e.bottom+4;n+t>window.innerWidth-8&&(n=window.innerWidth-t-8),s+i>window.innerHeight-8&&(s=e.top-i-4),this._popup.style.left=`${Math.max(8,n)}px`,this._popup.style.top=`${Math.max(8,s)}px`}_handleOutsidePointer(e){let t=e.composedPath();t.includes(this)||this._popup&&t.includes(this._popup)||this._closePopup()}_handleWindowKey(e){e.key==="Escape"&&this._closePopup()}_closePopup(){window.removeEventListener("pointerdown",this._outsidePointerHandler,!0),window.removeEventListener("keydown",this._windowKeyHandler),this._popup?.remove(),this._popup=null,this._editor=null}_setValue(e,t){this._value=e??"",t&&this.setAttribute("value",this._value),this._renderSwatch()}_renderSwatch(){let e=er(this._value)??{r:0,g:0,b:0,a:1};this.style.setProperty("--color",hu(e))}};function er(r){if(!r)return null;let e=r.trim();if(e.toLowerCase()==="transparent")return{r:0,g:0,b:0,a:0};let t=Kf(e);if(t)return t;let i=Qf(e);if(i)return i;let n=$f(e),s=qn.toColorObject(n);return s?.valid?ri({r:s.red,g:s.green,b:s.blue,a:s.opacity}):null}function ru(r){let t=/^\s*(rgba?|hsla?|cmyk|oklab|oklch)\s*\(/i.exec(r??"")?.[1]?.toLowerCase();return t==="rgb"||t==="rgba"?"rgb":t==="hsl"||t==="hsla"?"hsl":t==="cmyk"?"cmyk":t==="oklab"?"oklab":t==="oklch"?"oklch":null}function $f(r){return r.replace(/,\s*/g,",").replace(/rgba?\(([^)]*)\)/i,(e,t)=>su("rgb",t)).replace(/hsla?\(([^)]*)\)/i,(e,t)=>su("hsl",t))}function su(r,e){if(e.includes(",")){let s=e.split(",").map(o=>o.trim());return s.length===4&&s[3].endsWith("%")&&(s[3]=String(Number(s[3].slice(0,-1))/100)),`${r}${s.length===4?"a":""}(${s.join(",")})`}let[t,i]=e.split("/").map(s=>s.trim()),n=t.split(/\s+/).filter(Boolean);return i&&n.push(i.endsWith("%")?String(Number(i.slice(0,-1))/100):i),`${r}${n.length===4?"a":""}(${n.join(",")})`}function Kf(r){let e=/^#([0-9a-f]{3,8})$/i.exec(r);if(!e)return null;let t=e[1],i=n=>parseInt(n.length===1?n+n:n,16);return t.length===3||t.length===4?ri({r:i(t[0]),g:i(t[1]),b:i(t[2]),a:t.length===4?i(t[3])/255:1}):t.length===6||t.length===8?ri({r:i(t.slice(0,2)),g:i(t.slice(2,4)),b:i(t.slice(4,6)),a:t.length===8?i(t.slice(6,8))/255:1}):null}function Qf(r){let e=/^(oklab|oklch)\((.*)\)$/i.exec(r);if(!e)return null;let t=e[1].toLowerCase(),[i,n]=e[2].split("/").map(a=>a.trim()),s=i.replace(/,/g," ").split(/\s+/).filter(Boolean);if(s.length!==3)return null;let o=n?Cl(n,1):1;return ri(t==="oklab"?{...kl(Cl(s[0],1),Number(s[1]),Number(s[2])),a:o}:{...mu(Cl(s[0],1),Number(s[1]),Number(s[2])),a:o})}function Zf(r,e){let t=Ve(r.a,3);if(e==="rgb")return r.a>=1?`rgb(${r.r}, ${r.g}, ${r.b})`:`rgba(${r.r}, ${r.g}, ${r.b}, ${t})`;if(e==="hsl"){let n=pu(r);return r.a>=1?`hsl(${Math.round(n.h)}, ${Math.round(n.s*100)}%, ${Math.round(n.l*100)}%)`:`hsla(${Math.round(n.h)}, ${Math.round(n.s*100)}%, ${Math.round(n.l*100)}%, ${t})`}if(e==="cmyk"){let n=du(r),s=`${Math.round(n.c*100)}%, ${Math.round(n.m*100)}%, ${Math.round(n.y*100)}%, ${Math.round(n.k*100)}%`;return r.a>=1?`cmyk(${s})`:`cmyk(${s}, ${t})`}if(e==="oklab"){let n=Dl(r);return`oklab(${Ve(n.l*100,2)}% ${Ve(n.a,4)} ${Ve(n.b,4)}${r.a>=1?"":` / ${t}`})`}let i=uu(r);return`oklch(${Ve(i.l*100,2)}% ${Ve(i.c,4)} ${Ve(i.h,2)}${r.a>=1?"":` / ${t}`})`}function Jf(r,e){if(e==="rgb")return[{label:"R",name:"r",value:r.r,min:0,max:255,step:1},{label:"G",name:"g",value:r.g,min:0,max:255,step:1},{label:"B",name:"b",value:r.b,min:0,max:255,step:1},{label:"A",name:"a",value:Math.round(r.a*100),min:0,max:100,step:1}];if(e==="hsl"){let i=pu(r);return[{label:"H",name:"h",value:Math.round(i.h),min:0,max:360,step:1},{label:"S",name:"s",value:Math.round(i.s*100),min:0,max:100,step:1},{label:"L",name:"l",value:Math.round(i.l*100),min:0,max:100,step:1},{label:"A",name:"a",value:Math.round(r.a*100),min:0,max:100,step:1}]}if(e==="cmyk"){let i=du(r);return[{label:"C",name:"c",value:Math.round(i.c*100),min:0,max:100,step:1},{label:"M",name:"m",value:Math.round(i.m*100),min:0,max:100,step:1},{label:"Y",name:"y",value:Math.round(i.y*100),min:0,max:100,step:1},{label:"K",name:"k",value:Math.round(i.k*100),min:0,max:100,step:1},{label:"A",name:"a",value:Math.round(r.a*100),min:0,max:100,step:1}]}if(e==="oklab"){let i=Dl(r);return[{label:"L",name:"l",value:Ve(i.l*100,2),min:0,max:100,step:.1},{label:"A",name:"a1",value:Ve(i.a,4),min:-1,max:1,step:.001},{label:"B",name:"b1",value:Ve(i.b,4),min:-1,max:1,step:.001},{label:"Alpha",name:"alpha",value:Math.round(r.a*100),min:0,max:100,step:1}]}let t=uu(r);return[{label:"L",name:"l",value:Ve(t.l*100,2),min:0,max:100,step:.1},{label:"C",name:"c",value:Ve(t.c,4),min:0,max:1,step:.001},{label:"H",name:"h",value:Ve(t.h,2),min:0,max:360,step:.1},{label:"A",name:"a",value:Math.round(r.a*100),min:0,max:100,step:1}]}function ri(r){return{r:Math.round(Ft(r.r,0,255)),g:Math.round(Ft(r.g,0,255)),b:Math.round(Ft(r.b,0,255)),a:Ft(Number.isFinite(r.a)?r.a:1,0,1)}}function hu(r){return`rgba(${r.r}, ${r.g}, ${r.b}, ${Ve(r.a,3)})`}function bl(r){let e=r.r/255,t=r.g/255,i=r.b/255,n=Math.max(e,t,i),s=Math.min(e,t,i),o=n-s,a=0;return o!==0&&(n===e?a=(t-i)/o%6:n===t?a=(i-e)/o+2:a=(e-t)/o+4,a*=60),{h:(a+360)%360,s:n===0?0:o/n,v:n}}function ou(r,e,t){let i=t*e,n=i*(1-Math.abs(r/60%2-1)),s=t-i,o=0,a=0,l=0;return r<60?[o,a,l]=[i,n,0]:r<120?[o,a,l]=[n,i,0]:r<180?[o,a,l]=[0,i,n]:r<240?[o,a,l]=[0,n,i]:r<300?[o,a,l]=[n,0,i]:[o,a,l]=[i,0,n],{r:(o+s)*255,g:(a+s)*255,b:(l+s)*255}}function pu(r){let e=r.r/255,t=r.g/255,i=r.b/255,n=Math.max(e,t,i),s=Math.min(e,t,i),o=(n+s)/2,a=n-s,l=0,c=0;return a!==0&&(c=a/(1-Math.abs(2*o-1)),n===e?l=(t-i)/a%6:n===t?l=(i-e)/a+2:l=(e-t)/a+4,l*=60),{h:(l+360)%360,s:c,l:o}}function qf(r,e,t){let i=(1-Math.abs(2*t-1))*e,n=i*(1-Math.abs(r/60%2-1)),s=t-i/2,o=0,a=0,l=0;return r<60?[o,a,l]=[i,n,0]:r<120?[o,a,l]=[n,i,0]:r<180?[o,a,l]=[0,i,n]:r<240?[o,a,l]=[0,n,i]:r<300?[o,a,l]=[n,0,i]:[o,a,l]=[i,0,n],{r:(o+s)*255,g:(a+s)*255,b:(l+s)*255}}function du(r){let e=r.r/255,t=r.g/255,i=r.b/255,n=1-Math.max(e,t,i);return n>=1-tr?{c:0,m:0,y:0,k:1}:{c:(1-e-n)/(1-n),m:(1-t-n)/(1-n),y:(1-i-n)/(1-n),k:n}}function eg(r,e,t,i){return{r:255*(1-r)*(1-i),g:255*(1-e)*(1-i),b:255*(1-t)*(1-i)}}function Dl(r){let e=wl(r.r/255),t=wl(r.g/255),i=wl(r.b/255),n=Math.cbrt(.4122214708*e+.5363325363*t+.0514459929*i),s=Math.cbrt(.2119034982*e+.6806995451*t+.1073969566*i),o=Math.cbrt(.0883024619*e+.2817188376*t+.6299787005*i);return{l:.2104542553*n+.793617785*s-.0040720468*o,a:1.9779984951*n-2.428592205*s+.4505937099*o,b:.0259040371*n+.7827717662*s-.808675766*o}}function kl(r,e,t){let i=Math.pow(r+.3963377774*e+.2158037573*t,3),n=Math.pow(r-.1055613458*e-.0638541728*t,3),s=Math.pow(r-.0894841775*e-1.291485548*t,3);return{r:255*Sl(4.0767416621*i-3.3077115913*n+.2309699292*s),g:255*Sl(-1.2684380046*i+2.6097574011*n-.3413193965*s),b:255*Sl(-.0041960863*i-.7034186147*n+1.707614701*s)}}function uu(r){let e=Dl(r),t=Math.sqrt(e.a*e.a+e.b*e.b),i=t<tr?0:(Math.atan2(e.b,e.a)*180/Math.PI+360)%360;return{l:e.l,c:t,h:i}}function mu(r,e,t){let i=t*Math.PI/180;return kl(r,e*Math.cos(i),e*Math.sin(i))}function wl(r){return r<=.04045?r/12.92:Math.pow((r+.055)/1.055,2.4)}function Sl(r){return r<=.0031308?12.92*r:1.055*Math.pow(r,1/2.4)-.055}function Cl(r,e){return r.endsWith("%")?Number(r.slice(0,-1))/100*e:Number(r)}function Ft(r,e,t){return Math.min(t,Math.max(e,Number.isFinite(r)?r:e))}function El(r){return Ft(r,0,360)}function Ve(r,e){let t=Math.pow(10,e);return Math.round(r*t)/t}customElements.define("node-projects-color-editor",Pl);customElements.define("node-projects-color-input",Il);Ml();Vl();import{css as cg,html as hg}from"@node-projects/base-custom-webcomponent";var Rl=class{host;root;trough;button1;button2;thumb;isConnected=!1;thumbSize=.3;value=0;orientation=!1;clickRepeatDelay=300;clickRepeatInterval=100;defaultThumbMinSize=25;dragStartPos;dragStartValue;eventTimeoutId;pointerCaptureId;pointerCaptureElement;thumbDragging;button1Active;button2Active;troughActive;constructor(e){this.host=e,e.attachShadow({mode:"open"});let t=e.shadowRoot;t.appendChild(ug.content.cloneNode(!0)),t.adoptedStyleSheets=[dg],this.root=t.querySelector("#root"),this.trough=t.querySelector("#trough"),this.button1=t.querySelector("#button1"),this.button2=t.querySelector("#button2"),this.thumb=t.querySelector("#thumb"),this.trough.addEventListener("pointerdown",this.onTroughPointerDown),this.trough.addEventListener("pointerup",this.onPointerUp),this.trough.addEventListener("pointercancel",this.onPointerUp),this.button1.addEventListener("pointerdown",i=>this.onButtonPointerDown(i,1)),this.button1.addEventListener("pointerup",this.onPointerUp),this.button1.addEventListener("pointercancel",this.onPointerUp),this.button1.addEventListener("contextmenu",i=>i.preventDefault()),this.button2.addEventListener("pointerdown",i=>this.onButtonPointerDown(i,2)),this.button2.addEventListener("pointerup",this.onPointerUp),this.button2.addEventListener("pointercancel",this.onPointerUp),this.button2.addEventListener("contextmenu",i=>i.preventDefault()),this.thumb.addEventListener("pointerdown",this.onThumbPointerDown),this.thumb.addEventListener("pointerup",this.onPointerUp),this.thumb.addEventListener("pointercancel",this.onPointerUp),this.thumb.addEventListener("pointermove",this.onThumbPointerMove),this.resetInteractionState()}resetInteractionState(){this.thumbDragging=!1,this.button1Active=!1,this.button2Active=!1,this.troughActive=!1}connectedCallback(){this.isConnected=!0,this.resetInteractionState(),this.updateLayout(),this.updateStyle()}disconnectedCallback(){this.isConnected=!1,this.resetInteractionState(),this.stopEventRepetition(),this.stopPointerCapture()}updateLayout(){this.isConnected&&(this.root.classList.toggle("horizontal",!this.orientation),this.root.classList.toggle("vertical",this.orientation),this.thumb.style.display=this.thumbSize==0?"none":"",this.thumb.style.height=this.orientation?rr(this.getEffectiveThumbSize()):"",this.thumb.style.width=this.orientation?"":rr(this.getEffectiveThumbSize()),this.thumb.style.top="",this.thumb.style.left="",this.updateThumbPosition())}updateStyle(){this.isConnected&&(this.thumb.classList.toggle("active",this.thumbDragging),this.button1.classList.toggle("active",this.button1Active),this.button2.classList.toggle("active",this.button2Active),this.troughActive)}updateThumbPosition(){let e=(1-this.getEffectiveThumbSize())*this.value;this.orientation?this.thumb.style.top=rr(e):this.thumb.style.left=rr(e)}getThroughSize(){return this.orientation?this.trough.clientHeight:this.trough.clientWidth}computeThumbMoveValue(e){let t=this.getThroughSize()*(1-this.getEffectiveThumbSize());return t<pg?0:e/t}setThumbSize(e){let t=Math.max(0,Math.min(1,e));t!=this.thumbSize&&(this.thumbSize=t,this.updateLayout())}getThumbMinSize(){let e=this.getCssVar("--plain-scrollbar-thumb-min-size");if(!e)return this.defaultThumbMinSize;let t=fg(e);return t||this.defaultThumbMinSize}getEffectiveThumbSize(){let e=this.getThumbMinSize(),t=this.getThroughSize();if(!t)return this.thumbSize;let i=Math.min(1,e/t);return Math.max(i,this.thumbSize)}setValue(e){let t=Math.max(0,Math.min(1,e));return t==this.value?!1:(this.value=isNaN(t)?0:t,this.updateThumbPosition(),!0)}setOrientation(e){return e==this.orientation?!1:(this.orientation=e,this.updateLayout(),!0)}getCssVar(e){let t=getComputedStyle(this.root).getPropertyValue(e);return t?t.trim():null}fireEvent(e){let t=new CustomEvent("scrollbar-input",{detail:e});this.host.dispatchEvent(t)}fireEventRepeatedly(e,t,i,n=0){this.stopEventRepetition(),this.fireEvent(e);let s=n==0?t:i,o=()=>this.fireEventRepeatedly(e,t,i,n+1);this.eventTimeoutId=setTimeout(o,s)}stopEventRepetition(){this.eventTimeoutId&&(clearTimeout(this.eventTimeoutId),this.eventTimeoutId=void 0)}startPointerCapture(e,t){this.stopPointerCapture(),e.setPointerCapture(t),this.pointerCaptureElement=e,this.pointerCaptureId=t}stopPointerCapture(){this.pointerCaptureId&&(this.pointerCaptureElement.releasePointerCapture(this.pointerCaptureId),this.pointerCaptureId=void 0)}onTroughPointerDown=e=>{if(!this.isConnected||this.pointerCaptureId||!e.isPrimary||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.button!=0)return;let t=this.trough.getBoundingClientRect(),i=this.orientation?e.clientY-t.top:e.clientX-t.left,n=(this.orientation?t.height:t.width)*(1-this.getEffectiveThumbSize())*this.value,o=i>n?"incrementLarge":"decrementLarge";this.troughActive=!0,e.preventDefault(),this.startPointerCapture(this.trough,e.pointerId),this.fireEventRepeatedly(o,this.clickRepeatDelay,this.clickRepeatInterval)};onButtonPointerDown=(e,t)=>{if(!this.isConnected||this.pointerCaptureId||!e.isPrimary||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.button!=0)return;switch(t){case 1:this.button1Active=!0;break;case 2:this.button2Active=!0;break}let i=t==1?"decrementSmall":"incrementSmall";this.updateStyle(),e.preventDefault();let n=t==1?this.button1:this.button2;this.startPointerCapture(n,e.pointerId),this.fireEventRepeatedly(i,this.clickRepeatDelay,this.clickRepeatInterval)};onThumbPointerDown=e=>{!this.isConnected||this.pointerCaptureId||!e.isPrimary||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey||e.button!=0||(this.dragStartPos=this.orientation?e.clientY:e.clientX,this.dragStartValue=this.value,this.thumbDragging=!0,this.updateStyle(),e.preventDefault(),this.startPointerCapture(this.thumb,e.pointerId))};onThumbPointerMove=e=>{if(!this.isConnected||!e.isPrimary||!this.thumbDragging)return;let i=(this.orientation?e.clientY:e.clientX)-this.dragStartPos,n=this.computeThumbMoveValue(i),s=this.dragStartValue+n;e.preventDefault(),this.setValue(s)&&this.fireEvent("value")};onPointerUp=e=>{this.isConnected&&e.isPrimary&&(this.resetInteractionState(),this.updateStyle(),this.stopEventRepetition(),this.stopPointerCapture(),e.preventDefault())}},zl=class extends HTMLElement{widget;constructor(){super(),this.widget=new Rl(this);let e=parseFloat(this.getAttribute("value"));if(isNaN(e)||(this.widget.value=e),this.hasOwnProperty("value")){let t=this.value;delete this.value,isNaN(t)||(this.widget.value=t)}}connectedCallback(){this.widget.connectedCallback()}disconnectedCallback(){this.widget.disconnectedCallback()}get thumbSize(){return this.widget.thumbSize}set thumbSize(e){this.widget.setThumbSize(e)}get value(){return this.widget.value}set value(e){this.widget.setValue(e)}get orientation(){return mg(this.widget.orientation)}set orientation(e){this.widget.setOrientation(_u(e))&&this.setAttribute("orientation",this.orientation)}get orientationBoolean(){return this.widget.orientation}static get observedAttributes(){return["orientation"]}attributeChangedCallback(e,t,i){switch(e){case"orientation":{i&&this.widget.setOrientation(_u(i));break}}}},pg=1e-9,Bt="var(--plain-scrollbar-button-size, 13px)",nr='<path d="M -60 30 h 120 L 0 -30 z" stroke-width="0"/>',dg=cg`:host{display:block;contain:content;background-color:#f8f8f8;border-style:solid;border-width:1px;border-color:#ddd}#root{touch-action:none;user-select:none;box-sizing:border-box;position:relative;width:100%;height:100%}#trough{position:absolute}#root.vertical #trough{width:100%;top:${Bt};bottom:${Bt}}#root.horizontal #trough{height:100%;left:${Bt};right:${Bt}}#thumb{box-sizing:border-box;position:absolute;width:100%;height:100%;background-color:var(--plain-scrollbar-thumb-background-color,#f0f0f0);border-style:solid;border-width:var(--plain-scrollbar-thumb-border-width,1px);border-color:var(--plain-scrollbar-thumb-border-color,#b8b8b8);border-radius:var(--plain-scrollbar-thumb-border-radius,4px);transition:background-color 50ms linear}#thumb:hover{background-color:var(--plain-scrollbar-thumb-background-color-hover,#e0e0e0)}#thumb.active{background-color:var(--plain-scrollbar-thumb-background-color-active,silver)}#button1,#button2{box-sizing:border-box;position:absolute;display:block;fill:var(--plain-scrollbar-button-color,#606060)}#root.vertical #button1{top:0;width:100%;height:${Bt}}#root.vertical #button2{bottom:0;width:100%;height:${Bt}}#root.horizontal #button1{left:0;height:100%;width:${Bt}}#root.horizontal #button2{right:0;height:100%;width:${Bt}}#downArrow,#leftArrow,#rightArrow,#upArrow{display:none;width:100%;height:100%}#root.vertical #downArrow,#root.vertical #upArrow{display:block}#root.horizontal #leftArrow,#root.horizontal #rightArrow{display:block}#button1:hover,#button2:hover{background-color:var(--plain-scrollbar-button-color-hover,#e0e0e0)}#button1.active,#button2.active{background-color:var(--plain-scrollbar-button-color-active,silver)}`,ug=hg`<div id="root" part="root"><div id="button1" part="button button1"><svg id="upArrow" part="arrow upArrow" viewBox="-100 -100 200 200">${nr}</svg> <svg id="leftArrow" part="arrow leftArrow" viewBox="-100 -100 200 200"><g transform="rotate(-90)">${nr}</g></svg></div><div id="trough" part="trough"><div id="thumb" part="thumb"></div></div><div id="button2" part="button button2"><svg id="downArrow" part="arrow downArrow" viewBox="-100 -100 200 200"><g transform="rotate(180)">${nr}</g></svg> <svg id="rightArrow" part="arrow rightArrow" viewBox="-100 -100 200 200"><g transform="rotate(90)">${nr}</g></svg></div></div>`;function mg(r){return r?"vertical":"horizontal"}function _u(r){switch(r){case"vertical":return!0;case"horizontal":return!1;default:throw new Error('Invalid orientation value "'+r+'".')}}function rr(r){return(r*100).toFixed(3)+"%"}function fg(r){if(!(!r||!r.endsWith("px")))return Number(r.substring(0,r.length-2))}customElements.define("node-projects-plain-scrollbar",zl);qa();Kl();Et();$e();Eo();var el=class{_originalCustomElementsRegistry;_newElements=[];constructor(){this._originalCustomElementsRegistry=window.customElements;let e={},t=this._originalCustomElementsRegistry,i=this._newElements;e.define=function(n,s,o){i.push(n),t.define(n,s,o)},e.get=function(n){return t.get(n)},e.upgrade=function(n){return t.upgrade(n)},e.whenDefined=function(n){return t.whenDefined(n)},Object.defineProperty(window,"customElements",{get(){return e}})}dispose(){let e=this._originalCustomElementsRegistry;Object.defineProperty(window,"customElements",{get(){return e}})}getNewElements(){let e=this._newElements;return this._newElements=[],e}};de();vr();Xe();function IN(r,e,t){let i=e.getRootNode(),n=document.createElement("div");return n.popover="auto",typeof r=="string"?n.innerHTML=r:n.append(r),i instanceof ShadowRoot?i.appendChild(n):document.body.appendChild(n),Object.assign(n.style,{positionArea:"right bottom",positionTryFallbacks:`
|
|
546
546
|
flip-block,
|
|
547
547
|
flip-inline,
|
|
548
548
|
top,
|
|
549
549
|
bottom,
|
|
550
550
|
left,
|
|
551
551
|
right
|
|
552
|
-
`}),n.addEventListener("toggle",()=>{n.matches(":popover-open")||(n.remove(),t?.())},{once:!0}),n.showPopover({source:e}),()=>{n.matches(":popover-open")&&n.hidePopover(),n.remove(),t?.()}}Ba();Zt();uo();var Za=class s{static addTouchEvents(e){return new s(e)}constructor(e){this._target=e,e.addEventListener("touchstart",t=>this._touchStart(t)),e.addEventListener("touchmove",t=>this._touchMove(t)),e.addEventListener("touchend",t=>this._touchEnd(t)),e.addEventListener("touchcancel",t=>this._touchEnd(t))}_target;_started;_startX_0;_startY_0;_lastZoom;_lastPanDistanceX;_lastPanDistanceY;_startZoomDistance;multitouchEventActive;_mode=null;_touchStart(e){e.touches.length===2?(this.multitouchEventActive=!0,this._mode=null,this._started=!0,this._startX_0=e.touches[0].screenX,this._startY_0=e.touches[0].screenY,this._lastZoom=0,this._lastPanDistanceX=0,this._lastPanDistanceY=0,this._startZoomDistance=Math.hypot(e.touches[0].screenX-e.touches[1].screenX,e.touches[0].screenY-e.touches[1].screenY)):(this.multitouchEventActive=!1,this._started=!1)}_touchMove(e){if(e.touches.length!==2&&(this.multitouchEventActive=!1,this._started=!1),this._started){e.preventDefault();let t=Math.hypot(e.touches[0].screenX-e.touches[1].screenX,e.touches[0].screenY-e.touches[1].screenY),i=this._startX_0-e.touches[0].screenX,n=this._startY_0-e.touches[0].screenY,r=i-this._lastPanDistanceX,o=n-this._lastPanDistanceY;this._lastPanDistanceX=i,this._lastPanDistanceY=n;let a=t-this._startZoomDistance,l=a-this._lastZoom;if(this._lastZoom=a,this._lastZoom,this._mode||(Math.abs(a)>10&&(this._mode="zoom"),(Math.abs(i)>10||Math.abs(n)>10)&&(this._mode="pan")),this._mode){if(this._mode=="zoom"){let c=new CustomEvent("zoom",{detail:{factor:a,diff:l}});this._target.dispatchEvent(c)}else if(this._mode=="pan"){let c=new CustomEvent("pan",{detail:{x:i,deltaX:r,y:n,deltaY:o}});this._target.dispatchEvent(c)}}}}_touchEnd(e){this.multitouchEventActive=!1,e.touches.length}};Gt();ze();Sr();Eh();var qa=class{_name;get name(){return this._name}_elementList;getElements(){return Promise.resolve(this._elementList)}constructor(e,t){this._name=e,this._elementList=[],t.elements.forEach(i=>{this.isIElementDefintion(i)?this._elementList.push(i):this._elementList.push({tag:i})})}isIElementDefintion(e){return e!=null&&e.tag!=null}};ze();var Ja=class{_name;get name(){return this._name}_importPrefix;_elementList;_resolveStored;_rejectStored;constructor(e,t,i){this._name=e,this._importPrefix=t,this._parseManifest(i)}_parseManifest(e){this._elementList=[];for(let t of e.modules){for(let i of t.exports)if(i.kind=="custom-element-definition"){let n={tag:i.name,import:oi(this._importPrefix,"/")+"/"+Ie(t.path,"/"),defaultWidth:"200px",defaultHeight:"200px",className:i.declaration.name};this._elementList.push(n)}for(let i of t.declarations)if(i.tagName){let n={tag:i.tagName,import:oi(this._importPrefix,"/")+"/"+Ie(t.path,"/"),defaultWidth:"200px",defaultHeight:"200px",className:i.name};this._elementList.push(n)}this._resolveStored&&(this._resolveStored.forEach(i=>i(this._elementList)),this._resolveStored=null,this._rejectStored=null)}}async getElements(){return this._elementList?Promise.resolve(this._elementList):(this._resolveStored||(this._resolveStored=[],this._rejectStored=[]),new Promise((e,t)=>{this._resolveStored.push(e),this._rejectStored.push(t)}))}};nt();_e();ye();Re();var nn=class s extends te{getRefreshMode(e){return Y.full}_name;get name(){return this._name}_propertiesList;constructor(e,t,i){super(i),this._name=e,this._parseManifest(t)}_parseManifest(e){this._propertiesList={};let t=[];for(let i of e.modules)i.declarations&&t.push(...i.declarations);for(let i of e.modules)for(let n of i.exports)if(n.kind=="custom-element-definition"){let r=[],o=t.find(a=>a.name==n.declaration.name);if(o){if(o.members){for(let a of o.members)if(a.kind=="field"&&a.privacy!=="private"&&a.privacy!=="protected"){let l=_.property;o.attributes&&(l=o.attributes.find(h=>h.fieldName==a.name)!=null?_.propertyAndAttribute:_.property);let c=s.manifestClassPropertyTypeToEditorPropertyType(a.type?.text,a.type?.editor);a.name&&r.push({name:a.name,service:this,propertyType:l,type:c[0],values:c[1],description:a.description})}this._propertiesList[n.name]=r}}else console.warn("declaration for "+n.declaration.name+" not found",e)}}static manifestClassPropertyTypeToEditorPropertyType(e,t){if(t&&t.toLowerCase()==="color")return["color"];if(e){if(e.toLowerCase()==="boolean")return["boolean"];if(e.toLowerCase()==="number")return["number"];if(e.toLowerCase()==="string")return["string"];if(e.startsWith("'")&&e.includes("|"))return["list",e.split("|").map(n=>n.trim()).map(n=>n.substring(1,n.length-1))]}return[e]}isHandledElement(e){return this._propertiesList[e.name]!=null}async getProperties(e){return this._propertiesList[e.name]}async getProperty(e,t){return this._propertiesList[e.name].find(i=>i.name==t)}getPropertyTarget(e,t){return this._propertiesList[e.name].find(i=>i.name==t.name).propertyType==_.attribute?R.attribute:R.property}getUnsetValue(e,t){return e[0].element[t.propertyName??t.name]}};ze();var $m=class s{static registryPatchedTohandleErrors;static packageHacks;_packageSource;_dependecies=new Map;constructor(e="//cdn.jsdelivr.net/npm/"){this._packageSource=e,s.patchCustomElementsRegistryToHandleErrors()}static patchCustomElementsRegistryToHandleErrors(){if(!s.registryPatchedTohandleErrors){s.registryPatchedTohandleErrors=!0;let e=window.customElements,t={};t.define=function(i,n,r){try{e.define(i,n,r)}catch(o){console.warn(o)}},t.get=function(i){return e.get(i)},t.upgrade=function(i){return e.upgrade(i)},t.whenDefined=function(i){return e.whenDefined(i)},Object.defineProperty(window,"customElements",{get(){return t}})}}async loadNpmPackage(e,t,i,n,r){s.packageHacks||(s.packageHacks=(await import("./NpmPackageHacks.json",{assert:{type:"json"}})).default);let o=window.location.protocol+this._packageSource+e+"/",a=o+"package.json";r&&r(e+": loading package.json");let c=await(await fetch(a)).json();this.addToImportmap(o,c);let h=[];if(c.dependencies)for(let v in c.dependencies)h.push(this.loadDependency(v,c.dependencies[v]));await Promise.all(h);let p=o+"custom-elements.json",d=o;if(c.customElements&&(p=o+oi(c.customElements,"/"),p.includes("/"))){let v=p.lastIndexOf("/");d=p.substring(0,v+1)}let u=o+"web-component-designer.json";c.webComponentDesigner&&(u=o+Ie(c.webComponentDesigner,"/")),r&&r(e+": loading custom-elements.json");let m=await fetch(p);if(!m.ok&&c.homepage)try{let y="https://raw.githubusercontent.com/"+new URL(c.homepage).pathname+"/master/custom-elements.json";m=await fetch(y),console.warn("custom-elements.json was missing from npm package, but was loaded from github as a fallback.")}catch(v){console.warn("github custom elments json fallback",v)}if(t&&fetch(u).then(async v=>{if(v.ok){let y=await v.json();if(y.services)for(let x in y.services)for(let w of y.services[x]){w.startsWith("./")&&(w=w.substring(2));let C=(await importShim(o+w)).default;t.register(x,new C)}}}),m.ok){let v=await m.json(),y=new Ja(c.name,d,v);if(t&&t.register("elementsService",y),t){let x=new nn(c.name,v);t.register("propertyService",x)}if(n)for(let x of await y.getElements())importShim(x.import);t&&i&&i.loadControls(t,t.elementsServices),s.packageHacks[e]?.import&&import(s.packageHacks[e]?.import),s.packageHacks[e]?.script&&import(URL.createObjectURL(new Blob([s.packageHacks[e]?.script],{type:"application/javascript"})))}else{console.warn("npm package: "+e+" - no custom-elements.json found, only loading javascript module");let v=new Qa;c.module?await importShim(o+Ie(c.module,"/")):c.main?await importShim(o+Ie(c.main,"/")):c.unpkg?await importShim(o+Ie(c.unpkg,"/")):console.warn("npm package: "+e+" - no entry point in package found."),s.packageHacks[e]?.import&&await import(s.packageHacks[e]?.import),s.packageHacks[e]?.script&&await import(URL.createObjectURL(new Blob([s.packageHacks[e]?.script],{type:"application/javascript"})));let y=v.getNewElements();if(y.length>0&&t&&i){let x={elements:y},w=new qa(e,x);t.register("elementsService",w),i.loadControls(t,t.elementsServices)}v.dispose()}r&&r(e+": done");let f={};return s.packageHacks[e]?.html&&(f.html=(s.packageHacks[e]?.html).replaceAll("${baseUrl}",o)),s.packageHacks[e]?.style&&(f.style=(s.packageHacks[e]?.style).replaceAll("${baseUrl}",o)),f}async loadDependency(e,t,i){if(this._dependecies.has(e))return;if(this._dependecies.set(e,!0),e.startsWith("@types")){console.warn("ignoring wrong dependency: ",e);return}i&&i(e+": loading dependency: "+e);let n=window.location.protocol+this._packageSource+e+"/",r=n+"package.json",a=await(await fetch(r)).json(),l=[];if(a.dependencies)for(let c in a.dependencies)l.push(this.loadDependency(c,a.dependencies[c]));await Promise.all(l),this.addToImportmap(n,a)}async addToImportmap(e,t){let i=importShim.getImportMap().imports,n={imports:{},scopes:{}};if(!i.hasOwnProperty(t.name)){if(t.exports){let o=c=>c?.browser?c.browser:c?.import?c.import:c?.module?c.module:c?.default?c.default:c?.node,a=c=>{let h=o(c);return typeof h!="string"&&(h=o(h)),typeof h!="string"&&(h=o(h)),typeof h!="string"&&(h=null),h},l=a(t.exports);l?n.imports[t.name]=e+Ie(Ie(l,"."),"/"):(l=a(t.exports?.["."]))&&(n.imports[t.name]=e+Ie(Ie(l,"."),"/"))}let r=t.main;if(t.module&&(r=t.module),t.unpkg&&!r&&(r=t.unpkg),n.imports[t.name]||(r?n.imports[t.name]=e+Ie(Ie(r,"."),"/"):console.warn("package: "+e+"no main import found")),n.imports[t.name+"/"]=e,s.packageHacks[t.name]?.map)for(let o in s.packageHacks[t.name]?.map)n.imports[o]=e+s.packageHacks[t.name].map[o];importShim.addImportMap(n)}}};Me();Th();ks();oe();var Yn;(function(s){s.oneWay="oneWay",s.twoWay="twoWay"})(Yn||(Yn={}));nt();Z();var Km;(function(s){s.undefined="undefined",s.folder="folder",s.boolean="boolean",s.number="number",s.string="string",s.date="date",s.color="color",s.object="object"})(Km||(Km={}));nt();Ee();var Qm=class s{static type="base-custom-webcomponent-binding";getBindings(e){let t=null;for(let i of e.attributes()){let n=i[0],r=i[1];if((r.startsWith("[[")||r.startsWith("{{"))&&(r.endsWith("}}")||r.endsWith("]]"))){t||(t=[]);let o={rawName:n,rawValue:r,service:this};i[0]==="bcw:visible"?(o.targetName="visibility",o.target=R.css,o.expression=r.substring(2,r.length-2)):i[0].startsWith("css:")?(o.targetName=n.substring(4),o.target=R.css,o.expression=r.substring(2,r.length-2)):i[0].startsWith("class:")?(o.targetName=n.substring(4),o.target=R.class,o.expression=r.substring(2,r.length-2)):i[0].startsWith("$")?(o.targetName=n.substring(1),o.target=R.attribute,o.expression=r.substring(2,r.length-2)):i[0].startsWith("@")?(o.targetName=n.substring(1),o.target=R.event,o.expression=r.substring(2,r.length-2)):i[0].startsWith(".")?(o.targetName=z.dashToCamelCase(n.substring(1)),o.target=R.explicitProperty,o.expression=r.substring(2,r.length-2)):(o.targetName=z.dashToCamelCase(n),o.target=R.property,o.expression=r.substring(2,r.length-2)),o.type=s.type,o.targetName=o.targetName,o.bindableObjectNames=[r.substring(2,r.length-2)],t.push(o)}}return t}setBinding(e,t){if(t.type!==s.type)return!1;let i="";switch(t.target){case R.explicitProperty:i+=".";break;case R.css:i+="css:";break;case R.class:i+="class";break;case R.attribute:i+="$";break;case R.event:i+="@";break}i+=t.targetName;let n=(t.mode==Yn.oneWay?"[[":"{{")+t.expression+(t.mode==Yn.oneWay?"]]":"}}");return e.setAttribute(i,n),!0}clearBinding(e,t,i){return!0}};st();xc();Me();rt();Ue();Xe();Bi();ue();Fi();function Zm(s){let e=s.element;return e instanceof SVGGraphicsElement&&!(e instanceof SVGSVGElement)&&!!$t(e)}var el=class{serviceForContainer(e,t,i){return i!=null&&i.getComputedStyle()?.position=="absolute"?!0:!(t.display==="grid"||t.display==="inline-grid"||t.display==="flex"||t.display==="inline-flex")}isEnterableContainer(e){return!(J.IsSelfClosingElement(e.element.localName)||!e.isRootItem&&e.element.shadowRoot&&e.element.shadowRoot.querySelector("slot")==null)}canEnter(e,t){return!(e.instanceServiceContainer.designerCanvas.readOnly||!this.isEnterableContainer(e)||!t.every(i=>!i.element.contains(e.element)&&i!==e))}canLeave(e,t){return!0}getElementOffset(e,t){return e.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(e.element)}calculateTrack(e,t,i,n,r,o){let a=r.x-i.x,l=r.y-i.y;if(!X(e)){if(t.alignOnGrid){let c=Zr(o,"position");c.x=c.x%t.gridSize,c.y=c.y%t.gridSize,a=Math.round(a/t.gridSize)*t.gridSize-c.x,l=Math.round(l/t.gridSize)*t.gridSize-c.y}else if(t.alignOnSnap){let c=K(o.element),h=t.snapLines.snapToPosition({x:r.x-n.x,y:r.y-n.y},{width:c.width/t.scaleFactor,height:c.height/t.scaleFactor},{x:a>0?1:-1,y:l>0?1:-1});h.x!==null?a=h.x-Math.round(i.x)+Math.round(n.x):a=Math.round(a),h.y!==null?l=h.y-Math.round(i.y)+Math.round(n.y):l=Math.round(l)}}return{x:a,y:l}}placePoint(e,t,i,n,r,o,a){let l=o.x,c=o.y;if(!X(e)){if(t.alignOnGrid)l=Math.round(l/t.gridSize)*t.gridSize,c=Math.round(c/t.gridSize)*t.gridSize;else if(t.alignOnSnap){let h=t.snapLines.snapToPosition({x:o.x-r.x,y:o.y-r.y},null,{x:l>0?1:-1,y:c>0?1:-1});h.x!==null?l=h.x:l=Math.round(l),h.y!==null?c=h.y:c=Math.round(c)}}return{x:l,y:c}}startPlace(e,t,i,n,r,o,a){}place(e,t,i,n,r,o,a){let l=this.calculateTrack(e,t,n,r,o,a[0]);e.shiftKey&&(l=Ct({x:0,y:0},l,90));let c=me(Dc(a));for(let h of c){let p=h.instanceServiceContainer.designerCanvas.canvas,d=h.parent.element.getBoxQuads({relativeTo:p,iframes:h.instanceServiceContainer.designerCanvas.iframes})[0],u=h.parent.element.convertPointFromNode(new DOMPoint(l.x+d.p1.x,l.y+d.p1.y),p,{iframes:h.instanceServiceContainer.designerCanvas.iframes}),m=getComputedStyle(h.element),f=new DOMMatrix;m.rotate!="none"&&m.rotate&&(f=f.multiply(new DOMMatrix("rotate("+m.rotate.replace(" ",",")+")"))),m.scale!="none"&&m.scale&&(f=f.multiply(new DOMMatrix("scale("+m.scale.replace(" ",",")+")"))),u=f.inverse().transformPoint(u);let v=lr(h.element);v!==1&&(u=new DOMPoint(u.x/v,u.y/v));let y=new DOMMatrix().translate(u.x,u.y);Gr(h.element,h.getStyle("transform"),y.toString())}a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(c,"place",!1)}moveElements(e,t,i){for(let n of e)t.x&&n.setStyle("left",parseInt(n.element.style.left)-t.x+"px"),t.y&&n.setStyle("top",parseInt(n.element.style.top)-t.y+"px");e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshExtensions(e),e[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(e,"place",!0)}enterContainer(e,t,i){let n=me(t);for(let r of n)i=="drop"&&r.setStyle("position","absolute"),e.insertChild(r),r.lastContainerSize&&(r.hasStyle("width")||r.setStyle("width",r.lastContainerSize.width+"px"),r.hasStyle("height")||r.setStyle("height",r.lastContainerSize.height+"px"));t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(n,"place",!0)}leaveContainer(e,t){let i=me(t);t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(i,"place",!0)}finishPlace(e,t,i,n,r,o,a){let l=me(a);for(let c of l){let h=Ri(new DOMMatrix(c.element.style.transform)),p=Ri(new DOMMatrix(c.getStyle("transform")??""));c.element.style.transform=c.getStyle("transform")??"";let d={x:h.x,y:h.y},u=getComputedStyle(c.element),m=new DOMMatrix;u.rotate!="none"&&u.rotate&&(m=m.multiply(new DOMMatrix("rotate("+u.rotate.replace(" ",",")+")"))),u.scale!="none"&&u.scale&&(m=m.multiply(new DOMMatrix("scale("+u.scale.replace(" ",",")+")"))),Zm(c)||(d=m.transformPoint(d));let f={x:d.x-p.x,y:d.y-p.y};Zm(c)&&(f=Jr(f,new DOMMatrix(c.getStyle("transform")??""))),qr(i,c,f,"position")}for(let c of a)t.extensionManager.removeExtension(c,I.Placement);a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(l,"place",!0)}};var qm=class extends el{serviceForContainer(e,t,i){return!0}};Bi();Gh();Bh();Wh();Id();ze();var Jm=class{_capturePageFn;constructor(e){this._capturePageFn=e}async takePng(e,t){if(!e||e.length===0)return null;let i=e[0].instanceServiceContainer.designerCanvas,n=e[0].instanceServiceContainer.selectionService,r=i.zoomFactor,o=i.canvasOffset,a=n.selectedElements;try{i.disableBackgroud(),i.zoomFactor=1,t?.removeSelection&&n.setSelectedElements([]),i.canvasOffset={x:0,y:0},await fn();let l=1/0,c=1/0,h=-1/0,p=-1/0;for(let ee of e){let $=i.getNormalizedElementCoordinates(ee.element);l=Math.min(l,$.x),c=Math.min(c,$.y),h=Math.max(h,$.x+$.width),p=Math.max(p,$.y+$.height)}let d=t?.margin??0;l-=d,c-=d,h+=d,p+=d;let u=Math.ceil(h-l),m=Math.ceil(p-c),f=i.outercanvas2,v=f.offsetWidth,y=f.offsetHeight,x=1,w=v-2*x,C=y-2*x,S=Math.ceil(u/w),L=Math.ceil(m/C),k=window.devicePixelRatio||1,j=Math.ceil(v*k),H=Math.ceil(y*k),N=Math.ceil(x*k),Q=j-2*N,B=H-2*N,ce=document.createElement("canvas");ce.width=Math.ceil(u*k),ce.height=Math.ceil(m*k);let T=ce.getContext("2d");for(let ee=0;ee<L;ee++)for(let $=0;$<S;$++){let se=l+$*w,Qe=c+ee*C;i.canvasOffset={x:-(se-x),y:-(Qe-x)},await fn(),await St(100);let Ae=f.getBoundingClientRect(),Ot=await this._capturePageFn({x:Math.round(Ae.left),y:Math.round(Ae.top),width:Math.round(Ae.width),height:Math.round(Ae.height)}),Nt=await this._loadImage(Ot);T.drawImage(Nt,N,N,Q,B,$*Q,ee*B,Q,B)}let ge=await(await new Promise(ee=>ce.toBlob(ee,"image/png"))).arrayBuffer();return new Uint8Array(ge)}finally{i.zoomFactor=r,i.canvasOffset=o,i.enableBackground(),t?.removeSelection&&n.setSelectedElements(a)}}_loadImage(e){return new Promise((t,i)=>{let n=new Image;n.onload=()=>t(n),n.onerror=i,n.src=e})}};Hh();Xh();st();uo();oe();Me();var ef=class{async copyItems(e){let t=me(e),i=J.ConvertToString(t,!1),n=t.map(o=>o.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(o.element));On([["text/html",i],["text/plain",i],["application/json",JSON.stringify({html:i,positions:n})]])}async getPasteItems(e,t){let i=await this._readClipboardPasteData();return i.imageData?[[await O.createDesignItemFromImageBlob(e,t,i.imageData)]]:[await e.htmlParserService.parse(i.html,e,t,!0),i.positions??void 0]}async _readClipboardPasteData(){let e="",t=null,i=null,n=await po();if(n!=null){let r=n[0],o=await this._tryReadClipboardType(r,"application/json");if(o){let a=this._parseJsonClipboardData(o);e=a?.html??"",t=a?.positions??null}e||(e=await this._tryReadClipboardType(r,"text/html")??""),e||(e=await this._tryReadClipboardType(r,"text/plain")??"");try{let a=r.types.find(l=>l.startsWith("image/"));a&&(i=await r.getType(a))}catch{}}else e=await ho();return{html:e,positions:t,imageData:i}}_parseJsonClipboardData(e){try{return JSON.parse(e)}catch{return null}}async _tryReadClipboardType(e,t){try{return await(await e.getType(t))?.text()}catch{return null}}};mh();Ed();import{DomHelper as Y_}from"@node-projects/base-custom-webcomponent";var tf=class{provideDemo(e,t,i,n,r){return new Promise(o=>{let a=document.createElement("iframe");a.style.width="100%",a.style.height="100%",a.style.border="none",a.style.display="none",Y_.removeAllChildnodes(e),e.appendChild(a),a.onload=()=>{a.style.display="block",o()};let l=a.contentWindow.document;if(l.open(),l.write('<script type="module">'),i.designContext.npmPackages?.length){l.write("import { NpmPackageLoader } from '../../helper/NpmPackageLoader.js'"),l.write("let loader = new NpmPackageLoader();");for(let c of i.designContext.npmPackages)l.write("loader.loadNpmPackage('"+c+"', null, null, true);")}if(i.designContext.imports?.length)for(let c of i.designContext.imports)l.write("import '"+c+"';");l.write("document.body.style.display='';"),l.write("</script>"),l.write("<style>"+(r??"")+"</style>"),l.write('<body style="display:none; width: 100%; height: 100%; margin: 0; padding: 0; position: absolute;">'+n+"</body>"),l.close()})}};Yp();Bp();Ld();Kp();ua();Va();oe();Va();var nf=class extends en{createDesignItem(e,t,i,n){let r=new O(e,t,i,n);return e instanceof(e.ownerDocument.defaultView??window).HTMLTemplateElement&&requestAnimationFrame(()=>{let o=1,a=e.getAttribute("sample-repeat-count");a&&(o=parseInt(a));for(let l=0;l<o;l++){let c=e;for(let h of e.content.childNodes)c=this.instanciateNode(c,h)}}),r}instanciateNode(e,t,i=!1){let n=t.cloneNode(!1);i?e.appendChild(n):e.parentNode.insertBefore(n,e.nextSibling),O.GetDesignItem(t).setView(n);for(let r of t.childNodes)this.instanciateNode(n,r,!0);return n}};jh();jp();import{LazyLoader as U_}from"@node-projects/base-custom-webcomponent";var rf=class{_name;get name(){return this._name}_elementList;_resolveStored;_rejectStored;getElements(){return this._elementList?Promise.resolve(this._elementList):(this._resolveStored||(this._resolveStored=[],this._rejectStored=[]),new Promise((e,t)=>{this._resolveStored.push(e),this._rejectStored.push(t)}))}constructor(e,t){this._name=e,U_.LoadText(t.toString()).then(i=>{let n=JSON.parse(i);this._elementList=[],n.elements.forEach(r=>{this.isIElementDefintion(r)?this._elementList.push(r):this._elementList.push({tag:r})}),this._resolveStored&&(this._resolveStored.forEach(r=>r(this._elementList)),this._resolveStored=null,this._rejectStored=null)}).catch(i=>{this._rejectStored&&(this._rejectStored.forEach(n=>n(i)),this._resolveStored=null,this._rejectStored=null)})}isIElementDefintion(e){return e!=null&&e.tag!=null}};Wn();Wn();var sf=class extends Ne{isHandledElementFromEventsService(e){return this.__eventsList?.[e.name]!=null}getPossibleEvents(e){return[...this.__eventsList[e.name],...Ne._simpleMouseEvents,...Ne._pointerEvents,...Ne._allElements,...Ne._focusableEvents]}getEvent(e,t){return this.getPossibleEvents(e).find(n=>n.name==t)??{name:t,propertyName:"on"+t,eventObjectName:"Event"}}__eventsList;constructor(e,t){super(),this._parseManifest(t)}_parseManifest(e){this.__eventsList={};let t=[];for(let i of e.modules)i.declarations&&t.push(...i.declarations);for(let i of e.modules)for(let n of i.exports)if(n.kind=="custom-element-definition"){let r=t.find(o=>o.name==n.declaration.name);if(r){if(r.events){let o=[];for(let a of r.events)o.push({name:a.name});o.length&&(this.__eventsList[n.name]=o)}}else console.warn("declaration for "+n.declaration.name+" not found",e)}}};ip();st();bo();Z();Ee();ue();wt();var ct;(function(s){s[s.inline=0]="inline",s[s.block=1]="block",s[s.complex=2]="complex"})(ct||(ct={}));var of=class{options;constructor(e){this.options=e??{},this.options.beautifyOutput??=!0,this.options.compressCssToShorthandProperties??=!0,this.options.writeDesignerProperties??=!0,this.options.parseJsonInAttributes??=!0,this.options.jsonWriteMode??="min"}writeAttributes(e,t){if(t.hasAttributes)for(let i of t.attributes())e.indentedTextWriter.write(" "),typeof i[1]=="string"?i[1]===""?e.indentedTextWriter.write(i[0]):e.indentedTextWriter.write(i[0]+'="'+J.normalizeAttributeValue(i[1])+'"'):i[1]||e.indentedTextWriter.write(i[0])}writeStyles(e,t){if(t.hasStyles){e.indentedTextWriter.write(' style="');let i=[...t.styles()],n=i.some(o=>t.isStyleImportant(o[0])),r=i;e.options.compressCssToShorthandProperties&&!n&&(r=$i.combine(new Map(i)));for(let o of r)o[0]&&e.indentedTextWriter.write(z.camelToDashCase(o[0])+":"+J.normalizeAttributeValue(je(o[1],t.isStyleImportant(o[0])))+";");e.indentedTextWriter.write('"')}}_writeTextNode(e,t){e.lastElementDisplayType=We.inline;let i=J.normalizeContentValue(t.content);e.containerDisplayType===ct.inline?i=this._normalizeInlineTextContent(i):i=i.trim(),i&&e.indentedTextWriter.write(i)}_normalizeInlineTextContent(e){if(!e?.trim())return"";let t=/^\s/.test(e),i=/\s$/.test(e),n=e.replaceAll(/[\t\r\n ]+/g," ").trim();return`${t?" ":""}${n}${i?" ":""}`}_writeCommentNode(e,t){e.indentedTextWriter.write("<!--"+t.content+"-->")}_writeElementNode(e,t){let i=xu(t.element);e.lastElementDisplayType=i,e.indentedTextWriter.write("<"+t.name),this.writeAttributes(e,t),this.writeStyles(e,t),e.indentedTextWriter.write(">");let n=!1;if(t.hasChildren){let r=t.children();n=t.childCount===1&&t.firstChild.nodeType===D.TextNode;let o=e.containerDisplayType;e.containerDisplayType=this.getContainerType(t.element),n?this._writeInternal(e,t.firstChild):(e.containerDisplayType!==ct.inline&&e.indentedTextWriter.levelRaise(),this._writeDesignItemList(i,e,r),e.containerDisplayType!==ct.inline&&e.indentedTextWriter.levelShrink()),e.containerDisplayType=o}else t.hasContent&&e.indentedTextWriter.write(J.normalizeContentValue(t.content));J.IsSelfClosingElement(t.name)||(i===We.block&&t.hasChildren&&!n&&this._writeNewlineAndIntend(e),e.indentedTextWriter.write("</"+t.name+">"),i!==We.none&&(e.lastElementDisplayType=i))}_writeDesignItemList(e,t,i){for(let n of i)t.lastElementDisplayType==null||t.containerDisplayType===ct.inline||(t.containerDisplayType===ct.complex?this._writeNewlineAndIntend(t):t.lastElementDisplayType!==We.inline&&this._writeNewlineAndIntend(t)),this._writeInternal(t,n)}_writeNewlineAndIntend(e){e.indentedTextWriter.writeNewline(),e.indentedTextWriter.writeIndent()}_writeInternal(e,t){let i=e.indentedTextWriter.position;t.nodeType===D.TextNode?this._writeTextNode(e,t):t.nodeType===D.Comment?this._writeCommentNode(e,t):t.nodeType===D.Element&&this._writeElementNode(e,t),e.designItemsAssignmentList&&e.designItemsAssignmentList.set(t,{start:i,length:e.indentedTextWriter.position-i-1})}getContainerType(e){let t=(e.ownerDocument.defaultView??window).getComputedStyle(e).display;return t==="inline"?ct.inline:t==="block"||t==="inline-block"||t==""?ct.block:ct.complex}write(e,t,i){let n={indentedTextWriter:e,options:this.options,lastElementDisplayType:null,containerDisplayType:ct.block};this._writeDesignItemList(We.inline,n,t)}};np();Sn();ec();nt();_e();ye();Re();ze();Wn();var af=class extends te{getRefreshMode(e){return Y.none}_name;get name(){return this._name}_packageData;_elementList;_propertiesList;__eventsList;_resolveStored;_rejectStored;_importPrefix="";constructor(e,t,i=""){if(super(),this._name=e,this._importPrefix=i,typeof t=="string"){this._importPrefix=this._importPrefix??t.split("/").slice(0,-1).join("/");let n;window.importShim?n=importShim(t,{with:{type:"json"}}):n=import(t,{with:{type:"json"}}),n.then(r=>{this._packageData=r.default,this._parseManifest()}).catch(r=>{this._rejectStored&&(this._rejectStored.forEach(o=>o(r)),this._resolveStored=null,this._rejectStored=null)})}else this._packageData=t,this._parseManifest()}_parseManifest(){this._elementList=[],this._propertiesList={};for(let e of this._packageData.modules){for(let t of e.exports)if(t.kind=="custom-element-definition"){this._elementList.push({tag:t.name,import:oi(this._importPrefix,"/")+"/"+Ie(e.path,"/")});let i=[],n=e.declarations.find(r=>r.name==t.declaration.name);for(let r of n.members)if(r.kind=="field"){let o=_.property;n.attributes&&(o=n.attributes.find(l=>l.fieldName==r.name)!=null?_.propertyAndAttribute:_.property);let a=nn.manifestClassPropertyTypeToEditorPropertyType(r.type?.text,r.type?.editor);i.push({name:r.name,service:this,propertyType:o,type:a[0],values:a[1],description:r.description})}if(this._propertiesList[t.name]=i,n.events){let r=[];for(let o of n.events)r.push({name:o.name});r.length&&(this.__eventsList[t.name]=r)}}this._resolveStored&&(this._resolveStored.forEach(t=>t(this._elementList)),this._resolveStored=null,this._rejectStored=null)}}async getElements(){return this._packageData?Promise.resolve(this._elementList):(this._resolveStored||(this._resolveStored=[],this._rejectStored=[]),new Promise((e,t)=>{this._resolveStored.push(e),this._rejectStored.push(t)}))}isHandledElement(e){return this._elementList?this._elementList.find(t=>t.tag==e.name)!=null:!1}async getProperties(e){return this._propertiesList[e.name]}async getProperty(e,t){return this._propertiesList[e.name].find(i=>i.name==t)}getPropertyTarget(e,t){return this._propertiesList[e.name].find(i=>i.name==t.name).propertyType==_.attribute?R.attribute:R.property}isHandledElementFromEventsService(e){return this.__eventsList?this.__eventsList[e.name]!=null:!1}getPossibleEvents(e){return[...this.__eventsList[e.name],...Ne._simpleMouseEvents,...Ne._pointerEvents,...Ne._allElements,...Ne._focusableEvents]}getEvent(e,t){return this.getPossibleEvents(e).find(n=>n.name==t)??{name:t,propertyName:"on"+t,eventObjectName:"Event"}}};Pd();Kh();var lf=class{constructor(e,t,i){}cursorsChanged};vc();Td();_e();Pp();Te();ac();tc();yc();gc();ic();cc();nc();import{html as X_,BaseCustomWebComponentConstructorAppend as $_}from"@node-projects/base-custom-webcomponent";var cf=class extends $_{static template=X_`<div style="display:flex"><input id="input" type="text"> <button style="width:30px">...</button></div>`;constructor(){super()}};rc();sc();oc();hc();Sp();wp();Ee();Di();xp();Ho();_c();fd();Ai();ye();Re();_e();pt();nt();var tl=class extends te{getRefreshMode(e){return Y.none}contentProperty={name:"textContent",type:"string",service:this,propertyType:_.property};idProperty={name:"id",type:"string",service:this,propertyType:_.propertyAndAttribute};innerHtmlProperty={name:"innerHTML",type:"string",service:this,propertyType:_.property};name="content";isHandledElement(e){return!0}async getProperty(e,t){return t=="id"?this.idProperty:this.contentProperty}async getProperties(e){return[this.idProperty,this.contentProperty,this.innerHtmlProperty]}clearValue(e,t,i="all"){if(t.name==this.contentProperty.name||t.name==this.innerHtmlProperty.name){let n=e[0].openGroup("property cleared: "+t.name);for(let r of e)i!="binding"&&r.clearChildren(),i!="value"&&r.serviceContainer.forSomeServicesTillResult("bindingService",o=>o.clearBinding(r,t.name,this.getPropertyTarget(r,t))),this._notifyChangedProperty(r,t,void 0);n.commit()}else super.clearValue(e,t,i)}isSet(e,t){if(t.name==this.contentProperty.name||t.name==this.innerHtmlProperty.name){let i=!0,n=!1;if(e!=null&&e.length!==0){e.forEach(o=>{let a=!1;a=o.element.childNodes.length>0,i=i&&a,n=n||a});let r=te.getOrBuildCachedBindings(e[0]);if(r&&r.find(o=>(o.target==R.property||o.target==R.explicitProperty)&&o.targetName==t.name))return W.bound}return i?W.all:n?W.some:W.none}return super.isSet(e,t)}getValue(e,t){return t.name==this.contentProperty.name||t.name==this.innerHtmlProperty.name?e[0].element.textContent:super.getValue(e,t)}};Cp();Go();Re();ye();_e();var hf=class extends te{getRefreshMode(e){return Y.full}name="list";_propertys=new Map;constructor(e,t){super(t);for(let i in e){let n=[];this._propertys.set(i,n);for(let r in e[i]){let o=e[i][r];n.push({name:o.name,propertyName:o.propertyName,attributeName:o.attributeName,description:o.description,type:o.type,default:o.default,min:o.min,max:o.max,step:o.step,values:o.values,enumValues:o.enumValues,value:o.value,defaultValue:o.defaultValue,service:this,propertyType:o.propertyType??_.propertyAndAttribute})}}}isHandledElement(e){return this._propertys.has(e.element.localName)}_notifyChangedProperty(e,t,i){}async getProperties(e){return this._propertys.get(e.element.localName)}};Gl();Ac();$p();Wl();jl();Hl();Re();bp();Ep();Re();_e();ye();var pf=class extends te{getRefreshMode(e){return Y.full}isHandledElement(e){return!0}async getProperties(e){let t=Object.getOwnPropertyNames(Object.getPrototypeOf(e.element)),i=[];for(let n of t){if(n.startsWith("on"))continue;let r=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e.element),n);if(r.get||r.set){let o=e.element[n];typeof o=="boolean"?i.push({name:n,type:"boolean",service:this,propertyType:_.propertyAndAttribute}):typeof o=="number"?i.push({name:n,type:"bonumberolean",service:this,propertyType:_.propertyAndAttribute}):i.push({name:n,type:"string",service:this,propertyType:_.propertyAndAttribute})}}return i}};ye();pt();var df=class{getRefactorings(e){let t=[];for(let i of e){let n=i.serviceContainer.bindingService.getBindings(i);if(n)for(let r of n)for(let o of r.bindableObjectNames)if(o.includes(":")){let a=o.split(":")[0],l=o.substring(a.length+1);t.push({service:this,name:l,itemType:"signal",designItem:i,type:"binding",sourceObject:r,display:r.target+"/"+r.targetName+" - "+a+":",shortName:a})}else t.push({service:this,name:o,itemType:"signal",designItem:i,type:"binding",sourceObject:r,display:r.target+"/"+r.targetName})}return t}refactor(e,t,i){let n=e.sourceObject;e.shortName?n.bindableObjectNames=n.bindableObjectNames.map(r=>r==e.shortName+":"+t?e.shortName+":"+i:r):n.bindableObjectNames=n.bindableObjectNames.map(r=>r==t?i:r),e.designItem.serviceContainer.bindingService.setBinding(e.designItem,n)}};var uf=class{getRefactorings(e){let t=[];for(let i of e)if((i.element instanceof i.window.HTMLInputElement||i.element instanceof i.window.HTMLTextAreaElement)&&i.element.value&&t.push({service:this,name:i.element.value,itemType:"text",designItem:i,type:"attribute",sourceObject:i,display:"attribute/value"}),i.childCount>0&&i.element.textContent){let n=!0;for(let r of i.element.childNodes)r.nodeType!=3&&(n=!1);n&&t.push({service:this,name:i.element.textContent,itemType:"text",designItem:i,type:"content",sourceObject:i,display:"textContent"})}return t}refactor(e,t,i){e.type=="attribute"?e.designItem.setAttribute("value",i):e.type=="content"&&(e.designItem.content=i)}};Z();var Od=Symbol("collaborationNodeIndexCache");function K_(s){let e=[],t=new WeakMap,i=0,n=r=>{if(r&&(!r.isRootItem&&r.nodeType===D.Element&&(e.push(r),t.set(r,i++)),r.hasChildren))for(let o of r.children())n(o)};return n(s),{orderedItems:e,byItem:t}}function mf(s,e){if(e?.[Od])return e[Od];let t=K_(s);return e&&(e[Od]=t),t}function Q_(s,e){if(!s||s.isRootItem)return null;let t=s.instanceServiceContainer.designerCanvas.rootDesignItem;return mf(t,e).byItem.get(s)??null}function eR(s,e){return s?.length?s.map(t=>Q_(t,e)).filter(t=>t!=null):[]}function tR(s,e,t){return e==null||e<0?null:mf(s,t).orderedItems[e]??null}kd();Np();oe();import{TypedEvent as kf}from"@node-projects/base-custom-webcomponent";function Rd(s){let e={A:0,B:0,C:0};return Z_(s)?(J_(s,0,e),e):(q_(s,e),e)}function Z_(s){for(let e=0;e<s.length;e++){let t=s.charCodeAt(e);if(t===58||t===91||t===40||t===44||t===92)return!0}return!1}function q_(s,e){let t=s.length,i=0;for(;i<t;){let n=s.charCodeAt(i);if(n===124&&i+1<t&&s.charCodeAt(i+1)===124){i+=2;continue}if(n===32||n===62||n===43||n===126){i++;continue}if(n===35){for(e.A++,i++;i<t&&Un(s.charCodeAt(i));)i++;continue}if(n===46){for(e.B++,i++;i<t&&Un(s.charCodeAt(i));)i++;continue}if(n===42){i++;continue}if(If(n)||n===124){for(;i<t;){let r=s.charCodeAt(i);if(Un(r)||r===124)i++;else break}e.C++;continue}i++}}function J_(s,e,t){let i=e,n=0,r=0,o=0;for(;i<s.length;){if(n=r=o=0,i=rn(s,i,t,!0),n=t.A,r=t.B,o=t.C,s.charCodeAt(i)===44){i++;let a=n,l=r,c=o;for(;i<s.length;){if(t.A=t.B=t.C=0,i=rn(s,i,t,!0),(t.A>a||t.A===a&&(t.B>l||t.B===l&&t.C>c))&&(a=t.A,l=t.B,c=t.C),s.charCodeAt(i)===44){i++;continue}break}t.A=a,t.B=l,t.C=c}break}return i}function rn(s,e,t,i){let n=e;for(i&&(t.A=t.B=t.C=0);n<s.length;){let r=s.charCodeAt(n);if(r===44||r===41)break;if(r===124&&s.charCodeAt(n+1)===124){n+=2;continue}if(r===32||r===62||r===43||r===126){n++;continue}if(r===35){n=il(s,n+1),t.A++;continue}if(r===46){n=il(s,n+1),t.B++;continue}if(r===91){n=Nd(s,n,91,93),t.B++;continue}if(r===58){if(s.charCodeAt(n+1)===58){n+=2,n=il(s,n),s.charCodeAt(n)===40&&(n=Nd(s,n,40,41)),t.C++;continue}let o=n+1,a=il(s,o);if(n=a,nx(s,o,a-o)){t.C++;continue}if(s.charCodeAt(n)===40){let l=n+1,c=Nd(s,n,40,41),h=a-o;switch(ix(s,o,h)){case ff:n=c;continue;case gf:case yf:case vf:case Cf:case Ef:case Pf:{let d=0,u=0,m=0,f=l,v=c-1;for(;f<v;){let y={A:0,B:0,C:0};if(f=ex(s,f,y),(y.A>d||y.A===d&&(y.B>u||y.B===u&&y.C>m))&&(d=y.A,u=y.B,m=y.C),s.charCodeAt(f)===44)f++;else break}t.A+=d,t.B+=u,t.C+=m,n=c;continue}case _f:{let d={A:0,B:0,C:0};rn(s,l,d,!1),t.A+=d.A,t.B+=d.B,t.C+=d.C,n=c;continue}case xf:case bf:{t.B++;let d={A:0,B:0,C:0};rn(s,l,d,!1),t.A+=d.A,t.B+=d.B,t.C+=d.C,n=c;continue}case wf:case Sf:{t.B++;let d=c-1,u=rx(s,l,d);if(u!==-1){let m=u+2;for(;m<d&&Vd(s.charCodeAt(m));)m++;let f=0,v=0,y=0,x=m;for(;x<d;){let w={A:0,B:0,C:0};if(x=rn(s,x,w,!1),(w.A>f||w.A===f&&(w.B>v||w.B===v&&w.C>y))&&(f=w.A,v=w.B,y=w.C),s.charCodeAt(x)===44)x++;else break}t.A+=f,t.B+=v,t.C+=y}n=c;continue}default:t.B++,n=c;continue}}else{t.B++;continue}}if(r===42){n++;continue}if(If(r)||r===124){for(;n<s.length&&(Un(s.charCodeAt(n))||s.charCodeAt(n)===124);)n++;t.C++;continue}n++}return n}function ex(s,e,t){return rn(s,e,t,!1)}var tx=0,ff=1,gf=2,yf=3,vf=4,_f=5,xf=6,bf=7,wf=8,Sf=9,Cf=10,Ef=11,Pf=12;function ix(s,e,t){return t===5&&s.charCodeAt(e)===119&&s.charCodeAt(e+1)===104&&s.charCodeAt(e+2)===101&&s.charCodeAt(e+3)===114&&s.charCodeAt(e+4)===101?ff:t===3&&s.charCodeAt(e)===110&&s.charCodeAt(e+1)===111&&s.charCodeAt(e+2)===116?yf:t===2&&s.charCodeAt(e)===105&&s.charCodeAt(e+1)===115?gf:t===3&&s.charCodeAt(e)===104&&s.charCodeAt(e+1)===97&&s.charCodeAt(e+2)===115?vf:t===4&&s.charCodeAt(e)===104&&s.charCodeAt(e+1)===111&&s.charCodeAt(e+2)===115&&s.charCodeAt(e+3)===116?xf:t===12&&s.charCodeAt(e)===104&&s.charCodeAt(e+4)===45&&s.charCodeAt(e+5)===99&&s.substring(e,e+t)==="host-context"?bf:t===7&&s.charCodeAt(e)===115&&s.substring(e,e+7)==="slotted"?_f:t===9&&s.charCodeAt(e)===110&&s.substring(e,e+9)==="nth-child"?wf:t===14&&s.charCodeAt(e)===110&&s.substring(e,e+14)==="nth-last-child"?Sf:t===7&&s.charCodeAt(e)===109&&s.substring(e,e+7)==="matches"?Cf:t===11&&s.charCodeAt(e)===45&&s.substring(e,e+11)==="-webkit-any"?Ef:t===8&&s.charCodeAt(e)===45&&s.substring(e,e+8)==="-moz-any"?Pf:tx}function nx(s,e,t){if(t===6){let i=s.charCodeAt(e);if(i===98)return s.substring(e,e+6)==="before";if(i===97)return s.substring(e,e+6)==="after"}return t===5&&s.charCodeAt(e)===97?s.substring(e,e+5)==="after":t===10&&s.charCodeAt(e)===102?s.substring(e,e+10)==="first-line":t===12&&s.charCodeAt(e)===102?s.substring(e,e+12)==="first-letter":!1}function If(s){return s>=65&&s<=90||s>=97&&s<=122||s===95||s===45||s===92}function Un(s){return s>=65&&s<=90||s>=97&&s<=122||s>=48&&s<=57||s===95||s===45||s===92}function Vd(s){return s===32||s===9||s===10||s===13||s===12}function il(s,e){let t=e;for(;t<s.length;){let i=s.charCodeAt(t);if(i===92){t+=2;continue}if(!Un(i))break;t++}return t}function Nd(s,e,t,i){let n=0,r=0,o=e;for(;o<s.length;){let a=s.charCodeAt(o);if(r){if(a===92){o+=2;continue}a===r&&(r=0),o++;continue}if(a===34||a===39){r=a,o++;continue}if(a===t)n++;else if(a===i&&(n--,n===0))return o+1;o++}return o}function rx(s,e,t){let i=e;for(;i<=t-1;){for(;i<=t-1&&Vd(s.charCodeAt(i));)i++;if(s.charCodeAt(i)===111&&s.charCodeAt(i+1)===102&&(i+2>t-1||Vd(s.charCodeAt(i+2))||s.charCodeAt(i+2)===40))return i;i++}return-1}Md();var nl=class s{_stylesheets=new Map;_documentStylesheets=new Map;_allStylesheets=new Map;_instanceServiceContainer;constructor(e){this._instanceServiceContainer=e.instanceServiceContainer}async setStylesheets(e){await this.internalSetStylesheets(e,this._stylesheets)}async setDocumentStylesheets(e){await this.internalSetStylesheets(e,this._documentStylesheets)}async internalSetStylesheets(e,t){if(t!=null&&e!=null&&t.size==e.length&&e.every(i=>t.has(i.name)))for(let i of e){let n=t.get(i.name);if(n.stylesheet.content!=i.content){try{t.set(i.name,{stylesheet:i,ast:await this.internalParse(i.content)})}catch(r){console.warn("error parsing stylesheet",i,r)}t==this._stylesheets&&this.stylesheetChanged.emit({name:i.name,newStyle:i.content,oldStyle:n.stylesheet.content,changeSource:"extern"})}}else if(e!=null){t.clear();for(let i of e){let n=null;try{n=await this.internalParse(i.content)}catch(r){console.warn("error parsing stylesheet",i,r)}t.set(i.name,{stylesheet:i,ast:n})}t==this._stylesheets&&this.stylesheetsChanged.emit()}else t.clear();this._allStylesheets.clear();for(let i of this._documentStylesheets)this._allStylesheets.set(i[0],i[1]);for(let i of this._stylesheets)this._allStylesheets.set(i[0],i[1])}async internalReparseStylesheet(e){let t=this._allStylesheets;this._documentStylesheets.has(e)&&(t=this._documentStylesheets),this._stylesheets.has(e)&&(t=this._stylesheets);let i=t.get(e),n=null;try{n=await this.internalParse(i.stylesheet.content)}catch(o){console.warn("error parsing stylesheet",e,o)}let r={stylesheet:i.stylesheet,ast:n};this._stylesheets.set(e,r),this._allStylesheets.set(e,r)}getStylesheets(){let e=[];for(let t of this._stylesheets)e.push(t[1].stylesheet);return e}getDeclarationsSortedBySpecificity(e,t){let i=this.getDeclarations(e,t);return i.reverse().sort((n,r)=>n.parent.specificity==null?-1:r.parent.specificity==null?1:n.parent.specificity.A>r.parent.specificity.A||n.parent.specificity.A===r.parent.specificity.A&&n.parent.specificity.B>r.parent.specificity.B||n.parent.specificity.A===r.parent.specificity.A&&n.parent.specificity.B===r.parent.specificity.B&&n.parent.specificity.C>r.parent.specificity.C?-1:n.parent.specificity.A===r.parent.specificity.A&&n.parent.specificity.B===r.parent.specificity.B&&n.parent.specificity.C===r.parent.specificity.C?0:1),i}updateDeclarationValue(e,t,i){this.updateDeclarationValueWithoutUndo(e,t,i)}stylesheetChanged=new kf;stylesheetsChanged=new kf;static patchStylesheetSelectorForDesigner(e){return Xa(e,{forceHoverAttributeName:ot,forceActiveAttributeName:Wt,forceVisitedAttributeName:jt,forceFocusAttributeName:Yt,forceFocusWithinAttributeName:Ut,forceFocusVisibleAttributeName:Xt})}elementMatchesASelector(e,t){let i=null;for(let n of t)try{let r=s.patchStylesheetSelectorForDesigner(n);if(e&&r===":host"&&e.isRootItem){let o=Rd(n);(i===null||o.A>i.A||o.A===i.A&&(o.B>i.B||o.B===i.B&&o.C>i.C))&&(i=o)}else if(!e||e.element.matches(r)){let o=Rd(n);(i===null||o.A>i.A||o.A===i.A&&(o.B>i.B||o.B===i.B&&o.C>i.C))&&(i=o)}}catch{console.warn("invalid selector: ",n,"patched: "+s.patchStylesheetSelectorForDesigner(n))}return i===null?!1:i}};Lp();Op();Ul();ql();Yl();Cd();ft();$l();Zl();var rl=class{stylesheetService;constructor(e,t,i,n){this.title="Changed Css Stylesheet: "+t,this.stylesheetService=e,this.name=t,this.newValue=i,this.oldValue=n}title;get affectedItems(){return[]}undo(){return this.stylesheetService.updateCompleteStylesheetWithoutUndo(this.name,this.oldValue),null}do(){return this.stylesheetService.updateCompleteStylesheetWithoutUndo(this.name,this.newValue),null}name;newValue;oldValue;mergeWith(e){return!1}};var sl=class{constructor(e,t){this.title="Set all DesignItems",this.newDesignItems=e,this.oldDesignItems=t}title;get affectedItems(){return this.newDesignItems}undo(){return this.newDesignItems[0].instanceServiceContainer.designerCanvas._internalSetDesignItems(this.oldDesignItems),null}do(){return this.newDesignItems[0].instanceServiceContainer.designerCanvas._internalSetDesignItems(this.newDesignItems),null}newDesignItems;oldDesignItems;mergeWith(e){return!1}};Kl();ir();ir();import{TypedEvent as sx}from"@node-projects/base-custom-webcomponent";var ol=class{imports=[];npmPackages=[];extensionOptions={gridExtensionShowOverlay:!1,flexboxExtensionShowOverlay:!1,invisibleElementExtensionShowOverlay:!1,enableStylesheetService:!1,basicStackedToolbarExtensionShowOverlay:!1,simulateHoverOnHover:!1,selectUnhitableElements:!0};extensionOptionsChanged=new sx};import{TypedEvent as ox}from"@node-projects/base-custom-webcomponent";var al=class extends ki{designContext=new ol;designerCanvas;collaborationService;designer;documentContainer;onContentChanged=new ox;constructor(e){super(),this.designerCanvas=e}get rootDesignItem(){return this.designerCanvas.rootDesignItem}get undoService(){return this.getLastService("undoService")}get selectionService(){return this.getLastService("selectionService")}get stylesheetService(){return this.getLastService("stylesheetService")}get designItemDocumentPositionService(){return this.getLastService("designItemDocumentPositionService")}};Fl();_e();pt();Gt();ye();he();import{BaseCustomWebComponentLazyAppend as ax,css as lx,DomHelper as Df}from"@node-projects/base-custom-webcomponent";var Ke=class s extends ax{_div;_propertyMap=new Map;_serviceContainer;_propertiesService;_designItems;_lastClassType;_addCounter=0;propertyGroupHover;propertyGroupClick;propertyContextMenuProvider;get propertiesService(){return this._propertiesService}static get style(){return lx`:host{display:block;height:100%;overflow:auto;box-sizing:border-box}.content-wrapper{padding:.5em;display:grid;grid-template-columns:11px minmax(80px,auto) minmax(120px,1fr);align-items:center;grid-auto-rows:minmax(24px,auto);align-items:center}input,label,select{display:inline-block;color:#fff;background:0 0;margin:2px 0;padding:0 2px 0 4px;width:110px;white-space:nowrap}.style-label,label{box-sizing:border-box;display:inline-block;font-size:13px;width:auto;overflow:hidden;text-overflow:ellipsis;margin-right:2px}input,select{padding:0;padding-left:3px}input,select{border:none}.content-wrapper>input,.content-wrapper>select,.editor-control{border:1px solid var(--input-border-color,#596c7a);border-radius:0}.editor-control,input,select{height:24px;box-sizing:border-box;font-size:11px;width:100%;margin:0}.editor-control:focus,input:focus,select:focus{outline:0;box-shadow:none}.editor-control[disabled],input[disabled],select[disabled]{color:#bdbdbd}select{background:0 0}select:focus option{color:#000}.unset-value{color:#778899}.unset-value>*{color:#778899}.unset-value:focus{color:#fff}.group-header{grid-column:1/3;font-size:10px;font-family:monospace}.group-header[clickable]:hover{cursor:pointer;color:orange;text-decoration:underline}.group-header::after{content:" ▾";font-size:14px}.group-header.expanded::after{content:" ▴";font-size:14px}.group-desc{display:inline-flex;flex-direction:row-reverse;font-size:10px;text-decoration:underline}.group-desc[clickable]:hover{cursor:pointer;color:orange;text-decoration:underline}.dragOverProperty{outline:2px dashed orange;outline-offset:-2px}`}constructor(e){super(),this._restoreCachedInititalValues(),this._serviceContainer=e,this._div=document.createElement("div"),this._div.className="content-wrapper",this.shadowRoot.appendChild(this._div)}setPropertiesService(e){this._propertiesService!=e&&(this._propertiesService=e,Df.removeAllChildnodes(this._div),this._propertyMap.clear())}async createElements(e){if(!this._shouldCreateElements(e))return!0;let t=await this._propertiesService?.getProperties(e);return this._rebuildElements(e,t)}_shouldCreateElements(e){if(!this._propertiesService)return!1;if(this._propertyMap.size==0)return!0;let t=this._propertiesService.getRefreshMode(e);return t!==Y.none&&(t!==Y.fullOnClassChange||this._lastClassType!==e.element.constructor)}_rebuildElements(e,t){if(this._lastClassType=e.element.constructor,Df.removeAllChildnodes(this._div),this._propertyMap.clear(),t?.length){for(let i of t)"properties"in i?this.createPropertyGroups(i):this.createPropertyEditors(i);return!0}return!1}createPropertyGroups(e){let t=document.createElement("span");t.addEventListener("click",()=>{this.expandOrCollapsePropertyGroups(e),t.classList.toggle("expanded")}),t.innerHTML=e.name.replaceAll(`
|
|
553
|
-
`,"<br>"),t.className="group-header",this._div.appendChild(t);let i=document.createElement("span");i.innerHTML=e.description??"",i.className="group-desc",this.propertyGroupHover&&(t.onmouseenter=()=>{this.propertyGroupHover(e,"name")?t.setAttribute("clickable",""):t.removeAttribute("clickable")},t.onclick=()=>{this.propertyGroupClick&&this.propertyGroupClick(e,"name")},i.onmouseenter=()=>{this.propertyGroupHover(e,"desc")?i.setAttribute("clickable",""):i.removeAttribute("clickable")},i.onclick=()=>{this.propertyGroupClick&&this.propertyGroupClick(e,"desc")}),this._div.appendChild(i);for(let n of e.properties)this.createPropertyEditors(n,!0)}expandOrCollapsePropertyGroups(e){for(let t of e.properties){let i=this._propertyMap.get(t),n=i.labelElement.style.display=="none"?"flex":"none";i.editor.element&&(i.editor.element.style.display=n),i.labelElement&&(i.labelElement.style.display=n),i.isSetElement.parentElement&&(i.isSetElement.parentElement.style.display=n)}}createPropertyEditors(e,t){let i,n;if(e.createEditor?i=e.createEditor(e):i=this._serviceContainer.forSomeServicesTillResult("propertyEditorTypesService",r=>r.getEditorForProperty(e)),i){let r=document.createElement("div");t&&(r.style.marginLeft="10px"),r.style.width="20px",r.style.height="20px",r.style.display="flex",r.style.alignItems="center";let o=document.createElement("div");if(o.style.width="7px",o.style.height="7px",o.style.border="1px white solid",o.style.cursor="pointer",e.propertyType!=_.complex&&r.appendChild(o),this._div.appendChild(r),e.readonly!==!0&&(o.oncontextmenu=a=>{a.preventDefault(),this.openContextMenu(a,e)},o.onclick=a=>{a.preventDefault(),this.openContextMenu(a,e)}),e.type=="addNew"){let a=i.element;a.disabled=!0,a.id="addNew_input_"+ ++this._addCounter;let l=document.createElement("input");if(n=l,t&&(l.style.marginLeft="10px",l.style.width="calc(100% - 10px)"),l.value=e.name,l.type="text",l.id="addNew_label_"+this._addCounter,l.onkeyup=c=>{c.key=="Enter"&&l.value&&(e.name=l.value,l.disabled=!0,a.disabled=!1,a.focus())},e.service.getPropertyNameSuggestions){let c=e.service.getPropertyNameSuggestions(null),h=document.createElement("datalist");h.id="addNew_"+this._addCounter+"_datalist";for(let p of c){let d=document.createElement("option");d.value=p,h.append(d)}this._div.appendChild(h),l.setAttribute("list",h.id)}this._div.appendChild(l)}else if(e.hideLabel)n=document.createElement("span");else if(e.renamable){let a=document.createElement("input");n=a,t&&(a.style.marginLeft="10px",a.style.width="calc(100% - 10px)"),a.id="label_"+e.name;let l=i.element;a.value=e.name,a.onkeyup=async c=>{if(c.key=="Enter"&&a.value){let h=this._designItems[0].openGroup("rename property name from '"+e.name+"' to '"+a.value+"'");e.service.clearValue(this._designItems,e,"all"),e.name=a.value,await e.service.setValue(this._designItems,e,l.value),h.commit(),this._designItems[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(this._designItems)}},this._div.appendChild(a)}else{let a=document.createElement("label");n=a,t&&(a.style.marginLeft="10px"),a.htmlFor=e.name,a.textContent=e.displayName??e.name,a.title=e.description??(e.displayName??e.name)+" (type: "+e.type+(e.defaultValue?", default: "+e.defaultValue:"")+", propertytype: "+e.propertyType+")",a.ondragleave=l=>this._onDragLeave(l,e,a),a.ondragover=l=>this._onDragOver(l,e,a),a.ondrop=l=>this._onDrop(l,e,a),this._div.appendChild(a)}e.name&&(i.element.id=e.name),i.element instanceof HTMLElement&&i.element.classList.add("editor-control"),e.hideLabel&&(i.element.style.gridColumn="2 / 4"),this._div.appendChild(i.element),this._propertyMap.set(e,{isSetElement:o,labelElement:n,editor:i})}}_onDragLeave(e,t,i){e.preventDefault(),i.classList.remove("dragOverProperty")}_onDragOver(e,t,i){if(e.preventDefault(),e.dataTransfer.types.indexOf(li)>=0){let o=this._serviceContainer.bindableObjectDragDropService;if(o){let a=o.dragOverOnProperty(e,t,this._designItems);(a??"none")!="none"?(i.classList.add("dragOverProperty"),e.dataTransfer.dropEffect=a):i.classList.remove("dragOverProperty")}}if(e.dataTransfer.types.indexOf(lc)>=0){let o=this._serviceContainer.propertyGridDragDropService;if(o){let a=o.dragOverOnProperty(e,t,this._designItems);(a??"none")!="none"?(i.classList.add("dragOverProperty"),e.dataTransfer.dropEffect=a):i.classList.remove("dragOverProperty")}}}_onDrop(e,t,i){e.preventDefault(),i.classList.remove("dragOverProperty");let n=e.dataTransfer.getData(li);if(n){let o=JSON.parse(n),a=this._serviceContainer.bindableObjectDragDropService;a&&a.dropOnProperty(e,t,o,this._designItems)}let r=e.dataTransfer.getData(lc);if(r){let o=JSON.parse(r),a=this._serviceContainer.propertyGridDragDropService;a&&a.dropOnProperty(e,t,o,this._designItems)}}openContextMenu(e,t){let i;this.propertyContextMenuProvider&&(i=this.propertyContextMenuProvider(this._designItems,t)),i||(i=t.service.getContextMenu(this._designItems,t)),Pe.show(i,e)}designItemsChanged(e){this._designItems=e;for(let t of this._propertyMap)t[1].editor.designItemsChanged(e)}refreshForDesignItems(e){for(let t of this._propertyMap)s.refreshIsSetElementAndEditorForDesignItems(t[1].isSetElement,t[0],e,this._propertiesService,t[1].editor)}static refreshIsSetElementAndEditorForDesignItems(e,t,i,n,r){if(i&&i.length){let o=n.isSet(i,t),a=n.getValue(i,t);e.title=t.name+": "+o,o==W.none?(e.style.background="",a=n.getUnsetValue(i,t)):o==W.all?e.style.background="white":o==W.some?e.style.background="gray":o==W.bound?e.style.background="orange":o==W.fromStylesheet&&(a=n.getUnsetValue(i,t),e.style.background="yellow"),r?.refreshValueWithoutNotification(o,a)}else e.style.background=""}};customElements.define("node-projects-property-grid-property-list",Ke);_e();import{BaseCustomWebComponentLazyAppend as cx,css as hx}from"@node-projects/base-custom-webcomponent";var zd=class extends cx{_serviceContainer;_designerTabControl;_selectedItems;_propertyGridPropertyLists;_propertyGridPropertyListsDict;_nodeReplacedCb;_instanceServiceContainer;_selectionChangedHandler;_contentChangedHandler;propertyGroupHover;propertyGroupClick;propertyContextMenuProvider;static style=hx`:host{display:block;height:100%;user-select:none;-webkit-user-select:none}button:hover{box-shadow:inset 0 3px 0 var(--light-grey)}button:focus{box-shadow:inset 0 3px 0 var(--highlight-pink,#e91e63)}`;static properties={serviceContainer:Object,instanceServiceContainer:Object,selectedItems:Array,propertyGroupHover:Function,propertyGroupClick:Function,propertyContextMenuProvider:Function};constructor(){super(),this._designerTabControl=new bt,this.shadowRoot.appendChild(this._designerTabControl),this._restoreCachedInititalValues(),this.addEventListener("contextmenu",e=>{e.composedPath()[0].localName!="input"&&e.preventDefault()})}set serviceContainer(e){this._serviceContainer=e,this._propertyGridPropertyLists=[],this._propertyGridPropertyListsDict={}}get serviceContainer(){return this._serviceContainer}set instanceServiceContainer(e){this._instanceServiceContainer=e,this._selectionChangedHandler?.dispose(),this._contentChangedHandler?.dispose(),this._instanceServiceContainer?(this._selectionChangedHandler=this._instanceServiceContainer.selectionService.onSelectionChanged.on(t=>{this.selectedItems=t.selectedElements}),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(t=>{this._changeOccured(null,!1)}),this.selectedItems=this._instanceServiceContainer.selectionService.selectedElements):this.selectedItems=[]}get selectedItems(){return this._selectedItems}set selectedItems(e){this._selectedItems!=e&&(this._selectedItems=e,this._selectedItemsSet())}async _selectedItemsSet(){let e=this._serviceContainer.propertyGroupService.getPropertygroups(this._selectedItems),t=new Set;for(let n of e){let r=this._propertyGridPropertyListsDict[n.name];r||(r=new Ke(this.serviceContainer),r.title=n.name,r.propertyGroupHover=this.propertyGroupHover,r.propertyGroupClick=this.propertyGroupClick,r.propertyContextMenuProvider=this.propertyContextMenuProvider,this._designerTabControl.appendChild(r),this._propertyGridPropertyLists.push(r),this._propertyGridPropertyListsDict[n.name]=r),r.setPropertiesService(n.propertiesService),await r.createElements(this._selectedItems[0])&&t.add(n.name)}let i=this._designerTabControl;for(let n of t){let r=this._propertyGridPropertyListsDict[n],o=r.scrollTop;i===this._designerTabControl?i.insertAdjacentElement("afterbegin",r):i.insertAdjacentElement("afterend",r),i=r,r.scrollTo(0,o)}for(let n of this._propertyGridPropertyLists)t.has(n.title)?n.style.display="block":n.style.display="none";this._designerTabControl.refreshItems(),this._designerTabControl.selectedIndex<0&&(this._designerTabControl.selectedIndex=0);for(let n of this._propertyGridPropertyLists)t.has(n.title)&&n.designItemsChanged(this._selectedItems);if(this._selectedItems){if(this._selectedItems.length==1){for(let n of this._propertyGridPropertyLists)t.has(n.title)&&n.refreshForDesignItems(this._selectedItems);this._observePrimarySelectionForChanges()}}else this._nodeReplacedCb?.dispose(),this._nodeReplacedCb=null}_blockDoubleRun=!1;async _changeOccured(e,t=!1){if(!this._blockDoubleRun){this._blockDoubleRun=!0;let i=this._selectedItems[0];if(i)for(let n of this._propertyGridPropertyLists)n.propertiesService?.getRefreshMode(i)==Y.fullOnValueChange&&(await n.createElements(i),n.designItemsChanged(this._selectedItems)),n.refreshForDesignItems(this._selectedItems);this._blockDoubleRun=!1}}_observePrimarySelectionForChanges(){this._nodeReplacedCb?.dispose(),this._nodeReplacedCb=this._selectedItems[0].nodeReplaced.on(()=>{this._observePrimarySelectionForChanges(),this._changeOccured(null,!0)})}};customElements.define("node-projects-web-component-designer-property-grid",zd);ze();Z();import{BaseCustomWebComponentLazyAppend as px,css as dx,html as ux}from"@node-projects/base-custom-webcomponent";Gt();var Fd=class extends px{static style=dx`:host{display:block;height:100%;user-select:none;-webkit-user-select:none;background:var(--medium-grey,#2f3545);color:#fff}div.root{display:grid;grid-template-columns:11px 11px auto 1fr auto;padding:3px 6px;font-family:monospace;align-items:center}.desc{font-weight:700;font-size:10px;margin-right:5px}input{background:var(--medium-grey,#2f3545);border:solid 1px gray;color:#fff;width:calc(100% - 6px)}#type{color:wheat;white-space:nowrap;overflow:hidden;font-size:12px;height:20px;border:none}#pg{height:calc(100% - 64px)}`;static template=ux`<div class="root"><span style="grid-column:span 3" class="desc">Type:</span><input type="text" readonly="readonly" id="type"> <button id="config" style="display:none;grid-column:5;grid-row:span 3;height:calc(100% - 10px);margin-left:10px">config</button><div title="id" id="idRect" style="grid-column:1;width:7px;height:7px;border:1px solid #fff"></div><span id="idSpan" style="grid-column:span 2" class="desc">Id:</span><input type="text" id="id"><div title="innerHTML" id="innerRect" style="grid-column:1;width:7px;height:7px;border:1px solid #fff"></div><div title="textContent" id="contentRect" style="width:7px;height:7px;border:1px solid #fff"></div><span id="contentSpan" class="desc">Content:</span><input type="text" id="content"></div><node-projects-web-component-designer-property-grid id="pg"></node-projects-web-component-designer-property-grid>`;propertyGrid;_type;_id;_content;_selectionChangedHandler;_instanceServiceContainer;_idRect;_contentRect;_innerRect;_propertiesService;_configButton;constructor(){super(),this._restoreCachedInititalValues(),this._type=this._getDomElement("type"),this._id=this._getDomElement("id"),this._content=this._getDomElement("content"),this.propertyGrid=this._getDomElement("pg"),this._idRect=this._getDomElement("idRect"),this._contentRect=this._getDomElement("contentRect"),this._innerRect=this._getDomElement("innerRect"),this._configButton=this._getDomElement("config"),this._configButton.onclick=async()=>{let i=await(await this.serviceContainer?.getLastServiceWhereAsync("configUiService",async n=>await n.hasConfigUi(this._instanceServiceContainer.selectionService.primarySelection))).getConfigUi(this._instanceServiceContainer.selectionService.primarySelection);this.serviceContainer.globalContext.showConfigClicked.emit({designItem:this._instanceServiceContainer.selectionService.primarySelection,configUi:i})},this._propertiesService=new tl,this._idRect.oncontextmenu=t=>{t.preventDefault(),this._instanceServiceContainer.selectionService.primarySelection?.isRootItem||this._openContextMenu(t,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService.idProperty)},this._contentRect.oncontextmenu=t=>{t.preventDefault(),this._instanceServiceContainer.selectionService.primarySelection?.isRootItem||this._openContextMenu(t,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService.contentProperty)},this._innerRect.oncontextmenu=t=>{t.preventDefault(),this._instanceServiceContainer.selectionService.primarySelection?.isRootItem||this._openContextMenu(t,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService.innerHtmlProperty)},this._id.onkeydown=t=>{t.key=="Enter"?this._instanceServiceContainer.selectionService.primarySelection.id=this._id.value:t.key=="Escape"&&(this._id.value=this._instanceServiceContainer.selectionService.primarySelection?.id??"",t.preventDefault(),t.stopPropagation()),Ke.refreshIsSetElementAndEditorForDesignItems(this._idRect,this._propertiesService.idProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService)},this._content.onkeydown=t=>{t.key=="Enter"?(this._instanceServiceContainer.selectionService.primarySelection.content=this._content.value,this._content.title=this._content.value):t.key=="Escape"&&(this._content.value=this._instanceServiceContainer.selectionService.primarySelection?.element?.textContent??"",t.preventDefault(),t.stopPropagation()),Ke.refreshIsSetElementAndEditorForDesignItems(this._contentRect,this._propertiesService.contentProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService),Ke.refreshIsSetElementAndEditorForDesignItems(this._innerRect,this._propertiesService.innerHtmlProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService)};let e;this._id.onfocus=t=>{e=this._instanceServiceContainer.selectionService.primarySelection},this._id.onblur=t=>{e&&(e.id=this._id.value),e=null,Ke.refreshIsSetElementAndEditorForDesignItems(this._idRect,this._propertiesService.idProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService)}}set serviceContainer(e){this.propertyGrid.serviceContainer=e}set instanceServiceContainer(e){let t=e;this._instanceServiceContainer=t,this._selectionChangedHandler?.dispose(),t?(this._selectionChangedHandler=t.selectionService.onSelectionChanged.on(async i=>{this.propertyGrid.instanceServiceContainer=t,await St(20),await this._refreshHeaderForCurrentSelection(t)}),this._refreshHeaderForCurrentSelection(t)):(this._configButton.style.display="none",this._id.value="",this._content.value="",this._id.disabled=!0,this._content.disabled=!0,this._idRect.style.background="",this._contentRect.style.background="",this._innerRect.style.background="",this._type.value=":host"),this.propertyGrid.instanceServiceContainer=t}async _refreshHeaderForCurrentSelection(e){if(!e?.selectionService?.primarySelection||e.selectionService.primarySelection?.isRootItem){this._configButton.style.display="none",this._id.value="",this._content.value="",this._id.disabled=!0,this._content.disabled=!0,this._idRect.style.background="",this._contentRect.style.background="",this._innerRect.style.background="",this._type.value=":host",this._type.title=this._type.value;return}this._id.disabled=!1,this._content.disabled=!1,await this.serviceContainer?.getLastServiceWhereAsync("configUiService",i=>i.hasConfigUi(e.selectionService.primarySelection))?this._configButton.style.display="block":this._configButton.style.display="none",e.selectionService.primarySelection?.nodeType==D.Element?this._type.value=e.selectionService.primarySelection?.name??"":this._type.value=e.selectionService.primarySelection?.node?.nodeName??"",this._type.title=this._type.value,this._id.value=e.selectionService.primarySelection?.id??"",e.selectionService.primarySelection?.element?.nodeType!=D.Element?this._content.value=e.selectionService.primarySelection?.content??"":e.selectionService.primarySelection?.element?.children?.length<=0?this._content.value=e.selectionService.primarySelection?.content??"":this._content.value="",this._content.title=this._content.value,Ke.refreshIsSetElementAndEditorForDesignItems(this._idRect,this._propertiesService.idProperty,e.selectionService.selectedElements,this._propertiesService),Ke.refreshIsSetElementAndEditorForDesignItems(this._contentRect,this._propertiesService.contentProperty,e.selectionService.selectedElements,this._propertiesService),Ke.refreshIsSetElementAndEditorForDesignItems(this._innerRect,this._propertiesService.innerHtmlProperty,e.selectionService.selectedElements,this._propertiesService)}_openContextMenu(e,t,i){let n;this.propertyGrid.propertyContextMenuProvider&&(n=this.propertyGrid.propertyContextMenuProvider(t,i)),n||(n=i.service.getContextMenu(t,i)),Pe.show(n,e)}};customElements.define("node-projects-web-component-designer-property-grid-with-header",Fd);import{css as Px,DomHelper as Ix,html as kx,BaseCustomWebComponentConstructorAppend as Dx}from"@node-projects/base-custom-webcomponent";fe();oe();he();ft();import{BaseCustomWebComponentLazyAppend as yx,css as vx,cssFromString as _x,DomHelper as Bd,html as xx,TypedEvent as bx}from"@node-projects/base-custom-webcomponent";ie();var ei=M.Normal,ll=class{snapOffset=5;_overlayLayerView;_containerItem;_positionsH=[];_positionsMiddleH=[];_positionsV=[];_positionsMiddleV=[];_outerRect;constructor(e){this._overlayLayerView=e}initialize(e){this._containerItem=e}clearSnaplines(){this._overlayLayerView.removeAllNodesWithClass&&this._overlayLayerView.removeAllNodesWithClass("svg-snapline"),this._positionsH=[],this._positionsMiddleH=[],this._positionsV=[],this._positionsMiddleV=[]}calculateSnaplines(e){this.clearSnaplines();let t=this._containerItem.serviceContainer.snaplinesProviderService.provideSnaplines(this._containerItem,e);this._outerRect=t.outerRect,this._positionsH=t.positionsH,this._positionsMiddleH=t.positionsMiddleH,this._positionsV=t.positionsV,this._positionsMiddleV=t.positionsMiddleV}snapToPosition(e,t,i){let n=this.snapOffset+1,r,o;for(let c=0;c<this._positionsH.length;c++){let h=Math.abs(this._positionsH[c][0]-e.x);(h<n||h===n&&r===void 0)&&(n=h,r=[],o=this._positionsH[c][0]);let p;t&&(p=Math.abs(e.x+t.width-this._positionsH[c][0]),(p<n||p===n&&r===void 0)&&(n=p,r=[],o=this._positionsH[c][0]-t.width)),h===n&&r.push(this._positionsH[c][1]),t&&p===n&&h!==n&&r.push(this._positionsH[c][1])}if(t)for(let c=0;c<this._positionsMiddleH.length;c++){let h=Math.abs(this._positionsMiddleH[c][0]-(e.x+t.width/2));(h<n||h===n&&r===void 0)&&(n=h,r=[],o=this._positionsMiddleH[c][0]-t.width/2),h===n&&r.push(this._positionsMiddleH[c][1])}n=this.snapOffset+1;let a,l;for(let c=0;c<this._positionsV.length;c++){let h=Math.abs(this._positionsV[c][0]-e.y);(h<n||h===n&&a===void 0)&&(n=h,a=[],l=this._positionsV[c][0]);let p;t&&(p=Math.abs(e.y+t.height-this._positionsV[c][0]),(p<n||p===n&&a===void 0)&&(n=p,a=[],l=this._positionsV[c][0]-t.height)),h===n&&a.push(this._positionsV[c][1]),t&&p===n&&h!==n&&a.push(this._positionsV[c][1])}if(t)for(let c=0;c<this._positionsMiddleV.length;c++){let h=Math.abs(this._positionsMiddleV[c][0]-(e.y+t.height/2));(h<n||h===n&&a===void 0)&&(n=h,a=[],l=this._positionsMiddleV[c][0]-t.height/2),h===n&&a.push(this._positionsMiddleV[c][1])}if(this._overlayLayerView.removeAllNodesWithClass("svg-snapline"),r!==void 0||a!==void 0){let c={x:r!==void 0?o:e.x,y:a!==void 0?l:e.y};return this.drawSnaplines(c,t,r,a),{x:r!==void 0?o:null,y:a!==void 0?l:null}}return{x:null,y:null}}drawSnaplines(e,t,i,n){if(i){let r=e.y,o=e.y;for(let a of i){let l=a.y-this._outerRect.top;r=r<l?r:l,o=o>l?o:l}for(let a of i){if(a.x-this._outerRect.left==e.x||t&&a.x-this._outerRect.left==e.x+t.width){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",a.x-this._outerRect.x),c.setAttribute("x2",a.x-this._outerRect.x),c.setAttribute("y1",r),c.setAttribute("y2",o),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,ei)}if(a.x-this._outerRect.left+a.width==e.x||t&&a.x-this._outerRect.left+a.width==e.x+t.width){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",a.x-this._outerRect.x+a.width),c.setAttribute("x2",a.x-this._outerRect.x+a.width),c.setAttribute("y1",r),c.setAttribute("y2",o),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,ei)}if(t&&a.x-this._outerRect.left+a.width/2==e.x+t.width/2){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",a.x-this._outerRect.x+a.width/2),c.setAttribute("x2",a.x-this._outerRect.x+a.width/2),c.setAttribute("y1",r),c.setAttribute("y2",o),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,ei)}let l=document.createElementNS("http://www.w3.org/2000/svg","rect");l.setAttribute("x",a.x-this._outerRect.x),l.setAttribute("width",a.width),l.setAttribute("y",a.y-this._outerRect.y),l.setAttribute("height",a.height),l.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,l,ei)}}if(n){let r=e.x,o=e.x;for(let a of n){let l=a.x-this._outerRect.left;r=r<l?r:l,o=o>l?o:l}for(let a of n){if(a.y-this._outerRect.top==e.y||t&&a.y-this._outerRect.top==e.y+t.height){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",r),c.setAttribute("x2",o),c.setAttribute("y1",a.y-this._outerRect.y),c.setAttribute("y2",a.y-this._outerRect.y),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,ei)}if(a.y-this._outerRect.top+a.height==e.y||t&&a.y-this._outerRect.top+a.height==e.y+t.height){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",r),c.setAttribute("x2",o),c.setAttribute("y1",a.y-this._outerRect.y+a.height),c.setAttribute("y2",a.y-this._outerRect.y+a.height),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,ei)}if(t&&a.y-this._outerRect.top+a.height/2==e.y+t.height/2){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",r),c.setAttribute("x2",o),c.setAttribute("y1",a.y-this._outerRect.y+a.height/2),c.setAttribute("y2",a.y-this._outerRect.y+a.height/2),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,ei)}let l=document.createElementNS("http://www.w3.org/2000/svg","rect");l.setAttribute("x",a.x-this._outerRect.x),l.setAttribute("width",a.width),l.setAttribute("y",a.y-this._outerRect.y),l.setAttribute("height",a.height),l.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,l,ei)}}}};Dt();Sn();rt();oe();Z();rt();kt();function G(s,e){let t=e.get(s);return t||(t=new Map,e.set(s,t),t)}var cl=class s{designerCanvas;designItemsWithExtentions=new Set;_timeout;_appliedDesignerExtensions=new WeakMap;_shouldAppliedDesignerExtensions=new WeakMap;_lastApplyEventPerType=new WeakMap;_lastPrimarySelectionRefreshItem;constructor(e){am(),this.designerCanvas=e,e.instanceServiceContainer.selectionService.onSelectionChanged.on(this._selectedElementsChanged.bind(this)),e.instanceServiceContainer.selectionService.onSelectionRefresh.on(this._selectedElementsRefresh.bind(this)),e.instanceServiceContainer.onContentChanged.on(this._contentChanged.bind(this)),e.serviceContainer.globalContext.onToolChanged.on(()=>{this.removeExtension(e.instanceServiceContainer.selectionService.primarySelection,I.PrimarySelectionRefreshed),this._lastPrimarySelectionRefreshItem=null})}connected(){this.ensurePermanentRootExtensionsApplied(),this._timeout||(this._timeout=setTimeout(()=>this.refreshAllExtensionsTimeout(),20))}disconnected(){this._timeout&&clearTimeout(this._timeout),this._timeout=null}refreshAllExtensionsTimeout(){this.refreshAllAppliedExtentions(),this._timeout=setTimeout(()=>this.refreshAllExtensionsTimeout(),20)}ensurePermanentRootExtensionsApplied(){let e=this.designerCanvas.rootDesignItem;e&&(G(e,this._appliedDesignerExtensions).get(I.Permanent)?.length||this.applyExtension(e,I.Permanent))}_contentChanged(e){requestAnimationFrame(()=>{for(let t of e)switch(t.changeType){case"added":this.applyExtensions(t.designItems,I.Permanent,null,!0);break;case"moved":this.refreshExtensions(t.designItems,I.Permanent);break;case"parsed":this.ensurePermanentRootExtensionsApplied(),this.applyExtensions(Array.from(this.designerCanvas.rootDesignItem.children()),I.Permanent,null,!0);break;case"removed":this.removeExtensions(t.designItems,!0,I.Permanent);break}})}_selectedElementsChanged(e){if(this._lastPrimarySelectionRefreshItem=null,e.oldSelectedElements&&e.oldSelectedElements.length&&(this.removeExtension(e.oldSelectedElements[0],I.PrimarySelectionRefreshed),this.removeExtension(e.oldSelectedElements[0],I.PrimarySelection),this.removeExtension(e.oldSelectedElements[0],I.PrimarySelectionAndCanBeEntered),this.removeExtension(e.oldSelectedElements[0],I.OnlyOneItemSelected),this.removeExtensions(e.oldSelectedElements,!1,I.Selection),this.removeExtensions(e.oldSelectedElements,!1,I.MultipleItemsSelected),e.oldSelectedElements[0].parent)){let t=O.GetOrCreateDesignItem(e.oldSelectedElements[0].parent.element,e.oldSelectedElements[0].parent.element,this.designerCanvas.serviceContainer,this.designerCanvas.instanceServiceContainer);this.removeExtension(t,I.PrimarySelectionContainer),this.removeExtension(t,I.PrimarySelectionContainerAndCanBeEntered)}if(e.selectedElements&&e.selectedElements.length&&(this.applyExtensions(e.selectedElements,I.Selection,e.event),this.applyExtension(e.selectedElements[0],I.PrimarySelection,e.event),e.selectedElements.length===1?this.applyExtension(e.selectedElements[0],I.OnlyOneItemSelected,e.event):e.selectedElements.length>1&&this.applyExtension(e.selectedElements[0],I.MultipleItemsSelected,e.event),e.selectedElements[0].getPlacementService()?.isEnterableContainer(e.selectedElements[0])&&this.applyExtension(e.selectedElements[0],I.PrimarySelectionAndCanBeEntered,e.event),e.selectedElements[0].parent)){let t=O.GetOrCreateDesignItem(e.selectedElements[0].parent.element,e.selectedElements[0].parent.element,this.designerCanvas.serviceContainer,this.designerCanvas.instanceServiceContainer);this.applyExtension(t,I.PrimarySelectionContainer,e.event),t.getPlacementService()?.isEnterableContainer(t)&&this.applyExtension(t,I.PrimarySelectionContainerAndCanBeEntered,e.event)}}_selectedElementsRefresh(e){this.refreshAllAppliedExtentions(e.event),e.selectedElements&&e.selectedElements.length&&this._lastPrimarySelectionRefreshItem?.deref()===e.selectedElements[0]&&(this._appliedDesignerExtensions.get(e.selectedElements[0])?.get(I.PrimarySelectionRefreshed)||this.applyExtension(e.selectedElements[0],I.PrimarySelectionRefreshed,e.event)),this._lastPrimarySelectionRefreshItem=new WeakRef(e.selectedElements[0])}applyExtension(e,t,i,n=!1){if(e&&e.nodeType==D.Element){let r=this.designerCanvas.serviceContainer.designerExtensions.get(t),o=[];if(r){let a={};It();for(let l of r){let c=G(e,this._shouldAppliedDesignerExtensions).get(t);if(c||(c=[]),c.push(l),G(e,this._shouldAppliedDesignerExtensions).set(t,c),l.shouldExtend(this,this.designerCanvas,e)){let h=G(e,this._appliedDesignerExtensions).get(t);h||(h=[]);let p=l.getExtension(this,this.designerCanvas,e);try{p.extend(a,i),o.push(p),i?G(e,this._lastApplyEventPerType).set(t,i):G(e,this._lastApplyEventPerType).delete(t)}catch(d){console.error(d)}h.push(p),G(e,this._appliedDesignerExtensions).set(t,h),this.designItemsWithExtentions.add(e)}}}if(n)for(let a of e.children())this.applyExtension(a,t,i,n);return o}return null}applyExtensions(e,t,i,n=!1){if(this.designerCanvas.overlayLayer.startBatch(),e){let r=this.designerCanvas.serviceContainer.designerExtensions.get(t);if(r){let o={};It();for(let a of r)for(let l of e){let c=G(l,this._shouldAppliedDesignerExtensions).get(t);if(c||(c=[]),c.push(a),G(l,this._shouldAppliedDesignerExtensions).set(t,c),a.shouldExtend(this,this.designerCanvas,l)){let h=G(l,this._appliedDesignerExtensions).get(t);h||(h=[]);let p=a.getExtension(this,this.designerCanvas,l);try{p.extend(o,i),i?G(l,this._lastApplyEventPerType).set(t,i):G(l,this._lastApplyEventPerType).delete(t)}catch(d){console.error(d)}h.push(p),G(l,this._appliedDesignerExtensions).set(t,h),this.designItemsWithExtentions.add(l)}}}if(n)for(let o of e)this.applyExtensions(Array.from(o.children()),t,i,n)}this.designerCanvas.overlayLayer.endBatch()}applyExtensionInstance(e,t,i=I.Directly){let n=G(e,this._appliedDesignerExtensions).get(I.Directly);n||(n=[]);try{t.extend(null,null)}catch(r){console.error(r)}n.push(t),G(e,this._appliedDesignerExtensions).set(i,n),this.designItemsWithExtentions.add(e)}removeExtensionInstance(e,t){for(let i of G(e,this._appliedDesignerExtensions)){let n=i[1].indexOf(t);if(n>=0){try{t.dispose()}catch(r){console.error(r)}i[1].splice(n,1),i[1].length==0&&(G(e,this._appliedDesignerExtensions).delete(i[0]),G(e,this._shouldAppliedDesignerExtensions).delete(i[0])),G(e,this._appliedDesignerExtensions).size||this.designItemsWithExtentions.delete(e)}}}removeExtension(e,t){if(e)if(t){G(e,this._shouldAppliedDesignerExtensions).delete(t);let i=G(e,this._appliedDesignerExtensions).get(t);if(i){for(let n of i)try{n.dispose(),G(e,this._lastApplyEventPerType).delete(t)}catch(r){console.error(r)}G(e,this._appliedDesignerExtensions).delete(t),G(e,this._appliedDesignerExtensions).size||this.designItemsWithExtentions.delete(e)}}else{G(e,this._shouldAppliedDesignerExtensions).clear();for(let i of G(e,this._appliedDesignerExtensions))for(let n of i[1])try{n.dispose()}catch(r){console.error(r)}G(e,this._appliedDesignerExtensions).clear(),this.designItemsWithExtentions.delete(e)}}removeExtensions(e,t,i){if(e)if(i)for(let n of e){t&&n.hasChildren&&this.removeExtensions([...n.children()],!0,i),G(n,this._shouldAppliedDesignerExtensions).delete(i);let r=G(n,this._appliedDesignerExtensions).get(i);if(r){for(let o of r)try{o.dispose(),G(n,this._lastApplyEventPerType).delete(i)}catch(a){console.error(a)}G(n,this._appliedDesignerExtensions).delete(i),G(n,this._appliedDesignerExtensions).size||this.designItemsWithExtentions.delete(n)}}else for(let n of e){t&&n.hasChildren&&this.removeExtensions([...n.children()],!0,i),G(n,this._shouldAppliedDesignerExtensions).clear();for(let r of G(n,this._appliedDesignerExtensions))for(let o of r[1])try{o.dispose()}catch(a){console.error(a)}G(n,this._appliedDesignerExtensions).clear(),this.designItemsWithExtentions.delete(n)}}removeAllExtensions(){this.designItemsWithExtentions.forEach(e=>{G(e,this._shouldAppliedDesignerExtensions).clear();for(let t of G(e,this._appliedDesignerExtensions))for(let i of t[1])try{i.dispose()}catch(n){console.error(n)}G(e,this._appliedDesignerExtensions).clear()}),this.designItemsWithExtentions.clear()}refreshExtension(e,t,i){if(!(this.designerCanvas.checkVisibility&&!this.designerCanvas.checkVisibility())&&e)if(t)if(!e.element.isConnected)this.removeExtension(e,t);else{let n=G(e,this._appliedDesignerExtensions).get(t);if(n){let r={};It();for(let o of n)try{o.refresh(r,i),i&&G(e,this._lastApplyEventPerType).set(t,i)}catch(a){console.error(a)}}}else{let n={};It();for(let r of G(e,this._appliedDesignerExtensions))for(let o of r[1])try{o.refresh(n,i)}catch(a){console.error(a)}}}refreshExtensions(e,t,i,n,r){if(this.designerCanvas.checkVisibility&&!this.designerCanvas.checkVisibility())return;this.designerCanvas.overlayLayer.startBatch();let o=performance.now();if(e)if(t){let a={};It();e:for(let l of e)if(!l.element.isConnected)this.removeExtension(l,t);else{let c=G(l,this._appliedDesignerExtensions).get(t);if(c)for(let h of c)try{if(h!=n&&h.refresh(a,i),r&&performance.now()-o>r){console.warn("refreshExtensions() took too long, stopped refreshing");break e}}catch(p){console.error(p)}}}else{let a={};It();e:for(let l of e)for(let c of G(l,this._appliedDesignerExtensions))for(let h of c[1])try{if(h!=n&&(h.refresh(a,i),i&&G(l,this._lastApplyEventPerType).set(t,i),r&&performance.now()-o>r)){console.warn("refreshExtensions() took too long, stopped refreshing");break e}}catch(p){console.error(p)}}this.designerCanvas.overlayLayer.endBatch()}refreshAllExtensions(e,t,i){this.designerCanvas.overlayLayer.startBatch(),e&&(this.refreshExtensions(e,I.Directly,i,t),this.refreshExtensions(e,I.Permanent,i,t),this.refreshExtensions(e,I.Selection,i,t),this.refreshExtensions(e,I.PrimarySelection,i,t),this.refreshExtensions(e,I.PrimarySelectionContainer,i,t),this.refreshExtensions(e,I.MouseOver,i,t),this.refreshExtensions(e,I.OnlyOneItemSelected,i,t),this.refreshExtensions(e,I.MultipleItemsSelected,i,t),this.refreshExtensions(e,I.ContainerDragOverAndCanBeEntered,i,t),this.refreshExtensions(e,I.ContainerDrag,i,t),this.refreshExtensions(e,I.Doubleclick,i,t),this.refreshExtensions(e,I.Placement,i,t),this.refreshExtensions(e,I.PrimarySelectionAndCanBeEntered,i,t),this.refreshExtensions(e,I.PrimarySelectionContainerAndCanBeEntered,i,t)),this.designerCanvas.overlayLayer.endBatch()}refreshAllAppliedExtentions(e){this.designerCanvas.fillCalculationrects(),this.refreshAllExtensions([...this.designItemsWithExtentions],null,e)}reapplyAllAppliedExtentions(e,t){this.designerCanvas.overlayLayer.startBatch();for(let i of s.getAllChildElements(this.designerCanvas.rootDesignItem))if(!e||e.includes(i)){let n=[...G(i,this._shouldAppliedDesignerExtensions).keys()];for(let r of n){let o=G(i,this._lastApplyEventPerType).get(r);this.removeExtension(i,r),(t==null||t.includes(r))&&this.applyExtension(i,r,o)}}this.designerCanvas.overlayLayer.endBatch()}static*getAllChildElements(e){if(e.nodeType==D.Element&&(yield e),e.hasChildren)for(let t of e.children())for(let i of s.getAllChildElements(t))yield i}};Et();Ba();ze();ie();import{css as mx,html as fx,BaseCustomWebComponentConstructorAppend as gx}from"@node-projects/base-custom-webcomponent";var sn=class s extends gx{static template=fx`<svg id="svg" style="pointer-events:none"><defs id="defs"></defs><g id="background"></g><g id="normal"></g><g id="foreground"></g></svg>`;static style=mx`svg{width:100%;height:100%;overflow:visible}.svg-invisible{stroke:transparent;fill:transparent;pointer-events:auto}.svg-snapline{stroke:purple;stroke-dasharray:4;fill:transparent}.svg-selector{stroke:#000;fill:#3899ec55;stroke-width:1;stroke-dasharray:2}.svg-primary-selection-move{stroke:#3899ec;fill:#3899ec;cursor:move;pointer-events:auto}.svg-position{stroke:#000;stroke-dasharray:2}.svg-path{stroke:#3899ec;fill:orange;pointer-events:auto}.svg-path-line{stroke:#3899ec;stroke-dasharray:2}.svg-draw-new-element{stroke:#000;fill:transparent;stroke-width:1}.svg-toolbar-container{overflow:visible}.svg-toolbar-container>div{padding:5px;display:flex;gap:2px;background:#fff;border-radius:4px;box-shadow:0 2px 10px 0 rgba(19,23,32,.2);align-items:center}node-projects-image-button-list-selector img{height:16px;border:1px solid #000;border-radius:4px;box-sizing:border-box;pointer-events:auto;cursor:pointer}node-projects-image-button-list-selector img:hover{background:#d3d3d3}node-projects-image-button-list-selector img:active{translate:1px 1px}`;static is="node-projects-overlay-layer-view";_serviceContainer;_svg;_gBackground;_gNormal;_gForeground;_defs;_id=0;constructor(e){super(),this._serviceContainer=e,this._svg=this._getDomElement("svg"),this._gBackground=this._getDomElement("background"),this._gNormal=this._getDomElement("normal"),this._gForeground=this._getDomElement("foreground"),this._defs=this._getDomElement("defs"),this._initialize()}_initialize(){let e=[s.style],t=new Set;for(let i of this._serviceContainer.designerExtensions)for(let n of i[1]){if(n.constructor.style)if(Array.isArray(n.constructor.style))for(let r of n.constructor.style)t.has(r)||(t.add(r),e.push(r));else t.has(n.constructor.style)||(t.add(n.constructor.style),e.push(n.constructor.style));if(n.style)if(Array.isArray(n.style))for(let r of n.style)t.has(r)||(t.add(r),e.push(r));else t.has(n.style)||(t.add(n.style),e.push(n.style));if(n.svgDefs){if(Array.isArray(n.svgDefs)){for(let r of n.svgDefs)if(!t.has(r)){t.add(r);let o=document.createElementNS("http://www.w3.org/2000/svg","defs");o.innerHTML=r;for(let a of[...o.children])this._defs.appendChild(a)}}else if(!t.has(n.svgDefs)){t.add(n.svgDefs);let r=document.createElementNS("http://www.w3.org/2000/svg","defs");r.innerHTML=n.svgDefs;for(let o of[...r.children])this._defs.appendChild(o)}}if(n.constructor.svgDefs){if(Array.isArray(n.constructor.svgDefs)){for(let r of n.constructor.svgDefs)if(!t.has(r)){t.add(r);let o=document.createElementNS("http://www.w3.org/2000/svg","defs");o.innerHTML=r;for(let a of[...o.children])this._defs.appendChild(a)}}else if(!t.has(n.constructor.svgDefs)){t.add(n.constructor.svgDefs);let r=document.createElementNS("http://www.w3.org/2000/svg","defs");r.innerHTML=n.constructor.svgDefs;for(let o of[...r.children])this._defs.appendChild(o)}}}for(let i of this._serviceContainer.designerPointerExtensions)if(i.style&&(t.has(i.style)||(t.add(i.style),e.push(i.style))),i.svgDefs&&!t.has(i.svgDefs)){t.add(i.svgDefs);let n=document.createElementNS("http://www.w3.org/2000/svg","defs");n.innerHTML=i.svgDefs;for(let r of[...n.children])this._defs.appendChild(r)}if(this._serviceContainer.overlayLayerViewAdditionalStyles)for(let i of this._serviceContainer.overlayLayerViewAdditionalStyles)t.has(i)||(t.add(i),e.push(i));this.shadowRoot.adoptedStyleSheets=e}backgroundFragment;foregroundFragment;normalFragment;batchCount=0;startBatch(){this.batchCount==0&&(this.backgroundFragment=document.createDocumentFragment(),this.foregroundFragment=document.createDocumentFragment(),this.normalFragment=document.createDocumentFragment()),this.batchCount++}endBatch(){this.batchCount--,this.batchCount==0&&(this.backgroundFragment.hasChildNodes&&this._gBackground.appendChild(this.backgroundFragment),this.foregroundFragment.hasChildNodes&&this._gForeground.appendChild(this.foregroundFragment),this.normalFragment.hasChildNodes&&this._gNormal.appendChild(this.normalFragment),this.backgroundFragment=null,this.foregroundFragment=null,this.normalFragment=null)}addOverlay(e,t,i=M.Normal){switch(t.setAttribute("overlay-source",e),i){case M.Background:this.backgroundFragment?this.backgroundFragment.appendChild(t):this._gBackground.appendChild(t);break;case M.Foreground:this.foregroundFragment?this.foregroundFragment.appendChild(t):this._gForeground.appendChild(t);break;default:this.normalFragment?this.normalFragment.appendChild(t):this._gNormal.appendChild(t);break}}removeOverlay(e){try{e?.parentElement?.removeChild(e)}catch(t){console.error(t)}}removeAllNodesWithClass(e){let t=this._svg.querySelectorAll("."+e);for(let i of t)i.parentNode.removeChild(i)}removeAllOverlays(){let e=this._svg.querySelectorAll("svg > g > *");for(let t of e)t.parentNode.removeChild(t)}createPoint(){return this._svg.createSVGPoint()}drawGroup(e,t,i,n){return i||(i=document.createElementNS("http://www.w3.org/2000/svg","g"),this.addOverlay(e,i,n)),t&&i.setAttribute("class",t),i}drawLine(e,t,i,n,r,o,a,l){return a||(a=document.createElementNS("http://www.w3.org/2000/svg","line"),this.addOverlay(e,a,l)),a.setAttribute("x1",t),a.setAttribute("y1",i),a.setAttribute("x2",n),a.setAttribute("y2",r),o&&a.setAttribute("class",o),a}drawCircle(e,t,i,n,r,o,a){return o||(o=document.createElementNS("http://www.w3.org/2000/svg","circle"),this.addOverlay(e,o,a)),o.setAttribute("cx",t),o.setAttribute("cy",i),o.setAttribute("r",n),r&&o.setAttribute("class",r),o}drawRect(e,t,i,n,r,o,a,l){return a||(a=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.addOverlay(e,a,l)),a.setAttribute("x",t),a.setAttribute("y",i),a.setAttribute("width",n),a.setAttribute("height",r),o&&a.setAttribute("class",o),a}drawPath(e,t,i,n,r){return n||(n=document.createElementNS("http://www.w3.org/2000/svg","path"),this.addOverlay(e,n,r)),n.setAttribute("d",t),i&&n.setAttribute("class",i),n}drawText(e,t,i,n,r,o,a){return o||(o=document.createElementNS("http://www.w3.org/2000/svg","text"),this.addOverlay(e,o,a)),o.setAttribute("x",i),o.setAttribute("y",n),o.textContent=t,r&&o.setAttribute("class",r),o}drawHTML(e,t,i,n,r,o,a,l,c){return l||(l=document.createElementNS("http://www.w3.org/2000/svg","foreignObject"),this.addOverlay(e,l,c)),l.setAttribute("x",i),l.setAttribute("y",n),l.setAttribute("width",r),l.setAttribute("height",o),typeof t=="string"?l.innerHTML=t:l.appendChild(t),a&&l.setAttribute("class",a),l}drawTextWithBackground(e,t,i,n,r,o,a,l){if(!a){let c=document.createElementNS("http://www.w3.org/2000/svg","filter");c.setAttribute("x","0"),c.setAttribute("y","0"),c.setAttribute("width","1"),c.setAttribute("height","1"),c.setAttribute("id","solid_"+ ++this._id);let h=document.createElementNS("http://www.w3.org/2000/svg","feFlood");h.setAttribute("flood-color",r),c.appendChild(h);let p=document.createElementNS("http://www.w3.org/2000/svg","feComposite");p.setAttribute("in","SourceGraphic"),p.setAttribute("operator","xor"),c.appendChild(p),this._defs.appendChild(c);let d=document.createElementNS("http://www.w3.org/2000/svg","text");d.setAttribute("filter","url(#solid_"+this._id+")");let u=document.createElementNS("http://www.w3.org/2000/svg","text");this.addOverlay(e,d,l),this.addOverlay(e,u,l),c.setAttribute("overlay-source",e),h.setAttribute("overlay-source",e),a=[c,h,d,u]}return a[2].setAttribute("x",i),a[3].setAttribute("x",i),a[2].setAttribute("y",n),a[3].setAttribute("y",n),a[2].textContent=t,a[3].textContent=t,o&&(a[2].setAttribute("class",o),a[3].setAttribute("class",o)),a}};customElements.define(sn.is,sn);Gt();Z();Me();function Af(s,e){let t=new s.CSSStyleSheet;return t.replaceSync(e),t}kt();Xe();ue();var wx=_x`*{animation-play-state:paused!important}`,on=class extends yx{serviceContainer;instanceServiceContainer;containerBoundingRect;outerRect;clickOverlay;_activeTool;_gridSize=10;get gridSize(){return this._gridSize}set gridSize(e){this._gridSize=e;let t=document.createElement("canvas"),i=t.getContext("2d");t.width=e*2,t.height=e*2;let n=e;for(let o=0;o<t.width;o+=n)for(let a=0;a<t.height;a+=n)i.fillStyle=(o+a)%(n*2)===0?"#e5e5e5":"white",i.fillRect(o,a,n,n);let r=t.toDataURL();this._backgroundImage="url("+r+")",this._canvas.style.backgroundImage!="none"&&(this._canvas.style.backgroundImage=this._backgroundImage)}pasteOffset=10;alignOnGrid=!1;alignOnSnap=!0;snapLines;overlayLayer;rootDesignItem;_currentPasteOffset=this.pasteOffset;_zoomFactor=1;_scaleFactor=1;_canvasOffset={x:0,y:0};_additionalStyle;_backgroundImage;_enableSelectTextNodesOnClick=!1;_moveGroup;_touchGestureHelper;get zoomFactor(){return this._zoomFactor}set zoomFactor(e){this._zoomFactor=e,this._zoomFactorChanged()}get scaleFactor(){return this._scaleFactor}get canvasOffset(){return this._canvasOffset}set canvasOffset(e){this._canvasOffset=e,this._zoomFactorChanged()}get canvasOffsetUnzoomed(){return{x:this._canvasOffset.x*this.zoomFactor,y:this._canvasOffset.y*this.zoomFactor}}set canvasOffsetUnzoomed(e){this.canvasOffset={x:e.x/this.zoomFactor,y:e.y/this.zoomFactor}}_pauseAnimations;get pauseAnimations(){return this._pauseAnimations}set pauseAnimations(e){this._pauseAnimations=e,this.applyAllStyles()}get containerOffset(){return this._useIframe?this._outercanvas2.getBoundingClientRect():{x:0,y:0}}raiseDesignItemsChanged(e,t,i){this.designItemsChanged&&this.designItemsChanged(e,t,i)}designItemsChanged;onZoomFactorChanged=new bx;get canvas(){return this._canvas}get outercanvas2(){return this._outercanvas2}_canvas;_canvasShadowRoot;_canvasContainer;_outercanvas2;_lastHoverDesignItem;_firstConnect;static style=vx`:host{display:block;box-sizing:border-box;width:100%;position:relative;transform:translateZ(0);overflow:hidden;font-family:inherit;font-size:inherit;font-weight:inherit;font-style:inherit;line-height:inherit}*{touch-action:none}#node-projects-designer-canvas-canvasContainer{background:var(--node-projects-web-component-designer-background,border-box fixed 0 0 repeat url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAFXmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjIwIgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjAiCiAgIGV4aWY6Q29sb3JTcGFjZT0iMSIKICAgdGlmZjpJbWFnZVdpZHRoPSIyMCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMjAiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjMwMC8xIgogICB0aWZmOllSZXNvbHV0aW9uPSIzMDAvMSIKICAgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIKICAgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyMi0xMi0wOFQwOToxNTo0OCswMTowMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMi0xMi0wOFQwOToxNTo0OCswMTowMCI+CiAgIDxkYzp0aXRsZT4KICAgIDxyZGY6QWx0PgogICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+QmFja2dyb3VuZGdyaWRfMTBweDwvcmRmOmxpPgogICAgPC9yZGY6QWx0PgogICA8L2RjOnRpdGxlPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJwcm9kdWNlZCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWZmaW5pdHkgRGVzaWduZXIgMS4xMC42IgogICAgICBzdEV2dDp3aGVuPSIyMDIyLTEyLTA4VDA5OjE1OjQ4KzAxOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InIiPz4fvgn+AAABgWlDQ1BzUkdCIElFQzYxOTY2LTIuMQAAKJF1kc8rRFEUxz8GjRhRLCiLl7BCftTExmLkV2ExnvJr8+bNvBk1b+b13kiyVbaKEhu/FvwFbJW1UkRKlrImNug5b2ZqJplzO/d87vfec7r3XPCpSd10KnrATGXs8FhImZtfUPwvBKjCTx/Nmu5YUzOjKiXt854yL952ebVKn/vXaqIxR4eyKuEh3bIzwuPCk6sZy+Md4UY9oUWFz4Q7bbmg8J2nR3L86nE8x98e22p4GHz1wkq8iCNFrCdsU1heTpuZXNHz9/FeEoilZmcktoq34BBmjBAKE4wwTJBeBmUO0iX96ZYVJfJ7svnTpCVXl9liDZtl4iTI0CnqilSPSTREj8lIsub1/29fHaO/L1c9EILKZ9d9bwf/Nvxsue7Xkev+HEP5E1ymCvnpQxj4EH2roLUdQN0GnF8VtMguXGxC06Ol2VpWKhf3GQa8nULtPDTcQPVirmf5fU4eQF2Xr7qGvX3okPN1S790cWfsRnax1QAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAC9JREFUOI1jfPr0KQNuICUlhUeWCY8cQTCqeWRoZvz//z8e6WfPntHK5lHNI0MzAMChCNMTuPcnAAAAAElFTkSuQmCC))}#node-projects-designer-canvas-canvas{image-rendering:pixelated;box-sizing:border-box;width:100%;height:100%;transform-origin:0 0;position:absolute}#node-projects-designer-canvas-canvas.dragFileActive{outline:#00f 4px solid;outline-offset:-4px}node-projects-overlay-layer-view{box-sizing:border-box;width:100%;height:100%;position:absolute;top:0;left:0;pointer-events:none;overflow:visible;user-select:none;-webkit-user-select:none;z-index:999999999999}#node-projects-designer-canvas-canvas *{cursor:pointer;user-select:none;-webkit-user-select:none}#node-projects-designer-canvas-canvas iframe{cursor:pointer;user-select:none;-webkit-user-select:none;border:none;width:100%;height:100%}#node-projects-designer-canvas-clickOverlay{position:absolute;width:100%;height:100%;top:0}#node-projects-designer-canvas-helper-element{height:0;width:0}#node-projects-designer-search-container{position:absolute;display:grid;grid-template-columns:1fr auto auto;align-items:center;justify-content:left;gap:8px;width:auto;right:10px;top:0;background:#f2f2f2;padding:5px 6px;border-bottom-left-radius:5px;border-bottom-right-radius:5px}#node-projects-designer-search-container>#node-projects-designer-search-bar{border:1px solid #000;padding:0;display:grid;grid-template-columns:1fr auto;align-items:center;background-color:#fff;padding:1px 2px}#node-projects-designer-search-container>div>input{height:20px;padding-left:6px;font-size:13px;border:none;outline:0}#node-projects-designer-search-container>div>#node-projects-designer-search-start{height:22px;border:none;background-color:#fff;font-size:13px}#node-projects-designer-search-container>div>#node-projects-designer-search-start:hover{background-color:#d3d3d3;transition:.9s;border-radius:2px}#node-projects-designer-search-container>#node-projects-designer-search-close{position:relative;width:20px;height:20px;border:none;background-color:transparent}#node-projects-designer-search-container>span{font-family:sans-serif;font-size:12px}#node-projects-designer-search-container>#node-projects-designer-search-close::after,#node-projects-designer-search-container>#node-projects-designer-search-close::before{content:"";position:absolute;top:50%;left:50%;width:60%;background-color:#000;height:1px}#node-projects-designer-search-container>#node-projects-designer-search-close::before{transform:translate(-50%,-50%) rotate(45deg)}#node-projects-designer-search-container>#node-projects-designer-search-close::after{transform:translate(-50%,-50%) rotate(-45deg)}`;static template=xx`<div style="display:flex;flex-direction:column;width:100%;height:100%;margin:0!important;padding:0!important;border:none!important"><div style="width:100%;height:100%;margin:0!important;padding:0!important;border:none!important"><div id="node-projects-designer-canvas-outercanvas2" style="width:100%;height:100%;position:relative;margin:0!important;padding:0!important;border:none!important;isolation:isolate!important"><div id="node-projects-designer-canvas-canvasContainer" style="width:100%;height:100%;position:absolute;top:0;left:0;user-select:none;margin:0!important;padding:0!important;border:none!important"><div id="node-projects-designer-canvas-canvas" part="canvas"></div></div></div><div id="node-projects-designer-canvas-clickOverlay" tabindex="0" style="pointer-events:auto;margin:0!important;padding:0!important;border:none!important"></div></div><div id="node-projects-designer-search-container" style="display:none"><div id="node-projects-designer-search-bar"><input id="node-projects-designer-search-input"> <button id="node-projects-designer-search-start">↓</button></div><span id="node-projects-designer-search-result">0 selected</span> <button id="node-projects-designer-search-close"></button></div></div>`;extensionManager;_pointerextensions;_lastCopiedPrimaryItem;_ignoreEvent;_useIframe=!0;_iframe;_window;_resizeObserver;iframes;#e=!1;get readOnly(){return this.#e}set readOnly(e){this.#e=e}constructor(e=!1){super(),this._restoreCachedInititalValues(),Bc(),this._useIframe=e,this._canvas=this._getDomElement("node-projects-designer-canvas-canvas"),this._useIframe?(this._iframe=document.createElement("iframe"),this._iframe.setAttribute("sandbox","allow-same-origin"),this._iframe.setAttribute("scrolling","no"),this.iframes=[this._iframe],this._canvas.appendChild(this._iframe),requestAnimationFrame(()=>{this._window=this._iframe.contentWindow,Bc(this._iframe.contentWindow),this._canvasShadowRoot=this._iframe.contentWindow.document})):(this._window=window,this._canvasShadowRoot=this._canvas.attachShadow({mode:"open"})),this._canvasContainer=this._getDomElement("node-projects-designer-canvas-canvasContainer"),this._outercanvas2=this._getDomElement("node-projects-designer-canvas-outercanvas2"),this.clickOverlay=this._getDomElement("node-projects-designer-canvas-clickOverlay"),this.onKeyDown=this.onKeyDown.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this._onDblClick=this._onDblClick.bind(this),this._pointerEventHandler=this._pointerEventHandler.bind(this),this._pointerEventHandlerCapture=this._pointerEventHandlerCapture.bind(this),this._onWheel=this._onWheel.bind(this),this._getDomElement("node-projects-designer-search-close").onclick=()=>this._searchHideOverlay(),this._getDomElement("node-projects-designer-search-start").onclick=()=>this._searchRun(),this._getDomElement("node-projects-designer-search-container").onkeydown=t=>{t.key==="Enter"&&this._searchRun()},this.clickOverlay.oncontextmenu=t=>t.preventDefault(),this._resizeObserver=new ResizeObserver(()=>{this.extensionManager?.refreshAllAppliedExtentions()}),this._resizeObserver.observe(this)}get designerWidth(){return this._canvasContainer.style.width}set designerWidth(e){this._canvasContainer.style.width=e,this._zoomFactorChanged()}get designerHeight(){return this._canvasContainer.style.height}set designerHeight(e){this._canvasContainer.style.height=e,this._zoomFactorChanged()}get designerPixelSize(){return{width:this._canvasContainer.offsetWidth,height:this._canvasContainer.offsetHeight}}getDesignSurfaceDimensions(){let e={width:null,height:null},t=getComputedStyle(this._canvasContainer);return this._canvasContainer.style.width&&(e.width=parseFloat(t.width)),this._canvasContainer.style.height&&(e.height=parseFloat(t.height)),e}get designerOffsetWidth(){return this._canvasContainer.offsetWidth}get designerOffsetHeight(){return this._canvasContainer.offsetHeight}set additionalStyles(e){this._additionalStyle=e,this.applyAllStyles()}get additionalStyles(){return this._additionalStyle}applyAllStyles(){if(this._window){let e=[];this._additionalStyle&&e.push(...this._additionalStyle),this.instanceServiceContainer.stylesheetService&&e.push(...this.instanceServiceContainer.stylesheetService.getStylesheets().map(t=>Af(this._window,nl.patchStylesheetSelectorForDesigner(t.content)))),this._pauseAnimations&&e.push(wx),this._useIframe?this._iframe.contentWindow.document.adoptedStyleSheets=e:this._canvasShadowRoot.adoptedStyleSheets=e}else requestAnimationFrame(()=>this.applyAllStyles())}ignoreEvent(e){this._ignoreEvent=e}canExecuteCommand(e){let t=this.serviceContainer.modelCommandService;if(t){let i=this.instanceServiceContainer.selectionService.selectedElements,n=t.canExecuteCommand(this,e,i);if(n!==null)return n}return e.type===A.screenshot?!0:e.type===A.undo?this.instanceServiceContainer.undoService.canUndo():e.type===A.redo?this.instanceServiceContainer.undoService.canRedo():e.type===A.setTool?this.serviceContainer.designerTools.has(e.parameter):e.type===A.paste?!0:e.type===A.copy||e.type===A.cut||e.type===A.delete?this.instanceServiceContainer.selectionService.primarySelection!=null&&!this.instanceServiceContainer.selectionService.primarySelection.isRootItem:!1}async executeCommand(e){let t=this.serviceContainer.modelCommandService;if(t){let i=this.instanceServiceContainer.selectionService.selectedElements;if(await t.executeCommand(this,e,i)!=null){this.instanceServiceContainer.selectionService.setSelectedElements(null),this.instanceServiceContainer.selectionService.setSelectedElements(i);return}}switch(e.type){case A.screenshot:{xi.screenshotsEnabled||alert("you need to select current tab in next browser dialog, or screenshots will not work correctly");let a=this.instanceServiceContainer.selectionService.selectedElements;a?.length||(a=[...this.rootDesignItem.children(!0)]);let l=await this.serviceContainer.pngCreatorService.takePng(a,{removeSelection:!0});await Eu(new Blob([new Uint8Array(l)],{type:"image/png"}),"screenshot.png")}break;case A.setTool:this.serviceContainer.globalContext.tool=this.serviceContainer.designerTools.get(e.parameter),this.extensionManager.reapplyAllAppliedExtentions();break;case A.setStrokeColor:this.serviceContainer.globalContext.strokeColor=e.parameter;break;case A.setFillBrush:this.serviceContainer.globalContext.fillBrush=e.parameter;break;case A.setStrokeThickness:this.serviceContainer.globalContext.strokeThickness=e.parameter;break;case A.delete:this.handleDeleteCommand();break;case A.undo:this.instanceServiceContainer.undoService.undo();break;case A.holdUndo:let i=this.instanceServiceContainer.undoService.getUndoEntryNames(20),n=Array.from(i).map((a,l)=>({title:"undo: "+a,action:()=>{for(let c=0;c<=l;c++)this.instanceServiceContainer.undoService.undo()}}));n.length>0&&Pe.show(n,e.event,{mode:"undo"});break;case A.redo:this.instanceServiceContainer.undoService.redo();break;case A.holdRedo:let r=this.instanceServiceContainer.undoService.getRedoEntryNames(20),o=Array.from(r).map((a,l)=>({title:"redo: "+a,action:()=>{for(let c=0;c<=l;c++)this.instanceServiceContainer.undoService.redo()}}));o.length>0&&Pe.show(o,e.event,{mode:"undo"});break;case A.copy:this.handleCopyCommand();break;case A.cut:this.handleCopyCommand(),this.handleDeleteCommand();break;case A.paste:this.handlePasteCommand(e.altKey==!0);break;case A.selectAll:this.handleSelectAll();break}}disableBackgroud(){this._canvasContainer.style.background="var(--node-projects-web-component-designer-screenshot-background, white)"}enableBackground(){this._canvasContainer.style.background=""}zoomToFit(){let t=0,i=0,n=0,r=0;this.canvasOffset={x:0,y:0},this.zoomFactor=1;for(let p of this.rootDesignItem.querySelectorAll("*"))if(p instanceof(p.ownerDocument.defaultView??window).Element){let d=K(p);n=n<d.x?n:d.x,r=r<d.y?r:d.y,t=t>d.x+d.width+10?t:d.x+d.width+10,i=i>d.y+d.height+10?i:d.y+d.height+10}let o=this.getBoundingClientRect();t-=o.x,i-=o.y;let a=o.width/(t/this.zoomFactor),l=o.height/(i/this.zoomFactor),c=this.getDesignSurfaceDimensions();c.width&&(a=o.width/c.width),c.height&&(l=o.height/c.height);let h=a<l?a:l;isNaN(h)||(this.zoomFactor=h)}handleSelectAll(){let e=Array.from(this.rootDesignItem.children(!0)).filter(i=>!i.isEmptyTextNode),t=this.instanceServiceContainer.selectionService.primarySelection;if(t){let i=e.indexOf(t);i>=0&&(e.splice(i,1),e.unshift(t))}this.instanceServiceContainer.selectionService.setSelectedElements(e)}async handleCopyCommand(){this._currentPasteOffset=this.pasteOffset,this._lastCopiedPrimaryItem=this.instanceServiceContainer.selectionService.primarySelection,await this.serviceContainer.copyPasteService.copyItems(this.instanceServiceContainer.selectionService.selectedElements)}async handlePasteCommand(e){let[t,i]=await this.serviceContainer.copyPasteService.getPasteItems(this.serviceContainer,this.instanceServiceContainer),n=this.rootDesignItem.openGroup("Insert"),r=this._lastCopiedPrimaryItem,o=this._currentPasteOffset+this.pasteOffset,a=this.rootDesignItem,l=r?.parent??this.instanceServiceContainer.selectionService.primarySelection;for(;l!=null;){let c=getComputedStyle(l.element),h;if(h=this.serviceContainer.getLastServiceWhere("containerService",p=>p.serviceForContainer(l,c)),h)if(h.canEnter(l,t)){a=l;break}else{l=l.parent;continue}}if(t){let c=this.getNormalizedElementCoordinates(a.element);for(let p=0;p<t.length;p++){let d=t[p],u=i?i[p]:null;this.instanceServiceContainer.undoService.execute(new Se(a,a.childCount,d)),!e&&u&&d.nodeType==D.Element&&(d.setStyle("left",u.x-c.x+this._currentPasteOffset+"px"),d.setStyle("top",u.y-c.y+this._currentPasteOffset+"px"))}let h=this.serviceContainer.intializationService;if(h)for(let p of t)h.init(p);this.instanceServiceContainer.selectionService.setSelectedElements(t)}n.commit(),this.snapLines.clearSnaplines(),this._lastCopiedPrimaryItem=r,this._currentPasteOffset=o}handleDeleteCommand(){let e=this.instanceServiceContainer.selectionService.selectedElements;this.serviceContainer.deletionService.removeItems(e),this.instanceServiceContainer.selectionService.setSelectedElements(null)}initialize(e){this.serviceContainer=e,this.instanceServiceContainer=new al(this);let t=this.serviceContainer.getLastService("undoService");t&&this.instanceServiceContainer.register("undoService",t(this));let i=this.serviceContainer.getLastService("selectionService");i&&(this.instanceServiceContainer.register("selectionService",i(this)),this.instanceServiceContainer.selectionService.onSelectionChanged.on(()=>{this._lastCopiedPrimaryItem=null,this._currentPasteOffset=this.pasteOffset}));let n=this.serviceContainer.getLastService("designItemDocumentPositionService");n&&this.instanceServiceContainer.register("designItemDocumentPositionService",n(this)),this._useIframe?(this.rootDesignItem=O.GetOrCreateDesignItem(this._iframe,this._iframe,this.serviceContainer,this.instanceServiceContainer),requestAnimationFrame(()=>{this.rootDesignItem.updateChildrenFromNodesChildren()})):this.rootDesignItem=O.GetOrCreateDesignItem(this._canvas,this._canvas,this.serviceContainer,this.instanceServiceContainer);let r=this.serviceContainer.getLastService("stylesheetService");if(r){let a=r(this);this.instanceServiceContainer.register("stylesheetService",a),this.instanceServiceContainer.stylesheetService.stylesheetChanged.on(l=>{if(this.instanceServiceContainer.collaborationService?.isApplyingRemoteChanges){this.applyAllStyles();return}if(l.changeSource!="undo"){let c=new rl(this.instanceServiceContainer.stylesheetService,l.name,l.newStyle,l.oldStyle);this.instanceServiceContainer.undoService.execute(c),this.applyAllStyles()}else this.applyAllStyles()}),this.instanceServiceContainer.stylesheetService.stylesheetsChanged.on(()=>{this.applyAllStyles()})}let o=this.serviceContainer.getLastService("collaborationService");if(o){let a=o(this);this.instanceServiceContainer.collaborationService=a,this.instanceServiceContainer.register("collaborationService",a)}if(e.instanceServiceContainerCreatedCallbacks?.length&&e.instanceServiceContainerCreatedCallbacks.forEach(a=>a(this.instanceServiceContainer)),this.extensionManager=new cl(this),this.instanceServiceContainer.collaborationService&&(this.instanceServiceContainer.collaborationService.onPeersChanged.on(a=>{a.source==="remote"&&this.extensionManager.refreshAllAppliedExtentions()}),this.instanceServiceContainer.collaborationService.onCommentsChanged.on(()=>{this.extensionManager.refreshAllAppliedExtentions()})),this.overlayLayer=new sn(e),this.overlayLayer.style.pointerEvents="none",this.overlayLayer.style.setProperty("margin","0","important"),this.overlayLayer.style.setProperty("padding","0","important"),this.overlayLayer.style.setProperty("border","none","important"),this.clickOverlay.appendChild(this.overlayLayer),this.snapLines=new ll(this.overlayLayer),this.snapLines.initialize(this.rootDesignItem),this.serviceContainer.designerPointerExtensions)for(let a of this.serviceContainer.designerPointerExtensions)this._pointerextensions||(this._pointerextensions=[]),this._pointerextensions.push(a.getExtension(this));if(this.children){let a=this.children;if(this.children.length==1&&this.children[0]instanceof HTMLSlotElement&&(a=this.children[0].assignedElements()),a?.length>0){let l=this.serviceContainer.getLastServiceWhere("htmlParserService",c=>c.constructor==Kt);this.addDesignItems(l.createDesignItems(a,this.serviceContainer,this.instanceServiceContainer))}}this.serviceContainer.options.zoomDesignerBackground||requestAnimationFrame(()=>{this._resizeBackgroundGrid()}),this.isConnected&&this.extensionManager.connected()}connectedCallback(){this._firstConnect||(this._firstConnect=!0,this._touchGestureHelper=Za.addTouchEvents(this.clickOverlay),this.clickOverlay.addEventListener(P.PointerDown,this._pointerEventHandler),this.clickOverlay.addEventListener(P.PointerMove,this._pointerEventHandler),this.clickOverlay.addEventListener(P.PointerMove,this._pointerEventHandlerCapture,!0),this.clickOverlay.addEventListener(P.PointerUp,this._pointerEventHandler),this.clickOverlay.addEventListener(P.DragEnter,e=>this._onDragEnter(e)),this.clickOverlay.addEventListener(P.DragLeave,e=>this._onDragLeave(e)),this.clickOverlay.addEventListener(P.DragOver,e=>this._onDragOver(e)),this.clickOverlay.addEventListener(P.Drop,e=>this._onDrop(e)),this.clickOverlay.addEventListener(P.KeyDown,this.onKeyDown),this.clickOverlay.addEventListener(P.KeyUp,this.onKeyUp),this.clickOverlay.addEventListener(P.DblClick,this._onDblClick,!0),this.clickOverlay.addEventListener(P.Wheel,this._onWheel),this.clickOverlay.addEventListener("zoom",e=>{this.zoomFactor=this.zoomFactor+e.detail.diff/10}),this.clickOverlay.addEventListener("pan",e=>{let t={x:this.canvasOffset.x-e.detail.deltaX,y:this.canvasOffset.y-e.detail.deltaY};this.canvasOffset=t})),this.extensionManager&&this.extensionManager.connected()}disconnectedCallback(){this.extensionManager.disconnected()}_zoomFactorChanged(){this._canvasContainer.style.bottom=this._outercanvas2.offsetHeight>=this._canvasContainer.offsetHeight?"0":"",this._canvasContainer.style.right=this._outercanvas2.offsetWidth>=this._canvasContainer.offsetWidth?"0":"",this._updateTransform(),this.fillCalculationrects(),this.onZoomFactorChanged.emit(this._zoomFactor),this.serviceContainer.options.zoomDesignerBackground||this._resizeBackgroundGrid()}_resizeBackgroundGrid(){let n=2e3/this.canvas.getBoundingClientRect().width;this.canvas.style.backgroundSize=n.toString()+"%"}_updateTransform(){if(this._scaleFactor=this._zoomFactor,this._useIframe){let e=this._canvasOffset.x,t=this._canvasOffset.y;this._iframe.contentWindow.scrollTo(e*-1,t*-1),e+=this._iframe.contentWindow.scrollX,t+=this._iframe.contentWindow.scrollY,this._canvasContainer.style.transform="scale("+this._zoomFactor+") translate("+e+"px, "+t+"px)"}else this._canvasContainer.style.transform="scale("+this._zoomFactor+") translate("+(isNaN(this._canvasOffset.x)?"0":this._canvasOffset.x)+"px, "+(isNaN(this._canvasOffset.y)?"0":this._canvasOffset.y)+"px)";this._canvasContainer.style.transformOrigin="0 0",this.overlayLayer.style.transform=this._canvasContainer.style.transform,this.overlayLayer.style.transformOrigin="0 0",this.snapLines.clearSnaplines()}setDesignItems(e){this.instanceServiceContainer.undoService.clearTransactionstackIfNotEmpty();let t=new sl(e,[...this.rootDesignItem.children()]);this.instanceServiceContainer.undoService.execute(t)}_internalSetDesignItems(e){this.fillCalculationrects(),this.extensionManager.removeAllExtensions(),this.overlayLayer.removeAllOverlays(),Bd.removeAllChildnodes(this.overlayLayer);for(let t of[...this.rootDesignItem.children()])this.rootDesignItem._removeChildInternal(t);this.addDesignItems(e),this.lazyTriggerReparseDocumentStylesheets(),this.instanceServiceContainer.onContentChanged.emit([{changeType:"parsed"}]),this.instanceServiceContainer.selectionService._withoutUndoSetSelectedElements(null),setTimeout(()=>this.extensionManager.refreshAllAppliedExtentions(),50)}reparseTimeout;lazyTriggerReparseDocumentStylesheets(){this.reparseTimeout&&clearTimeout(this.reparseTimeout),this.reparseTimeout=setTimeout(async()=>{await this.reparseDocumentStylesheets(),clearTimeout(this.reparseTimeout)},20)}async reparseDocumentStylesheets(){if(this.instanceServiceContainer.stylesheetService){let e=this.rootDesignItem.querySelectorAll("style"),t=1,i=[...e].map(n=>({name:"<style> #"+(n.id?n.id+"("+t+++")":t++),content:O.GetDesignItem(n).content,designItem:O.GetDesignItem(n)}));await this.instanceServiceContainer.stylesheetService.setDocumentStylesheets(i)}}addDesignItems(e){e&&this.rootDesignItem._insertChildsInternal(e);let t=this.serviceContainer.intializationService;if(t)for(let i of e)t.init(i);this.snapLines.clearSnaplines()}_onDragEnter(e){if(this.fillCalculationrects(),e.preventDefault(),e.dataTransfer.types.indexOf(li)>=0){let i=this.serviceContainer.bindableObjectDragDropService;if(i){let n=this.getElementAtPoint({x:e.x,y:e.y});this._lastDdElement!=n&&(i.dragLeave(this,e,this._lastDdElement),i.dragEnter(this,e,n),this._lastDdElement=n)}else this._lastDdElement=null}else{this._lastDdElement=null;let i=this.serviceContainer.dragDropService;i&&i.dragEnter(this,e)}}_onDragLeave(e){this.fillCalculationrects(),e.preventDefault(),this._canvas.classList.remove("dragFileActive");let t=this.serviceContainer.dragDropService;t&&t.dragLeave(this,e)}_lastDdElement=null;_onDragOver(e){if(e.preventDefault(),this.fillCalculationrects(),e.dataTransfer.types.length>0&&e.dataTransfer.types[0]=="Files"){let t=this.serviceContainer.externalDragDropService;if(t){let i=t.dragOver(this,e);e.dataTransfer.dropEffect=i,i!=="none"&&this._canvas.classList.add("dragFileActive")}}else if(e.dataTransfer.types.indexOf(li)>=0){let i=this.serviceContainer.bindableObjectDragDropService;if(i){let n=this.getElementAtPoint({x:e.x,y:e.y});this._lastDdElement!=n&&(i.dragLeave(this,e,this._lastDdElement),i.dragEnter(this,e,n),this._lastDdElement=n);let r=i.dragOver(this,e,n);e.dataTransfer.dropEffect=r}}else{let i=this.serviceContainer.dragDropService;i&&i.dragOver(this,e)}}async _onDrop(e){if(this.serviceContainer.globalContext.tool=this.serviceContainer.designerTools.get(q.Pointer),this._lastDdElement=null,e.preventDefault(),this._canvas.classList.remove("dragFileActive"),this.fillCalculationrects(),e.dataTransfer.files?.length>0){let t=this.serviceContainer.externalDragDropService;t&&t.drop(this,e)}else{let t=e.dataTransfer.getData(li);if(t){let i=JSON.parse(t),n=this.serviceContainer.bindableObjectDragDropService;if(n){let r=this.getElementAtPoint({x:e.x,y:e.y});n.drop(this,e,i,r)}}else{let i=this.serviceContainer.dragDropService;i&&(this.fillCalculationrects(),i.drop(this,e))}}}showDesignItemContextMenu(e,t){let i=[];for(let r of this.serviceContainer.designerContextMenuExtensions)r.shouldProvideContextmenu(t,this,e,"designer")&&i.push(...r.provideContextMenuItems(t,this,e,"designer"));let n=new Pe(i,null);return n.display(t),n}_onDblClick(e){e.preventDefault(),e.target!==this.overlayLayer&&(e.altKey||(this.serviceContainer.globalContext.tool==null||this.serviceContainer.globalContext.tool===this.serviceContainer.designerTools.get(q.Pointer))&&(this.extensionManager.removeExtension(this.instanceServiceContainer.selectionService.primarySelection,I.PrimarySelectionRefreshed),this.extensionManager.applyExtension(this.instanceServiceContainer.selectionService.primarySelection,I.Doubleclick,e)))}_searchShowOverlay(){if(this.serviceContainer.searchService){let e=this._getDomElement("node-projects-designer-search-container");e.style.display="",this._getDomElement("node-projects-designer-search-input").focus()}}_searchHideOverlay(){let e=this._getDomElement("node-projects-designer-search-container");e.style.display="none"}async _searchRun(){let e=this._getDomElement("node-projects-designer-search-input");if(this._getDomElement("node-projects-designer-search-result").innerHTML="0 selected",e.value!=""){let t=await this.serviceContainer.searchService.search(this,e.value);t?.length>0&&(this.instanceServiceContainer.selectionService.setSelectedElements(t.map(i=>i.designItem)),this._getDomElement("node-projects-designer-search-result").innerHTML=t.length.toString()+" selected")}}onKeyUp(e){this._ignoreEvent!==e&&(this.activeTool?.keyboardEventHandler&&(this.activeTool.keyboardEventHandler(this,e,null),e.defaultPrevented)||(this._moveGroup&&(this._moveGroup.commit(),this._moveGroup=null),e.preventDefault()))}onKeyDown(e){if(this._ignoreEvent!==e&&!(this.activeTool?.keyboardEventHandler&&(this.activeTool.keyboardEventHandler(this,e,null),e.defaultPrevented))){if(X(e)&&e.key==="z"&&!e.shiftKey)this.executeCommand({type:A.undo,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(X(e)&&e.key==="z"&&e.shiftKey)this.executeCommand({type:A.redo,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(X(e)&&e.key==="y")this.executeCommand({type:A.redo,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(X(e)&&e.key==="a")this.executeCommand({type:A.selectAll,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(X(e)&&e.key==="c")this.executeCommand({type:A.copy,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(X(e)&&e.key==="v")this.executeCommand({type:A.paste,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(X(e)&&e.key==="x")this.executeCommand({type:A.cut,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if(X(e)&&e.key==="f")this._searchShowOverlay();else{if(!this.instanceServiceContainer.selectionService.primarySelection)return;let i=1;switch(e.shiftKey&&(i=10),e.key){case"Delete":case"Backspace":this.executeCommand({type:A.delete,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});break;case"ArrowDown":case"ArrowUp":case"ArrowLeft":case"ArrowRight":{this._moveGroup||(this._moveGroup=this.rootDesignItem.openGroup("move items"));let n={x:0,y:0};e.key=="ArrowDown"&&(n.y=-i),e.key=="ArrowUp"&&(n.y=i),e.key=="ArrowRight"&&(n.x=-i),e.key=="ArrowLeft"&&(n.x=i);for(let r of me(this.instanceServiceContainer.selectionService.selectedElements)){let o=getComputedStyle(r.parent.element);r.serviceContainer.getLastServiceWhere("containerService",a=>a.serviceForContainer(r.parent,o)).moveElements([r],n,!1)}}break}}e.preventDefault()}}getNormalizedEventCoordinates(e){let t=(e.clientX-this.outerRect.x)/this.zoomFactor,i=this.containerBoundingRect.x-this.outerRect.x,n=(e.clientY-this.outerRect.y)/this.zoomFactor,r=this.containerBoundingRect.y-this.outerRect.y;return{x:t-i/this.zoomFactor,y:n-r/this.zoomFactor}}getViewportCoordinates(e){return{x:e.clientX-this.outerRect.x,y:e.clientY-this.outerRect.y}}getNormalizedTextNodeCoordinates(e,t){let i=document.createRange();i.selectNodeContents(e);let n=i.getBoundingClientRect(),r=this.containerOffset;return{x:r.x+(n.x-this.containerBoundingRect.x)/(t?1:this.scaleFactor),y:r.y+(n.y-this.containerBoundingRect.y)/(t?1:this.scaleFactor),width:n.width/(t?1:this.scaleFactor),height:n.height/(t?1:this.scaleFactor)}}getNormalizedElementCoordinates(e,t){if(e.nodeType==D.TextNode)return this.getNormalizedTextNodeCoordinates(e,t);let i=K(e),n=this.containerOffset;return{x:n.x+(i.x-this.containerBoundingRect.x)/(t?1:this.scaleFactor),y:n.y+(i.y-this.containerBoundingRect.y)/(t?1:this.scaleFactor),width:i.width/(t?1:this.scaleFactor),height:i.height/(t?1:this.scaleFactor)}}getNormalizedElementCoordinatesAndRealSizes(e){let t=this.getNormalizedElementCoordinates(e),i=getComputedStyle(e),n=t.width,r=t.height;return i.boxSizing!="border-box"&&(n=n-(parseFloat(i.borderLeft)+parseFloat(i.paddingLeft)+parseFloat(i.paddingRight)+parseFloat(i.borderRight)),r=r-(parseFloat(i.borderTop)+parseFloat(i.paddingTop)+parseFloat(i.paddingBottom)+parseFloat(i.borderBottom))),{...t,realWidth:n,realHeight:r}}getNormalizedOffsetInElement(e,t){let i=this.getNormalizedEventCoordinates(e),n=this.getNormalizedElementCoordinates(t);return{x:i.x-n.x,y:i.y-n.y}}transformPoint(e){if(this._useIframe){let t=this._canvasContainer.getBoundingClientRect();return{x:e.x-t.x,y:e.y-t.y}}return e}elementsFromPoint(e,t){let i=[],n=this.transformPoint({x:e,y:t}),r=this._canvasShadowRoot.elementsFromPoint(n.x,n.y);for(let o of r)o.getRootNode()===this._canvasShadowRoot&&i.push(o);return i}getElementAtPoint(e,t){let i=this.transformPoint(e),n=this._canvasShadowRoot.elementsFromPoint(i.x,i.y),r=null;for(let o=0;o<n.length;o++){if(r=n[o],t&&t(r)){r=null;continue}if(r.getRootNode()!==this._canvasShadowRoot){r=null;continue}if(!this.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements&&O.GetDesignItem(r).getStyleFromSheetOrLocal("pointer-events")=="none"){r=null;continue}break}return r}getDesignItemById(e){return O.GetDesignItem(this._canvasShadowRoot.getElementById(e))}querySelectorDesignItem(e){return O.GetDesignItem(this._canvasShadowRoot.querySelector(e))}querySelectorAllDesignItems(e){return[...this._canvasShadowRoot.querySelectorAll(e)].map(t=>O.GetDesignItem(t))}_hoverElement;showHoverExtension(e,t){let i=O.GetOrCreateDesignItem(e,e,this.serviceContainer,this.instanceServiceContainer);if(this._lastHoverDesignItem!=i&&(this._lastHoverDesignItem&&this.extensionManager.removeExtension(this._lastHoverDesignItem,I.MouseOver),i&&i!=this.rootDesignItem&&(!e.parentNode||Bd.getHost(e.parentNode)!==this.overlayLayer)&&this.extensionManager.applyExtension(i,I.MouseOver,t),this._lastHoverDesignItem=i),this.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover&&this._hoverElement!==e){let n=this._hoverElement;for(;n&&n!==this._canvas;)n.removeAttribute(ot),n=n.parentElement;if(this._hoverElement=null,e){for(e.nodeType==D.TextNode&&(e=e.parentElement),n=e;n&&n!==this._canvas;)n.setAttribute(ot,""),n=n.parentElement;this._hoverElement=e}}}_onWheel(e){let t=this.getElementAtPoint({x:e.clientX,y:e.clientY});for(;t;){let i=getComputedStyle(t);if(i.overflowY==="scroll"||i.overflowY==="auto"){let n=t;n.scrollBy?n.scrollBy(e.deltaX,e.deltaY):(n.scrollLeft+=e.deltaX,n.scrollTop+=e.deltaY),e.stopPropagation();break}t=t.parentElement}}_pointerEventHandlerCapture(e,t=null){if(this.fillCalculationrects(),this._pointerextensions)for(let i of this._pointerextensions)i.refresh(e)}_pointerEventHandler(e,t=null){if(this._ignoreEvent===e||!this.serviceContainer||this._touchGestureHelper.multitouchEventActive)return;let i;if(t)i=t;else if(i=this.serviceContainer.elementAtPointService.getElementAtPoint(this,{x:e.x,y:e.y}),!i)i=this._canvas;else if(this._enableSelectTextNodesOnClick){let o=this.getNormalizedEventCoordinates(e);for(let a of i.childNodes)if(a.nodeType==D.TextNode){let l=this.getNormalizedElementCoordinates(a);if(l.x<=o.x&&l.x+l.width>=o.x&&l.y<=o.y&&l.y+l.height>=o.y){i=a;break}}}if(this._activeTool){this._activeTool.pointerEventHandler(this,e,i);return}this.clickOverlay.style.cursor=this._canvas.style.cursor;let n=O.GetOrCreateDesignItem(i,i,this.serviceContainer,this.instanceServiceContainer);this.showHoverExtension(n.element,e),i&&Bd.getHost(i.parentNode)===this.overlayLayer&&(i=this.instanceServiceContainer.selectionService.primarySelection?.element??this._canvas);let r=this.serviceContainer.globalContext.tool??this.serviceContainer.designerTools.get(q.Pointer);r.pointerEventHandler(this,e,i),this._canvas.style.cursor=r.cursor}captureActiveTool(e){this._activeTool=e}releaseActiveTool(){this._activeTool=null}get activeTool(){return this.serviceContainer.globalContext.tool}fillCalculationrects(){this.containerBoundingRect=this._canvasContainer.getBoundingClientRect(),this.outerRect=this._outercanvas2.getBoundingClientRect()}removeOverlay(e){this.overlayLayer.removeOverlay(e)}zoomOntoRectangle(e,t){let i={x:e.x<t.x?e.x:t.x,y:e.y<t.y?e.y:t.y,width:Math.abs(e.x-t.x),height:Math.abs(e.y-t.y)},n=this.outerRect.width/i.width,r=this.outerRect.height/i.height,o=n>=r?r:n,a={x:i.width/2+i.x,y:i.height/2+i.y};this.zoomPoint(a,o)}zoomPoint(e,t){this.zoomFactor=t;let i={x:-e.x+this.outerRect.width/this.zoomFactor/2,y:-e.y+this.outerRect.height/this.zoomFactor/2};this.canvasOffset=i}zoomConvertEventToViewPortCoordinates(e){let t=this.containerBoundingRect.x-this.outerRect.x,i=this.containerBoundingRect.y-this.outerRect.y;return{x:(e.x+t/this.zoomFactor)*this.zoomFactor,y:(e.y+i/this.zoomFactor)*this.zoomFactor}}zoomTowardsPoint(e,t){let i=t/this.zoomFactor,n=this.zoomConvertEventToViewPortCoordinates(e),r={x:-(n.x*(i-1)+i*-this.canvasOffsetUnzoomed.x),y:-(n.y*(i-1)+i*-this.canvasOffsetUnzoomed.y)};this.zoomFactor=t,this.canvasOffsetUnzoomed=r}};customElements.define("node-projects-designer-canvas",on);st();Sn();fe();Dt();gt();At();import{BaseCustomWebComponentConstructorAppend as Sx,css as Cx,html as Ex}from"@node-projects/base-custom-webcomponent";var Xn=class extends Sx{static style=Cx`node-projects-designer-tools-buttons{height:100%;width:100%}#toolButtons{scrollbar-width:none;overflow-y:auto;height:100%}#toolButtons::-webkit-scrollbar{display:none}#popup{position:absolute;top:calc(0px + 10px);height:100%;left:calc(24px + 4px + 10px)}`;static template=Ex`<div id="popup"></div><div id="toolButtons"></div>`;_toolButtonsElem;_serviceContainer;_popupContainer;designerView;constructor(){super(),this._toolButtonsElem=this._getDomElement("toolButtons"),this._toolButtonsElem.onwheel=e=>e.stopPropagation(),this._popupContainer=this._getDomElement("popup")}initialize(e,t){this._serviceContainer=e,this.designerView=t;for(let i of this._serviceContainer.designViewToolbarButtons)this._toolButtonsElem.appendChild(i.provideButton(t.designerCanvas));this._serviceContainer.globalContext.onToolChanged.on(i=>{for(let n of this._toolButtonsElem.children)n instanceof we&&n.setActiveTool(i.newValue.name)})}showPopup(e){if(this._popupContainer.children.length)this._popupContainer.innerHTML="";else{let t;typeof e.popup=="string"?t=document.createElement(e.popup):t=new e.popup(this.designerView.designerCanvas),t instanceof be?be.showWindow(t,e):this._popupContainer.appendChild(t)}}setTool(e){this._popupContainer.children.length&&(this._popupContainer.innerHTML=""),this.designerView.designerCanvas.executeCommand({type:A.setTool,parameter:e})}};customElements.define("node-projects-designer-toolbar",Xn);var bi=class extends Dx{_sVert;_sHor;get serviceContainer(){return this._designerCanvas.serviceContainer}set serviceContainer(e){this._designerCanvas.serviceContainer=e}get instanceServiceContainer(){return this._designerCanvas.instanceServiceContainer}set instanceServiceContainer(e){this._designerCanvas.instanceServiceContainer=e}_designerCanvas;get designerCanvas(){return this._designerCanvas}get readOnly(){return this._designerCanvas.readOnly}set readOnly(e){this._designerCanvas.readOnly=e}_zoomInput;_lowertoolbar;_toolbar;static style=Px`:host{display:block;box-sizing:border-box;width:100%;position:relative;transform:translateZ(0);overflow:hidden}*{touch-action:none}#lowertoolbar{height:16px;background:#787f82;display:flex;bottom:0;position:absolute;font-size:12px;width:100%}input{width:40px;height:16px;padding:0;border:0;font-size:12px;text-align:center;margin-right:1px}.toolbar-control{min-width:16px;height:16px;display:block;margin-right:1px;cursor:default;display:flex;justify-content:center;align-items:center}.selected{background-color:#00bfff}.toolbar-control:hover{background-color:rgba(164,206,249,.6)}#outer{user-select:none;display:flex;flex-direction:column;width:100%;height:100%}#canvas{left:24px;width:calc(100% - 24px - 16px);height:calc(100% - 32px)}#tool-bar{width:24px;height:calc(100% - 32px);position:absolute;background-color:#d3d3d3}.zoom-in{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAn9JREFUeNqkU11o01AUTtI06U/6tzHWbnNVS+k67FAG/gwfZEOcCrpNEBwEH2Q+Otqxh+5VEaHYV18UwQd9sk4Q+6CUKogbtSoM10qftJS2iGuT/iRpshvvDZu4DHHggY+TnHu+795zz7m4qqrYxfA6pjerlcHMZvMQQRCL8Hccoh+iBJECAMQEQci3Wk2MxP5iqgqmJUmIB3xkdTRoKgQG6Wr1JxBX1oTQx3UxCdcjMO2ZJiCK4g4y3HUIACV+bsL5dSRAWfwe636z0WBzWEFzn5vku5xyIZGsx2UF5AhEaDYbO8Dz3KLPi1X9B2iTy0pRiDx5/Z2bJgmGwDH8WMhuDxzEf6A8TYDneT3GR4JMzcVQThNlcCtANaM48pICutodxXTkkI1HeVslSPor6B/wWL7B3Z1n2KR3O3h05rkDOkd2eYoSxM025PVrAgAQeoFSuSLI3Q66jpJNRsIWPLvM5JJTTUkGGsqVtgJ5JU3AaLTqBVKZT9xh7yDT2Gh05G4bNQBzGETkBbkMVAxbzdadMJbSBDzCHXgKgKGZQJCp0IP32dnEaKhd6nOZAay7mXk6UUGeIHDDh88NKb0qumjaHiN391/1GjtrJ6ZPSb33H9eJYomuTJ601Qf7SKVYVlqplZblxRvOThrtEaC28qSOPAwncCYSWbzJsrO3XP4br9KZa1fTmcaOSTQYLDFFaeURh/yDfLynp/fCwkI0yrKX79ZqG49sUr2A44a3u+d08/fXVhfAeZ8vcDocjs6z7KV7xeL3JzBcwPZgmoAkScGlpdvzc3NXHuZyXxIwlMX2aJoAfFkvx8aGnRzH5WEpr7cXuerKPwVw1Lb/sV8CDACbf0U37X3NqwAAAABJRU5ErkJggg==)}.zoom-out{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmVJREFUeNqkU01oE0EUnv3Nf0xsS01jEzWUNCUplh7U4kEiVVEQqyBYWDxor5am5JBeFRGCuXpRBA8KHqIHMYISohdTYlQo2kguaghJUNvd/O1udjvr7NKWZHuw4IMHM/v9zHu8t5iiKCAYDAKi/xQ4MHEdbIXFYgUmk2kUx/EouoZRulGWUaYhhHGe5wutVhOQKtk3/RToQ1HgjCjyCb+PrE0GjEW/x1Cr/YFCdoUPffwqpBAeQbRnmoEgCD1i9OoohHLi7EnHt3E/bfb0m/pwDGBeF04P77Mpex1SMZliE5IMV3FV0Gw2erJe56I+L6iNHDQYnRaaVsXb5uh8JGS3+w9hv1SeVkG9Xtd3EB4PDBecVtplpAmHKMMesN2R2Ymg7fer9PfwZgui3sC932X+gV53nGZSXj2Yf36B5oWNNtK5NQMIcT2nXKnyUt8eA6uSUf1YNyhKsFmptmWkK2sGFGXRG6Rzn7jDXo+1sdboSBSJEd0gVABYzrMOpEtrBi7+DqoCAnUn1JTo0IP3+dnkZKhdHnKaIEUSXRPCiA+fG2JmWXAaDPY4uXP+ipfqrBybOSEO3n/M4qWyoXrmuE30DJHWUkVupbMt44u3nJ2k7BGotAqkTjyGNvBiJBK9yTCzt5wjN15ncteuZnKNnk0kCHNcllsFVUN2iY8ODAyeX1yMxRjm8t319bVHNpEtYhjxbseago3t0+YU4Dmfzz+9sBCbZ5hL90qln0/Q5yLYRWgGoigGlpZuz8/NXXm4uvolqY4a7DI0A/RnvZyaGnNwHFdArbzZArla9p8GmDq2/4m/AgwATHQSD48kJDUAAAAASUVORK5CYII=)}.snap-grid{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAblJREFUeNqkUjtLA0EQnntFyKNKJdiFgIlGC5G0FlaaIsYgiKAgKIKdjbV/wM7GImBhI6JFMFWKK3yBimBAhJDuUEgimMSYS0hunbncHRtFjLjw7X7z7ezszM4KjDEQRRG+jnlEgvYAAgLAJpoT1tYdA9gzAAqLuC/DD4N1EZC87v1IYnZ0MBj0k/6Szw/nTs7GO+8f62gWBCuDHTRG+ABxgGScsd3JlYWlJogu9TSjkT41NzM0AEbr5uDocJmxLTv3CCJpgbRkAKcWpq14vP7scVqrVKsbBOKktayS7BL4RzB5uxvAo7++SfV6vYnmBenESaM9/qCESFt4pPUJJzrlLpe/vQ9pTeex8A0EQcggwILJo9EohMPhNVW9ZqFQaJvsWCzWozGuCxJ3gck1TYNGo+Hy+XxQKpXalUoFisUi1Go1RyM/uwtZLsADYkxRlGnMZLXT6QQkSSqglsIV0HY0XddTdgkqV4LD6YPJsgwYzLSJEygQraz70YDvRg9Hh3O8DdptM1uTEwzDMDnvTHVfWfy+D8592W4Jt1wJfXOnC0h8XMw/cbuEHOKZc/iNX9qC2cb/jE8BBgAvhdOb37HVsgAAAABJRU5ErkJggg==)}.snap-guide{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYVJREFUeNqkU7tKA1EQnbs3CnlVqbQNARMjFilS+AnZQhIbW0ER/AA/wlYbhXR2wUKx0iKNYGMKDViEdEIgieBujGvCPpyz7sK6iWLIwJk798zsuXsfIxzHoXksAqcoij+vMbYq7MoszGxaEB3wtODlH3i5E5uojck210RCgq7SJie4MC0TsdO1cim/lMmkwHdarZWni+t16/1jz/FElJBAGc5imLzyakXNG0IuVo+OnwHE4JCzgisG7BJu/I3CQjyRuq1dvWi6vg8gBofcOHgGAZO+AFv88/VNDofDEcd3IBCD43ycfhEowY28Sazfnzh1cKMggWsUQvi4waiqKuVyud16/d7JZrOHxWJxKudMuQV3C81mk3RdX0wmk9Tr9UxN06jb7dJgMPjBwQRUAu/AtWg0SpZl7TDSUso2/1UVNWHOMIwJARzWBhcQwMXu1oJb9Ufbtsk0zYktPLrvgD8E/mWeYoNxxlj2xoZ3qI2/YrePQs10PksjTRPozCog5m3nLwEGABrLzseuHT6IAAAAAElFTkSuQmCC)}.bottom-scroll{width:calc(100% - 16px);position:absolute;bottom:16px;height:16px;box-sizing:border-box;z-index:1}.right-scroll{height:calc(100% - 32px);position:absolute;right:0;top:0;width:16px;box-sizing:border-box;z-index:1}.bottom-right{width:16px;height:16px;bottom:16px;right:0;position:absolute;background:#f0f0f0}`;static template=kx`<div id="outer"><node-projects-plain-scrollbar id="s-hor" value="0.5" class="bottom-scroll"></node-projects-plain-scrollbar><node-projects-plain-scrollbar id="s-vert" value="0.5" orientation="vertical" class="right-scroll"></node-projects-plain-scrollbar><div class="bottom-right"></div><div id="lowertoolbar"><input id="zoomInput" type="text" value="100%"><div title="decrease zoom" id="zoomIncrease" class="toolbar-control zoom-in"></div><div title="increase zoom" id="zoomDecrease" class="toolbar-control zoom-out"></div><div title="reset zoom" id="zoomReset" class="toolbar-control" style="width:16px;height:16px;font-size:14px;display:flex;align-items:center;justify-content:center">1</div><div title="zoom to fit" id="zoomFit" class="toolbar-control" style="width:16px;height:16px;font-size:8px;display:flex;align-items:center;justify-content:center">100%</div><div title="snap to grid" id="alignGrid" class="toolbar-control snap-grid"></div><div title="snap to elements" id="alignSnap" class="toolbar-control snap-guide"></div></div></div>`;constructor(e=!1){super(),this._restoreCachedInititalValues(),this._sVert=this._getDomElement("s-vert"),this._sHor=this._getDomElement("s-hor");let t=this._getDomElement("outer");this._designerCanvas=new on(e),this._designerCanvas.id="canvas",this._designerCanvas.appendChild(document.createElement("slot")),t.insertAdjacentElement("afterbegin",this._designerCanvas),this._toolbar=new Xn,this._toolbar.id="tool-bar",this._sVert.insertAdjacentElement("afterend",this._toolbar),this._designerCanvas.onZoomFactorChanged.on(()=>{this._zoomInput.value=Math.round(this._designerCanvas.zoomFactor*100)+"%";let c=this.designerCanvas.canvasOffset,h=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,p=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight;this._sHor.value=c.x/(-2*h)+.5,this._sVert.value=c.y/(-2*p)+.5}),this._zoomInput=this._getDomElement("zoomInput"),this._zoomInput.onkeydown=c=>{c.key=="Enter"&&(this._designerCanvas.zoomFactor=parseFloat(this._zoomInput.value)/100)},this._zoomInput.onblur=()=>{this._designerCanvas.zoomFactor=parseFloat(this._zoomInput.value)/100},this._zoomInput.onclick=this._zoomInput.select;let i=this._getDomElement("zoomIncrease");i.onclick=()=>{let c=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,h=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight;this._designerCanvas.zoomFactor>.1?this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor+.1):this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor+.01)};let n=this._getDomElement("zoomDecrease");n.onclick=()=>{let c=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,h=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight;this._designerCanvas.zoomFactor>.11?this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor-.1):this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor-.01),this._designerCanvas.zoomFactor<.001&&this._designerCanvas.zoomPoint({x:c/2,y:h/2},.001)};let r=this._getDomElement("zoomReset");r.onclick=()=>{this.zoomReset()};let o=this._getDomElement("zoomFit");o.onclick=()=>{this.zoomToFit()},this.addEventListener(P.Wheel,c=>this._onWheel(c));let a=this._getDomElement("alignSnap");a.onclick=()=>{this._designerCanvas.alignOnSnap=!this._designerCanvas.alignOnSnap,a.style.backgroundColor=this._designerCanvas.alignOnSnap?"deepskyblue":""},a.style.backgroundColor=this._designerCanvas.alignOnSnap?"deepskyblue":"",a.oncontextmenu=c=>{c.preventDefault()};let l=this._getDomElement("alignGrid");l.onclick=()=>{this._designerCanvas.alignOnGrid=!this._designerCanvas.alignOnGrid,l.style.backgroundColor=this._designerCanvas.alignOnGrid?"deepskyblue":""},l.style.backgroundColor=this._designerCanvas.alignOnGrid?"deepskyblue":"",l.oncontextmenu=c=>{c.preventDefault();let h=prompt("raster size",this.designerCanvas.gridSize.toString());if(h){let p=parseInt(h);p>0&&(this.designerCanvas.gridSize=p)}},this._lowertoolbar=this._getDomElement("lowertoolbar"),this._sVert.addEventListener("scrollbar-input",c=>this._onScrollbar(c)),this._sHor.addEventListener("scrollbar-input",c=>this._onScrollbar(c))}zoomReset(){this._designerCanvas.canvasOffset={x:0,y:0},this._designerCanvas.zoomFactor=1,this._sVert.value=.5,this._sHor.value=.5,this._zoomInput.value=Math.round(this._designerCanvas.zoomFactor*100)+"%"}zoomToFit(){this._designerCanvas.zoomToFit()}_onScrollbar(e){e?.detail=="incrementLarge"?e.target.value+=.25:e?.detail=="decrementLarge"?e.target.value-=.25:e?.detail=="incrementSmall"?e.target.value+=.05:e?.detail=="decrementSmall"&&(e.target.value-=.05);let t=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,i=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight,n=t*(this._sHor.value-.5)*-2,r=i*(this._sVert.value-.5)*-2;this.designerCanvas.canvasOffset={x:n,y:r}}_onWheel(e){if(e.preventDefault(),e.ctrlKey){let t=this._designerCanvas.zoomFactor,i=e.deltaY<0?1:-1;t*=Math.exp(i*.2),t<.02&&(t=.02);let n=this.designerCanvas.getNormalizedEventCoordinates(e);this.designerCanvas.zoomTowardsPoint(n,t)}else e.shiftKey?(this._sHor.value+=e.deltaY/1e4,this._onScrollbar(null)):(this._sVert.value+=e.deltaY/1e4,this._onScrollbar(null),this._sHor.value+=e.deltaX/1e4,this._onScrollbar(null))}get designerWidth(){return this._designerCanvas.designerWidth}set designerWidth(e){this._designerCanvas.designerWidth=e}get designerHeight(){return this._designerCanvas.designerHeight}set designerHeight(e){this._designerCanvas.designerHeight=e}set additionalStyles(e){this._designerCanvas.additionalStyles=e}setDesignItems(e){this._designerCanvas.setDesignItems(e)}async executeCommand(e){this._designerCanvas.executeCommand(e)}canExecuteCommand(e){return this._designerCanvas.canExecuteCommand(e)}initialize(e){if(this.serviceContainer=e,this._designerCanvas.initialize(e),e.designViewConfigButtons)for(let t of e.designViewConfigButtons)for(let i of t.provideButtons(this,this._designerCanvas))this._lowertoolbar.appendChild(i);this._toolbar.initialize(this.serviceContainer,this)}getDesignerHTML(){return this._designerCanvas.rootDesignItem.childCount>0?J.ConvertToString(Array.from(this._designerCanvas.rootDesignItem.children()),!0,!0):this.serviceContainer.htmlWriterService.supportsRootItemWrite?J.ConvertToString([this._designerCanvas.rootDesignItem],!0,!0):""}async parseDesignerHTML(e,t=!1){let i=this.serviceContainer.htmlParserService;if(!e)this._designerCanvas.overlayLayer.removeAllOverlays(),Ix.removeAllChildnodes(this._designerCanvas.overlayLayer),this._designerCanvas.rootDesignItem.clearChildren();else{let n=await i.parse(e,this.serviceContainer,this.instanceServiceContainer,!1);t?this._designerCanvas._internalSetDesignItems(n):this._designerCanvas.setDesignItems(n)}}static wrapInDesigner(e,t){let i=new on;i.initialize(t);let n=i.serviceContainer.getLastServiceWhere("htmlParserService",r=>r.constructor==Kt);return i.addDesignItems(n.createDesignItems(e,i.serviceContainer,i.instanceServiceContainer)),i}};customElements.define("node-projects-designer-view",bi);var Hd=class extends bi{constructor(){super()}async ready(){let e=await(await Promise.resolve().then(()=>(Ka(),Xm))).default;this.initialize(e())}};customElements.define("node-projects-default-configured-designer-view",Hd);st();mp();hp();yp();pp();fp();dp();Hp();wd();Rn();At();gh();yh();vh();wh();up();cp();gp();Rs();gt();Et();Up();ih();Jh();ep();tp();kh();dh();Dh();th();Ih();Mh();ph();bd();Sd();lt();ie();rt();le();Nh();Vh();Xc();Kc();hd();pd();ja();Ad();Jp();Dp();Xo();Lh();Oh();vp();_p();Rh();io();qc();Jc();Gp();Wp();Zp();qp();Ye();Fi();wn();wc();Sc();Cc();Ec();Pc();Ic();Ye();var Tf=class{read(e){let i=getComputedStyle(e).clipPath||e.getAttribute("style")?.match(/clip-path\s*:\s*([^;]+)/)?.[1]||"";return this._parse(i)}serialize(e){return[{attribute:"style:clipPath",value:this._serializeGeometry(e)}]}_parse(e){let t=e.trim();return t.startsWith("polygon(")?this._parsePolygon(t):t.startsWith("circle(")?this._parseCircle(t):t.startsWith("ellipse(")?this._parseEllipse(t):t.startsWith("path(")?this._parsePath(t):{segments:[],closed:!1}}_parsePolygon(e){let t=e.slice(8,-1).trim(),i=[],n=t.split(",");for(let r=0;r<n.length;r++){let o=n[r].trim().split(/\s+/);if(o.length>=2){let a=parseFloat(o[0]),l=parseFloat(o[1]);!isNaN(a)&&!isNaN(l)&&i.push({type:r===0?b.Move:b.Line,relative:!1,point:{x:a,y:l}})}}return i.length>0&&i.push({type:b.Close,relative:!1,point:{...i[0].point}}),{segments:i,closed:!0}}_parseCircle(e){let t=e.slice(7,-1).trim(),i=t.indexOf(" at "),n=50,r=50,o=50;if(i>=0){n=parseFloat(t.substring(0,i));let l=t.substring(i+4).trim().split(/\s+/);r=parseFloat(l[0])||50,o=parseFloat(l[1])||50}else n=parseFloat(t)||50;return{segments:[{type:b.Move,relative:!1,point:{x:r,y:o-n}},{type:b.Arc,relative:!1,point:{x:r+n,y:o},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:r,y:o+n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:r-n,y:o},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:r,y:o-n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:b.Close,relative:!1,point:{x:r,y:o-n}}],closed:!0}}_parseEllipse(e){let t=e.slice(8,-1).trim(),i=t.indexOf(" at "),n=50,r=25,o=50,a=50;if(i>=0){let c=t.substring(0,i).trim().split(/\s+/);n=parseFloat(c[0])||50,r=parseFloat(c[1])||25;let h=t.substring(i+4).trim().split(/\s+/);o=parseFloat(h[0])||50,a=parseFloat(h[1])||50}return{segments:[{type:b.Move,relative:!1,point:{x:o,y:a-r}},{type:b.Arc,relative:!1,point:{x:o+n,y:a},arc:{rx:n,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:o,y:a+r},arc:{rx:n,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:o-n,y:a},arc:{rx:n,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:o,y:a-r},arc:{rx:n,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Close,relative:!1,point:{x:o,y:a-r}}],closed:!0}}_parsePath(e){let t=e.match(/path\(\s*["']([^"']+)["']\s*\)/);if(!t)return{segments:[],closed:!1};let i="http://www.w3.org/2000/svg",n=document.createElementNS(i,"svg"),r=document.createElementNS(i,"path");r.setAttribute("d",t[1]),n.appendChild(r),n.style.position="absolute",n.style.width="0",n.style.height="0",n.style.overflow="hidden",document.body.appendChild(n);try{let{SvgPathGeometryReader:o}=(wn(),qd(bc));return new o().read(r)}catch{return{segments:[],closed:!1}}finally{document.body.removeChild(n)}}_serializeGeometry(e){let t=e.segments.filter(r=>r.type!==b.Close);if(t.length===0)return"none";let i=t.filter(r=>r.type===b.Arc);if(i.length>=3&&i[0].arc){let r=t,o=r[0].point,a=r[1].point,l=r[2].point,c=r[3].point,h=(a.x+c.x)/2,p=(o.y+l.y)/2,d=Math.abs(a.x-c.x)/2,u=Math.abs(l.y-o.y)/2;return Math.abs(d-u)<.01?`circle(${d}px at ${h}px ${p}px)`:`ellipse(${d}px ${u}px at ${h}px ${p}px)`}return`polygon(${t.map(r=>`${r.point.x}px ${r.point.y}px`).join(", ")})`}};Ye();var Mf=class{read(e){let i=getComputedStyle(e).shapeOutside||e.getAttribute("style")?.match(/shape-outside\s*:\s*([^;]+)/)?.[1]||"";return this._parse(i)}serialize(e){return[{attribute:"style:shapeOutside",value:this._serializeGeometry(e)}]}_parse(e){let t=e.trim();return t.startsWith("polygon(")?this._parsePolygon(t):t.startsWith("circle(")?this._parseCircle(t):t.startsWith("ellipse(")?this._parseEllipse(t):{segments:[],closed:!1}}_parsePolygon(e){let t=e.slice(8,-1).trim(),i=[],n=t.split(",");for(let r=0;r<n.length;r++){let o=n[r].trim().split(/\s+/);if(o.length>=2){let a=parseFloat(o[0]),l=parseFloat(o[1]);!isNaN(a)&&!isNaN(l)&&i.push({type:r===0?b.Move:b.Line,relative:!1,point:{x:a,y:l}})}}return i.length>0&&i.push({type:b.Close,relative:!1,point:{...i[0].point}}),{segments:i,closed:!0}}_parseCircle(e){let t=e.slice(7,-1).trim(),i=t.indexOf(" at "),n=50,r=50,o=50;if(i>=0){n=parseFloat(t.substring(0,i));let l=t.substring(i+4).trim().split(/\s+/);r=parseFloat(l[0])||50,o=parseFloat(l[1])||50}else n=parseFloat(t)||50;return{segments:[{type:b.Move,relative:!1,point:{x:r,y:o-n}},{type:b.Arc,relative:!1,point:{x:r+n,y:o},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:r,y:o+n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:r-n,y:o},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:r,y:o-n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:b.Close,relative:!1,point:{x:r,y:o-n}}],closed:!0}}_parseEllipse(e){let t=e.slice(8,-1).trim(),i=t.indexOf(" at "),n=50,r=25,o=50,a=50;if(i>=0){let c=t.substring(0,i).trim().split(/\s+/);n=parseFloat(c[0])||50,r=parseFloat(c[1])||25;let h=t.substring(i+4).trim().split(/\s+/);o=parseFloat(h[0])||50,a=parseFloat(h[1])||50}return{segments:[{type:b.Move,relative:!1,point:{x:o,y:a-r}},{type:b.Arc,relative:!1,point:{x:o+n,y:a},arc:{rx:n,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:o,y:a+r},arc:{rx:n,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:o-n,y:a},arc:{rx:n,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:o,y:a-r},arc:{rx:n,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Close,relative:!1,point:{x:o,y:a-r}}],closed:!0}}_serializeGeometry(e){let t=e.segments.filter(r=>r.type!==b.Close);if(t.length===0)return"none";let i=t.filter(r=>r.type===b.Arc);if(i.length>=3&&i[0].arc){let r=t,o=r[0].point,a=r[1].point,l=r[2].point,c=r[3].point,h=(a.x+c.x)/2,p=(o.y+l.y)/2,d=Math.abs(a.x-c.x)/2,u=Math.abs(l.y-o.y)/2;return Math.abs(d-u)<.01?`circle(${d}px at ${h}px ${p}px)`:`ellipse(${d}px ${u}px at ${h}px ${p}px)`}return`polygon(${t.map(r=>`${r.point.x}px ${r.point.y}px`).join(", ")})`}};Ye();var Lf=class{read(e){let i=getComputedStyle(e).offsetPath||e.getAttribute("style")?.match(/offset-path\s*:\s*([^;]+)/)?.[1]||"";return this._parse(i)}serialize(e){return[{attribute:"style:offsetPath",value:this._serializeGeometry(e)}]}_parse(e){let t=e.trim();return t.startsWith("polygon(")?this._parsePolygon(t):t.startsWith("circle(")?this._parseCircle(t):t.startsWith("ellipse(")?this._parseEllipse(t):t.startsWith("path(")?this._parsePath(t):{segments:[],closed:!1}}_parsePolygon(e){let t=e.slice(8,-1).trim(),i=[],n=t.split(",");for(let r=0;r<n.length;r++){let o=n[r].trim().split(/\s+/);if(o.length>=2){let a=parseFloat(o[0]),l=parseFloat(o[1]);!isNaN(a)&&!isNaN(l)&&i.push({type:r===0?b.Move:b.Line,relative:!1,point:{x:a,y:l}})}}return i.length>0&&i.push({type:b.Close,relative:!1,point:{...i[0].point}}),{segments:i,closed:!0}}_parseCircle(e){let t=e.slice(7,-1).trim(),i=t.indexOf(" at "),n=50,r=50,o=50;if(i>=0){n=parseFloat(t.substring(0,i));let l=t.substring(i+4).trim().split(/\s+/);r=parseFloat(l[0])||50,o=parseFloat(l[1])||50}else n=parseFloat(t)||50;return{segments:[{type:b.Move,relative:!1,point:{x:r,y:o-n}},{type:b.Arc,relative:!1,point:{x:r+n,y:o},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:r,y:o+n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:r-n,y:o},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:r,y:o-n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:b.Close,relative:!1,point:{x:r,y:o-n}}],closed:!0}}_parseEllipse(e){let t=e.slice(8,-1).trim(),i=t.indexOf(" at "),n=50,r=25,o=50,a=50;if(i>=0){let c=t.substring(0,i).trim().split(/\s+/);n=parseFloat(c[0])||50,r=parseFloat(c[1])||25;let h=t.substring(i+4).trim().split(/\s+/);o=parseFloat(h[0])||50,a=parseFloat(h[1])||50}return{segments:[{type:b.Move,relative:!1,point:{x:o,y:a-r}},{type:b.Arc,relative:!1,point:{x:o+n,y:a},arc:{rx:n,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:o,y:a+r},arc:{rx:n,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:o-n,y:a},arc:{rx:n,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Arc,relative:!1,point:{x:o,y:a-r},arc:{rx:n,ry:r,rotation:0,largeArc:!1,sweep:!0}},{type:b.Close,relative:!1,point:{x:o,y:a-r}}],closed:!0}}_parsePath(e){let t=e.match(/path\(\s*["']([^"']+)["']\s*\)/);if(!t)return{segments:[],closed:!1};let i="http://www.w3.org/2000/svg",n=document.createElementNS(i,"svg"),r=document.createElementNS(i,"path");r.setAttribute("d",t[1]),n.appendChild(r),n.style.position="absolute",n.style.width="0",n.style.height="0",n.style.overflow="hidden",document.body.appendChild(n);try{let{SvgPathGeometryReader:o}=(wn(),qd(bc));return new o().read(r)}catch{return{segments:[],closed:!1}}finally{document.body.removeChild(n)}}_serializeGeometry(e){let t=e.segments.filter(r=>r.type!==b.Close);if(t.length===0)return"none";let i=t.filter(r=>r.type===b.Arc);if(i.length>=3&&i[0].arc){let r=t,o=r[0].point,a=r[1].point,l=r[2].point,c=r[3].point,h=(a.x+c.x)/2,p=(o.y+l.y)/2,d=Math.abs(a.x-c.x)/2,u=Math.abs(l.y-o.y)/2;return Math.abs(d-u)<.01?`circle(${d}px at ${h}px ${p}px)`:`ellipse(${d}px ${u}px at ${h}px ${p}px)`}return`polygon(${t.map(r=>`${r.point.x}px ${r.point.y}px`).join(", ")})`}};Qc();Zc();Lc();Oc();sh();oh();Xe();Me();kt();le();ks();var hl=class extends F{_skewXLine;_skewYLine;_skewXCircle;_skewYCircle;_skewXReferencePoint={x:0,y:0};_skewYReferencePoint={x:0,y:0};_activeAxis=null;_baseTransform="";_skewX=0;_skewY=0;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!i)return;let n=[i.p1,i.p2,i.p3,i.p4];if(n.some(u=>!Number.isFinite(u.x)||!Number.isFinite(u.y))){this.remove();return}let r=this.designerCanvas.zoomFactor;if(!this._valuesHaveChanges(r,...n.flatMap(u=>[u.x,u.y])))return;let o=Ui(i),a=Be(i.p1,i.p2,o,56/r,{x:0,y:-1}),l=Be(i.p1,i.p2,o,48/r,{x:0,y:-1}),c=Be(i.p1,i.p2,o,38/r,{x:0,y:-1}),h=Be(i.p2,i.p3,o,30/r,{x:1,y:0}),p=Be(i.p2,i.p3,o,22/r,{x:1,y:0}),d=Be(i.p2,i.p3,o,6/r,{x:1,y:0});this._skewXLine=this._drawLine(l.x,l.y,c.x,c.y,"svg-primary-skew-line",this._skewXLine),this._skewYLine=this._drawLine(p.x,p.y,d.x,d.y,"svg-primary-skew-line",this._skewYLine),this._skewXLine.style.strokeWidth=(1/r).toString(),this._skewYLine.style.strokeWidth=(1/r).toString(),this._skewXCircle?this._skewXCircle=this._drawCircle(a.x,a.y,5/r,"svg-primary-skew",this._skewXCircle):(this._skewXCircle=this._drawCircle(a.x,a.y,5/r,"svg-primary-skew",this._skewXCircle),this._skewXCircle.addEventListener("pointerdown",u=>this._handlePointerEvent("x",u)),this._skewXCircle.addEventListener("pointermove",u=>this._handlePointerEvent("x",u)),this._skewXCircle.addEventListener("pointerup",u=>this._handlePointerEvent("x",u))),this._skewXCircle.style.strokeWidth=(1/r).toString(),this._skewXCircle.style.cursor="ew-resize",this._skewYCircle?this._skewYCircle=this._drawCircle(h.x,h.y,5/r,"svg-primary-skew",this._skewYCircle):(this._skewYCircle=this._drawCircle(h.x,h.y,5/r,"svg-primary-skew",this._skewYCircle),this._skewYCircle.addEventListener("pointerdown",u=>this._handlePointerEvent("y",u)),this._skewYCircle.addEventListener("pointermove",u=>this._handlePointerEvent("y",u)),this._skewYCircle.addEventListener("pointerup",u=>this._handlePointerEvent("y",u))),this._skewYCircle.style.strokeWidth=(1/r).toString(),this._skewYCircle.style.cursor="ns-resize",this._skewYCircle.style.fill="#eaf5ff"}_handlePointerEvent(e,t){t.stopPropagation();let i=t.target;switch(t.type){case"pointerdown":i.setPointerCapture(t.pointerId),this._readPersistedTransform(),e==="x"?this._skewXReferencePoint=this._getSkewReferencePoint("x"):this._skewYReferencePoint=this._getSkewReferencePoint("y"),this._activeAxis=e;break;case"pointermove":if(this._activeAxis===e&&t.buttons>0){let n=this._getSkewAngle(e,t);e==="x"?this._skewX=n:this._skewY=n,this._setPreviewTransform()}break;case"pointerup":if(this._activeAxis===e){i.releasePointerCapture(t.pointerId);let n=this._getSkewAngle(e,t);e==="x"?this._skewX=n:this._skewY=n,this._commitTransform(),this._activeAxis=null}break}}_readPersistedTransform(){let{baseTransform:e,skewX:t,skewY:i}=this._parseTransform(this.extendedItem.getStyleFromSheetOrLocal("transform")??"");this._baseTransform=e,this._skewX=t,this._skewY=i}_getSkewReferencePoint(e){let t=this.extendedItem.element,i=Fe(this.extendedItem.element),n=this.designerCanvas.zoomFactor,r=e==="x"?{x:i.width/2,y:-56/n}:{x:i.width+30/n,y:i.height/2},o=t.style.transform;try{t.style.transform=this._buildTransform(this._baseTransform,e==="x"?0:this._skewX,e==="y"?0:this._skewY);let a=t.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!a)return r;let l=Ui(a),c=e==="x"?Be(a.p1,a.p2,l,56/n,{x:0,y:-1}):Be(a.p2,a.p3,l,30/n,{x:1,y:0}),h=t.convertPointFromNode(c,this.designerCanvas.canvas);return!Number.isFinite(h.x)||!Number.isFinite(h.y)?r:{x:h.x,y:h.y}}finally{t.style.transform=o}}_setPreviewTransform(){this.extendedItem.element.style.transform=this._buildTransform(this._baseTransform,this._skewX,this._skewY)}_commitTransform(){let e=this._buildTransform(this._baseTransform,this._skewX,this._skewY);e?this.extendedItem.updateStyleInSheetOrLocal("transform",e):this.extendedItem.hasStyle("transform")?this.extendedItem.removeStyle("transform"):this.extendedItem.updateStyleInSheetOrLocal("transform",null);let t=this.extendedItem.element;this.extendedItem.hasStyle("transform")?t.style.transform=this.extendedItem.getStyle("transform")??"":t.style.transform=""}_getSkewAngle(e,t){let i=this.extendedItem.element;i.style.transform=this._buildTransform(this._baseTransform,e==="x"?0:this._skewX,e==="y"?0:this._skewY);let n=this.designerCanvas.getNormalizedEventCoordinates(t),r=i.convertPointFromNode({x:n.x,y:n.y},this.designerCanvas.canvas),a=getComputedStyle(i).transformOrigin.split(" "),l={x:parseFloat(a[0]),y:parseFloat(a[1])},c=Fe(i),h;if(e==="x"){let p=this._skewXReferencePoint.y-l.y;Math.abs(p)<.5&&(p=-Math.max(c.height/2,1)),h=Math.atan((r.x-l.x)/p)*180/Math.PI}else{let p=this._skewYReferencePoint.x-l.x;Math.abs(p)<.5&&(p=Math.max(c.width/2,1)),h=Math.atan((r.y-l.y)/p)*180/Math.PI}return h=Math.max(-80,Math.min(80,h)),X(t)||(h=Math.round(h/15)*15),parseFloat(V(this.extendedItem,h))}_buildTransform(e,t,i){let n=[];return e?.trim()&&n.push(e.trim()),Math.abs(t)>.001&&n.push(`skewX(${t}deg)`),Math.abs(i)>.001&&n.push(`skewY(${i}deg)`),n.join(" ").trim()}_parseTransform(e){if(!e||e==="none")return{baseTransform:"",skewX:0,skewY:0};let t=0,i=0,n=[];for(let r of this._splitTransformFunctions(e)){let o=r.slice(0,r.indexOf("(")).trim().toLowerCase(),l=r.slice(r.indexOf("(")+1,-1).split(",").map(c=>c.trim());o==="skewx"?t=this._parseAngle(l[0]):o==="skewy"?i=this._parseAngle(l[0]):o==="skew"?(t=this._parseAngle(l[0]),l.length>1&&(i=this._parseAngle(l[1]))):n.push(r)}return{baseTransform:n.join(" ").trim(),skewX:t,skewY:i}}_splitTransformFunctions(e){let t=[],i=-1,n=0;for(let r=0;r<e.length;r++){let o=e[r];o==="("?n++:o===")"?(n--,n===0&&i!==-1&&(t.push(e.slice(i,r+1).trim()),i=-1)):n===0&&i===-1&&o.trim()&&(i=r)}return!t.length&&e.trim()&&t.push(e.trim()),t}_parseAngle(e){if(!e)return 0;let t=parseFloat(e);return isNaN(t)?0:e.endsWith("rad")?t*180/Math.PI:e.endsWith("grad")?t*.9:e.endsWith("turn")?t*360:t}dispose(){this._removeAllOverlays()}};import{css as Ax}from"@node-projects/base-custom-webcomponent";var Of=class{shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new hl(e,t,i)}static style=Ax`.svg-primary-skew{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto}.svg-primary-skew-line{stroke:#3899ec;fill:none;stroke-width:1}`};ah();lh();ch();hh();nh();rh();Yc();Uc();Ip();kp();gd();yd();rd();sd();id();nd();Rp();zp();Zh();Vn();dd();ud();ad();ld();ed();td();Fp();Mp();Tp();qh();si();Qh();_r();cd();Xp();_d();$s();Yh();Dd();od();uh();Fh();xd();Ph();sp();rp();Po();lp();Ch();ap();op();Vp();md();vd();fh();Sh();Mc();var an=class extends Hi{extendedItem;constructor(e,t){super(e,t)}};ie();var pl=class extends an{_lineOffset=5;_lineLength=10;_circle;_line1;_line2;_line3;_line4;refresh(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e);this._circle=this._drawCircle(t.x,t.y,1,"svg-cursor-line",this._circle,M.Foreground),this._line1=this._drawLine(t.x,t.y-this._lineOffset,t.x,t.y-this._lineOffset-this._lineLength,"svg-cursor-line",this._line1,M.Foreground),this._line2=this._drawLine(t.x,t.y+this._lineOffset,t.x,t.y+this._lineOffset+this._lineLength,"svg-cursor-line",this._line2,M.Foreground),this._line3=this._drawLine(t.x-this._lineOffset,t.y,t.x-this._lineOffset-this._lineLength,t.y,"svg-cursor-line",this._line3,M.Foreground),this._line4=this._drawLine(t.x+this._lineOffset,t.y,t.x+this._lineOffset+this._lineLength,t.y,"svg-cursor-line",this._line4,M.Foreground)}dispose(){super._removeAllOverlays()}};import{css as Tx}from"@node-projects/base-custom-webcomponent";var Nf=class{getExtension(e){return new pl(e.extensionManager,e)}style=Tx`.svg-cursor-line{stroke:#000;pointer-events:none}`};ie();var dl=class extends an{_circle;_line1;_line2;_line3;_line4;refresh(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e);this._circle=this._drawCircle(t.x,t.y,1,"svg-cursor-line-dashed",this._circle,M.Foreground),this._line1=this._drawLine(t.x,t.y,t.x,0,"svg-cursor-line-dashed",this._line1,M.Foreground),this._line2=this._drawLine(t.x,t.y,t.x,this.designerCanvas.outerRect.height,"svg-cursor-line-dashed",this._line2,M.Foreground),this._line3=this._drawLine(t.x,t.y,0,t.y,"svg-cursor-line-dashed",this._line3,M.Foreground),this._line4=this._drawLine(t.x,t.y,this.designerCanvas.outerRect.width,t.y,"svg-cursor-line-dashed",this._line4,M.Foreground)}dispose(){super._removeAllOverlays()}};import{css as Mx}from"@node-projects/base-custom-webcomponent";var Vf=class{getExtension(e){return new dl(e.extensionManager,e)}style=Mx`.svg-cursor-line-dashed{stroke:#000;pointer-events:none;stroke-dasharray:4 4}`};import{BaseCustomWebComponentConstructorAppend as Lx,css as Ox,html as Nx}from"@node-projects/base-custom-webcomponent";var Gd=class extends Lx{static style=Ox`:host{overflow:hidden;display:block;width:100%;height:100%;position:relative}#outerDiv{width:100%;height:100%}#innerDiv{transform-origin:top left;height:100%;width:100%;image-rendering:pixelated}#above{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;background:0 0;cursor:pointer}#viewRect{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #000;pointer-events:none}`;static template=Nx`<div id="outerDiv"><div id="innerDiv"></div></div><div id="above"><div id="viewRect"></div></div>`;_innerDiv;_outerDiv;_above;_instanceServiceContainer;_contentChangedHandler;_maxX=0;_maxY=0;_resizeObserver;_innerShadow;_zoomFactorChangedHandler;_viewRect;_minatureScaleX=1;_minatureScaleY=1;_reRenderFlag=!1;_isDragging=!1;_boundMouseMove;_boundMouseUp;constructor(){super(),this._restoreCachedInititalValues(),this._outerDiv=this._getDomElement("outerDiv"),this._innerDiv=this._getDomElement("innerDiv"),this._viewRect=this._getDomElement("viewRect"),this._above=this._getDomElement("above"),this._innerShadow=this._innerDiv.attachShadow({mode:"open"}),this._boundMouseMove=this._onMouseMove.bind(this),this._boundMouseUp=this._onMouseUp.bind(this),this._above.addEventListener("mousedown",e=>this._onMouseDown(e)),this._resizeObserver=new ResizeObserver(()=>{this._reSize()})}ready(){this._resizeObserver.observe(this)}_reSize(){let e=this._outerDiv.getBoundingClientRect();this._minatureScaleX=e.width/this._maxX,this._minatureScaleY=e.height/this._maxY,this._innerDiv.style.scale=this._minatureScaleX+" "+this._minatureScaleY}async _reRender(){if(this._instanceServiceContainer){let e=this._instanceServiceContainer?.designerCanvas;this._innerShadow.adoptedStyleSheets=[...e.rootDesignItem.element.shadowRoot.adoptedStyleSheets];let t=e.designerPixelSize;this._maxX=t.width,this._maxY=t.height;let i=await this._instanceServiceContainer.designerCanvas.serviceContainer.miniatureViewService.provideMiniatureView(e);this._innerShadow.replaceChildren(i),this._reSize(),this._reDrawRect(),this._reRenderFlag=!1}}_reDrawRect(){let e=this._instanceServiceContainer?.designerCanvas,t=e.canvasOffset,i=e.zoomFactor;this._viewRect.style.left=-t.x/this._maxX*100+"%",this._viewRect.style.top=-t.y/this._maxY*100+"%",this._viewRect.style.width=e.clientWidth/i/this._maxX*100+"%",this._viewRect.style.height=e.clientHeight/i/this._maxY*100+"%"}_onMouseDown(e){this._instanceServiceContainer&&(this._isDragging=!0,this._moveCanvasToMousePosition(e),window.addEventListener("mousemove",this._boundMouseMove),window.addEventListener("mouseup",this._boundMouseUp),e.preventDefault())}_onMouseMove(e){this._isDragging&&(this._moveCanvasToMousePosition(e),e.preventDefault())}_onMouseUp(e){this._isDragging=!1,window.removeEventListener("mousemove",this._boundMouseMove),window.removeEventListener("mouseup",this._boundMouseUp)}_moveCanvasToMousePosition(e){let t=this._instanceServiceContainer.designerCanvas,i=t.zoomFactor,n=this._above.getBoundingClientRect(),r=e.clientX-n.left,o=e.clientY-n.top,a=r/n.width*this._maxX,l=o/n.height*this._maxY,c=t.clientWidth/i/2,h=t.clientHeight/i/2;t.canvasOffset={x:-(a-c),y:-(l-h)}}set instanceServiceContainer(e){this._contentChangedHandler?.dispose(),this._zoomFactorChangedHandler?.dispose(),this._instanceServiceContainer=e,this._instanceServiceContainer?(this._zoomFactorChangedHandler=this._instanceServiceContainer.designerCanvas.onZoomFactorChanged.on(()=>{this._reDrawRect()}),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(t=>{this._reRenderFlag===!1&&(this._reRenderFlag=!0,setTimeout(()=>this._reRender(),50))}),this._reRenderFlag===!1&&(this._reRenderFlag=!0,setTimeout(()=>this._reRender(),50))):this._innerShadow.innerHTML=""}};customElements.define("node-projects-web-component-designer-miniature-view",Gd);Z();import{BaseCustomWebComponentConstructorAppend as Vx,css as Rx,html as zx}from"@node-projects/base-custom-webcomponent";var Wd=class extends Vx{static style=Rx`:host{overflow:hidden;display:block;width:100%;height:100%;position:relative;isolation:isolate;background:#f3f4f6;color:#111827;user-select:none;-webkit-user-select:none}#viewport{position:absolute;inset:0;overflow:hidden;cursor:grab;z-index:0;perspective:9000px}#viewport.dragging{cursor:grabbing}#scene{position:absolute;top:50%;left:50%;z-index:0;transform-style:preserve-3d;transform-origin:center center}#content{position:absolute;top:0;left:0;transform-style:preserve-3d;transform-origin:top left;pointer-events:none}#content,#content *{transform-style:preserve-3d}#empty{position:absolute;inset:0;display:none;align-items:center;justify-content:center;color:#4b5563;font:13px sans-serif;pointer-events:none}#controls{position:absolute;left:8px;right:8px;top:8px;z-index:2147483647;display:grid;grid-template-columns:auto minmax(100px,1fr) auto;align-items:center;gap:8px;box-sizing:border-box;padding:7px 9px;background:rgba(255,255,255,.92);border:1px solid rgba(17,24,39,.14);font:12px sans-serif;pointer-events:auto;z-index:1;position:relative}#depthSlider{width:100%;min-width:0}#depthValue{min-width:42px;text-align:right;font-variant-numeric:tabular-nums}`;static template=zx`<div id="controls"><span>Depth</span> <input id="depthSlider" type="range" min="0" max="120" step="1" value="36"> <span id="depthValue">36px</span></div><div id="viewport"><div id="scene"><div id="content"></div></div><div id="empty">No layers</div></div>`;_viewport;_scene;_content;_empty;_depthSlider;_depthValue;_instanceServiceContainer;_contentChangedHandler;_zoomFactorChangedHandler;_resizeObserver;_reRenderFlag=!1;_maxX=0;_maxY=0;_depthSpacing=36;_rotateX=0;_rotateY=0;_translateX=0;_translateY=0;_scale=1;_layerDepthEntries=[];_dragStart;_boundPointerMove;_boundPointerUp;constructor(){super(),this._restoreCachedInititalValues(),this._viewport=this._getDomElement("viewport"),this._scene=this._getDomElement("scene"),this._content=this._getDomElement("content"),this._empty=this._getDomElement("empty"),this._depthSlider=this._getDomElement("depthSlider"),this._depthValue=this._getDomElement("depthValue"),this._boundPointerMove=this._onPointerMove.bind(this),this._boundPointerUp=this._onPointerUp.bind(this),this._depthSlider.addEventListener("input",()=>{this._depthSpacing=Number(this._depthSlider.value),this._depthValue.textContent=this._depthSpacing+"px",this._updateLayerDepths()}),this._viewport.addEventListener("pointerdown",e=>this._onPointerDown(e)),this._viewport.addEventListener("wheel",e=>this._onWheel(e),{passive:!1}),this._viewport.addEventListener("contextmenu",e=>e.preventDefault()),this._resizeObserver=new ResizeObserver(()=>this._fitScene())}ready(){this._resizeObserver.observe(this),this._applySceneTransform()}_scheduleRender(){this._reRenderFlag===!1&&(this._reRenderFlag=!0,setTimeout(()=>this._reRender(),50))}async _reRender(){if(!this._instanceServiceContainer)return;let e=this._instanceServiceContainer.designerCanvas;this._copyAdoptedStyleSheets(e.rootDesignItem);let t=e.designerPixelSize;this._maxX=Math.max(t.width,1),this._maxY=Math.max(t.height,1);let i=this._createLayerTree();this._content.replaceChildren(i.fragment),this._scene.style.width=this._maxX+"px",this._scene.style.height=this._maxY+"px",this._content.style.width=this._maxX+"px",this._content.style.height=this._maxY+"px",this._empty.style.display=i.count?"none":"flex",this._updateLayerDepths(),this._fitScene(),this._reRenderFlag=!1}_copyAdoptedStyleSheets(e){let t=e?.element,i=e?.usableContainer,n=t?.shadowRoot??(i instanceof Document?i:t?.ownerDocument);this.shadowRoot.adoptedStyleSheets=n?.adoptedStyleSheets?[...n.adoptedStyleSheets]:[]}_createLayerTree(){let e=this._instanceServiceContainer.rootDesignItem,t=document.createDocumentFragment(),i=0;this._layerDepthEntries=[];for(let n of e.children()){if(n.nodeType!==D.Element)continue;let r=n.element.cloneNode(!0);t.appendChild(r),i=this._prepareCloneTree(n,r,i)}return{fragment:t,count:i}}_prepareCloneTree(e,t,i){this._prepareCloneElement(t,i),i++;let n=Array.from(e.element.childNodes),r=Array.from(t.childNodes);for(let o of e.children()){if(o.nodeType!==D.Element)continue;let a=n.findIndex(c=>c===o.node),l=r[a];l instanceof Element&&(i=this._prepareCloneTree(o,l,i))}return i}_prepareCloneElement(e,t){(e instanceof HTMLElement||e instanceof SVGElement)&&(e.style.transformStyle="preserve-3d",e.style.willChange="translate",this._layerDepthEntries.push({element:e,depth:t}))}_updateLayerDepths(){if(this._depthValue.textContent=this._depthSpacing+"px",!this._layerDepthEntries.length)return;let e=this._layerDepthEntries.map(a=>a.depth),t=Math.min(...e),i=Math.max(...e),n=Math.max(i-t,1),r=a=>((a-t)/n-.5)*this._depthSpacing*2,o=new Map;for(let a of this._layerDepthEntries)o.set(a.element,a.depth);for(let a of this._layerDepthEntries){let l=a.element.parentElement,c;for(;l&&(c=o.get(l),c===void 0);)l=l.parentElement;let h=c===void 0?0:r(c);a.element.style.translate="0 0 "+(r(a.depth)-h)+"px"}}_fitScene(){let e=this._viewport.getBoundingClientRect();if(!e.width||!e.height||!this._maxX||!this._maxY)return;let t=Math.min(e.width/this._maxX,e.height/this._maxY)*.72;this._scale=Math.min(Math.max(t,.05),4),this._translateX=0,this._translateY=0,this._applySceneTransform()}_applySceneTransform(){this._scene.style.transformStyle="preserve-3d",this._content.style.transformStyle="preserve-3d",this._scene.style.transform="translate(-50%, -50%) translate("+this._translateX+"px, "+this._translateY+"px) scale("+this._scale+") rotateX("+this._rotateX+"deg) rotateY("+this._rotateY+"deg)",this._content.style.transform=""}_onPointerDown(e){e.target===this._depthSlider||e.button!==0&&e.button!==1&&e.button!==2||(this._dragStart={x:e.clientX,y:e.clientY,rotateX:this._rotateX,rotateY:this._rotateY,translateX:this._translateX,translateY:this._translateY,pan:e.button===1||e.button===2||e.shiftKey},this._viewport.classList.add("dragging"),this._viewport.setPointerCapture(e.pointerId),this._viewport.addEventListener("pointermove",this._boundPointerMove),this._viewport.addEventListener("pointerup",this._boundPointerUp),this._viewport.addEventListener("pointercancel",this._boundPointerUp),e.preventDefault())}_onPointerMove(e){if(!this._dragStart)return;let t=e.clientX-this._dragStart.x,i=e.clientY-this._dragStart.y;this._dragStart.pan?(this._translateX=this._dragStart.translateX+t,this._translateY=this._dragStart.translateY+i):(this._rotateY=this._dragStart.rotateY+t*.35,this._rotateX=Math.min(85,Math.max(-85,this._dragStart.rotateX-i*.35))),this._applySceneTransform(),e.preventDefault()}_onPointerUp(e){this._dragStart=null,this._viewport.classList.remove("dragging"),this._viewport.releasePointerCapture(e.pointerId),this._viewport.removeEventListener("pointermove",this._boundPointerMove),this._viewport.removeEventListener("pointerup",this._boundPointerUp),this._viewport.removeEventListener("pointercancel",this._boundPointerUp)}_onWheel(e){let t=e.deltaY<0?1.08:.92;this._scale=Math.min(6,Math.max(.03,this._scale*t)),this._applySceneTransform(),e.preventDefault()}set instanceServiceContainer(e){this._contentChangedHandler?.dispose(),this._zoomFactorChangedHandler?.dispose(),this._instanceServiceContainer=e,this._instanceServiceContainer?(this._zoomFactorChangedHandler=this._instanceServiceContainer.designerCanvas.onZoomFactorChanged.on(()=>{this._scheduleRender()}),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(()=>{this._scheduleRender()}),this._scheduleRender()):(this._content.replaceChildren(),this._layerDepthEntries=[],this._empty.style.display="flex")}};customElements.define("node-projects-web-component-designer-layer-depth-view",Wd);oe();import{BaseCustomWebComponentConstructorAppend as Fx,css as Bx,html as Hx}from"@node-projects/base-custom-webcomponent";function Rf(s){if(!s)return"";let e,t=s.nodeName.toLowerCase();return s.id?e="#"+s.getAttribute("id"):s.getAttribute("class")&&(e="."+s.getAttribute("class").split(" ").join(".")),e?t+e:t}var ul=function(s){if(!s||s.nodeName==="HTML"||s.nodeName==="#document")return{node:document.documentElement,reason:"root"};if(s.nodeName==="#document-fragment")return ul(s.host);let e=s.ownerDocument.defaultView.getComputedStyle(s);if(e.position==="fixed"||e.position==="sticky")return{node:s,reason:`position: ${e.position}`};if(e.zIndex!=="auto"&&e.position!=="static")return{node:s,reason:`position: ${e.position}; z-index: ${e.zIndex}`};if(e.opacity!=="1")return{node:s,reason:`opacity: ${e.opacity}`};if(e.transform!=="none")return{node:s,reason:`transform: ${e.transform}`};if(e.scale!=="none")return{node:s,reason:`scale: ${e.scale}`};if(e.translate!=="none")return{node:s,reason:`translate: ${e.translate}`};if(e.rotate!=="none")return{node:s,reason:`rotate: ${e.rotate}`};if(e.mixBlendMode!=="normal")return{node:s,reason:`mixBlendMode: ${e.mixBlendMode}`};if(e.filter!=="none")return{node:s,reason:`filter: ${e.filter}`};if(e.backdropFilter!=="none")return{node:s,reason:`backdropFilter: ${e.backdropFilter}`};if(e.perspective!=="none")return{node:s,reason:`perspective: ${e.perspective}`};if(e.clipPath!=="none")return{node:s,reason:`clip-path: ${e.clipPath} `};let t=e.mask||e.webkitMask;if(t!=="none"&&t!==void 0)return{node:s,reason:`mask: ${t}`};let i=e.maskImage||e.webkitMaskImage;if(i!=="none"&&i!==void 0)return{node:s,reason:`mask-image: ${i}`};let n=e.maskBorder||e.webkitMaskBorder;if(n!=="none"&&n!==void 0)return{node:s,reason:`mask-border: ${n}`};if(e.isolation==="isolate")return{node:s,reason:`isolation: ${e.isolation}`};if(e.willChange==="transform"||e.willChange==="opacity"||e.willChange==="scale"||e.willChange==="translate"||e.willChange==="rotate")return{node:s,reason:`willChange: ${e.willChange}`};if(e.zIndex!=="auto"){let o=s.ownerDocument.defaultView.getComputedStyle(s.parentNode);if(o.display==="flex"||o.display==="inline-flex")return{node:s,reason:`flex-item; z-index: ${e.zIndex}`};if(o.grid!=="none / none / none / row / auto / auto")return{node:s,reason:`child of grid container; z-index: ${e.zIndex}`}}let r=e.contain;return["layout","paint","strict","content"].indexOf(r)>-1||r.indexOf("paint")>-1||r.indexOf("layout")>-1?{node:s,reason:`contain: ${r}`}:ul(s.parentNode)},jd=class extends Fx{static template=Hx`<div><table><tr><th colspan="2">Styling</th></tr><tr><td>display</td><td>[[?this.computedStyle?.display]]</td></tr><tr><td>position</td><td>[[?this.computedStyle?.position]]</td></tr><tr><td>visibility</td><td>[[?this.computedStyle?.visibility]]</td></tr><tr><td>pointerEvents</td><td>[[?this.computedStyle?.pointerEvents]]</td></tr><tr><td>zIndex</td><td>[[?this.computedStyle?.zIndex]]</td></tr><tr><th colspan="2">Context</th></tr><tr><td>offsetParent</td><td class="lnk" @click="[[this._clickLink(event, 'offsetParent')]]">[[?this.selectedElementOffsetParentText]]</td></tr><tr><td>createsStackingContext</td><td>[[this.createsStackingContext]]</td></tr><tr><td>stackingContextReason</td><td>[[this.createsStackingContextReason]]</td></tr><tr><td>stackingContextParent</td><td class="lnk" @click="[[this._clickLink(event, 'stackingContextParent')]]">[[?this.parentStackingContextText]]</td></tr></table></div>`;static style=Bx`:host{overflow:auto;height:100%;display:block;font-size:12px}table{font-family:Arial,Helvetica,sans-serif;border-collapse:collapse;width:100%}table td,table th{border:1px solid #ddd;padding:2px 4px}table tr:nth-child(even){background-color:#f2f2f2}table tr:hover{background-color:#ddd}table th{text-align:left;background-color:#989898;color:#fff}.lnk{color:#00f}.lnk:hover{text-decoration:underline;cursor:pointer}`;_ready;computedStyle;createsStackingContext="";createsStackingContextReason="";parentStackingContext;parentStackingContextText;selectedElementOffsetParent;selectedElementOffsetParentText;constructor(){super(),this._restoreCachedInititalValues()}ready(){this._parseAttributesToProperties(),this._bindingsParse(),this._ready=!0}_clickLink(e,t){if(t=="offsetParent"){if(this.selectedElementOffsetParent){let i=O.GetDesignItem(this.selectedElementOffsetParent);i.instanceServiceContainer.selectionService.setSelectedElements([i])}}else if(t=="stackingContextParent"&&this.parentStackingContext){let i=O.GetDesignItem(this.parentStackingContext);i.instanceServiceContainer.selectionService.setSelectedElements([i])}}update(e){this._ready&&requestAnimationFrame(()=>{let t=e?.element;if(t?.nodeType==3&&(t=t.parentNode),t&&t.nodeType!=8&&t.nodeType!=11){if(this.computedStyle=t.ownerDocument.defaultView.getComputedStyle(t),this.selectedElementOffsetParent=t.offsetParent,this.selectedElementOffsetParent==e.instanceServiceContainer.designerCanvas.rootDesignItem.element||this.selectedElementOffsetParent==e.instanceServiceContainer.designerCanvas.rootDesignItem.element.parentElement?(this.selectedElementOffsetParentText=null,this.selectedElementOffsetParent=null):this.selectedElementOffsetParentText=Rf(t.offsetParent),t&&t.nodeType===1){let i=ul(t);this.createsStackingContext=t===i.node,this.createsStackingContextReason=this.createsStackingContext?i.reason:"not a stacking context",this.parentStackingContext=i.node,this.createsStackingContext&&t.nodeName!=="HTML"&&(this.parentStackingContext=ul(t.parentNode).node),this.parentStackingContext==e.instanceServiceContainer.designerCanvas.rootDesignItem.element.parentElement||this.parentStackingContext==e.instanceServiceContainer.designerCanvas.rootDesignItem.element.parentElement.parentElement?(this.parentStackingContextText=null,this.parentStackingContext=null):this.parentStackingContextText=Rf(this.parentStackingContext)}}else this.computedStyle={},this.createsStackingContext=!1,this.createsStackingContextReason="",this.createsStackingContext=!1,this.selectedElementOffsetParent=null,this.selectedElementOffsetParentText=null,this.parentStackingContext=null,this.parentStackingContextText=null;this._bindingsRefresh()})}};customElements.define("node-projects-debug-view",jd);import{BaseCustomWebComponentConstructorAppend as Gx,css as Wx,html as jx}from"@node-projects/base-custom-webcomponent";var ml=class extends Gx{static template=jx`<div id="root"><div class="search"><span>search</span> <input style="flex-grow:1;min-width:0" value="{{this.searchText}}"> <span>replace</span> <input style="flex-grow:1;min-width:0" value="{{this.replaceText}}"> <button @click="[[this.replace()]]" style="grid-column:2">replace</button></div><hr><template repeat:item="[[this.refactorings]]"><details open><summary>[[item[1][0].itemType]]-name:<input value="[[item[1][0].name]]" @keydown="[[this._refactor(item, event)]]" style="flex-grow:1;min-width:0"></summary><ul><template repeat:reft="[[item[1]]]"><li>[[reft.type]]/[[reft.display]]</li></template></ul></details></template></div>`;static style=Wx`:host{box-sizing:border-box;font-family:monospace;height:100%;width:100%;position:absolute;overflow:hidden}.search{display:grid;grid-template-columns:40px 1fr;align-items:center}span{font-size:10px}summary{cursor:pointer;font-size:10px;display:flex;align-items:center;white-space:nowrap}ul{margin:4px;padding-left:20px;font-size:10px}#root{padding:5px;display:flex;flex-direction:column;gap:4px;overflow-y:auto;height:calc(100% - 10px)}`;static is="node-projects-refactor-view";static properties={};_instanceServiceContainer;_selectionChangedHandler;_selectedItems;searchText="(.*)";replaceText="$1";refactorings=new Map;ready(){this._bindingsParse()}set instanceServiceContainer(e){this._instanceServiceContainer=e,this._selectionChangedHandler?.dispose(),this._selectionChangedHandler=this._instanceServiceContainer.selectionService.onSelectionChanged.on(t=>{this.selectedItems=t.selectedElements}),this.selectedItems=this._instanceServiceContainer.selectionService.selectedElements}get selectedItems(){return this._selectedItems}set selectedItems(e){this._selectedItems!=e&&(this._selectedItems=e,this.updateRefactorlist(this._selectedItems))}replace(){let e=null;for(let t of this.refactorings){let i=t[1][0].name,n=new RegExp(this.searchText);if(i.match(n)){e||(e=t[1][0].designItem.openGroup("refactor with regex "+this.searchText+" -> "+this.replaceText));let o=i.replace(n,this.replaceText);o!=i&&this.applyRefactoring(t,o)}}e&&e.commit()}_refactor(e,t){let i=t.target;t.key=="Enter"&&this.applyRefactoring(e,i.value)}applyRefactoring(e,t){let i=e[1][0].designItem.openGroup("refactor "+e[1][0].name+" to "+t);for(let n of e[1])n.service.refactor(n,n.name,t);i.commit()}updateRefactorlist(e){if(this.refactorings.clear(),e&&e.length){let t=[],i=e[0].serviceContainer;for(let n of i.refactorServices){let r=n.getRefactorings(e);t.push(...r)}for(let n of t){let r=this.refactorings.get(n.itemType+"|"+n.name);r===void 0&&(r=[],this.refactorings.set(n.itemType+"|"+n.name,r)),r.push(n)}}this._bindingsRefresh()}};customElements.define(ml.is,ml);Rl();he();Et();import{BaseCustomWebComponentLazyAppend as Yx,css as Ux,html as Xx}from"@node-projects/base-custom-webcomponent";var $n=class extends Yx{static style=Ux`:host{display:block;box-sizing:border-box;height:100%;overflow:auto}button{background-color:transparent;color:#fff;border:none;font-size:13px;display:block;cursor:pointer;width:100%;text-align:left;padding:8px 14px}button:hover{background:var(--light-grey,#383f52)}table{width:100%}td{color:#fff;font-size:13px}div{text-transform:uppercase;font-size:12px;font-weight:700;padding:4px 14px}`;static template=Xx`<table id="table"></table>`;_table;constructor(){super(),this._table=this._getDomElement("table")}loadElements(e,t,i){this._table.replaceChildren();for(let n of t){let r=document.createElement("tr"),o=document.createElement("td"),a=document.createElement("button");if(a.setAttribute("part","button"),n.icon&&!n.displayHtml){let c=n.icon;n.icon.startsWith("data:")||(c=i+n.icon),a.innerHTML='<table><tr><td align="left" valign="middle" style="width:20px;"><img style="width:16px;height:16px" src="'+c+'"></td><td align="left" >'+n.tag+`</td></tr></table>
|
|
554
|
-
`}else n.displayHtml?a.innerHTML=n.displayHtml:a.innerText=n.name?n.name:n.tag;a.draggable=!0,a.ondragstart=c=>{if(c.dataTransfer.setData(Ni,JSON.stringify(n)),c.currentTarget.style.outline="dashed",n.ghostElement)if(typeof n.ghostElement=="string"){let h=document.createRange();h.selectNode(document.body);let d=h.createContextualFragment(n.ghostElement).firstChild;d.style.position="absolute",d.style.top="-1000px",document.body.appendChild(d),c.dataTransfer.setDragImage(d,0,0),requestAnimationFrame(()=>document.body.removeChild(d))}else c.dataTransfer.setDragImage(n.ghostElement,0,0);else if(!n.import)try{let h=document.createElement(n.tag);if(n.defaultContent&&(h.innerHTML=n.defaultContent),n.defaultWidth&&(h.style.width=n.defaultWidth),n.defaultHeight&&(h.style.height=n.defaultHeight),n.defaultAttributes)for(let d in n.defaultAttributes)h.setAttribute(d,n.defaultAttributes[d]);if(n.defaultStyles)for(let d in n.defaultStyles)h.style[d]=n.defaultStyles[d];h.style.position="absolute",n.defaultWidth?h.style.top="-"+(parseInt(n.defaultHeight)+500)+"px":h.style.top="-500px",n.defaultWidth?h.style.left="-"+(parseInt(n.defaultWidth)+500)+"px":h.style.left="-500px",document.body.appendChild(h);let p=h.getBoundingClientRect();p.width>0&&p.height>0&&c.dataTransfer.setDragImage(h,0,0),requestAnimationFrame(()=>document.body.removeChild(h))}catch(h){console.warn("error creating gost elment",h)}},a.ondragend=c=>{n.import=null,c.currentTarget.style.outline="none"},a.ontouchstart=c=>{c.preventDefault()},a.onclick=c=>{let h=e.designerTools.get(n.tool??q.DrawElementTool);typeof h=="function"&&(h=new h(n)),e.globalContext.tool=h},o.appendChild(a),r.appendChild(o);let l=document.createElement("td");l.innerText=n.description??"",r.appendChild(l),this._table.appendChild(r)}}};customElements.define("node-projects-palette-elements",$n);import{BaseCustomWebComponentLazyAppend as $x,css as Kx}from"@node-projects/base-custom-webcomponent";var Yd=class extends $x{selected="native";_designerTabControl;static style=Kx`:host{display:flex;flex-direction:column;flex:1;height:100%}`;constructor(){super(),this._restoreCachedInititalValues(),this._designerTabControl=new bt,this._designerTabControl.selectedIndex=0,this.shadowRoot.appendChild(this._designerTabControl)}async loadControls(e,t){this._designerTabControl.innerHTML="";for(let i of t)try{let n=await i.getElements(),r=new $n;r.title=i.name,this._designerTabControl.appendChild(r),r.loadElements(e,n),i.onElementsChanged?.on(async()=>{r.loadElements(e,await i.getElements())})}catch(n){console.warn("Error loading elements",n)}this._designerTabControl.refreshItems()}};customElements.define("node-projects-palette-view",Yd);oe();import{BaseCustomWebComponentLazyAppend as Qx,css as Zx}from"@node-projects/base-custom-webcomponent";var Ud=class extends Qx{_items;_index;_previouslySelected;_treeDiv;_instanceServiceContainer;_selectionChangedHandler;_contentChangedHandler;_mapElementTreeitem;_rootItem;static style=Zx`:host{--horz-margin:20px;--vert-margin:0px;--horz-shift:calc(var(--horz-margin) / 2);--vert-shift:12px;display:inline-block;position:relative;width:100%;height:100%;background:var(--dark-grey,#232733);overflow-y:auto}button{border:none;font-size:13px;display:block;padding:4px 0;cursor:pointer;width:100%;text-align:left;display:inline-block;margin:0;background:var(--dark-grey,#232733);position:relative;color:#fff}button:focus,button:hover{background:var(--light-grey,#383f52)}span{margin:4px}.id{font-style:italic;color:var(--highlight-pink,#e91e63)}.selected{background:var(--light-grey,#383f52);outline:0}li,ul{margin:0;padding:0}.tree ul{margin-left:var(--horz-margin)}.tree li{list-style-type:none;margin-top:var(--vert-margin);margin-bottom:var(--vert-margin);position:relative}.tree li::before{content:"";position:absolute;top:calc(0px - var(--vert-margin));left:calc(var(--horz-shift) - var(--horz-margin));width:calc(var(--horz-margin) - var(--horz-shift));height:calc(var(--vert-shift) + var(--vert-margin));border-left:1px solid #ccc;border-bottom:1px solid #ccc;border-radius:0}.tree li::after{position:absolute;content:"";top:var(--vert-shift);left:calc(var(--horz-shift) - var(--horz-margin));width:calc(var(--horz-margin) - var(--horz-shift));height:calc(100% - var(--vert-shift));border-left:1px solid #ccc;border-top:1px solid #ccc;border-radius:0}ul.tree>li:first-child::before{display:none}.tree li:last-child::after{display:none}ul.tree>li:first-child::after{border-radius:5px 0 0 0}.tree li:last-child:before{border-radius:0 0 0 5px}`;constructor(){super(),this._restoreCachedInititalValues(),this._treeDiv=document.createElement("div"),this._treeDiv.style.userSelect="none",this.shadowRoot.appendChild(this._treeDiv),this._treeDiv.addEventListener("click",this._clickElement.bind(this))}createTree(e){this._rootItem=e,e!=null&&this._recomputeTree(e.element,null)}set instanceServiceContainer(e){this._instanceServiceContainer=e,this._selectionChangedHandler?.dispose(),this._selectionChangedHandler=this._instanceServiceContainer.selectionService.onSelectionChanged.on(t=>{this.selectionChanged(t)}),this._contentChangedHandler?.dispose(),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(t=>{this.createTree(e.designerCanvas.rootDesignItem)}),this.createTree(e.designerCanvas.rootDesignItem)}selectionChanged(e){this._selectTreeElements(e.selectedElements.map(t=>this._mapElementTreeitem.get(t.element)))}_recomputeTree(e,t){this._mapElementTreeitem=new Map,this._treeDiv.innerHTML="";let i=document.createElement("ul");return i.classList.add("tree"),this._treeDiv.appendChild(i),this._index=0,this._items=this._getChildren(e,i),this._highlight(t),this._items}_makeButton(e,t,i){let n=document.createElement("button");n.dataset.index=i;let r=document.createElement("span");r.className="tag",r.textContent=e;let o=document.createElement("span");return o.className="id",o.textContent=t,n.appendChild(r),n.appendChild(o),n}_getChildren(e,t){let i=e.id==="viewContainer",n={tag:i?"main-app":e.tagName.toLowerCase(),id:i?"":e.id?"#"+e.id:"",text:i?"":'"'+e.textContent+'"',ref:e,index:this._index},r=document.createElement("li"),o=this._makeButton(n.tag,n.id,n.index);r.appendChild(o),t.appendChild(r),this._mapElementTreeitem.set(n.ref,o),this._index++;let a=[n],l=null;for(let c=0;c<e.children.length;c++){let h=e.children[c];h.localName!=="style"&&(l==null&&(l=document.createElement("ul"),r.appendChild(l)),a=a.concat(this._getChildren(h,l)))}return a}_clickElement(e){let t=e.target;t.localName==="span"&&(t=t.parentElement),this._selectTreeElements([t]),this._selectDesignerElement(t)}_selectTreeElements(e){if(this._previouslySelected)for(let t of this._previouslySelected)t&&t.classList.remove("selected");if(this._previouslySelected=e,e)for(let t of e)t&&t.classList.add("selected")}_selectDesignerElement(e){let t=e.dataset.index,i=this._items[t].ref,n=O.GetOrCreateDesignItem(i,i,this._rootItem.serviceContainer,this._rootItem.instanceServiceContainer);n.instanceServiceContainer.selectionService.setSelectedElements([n])}_highlight(e){if(!e)return;let t=this.shadowRoot.querySelectorAll("button");if(t.length===this._items.length){for(let i=0;i<this._items.length;i++)if(this._items[i].ref===e){this._selectTreeElements([t[i]]);return}}}};customElements.define("node-projects-tree-view",Ud);zl();import{BaseCustomWebComponentLazyAppend as tb,css as ib,cssFromString as nb,debounce as rb,TypedEvent as Xd}from"@node-projects/base-custom-webcomponent";import{BaseCustomWebComponentConstructorAppend as qx,css as Jx,html as eb}from"@node-projects/base-custom-webcomponent";var Kn=class extends qx{static style=Jx`:host{display:block}#split{position:relative;height:100%;width:100%;grid-template-rows:calc(var(--split) * 1%) 5px calc(((100 - var(--split)) * 1%) - 5px);grid-template-columns:100%;display:grid;align-items:center}:host([orientation=horizontal]) #split{grid-template-rows:100%;grid-template-columns:calc(var(--split) * 1%) 5px calc(((100 - var(--split)) * 1%) - 5px)}#splitter{user-select:none;-webkit-user-select:none}:host([orientation=horizontal])>div>#splitter{cursor:ew-resize;width:5px;height:100%}:host([orientation=vertical])>div>#splitter{cursor:ns-resize;height:5px;width:100%}`;static template=eb`<div id="split" style="--split:50"><slot name="top"></slot><div id="splitter"></div><slot name="bottom"></slot></div>`;static properties={orientation:String};_orientation="vertical";get orientation(){return this._orientation}set orientation(e){this._orientation=e,this.setAttribute("orientation",e)}constructor(){super(),this._restoreCachedInititalValues()}ready(){this._parseAttributesToProperties(),this.setAttribute("orientation",this.orientation);let e=this._getDomElement("split"),t=this._getDomElement("splitter"),i=null;t.addEventListener("pointerdown",n=>{t.setPointerCapture(n.pointerId),i=!0}),t.addEventListener("pointerup",n=>{t.releasePointerCapture(n.pointerId),i=null}),t.addEventListener("pointermove",n=>{if(i!==null){let r=parseFloat(e.style.getPropertyValue("--split"));this.orientation==="horizontal"?r+=n.movementX*100/e.clientWidth:r+=n.movementY*100/e.clientHeight,isNaN(r)||e.style.setProperty("--split",r)}})}};customElements.define("node-projects-simple-split-view",Kn);ze();rt();var U;(function(s){s[s.designer=0]="designer",s[s.code=1]="code",s[s.split=2]="split",s[s.preview=3]="preview"})(U||(U={}));var $d=class extends tb{designerView;codeView;demoView;additionalData;_firstLoad=!0;_stylesheetChangedEventRegistered;_additionalStyle;set additionalStyleString(e){this._additionalStyle=e,this.designerView.additionalStyles=[nb(e)]}get additionalStyleString(){return this._additionalStyle}_additionalStyles;set additionalStyles(e){this._additionalStyles=e,this.designerView.additionalStyles=this._additionalStyles}get additionalStyles(){return this._additionalStyles}_additionalStylesheets;set additionalStylesheets(e){this._additionalStylesheets=e,this.designerView.instanceServiceContainer.stylesheetService&&(this.designerView.instanceServiceContainer.stylesheetService.setStylesheets(e),this._stylesheetChangedEventRegistered||(this._stylesheetChangedEventRegistered=!0,this.designerView.instanceServiceContainer.stylesheetService.stylesheetChanged.on(t=>this.additionalStylesheetChanged.emit({name:t.name,newStyle:t.newStyle,oldStyle:t.oldStyle,changeSource:t.changeSource}))))}get additionalStylesheets(){return this._additionalStylesheets}additionalStylesheetChanged=new Xd;get readOnly(){return this.designerView?.readOnly}set readOnly(e){this.designerView&&(this.designerView.readOnly=e),this.codeView&&(this.codeView.readOnly=e)}onContentChanged=new Xd;onTabChanged=new Xd;_contentChangeSource="designer";_serviceContainer;_content="";_tabControl;_selectionPosition;_lastCodeSelectionKey;_splitDiv;_designerDiv;_codeDiv;refreshInSplitViewDebounced;_disableChangeNotificationDesigner;_disableChangeNotificationEditor;static get style(){return ib`div{height:100%;display:flex;flex-direction:column}node-projects-designer-view{height:100%;overflow:hidden}`}constructor(e,t,i=!1){super(),this.refreshInSplitViewDebounced=rb(this.refreshInSplitView,200),this._serviceContainer=e,t!=null&&(this._content=t);let n=document.createElement("div");this._tabControl=new bt,n.appendChild(this._tabControl),this.designerView=new bi(i),this.designerView.setAttribute("exportparts","canvas"),this.designerView.slot="top",this._designerDiv=document.createElement("div"),this._tabControl.appendChild(this._designerDiv),this._designerDiv.appendChild(this.designerView),this._designerDiv.dataset.title="Designer",this.designerView.initialize(this._serviceContainer),this.designerView.instanceServiceContainer.documentContainer=this,this.designerView.instanceServiceContainer.selectionService.onSelectionChanged.on(r=>this.designerSelectionChanged(r)),this.designerView.instanceServiceContainer.selectionService.onSelectionRefresh.on(r=>this.designerSelectionChanged(r)),this.designerView.instanceServiceContainer.onContentChanged.on(()=>this.designerContentChanged()),this.codeView=new e.config.codeViewWidget,this.codeView.slot="bottom",this.codeView.style.position="relative",this._codeDiv=document.createElement("div"),this._tabControl.appendChild(this._codeDiv),this._codeDiv.style.position="relative",this._codeDiv.appendChild(this.codeView),this._codeDiv.dataset.title="Code",this.codeView.onTextChanged.on(r=>{this._disableChangeNotificationDesigner||(this._tabControl.selectedIndex===U.code||this._tabControl.selectedIndex===U.split)&&(this._disableChangeNotificationEditor=!0,this._content=r,this.refreshInSplitViewDebounced())}),this._splitDiv=new Kn,this._splitDiv.style.height="100%",this._splitDiv.dataset.title="Split",this._tabControl.appendChild(this._splitDiv),e.config.demoViewWidget&&(this.demoView=new e.config.demoViewWidget,this.demoView.dataset.title="Preview",this._tabControl.appendChild(this.demoView)),queueMicrotask(()=>{this.shadowRoot.appendChild(n),this._tabControl.selectedIndex=U.designer})}async refreshInSplitView(){try{await this.updateDesignerHtml()}catch(e){console.error(e)}this._disableChangeNotificationEditor=!1}get currentView(){return this._tabControl.selectedIndex==U.designer?"designer":this._tabControl.selectedIndex==U.split?"split":this._tabControl.selectedIndex==U.code?"code":this._tabControl.selectedIndex==U.preview?"preview":null}set currentView(e){e=="designer"&&(this._tabControl.selectedIndex=U.designer),e=="split"&&(this._tabControl.selectedIndex=U.split),e=="code"&&(this._tabControl.selectedIndex=U.code),e=="preview"&&(this._tabControl.selectedIndex=U.preview)}designerSelectionChanged(e){if(this._tabControl.selectedIndex===U.split){let t=this.instanceServiceContainer.selectionService.primarySelection;t&&this.designerView.instanceServiceContainer.designItemDocumentPositionService&&(this._selectionPosition=this.instanceServiceContainer.selectionService.selectedPart?.textRange??this.designerView.instanceServiceContainer.designItemDocumentPositionService.getPosition(t),this._selectionPosition&&this.setCodeViewSelection(this._selectionPosition),this._selectionPosition=null)}}designerContentChanged(){if(this.onContentChanged.emit({source:this._contentChangeSource}),!this._disableChangeNotificationEditor){if(this._disableChangeNotificationDesigner=!0,this._tabControl.selectedIndex===U.code||this._tabControl.selectedIndex===U.split){let e=this.instanceServiceContainer.selectionService.primarySelection;this._content=this.designerView.getDesignerHTML(),this.codeView.update(this._content,this.designerView.instanceServiceContainer),this._lastCodeSelectionKey=null,e&&this.designerView.instanceServiceContainer.designItemDocumentPositionService&&(this._selectionPosition=this.instanceServiceContainer.selectionService.selectedPart?.textRange??this.designerView.instanceServiceContainer.designItemDocumentPositionService.getPosition(e),this._selectionPosition&&this.setCodeViewSelection(this._selectionPosition),this._selectionPosition=null)}this._disableChangeNotificationDesigner=!1}}dispose(){this.designerView?.instanceServiceContainer?.collaborationService&&(this.designerView.instanceServiceContainer.collaborationService.disconnect(),this.designerView.instanceServiceContainer.collaborationService.detachTransport()),this.codeView.dispose(),this.demoView.dispose()}executeCommand(e){this._tabControl.selectedIndex===U.designer||this._tabControl.selectedIndex===U.split?this.designerView.executeCommand(e):this._tabControl.selectedIndex===U.code?this.codeView.executeCommand(e):this._tabControl.selectedIndex===U.preview&&this.demoView.executeCommand(e)}canExecuteCommand(e){if(this._tabControl.selectedIndex===U.designer||this._tabControl.selectedIndex===U.split){if(this.designerView?.canExecuteCommand)return this.designerView.canExecuteCommand(e)}else if(this._tabControl.selectedIndex===U.code){if(this.codeView?.canExecuteCommand)return this.codeView.canExecuteCommand(e)}else if(this._tabControl.selectedIndex===U.preview&&this.demoView?.canExecuteCommand)return this.demoView.canExecuteCommand(e);return!1}async setContentAsync(e){this._content=e,this._tabControl&&(this._tabControl.selectedIndex===U.designer?await this.updateDesignerHtml():this._tabControl.selectedIndex===U.code?this.codeView.update(this._content,this.designerView.instanceServiceContainer):this._tabControl.selectedIndex===U.split||this._tabControl.selectedIndex===U.preview&&this.demoView.display(this._serviceContainer,this.designerView.instanceServiceContainer,this._content,this.additionalStyleString))}set content(e){this.setContentAsync(e)}get content(){return this._tabControl?(this._tabControl.selectedIndex===U.designer?this._content=this.designerView.getDesignerHTML():this._tabControl.selectedIndex===U.code&&(this._content=this.codeView.getText()),this._content):null}ready(){this._tabControl.onSelectedTabChanged.on(e=>{if(e.oldIndex===U.designer){let t=this.instanceServiceContainer.selectionService.primarySelection;this._content=this.designerView.getDesignerHTML(),this.designerView.instanceServiceContainer.designItemDocumentPositionService&&(this._selectionPosition=this.instanceServiceContainer.selectionService.selectedPart?.textRange??this.designerView.instanceServiceContainer.designItemDocumentPositionService.getPosition(t))}else e.oldIndex===U.code?this._content=this.codeView.getText():e.oldIndex===U.split?(this._designerDiv.appendChild(this.designerView),this._codeDiv.appendChild(this.codeView)):e.oldIndex===U.preview&&this.demoView?.stopDisplay&&this.demoView.stopDisplay();(e.newIndex===U.designer||e.newIndex===U.split)&&this.updateDesignerHtml(),(e.newIndex===U.code||e.newIndex===U.split)&&(this.codeView.update(this._content,this.designerView.instanceServiceContainer),this._lastCodeSelectionKey=null,this._selectionPosition&&(this.setCodeViewSelection(this._selectionPosition),St(20).then(t=>{this._selectionPosition&&this.setCodeViewSelection(this._selectionPosition),this._selectionPosition=null})),e.changedViaClick&&this.codeView.focusEditor()),e.newIndex===U.split&&(this._splitDiv.appendChild(this.designerView),this._splitDiv.appendChild(this.codeView)),e.newIndex===U.preview&&this.demoView.display(this._serviceContainer,this.designerView.instanceServiceContainer,this._content,this.additionalStyleString),this._content&&(this._firstLoad=!1),this.onTabChanged.emit({oldTab:U[e.oldIndex],newTab:U[e.newIndex]})}),this._content&&(this.content=this._content,this._firstLoad=!1)}async updateDesignerHtml(){if(this._firstLoad)return this.designerView.parseDesignerHTML(this._content,this._firstLoad);if(this.designerView.getDesignerHTML()!=this._content){this._contentChangeSource="code",await this.designerView.parseDesignerHTML(this._content,this._firstLoad),this._contentChangeSource="designer";return}else this.instanceServiceContainer.undoService.clearTransactionstackIfNotEmpty(),this.designerView.designerCanvas.overlayLayer.removeAllOverlays(),this.designerView.designerCanvas.extensionManager.reapplyAllAppliedExtentions(null,[I.Permanent,I.Selection,I.PrimarySelection,I.PrimarySelectionContainer,I.OnlyOneItemSelected,I.MultipleItemsSelected])}setCodeViewSelection(e){if(!e)return;let t=`${e.start}:${e.length}`;this._lastCodeSelectionKey!==t&&(this._lastCodeSelectionKey=t,this.codeView.setSelection(e))}get instanceServiceContainer(){return this.designerView.instanceServiceContainer}};customElements.define("node-projects-document-container",$d);fe();eh();Dt();he();Ka();export{el as AbsolutePlacementService,Jt as AbstractBaseToolPopup,Qi as AbstractCssPropertiesService,tt as AbstractDesignViewConfigButton,an as AbstractDesignerPointerExtension,F as AbstractExtension,wo as AbstractHtmlWriterService,dt as AbstractPolymerLikePropertiesService,te as AbstractPropertiesService,nl as AbstractStylesheetService,Da as AlignItemsContextMenu,qs as AltToEnterContainerExtension,Js as AltToEnterContainerExtensionProvider,qm as AlwaysAbsolutePlacementService,Zi as ApplyFirstMachingExtensionProvider,Ro as AttachedPropertiesService,gn as AttributeAndPropertyChangeAction,mn as AttributeChangeAction,Ki as AttributesPropertiesService,Hr as BaseCustomWebComponentPropertiesService,Qm as BaseCustomWebcomponentBindingsService,nf as BaseCustomWebcomponentDesignItemService,ae as BasePropertyEditor,ki as BaseServiceContainer,Wa as BasicContextMenu,$e as BasicStackedToolbarExtension,Aa as BasicWebcomponentPropertiesService,Km as BindableObjectType,Yn as BindingMode,R as BindingTarget,df as BindingsRefactorService,xa as BlockToolbarExtension,ba as BlockToolbarExtensionProvider,Ar as BooleanPropertyEditor,Mn as BorderRadiusEditorWindow,Dn as BoxShadowEditorWindow,Mt as ButtonSeperatorProvider,Qo as ChangeGroup,_i as ChildContextMenu,Na as ChildrenContextMenu,un as CodeViewSimple,Cl as ColorEditor,El as ColorInput,Er as ColorPropertyEditor,A as CommandType,et as CommonPropertiesService,Lt as ConditionExtensionProvider,tl as ContentAndIdPropertiesService,Pe as ContextMenu,ef as CopyPasteAsJsonService,Ns as CopyPasteContextMenu,mo as CopyPasteService,mr as CssAttributeParser,Tf as CssClipPathGeometryReader,$i as CssCombiner,yi as CssCurrentPropertiesService,vi as CssCustomPropertiesService,ur as CssEntry,Lf as CssOffsetPathGeometryReader,He as CssPropertiesService,Fr as CssPropertyEditor,Mf as CssShapeOutsideGeometryReader,Ti as CssStyleChangeAction,pl as CursorLinePointerExtension,Nf as CursorLinePointerExtensionProvider,Pr as DatePropertyEditor,jd as DebugView,Hd as DefaultConfiguredDesignerView,Ua as DefaultEditorTypeService,Kt as DefaultHtmlParserService,Cr as DefaultInstanceService,fo as DefaultModelCommandService,mt as DefaultPlacementService,Br as DefaultPropertyEditorTypesService,Ra as DeleteAction,za as DeletionService,pn as DemoView,O as DesignItem,na as DesignItemDocumentPositionService,en as DesignItemService,on as DesignerCanvas,bt as DesignerTabControl,Xn as DesignerToolbar,we as DesignerToolbarButton,bi as DesignerView,go as DisplayGridExtension,gi as DisplayGridExtensionProvider,Ha as DisplayMediaPngWriterService,$d as DocumentContainer,J as DomConverter,aa as DragDropService,be as DraggableToolWindow,ca as DrawElementTool,_o as DrawEllipsisTool,xo as DrawLineTool,Ss as DrawPathTool,vo as DrawRectTool,Lo as DrawToolButtonProvider,Fn as DrawToolPopup,ta as EditGridColumnRowSizesExtension,ia as EditGridColumnRowSizesExtensionProvider,Xi as EditTextExtension,co as EditTextExtensionProvider,Jm as ElectronPngWriterService,so as ElementAtPointService,We as ElementDisplayType,ts as ElementDragTitleExtension,is as ElementDragTitleExtensionProvider,P as EventNames,Ne as EventsService,cl as ExtensionManager,I as ExtensionType,lo as ExternalDragDropService,oo as FlexBoxPlacementService,va as FlexToolbarExtension,_a as FlexToolbarExtensionProvider,Uo as FlexboxExtension,$o as FlexboxExtensionDesignViewConfigButtons,Gn as FlexboxExtensionProvider,La as ForceCssContextMenu,of as FormatingHtmlWriterService,Tn as GradientEditorWindow,Vo as GrayOutDragOverContainerExtension,Hn as GrayOutDragOverContainerExtensionProvider,Qs as GrayOutExtension,Zs as GrayOutExtensionProvider,zo as GridAssignedRowColumnPropertyEditor,Ia as GridChildResizeExtension,ka as GridChildResizeExtensionProvider,wa as GridChildToolbarExtension,Sa as GridChildToolbarExtensionProvider,yo as GridExtensionDesignViewConfigButtons,ro as GridPlacementService,ga as GridToolbarExtension,ya as GridToolbarExtensionProvider,_s as HighlightElementExtension,xs as HighlightElementExtensionProvider,So as HtmlWriterService,tf as IframeDemoProviderService,Tr as ImageButtonListPropertyEditor,Mi as IndentedTextWriter,Se as InsertAction,Ht as InsertChildAction,al as InstanceServiceContainer,eo as InvisibleElementExtension,Ko as InvisibleElementExtensionDesignViewConfigButtons,to as InvisibleElementExtensionProvider,no as ItemsBelowContextMenu,rf as JsonFileElementsService,Ir as JsonPropertyEditor,cf as JsonPropertyPopupEditor,ea as JumpToElementContextMenu,Wd as LayerDepthView,dl as LinePointerExtension,Vf as LinePointerExtensionProvider,hf as ListPropertiesService,es as Lit2PropertiesService,hr as LitElementPropertiesService,Us as MagicWandSelectorTool,ds as MarginExtension,gs as MarginExtensionProvider,qi as MarginTool,pa as MathMLElementsPropertiesService,cn as MetricsEditor,Fo as MetricsPropertyEditor,Gd as MiniatureView,Fa as MiniatureViewService,lf as MultiplayerService,Ys as MultipleItemsSelectedContextMenu,sa as MultipleSelectionRectExtension,oa as MultipleSelectionRectExtensionProvider,q as NamedTools,pr as NativeElementsPropertiesService,D as NodeType,$m as NpmPackageLoader,kr as NumberPropertyEditor,hn as NumericStyleInput,Qa as ObservedCustomElementsRegistry,Oa as OptionsContextMenuButton,M as OverlayLayer,sn as OverlayLayerView,Ea as PaddingExtension,Pa as PaddingExtensionProvider,Ji as PaddingTool,$n as PaletteElements,Yd as PaletteView,Os as PanTool,Vs as PasteFormatContextMenu,Eo as PathContextMenu,Xs as PickColorTool,jo as PlacementExtension,Yo as PlacementExtensionProvider,Vl as PlainScrollbar,Ce as PointerActionType,bs as PointerTool,To as PointerToolButtonProvider,zn as PointerToolPopup,cr as PolymerPropertiesService,ys as PositionExtension,vs as PositionExtensionProvider,qa as PreDefinedElementsService,Ta as PreviousElementSelectExtension,Ma as PreviousElementSelectExtensionProvider,tn as ProjectiveTransformExtension,Ya as ProjectiveTransformExtensionProvider,z as PropertiesHelper,br as PropertyChangeAction,zd as PropertyGrid,Ke as PropertyGridPropertyList,Fd as PropertyGridWithHeader,Wo as PropertyGroupsService,_ as PropertyType,Co as RectContextMenu,Ln as RectangleSelectorTool,ml as RefactorView,Y as RefreshMode,Ps as ResizeExtension,Is as ResizeExtensionProvider,Ds as RotateExtension,As as RotateExtensionProvider,Ts as RotateGroupExtension,Ms as RotateGroupExtensionProvider,Do as RotateLeftAndRight,ha as RoundPixelsDesignViewConfigButton,dr as SVGElementsPropertiesService,xi as Screenshot,Ga as SearchService,b as SegmentType,Ao as SelectAllChildrenContextMenu,yn as SelectPropertyEditor,Cs as SelectionDefaultExtension,Es as SelectionDefaultExtensionProvider,Jo as SelectionService,Bn as SelectionToolPopup,No as SelectorToolButtonProvider,De as SeperatorContextMenu,yt as SeperatorToolProvider,sr as ServiceContainer,sl as SetDesignItemsAction,la as SimpleDemoProviderService,jn as SimpleToolButtonProvider,hl as SkewExtension,Of as SkewExtensionProvider,ao as SnaplinesProviderService,$a as StyleElementRenderedDesignItemService,rl as StylesheetChangedAction,yr as StylesheetServiceDesignViewConfigButtons,Xr as SvgCircleGeometryReader,Ur as SvgEllipseGeometryReader,Yr as SvgLineGeometryReader,bn as SvgPathGeometryReader,da as SvgPathSourceMapProvider,$r as SvgPolygonGeometryReader,Kr as SvgPolylineGeometryReader,jr as SvgRectGeometryReader,xr as TextContentChangeAction,Dr as TextPropertyEditor,uf as TextRefactorService,An as TextShadowEditorWindow,Ks as TextTool,Oo as TextToolButtonProvider,Lr as ThicknessPropertyEditor,Ws as ToolWindowsContextMenu,Ca as ToolbarExtensionsDesignViewConfigButtons,Za as TouchGestureHelper,hs as TransformOriginExtension,ps as TransformOriginExtensionProvider,ra as TransformToolButtonProvider,fi as TransformToolPopup,Ud as TreeView,Zo as UndoService,ma as UnifiedGeometryExtension,fa as UnifiedGeometryExtensionProvider,zr as UnitPropertyEditor,pf as UnkownElementsPropertiesService,W as ValueType,Ja as WebcomponentManifestElementsService,sf as WebcomponentManifestEventsService,af as WebcomponentManifestParserService,nn as WebcomponentManifestPropertiesService,js as ZMoveContextMenu,ko as ZoomToElementContextMenu,Ls as ZoomTool,Mo as ZoomToolButtonProvider,je as appendCssImportant,Bw as arraysEqual,E as assetsPath,_t as basicStackedToolbarExtensionOverlayOptionName,Gu as calculateAlpha,zi as calculateNormLegth,ri as calculateOuterRect,Rd as calculateSpecificity,Ii as combineNumericStyleInputValue,vI as copyTextToClipboard,On as copyToClipboard,Um as createDefaultServiceContainer,gm as createOverlayPathDataFromSvgGeometryElement,P1 as createPasteFormatSnapshot,km as createPasteFormatSnapshotFromEntries,hi as createPathD,Qp as createSvgPathHandleSourcePartKey,zw as dataURItoBlob,Pu as deepValue,li as dragDropFormatNameBindingObject,Ni as dragDropFormatNameElementDefinition,lc as dragDropFormatNamePropertyGrid,vr as enableStylesheetService,Eu as exportData,me as filterChildPlaceItems,Dc as filterNonElementItems,Ap as flexboxExtensionShowOverlayOptionName,Wt as forceActiveAttributeName,Yt as forceFocusAttributeName,Xt as forceFocusVisibleAttributeName,Ut as forceFocusWithinAttributeName,ot as forceHoverAttributeName,jt as forceVisitedAttributeName,Jn as formatNumericStyleInputNumber,fm as fromOverlayPointToSvgUserSpace,Hb as getActiveElement,K as getBoundingClientRectAlsoForDisplayContents,Q_ as getCollaborationNodeIndex,eR as getCollaborationNodeIndexes,bu as getContentBoxContentOffsets,W0 as getCustomGeometryReader,tR as getDesignItemByCollaborationNodeIndex,Zr as getDesignItemCurrentPos,Pm as getEdgeMidpoint,Be as getEdgeOffsetPoint,xu as getElementDisplaytype,Gb as getElementOffsetsInContainer,lr as getElementZoomFactor,po as getFromClipboard,$t as getGeometryReader,fv as getOutwardNormal,Dm as getPasteFormatEntries,Ui as getQuadCenter,ho as getTextFromClipboard,Nn as gridExtensionShowOverlayOptionName,X as hasCommandKey,Li as hideAtDesignTimeAttributeName,Oi as hideAtRunTimeAttributeName,Su as htmlAsString,Bb as inDesigner,_u as instanceOf,Bl as instanceOfAny,Wu as interpolateLinePoints,zh as invisibleElementExtensionShowOverlayOptionName,Cu as isAppleDevice,ar as isEmptyTextNode,wr as isFirefox,Ft as isInline,ni as isInlineAfter,Xy as isSupportedSvgGeometryElement,mm as isVisualSvgElement,ai as lockAtDesignTimeAttributeName,ju as moveSVGPath,or as newElementFromString,Yi as normalizeToAbsolutePosition,Pi as parseNumericStyleInputValue,Wm as parseSvgPathDataSourceMap,E1 as pasteFormatKinds,qr as placeDesignItem,Fw as pointInRect,Nm as positionsJsonMime,c_ as provideSnaplinesWithDistance,h_ as provideSnaplinesWithDistanceDistance,G0 as registerGeometryReader,Ie as removeLeading,oi as removeTrailing,fn as requestAnimationFramePromise,V as roundValue,Ql as setDeepValue,Ah as shadowrootGetSelection,wN as showPopup,St as sleep,Bt as splitCssImportant,Ct as straightenLine,ZC as svg,ui as svgAsString,Mm as switchContainer,Pn as toOverlayPointFromSvgUserSpace,Jr as transformOffsetByInverseLinearMatrix,Qn as w3color,Om as wrapSelectionInSpans};
|
|
552
|
+
`}),n.addEventListener("toggle",()=>{n.matches(":popover-open")||(n.remove(),t?.())},{once:!0}),n.showPopover({source:e}),()=>{n.matches(":popover-open")&&n.hidePopover(),n.remove(),t?.()}}ja();qt();yo();var tl=class r{static addTouchEvents(e){return new r(e)}constructor(e){this._target=e,e.addEventListener("touchstart",t=>this._touchStart(t)),e.addEventListener("touchmove",t=>this._touchMove(t)),e.addEventListener("touchend",t=>this._touchEnd(t)),e.addEventListener("touchcancel",t=>this._touchEnd(t))}_target;_started;_startX_0;_startY_0;_lastZoom;_lastPanDistanceX;_lastPanDistanceY;_startZoomDistance;multitouchEventActive;_mode=null;_touchStart(e){e.touches.length===2?(this.multitouchEventActive=!0,this._mode=null,this._started=!0,this._startX_0=e.touches[0].screenX,this._startY_0=e.touches[0].screenY,this._lastZoom=0,this._lastPanDistanceX=0,this._lastPanDistanceY=0,this._startZoomDistance=Math.hypot(e.touches[0].screenX-e.touches[1].screenX,e.touches[0].screenY-e.touches[1].screenY)):(this.multitouchEventActive=!1,this._started=!1)}_touchMove(e){if(e.touches.length!==2&&(this.multitouchEventActive=!1,this._started=!1),this._started){e.preventDefault();let t=Math.hypot(e.touches[0].screenX-e.touches[1].screenX,e.touches[0].screenY-e.touches[1].screenY),i=this._startX_0-e.touches[0].screenX,n=this._startY_0-e.touches[0].screenY,s=i-this._lastPanDistanceX,o=n-this._lastPanDistanceY;this._lastPanDistanceX=i,this._lastPanDistanceY=n;let a=t-this._startZoomDistance,l=a-this._lastZoom;if(this._lastZoom=a,this._lastZoom,this._mode||(Math.abs(a)>10&&(this._mode="zoom"),(Math.abs(i)>10||Math.abs(n)>10)&&(this._mode="pan")),this._mode){if(this._mode=="zoom"){let c=new CustomEvent("zoom",{detail:{factor:a,diff:l}});this._target.dispatchEvent(c)}else if(this._mode=="pan"){let c=new CustomEvent("pan",{detail:{x:i,deltaX:s,y:n,deltaY:o}});this._target.dispatchEvent(c)}}}}_touchEnd(e){this.multitouchEventActive=!1,e.touches.length}};jt();ze();Pr();Ih();var il=class{_name;get name(){return this._name}_elementList;getElements(){return Promise.resolve(this._elementList)}constructor(e,t){this._name=e,this._elementList=[],t.elements.forEach(i=>{this.isIElementDefintion(i)?this._elementList.push(i):this._elementList.push({tag:i})})}isIElementDefintion(e){return e!=null&&e.tag!=null}};ze();var nl=class{_name;get name(){return this._name}_importPrefix;_elementList;_resolveStored;_rejectStored;constructor(e,t,i){this._name=e,this._importPrefix=t,this._parseManifest(i)}_parseManifest(e){this._elementList=[];for(let t of e.modules){for(let i of t.exports)if(i.kind=="custom-element-definition"){let n={tag:i.name,import:li(this._importPrefix,"/")+"/"+ke(t.path,"/"),defaultWidth:"200px",defaultHeight:"200px",className:i.declaration.name};this._elementList.push(n)}for(let i of t.declarations)if(i.tagName){let n={tag:i.tagName,import:li(this._importPrefix,"/")+"/"+ke(t.path,"/"),defaultWidth:"200px",defaultHeight:"200px",className:i.name};this._elementList.push(n)}this._resolveStored&&(this._resolveStored.forEach(i=>i(this._elementList)),this._resolveStored=null,this._rejectStored=null)}}async getElements(){return this._elementList?Promise.resolve(this._elementList):(this._resolveStored||(this._resolveStored=[],this._rejectStored=[]),new Promise((e,t)=>{this._resolveStored.push(e),this._rejectStored.push(t)}))}};rt();ve();fe();Re();var nn=class r extends re{getRefreshMode(e){return Y.full}_name;get name(){return this._name}_propertiesList;constructor(e,t,i){super(i),this._name=e,this._parseManifest(t)}_parseManifest(e){this._propertiesList={};let t=[];for(let i of e.modules)i.declarations&&t.push(...i.declarations);for(let i of e.modules)for(let n of i.exports)if(n.kind=="custom-element-definition"){let s=[],o=t.find(a=>a.name==n.declaration.name);if(o){if(o.members){for(let a of o.members)if(a.kind=="field"&&a.privacy!=="private"&&a.privacy!=="protected"){let l=_.property;o.attributes&&(l=o.attributes.find(h=>h.fieldName==a.name)!=null?_.propertyAndAttribute:_.property);let c=r.manifestClassPropertyTypeToEditorPropertyType(a.type?.text,a.type?.editor);a.name&&s.push({name:a.name,service:this,propertyType:l,type:c[0],values:c[1],description:a.description})}this._propertiesList[n.name]=s}}else console.warn("declaration for "+n.declaration.name+" not found",e)}}static manifestClassPropertyTypeToEditorPropertyType(e,t){if(t&&t.toLowerCase()==="color")return["color"];if(e){if(e.toLowerCase()==="boolean")return["boolean"];if(e.toLowerCase()==="number")return["number"];if(e.toLowerCase()==="string")return["string"];if(e.startsWith("'")&&e.includes("|"))return["list",e.split("|").map(n=>n.trim()).map(n=>n.substring(1,n.length-1))]}return[e]}isHandledElement(e){return this._propertiesList[e.name]!=null}async getProperties(e){return this._propertiesList[e.name]}async getProperty(e,t){return this._propertiesList[e.name].find(i=>i.name==t)}getPropertyTarget(e,t){return this._propertiesList[e.name].find(i=>i.name==t.name).propertyType==_.attribute?R.attribute:R.property}getUnsetValue(e,t){return e[0].element[t.propertyName??t.name]}};ze();var Qm=class r{static registryPatchedTohandleErrors;static packageHacks;_packageSource;_dependecies=new Map;constructor(e="//cdn.jsdelivr.net/npm/"){this._packageSource=e,r.patchCustomElementsRegistryToHandleErrors()}static patchCustomElementsRegistryToHandleErrors(){if(!r.registryPatchedTohandleErrors){r.registryPatchedTohandleErrors=!0;let e=window.customElements,t={};t.define=function(i,n,s){try{e.define(i,n,s)}catch(o){console.warn(o)}},t.get=function(i){return e.get(i)},t.upgrade=function(i){return e.upgrade(i)},t.whenDefined=function(i){return e.whenDefined(i)},Object.defineProperty(window,"customElements",{get(){return t}})}}async loadNpmPackage(e,t,i,n,s){r.packageHacks||(r.packageHacks=(await import("./NpmPackageHacks.json",{assert:{type:"json"}})).default);let o=window.location.protocol+this._packageSource+e+"/",a=o+"package.json";s&&s(e+": loading package.json");let c=await(await fetch(a)).json();this.addToImportmap(o,c);let h=[];if(c.dependencies)for(let y in c.dependencies)h.push(this.loadDependency(y,c.dependencies[y]));await Promise.all(h);let p=o+"custom-elements.json",d=o;if(c.customElements&&(p=o+li(c.customElements,"/"),p.includes("/"))){let y=p.lastIndexOf("/");d=p.substring(0,y+1)}let u=o+"web-component-designer.json";c.webComponentDesigner&&(u=o+ke(c.webComponentDesigner,"/")),s&&s(e+": loading custom-elements.json");let m=await fetch(p);if(!m.ok&&c.homepage)try{let v="https://raw.githubusercontent.com/"+new URL(c.homepage).pathname+"/master/custom-elements.json";m=await fetch(v),console.warn("custom-elements.json was missing from npm package, but was loaded from github as a fallback.")}catch(y){console.warn("github custom elments json fallback",y)}if(t&&fetch(u).then(async y=>{if(y.ok){let v=await y.json();if(v.services)for(let C in v.services)for(let w of v.services[C]){w.startsWith("./")&&(w=w.substring(2));let b=(await importShim(o+w)).default;t.register(C,new b)}}}),m.ok){let y=await m.json(),v=new nl(c.name,d,y);if(t&&t.register("elementsService",v),t){let C=new nn(c.name,y);t.register("propertyService",C)}if(n)for(let C of await v.getElements())importShim(C.import);t&&i&&i.loadControls(t,t.elementsServices),r.packageHacks[e]?.import&&import(r.packageHacks[e]?.import),r.packageHacks[e]?.script&&import(URL.createObjectURL(new Blob([r.packageHacks[e]?.script],{type:"application/javascript"})))}else{console.warn("npm package: "+e+" - no custom-elements.json found, only loading javascript module");let y=new el;c.module?await importShim(o+ke(c.module,"/")):c.main?await importShim(o+ke(c.main,"/")):c.unpkg?await importShim(o+ke(c.unpkg,"/")):console.warn("npm package: "+e+" - no entry point in package found."),r.packageHacks[e]?.import&&await import(r.packageHacks[e]?.import),r.packageHacks[e]?.script&&await import(URL.createObjectURL(new Blob([r.packageHacks[e]?.script],{type:"application/javascript"})));let v=y.getNewElements();if(v.length>0&&t&&i){let C={elements:v},w=new il(e,C);t.register("elementsService",w),i.loadControls(t,t.elementsServices)}y.dispose()}s&&s(e+": done");let f={};return r.packageHacks[e]?.html&&(f.html=(r.packageHacks[e]?.html).replaceAll("${baseUrl}",o)),r.packageHacks[e]?.style&&(f.style=(r.packageHacks[e]?.style).replaceAll("${baseUrl}",o)),f}async loadDependency(e,t,i){if(this._dependecies.has(e))return;if(this._dependecies.set(e,!0),e.startsWith("@types")){console.warn("ignoring wrong dependency: ",e);return}i&&i(e+": loading dependency: "+e);let n=window.location.protocol+this._packageSource+e+"/",s=n+"package.json",a=await(await fetch(s)).json(),l=[];if(a.dependencies)for(let c in a.dependencies)l.push(this.loadDependency(c,a.dependencies[c]));await Promise.all(l),this.addToImportmap(n,a)}async addToImportmap(e,t){let i=importShim.getImportMap().imports,n={imports:{},scopes:{}};if(!i.hasOwnProperty(t.name)){if(t.exports){let o=c=>c?.browser?c.browser:c?.import?c.import:c?.module?c.module:c?.default?c.default:c?.node,a=c=>{let h=o(c);return typeof h!="string"&&(h=o(h)),typeof h!="string"&&(h=o(h)),typeof h!="string"&&(h=null),h},l=a(t.exports);l?n.imports[t.name]=e+ke(ke(l,"."),"/"):(l=a(t.exports?.["."]))&&(n.imports[t.name]=e+ke(ke(l,"."),"/"))}let s=t.main;if(t.module&&(s=t.module),t.unpkg&&!s&&(s=t.unpkg),n.imports[t.name]||(s?n.imports[t.name]=e+ke(ke(s,"."),"/"):console.warn("package: "+e+"no main import found")),n.imports[t.name+"/"]=e,r.packageHacks[t.name]?.map)for(let o in r.packageHacks[t.name]?.map)n.imports[o]=e+r.packageHacks[t.name].map[o];importShim.addImportMap(n)}}};Le();Lh();Ms();oe();var jn;(function(r){r.oneWay="oneWay",r.twoWay="twoWay"})(jn||(jn={}));rt();q();var Zm;(function(r){r.undefined="undefined",r.folder="folder",r.boolean="boolean",r.number="number",r.string="string",r.date="date",r.color="color",r.object="object"})(Zm||(Zm={}));rt();Ie();var Jm=class r{static type="base-custom-webcomponent-binding";getBindings(e){let t=null;for(let i of e.attributes()){let n=i[0],s=i[1];if((s.startsWith("[[")||s.startsWith("{{"))&&(s.endsWith("}}")||s.endsWith("]]"))){t||(t=[]);let o={rawName:n,rawValue:s,service:this};i[0]==="bcw:visible"?(o.targetName="visibility",o.target=R.css,o.expression=s.substring(2,s.length-2)):i[0].startsWith("css:")?(o.targetName=n.substring(4),o.target=R.css,o.expression=s.substring(2,s.length-2)):i[0].startsWith("class:")?(o.targetName=n.substring(4),o.target=R.class,o.expression=s.substring(2,s.length-2)):i[0].startsWith("$")?(o.targetName=n.substring(1),o.target=R.attribute,o.expression=s.substring(2,s.length-2)):i[0].startsWith("@")?(o.targetName=n.substring(1),o.target=R.event,o.expression=s.substring(2,s.length-2)):i[0].startsWith(".")?(o.targetName=z.dashToCamelCase(n.substring(1)),o.target=R.explicitProperty,o.expression=s.substring(2,s.length-2)):(o.targetName=z.dashToCamelCase(n),o.target=R.property,o.expression=s.substring(2,s.length-2)),o.type=r.type,o.targetName=o.targetName,o.bindableObjectNames=[s.substring(2,s.length-2)],t.push(o)}}return t}setBinding(e,t){if(t.type!==r.type)return!1;let i="";switch(t.target){case R.explicitProperty:i+=".";break;case R.css:i+="css:";break;case R.class:i+="class";break;case R.attribute:i+="$";break;case R.event:i+="@";break}i+=t.targetName;let n=(t.mode==jn.oneWay?"[[":"{{")+t.expression+(t.mode==jn.oneWay?"]]":"}}");return e.setAttribute(i,n),!0}clearBinding(e,t,i){return!0}};ot();wc();Le();st();Xe();$e();Bi();de();Fi();function qm(r){let e=r.element;return e instanceof SVGGraphicsElement&&!(e instanceof SVGSVGElement)&&!!Qt(e)}var rl=class{serviceForContainer(e,t,i){return i!=null&&i.getComputedStyle()?.position=="absolute"?!0:!(t.display==="grid"||t.display==="inline-grid"||t.display==="flex"||t.display==="inline-flex")}isEnterableContainer(e){return!(ie.IsSelfClosingElement(e.element.localName)||!e.isRootItem&&e.element.shadowRoot&&e.element.shadowRoot.querySelector("slot")==null)}canEnter(e,t){return!(e.instanceServiceContainer.designerCanvas.readOnly||!this.isEnterableContainer(e)||!t.every(i=>!i.element.contains(e.element)&&i!==e))}canLeave(e,t){return!0}getElementOffset(e,t){return e.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(e.element)}calculateTrack(e,t,i,n,s,o){let a=s.x-i.x,l=s.y-i.y;if(!$(e)){if(t.alignOnGrid){let c=es(o,"position");c.x=c.x%t.gridSize,c.y=c.y%t.gridSize,a=Math.round(a/t.gridSize)*t.gridSize-c.x,l=Math.round(l/t.gridSize)*t.gridSize-c.y}else if(t.alignOnSnap){let c=Z(o.element),h=t.snapLines.snapToPosition({x:s.x-n.x,y:s.y-n.y},{width:c.width/t.scaleFactor,height:c.height/t.scaleFactor},{x:a>0?1:-1,y:l>0?1:-1});h.x!==null?a=h.x-Math.round(i.x)+Math.round(n.x):a=Math.round(a),h.y!==null?l=h.y-Math.round(i.y)+Math.round(n.y):l=Math.round(l)}}return{x:a,y:l}}placePoint(e,t,i,n,s,o,a){let l=o.x,c=o.y;if(!$(e)){if(t.alignOnGrid)l=Math.round(l/t.gridSize)*t.gridSize,c=Math.round(c/t.gridSize)*t.gridSize;else if(t.alignOnSnap){let h=t.snapLines.snapToPosition({x:o.x-s.x,y:o.y-s.y},null,{x:l>0?1:-1,y:c>0?1:-1});h.x!==null?l=h.x:l=Math.round(l),h.y!==null?c=h.y:c=Math.round(c)}}return{x:l,y:c}}startPlace(e,t,i,n,s,o,a){}place(e,t,i,n,s,o,a){let l=this.calculateTrack(e,t,n,s,o,a[0]);e.shiftKey&&(l=It({x:0,y:0},l,90));let c=ue(Tc(a));for(let h of c){let p=h.instanceServiceContainer.designerCanvas.canvas,d=h.parent.element.getBoxQuads({relativeTo:p,iframes:h.instanceServiceContainer.designerCanvas.iframes})[0],u=h.parent.element.convertPointFromNode(new DOMPoint(l.x+d.p1.x,l.y+d.p1.y),p,{iframes:h.instanceServiceContainer.designerCanvas.iframes}),m=getComputedStyle(h.element),f=new DOMMatrix;m.rotate!="none"&&m.rotate&&(f=f.multiply(new DOMMatrix("rotate("+m.rotate.replace(" ",",")+")"))),m.scale!="none"&&m.scale&&(f=f.multiply(new DOMMatrix("scale("+m.scale.replace(" ",",")+")"))),u=f.inverse().transformPoint(u);let y=pr(h.element);y!==1&&(u=new DOMPoint(u.x/y,u.y/y));let v=new DOMMatrix().translate(u.x,u.y);Yr(h.element,h.getStyle("transform"),v.toString())}a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(c,"place",!1)}moveElements(e,t,i){for(let n of e)t.x&&n.setStyle("left",parseInt(n.element.style.left)-t.x+"px"),t.y&&n.setStyle("top",parseInt(n.element.style.top)-t.y+"px");e[0].instanceServiceContainer.designerCanvas.extensionManager.refreshExtensions(e),e[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(e,"place",!0)}enterContainer(e,t,i){let n=ue(t);for(let s of n)i=="drop"&&s.setStyle("position","absolute"),e.insertChild(s),s.lastContainerSize&&(s.hasStyle("width")||s.setStyle("width",s.lastContainerSize.width+"px"),s.hasStyle("height")||s.setStyle("height",s.lastContainerSize.height+"px"));t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(n,"place",!0)}leaveContainer(e,t){let i=ue(t);t[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(i,"place",!0)}finishPlace(e,t,i,n,s,o,a){let l=ue(a);for(let c of l){let h=Ri(new DOMMatrix(c.element.style.transform)),p=Ri(new DOMMatrix(c.getStyle("transform")??""));c.element.style.transform=c.getStyle("transform")??"";let d={x:h.x,y:h.y},u=getComputedStyle(c.element),m=new DOMMatrix;u.rotate!="none"&&u.rotate&&(m=m.multiply(new DOMMatrix("rotate("+u.rotate.replace(" ",",")+")"))),u.scale!="none"&&u.scale&&(m=m.multiply(new DOMMatrix("scale("+u.scale.replace(" ",",")+")"))),qm(c)||(d=m.transformPoint(d));let f={x:d.x-p.x,y:d.y-p.y};qm(c)&&(f=is(f,new DOMMatrix(c.getStyle("transform")??""))),ts(i,c,f,"position")}for(let c of a)t.extensionManager.removeExtension(c,I.Placement);a[0].instanceServiceContainer.designerCanvas?.raiseDesignItemsChanged(l,"place",!0)}};var ef=class extends rl{serviceForContainer(e,t,i){return!0}};Bi();jh();Gh();Yh();kd();ze();var tf=class{_capturePageFn;constructor(e){this._capturePageFn=e}async takePng(e,t){if(!e||e.length===0)return null;let i=e[0].instanceServiceContainer.designerCanvas,n=e[0].instanceServiceContainer.selectionService,s=i.zoomFactor,o=i.canvasOffset,a=n.selectedElements;try{i.disableBackgroud(),i.zoomFactor=1,t?.removeSelection&&n.setSelectedElements([]),i.canvasOffset={x:0,y:0},await mn();let l=1/0,c=1/0,h=-1/0,p=-1/0;for(let te of e){let X=i.getNormalizedElementCoordinates(te.element);l=Math.min(l,X.x),c=Math.min(c,X.y),h=Math.max(h,X.x+X.width),p=Math.max(p,X.y+X.height)}let d=t?.margin??0;l-=d,c-=d,h+=d,p+=d;let u=Math.ceil(h-l),m=Math.ceil(p-c),f=i.outercanvas2,y=f.offsetWidth,v=f.offsetHeight,C=1,w=y-2*C,b=v-2*C,S=Math.ceil(u/w),M=Math.ceil(m/b),D=window.devicePixelRatio||1,j=Math.ceil(y*D),H=Math.ceil(v*D),V=Math.ceil(C*D),K=j-2*V,Q=H-2*V,ce=document.createElement("canvas");ce.width=Math.ceil(u*D),ce.height=Math.ceil(m*D);let B=ce.getContext("2d");for(let te=0;te<M;te++)for(let X=0;X<S;X++){let J=l+X*w,Ge=c+te*b;i.canvasOffset={x:-(J-C),y:-(Ge-C)},await mn(),await Pt(100);let Pe=f.getBoundingClientRect(),Ze=await this._capturePageFn({x:Math.round(Pe.left),y:Math.round(Pe.top),width:Math.round(Pe.width),height:Math.round(Pe.height)}),Je=await this._loadImage(Ze);B.drawImage(Je,V,V,K,Q,X*K,te*Q,K,Q)}let L=await(await new Promise(te=>ce.toBlob(te,"image/png"))).arrayBuffer();return new Uint8Array(L)}finally{i.zoomFactor=s,i.canvasOffset=o,i.enableBackground(),t?.removeSelection&&n.setSelectedElements(a)}}_loadImage(e){return new Promise((t,i)=>{let n=new Image;n.onload=()=>t(n),n.onerror=i,n.src=e})}};Wh();Kh();ot();yo();oe();Le();var nf=class{async copyItems(e){let t=ue(e),i=ie.ConvertToString(t,!1),n=t.map(o=>o.instanceServiceContainer.designerCanvas.getNormalizedElementCoordinates(o.element));Ln([["text/html",i],["text/plain",i],["application/json",JSON.stringify({html:i,positions:n})]])}async getPasteItems(e,t){let i=await this._readClipboardPasteData();return i.imageData?[[await O.createDesignItemFromImageBlob(e,t,i.imageData)]]:[await e.htmlParserService.parse(i.html,e,t,!0),i.positions??void 0]}async _readClipboardPasteData(){let e="",t=null,i=null,n=await go();if(n!=null){let s=n[0],o=await this._tryReadClipboardType(s,"application/json");if(o){let a=this._parseJsonClipboardData(o);e=a?.html??"",t=a?.positions??null}e||(e=await this._tryReadClipboardType(s,"text/html")??""),e||(e=await this._tryReadClipboardType(s,"text/plain")??"");try{let a=s.types.find(l=>l.startsWith("image/"));a&&(i=await s.getType(a))}catch{}}else e=await fo();return{html:e,positions:t,imageData:i}}_parseJsonClipboardData(e){try{return JSON.parse(e)}catch{return null}}async _tryReadClipboardType(e,t){try{return await(await e.getType(t))?.text()}catch{return null}}};gh();Id();import{DomHelper as Q_}from"@node-projects/base-custom-webcomponent";var rf=class{provideDemo(e,t,i,n,s){return new Promise(o=>{let a=document.createElement("iframe");a.style.width="100%",a.style.height="100%",a.style.border="none",a.style.display="none",Q_.removeAllChildnodes(e),e.appendChild(a),a.onload=()=>{a.style.display="block",o()};let l=a.contentWindow.document;if(l.open(),l.write('<script type="module">'),i.designContext.npmPackages?.length){l.write("import { NpmPackageLoader } from '../../helper/NpmPackageLoader.js'"),l.write("let loader = new NpmPackageLoader();");for(let c of i.designContext.npmPackages)l.write("loader.loadNpmPackage('"+c+"', null, null, true);")}if(i.designContext.imports?.length)for(let c of i.designContext.imports)l.write("import '"+c+"';");l.write("document.body.style.display='';"),l.write("</script>"),l.write("<style>"+(s??"")+"</style>"),l.write('<body style="display:none; width: 100%; height: 100%; margin: 0; padding: 0; position: absolute;">'+n+"</body>"),l.close()})}};Xp();Gp();Nd();Zp();ya();Ba();oe();Ba();var sf=class extends en{createDesignItem(e,t,i,n){let s=new O(e,t,i,n);return e instanceof(e.ownerDocument.defaultView??window).HTMLTemplateElement&&requestAnimationFrame(()=>{let o=1,a=e.getAttribute("sample-repeat-count");a&&(o=parseInt(a));for(let l=0;l<o;l++){let c=e;for(let h of e.content.childNodes)c=this.instanciateNode(c,h)}}),s}instanciateNode(e,t,i=!1){let n=t.cloneNode(!1);i?e.appendChild(n):e.parentNode.insertBefore(n,e.nextSibling),O.GetDesignItem(t).setView(n);for(let s of t.childNodes)this.instanciateNode(n,s,!0);return n}};Uh();Up();import{LazyLoader as Z_}from"@node-projects/base-custom-webcomponent";var of=class{_name;get name(){return this._name}_elementList;_resolveStored;_rejectStored;getElements(){return this._elementList?Promise.resolve(this._elementList):(this._resolveStored||(this._resolveStored=[],this._rejectStored=[]),new Promise((e,t)=>{this._resolveStored.push(e),this._rejectStored.push(t)}))}constructor(e,t){this._name=e,Z_.LoadText(t.toString()).then(i=>{let n=JSON.parse(i);this._elementList=[],n.elements.forEach(s=>{this.isIElementDefintion(s)?this._elementList.push(s):this._elementList.push({tag:s})}),this._resolveStored&&(this._resolveStored.forEach(s=>s(this._elementList)),this._resolveStored=null,this._rejectStored=null)}).catch(i=>{this._rejectStored&&(this._rejectStored.forEach(n=>n(i)),this._resolveStored=null,this._rejectStored=null)})}isIElementDefintion(e){return e!=null&&e.tag!=null}};Gn();Gn();var af=class extends Ne{isHandledElementFromEventsService(e){return this.__eventsList?.[e.name]!=null}getPossibleEvents(e){return[...this.__eventsList[e.name],...Ne._simpleMouseEvents,...Ne._pointerEvents,...Ne._allElements,...Ne._focusableEvents]}getEvent(e,t){return this.getPossibleEvents(e).find(n=>n.name==t)??{name:t,propertyName:"on"+t,eventObjectName:"Event"}}__eventsList;constructor(e,t){super(),this._parseManifest(t)}_parseManifest(e){this.__eventsList={};let t=[];for(let i of e.modules)i.declarations&&t.push(...i.declarations);for(let i of e.modules)for(let n of i.exports)if(n.kind=="custom-element-definition"){let s=t.find(o=>o.name==n.declaration.name);if(s){if(s.events){let o=[];for(let a of s.events)o.push({name:a.name});o.length&&(this.__eventsList[n.name]=o)}}else console.warn("declaration for "+n.declaration.name+" not found",e)}}};rp();ot();Eo();q();Ie();de();Et();var ht;(function(r){r[r.inline=0]="inline",r[r.block=1]="block",r[r.complex=2]="complex"})(ht||(ht={}));var lf=class{options;constructor(e){this.options=e??{},this.options.beautifyOutput??=!0,this.options.compressCssToShorthandProperties??=!0,this.options.writeDesignerProperties??=!0,this.options.parseJsonInAttributes??=!0,this.options.jsonWriteMode??="min"}writeAttributes(e,t){if(t.hasAttributes)for(let i of t.attributes())e.indentedTextWriter.write(" "),typeof i[1]=="string"?i[1]===""?e.indentedTextWriter.write(i[0]):e.indentedTextWriter.write(i[0]+'="'+ie.normalizeAttributeValue(i[1])+'"'):i[1]||e.indentedTextWriter.write(i[0])}writeStyles(e,t){if(t.hasStyles){e.indentedTextWriter.write(' style="');let i=[...t.styles()],n=i.some(o=>t.isStyleImportant(o[0])),s=i;e.options.compressCssToShorthandProperties&&!n&&(s=$i.combine(new Map(i)));for(let o of s)o[0]&&e.indentedTextWriter.write(z.camelToDashCase(o[0])+":"+ie.normalizeAttributeValue(Ye(o[1],t.isStyleImportant(o[0])))+";");e.indentedTextWriter.write('"')}}_writeTextNode(e,t){e.lastElementDisplayType=je.inline;let i=ie.normalizeContentValue(t.content);e.containerDisplayType===ht.inline?i=this._normalizeInlineTextContent(i):i=i.trim(),i&&e.indentedTextWriter.write(i)}_normalizeInlineTextContent(e){if(!e?.trim())return"";let t=/^\s/.test(e),i=/\s$/.test(e),n=e.replaceAll(/[\t\r\n ]+/g," ").trim();return`${t?" ":""}${n}${i?" ":""}`}_writeCommentNode(e,t){e.indentedTextWriter.write("<!--"+t.content+"-->")}_writeElementNode(e,t){let i=wu(t.element);e.lastElementDisplayType=i,e.indentedTextWriter.write("<"+t.name),this.writeAttributes(e,t),this.writeStyles(e,t),e.indentedTextWriter.write(">");let n=!1;if(t.hasChildren){let s=t.children();n=t.childCount===1&&t.firstChild.nodeType===k.TextNode;let o=e.containerDisplayType;e.containerDisplayType=this.getContainerType(t.element),n?this._writeInternal(e,t.firstChild):(e.containerDisplayType!==ht.inline&&e.indentedTextWriter.levelRaise(),this._writeDesignItemList(i,e,s),e.containerDisplayType!==ht.inline&&e.indentedTextWriter.levelShrink()),e.containerDisplayType=o}else t.hasContent&&e.indentedTextWriter.write(ie.normalizeContentValue(t.content));ie.IsSelfClosingElement(t.name)||(i===je.block&&t.hasChildren&&!n&&this._writeNewlineAndIntend(e),e.indentedTextWriter.write("</"+t.name+">"),i!==je.none&&(e.lastElementDisplayType=i))}_writeDesignItemList(e,t,i){for(let n of i)t.lastElementDisplayType==null||t.containerDisplayType===ht.inline||(t.containerDisplayType===ht.complex?this._writeNewlineAndIntend(t):t.lastElementDisplayType!==je.inline&&this._writeNewlineAndIntend(t)),this._writeInternal(t,n)}_writeNewlineAndIntend(e){e.indentedTextWriter.writeNewline(),e.indentedTextWriter.writeIndent()}_writeInternal(e,t){let i=e.indentedTextWriter.position;t.nodeType===k.TextNode?this._writeTextNode(e,t):t.nodeType===k.Comment?this._writeCommentNode(e,t):t.nodeType===k.Element&&this._writeElementNode(e,t),e.designItemsAssignmentList&&e.designItemsAssignmentList.set(t,{start:i,length:e.indentedTextWriter.position-i-1})}getContainerType(e){let t=(e.ownerDocument.defaultView??window).getComputedStyle(e).display;return t==="inline"?ht.inline:t==="block"||t==="inline-block"||t==""?ht.block:ht.complex}write(e,t,i){let n={indentedTextWriter:e,options:this.options,lastElementDisplayType:null,containerDisplayType:ht.block};this._writeDesignItemList(je.inline,n,t)}};sp();wn();ic();rt();ve();fe();Re();ze();Gn();var cf=class extends re{getRefreshMode(e){return Y.none}_name;get name(){return this._name}_packageData;_elementList;_propertiesList;__eventsList;_resolveStored;_rejectStored;_importPrefix="";constructor(e,t,i=""){if(super(),this._name=e,this._importPrefix=i,typeof t=="string"){this._importPrefix=this._importPrefix??t.split("/").slice(0,-1).join("/");let n;window.importShim?n=importShim(t,{with:{type:"json"}}):n=import(t,{with:{type:"json"}}),n.then(s=>{this._packageData=s.default,this._parseManifest()}).catch(s=>{this._rejectStored&&(this._rejectStored.forEach(o=>o(s)),this._resolveStored=null,this._rejectStored=null)})}else this._packageData=t,this._parseManifest()}_parseManifest(){this._elementList=[],this._propertiesList={};for(let e of this._packageData.modules){for(let t of e.exports)if(t.kind=="custom-element-definition"){this._elementList.push({tag:t.name,import:li(this._importPrefix,"/")+"/"+ke(e.path,"/")});let i=[],n=e.declarations.find(s=>s.name==t.declaration.name);for(let s of n.members)if(s.kind=="field"){let o=_.property;n.attributes&&(o=n.attributes.find(l=>l.fieldName==s.name)!=null?_.propertyAndAttribute:_.property);let a=nn.manifestClassPropertyTypeToEditorPropertyType(s.type?.text,s.type?.editor);i.push({name:s.name,service:this,propertyType:o,type:a[0],values:a[1],description:s.description})}if(this._propertiesList[t.name]=i,n.events){let s=[];for(let o of n.events)s.push({name:o.name});s.length&&(this.__eventsList[t.name]=s)}}this._resolveStored&&(this._resolveStored.forEach(t=>t(this._elementList)),this._resolveStored=null,this._rejectStored=null)}}async getElements(){return this._packageData?Promise.resolve(this._elementList):(this._resolveStored||(this._resolveStored=[],this._rejectStored=[]),new Promise((e,t)=>{this._resolveStored.push(e),this._rejectStored.push(t)}))}isHandledElement(e){return this._elementList?this._elementList.find(t=>t.tag==e.name)!=null:!1}async getProperties(e){return this._propertiesList[e.name]}async getProperty(e,t){return this._propertiesList[e.name].find(i=>i.name==t)}getPropertyTarget(e,t){return this._propertiesList[e.name].find(i=>i.name==t.name).propertyType==_.attribute?R.attribute:R.property}isHandledElementFromEventsService(e){return this.__eventsList?this.__eventsList[e.name]!=null:!1}getPossibleEvents(e){return[...this.__eventsList[e.name],...Ne._simpleMouseEvents,...Ne._pointerEvents,...Ne._allElements,...Ne._focusableEvents]}getEvent(e,t){return this.getPossibleEvents(e).find(n=>n.name==t)??{name:t,propertyName:"on"+t,eventObjectName:"Event"}}};Dd();Zh();var hf=class{constructor(e,t,i){}cursorsChanged};xc();Ld();ve();Dp();Me();cc();nc();_c();vc();rc();pc();sc();import{html as J_,BaseCustomWebComponentConstructorAppend as q_}from"@node-projects/base-custom-webcomponent";var pf=class extends q_{static template=J_`<div style="display:flex"><input id="input" type="text"> <button style="width:30px">...</button></div>`;constructor(){super()}};oc();ac();lc();dc();Ep();Cp();Ie();ki();wp();Yo();bc();yd();Ai();fe();Re();ve();ut();rt();var sl=class extends re{getRefreshMode(e){return Y.none}contentProperty={name:"textContent",type:"string",service:this,propertyType:_.property};idProperty={name:"id",type:"string",service:this,propertyType:_.propertyAndAttribute};innerHtmlProperty={name:"innerHTML",type:"string",service:this,propertyType:_.property};name="content";isHandledElement(e){return!0}async getProperty(e,t){return t=="id"?this.idProperty:this.contentProperty}async getProperties(e){return[this.idProperty,this.contentProperty,this.innerHtmlProperty]}clearValue(e,t,i="all"){if(t.name==this.contentProperty.name||t.name==this.innerHtmlProperty.name){let n=e[0].openGroup("property cleared: "+t.name);for(let s of e)i!="binding"&&s.clearChildren(),i!="value"&&s.serviceContainer.forSomeServicesTillResult("bindingService",o=>o.clearBinding(s,t.name,this.getPropertyTarget(s,t))),this._notifyChangedProperty(s,t,void 0);n.commit()}else super.clearValue(e,t,i)}isSet(e,t){if(t.name==this.contentProperty.name||t.name==this.innerHtmlProperty.name){let i=!0,n=!1;if(e!=null&&e.length!==0){e.forEach(o=>{let a=!1;a=o.element.childNodes.length>0,i=i&&a,n=n||a});let s=re.getOrBuildCachedBindings(e[0]);if(s&&s.find(o=>(o.target==R.property||o.target==R.explicitProperty)&&o.targetName==t.name))return W.bound}return i?W.all:n?W.some:W.none}return super.isSet(e,t)}getValue(e,t){return t.name==this.contentProperty.name||t.name==this.innerHtmlProperty.name?e[0].element.textContent:super.getValue(e,t)}};Pp();Uo();Re();fe();ve();var df=class extends re{getRefreshMode(e){return Y.full}name="list";_propertys=new Map;constructor(e,t){super(t);for(let i in e){let n=[];this._propertys.set(i,n);for(let s in e[i]){let o=e[i][s];n.push({name:o.name,propertyName:o.propertyName,attributeName:o.attributeName,description:o.description,type:o.type,default:o.default,min:o.min,max:o.max,step:o.step,values:o.values,enumValues:o.enumValues,value:o.value,defaultValue:o.defaultValue,service:this,propertyType:o.propertyType??_.propertyAndAttribute})}}}isHandledElement(e){return this._propertys.has(e.element.localName)}_notifyChangedProperty(e,t,i){}async getProperties(e){return this._propertys.get(e.element.localName)}};jl();Mc();Qp();Yl();Ul();Wl();Re();Sp();Ip();Re();ve();fe();var uf=class extends re{getRefreshMode(e){return Y.full}isHandledElement(e){return!0}async getProperties(e){let t=Object.getOwnPropertyNames(Object.getPrototypeOf(e.element)),i=[];for(let n of t){if(n.startsWith("on"))continue;let s=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e.element),n);if(s.get||s.set){let o=e.element[n];typeof o=="boolean"?i.push({name:n,type:"boolean",service:this,propertyType:_.propertyAndAttribute}):typeof o=="number"?i.push({name:n,type:"bonumberolean",service:this,propertyType:_.propertyAndAttribute}):i.push({name:n,type:"string",service:this,propertyType:_.propertyAndAttribute})}}return i}};fe();ut();var mf=class{getRefactorings(e){let t=[];for(let i of e){let n=i.serviceContainer.bindingService.getBindings(i);if(n)for(let s of n)for(let o of s.bindableObjectNames)if(o.includes(":")){let a=o.split(":")[0],l=o.substring(a.length+1);t.push({service:this,name:l,itemType:"signal",designItem:i,type:"binding",sourceObject:s,display:s.target+"/"+s.targetName+" - "+a+":",shortName:a})}else t.push({service:this,name:o,itemType:"signal",designItem:i,type:"binding",sourceObject:s,display:s.target+"/"+s.targetName})}return t}refactor(e,t,i){let n=e.sourceObject;e.shortName?n.bindableObjectNames=n.bindableObjectNames.map(s=>s==e.shortName+":"+t?e.shortName+":"+i:s):n.bindableObjectNames=n.bindableObjectNames.map(s=>s==t?i:s),e.designItem.serviceContainer.bindingService.setBinding(e.designItem,n)}};var ff=class{getRefactorings(e){let t=[];for(let i of e)if((i.element instanceof i.window.HTMLInputElement||i.element instanceof i.window.HTMLTextAreaElement)&&i.element.value&&t.push({service:this,name:i.element.value,itemType:"text",designItem:i,type:"attribute",sourceObject:i,display:"attribute/value"}),i.childCount>0&&i.element.textContent){let n=!0;for(let s of i.element.childNodes)s.nodeType!=3&&(n=!1);n&&t.push({service:this,name:i.element.textContent,itemType:"text",designItem:i,type:"content",sourceObject:i,display:"textContent"})}return t}refactor(e,t,i){e.type=="attribute"?e.designItem.setAttribute("value",i):e.type=="content"&&(e.designItem.content=i)}};q();var Vd=Symbol("collaborationNodeIndexCache");function ex(r){let e=[],t=new WeakMap,i=0,n=s=>{if(s&&(!s.isRootItem&&s.nodeType===k.Element&&(e.push(s),t.set(s,i++)),s.hasChildren))for(let o of s.children())n(o)};return n(r),{orderedItems:e,byItem:t}}function gf(r,e){if(e?.[Vd])return e[Vd];let t=ex(r);return e&&(e[Vd]=t),t}function tx(r,e){if(!r||r.isRootItem)return null;let t=r.instanceServiceContainer.designerCanvas.rootDesignItem;return gf(t,e).byItem.get(r)??null}function sR(r,e){return r?.length?r.map(t=>tx(t,e)).filter(t=>t!=null):[]}function oR(r,e,t){return e==null||e<0?null:gf(r,t).orderedItems[e]??null}Ad();Rp();oe();import{TypedEvent as Af}from"@node-projects/base-custom-webcomponent";function Fd(r){let e={A:0,B:0,C:0};return ix(r)?(rx(r,0,e),e):(nx(r,e),e)}function ix(r){for(let e=0;e<r.length;e++){let t=r.charCodeAt(e);if(t===58||t===91||t===40||t===44||t===92)return!0}return!1}function nx(r,e){let t=r.length,i=0;for(;i<t;){let n=r.charCodeAt(i);if(n===124&&i+1<t&&r.charCodeAt(i+1)===124){i+=2;continue}if(n===32||n===62||n===43||n===126){i++;continue}if(n===35){for(e.A++,i++;i<t&&Yn(r.charCodeAt(i));)i++;continue}if(n===46){for(e.B++,i++;i<t&&Yn(r.charCodeAt(i));)i++;continue}if(n===42){i++;continue}if(kf(n)||n===124){for(;i<t;){let s=r.charCodeAt(i);if(Yn(s)||s===124)i++;else break}e.C++;continue}i++}}function rx(r,e,t){let i=e,n=0,s=0,o=0;for(;i<r.length;){if(n=s=o=0,i=rn(r,i,t,!0),n=t.A,s=t.B,o=t.C,r.charCodeAt(i)===44){i++;let a=n,l=s,c=o;for(;i<r.length;){if(t.A=t.B=t.C=0,i=rn(r,i,t,!0),(t.A>a||t.A===a&&(t.B>l||t.B===l&&t.C>c))&&(a=t.A,l=t.B,c=t.C),r.charCodeAt(i)===44){i++;continue}break}t.A=a,t.B=l,t.C=c}break}return i}function rn(r,e,t,i){let n=e;for(i&&(t.A=t.B=t.C=0);n<r.length;){let s=r.charCodeAt(n);if(s===44||s===41)break;if(s===124&&r.charCodeAt(n+1)===124){n+=2;continue}if(s===32||s===62||s===43||s===126){n++;continue}if(s===35){n=ol(r,n+1),t.A++;continue}if(s===46){n=ol(r,n+1),t.B++;continue}if(s===91){n=Rd(r,n,91,93),t.B++;continue}if(s===58){if(r.charCodeAt(n+1)===58){n+=2,n=ol(r,n),r.charCodeAt(n)===40&&(n=Rd(r,n,40,41)),t.C++;continue}let o=n+1,a=ol(r,o);if(n=a,lx(r,o,a-o)){t.C++;continue}if(r.charCodeAt(n)===40){let l=n+1,c=Rd(r,n,40,41),h=a-o;switch(ax(r,o,h)){case yf:n=c;continue;case vf:case _f:case xf:case Pf:case If:case Df:{let d=0,u=0,m=0,f=l,y=c-1;for(;f<y;){let v={A:0,B:0,C:0};if(f=sx(r,f,v),(v.A>d||v.A===d&&(v.B>u||v.B===u&&v.C>m))&&(d=v.A,u=v.B,m=v.C),r.charCodeAt(f)===44)f++;else break}t.A+=d,t.B+=u,t.C+=m,n=c;continue}case bf:{let d={A:0,B:0,C:0};rn(r,l,d,!1),t.A+=d.A,t.B+=d.B,t.C+=d.C,n=c;continue}case wf:case Sf:{t.B++;let d={A:0,B:0,C:0};rn(r,l,d,!1),t.A+=d.A,t.B+=d.B,t.C+=d.C,n=c;continue}case Cf:case Ef:{t.B++;let d=c-1,u=cx(r,l,d);if(u!==-1){let m=u+2;for(;m<d&&zd(r.charCodeAt(m));)m++;let f=0,y=0,v=0,C=m;for(;C<d;){let w={A:0,B:0,C:0};if(C=rn(r,C,w,!1),(w.A>f||w.A===f&&(w.B>y||w.B===y&&w.C>v))&&(f=w.A,y=w.B,v=w.C),r.charCodeAt(C)===44)C++;else break}t.A+=f,t.B+=y,t.C+=v}n=c;continue}default:t.B++,n=c;continue}}else{t.B++;continue}}if(s===42){n++;continue}if(kf(s)||s===124){for(;n<r.length&&(Yn(r.charCodeAt(n))||r.charCodeAt(n)===124);)n++;t.C++;continue}n++}return n}function sx(r,e,t){return rn(r,e,t,!1)}var ox=0,yf=1,vf=2,_f=3,xf=4,bf=5,wf=6,Sf=7,Cf=8,Ef=9,Pf=10,If=11,Df=12;function ax(r,e,t){return t===5&&r.charCodeAt(e)===119&&r.charCodeAt(e+1)===104&&r.charCodeAt(e+2)===101&&r.charCodeAt(e+3)===114&&r.charCodeAt(e+4)===101?yf:t===3&&r.charCodeAt(e)===110&&r.charCodeAt(e+1)===111&&r.charCodeAt(e+2)===116?_f:t===2&&r.charCodeAt(e)===105&&r.charCodeAt(e+1)===115?vf:t===3&&r.charCodeAt(e)===104&&r.charCodeAt(e+1)===97&&r.charCodeAt(e+2)===115?xf:t===4&&r.charCodeAt(e)===104&&r.charCodeAt(e+1)===111&&r.charCodeAt(e+2)===115&&r.charCodeAt(e+3)===116?wf:t===12&&r.charCodeAt(e)===104&&r.charCodeAt(e+4)===45&&r.charCodeAt(e+5)===99&&r.substring(e,e+t)==="host-context"?Sf:t===7&&r.charCodeAt(e)===115&&r.substring(e,e+7)==="slotted"?bf:t===9&&r.charCodeAt(e)===110&&r.substring(e,e+9)==="nth-child"?Cf:t===14&&r.charCodeAt(e)===110&&r.substring(e,e+14)==="nth-last-child"?Ef:t===7&&r.charCodeAt(e)===109&&r.substring(e,e+7)==="matches"?Pf:t===11&&r.charCodeAt(e)===45&&r.substring(e,e+11)==="-webkit-any"?If:t===8&&r.charCodeAt(e)===45&&r.substring(e,e+8)==="-moz-any"?Df:ox}function lx(r,e,t){if(t===6){let i=r.charCodeAt(e);if(i===98)return r.substring(e,e+6)==="before";if(i===97)return r.substring(e,e+6)==="after"}return t===5&&r.charCodeAt(e)===97?r.substring(e,e+5)==="after":t===10&&r.charCodeAt(e)===102?r.substring(e,e+10)==="first-line":t===12&&r.charCodeAt(e)===102?r.substring(e,e+12)==="first-letter":!1}function kf(r){return r>=65&&r<=90||r>=97&&r<=122||r===95||r===45||r===92}function Yn(r){return r>=65&&r<=90||r>=97&&r<=122||r>=48&&r<=57||r===95||r===45||r===92}function zd(r){return r===32||r===9||r===10||r===13||r===12}function ol(r,e){let t=e;for(;t<r.length;){let i=r.charCodeAt(t);if(i===92){t+=2;continue}if(!Yn(i))break;t++}return t}function Rd(r,e,t,i){let n=0,s=0,o=e;for(;o<r.length;){let a=r.charCodeAt(o);if(s){if(a===92){o+=2;continue}a===s&&(s=0),o++;continue}if(a===34||a===39){s=a,o++;continue}if(a===t)n++;else if(a===i&&(n--,n===0))return o+1;o++}return o}function cx(r,e,t){let i=e;for(;i<=t-1;){for(;i<=t-1&&zd(r.charCodeAt(i));)i++;if(r.charCodeAt(i)===111&&r.charCodeAt(i+1)===102&&(i+2>t-1||zd(r.charCodeAt(i+2))||r.charCodeAt(i+2)===40))return i;i++}return-1}Od();var al=class r{_stylesheets=new Map;_documentStylesheets=new Map;_allStylesheets=new Map;_instanceServiceContainer;constructor(e){this._instanceServiceContainer=e.instanceServiceContainer}async setStylesheets(e){await this.internalSetStylesheets(e,this._stylesheets)}async setDocumentStylesheets(e){await this.internalSetStylesheets(e,this._documentStylesheets)}async internalSetStylesheets(e,t){if(t!=null&&e!=null&&t.size==e.length&&e.every(i=>t.has(i.name)))for(let i of e){let n=t.get(i.name);if(n.stylesheet.content!=i.content){try{t.set(i.name,{stylesheet:i,ast:await this.internalParse(i.content)})}catch(s){console.warn("error parsing stylesheet",i,s)}t==this._stylesheets&&this.stylesheetChanged.emit({name:i.name,newStyle:i.content,oldStyle:n.stylesheet.content,changeSource:"extern"})}}else if(e!=null){t.clear();for(let i of e){let n=null;try{n=await this.internalParse(i.content)}catch(s){console.warn("error parsing stylesheet",i,s)}t.set(i.name,{stylesheet:i,ast:n})}t==this._stylesheets&&this.stylesheetsChanged.emit()}else t.clear();this._allStylesheets.clear();for(let i of this._documentStylesheets)this._allStylesheets.set(i[0],i[1]);for(let i of this._stylesheets)this._allStylesheets.set(i[0],i[1])}async internalReparseStylesheet(e){let t=this._allStylesheets;this._documentStylesheets.has(e)&&(t=this._documentStylesheets),this._stylesheets.has(e)&&(t=this._stylesheets);let i=t.get(e),n=null;try{n=await this.internalParse(i.stylesheet.content)}catch(o){console.warn("error parsing stylesheet",e,o)}let s={stylesheet:i.stylesheet,ast:n};this._stylesheets.set(e,s),this._allStylesheets.set(e,s)}getStylesheets(){let e=[];for(let t of this._stylesheets)e.push(t[1].stylesheet);return e}getDeclarationsSortedBySpecificity(e,t){let i=this.getDeclarations(e,t);return i.reverse().sort((n,s)=>n.parent.specificity==null?-1:s.parent.specificity==null?1:n.parent.specificity.A>s.parent.specificity.A||n.parent.specificity.A===s.parent.specificity.A&&n.parent.specificity.B>s.parent.specificity.B||n.parent.specificity.A===s.parent.specificity.A&&n.parent.specificity.B===s.parent.specificity.B&&n.parent.specificity.C>s.parent.specificity.C?-1:n.parent.specificity.A===s.parent.specificity.A&&n.parent.specificity.B===s.parent.specificity.B&&n.parent.specificity.C===s.parent.specificity.C?0:1),i}updateDeclarationValue(e,t,i){this.updateDeclarationValueWithoutUndo(e,t,i)}stylesheetChanged=new Af;stylesheetsChanged=new Af;static patchStylesheetSelectorForDesigner(e){return Za(e,{forceHoverAttributeName:at,forceActiveAttributeName:Yt,forceVisitedAttributeName:Ut,forceFocusAttributeName:Xt,forceFocusWithinAttributeName:$t,forceFocusVisibleAttributeName:Kt})}elementMatchesASelector(e,t){let i=null;for(let n of t)try{let s=r.patchStylesheetSelectorForDesigner(n);if(e&&s===":host"&&e.isRootItem){let o=Fd(n);(i===null||o.A>i.A||o.A===i.A&&(o.B>i.B||o.B===i.B&&o.C>i.C))&&(i=o)}else if(!e||e.element.matches(s)){let o=Fd(n);(i===null||o.A>i.A||o.A===i.A&&(o.B>i.B||o.B===i.B&&o.C>i.C))&&(i=o)}}catch{console.warn("invalid selector: ",n,"patched: "+r.patchStylesheetSelectorForDesigner(n))}return i===null?!1:i}};Np();Vp();$l();ec();Xl();Pd();yt();Ql();ql();var ll=class{stylesheetService;constructor(e,t,i,n){this.title="Changed Css Stylesheet: "+t,this.stylesheetService=e,this.name=t,this.newValue=i,this.oldValue=n}title;get affectedItems(){return[]}undo(){return this.stylesheetService.updateCompleteStylesheetWithoutUndo(this.name,this.oldValue),null}do(){return this.stylesheetService.updateCompleteStylesheetWithoutUndo(this.name,this.newValue),null}name;newValue;oldValue;mergeWith(e){return!1}};var cl=class{constructor(e,t){this.title="Set all DesignItems",this.newDesignItems=e,this.oldDesignItems=t}title;get affectedItems(){return this.newDesignItems}undo(){return this.newDesignItems[0].instanceServiceContainer.designerCanvas._internalSetDesignItems(this.oldDesignItems),null}do(){return this.newDesignItems[0].instanceServiceContainer.designerCanvas._internalSetDesignItems(this.newDesignItems),null}newDesignItems;oldDesignItems;mergeWith(e){return!1}};Zl();sr();sr();import{TypedEvent as hx}from"@node-projects/base-custom-webcomponent";var hl=class{imports=[];npmPackages=[];extensionOptions={gridExtensionShowOverlay:!1,flexboxExtensionShowOverlay:!1,invisibleElementExtensionShowOverlay:!1,enableStylesheetService:!1,basicStackedToolbarExtensionShowOverlay:!1,simulateHoverOnHover:!1,selectUnhitableElements:!0};extensionOptionsChanged=new hx};import{TypedEvent as px}from"@node-projects/base-custom-webcomponent";var pl=class extends Di{designContext=new hl;designerCanvas;collaborationService;designer;documentContainer;onContentChanged=new px;constructor(e){super(),this.designerCanvas=e}get rootDesignItem(){return this.designerCanvas.rootDesignItem}get undoService(){return this.getLastService("undoService")}get selectionService(){return this.getLastService("selectionService")}get stylesheetService(){return this.getLastService("stylesheetService")}get designItemDocumentPositionService(){return this.getLastService("designItemDocumentPositionService")}};Hl();ve();ut();jt();fe();he();import{BaseCustomWebComponentLazyAppend as dx,css as ux,DomHelper as Tf}from"@node-projects/base-custom-webcomponent";var Qe=class r extends dx{_div;_propertyMap=new Map;_serviceContainer;_propertiesService;_designItems;_lastClassType;_addCounter=0;propertyGroupHover;propertyGroupClick;propertyContextMenuProvider;get propertiesService(){return this._propertiesService}static get style(){return ux`:host{display:block;height:100%;overflow:auto;box-sizing:border-box}.content-wrapper{padding:.5em;display:grid;grid-template-columns:11px minmax(80px,auto) minmax(120px,1fr);align-items:center;grid-auto-rows:minmax(24px,auto);align-items:center}input,label,select{display:inline-block;color:#fff;background:0 0;margin:2px 0;padding:0 2px 0 4px;width:110px;white-space:nowrap}.style-label,label{box-sizing:border-box;display:inline-block;font-size:13px;width:auto;overflow:hidden;text-overflow:ellipsis;margin-right:2px}input,select{padding:0;padding-left:3px}input,select{border:none}.content-wrapper>input,.content-wrapper>select,.editor-control{border:1px solid var(--input-border-color,#596c7a);border-radius:0}.editor-control,input,select{height:24px;box-sizing:border-box;font-size:11px;width:100%;margin:0}.editor-control:focus,input:focus,select:focus{outline:0;box-shadow:none}.editor-control[disabled],input[disabled],select[disabled]{color:#bdbdbd}select{background:0 0}select:focus option{color:#000}.unset-value{color:#778899}.unset-value>*{color:#778899}.unset-value:focus{color:#fff}.group-header{grid-column:1/3;font-size:10px;font-family:monospace}.group-header[clickable]:hover{cursor:pointer;color:orange;text-decoration:underline}.group-header::after{content:" ▾";font-size:14px}.group-header.expanded::after{content:" ▴";font-size:14px}.group-desc{display:inline-flex;flex-direction:row-reverse;font-size:10px;text-decoration:underline}.group-desc[clickable]:hover{cursor:pointer;color:orange;text-decoration:underline}.dragOverProperty{outline:2px dashed orange;outline-offset:-2px}`}constructor(e){super(),this._restoreCachedInititalValues(),this._serviceContainer=e,this._div=document.createElement("div"),this._div.className="content-wrapper",this.shadowRoot.appendChild(this._div)}setPropertiesService(e){this._propertiesService!=e&&(this._propertiesService=e,Tf.removeAllChildnodes(this._div),this._propertyMap.clear())}async createElements(e){if(!this._shouldCreateElements(e))return!0;let t=await this._propertiesService?.getProperties(e);return this._rebuildElements(e,t)}_shouldCreateElements(e){if(!this._propertiesService)return!1;if(this._propertyMap.size==0)return!0;let t=this._propertiesService.getRefreshMode(e);return t!==Y.none&&(t!==Y.fullOnClassChange||this._lastClassType!==e.element.constructor)}_rebuildElements(e,t){if(this._lastClassType=e.element.constructor,Tf.removeAllChildnodes(this._div),this._propertyMap.clear(),t?.length){for(let i of t)"properties"in i?this.createPropertyGroups(i):this.createPropertyEditors(i);return!0}return!1}createPropertyGroups(e){let t=document.createElement("span");t.addEventListener("click",()=>{this.expandOrCollapsePropertyGroups(e),t.classList.toggle("expanded")}),t.innerHTML=e.name.replaceAll(`
|
|
553
|
+
`,"<br>"),t.className="group-header",this._div.appendChild(t);let i=document.createElement("span");i.innerHTML=e.description??"",i.className="group-desc",this.propertyGroupHover&&(t.onmouseenter=()=>{this.propertyGroupHover(e,"name")?t.setAttribute("clickable",""):t.removeAttribute("clickable")},t.onclick=()=>{this.propertyGroupClick&&this.propertyGroupClick(e,"name")},i.onmouseenter=()=>{this.propertyGroupHover(e,"desc")?i.setAttribute("clickable",""):i.removeAttribute("clickable")},i.onclick=()=>{this.propertyGroupClick&&this.propertyGroupClick(e,"desc")}),this._div.appendChild(i);for(let n of e.properties)this.createPropertyEditors(n,!0)}expandOrCollapsePropertyGroups(e){for(let t of e.properties){let i=this._propertyMap.get(t),n=i.labelElement.style.display=="none"?"flex":"none";i.editor.element&&(i.editor.element.style.display=n),i.labelElement&&(i.labelElement.style.display=n),i.isSetElement.parentElement&&(i.isSetElement.parentElement.style.display=n)}}createPropertyEditors(e,t){let i,n;if(e.createEditor?i=e.createEditor(e):i=this._serviceContainer.forSomeServicesTillResult("propertyEditorTypesService",s=>s.getEditorForProperty(e)),i){let s=document.createElement("div");t&&(s.style.marginLeft="10px"),s.style.width="20px",s.style.height="20px",s.style.display="flex",s.style.alignItems="center";let o=document.createElement("div");if(o.style.width="7px",o.style.height="7px",o.style.border="1px white solid",o.style.cursor="pointer",e.propertyType!=_.complex&&s.appendChild(o),this._div.appendChild(s),e.readonly!==!0&&(o.oncontextmenu=a=>{a.preventDefault(),this.openContextMenu(a,e)},o.onclick=a=>{a.preventDefault(),this.openContextMenu(a,e)}),e.type=="addNew"){let a=i.element;a.disabled=!0,a.id="addNew_input_"+ ++this._addCounter;let l=document.createElement("input");if(n=l,t&&(l.style.marginLeft="10px",l.style.width="calc(100% - 10px)"),l.value=e.name,l.type="text",l.id="addNew_label_"+this._addCounter,l.onkeyup=c=>{c.key=="Enter"&&l.value&&(e.name=l.value,l.disabled=!0,a.disabled=!1,a.focus())},e.service.getPropertyNameSuggestions){let c=e.service.getPropertyNameSuggestions(null),h=document.createElement("datalist");h.id="addNew_"+this._addCounter+"_datalist";for(let p of c){let d=document.createElement("option");d.value=p,h.append(d)}this._div.appendChild(h),l.setAttribute("list",h.id)}this._div.appendChild(l)}else if(e.hideLabel)n=document.createElement("span");else if(e.renamable){let a=document.createElement("input");n=a,t&&(a.style.marginLeft="10px",a.style.width="calc(100% - 10px)"),a.id="label_"+e.name;let l=i.element;a.value=e.name,a.onkeyup=async c=>{if(c.key=="Enter"&&a.value){let h=this._designItems[0].openGroup("rename property name from '"+e.name+"' to '"+a.value+"'");e.service.clearValue(this._designItems,e,"all"),e.name=a.value,await e.service.setValue(this._designItems,e,l.value),h.commit(),this._designItems[0].instanceServiceContainer.designerCanvas.extensionManager.refreshAllExtensions(this._designItems)}},this._div.appendChild(a)}else{let a=document.createElement("label");n=a,t&&(a.style.marginLeft="10px"),a.htmlFor=e.name,a.textContent=e.displayName??e.name,a.title=e.description??(e.displayName??e.name)+" (type: "+e.type+(e.defaultValue?", default: "+e.defaultValue:"")+", propertytype: "+e.propertyType+")",a.ondragleave=l=>this._onDragLeave(l,e,a),a.ondragover=l=>this._onDragOver(l,e,a),a.ondrop=l=>this._onDrop(l,e,a),this._div.appendChild(a)}e.name&&(i.element.id=e.name),i.element instanceof HTMLElement&&i.element.classList.add("editor-control"),e.hideLabel&&(i.element.style.gridColumn="2 / 4"),this._div.appendChild(i.element),this._propertyMap.set(e,{isSetElement:o,labelElement:n,editor:i})}}_onDragLeave(e,t,i){e.preventDefault(),i.classList.remove("dragOverProperty")}_onDragOver(e,t,i){if(e.preventDefault(),e.dataTransfer.types.indexOf(hi)>=0){let o=this._serviceContainer.bindableObjectDragDropService;if(o){let a=o.dragOverOnProperty(e,t,this._designItems);(a??"none")!="none"?(i.classList.add("dragOverProperty"),e.dataTransfer.dropEffect=a):i.classList.remove("dragOverProperty")}}if(e.dataTransfer.types.indexOf(hc)>=0){let o=this._serviceContainer.propertyGridDragDropService;if(o){let a=o.dragOverOnProperty(e,t,this._designItems);(a??"none")!="none"?(i.classList.add("dragOverProperty"),e.dataTransfer.dropEffect=a):i.classList.remove("dragOverProperty")}}}_onDrop(e,t,i){e.preventDefault(),i.classList.remove("dragOverProperty");let n=e.dataTransfer.getData(hi);if(n){let o=JSON.parse(n),a=this._serviceContainer.bindableObjectDragDropService;a&&a.dropOnProperty(e,t,o,this._designItems)}let s=e.dataTransfer.getData(hc);if(s){let o=JSON.parse(s),a=this._serviceContainer.propertyGridDragDropService;a&&a.dropOnProperty(e,t,o,this._designItems)}}openContextMenu(e,t){let i;this.propertyContextMenuProvider&&(i=this.propertyContextMenuProvider(this._designItems,t)),i||(i=t.service.getContextMenu(this._designItems,t)),De.show(i,e)}designItemsChanged(e){this._designItems=e;for(let t of this._propertyMap)t[1].editor.designItemsChanged(e)}refreshForDesignItems(e){for(let t of this._propertyMap)r.refreshIsSetElementAndEditorForDesignItems(t[1].isSetElement,t[0],e,this._propertiesService,t[1].editor)}static refreshIsSetElementAndEditorForDesignItems(e,t,i,n,s){if(i&&i.length){let o=n.isSet(i,t),a=n.getValue(i,t);e.title=t.name+": "+o,o==W.none?(e.style.background="",a=n.getUnsetValue(i,t)):o==W.all?e.style.background="white":o==W.some?e.style.background="gray":o==W.bound?e.style.background="orange":o==W.fromStylesheet&&(a=n.getUnsetValue(i,t),e.style.background="yellow"),s?.refreshValueWithoutNotification(o,a)}else e.style.background=""}};customElements.define("node-projects-property-grid-property-list",Qe);ve();import{BaseCustomWebComponentLazyAppend as mx,css as fx}from"@node-projects/base-custom-webcomponent";var Bd=class extends mx{_serviceContainer;_designerTabControl;_selectedItems;_propertyGridPropertyLists;_propertyGridPropertyListsDict;_nodeReplacedCb;_instanceServiceContainer;_selectionChangedHandler;_contentChangedHandler;propertyGroupHover;propertyGroupClick;propertyContextMenuProvider;static style=fx`:host{display:block;height:100%;user-select:none;-webkit-user-select:none}button:hover{box-shadow:inset 0 3px 0 var(--light-grey)}button:focus{box-shadow:inset 0 3px 0 var(--highlight-pink,#e91e63)}`;static properties={serviceContainer:Object,instanceServiceContainer:Object,selectedItems:Array,propertyGroupHover:Function,propertyGroupClick:Function,propertyContextMenuProvider:Function};constructor(){super(),this._designerTabControl=new Ct,this.shadowRoot.appendChild(this._designerTabControl),this._restoreCachedInititalValues(),this.addEventListener("contextmenu",e=>{e.composedPath()[0].localName!="input"&&e.preventDefault()})}set serviceContainer(e){this._serviceContainer=e,this._propertyGridPropertyLists=[],this._propertyGridPropertyListsDict={}}get serviceContainer(){return this._serviceContainer}set instanceServiceContainer(e){this._instanceServiceContainer=e,this._selectionChangedHandler?.dispose(),this._contentChangedHandler?.dispose(),this._instanceServiceContainer?(this._selectionChangedHandler=this._instanceServiceContainer.selectionService.onSelectionChanged.on(t=>{this.selectedItems=t.selectedElements}),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(t=>{this._changeOccured(null,!1)}),this.selectedItems=this._instanceServiceContainer.selectionService.selectedElements):this.selectedItems=[]}get selectedItems(){return this._selectedItems}set selectedItems(e){this._selectedItems!=e&&(this._selectedItems=e,this._selectedItemsSet())}async _selectedItemsSet(){let e=this._serviceContainer.propertyGroupService.getPropertygroups(this._selectedItems),t=new Set;for(let n of e){let s=this._propertyGridPropertyListsDict[n.name];s||(s=new Qe(this.serviceContainer),s.title=n.name,s.propertyGroupHover=this.propertyGroupHover,s.propertyGroupClick=this.propertyGroupClick,s.propertyContextMenuProvider=this.propertyContextMenuProvider,this._designerTabControl.appendChild(s),this._propertyGridPropertyLists.push(s),this._propertyGridPropertyListsDict[n.name]=s),s.setPropertiesService(n.propertiesService),await s.createElements(this._selectedItems[0])&&t.add(n.name)}let i=this._designerTabControl;for(let n of t){let s=this._propertyGridPropertyListsDict[n],o=s.scrollTop;i===this._designerTabControl?i.insertAdjacentElement("afterbegin",s):i.insertAdjacentElement("afterend",s),i=s,s.scrollTo(0,o)}for(let n of this._propertyGridPropertyLists)t.has(n.title)?n.style.display="block":n.style.display="none";this._designerTabControl.refreshItems(),this._designerTabControl.selectedIndex<0&&(this._designerTabControl.selectedIndex=0);for(let n of this._propertyGridPropertyLists)t.has(n.title)&&n.designItemsChanged(this._selectedItems);if(this._selectedItems){if(this._selectedItems.length==1){for(let n of this._propertyGridPropertyLists)t.has(n.title)&&n.refreshForDesignItems(this._selectedItems);this._observePrimarySelectionForChanges()}}else this._nodeReplacedCb?.dispose(),this._nodeReplacedCb=null}_blockDoubleRun=!1;async _changeOccured(e,t=!1){if(!this._blockDoubleRun){this._blockDoubleRun=!0;let i=this._selectedItems[0];if(i)for(let n of this._propertyGridPropertyLists)n.propertiesService?.getRefreshMode(i)==Y.fullOnValueChange&&(await n.createElements(i),n.designItemsChanged(this._selectedItems)),n.refreshForDesignItems(this._selectedItems);this._blockDoubleRun=!1}}_observePrimarySelectionForChanges(){this._nodeReplacedCb?.dispose(),this._nodeReplacedCb=this._selectedItems[0].nodeReplaced.on(()=>{this._observePrimarySelectionForChanges(),this._changeOccured(null,!0)})}};customElements.define("node-projects-web-component-designer-property-grid",Bd);ze();q();import{BaseCustomWebComponentLazyAppend as gx,css as yx,html as vx}from"@node-projects/base-custom-webcomponent";jt();var Hd=class extends gx{static style=yx`:host{display:block;height:100%;user-select:none;-webkit-user-select:none;background:var(--medium-grey,#2f3545);color:#fff}div.root{display:grid;grid-template-columns:11px 11px auto 1fr auto;padding:3px 6px;font-family:monospace;align-items:center}.desc{font-weight:700;font-size:10px;margin-right:5px}input{background:var(--medium-grey,#2f3545);border:solid 1px gray;color:#fff;width:calc(100% - 6px)}#type{color:wheat;white-space:nowrap;overflow:hidden;font-size:12px;height:20px;border:none}#pg{height:calc(100% - 64px)}`;static template=vx`<div class="root"><span style="grid-column:span 3" class="desc">Type:</span><input type="text" readonly="readonly" id="type"> <button id="config" style="display:none;grid-column:5;grid-row:span 3;height:calc(100% - 10px);margin-left:10px">config</button><div title="id" id="idRect" style="grid-column:1;width:7px;height:7px;border:1px solid #fff"></div><span id="idSpan" style="grid-column:span 2" class="desc">Id:</span><input type="text" id="id"><div title="innerHTML" id="innerRect" style="grid-column:1;width:7px;height:7px;border:1px solid #fff"></div><div title="textContent" id="contentRect" style="width:7px;height:7px;border:1px solid #fff"></div><span id="contentSpan" class="desc">Content:</span><input type="text" id="content"></div><node-projects-web-component-designer-property-grid id="pg"></node-projects-web-component-designer-property-grid>`;propertyGrid;_type;_id;_content;_selectionChangedHandler;_instanceServiceContainer;_idRect;_contentRect;_innerRect;_propertiesService;_configButton;constructor(){super(),this._restoreCachedInititalValues(),this._type=this._getDomElement("type"),this._id=this._getDomElement("id"),this._content=this._getDomElement("content"),this.propertyGrid=this._getDomElement("pg"),this._idRect=this._getDomElement("idRect"),this._contentRect=this._getDomElement("contentRect"),this._innerRect=this._getDomElement("innerRect"),this._configButton=this._getDomElement("config"),this._configButton.onclick=async()=>{let i=await(await this.serviceContainer?.getLastServiceWhereAsync("configUiService",async n=>await n.hasConfigUi(this._instanceServiceContainer.selectionService.primarySelection))).getConfigUi(this._instanceServiceContainer.selectionService.primarySelection);this.serviceContainer.globalContext.showConfigClicked.emit({designItem:this._instanceServiceContainer.selectionService.primarySelection,configUi:i})},this._propertiesService=new sl,this._idRect.oncontextmenu=t=>{t.preventDefault(),this._instanceServiceContainer.selectionService.primarySelection?.isRootItem||this._openContextMenu(t,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService.idProperty)},this._contentRect.oncontextmenu=t=>{t.preventDefault(),this._instanceServiceContainer.selectionService.primarySelection?.isRootItem||this._openContextMenu(t,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService.contentProperty)},this._innerRect.oncontextmenu=t=>{t.preventDefault(),this._instanceServiceContainer.selectionService.primarySelection?.isRootItem||this._openContextMenu(t,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService.innerHtmlProperty)},this._id.onkeydown=t=>{t.key=="Enter"?this._instanceServiceContainer.selectionService.primarySelection.id=this._id.value:t.key=="Escape"&&(this._id.value=this._instanceServiceContainer.selectionService.primarySelection?.id??"",t.preventDefault(),t.stopPropagation()),Qe.refreshIsSetElementAndEditorForDesignItems(this._idRect,this._propertiesService.idProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService)},this._content.onkeydown=t=>{t.key=="Enter"?(this._instanceServiceContainer.selectionService.primarySelection.content=this._content.value,this._content.title=this._content.value):t.key=="Escape"&&(this._content.value=this._instanceServiceContainer.selectionService.primarySelection?.element?.textContent??"",t.preventDefault(),t.stopPropagation()),Qe.refreshIsSetElementAndEditorForDesignItems(this._contentRect,this._propertiesService.contentProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService),Qe.refreshIsSetElementAndEditorForDesignItems(this._innerRect,this._propertiesService.innerHtmlProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService)};let e;this._id.onfocus=t=>{e=this._instanceServiceContainer.selectionService.primarySelection},this._id.onblur=t=>{e&&(e.id=this._id.value),e=null,Qe.refreshIsSetElementAndEditorForDesignItems(this._idRect,this._propertiesService.idProperty,this._instanceServiceContainer.selectionService.selectedElements,this._propertiesService)}}set serviceContainer(e){this.propertyGrid.serviceContainer=e}set instanceServiceContainer(e){let t=e;this._instanceServiceContainer=t,this._selectionChangedHandler?.dispose(),t?(this._selectionChangedHandler=t.selectionService.onSelectionChanged.on(async i=>{this.propertyGrid.instanceServiceContainer=t,await Pt(20),await this._refreshHeaderForCurrentSelection(t)}),this._refreshHeaderForCurrentSelection(t)):(this._configButton.style.display="none",this._id.value="",this._content.value="",this._id.disabled=!0,this._content.disabled=!0,this._idRect.style.background="",this._contentRect.style.background="",this._innerRect.style.background="",this._type.value=":host"),this.propertyGrid.instanceServiceContainer=t}async _refreshHeaderForCurrentSelection(e){if(!e?.selectionService?.primarySelection||e.selectionService.primarySelection?.isRootItem){this._configButton.style.display="none",this._id.value="",this._content.value="",this._id.disabled=!0,this._content.disabled=!0,this._idRect.style.background="",this._contentRect.style.background="",this._innerRect.style.background="",this._type.value=":host",this._type.title=this._type.value;return}this._id.disabled=!1,this._content.disabled=!1,await this.serviceContainer?.getLastServiceWhereAsync("configUiService",i=>i.hasConfigUi(e.selectionService.primarySelection))?this._configButton.style.display="block":this._configButton.style.display="none",e.selectionService.primarySelection?.nodeType==k.Element?this._type.value=e.selectionService.primarySelection?.name??"":this._type.value=e.selectionService.primarySelection?.node?.nodeName??"",this._type.title=this._type.value,this._id.value=e.selectionService.primarySelection?.id??"",e.selectionService.primarySelection?.element?.nodeType!=k.Element?this._content.value=e.selectionService.primarySelection?.content??"":e.selectionService.primarySelection?.element?.children?.length<=0?this._content.value=e.selectionService.primarySelection?.content??"":this._content.value="",this._content.title=this._content.value,Qe.refreshIsSetElementAndEditorForDesignItems(this._idRect,this._propertiesService.idProperty,e.selectionService.selectedElements,this._propertiesService),Qe.refreshIsSetElementAndEditorForDesignItems(this._contentRect,this._propertiesService.contentProperty,e.selectionService.selectedElements,this._propertiesService),Qe.refreshIsSetElementAndEditorForDesignItems(this._innerRect,this._propertiesService.innerHtmlProperty,e.selectionService.selectedElements,this._propertiesService)}_openContextMenu(e,t,i){let n;this.propertyGrid.propertyContextMenuProvider&&(n=this.propertyGrid.propertyContextMenuProvider(t,i)),n||(n=i.service.getContextMenu(t,i)),De.show(n,e)}};customElements.define("node-projects-web-component-designer-property-grid-with-header",Hd);import{css as Tx,DomHelper as Mx,html as Lx,BaseCustomWebComponentConstructorAppend as Ox}from"@node-projects/base-custom-webcomponent";me();oe();he();yt();import{BaseCustomWebComponentLazyAppend as wx,css as Sx,cssFromString as Cx,DomHelper as Gd,html as Ex,TypedEvent as Px}from"@node-projects/base-custom-webcomponent";se();var ii=T.Normal,dl=class{snapOffset=5;_overlayLayerView;_containerItem;_positionsH=[];_positionsMiddleH=[];_positionsV=[];_positionsMiddleV=[];_outerRect;constructor(e){this._overlayLayerView=e}initialize(e){this._containerItem=e}clearSnaplines(){this._overlayLayerView.removeAllNodesWithClass&&this._overlayLayerView.removeAllNodesWithClass("svg-snapline"),this._positionsH=[],this._positionsMiddleH=[],this._positionsV=[],this._positionsMiddleV=[]}calculateSnaplines(e){this.clearSnaplines();let t=this._containerItem.serviceContainer.snaplinesProviderService.provideSnaplines(this._containerItem,e);this._outerRect=t.outerRect,this._positionsH=t.positionsH,this._positionsMiddleH=t.positionsMiddleH,this._positionsV=t.positionsV,this._positionsMiddleV=t.positionsMiddleV}snapToPosition(e,t,i){let n=this.snapOffset+1,s,o;for(let c=0;c<this._positionsH.length;c++){let h=Math.abs(this._positionsH[c][0]-e.x);(h<n||h===n&&s===void 0)&&(n=h,s=[],o=this._positionsH[c][0]);let p;t&&(p=Math.abs(e.x+t.width-this._positionsH[c][0]),(p<n||p===n&&s===void 0)&&(n=p,s=[],o=this._positionsH[c][0]-t.width)),h===n&&s.push(this._positionsH[c][1]),t&&p===n&&h!==n&&s.push(this._positionsH[c][1])}if(t)for(let c=0;c<this._positionsMiddleH.length;c++){let h=Math.abs(this._positionsMiddleH[c][0]-(e.x+t.width/2));(h<n||h===n&&s===void 0)&&(n=h,s=[],o=this._positionsMiddleH[c][0]-t.width/2),h===n&&s.push(this._positionsMiddleH[c][1])}n=this.snapOffset+1;let a,l;for(let c=0;c<this._positionsV.length;c++){let h=Math.abs(this._positionsV[c][0]-e.y);(h<n||h===n&&a===void 0)&&(n=h,a=[],l=this._positionsV[c][0]);let p;t&&(p=Math.abs(e.y+t.height-this._positionsV[c][0]),(p<n||p===n&&a===void 0)&&(n=p,a=[],l=this._positionsV[c][0]-t.height)),h===n&&a.push(this._positionsV[c][1]),t&&p===n&&h!==n&&a.push(this._positionsV[c][1])}if(t)for(let c=0;c<this._positionsMiddleV.length;c++){let h=Math.abs(this._positionsMiddleV[c][0]-(e.y+t.height/2));(h<n||h===n&&a===void 0)&&(n=h,a=[],l=this._positionsMiddleV[c][0]-t.height/2),h===n&&a.push(this._positionsMiddleV[c][1])}if(this._overlayLayerView.removeAllNodesWithClass("svg-snapline"),s!==void 0||a!==void 0){let c={x:s!==void 0?o:e.x,y:a!==void 0?l:e.y};return this.drawSnaplines(c,t,s,a),{x:s!==void 0?o:null,y:a!==void 0?l:null}}return{x:null,y:null}}drawSnaplines(e,t,i,n){if(i){let s=e.y,o=e.y;for(let a of i){let l=a.y-this._outerRect.top;s=s<l?s:l,o=o>l?o:l}for(let a of i){if(a.x-this._outerRect.left==e.x||t&&a.x-this._outerRect.left==e.x+t.width){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",a.x-this._outerRect.x),c.setAttribute("x2",a.x-this._outerRect.x),c.setAttribute("y1",s),c.setAttribute("y2",o),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,ii)}if(a.x-this._outerRect.left+a.width==e.x||t&&a.x-this._outerRect.left+a.width==e.x+t.width){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",a.x-this._outerRect.x+a.width),c.setAttribute("x2",a.x-this._outerRect.x+a.width),c.setAttribute("y1",s),c.setAttribute("y2",o),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,ii)}if(t&&a.x-this._outerRect.left+a.width/2==e.x+t.width/2){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",a.x-this._outerRect.x+a.width/2),c.setAttribute("x2",a.x-this._outerRect.x+a.width/2),c.setAttribute("y1",s),c.setAttribute("y2",o),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,ii)}let l=document.createElementNS("http://www.w3.org/2000/svg","rect");l.setAttribute("x",a.x-this._outerRect.x),l.setAttribute("width",a.width),l.setAttribute("y",a.y-this._outerRect.y),l.setAttribute("height",a.height),l.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,l,ii)}}if(n){let s=e.x,o=e.x;for(let a of n){let l=a.x-this._outerRect.left;s=s<l?s:l,o=o>l?o:l}for(let a of n){if(a.y-this._outerRect.top==e.y||t&&a.y-this._outerRect.top==e.y+t.height){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",s),c.setAttribute("x2",o),c.setAttribute("y1",a.y-this._outerRect.y),c.setAttribute("y2",a.y-this._outerRect.y),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,ii)}if(a.y-this._outerRect.top+a.height==e.y||t&&a.y-this._outerRect.top+a.height==e.y+t.height){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",s),c.setAttribute("x2",o),c.setAttribute("y1",a.y-this._outerRect.y+a.height),c.setAttribute("y2",a.y-this._outerRect.y+a.height),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,ii)}if(t&&a.y-this._outerRect.top+a.height/2==e.y+t.height/2){let c=document.createElementNS("http://www.w3.org/2000/svg","line");c.setAttribute("x1",s),c.setAttribute("x2",o),c.setAttribute("y1",a.y-this._outerRect.y+a.height/2),c.setAttribute("y2",a.y-this._outerRect.y+a.height/2),c.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,c,ii)}let l=document.createElementNS("http://www.w3.org/2000/svg","rect");l.setAttribute("x",a.x-this._outerRect.x),l.setAttribute("width",a.width),l.setAttribute("y",a.y-this._outerRect.y),l.setAttribute("height",a.height),l.setAttribute("class","svg-snapline"),this._overlayLayerView.addOverlay(this.constructor.name,l,ii)}}}};Mt();wn();st();oe();q();st();Tt();function G(r,e){let t=e.get(r);return t||(t=new Map,e.set(r,t),t)}var ul=class r{designerCanvas;designItemsWithExtentions=new Set;_timeout;_appliedDesignerExtensions=new WeakMap;_shouldAppliedDesignerExtensions=new WeakMap;_lastApplyEventPerType=new WeakMap;_lastPrimarySelectionRefreshItem;constructor(e){lm(),this.designerCanvas=e,e.instanceServiceContainer.selectionService.onSelectionChanged.on(this._selectedElementsChanged.bind(this)),e.instanceServiceContainer.selectionService.onSelectionRefresh.on(this._selectedElementsRefresh.bind(this)),e.instanceServiceContainer.onContentChanged.on(this._contentChanged.bind(this)),e.serviceContainer.globalContext.onToolChanged.on(()=>{this.removeExtension(e.instanceServiceContainer.selectionService.primarySelection,I.PrimarySelectionRefreshed),this._lastPrimarySelectionRefreshItem=null})}connected(){this.ensurePermanentRootExtensionsApplied(),this._timeout||(this._timeout=setTimeout(()=>this.refreshAllExtensionsTimeout(),20))}disconnected(){this._timeout&&clearTimeout(this._timeout),this._timeout=null}refreshAllExtensionsTimeout(){this.refreshAllAppliedExtentions(),this._timeout=setTimeout(()=>this.refreshAllExtensionsTimeout(),20)}ensurePermanentRootExtensionsApplied(){let e=this.designerCanvas.rootDesignItem;e&&(G(e,this._appliedDesignerExtensions).get(I.Permanent)?.length||this.applyExtension(e,I.Permanent))}_contentChanged(e){requestAnimationFrame(()=>{for(let t of e)switch(t.changeType){case"added":this.applyExtensions(t.designItems,I.Permanent,null,!0);break;case"moved":this.refreshExtensions(t.designItems,I.Permanent);break;case"parsed":this.ensurePermanentRootExtensionsApplied(),this.applyExtensions(Array.from(this.designerCanvas.rootDesignItem.children()),I.Permanent,null,!0);break;case"removed":this.removeExtensions(t.designItems,!0,I.Permanent);break}})}_selectedElementsChanged(e){if(this._lastPrimarySelectionRefreshItem=null,e.oldSelectedElements&&e.oldSelectedElements.length&&(this.removeExtension(e.oldSelectedElements[0],I.PrimarySelectionRefreshed),this.removeExtension(e.oldSelectedElements[0],I.PrimarySelection),this.removeExtension(e.oldSelectedElements[0],I.PrimarySelectionAndCanBeEntered),this.removeExtension(e.oldSelectedElements[0],I.OnlyOneItemSelected),this.removeExtensions(e.oldSelectedElements,!1,I.Selection),this.removeExtensions(e.oldSelectedElements,!1,I.MultipleItemsSelected),e.oldSelectedElements[0].parent)){let t=O.GetOrCreateDesignItem(e.oldSelectedElements[0].parent.element,e.oldSelectedElements[0].parent.element,this.designerCanvas.serviceContainer,this.designerCanvas.instanceServiceContainer);this.removeExtension(t,I.PrimarySelectionContainer),this.removeExtension(t,I.PrimarySelectionContainerAndCanBeEntered)}if(e.selectedElements&&e.selectedElements.length&&(this.applyExtensions(e.selectedElements,I.Selection,e.event),this.applyExtension(e.selectedElements[0],I.PrimarySelection,e.event),e.selectedElements.length===1?this.applyExtension(e.selectedElements[0],I.OnlyOneItemSelected,e.event):e.selectedElements.length>1&&this.applyExtension(e.selectedElements[0],I.MultipleItemsSelected,e.event),e.selectedElements[0].getPlacementService()?.isEnterableContainer(e.selectedElements[0])&&this.applyExtension(e.selectedElements[0],I.PrimarySelectionAndCanBeEntered,e.event),e.selectedElements[0].parent)){let t=O.GetOrCreateDesignItem(e.selectedElements[0].parent.element,e.selectedElements[0].parent.element,this.designerCanvas.serviceContainer,this.designerCanvas.instanceServiceContainer);this.applyExtension(t,I.PrimarySelectionContainer,e.event),t.getPlacementService()?.isEnterableContainer(t)&&this.applyExtension(t,I.PrimarySelectionContainerAndCanBeEntered,e.event)}}_selectedElementsRefresh(e){this.refreshAllAppliedExtentions(e.event),e.selectedElements&&e.selectedElements.length&&this._lastPrimarySelectionRefreshItem?.deref()===e.selectedElements[0]&&(this._appliedDesignerExtensions.get(e.selectedElements[0])?.get(I.PrimarySelectionRefreshed)||this.applyExtension(e.selectedElements[0],I.PrimarySelectionRefreshed,e.event)),this._lastPrimarySelectionRefreshItem=new WeakRef(e.selectedElements[0])}applyExtension(e,t,i,n=!1){if(e&&e.nodeType==k.Element){let s=this.designerCanvas.serviceContainer.designerExtensions.get(t),o=[];if(s){let a={};At();for(let l of s){let c=G(e,this._shouldAppliedDesignerExtensions).get(t);if(c||(c=[]),c.push(l),G(e,this._shouldAppliedDesignerExtensions).set(t,c),l.shouldExtend(this,this.designerCanvas,e)){let h=G(e,this._appliedDesignerExtensions).get(t);h||(h=[]);let p=l.getExtension(this,this.designerCanvas,e);try{p.extend(a,i),o.push(p),i?G(e,this._lastApplyEventPerType).set(t,i):G(e,this._lastApplyEventPerType).delete(t)}catch(d){console.error(d)}h.push(p),G(e,this._appliedDesignerExtensions).set(t,h),this.designItemsWithExtentions.add(e)}}}if(n)for(let a of e.children())this.applyExtension(a,t,i,n);return o}return null}applyExtensions(e,t,i,n=!1){if(this.designerCanvas.overlayLayer.startBatch(),e){let s=this.designerCanvas.serviceContainer.designerExtensions.get(t);if(s){let o={};At();for(let a of s)for(let l of e){let c=G(l,this._shouldAppliedDesignerExtensions).get(t);if(c||(c=[]),c.push(a),G(l,this._shouldAppliedDesignerExtensions).set(t,c),a.shouldExtend(this,this.designerCanvas,l)){let h=G(l,this._appliedDesignerExtensions).get(t);h||(h=[]);let p=a.getExtension(this,this.designerCanvas,l);try{p.extend(o,i),i?G(l,this._lastApplyEventPerType).set(t,i):G(l,this._lastApplyEventPerType).delete(t)}catch(d){console.error(d)}h.push(p),G(l,this._appliedDesignerExtensions).set(t,h),this.designItemsWithExtentions.add(l)}}}if(n)for(let o of e)this.applyExtensions(Array.from(o.children()),t,i,n)}this.designerCanvas.overlayLayer.endBatch()}applyExtensionInstance(e,t,i=I.Directly){let n=G(e,this._appliedDesignerExtensions).get(I.Directly);n||(n=[]);try{t.extend(null,null)}catch(s){console.error(s)}n.push(t),G(e,this._appliedDesignerExtensions).set(i,n),this.designItemsWithExtentions.add(e)}removeExtensionInstance(e,t){for(let i of G(e,this._appliedDesignerExtensions)){let n=i[1].indexOf(t);if(n>=0){try{t.dispose()}catch(s){console.error(s)}i[1].splice(n,1),i[1].length==0&&(G(e,this._appliedDesignerExtensions).delete(i[0]),G(e,this._shouldAppliedDesignerExtensions).delete(i[0])),G(e,this._appliedDesignerExtensions).size||this.designItemsWithExtentions.delete(e)}}}removeExtension(e,t){if(e)if(t){G(e,this._shouldAppliedDesignerExtensions).delete(t);let i=G(e,this._appliedDesignerExtensions).get(t);if(i){for(let n of i)try{n.dispose(),G(e,this._lastApplyEventPerType).delete(t)}catch(s){console.error(s)}G(e,this._appliedDesignerExtensions).delete(t),G(e,this._appliedDesignerExtensions).size||this.designItemsWithExtentions.delete(e)}}else{G(e,this._shouldAppliedDesignerExtensions).clear();for(let i of G(e,this._appliedDesignerExtensions))for(let n of i[1])try{n.dispose()}catch(s){console.error(s)}G(e,this._appliedDesignerExtensions).clear(),this.designItemsWithExtentions.delete(e)}}removeExtensions(e,t,i){if(e)if(i)for(let n of e){t&&n.hasChildren&&this.removeExtensions([...n.children()],!0,i),G(n,this._shouldAppliedDesignerExtensions).delete(i);let s=G(n,this._appliedDesignerExtensions).get(i);if(s){for(let o of s)try{o.dispose(),G(n,this._lastApplyEventPerType).delete(i)}catch(a){console.error(a)}G(n,this._appliedDesignerExtensions).delete(i),G(n,this._appliedDesignerExtensions).size||this.designItemsWithExtentions.delete(n)}}else for(let n of e){t&&n.hasChildren&&this.removeExtensions([...n.children()],!0,i),G(n,this._shouldAppliedDesignerExtensions).clear();for(let s of G(n,this._appliedDesignerExtensions))for(let o of s[1])try{o.dispose()}catch(a){console.error(a)}G(n,this._appliedDesignerExtensions).clear(),this.designItemsWithExtentions.delete(n)}}removeAllExtensions(){this.designItemsWithExtentions.forEach(e=>{G(e,this._shouldAppliedDesignerExtensions).clear();for(let t of G(e,this._appliedDesignerExtensions))for(let i of t[1])try{i.dispose()}catch(n){console.error(n)}G(e,this._appliedDesignerExtensions).clear()}),this.designItemsWithExtentions.clear()}refreshExtension(e,t,i){if(!(this.designerCanvas.checkVisibility&&!this.designerCanvas.checkVisibility())&&e)if(t)if(!e.element.isConnected)this.removeExtension(e,t);else{let n=G(e,this._appliedDesignerExtensions).get(t);if(n){let s={};At();for(let o of n)try{o.refresh(s,i),i&&G(e,this._lastApplyEventPerType).set(t,i)}catch(a){console.error(a)}}}else{let n={};At();for(let s of G(e,this._appliedDesignerExtensions))for(let o of s[1])try{o.refresh(n,i)}catch(a){console.error(a)}}}refreshExtensions(e,t,i,n,s){if(this.designerCanvas.checkVisibility&&!this.designerCanvas.checkVisibility())return;this.designerCanvas.overlayLayer.startBatch();let o=performance.now();if(e)if(t){let a={};At();e:for(let l of e)if(!l.element.isConnected)this.removeExtension(l,t);else{let c=G(l,this._appliedDesignerExtensions).get(t);if(c)for(let h of c)try{if(h!=n&&h.refresh(a,i),s&&performance.now()-o>s){console.warn("refreshExtensions() took too long, stopped refreshing");break e}}catch(p){console.error(p)}}}else{let a={};At();e:for(let l of e)for(let c of G(l,this._appliedDesignerExtensions))for(let h of c[1])try{if(h!=n&&(h.refresh(a,i),i&&G(l,this._lastApplyEventPerType).set(t,i),s&&performance.now()-o>s)){console.warn("refreshExtensions() took too long, stopped refreshing");break e}}catch(p){console.error(p)}}this.designerCanvas.overlayLayer.endBatch()}refreshAllExtensions(e,t,i){this.designerCanvas.overlayLayer.startBatch(),e&&(this.refreshExtensions(e,I.Directly,i,t),this.refreshExtensions(e,I.Permanent,i,t),this.refreshExtensions(e,I.Selection,i,t),this.refreshExtensions(e,I.PrimarySelection,i,t),this.refreshExtensions(e,I.PrimarySelectionContainer,i,t),this.refreshExtensions(e,I.MouseOver,i,t),this.refreshExtensions(e,I.OnlyOneItemSelected,i,t),this.refreshExtensions(e,I.MultipleItemsSelected,i,t),this.refreshExtensions(e,I.ContainerDragOverAndCanBeEntered,i,t),this.refreshExtensions(e,I.ContainerDrag,i,t),this.refreshExtensions(e,I.Doubleclick,i,t),this.refreshExtensions(e,I.Placement,i,t),this.refreshExtensions(e,I.PrimarySelectionAndCanBeEntered,i,t),this.refreshExtensions(e,I.PrimarySelectionContainerAndCanBeEntered,i,t)),this.designerCanvas.overlayLayer.endBatch()}refreshAllAppliedExtentions(e){this.designerCanvas.fillCalculationrects(),this.refreshAllExtensions([...this.designItemsWithExtentions],null,e)}reapplyAllAppliedExtentions(e,t){this.designerCanvas.overlayLayer.startBatch();for(let i of r.getAllChildElements(this.designerCanvas.rootDesignItem))if(!e||e.includes(i)){let n=[...G(i,this._shouldAppliedDesignerExtensions).keys()];for(let s of n){let o=G(i,this._lastApplyEventPerType).get(s);this.removeExtension(i,s),(t==null||t.includes(s))&&this.applyExtension(i,s,o)}}this.designerCanvas.overlayLayer.endBatch()}static*getAllChildElements(e){if(e.nodeType==k.Element&&(yield e),e.hasChildren)for(let t of e.children())for(let i of r.getAllChildElements(t))yield i}};Dt();ja();ze();se();import{css as _x,html as xx,BaseCustomWebComponentConstructorAppend as bx}from"@node-projects/base-custom-webcomponent";var sn=class r extends bx{static template=xx`<svg id="svg" style="pointer-events:none"><defs id="defs"></defs><g id="background"></g><g id="normal"></g><g id="foreground"></g></svg>`;static style=_x`svg{width:100%;height:100%;overflow:visible}.svg-invisible{stroke:transparent;fill:transparent;pointer-events:auto}.svg-snapline{stroke:purple;stroke-dasharray:4;fill:transparent}.svg-selector{stroke:#000;fill:#3899ec55;stroke-width:1;stroke-dasharray:2}.svg-primary-selection-move{stroke:#3899ec;fill:#3899ec;cursor:move;pointer-events:auto}.svg-position{stroke:#000;stroke-dasharray:2}.svg-path{stroke:#3899ec;fill:orange;pointer-events:auto}.svg-path-line{stroke:#3899ec;stroke-dasharray:2}.svg-draw-new-element{stroke:#000;fill:transparent;stroke-width:1}.svg-toolbar-container{overflow:visible}.svg-toolbar-container>div{padding:5px;display:flex;gap:2px;background:#fff;border-radius:4px;box-shadow:0 2px 10px 0 rgba(19,23,32,.2);align-items:center}node-projects-image-button-list-selector img{height:16px;border:1px solid #000;border-radius:4px;box-sizing:border-box;pointer-events:auto;cursor:pointer}node-projects-image-button-list-selector img:hover{background:#d3d3d3}node-projects-image-button-list-selector img:active{translate:1px 1px}`;static is="node-projects-overlay-layer-view";_serviceContainer;_svg;_gBackground;_gNormal;_gForeground;_defs;_id=0;constructor(e){super(),this._serviceContainer=e,this._svg=this._getDomElement("svg"),this._gBackground=this._getDomElement("background"),this._gNormal=this._getDomElement("normal"),this._gForeground=this._getDomElement("foreground"),this._defs=this._getDomElement("defs"),this._initialize()}_initialize(){let e=[r.style],t=new Set;for(let i of this._serviceContainer.designerExtensions)for(let n of i[1]){if(n.constructor.style)if(Array.isArray(n.constructor.style))for(let s of n.constructor.style)t.has(s)||(t.add(s),e.push(s));else t.has(n.constructor.style)||(t.add(n.constructor.style),e.push(n.constructor.style));if(n.style)if(Array.isArray(n.style))for(let s of n.style)t.has(s)||(t.add(s),e.push(s));else t.has(n.style)||(t.add(n.style),e.push(n.style));if(n.svgDefs){if(Array.isArray(n.svgDefs)){for(let s of n.svgDefs)if(!t.has(s)){t.add(s);let o=document.createElementNS("http://www.w3.org/2000/svg","defs");o.innerHTML=s;for(let a of[...o.children])this._defs.appendChild(a)}}else if(!t.has(n.svgDefs)){t.add(n.svgDefs);let s=document.createElementNS("http://www.w3.org/2000/svg","defs");s.innerHTML=n.svgDefs;for(let o of[...s.children])this._defs.appendChild(o)}}if(n.constructor.svgDefs){if(Array.isArray(n.constructor.svgDefs)){for(let s of n.constructor.svgDefs)if(!t.has(s)){t.add(s);let o=document.createElementNS("http://www.w3.org/2000/svg","defs");o.innerHTML=s;for(let a of[...o.children])this._defs.appendChild(a)}}else if(!t.has(n.constructor.svgDefs)){t.add(n.constructor.svgDefs);let s=document.createElementNS("http://www.w3.org/2000/svg","defs");s.innerHTML=n.constructor.svgDefs;for(let o of[...s.children])this._defs.appendChild(o)}}}for(let i of this._serviceContainer.designerPointerExtensions)if(i.style&&(t.has(i.style)||(t.add(i.style),e.push(i.style))),i.svgDefs&&!t.has(i.svgDefs)){t.add(i.svgDefs);let n=document.createElementNS("http://www.w3.org/2000/svg","defs");n.innerHTML=i.svgDefs;for(let s of[...n.children])this._defs.appendChild(s)}if(this._serviceContainer.overlayLayerViewAdditionalStyles)for(let i of this._serviceContainer.overlayLayerViewAdditionalStyles)t.has(i)||(t.add(i),e.push(i));this.shadowRoot.adoptedStyleSheets=e}backgroundFragment;foregroundFragment;normalFragment;batchCount=0;startBatch(){this.batchCount==0&&(this.backgroundFragment=document.createDocumentFragment(),this.foregroundFragment=document.createDocumentFragment(),this.normalFragment=document.createDocumentFragment()),this.batchCount++}endBatch(){this.batchCount--,this.batchCount==0&&(this.backgroundFragment.hasChildNodes&&this._gBackground.appendChild(this.backgroundFragment),this.foregroundFragment.hasChildNodes&&this._gForeground.appendChild(this.foregroundFragment),this.normalFragment.hasChildNodes&&this._gNormal.appendChild(this.normalFragment),this.backgroundFragment=null,this.foregroundFragment=null,this.normalFragment=null)}addOverlay(e,t,i=T.Normal){switch(t.setAttribute("overlay-source",e),i){case T.Background:this.backgroundFragment?this.backgroundFragment.appendChild(t):this._gBackground.appendChild(t);break;case T.Foreground:this.foregroundFragment?this.foregroundFragment.appendChild(t):this._gForeground.appendChild(t);break;default:this.normalFragment?this.normalFragment.appendChild(t):this._gNormal.appendChild(t);break}}removeOverlay(e){try{e?.parentElement?.removeChild(e)}catch(t){console.error(t)}}removeAllNodesWithClass(e){let t=this._svg.querySelectorAll("."+e);for(let i of t)i.parentNode.removeChild(i)}removeAllOverlays(){let e=this._svg.querySelectorAll("svg > g > *");for(let t of e)t.parentNode.removeChild(t)}createPoint(){return this._svg.createSVGPoint()}drawGroup(e,t,i,n){return i||(i=document.createElementNS("http://www.w3.org/2000/svg","g"),this.addOverlay(e,i,n)),t&&i.setAttribute("class",t),i}drawLine(e,t,i,n,s,o,a,l){return a||(a=document.createElementNS("http://www.w3.org/2000/svg","line"),this.addOverlay(e,a,l)),a.setAttribute("x1",t),a.setAttribute("y1",i),a.setAttribute("x2",n),a.setAttribute("y2",s),o&&a.setAttribute("class",o),a}drawCircle(e,t,i,n,s,o,a){return o||(o=document.createElementNS("http://www.w3.org/2000/svg","circle"),this.addOverlay(e,o,a)),o.setAttribute("cx",t),o.setAttribute("cy",i),o.setAttribute("r",n),s&&o.setAttribute("class",s),o}drawRect(e,t,i,n,s,o,a,l){return a||(a=document.createElementNS("http://www.w3.org/2000/svg","rect"),this.addOverlay(e,a,l)),a.setAttribute("x",t),a.setAttribute("y",i),a.setAttribute("width",n),a.setAttribute("height",s),o&&a.setAttribute("class",o),a}drawPath(e,t,i,n,s){return n||(n=document.createElementNS("http://www.w3.org/2000/svg","path"),this.addOverlay(e,n,s)),n.setAttribute("d",t),i&&n.setAttribute("class",i),n}drawText(e,t,i,n,s,o,a){return o||(o=document.createElementNS("http://www.w3.org/2000/svg","text"),this.addOverlay(e,o,a)),o.setAttribute("x",i),o.setAttribute("y",n),o.textContent=t,s&&o.setAttribute("class",s),o}drawHTML(e,t,i,n,s,o,a,l,c){return l||(l=document.createElementNS("http://www.w3.org/2000/svg","foreignObject"),this.addOverlay(e,l,c)),l.setAttribute("x",i),l.setAttribute("y",n),l.setAttribute("width",s),l.setAttribute("height",o),typeof t=="string"?l.innerHTML=t:l.appendChild(t),a&&l.setAttribute("class",a),l}drawTextWithBackground(e,t,i,n,s,o,a,l){if(!a){let c=document.createElementNS("http://www.w3.org/2000/svg","filter");c.setAttribute("x","0"),c.setAttribute("y","0"),c.setAttribute("width","1"),c.setAttribute("height","1"),c.setAttribute("id","solid_"+ ++this._id);let h=document.createElementNS("http://www.w3.org/2000/svg","feFlood");h.setAttribute("flood-color",s),c.appendChild(h);let p=document.createElementNS("http://www.w3.org/2000/svg","feComposite");p.setAttribute("in","SourceGraphic"),p.setAttribute("operator","xor"),c.appendChild(p),this._defs.appendChild(c);let d=document.createElementNS("http://www.w3.org/2000/svg","text");d.setAttribute("filter","url(#solid_"+this._id+")");let u=document.createElementNS("http://www.w3.org/2000/svg","text");this.addOverlay(e,d,l),this.addOverlay(e,u,l),c.setAttribute("overlay-source",e),h.setAttribute("overlay-source",e),a=[c,h,d,u]}return a[2].setAttribute("x",i),a[3].setAttribute("x",i),a[2].setAttribute("y",n),a[3].setAttribute("y",n),a[2].textContent=t,a[3].textContent=t,o&&(a[2].setAttribute("class",o),a[3].setAttribute("class",o)),a}};customElements.define(sn.is,sn);jt();q();Le();function Mf(r,e){let t=new r.CSSStyleSheet;return t.replaceSync(e),t}Tt();$e();de();var Ix=Cx`*{animation-play-state:paused!important}`,on=class extends wx{serviceContainer;instanceServiceContainer;containerBoundingRect;outerRect;clickOverlay;_activeTool;_gridSize=10;get gridSize(){return this._gridSize}set gridSize(e){this._gridSize=e;let t=document.createElement("canvas"),i=t.getContext("2d");t.width=e*2,t.height=e*2;let n=e;for(let o=0;o<t.width;o+=n)for(let a=0;a<t.height;a+=n)i.fillStyle=(o+a)%(n*2)===0?"#e5e5e5":"white",i.fillRect(o,a,n,n);let s=t.toDataURL();this._backgroundImage="url("+s+")",this._canvas.style.backgroundImage!="none"&&(this._canvas.style.backgroundImage=this._backgroundImage)}pasteOffset=10;alignOnGrid=!1;alignOnSnap=!0;snapLines;overlayLayer;rootDesignItem;_currentPasteOffset=this.pasteOffset;_zoomFactor=1;_scaleFactor=1;_canvasOffset={x:0,y:0};_additionalStyle;_backgroundImage;_enableSelectTextNodesOnClick=!1;_moveGroup;_touchGestureHelper;get zoomFactor(){return this._zoomFactor}set zoomFactor(e){this._zoomFactor=e,this._zoomFactorChanged()}get scaleFactor(){return this._scaleFactor}get canvasOffset(){return this._canvasOffset}set canvasOffset(e){this._canvasOffset=e,this._zoomFactorChanged()}get canvasOffsetUnzoomed(){return{x:this._canvasOffset.x*this.zoomFactor,y:this._canvasOffset.y*this.zoomFactor}}set canvasOffsetUnzoomed(e){this.canvasOffset={x:e.x/this.zoomFactor,y:e.y/this.zoomFactor}}_pauseAnimations;get pauseAnimations(){return this._pauseAnimations}set pauseAnimations(e){this._pauseAnimations=e,this.applyAllStyles()}get containerOffset(){return this._useIframe?this._outercanvas2.getBoundingClientRect():{x:0,y:0}}raiseDesignItemsChanged(e,t,i){this.designItemsChanged&&this.designItemsChanged(e,t,i)}designItemsChanged;onZoomFactorChanged=new Px;get canvas(){return this._canvas}get outercanvas2(){return this._outercanvas2}_canvas;_canvasShadowRoot;_canvasContainer;_outercanvas2;_lastHoverDesignItem;_firstConnect;static style=Sx`:host{display:block;box-sizing:border-box;width:100%;position:relative;transform:translateZ(0);overflow:hidden;font-family:inherit;font-size:inherit;font-weight:inherit;font-style:inherit;line-height:inherit}*{touch-action:none}#node-projects-designer-canvas-canvasContainer{background:var(--node-projects-web-component-designer-background,border-box fixed 0 0 repeat url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAIAAAAC64paAAAFXmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgZXhpZjpQaXhlbFhEaW1lbnNpb249IjIwIgogICBleGlmOlBpeGVsWURpbWVuc2lvbj0iMjAiCiAgIGV4aWY6Q29sb3JTcGFjZT0iMSIKICAgdGlmZjpJbWFnZVdpZHRoPSIyMCIKICAgdGlmZjpJbWFnZUxlbmd0aD0iMjAiCiAgIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiCiAgIHRpZmY6WFJlc29sdXRpb249IjMwMC8xIgogICB0aWZmOllSZXNvbHV0aW9uPSIzMDAvMSIKICAgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIKICAgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIgogICB4bXA6TW9kaWZ5RGF0ZT0iMjAyMi0xMi0wOFQwOToxNTo0OCswMTowMCIKICAgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMi0xMi0wOFQwOToxNTo0OCswMTowMCI+CiAgIDxkYzp0aXRsZT4KICAgIDxyZGY6QWx0PgogICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+QmFja2dyb3VuZGdyaWRfMTBweDwvcmRmOmxpPgogICAgPC9yZGY6QWx0PgogICA8L2RjOnRpdGxlPgogICA8eG1wTU06SGlzdG9yeT4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkKICAgICAgc3RFdnQ6YWN0aW9uPSJwcm9kdWNlZCIKICAgICAgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWZmaW5pdHkgRGVzaWduZXIgMS4xMC42IgogICAgICBzdEV2dDp3aGVuPSIyMDIyLTEyLTA4VDA5OjE1OjQ4KzAxOjAwIi8+CiAgICA8L3JkZjpTZXE+CiAgIDwveG1wTU06SGlzdG9yeT4KICA8L3JkZjpEZXNjcmlwdGlvbj4KIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjw/eHBhY2tldCBlbmQ9InIiPz4fvgn+AAABgWlDQ1BzUkdCIElFQzYxOTY2LTIuMQAAKJF1kc8rRFEUxz8GjRhRLCiLl7BCftTExmLkV2ExnvJr8+bNvBk1b+b13kiyVbaKEhu/FvwFbJW1UkRKlrImNug5b2ZqJplzO/d87vfec7r3XPCpSd10KnrATGXs8FhImZtfUPwvBKjCTx/Nmu5YUzOjKiXt854yL952ebVKn/vXaqIxR4eyKuEh3bIzwuPCk6sZy+Md4UY9oUWFz4Q7bbmg8J2nR3L86nE8x98e22p4GHz1wkq8iCNFrCdsU1heTpuZXNHz9/FeEoilZmcktoq34BBmjBAKE4wwTJBeBmUO0iX96ZYVJfJ7svnTpCVXl9liDZtl4iTI0CnqilSPSTREj8lIsub1/29fHaO/L1c9EILKZ9d9bwf/Nvxsue7Xkev+HEP5E1ymCvnpQxj4EH2roLUdQN0GnF8VtMguXGxC06Ol2VpWKhf3GQa8nULtPDTcQPVirmf5fU4eQF2Xr7qGvX3okPN1S790cWfsRnax1QAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAC9JREFUOI1jfPr0KQNuICUlhUeWCY8cQTCqeWRoZvz//z8e6WfPntHK5lHNI0MzAMChCNMTuPcnAAAAAElFTkSuQmCC))}#node-projects-designer-canvas-canvas{image-rendering:pixelated;box-sizing:border-box;width:100%;height:100%;transform-origin:0 0;position:absolute}#node-projects-designer-canvas-canvas.dragFileActive{outline:#00f 4px solid;outline-offset:-4px}node-projects-overlay-layer-view{box-sizing:border-box;width:100%;height:100%;position:absolute;top:0;left:0;pointer-events:none;overflow:visible;user-select:none;-webkit-user-select:none;z-index:999999999999}#node-projects-designer-canvas-canvas *{cursor:pointer;user-select:none;-webkit-user-select:none}#node-projects-designer-canvas-canvas iframe{cursor:pointer;user-select:none;-webkit-user-select:none;border:none;width:100%;height:100%}#node-projects-designer-canvas-clickOverlay{position:absolute;width:100%;height:100%;top:0}#node-projects-designer-canvas-helper-element{height:0;width:0}#node-projects-designer-search-container{position:absolute;display:grid;grid-template-columns:1fr auto auto;align-items:center;justify-content:left;gap:8px;width:auto;right:10px;top:0;background:#f2f2f2;padding:5px 6px;border-bottom-left-radius:5px;border-bottom-right-radius:5px}#node-projects-designer-search-container>#node-projects-designer-search-bar{border:1px solid #000;padding:0;display:grid;grid-template-columns:1fr auto;align-items:center;background-color:#fff;padding:1px 2px}#node-projects-designer-search-container>div>input{height:20px;padding-left:6px;font-size:13px;border:none;outline:0}#node-projects-designer-search-container>div>#node-projects-designer-search-start{height:22px;border:none;background-color:#fff;font-size:13px}#node-projects-designer-search-container>div>#node-projects-designer-search-start:hover{background-color:#d3d3d3;transition:.9s;border-radius:2px}#node-projects-designer-search-container>#node-projects-designer-search-close{position:relative;width:20px;height:20px;border:none;background-color:transparent}#node-projects-designer-search-container>span{font-family:sans-serif;font-size:12px}#node-projects-designer-search-container>#node-projects-designer-search-close::after,#node-projects-designer-search-container>#node-projects-designer-search-close::before{content:"";position:absolute;top:50%;left:50%;width:60%;background-color:#000;height:1px}#node-projects-designer-search-container>#node-projects-designer-search-close::before{transform:translate(-50%,-50%) rotate(45deg)}#node-projects-designer-search-container>#node-projects-designer-search-close::after{transform:translate(-50%,-50%) rotate(-45deg)}`;static template=Ex`<div style="display:flex;flex-direction:column;width:100%;height:100%;margin:0!important;padding:0!important;border:none!important"><div style="width:100%;height:100%;margin:0!important;padding:0!important;border:none!important"><div id="node-projects-designer-canvas-outercanvas2" style="width:100%;height:100%;position:relative;margin:0!important;padding:0!important;border:none!important;isolation:isolate!important"><div id="node-projects-designer-canvas-canvasContainer" style="width:100%;height:100%;position:absolute;top:0;left:0;user-select:none;margin:0!important;padding:0!important;border:none!important"><div id="node-projects-designer-canvas-canvas" part="canvas"></div></div></div><div id="node-projects-designer-canvas-clickOverlay" tabindex="0" style="pointer-events:auto;margin:0!important;padding:0!important;border:none!important"></div></div><div id="node-projects-designer-search-container" style="display:none"><div id="node-projects-designer-search-bar"><input id="node-projects-designer-search-input"> <button id="node-projects-designer-search-start">↓</button></div><span id="node-projects-designer-search-result">0 selected</span> <button id="node-projects-designer-search-close"></button></div></div>`;extensionManager;_pointerextensions;_lastCopiedPrimaryItem;_ignoreEvent;_useIframe=!0;_iframe;_window;_resizeObserver;iframes;#e=!1;get readOnly(){return this.#e}set readOnly(e){this.#e=e}constructor(e=!1){super(),this._restoreCachedInititalValues(),Wc(),this._useIframe=e,this._canvas=this._getDomElement("node-projects-designer-canvas-canvas"),this._useIframe?(this._iframe=document.createElement("iframe"),this._iframe.setAttribute("sandbox","allow-same-origin"),this._iframe.setAttribute("scrolling","no"),this.iframes=[this._iframe],this._canvas.appendChild(this._iframe),requestAnimationFrame(()=>{this._window=this._iframe.contentWindow,Wc(this._iframe.contentWindow),this._canvasShadowRoot=this._iframe.contentWindow.document})):(this._window=window,this._canvasShadowRoot=this._canvas.attachShadow({mode:"open"})),this._canvasContainer=this._getDomElement("node-projects-designer-canvas-canvasContainer"),this._outercanvas2=this._getDomElement("node-projects-designer-canvas-outercanvas2"),this.clickOverlay=this._getDomElement("node-projects-designer-canvas-clickOverlay"),this.onKeyDown=this.onKeyDown.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this._onDblClick=this._onDblClick.bind(this),this._pointerEventHandler=this._pointerEventHandler.bind(this),this._pointerEventHandlerCapture=this._pointerEventHandlerCapture.bind(this),this._onWheel=this._onWheel.bind(this),this._getDomElement("node-projects-designer-search-close").onclick=()=>this._searchHideOverlay(),this._getDomElement("node-projects-designer-search-start").onclick=()=>this._searchRun(),this._getDomElement("node-projects-designer-search-container").onkeydown=t=>{t.key==="Enter"&&this._searchRun()},this.clickOverlay.oncontextmenu=t=>t.preventDefault(),this._resizeObserver=new ResizeObserver(()=>{this.extensionManager?.refreshAllAppliedExtentions()}),this._resizeObserver.observe(this)}get designerWidth(){return this._canvasContainer.style.width}set designerWidth(e){this._canvasContainer.style.width=e,this._zoomFactorChanged()}get designerHeight(){return this._canvasContainer.style.height}set designerHeight(e){this._canvasContainer.style.height=e,this._zoomFactorChanged()}get designerPixelSize(){return{width:this._canvasContainer.offsetWidth,height:this._canvasContainer.offsetHeight}}getDesignSurfaceDimensions(){let e={width:null,height:null},t=getComputedStyle(this._canvasContainer);return this._canvasContainer.style.width&&(e.width=parseFloat(t.width)),this._canvasContainer.style.height&&(e.height=parseFloat(t.height)),e}get designerOffsetWidth(){return this._canvasContainer.offsetWidth}get designerOffsetHeight(){return this._canvasContainer.offsetHeight}set additionalStyles(e){this._additionalStyle=e,this.applyAllStyles()}get additionalStyles(){return this._additionalStyle}applyAllStyles(){if(this._window){let e=[];this._additionalStyle&&e.push(...this._additionalStyle),this.instanceServiceContainer.stylesheetService&&e.push(...this.instanceServiceContainer.stylesheetService.getStylesheets().map(t=>Mf(this._window,al.patchStylesheetSelectorForDesigner(t.content)))),this._pauseAnimations&&e.push(Ix),this._useIframe?this._iframe.contentWindow.document.adoptedStyleSheets=e:this._canvasShadowRoot.adoptedStyleSheets=e}else requestAnimationFrame(()=>this.applyAllStyles())}ignoreEvent(e){this._ignoreEvent=e}canExecuteCommand(e){let t=this.serviceContainer.modelCommandService;if(t){let i=this.instanceServiceContainer.selectionService.selectedElements,n=t.canExecuteCommand(this,e,i);if(n!==null)return n}return e.type===A.screenshot?!0:e.type===A.undo?this.instanceServiceContainer.undoService.canUndo():e.type===A.redo?this.instanceServiceContainer.undoService.canRedo():e.type===A.setTool?this.serviceContainer.designerTools.has(e.parameter):e.type===A.paste?!0:e.type===A.copy||e.type===A.cut||e.type===A.delete?this.instanceServiceContainer.selectionService.primarySelection!=null&&!this.instanceServiceContainer.selectionService.primarySelection.isRootItem:!1}async executeCommand(e){let t=this.serviceContainer.modelCommandService;if(t){let i=this.instanceServiceContainer.selectionService.selectedElements;if(await t.executeCommand(this,e,i)!=null){this.instanceServiceContainer.selectionService.setSelectedElements(null),this.instanceServiceContainer.selectionService.setSelectedElements(i);return}}switch(e.type){case A.screenshot:{wi.screenshotsEnabled||alert("you need to select current tab in next browser dialog, or screenshots will not work correctly");let a=this.instanceServiceContainer.selectionService.selectedElements;a?.length||(a=[...this.rootDesignItem.children(!0)]);let l=await this.serviceContainer.pngCreatorService.takePng(a,{removeSelection:!0});await Iu(new Blob([new Uint8Array(l)],{type:"image/png"}),"screenshot.png")}break;case A.setTool:this.serviceContainer.globalContext.tool=this.serviceContainer.designerTools.get(e.parameter),this.extensionManager.reapplyAllAppliedExtentions();break;case A.setStrokeColor:this.serviceContainer.globalContext.strokeColor=e.parameter;break;case A.setFillBrush:this.serviceContainer.globalContext.fillBrush=e.parameter;break;case A.setStrokeThickness:this.serviceContainer.globalContext.strokeThickness=e.parameter;break;case A.delete:this.handleDeleteCommand();break;case A.undo:this.instanceServiceContainer.undoService.undo();break;case A.holdUndo:let i=this.instanceServiceContainer.undoService.getUndoEntryNames(20),n=Array.from(i).map((a,l)=>({title:"undo: "+a,action:()=>{for(let c=0;c<=l;c++)this.instanceServiceContainer.undoService.undo()}}));n.length>0&&De.show(n,e.event,{mode:"undo"});break;case A.redo:this.instanceServiceContainer.undoService.redo();break;case A.holdRedo:let s=this.instanceServiceContainer.undoService.getRedoEntryNames(20),o=Array.from(s).map((a,l)=>({title:"redo: "+a,action:()=>{for(let c=0;c<=l;c++)this.instanceServiceContainer.undoService.redo()}}));o.length>0&&De.show(o,e.event,{mode:"undo"});break;case A.copy:this.handleCopyCommand();break;case A.cut:this.handleCopyCommand(),this.handleDeleteCommand();break;case A.paste:this.handlePasteCommand(e.altKey==!0);break;case A.selectAll:this.handleSelectAll();break}}disableBackgroud(){this._canvasContainer.style.background="var(--node-projects-web-component-designer-screenshot-background, white)"}enableBackground(){this._canvasContainer.style.background=""}zoomToFit(){let t=0,i=0,n=0,s=0;this.canvasOffset={x:0,y:0},this.zoomFactor=1;for(let p of this.rootDesignItem.querySelectorAll("*"))if(p instanceof(p.ownerDocument.defaultView??window).Element){let d=Z(p);n=n<d.x?n:d.x,s=s<d.y?s:d.y,t=t>d.x+d.width+10?t:d.x+d.width+10,i=i>d.y+d.height+10?i:d.y+d.height+10}let o=this.getBoundingClientRect();t-=o.x,i-=o.y;let a=o.width/(t/this.zoomFactor),l=o.height/(i/this.zoomFactor),c=this.getDesignSurfaceDimensions();c.width&&(a=o.width/c.width),c.height&&(l=o.height/c.height);let h=a<l?a:l;isNaN(h)||(this.zoomFactor=h)}handleSelectAll(){let e=Array.from(this.rootDesignItem.children(!0)).filter(i=>!i.isEmptyTextNode),t=this.instanceServiceContainer.selectionService.primarySelection;if(t){let i=e.indexOf(t);i>=0&&(e.splice(i,1),e.unshift(t))}this.instanceServiceContainer.selectionService.setSelectedElements(e)}async handleCopyCommand(){this._currentPasteOffset=this.pasteOffset,this._lastCopiedPrimaryItem=this.instanceServiceContainer.selectionService.primarySelection,await this.serviceContainer.copyPasteService.copyItems(this.instanceServiceContainer.selectionService.selectedElements)}async handlePasteCommand(e){let[t,i]=await this.serviceContainer.copyPasteService.getPasteItems(this.serviceContainer,this.instanceServiceContainer),n=this.rootDesignItem.openGroup("Insert"),s=this._lastCopiedPrimaryItem,o=this._currentPasteOffset+this.pasteOffset,a=this.rootDesignItem,l=s?.parent??this.instanceServiceContainer.selectionService.primarySelection;for(;l!=null;){let c=getComputedStyle(l.element),h;if(h=this.serviceContainer.getLastServiceWhere("containerService",p=>p.serviceForContainer(l,c)),h)if(h.canEnter(l,t)){a=l;break}else{l=l.parent;continue}}if(t){let c=this.getNormalizedElementCoordinates(a.element);for(let p=0;p<t.length;p++){let d=t[p],u=i?i[p]:null;this.instanceServiceContainer.undoService.execute(new Se(a,a.childCount,d)),!e&&u&&d.nodeType==k.Element&&(d.setStyle("left",u.x-c.x+this._currentPasteOffset+"px"),d.setStyle("top",u.y-c.y+this._currentPasteOffset+"px"))}let h=this.serviceContainer.intializationService;if(h)for(let p of t)h.init(p);this.instanceServiceContainer.selectionService.setSelectedElements(t)}n.commit(),this.snapLines.clearSnaplines(),this._lastCopiedPrimaryItem=s,this._currentPasteOffset=o}handleDeleteCommand(){let e=this.instanceServiceContainer.selectionService.selectedElements;this.serviceContainer.deletionService.removeItems(e),this.instanceServiceContainer.selectionService.setSelectedElements(null)}initialize(e){this.serviceContainer=e,this.instanceServiceContainer=new pl(this);let t=this.serviceContainer.getLastService("undoService");t&&this.instanceServiceContainer.register("undoService",t(this));let i=this.serviceContainer.getLastService("selectionService");i&&(this.instanceServiceContainer.register("selectionService",i(this)),this.instanceServiceContainer.selectionService.onSelectionChanged.on(()=>{this._lastCopiedPrimaryItem=null,this._currentPasteOffset=this.pasteOffset}));let n=this.serviceContainer.getLastService("designItemDocumentPositionService");n&&this.instanceServiceContainer.register("designItemDocumentPositionService",n(this)),this._useIframe?(this.rootDesignItem=O.GetOrCreateDesignItem(this._iframe,this._iframe,this.serviceContainer,this.instanceServiceContainer),requestAnimationFrame(()=>{this.rootDesignItem.updateChildrenFromNodesChildren()})):this.rootDesignItem=O.GetOrCreateDesignItem(this._canvas,this._canvas,this.serviceContainer,this.instanceServiceContainer);let s=this.serviceContainer.getLastService("stylesheetService");if(s){let a=s(this);this.instanceServiceContainer.register("stylesheetService",a),this.instanceServiceContainer.stylesheetService.stylesheetChanged.on(l=>{if(this.instanceServiceContainer.collaborationService?.isApplyingRemoteChanges){this.applyAllStyles();return}if(l.changeSource!="undo"){let c=new ll(this.instanceServiceContainer.stylesheetService,l.name,l.newStyle,l.oldStyle);this.instanceServiceContainer.undoService.execute(c),this.applyAllStyles()}else this.applyAllStyles()}),this.instanceServiceContainer.stylesheetService.stylesheetsChanged.on(()=>{this.applyAllStyles()})}let o=this.serviceContainer.getLastService("collaborationService");if(o){let a=o(this);this.instanceServiceContainer.collaborationService=a,this.instanceServiceContainer.register("collaborationService",a)}if(e.instanceServiceContainerCreatedCallbacks?.length&&e.instanceServiceContainerCreatedCallbacks.forEach(a=>a(this.instanceServiceContainer)),this.extensionManager=new ul(this),this.instanceServiceContainer.collaborationService&&(this.instanceServiceContainer.collaborationService.onPeersChanged.on(a=>{a.source==="remote"&&this.extensionManager.refreshAllAppliedExtentions()}),this.instanceServiceContainer.collaborationService.onCommentsChanged.on(()=>{this.extensionManager.refreshAllAppliedExtentions()})),this.overlayLayer=new sn(e),this.overlayLayer.style.pointerEvents="none",this.overlayLayer.style.setProperty("margin","0","important"),this.overlayLayer.style.setProperty("padding","0","important"),this.overlayLayer.style.setProperty("border","none","important"),this.clickOverlay.appendChild(this.overlayLayer),this.snapLines=new dl(this.overlayLayer),this.snapLines.initialize(this.rootDesignItem),this.serviceContainer.designerPointerExtensions)for(let a of this.serviceContainer.designerPointerExtensions)this._pointerextensions||(this._pointerextensions=[]),this._pointerextensions.push(a.getExtension(this));if(this.children){let a=this.children;if(this.children.length==1&&this.children[0]instanceof HTMLSlotElement&&(a=this.children[0].assignedElements()),a?.length>0){let l=this.serviceContainer.getLastServiceWhere("htmlParserService",c=>c.constructor==Zt);this.addDesignItems(l.createDesignItems(a,this.serviceContainer,this.instanceServiceContainer))}}this.serviceContainer.options.zoomDesignerBackground||requestAnimationFrame(()=>{this._resizeBackgroundGrid()}),this.isConnected&&this.extensionManager.connected()}connectedCallback(){this._firstConnect||(this._firstConnect=!0,this._touchGestureHelper=tl.addTouchEvents(this.clickOverlay),this.clickOverlay.addEventListener(P.PointerDown,this._pointerEventHandler),this.clickOverlay.addEventListener(P.PointerMove,this._pointerEventHandler),this.clickOverlay.addEventListener(P.PointerMove,this._pointerEventHandlerCapture,!0),this.clickOverlay.addEventListener(P.PointerUp,this._pointerEventHandler),this.clickOverlay.addEventListener(P.DragEnter,e=>this._onDragEnter(e)),this.clickOverlay.addEventListener(P.DragLeave,e=>this._onDragLeave(e)),this.clickOverlay.addEventListener(P.DragOver,e=>this._onDragOver(e)),this.clickOverlay.addEventListener(P.Drop,e=>this._onDrop(e)),this.clickOverlay.addEventListener(P.KeyDown,this.onKeyDown),this.clickOverlay.addEventListener(P.KeyUp,this.onKeyUp),this.clickOverlay.addEventListener(P.DblClick,this._onDblClick,!0),this.clickOverlay.addEventListener(P.Wheel,this._onWheel),this.clickOverlay.addEventListener("zoom",e=>{this.zoomFactor=this.zoomFactor+e.detail.diff/10}),this.clickOverlay.addEventListener("pan",e=>{let t={x:this.canvasOffset.x-e.detail.deltaX,y:this.canvasOffset.y-e.detail.deltaY};this.canvasOffset=t})),this.extensionManager&&this.extensionManager.connected()}disconnectedCallback(){this.extensionManager.disconnected()}_zoomFactorChanged(){this._canvasContainer.style.bottom=this._outercanvas2.offsetHeight>=this._canvasContainer.offsetHeight?"0":"",this._canvasContainer.style.right=this._outercanvas2.offsetWidth>=this._canvasContainer.offsetWidth?"0":"",this._updateTransform(),this.fillCalculationrects(),this.onZoomFactorChanged.emit(this._zoomFactor),this.serviceContainer.options.zoomDesignerBackground||this._resizeBackgroundGrid()}_resizeBackgroundGrid(){let n=2e3/this.canvas.getBoundingClientRect().width;this.canvas.style.backgroundSize=n.toString()+"%"}_updateTransform(){if(this._scaleFactor=this._zoomFactor,this._useIframe){let e=this._canvasOffset.x,t=this._canvasOffset.y;this._iframe.contentWindow.scrollTo(e*-1,t*-1),e+=this._iframe.contentWindow.scrollX,t+=this._iframe.contentWindow.scrollY,this._canvasContainer.style.transform="scale("+this._zoomFactor+") translate("+e+"px, "+t+"px)"}else this._canvasContainer.style.transform="scale("+this._zoomFactor+") translate("+(isNaN(this._canvasOffset.x)?"0":this._canvasOffset.x)+"px, "+(isNaN(this._canvasOffset.y)?"0":this._canvasOffset.y)+"px)";this._canvasContainer.style.transformOrigin="0 0",this.overlayLayer.style.transform=this._canvasContainer.style.transform,this.overlayLayer.style.transformOrigin="0 0",this.snapLines.clearSnaplines()}setDesignItems(e){this.instanceServiceContainer.undoService.clearTransactionstackIfNotEmpty();let t=new cl(e,[...this.rootDesignItem.children()]);this.instanceServiceContainer.undoService.execute(t)}_internalSetDesignItems(e){this.fillCalculationrects(),this.extensionManager.removeAllExtensions(),this.overlayLayer.removeAllOverlays(),Gd.removeAllChildnodes(this.overlayLayer);for(let t of[...this.rootDesignItem.children()])this.rootDesignItem._removeChildInternal(t);this.addDesignItems(e),this.lazyTriggerReparseDocumentStylesheets(),this.instanceServiceContainer.onContentChanged.emit([{changeType:"parsed"}]),this.instanceServiceContainer.selectionService._withoutUndoSetSelectedElements(null),setTimeout(()=>this.extensionManager.refreshAllAppliedExtentions(),50)}reparseTimeout;lazyTriggerReparseDocumentStylesheets(){this.reparseTimeout&&clearTimeout(this.reparseTimeout),this.reparseTimeout=setTimeout(async()=>{await this.reparseDocumentStylesheets(),clearTimeout(this.reparseTimeout)},20)}async reparseDocumentStylesheets(){if(this.instanceServiceContainer.stylesheetService){let e=this.rootDesignItem.querySelectorAll("style"),t=1,i=[...e].map(n=>({name:"<style> #"+(n.id?n.id+"("+t+++")":t++),content:O.GetDesignItem(n).content,designItem:O.GetDesignItem(n)}));await this.instanceServiceContainer.stylesheetService.setDocumentStylesheets(i)}}addDesignItems(e){e&&this.rootDesignItem._insertChildsInternal(e);let t=this.serviceContainer.intializationService;if(t)for(let i of e)t.init(i);this.snapLines.clearSnaplines()}_onDragEnter(e){if(this.fillCalculationrects(),e.preventDefault(),e.dataTransfer.types.indexOf(hi)>=0){let i=this.serviceContainer.bindableObjectDragDropService;if(i){let n=this.getElementAtPoint({x:e.x,y:e.y});this._lastDdElement!=n&&(i.dragLeave(this,e,this._lastDdElement),i.dragEnter(this,e,n),this._lastDdElement=n)}else this._lastDdElement=null}else{this._lastDdElement=null;let i=this.serviceContainer.dragDropService;i&&i.dragEnter(this,e)}}_onDragLeave(e){this.fillCalculationrects(),e.preventDefault(),this._canvas.classList.remove("dragFileActive");let t=this.serviceContainer.dragDropService;t&&t.dragLeave(this,e)}_lastDdElement=null;_onDragOver(e){if(e.preventDefault(),this.fillCalculationrects(),e.dataTransfer.types.length>0&&e.dataTransfer.types[0]=="Files"){let t=this.serviceContainer.externalDragDropService;if(t){let i=t.dragOver(this,e);e.dataTransfer.dropEffect=i,i!=="none"&&this._canvas.classList.add("dragFileActive")}}else if(e.dataTransfer.types.indexOf(hi)>=0){let i=this.serviceContainer.bindableObjectDragDropService;if(i){let n=this.getElementAtPoint({x:e.x,y:e.y});this._lastDdElement!=n&&(i.dragLeave(this,e,this._lastDdElement),i.dragEnter(this,e,n),this._lastDdElement=n);let s=i.dragOver(this,e,n);e.dataTransfer.dropEffect=s}}else{let i=this.serviceContainer.dragDropService;i&&i.dragOver(this,e)}}async _onDrop(e){if(this.serviceContainer.globalContext.tool=this.serviceContainer.designerTools.get(ee.Pointer),this._lastDdElement=null,e.preventDefault(),this._canvas.classList.remove("dragFileActive"),this.fillCalculationrects(),e.dataTransfer.files?.length>0){let t=this.serviceContainer.externalDragDropService;t&&t.drop(this,e)}else{let t=e.dataTransfer.getData(hi);if(t){let i=JSON.parse(t),n=this.serviceContainer.bindableObjectDragDropService;if(n){let s=this.getElementAtPoint({x:e.x,y:e.y});n.drop(this,e,i,s)}}else{let i=this.serviceContainer.dragDropService;i&&(this.fillCalculationrects(),i.drop(this,e))}}}showDesignItemContextMenu(e,t){let i=[];for(let s of this.serviceContainer.designerContextMenuExtensions)s.shouldProvideContextmenu(t,this,e,"designer")&&i.push(...s.provideContextMenuItems(t,this,e,"designer"));let n=new De(i,null);return n.display(t),n}_onDblClick(e){e.preventDefault(),e.target!==this.overlayLayer&&(e.altKey||(this.serviceContainer.globalContext.tool==null||this.serviceContainer.globalContext.tool===this.serviceContainer.designerTools.get(ee.Pointer))&&(this.extensionManager.removeExtension(this.instanceServiceContainer.selectionService.primarySelection,I.PrimarySelectionRefreshed),this.extensionManager.applyExtension(this.instanceServiceContainer.selectionService.primarySelection,I.Doubleclick,e)))}_searchShowOverlay(){if(this.serviceContainer.searchService){let e=this._getDomElement("node-projects-designer-search-container");e.style.display="",this._getDomElement("node-projects-designer-search-input").focus()}}_searchHideOverlay(){let e=this._getDomElement("node-projects-designer-search-container");e.style.display="none"}async _searchRun(){let e=this._getDomElement("node-projects-designer-search-input");if(this._getDomElement("node-projects-designer-search-result").innerHTML="0 selected",e.value!=""){let t=await this.serviceContainer.searchService.search(this,e.value);t?.length>0&&(this.instanceServiceContainer.selectionService.setSelectedElements(t.map(i=>i.designItem)),this._getDomElement("node-projects-designer-search-result").innerHTML=t.length.toString()+" selected")}}onKeyUp(e){this._ignoreEvent!==e&&(this.activeTool?.keyboardEventHandler&&(this.activeTool.keyboardEventHandler(this,e,null),e.defaultPrevented)||(this._moveGroup&&(this._moveGroup.commit(),this._moveGroup=null),e.preventDefault()))}onKeyDown(e){if(this._ignoreEvent!==e&&!(this.activeTool?.keyboardEventHandler&&(this.activeTool.keyboardEventHandler(this,e,null),e.defaultPrevented))){if($(e)&&e.key==="z"&&!e.shiftKey)this.executeCommand({type:A.undo,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if($(e)&&e.key==="z"&&e.shiftKey)this.executeCommand({type:A.redo,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if($(e)&&e.key==="y")this.executeCommand({type:A.redo,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if($(e)&&e.key==="a")this.executeCommand({type:A.selectAll,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if($(e)&&e.key==="c")this.executeCommand({type:A.copy,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if($(e)&&e.key==="v")this.executeCommand({type:A.paste,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if($(e)&&e.key==="x")this.executeCommand({type:A.cut,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});else if($(e)&&e.key==="f")this._searchShowOverlay();else{if(!this.instanceServiceContainer.selectionService.primarySelection)return;let i=1;switch(e.shiftKey&&(i=10),e.key){case"Delete":case"Backspace":this.executeCommand({type:A.delete,metaKey:e.metaKey,ctrlKey:e.ctrlKey,altKey:e.altKey,shiftKey:e.shiftKey});break;case"ArrowDown":case"ArrowUp":case"ArrowLeft":case"ArrowRight":{this._moveGroup||(this._moveGroup=this.rootDesignItem.openGroup("move items"));let n={x:0,y:0};e.key=="ArrowDown"&&(n.y=-i),e.key=="ArrowUp"&&(n.y=i),e.key=="ArrowRight"&&(n.x=-i),e.key=="ArrowLeft"&&(n.x=i);for(let s of ue(this.instanceServiceContainer.selectionService.selectedElements)){let o=getComputedStyle(s.parent.element);s.serviceContainer.getLastServiceWhere("containerService",a=>a.serviceForContainer(s.parent,o)).moveElements([s],n,!1)}}break}}e.preventDefault()}}getNormalizedEventCoordinates(e){let t=(e.clientX-this.outerRect.x)/this.zoomFactor,i=this.containerBoundingRect.x-this.outerRect.x,n=(e.clientY-this.outerRect.y)/this.zoomFactor,s=this.containerBoundingRect.y-this.outerRect.y;return{x:t-i/this.zoomFactor,y:n-s/this.zoomFactor}}getViewportCoordinates(e){return{x:e.clientX-this.outerRect.x,y:e.clientY-this.outerRect.y}}getNormalizedTextNodeCoordinates(e,t){let i=document.createRange();i.selectNodeContents(e);let n=i.getBoundingClientRect(),s=this.containerOffset;return{x:s.x+(n.x-this.containerBoundingRect.x)/(t?1:this.scaleFactor),y:s.y+(n.y-this.containerBoundingRect.y)/(t?1:this.scaleFactor),width:n.width/(t?1:this.scaleFactor),height:n.height/(t?1:this.scaleFactor)}}getNormalizedElementCoordinates(e,t){if(e.nodeType==k.TextNode)return this.getNormalizedTextNodeCoordinates(e,t);let i=Z(e),n=this.containerOffset;return{x:n.x+(i.x-this.containerBoundingRect.x)/(t?1:this.scaleFactor),y:n.y+(i.y-this.containerBoundingRect.y)/(t?1:this.scaleFactor),width:i.width/(t?1:this.scaleFactor),height:i.height/(t?1:this.scaleFactor)}}getNormalizedElementCoordinatesAndRealSizes(e){let t=this.getNormalizedElementCoordinates(e),i=getComputedStyle(e),n=t.width,s=t.height;return i.boxSizing!="border-box"&&(n=n-(parseFloat(i.borderLeft)+parseFloat(i.paddingLeft)+parseFloat(i.paddingRight)+parseFloat(i.borderRight)),s=s-(parseFloat(i.borderTop)+parseFloat(i.paddingTop)+parseFloat(i.paddingBottom)+parseFloat(i.borderBottom))),{...t,realWidth:n,realHeight:s}}getNormalizedOffsetInElement(e,t){let i=this.getNormalizedEventCoordinates(e),n=this.getNormalizedElementCoordinates(t);return{x:i.x-n.x,y:i.y-n.y}}transformPoint(e){if(this._useIframe){let t=this._canvasContainer.getBoundingClientRect();return{x:e.x-t.x,y:e.y-t.y}}return e}elementsFromPoint(e,t){let i=[],n=this.transformPoint({x:e,y:t}),s=this._canvasShadowRoot.elementsFromPoint(n.x,n.y);for(let o of s)o.getRootNode()===this._canvasShadowRoot&&i.push(o);return i}getElementAtPoint(e,t){let i=this.transformPoint(e),n=this._canvasShadowRoot.elementsFromPoint(i.x,i.y),s=null;for(let o=0;o<n.length;o++){if(s=n[o],t&&t(s)){s=null;continue}if(s.getRootNode()!==this._canvasShadowRoot){s=null;continue}if(!this.instanceServiceContainer.designContext.extensionOptions.selectUnhitableElements&&O.GetDesignItem(s).getStyleFromSheetOrLocal("pointer-events")=="none"){s=null;continue}break}return s}getDesignItemById(e){return O.GetDesignItem(this._canvasShadowRoot.getElementById(e))}querySelectorDesignItem(e){return O.GetDesignItem(this._canvasShadowRoot.querySelector(e))}querySelectorAllDesignItems(e){return[...this._canvasShadowRoot.querySelectorAll(e)].map(t=>O.GetDesignItem(t))}_hoverElement;showHoverExtension(e,t){let i=O.GetOrCreateDesignItem(e,e,this.serviceContainer,this.instanceServiceContainer);if(this._lastHoverDesignItem!=i&&(this._lastHoverDesignItem&&this.extensionManager.removeExtension(this._lastHoverDesignItem,I.MouseOver),i&&i!=this.rootDesignItem&&(!e.parentNode||Gd.getHost(e.parentNode)!==this.overlayLayer)&&this.extensionManager.applyExtension(i,I.MouseOver,t),this._lastHoverDesignItem=i),this.instanceServiceContainer.designContext.extensionOptions.simulateHoverOnHover&&this._hoverElement!==e){let n=this._hoverElement;for(;n&&n!==this._canvas;)n.removeAttribute(at),n=n.parentElement;if(this._hoverElement=null,e){for(e.nodeType==k.TextNode&&(e=e.parentElement),n=e;n&&n!==this._canvas;)n.setAttribute(at,""),n=n.parentElement;this._hoverElement=e}}}_onWheel(e){let t=this.getElementAtPoint({x:e.clientX,y:e.clientY});for(;t;){let i=getComputedStyle(t);if(i.overflowY==="scroll"||i.overflowY==="auto"){let n=t;n.scrollBy?n.scrollBy(e.deltaX,e.deltaY):(n.scrollLeft+=e.deltaX,n.scrollTop+=e.deltaY),e.stopPropagation();break}t=t.parentElement}}_pointerEventHandlerCapture(e,t=null){if(this.fillCalculationrects(),this._pointerextensions)for(let i of this._pointerextensions)i.refresh(e)}_pointerEventHandler(e,t=null){if(this._ignoreEvent===e||!this.serviceContainer||this._touchGestureHelper.multitouchEventActive)return;let i;if(t)i=t;else if(i=this.serviceContainer.elementAtPointService.getElementAtPoint(this,{x:e.x,y:e.y}),!i)i=this._canvas;else if(this._enableSelectTextNodesOnClick){let o=this.getNormalizedEventCoordinates(e);for(let a of i.childNodes)if(a.nodeType==k.TextNode){let l=this.getNormalizedElementCoordinates(a);if(l.x<=o.x&&l.x+l.width>=o.x&&l.y<=o.y&&l.y+l.height>=o.y){i=a;break}}}if(this._activeTool){this._activeTool.pointerEventHandler(this,e,i);return}this.clickOverlay.style.cursor=this._canvas.style.cursor;let n=O.GetOrCreateDesignItem(i,i,this.serviceContainer,this.instanceServiceContainer);this.showHoverExtension(n.element,e),i&&Gd.getHost(i.parentNode)===this.overlayLayer&&(i=this.instanceServiceContainer.selectionService.primarySelection?.element??this._canvas);let s=this.serviceContainer.globalContext.tool??this.serviceContainer.designerTools.get(ee.Pointer);s.pointerEventHandler(this,e,i),this._canvas.style.cursor=s.cursor}captureActiveTool(e){this._activeTool=e}releaseActiveTool(){this._activeTool=null}get activeTool(){return this.serviceContainer.globalContext.tool}fillCalculationrects(){this.containerBoundingRect=this._canvasContainer.getBoundingClientRect(),this.outerRect=this._outercanvas2.getBoundingClientRect()}removeOverlay(e){this.overlayLayer.removeOverlay(e)}zoomOntoRectangle(e,t){let i={x:e.x<t.x?e.x:t.x,y:e.y<t.y?e.y:t.y,width:Math.abs(e.x-t.x),height:Math.abs(e.y-t.y)},n=this.outerRect.width/i.width,s=this.outerRect.height/i.height,o=n>=s?s:n,a={x:i.width/2+i.x,y:i.height/2+i.y};this.zoomPoint(a,o)}zoomPoint(e,t){this.zoomFactor=t;let i={x:-e.x+this.outerRect.width/this.zoomFactor/2,y:-e.y+this.outerRect.height/this.zoomFactor/2};this.canvasOffset=i}zoomConvertEventToViewPortCoordinates(e){let t=this.containerBoundingRect.x-this.outerRect.x,i=this.containerBoundingRect.y-this.outerRect.y;return{x:(e.x+t/this.zoomFactor)*this.zoomFactor,y:(e.y+i/this.zoomFactor)*this.zoomFactor}}zoomTowardsPoint(e,t){let i=t/this.zoomFactor,n=this.zoomConvertEventToViewPortCoordinates(e),s={x:-(n.x*(i-1)+i*-this.canvasOffsetUnzoomed.x),y:-(n.y*(i-1)+i*-this.canvasOffsetUnzoomed.y)};this.zoomFactor=t,this.canvasOffsetUnzoomed=s}};customElements.define("node-projects-designer-canvas",on);ot();wn();me();Mt();vt();Lt();import{BaseCustomWebComponentConstructorAppend as Dx,css as kx,html as Ax}from"@node-projects/base-custom-webcomponent";var Un=class extends Dx{static style=kx`node-projects-designer-tools-buttons{height:100%;width:100%}#toolButtons{scrollbar-width:none;overflow-y:auto;height:100%}#toolButtons::-webkit-scrollbar{display:none}#popup{position:absolute;top:calc(0px + 10px);height:100%;left:calc(24px + 4px + 10px)}`;static template=Ax`<div id="popup"></div><div id="toolButtons"></div>`;_toolButtonsElem;_serviceContainer;_popupContainer;designerView;constructor(){super(),this._toolButtonsElem=this._getDomElement("toolButtons"),this._toolButtonsElem.onwheel=e=>e.stopPropagation(),this._popupContainer=this._getDomElement("popup")}initialize(e,t){this._serviceContainer=e,this.designerView=t;for(let i of this._serviceContainer.designViewToolbarButtons)this._toolButtonsElem.appendChild(i.provideButton(t.designerCanvas));this._serviceContainer.globalContext.onToolChanged.on(i=>{for(let n of this._toolButtonsElem.children)n instanceof we&&n.setActiveTool(i.newValue.name)})}showPopup(e){if(this._popupContainer.children.length)this._popupContainer.innerHTML="";else{let t;typeof e.popup=="string"?t=document.createElement(e.popup):t=new e.popup(this.designerView.designerCanvas),t instanceof xe?xe.showWindow(t,e):this._popupContainer.appendChild(t)}}setTool(e){this._popupContainer.children.length&&(this._popupContainer.innerHTML=""),this.designerView.designerCanvas.executeCommand({type:A.setTool,parameter:e})}};customElements.define("node-projects-designer-toolbar",Un);var Si=class extends Ox{_sVert;_sHor;get serviceContainer(){return this._designerCanvas.serviceContainer}set serviceContainer(e){this._designerCanvas.serviceContainer=e}get instanceServiceContainer(){return this._designerCanvas.instanceServiceContainer}set instanceServiceContainer(e){this._designerCanvas.instanceServiceContainer=e}_designerCanvas;get designerCanvas(){return this._designerCanvas}get readOnly(){return this._designerCanvas.readOnly}set readOnly(e){this._designerCanvas.readOnly=e}_zoomInput;_lowertoolbar;_toolbar;static style=Tx`:host{display:block;box-sizing:border-box;width:100%;position:relative;transform:translateZ(0);overflow:hidden}*{touch-action:none}#lowertoolbar{height:16px;background:#787f82;display:flex;bottom:0;position:absolute;font-size:12px;width:100%}input{width:40px;height:16px;padding:0;border:0;font-size:12px;text-align:center;margin-right:1px}.toolbar-control{min-width:16px;height:16px;display:block;margin-right:1px;cursor:default;display:flex;justify-content:center;align-items:center}.selected{background-color:#00bfff}.toolbar-control:hover{background-color:rgba(164,206,249,.6)}#outer{user-select:none;display:flex;flex-direction:column;width:100%;height:100%}#canvas{left:24px;width:calc(100% - 24px - 16px);height:calc(100% - 32px)}#tool-bar{width:24px;height:calc(100% - 32px);position:absolute;background-color:#d3d3d3}.zoom-in{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAn9JREFUeNqkU11o01AUTtI06U/6tzHWbnNVS+k67FAG/gwfZEOcCrpNEBwEH2Q+Otqxh+5VEaHYV18UwQd9sk4Q+6CUKogbtSoM10qftJS2iGuT/iRpshvvDZu4DHHggY+TnHu+795zz7m4qqrYxfA6pjerlcHMZvMQQRCL8Hccoh+iBJECAMQEQci3Wk2MxP5iqgqmJUmIB3xkdTRoKgQG6Wr1JxBX1oTQx3UxCdcjMO2ZJiCK4g4y3HUIACV+bsL5dSRAWfwe636z0WBzWEFzn5vku5xyIZGsx2UF5AhEaDYbO8Dz3KLPi1X9B2iTy0pRiDx5/Z2bJgmGwDH8WMhuDxzEf6A8TYDneT3GR4JMzcVQThNlcCtANaM48pICutodxXTkkI1HeVslSPor6B/wWL7B3Z1n2KR3O3h05rkDOkd2eYoSxM025PVrAgAQeoFSuSLI3Q66jpJNRsIWPLvM5JJTTUkGGsqVtgJ5JU3AaLTqBVKZT9xh7yDT2Gh05G4bNQBzGETkBbkMVAxbzdadMJbSBDzCHXgKgKGZQJCp0IP32dnEaKhd6nOZAay7mXk6UUGeIHDDh88NKb0qumjaHiN391/1GjtrJ6ZPSb33H9eJYomuTJ601Qf7SKVYVlqplZblxRvOThrtEaC28qSOPAwncCYSWbzJsrO3XP4br9KZa1fTmcaOSTQYLDFFaeURh/yDfLynp/fCwkI0yrKX79ZqG49sUr2A44a3u+d08/fXVhfAeZ8vcDocjs6z7KV7xeL3JzBcwPZgmoAkScGlpdvzc3NXHuZyXxIwlMX2aJoAfFkvx8aGnRzH5WEpr7cXuerKPwVw1Lb/sV8CDACbf0U37X3NqwAAAABJRU5ErkJggg==)}.zoom-out{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAmVJREFUeNqkU01oE0EUnv3Nf0xsS01jEzWUNCUplh7U4kEiVVEQqyBYWDxor5am5JBeFRGCuXpRBA8KHqIHMYISohdTYlQo2kguaghJUNvd/O1udjvr7NKWZHuw4IMHM/v9zHu8t5iiKCAYDAKi/xQ4MHEdbIXFYgUmk2kUx/EouoZRulGWUaYhhHGe5wutVhOQKtk3/RToQ1HgjCjyCb+PrE0GjEW/x1Cr/YFCdoUPffwqpBAeQbRnmoEgCD1i9OoohHLi7EnHt3E/bfb0m/pwDGBeF04P77Mpex1SMZliE5IMV3FV0Gw2erJe56I+L6iNHDQYnRaaVsXb5uh8JGS3+w9hv1SeVkG9Xtd3EB4PDBecVtplpAmHKMMesN2R2Ymg7fer9PfwZgui3sC932X+gV53nGZSXj2Yf36B5oWNNtK5NQMIcT2nXKnyUt8eA6uSUf1YNyhKsFmptmWkK2sGFGXRG6Rzn7jDXo+1sdboSBSJEd0gVABYzrMOpEtrBi7+DqoCAnUn1JTo0IP3+dnkZKhdHnKaIEUSXRPCiA+fG2JmWXAaDPY4uXP+ipfqrBybOSEO3n/M4qWyoXrmuE30DJHWUkVupbMt44u3nJ2k7BGotAqkTjyGNvBiJBK9yTCzt5wjN15ncteuZnKNnk0kCHNcllsFVUN2iY8ODAyeX1yMxRjm8t319bVHNpEtYhjxbseago3t0+YU4Dmfzz+9sBCbZ5hL90qln0/Q5yLYRWgGoigGlpZuz8/NXXm4uvolqY4a7DI0A/RnvZyaGnNwHFdArbzZArla9p8GmDq2/4m/AgwATHQSD48kJDUAAAAASUVORK5CYII=)}.snap-grid{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAblJREFUeNqkUjtLA0EQnntFyKNKJdiFgIlGC5G0FlaaIsYgiKAgKIKdjbV/wM7GImBhI6JFMFWKK3yBimBAhJDuUEgimMSYS0hunbncHRtFjLjw7X7z7ezszM4KjDEQRRG+jnlEgvYAAgLAJpoT1tYdA9gzAAqLuC/DD4N1EZC87v1IYnZ0MBj0k/6Szw/nTs7GO+8f62gWBCuDHTRG+ABxgGScsd3JlYWlJogu9TSjkT41NzM0AEbr5uDocJmxLTv3CCJpgbRkAKcWpq14vP7scVqrVKsbBOKktayS7BL4RzB5uxvAo7++SfV6vYnmBenESaM9/qCESFt4pPUJJzrlLpe/vQ9pTeex8A0EQcggwILJo9EohMPhNVW9ZqFQaJvsWCzWozGuCxJ3gck1TYNGo+Hy+XxQKpXalUoFisUi1Go1RyM/uwtZLsADYkxRlGnMZLXT6QQkSSqglsIV0HY0XddTdgkqV4LD6YPJsgwYzLSJEygQraz70YDvRg9Hh3O8DdptM1uTEwzDMDnvTHVfWfy+D8592W4Jt1wJfXOnC0h8XMw/cbuEHOKZc/iNX9qC2cb/jE8BBgAvhdOb37HVsgAAAABJRU5ErkJggg==)}.snap-guide{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAYVJREFUeNqkU7tKA1EQnbs3CnlVqbQNARMjFilS+AnZQhIbW0ER/AA/wlYbhXR2wUKx0iKNYGMKDViEdEIgieBujGvCPpyz7sK6iWLIwJk798zsuXsfIxzHoXksAqcoij+vMbYq7MoszGxaEB3wtODlH3i5E5uojck210RCgq7SJie4MC0TsdO1cim/lMmkwHdarZWni+t16/1jz/FElJBAGc5imLzyakXNG0IuVo+OnwHE4JCzgisG7BJu/I3CQjyRuq1dvWi6vg8gBofcOHgGAZO+AFv88/VNDofDEcd3IBCD43ycfhEowY28Sazfnzh1cKMggWsUQvi4waiqKuVyud16/d7JZrOHxWJxKudMuQV3C81mk3RdX0wmk9Tr9UxN06jb7dJgMPjBwQRUAu/AtWg0SpZl7TDSUso2/1UVNWHOMIwJARzWBhcQwMXu1oJb9Ufbtsk0zYktPLrvgD8E/mWeYoNxxlj2xoZ3qI2/YrePQs10PksjTRPozCog5m3nLwEGABrLzseuHT6IAAAAAElFTkSuQmCC)}.bottom-scroll{width:calc(100% - 16px);position:absolute;bottom:16px;height:16px;box-sizing:border-box;z-index:1}.right-scroll{height:calc(100% - 32px);position:absolute;right:0;top:0;width:16px;box-sizing:border-box;z-index:1}.bottom-right{width:16px;height:16px;bottom:16px;right:0;position:absolute;background:#f0f0f0}`;static template=Lx`<div id="outer"><node-projects-plain-scrollbar id="s-hor" value="0.5" class="bottom-scroll"></node-projects-plain-scrollbar><node-projects-plain-scrollbar id="s-vert" value="0.5" orientation="vertical" class="right-scroll"></node-projects-plain-scrollbar><div class="bottom-right"></div><div id="lowertoolbar"><input id="zoomInput" type="text" value="100%"><div title="decrease zoom" id="zoomIncrease" class="toolbar-control zoom-in"></div><div title="increase zoom" id="zoomDecrease" class="toolbar-control zoom-out"></div><div title="reset zoom" id="zoomReset" class="toolbar-control" style="width:16px;height:16px;font-size:14px;display:flex;align-items:center;justify-content:center">1</div><div title="zoom to fit" id="zoomFit" class="toolbar-control" style="width:16px;height:16px;font-size:8px;display:flex;align-items:center;justify-content:center">100%</div><div title="snap to grid" id="alignGrid" class="toolbar-control snap-grid"></div><div title="snap to elements" id="alignSnap" class="toolbar-control snap-guide"></div></div></div>`;constructor(e=!1){super(),this._restoreCachedInititalValues(),this._sVert=this._getDomElement("s-vert"),this._sHor=this._getDomElement("s-hor");let t=this._getDomElement("outer");this._designerCanvas=new on(e),this._designerCanvas.id="canvas",this._designerCanvas.appendChild(document.createElement("slot")),t.insertAdjacentElement("afterbegin",this._designerCanvas),this._toolbar=new Un,this._toolbar.id="tool-bar",this._sVert.insertAdjacentElement("afterend",this._toolbar),this._designerCanvas.onZoomFactorChanged.on(()=>{this._zoomInput.value=Math.round(this._designerCanvas.zoomFactor*100)+"%";let c=this.designerCanvas.canvasOffset,h=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,p=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight;this._sHor.value=c.x/(-2*h)+.5,this._sVert.value=c.y/(-2*p)+.5}),this._zoomInput=this._getDomElement("zoomInput"),this._zoomInput.onkeydown=c=>{c.key=="Enter"&&(this._designerCanvas.zoomFactor=parseFloat(this._zoomInput.value)/100)},this._zoomInput.onblur=()=>{this._designerCanvas.zoomFactor=parseFloat(this._zoomInput.value)/100},this._zoomInput.onclick=this._zoomInput.select;let i=this._getDomElement("zoomIncrease");i.onclick=()=>{let c=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,h=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight;this._designerCanvas.zoomFactor>.1?this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor+.1):this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor+.01)};let n=this._getDomElement("zoomDecrease");n.onclick=()=>{let c=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,h=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight;this._designerCanvas.zoomFactor>.11?this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor-.1):this._designerCanvas.zoomPoint({x:c/2,y:h/2},this._designerCanvas.zoomFactor-.01),this._designerCanvas.zoomFactor<.001&&this._designerCanvas.zoomPoint({x:c/2,y:h/2},.001)};let s=this._getDomElement("zoomReset");s.onclick=()=>{this.zoomReset()};let o=this._getDomElement("zoomFit");o.onclick=()=>{this.zoomToFit()},this.addEventListener(P.Wheel,c=>this._onWheel(c));let a=this._getDomElement("alignSnap");a.onclick=()=>{this._designerCanvas.alignOnSnap=!this._designerCanvas.alignOnSnap,a.style.backgroundColor=this._designerCanvas.alignOnSnap?"deepskyblue":""},a.style.backgroundColor=this._designerCanvas.alignOnSnap?"deepskyblue":"",a.oncontextmenu=c=>{c.preventDefault()};let l=this._getDomElement("alignGrid");l.onclick=()=>{this._designerCanvas.alignOnGrid=!this._designerCanvas.alignOnGrid,l.style.backgroundColor=this._designerCanvas.alignOnGrid?"deepskyblue":""},l.style.backgroundColor=this._designerCanvas.alignOnGrid?"deepskyblue":"",l.oncontextmenu=c=>{c.preventDefault();let h=prompt("raster size",this.designerCanvas.gridSize.toString());if(h){let p=parseInt(h);p>0&&(this.designerCanvas.gridSize=p)}},this._lowertoolbar=this._getDomElement("lowertoolbar"),this._sVert.addEventListener("scrollbar-input",c=>this._onScrollbar(c)),this._sHor.addEventListener("scrollbar-input",c=>this._onScrollbar(c))}zoomReset(){this._designerCanvas.canvasOffset={x:0,y:0},this._designerCanvas.zoomFactor=1,this._sVert.value=.5,this._sHor.value=.5,this._zoomInput.value=Math.round(this._designerCanvas.zoomFactor*100)+"%"}zoomToFit(){this._designerCanvas.zoomToFit()}_onScrollbar(e){e?.detail=="incrementLarge"?e.target.value+=.25:e?.detail=="decrementLarge"?e.target.value-=.25:e?.detail=="incrementSmall"?e.target.value+=.05:e?.detail=="decrementSmall"&&(e.target.value-=.05);let t=this.designerCanvas.designerOffsetWidth>this.designerCanvas.offsetWidth?this.designerCanvas.designerOffsetWidth:this.designerCanvas.offsetWidth,i=this.designerCanvas.designerOffsetHeight>this.designerCanvas.offsetHeight?this.designerCanvas.designerOffsetHeight:this.designerCanvas.offsetHeight,n=t*(this._sHor.value-.5)*-2,s=i*(this._sVert.value-.5)*-2;this.designerCanvas.canvasOffset={x:n,y:s}}_onWheel(e){if(e.preventDefault(),e.ctrlKey){let t=this._designerCanvas.zoomFactor,i=e.deltaY<0?1:-1;t*=Math.exp(i*.2),t<.02&&(t=.02);let n=this.designerCanvas.getNormalizedEventCoordinates(e);this.designerCanvas.zoomTowardsPoint(n,t)}else e.shiftKey?(this._sHor.value+=e.deltaY/1e4,this._onScrollbar(null)):(this._sVert.value+=e.deltaY/1e4,this._onScrollbar(null),this._sHor.value+=e.deltaX/1e4,this._onScrollbar(null))}get designerWidth(){return this._designerCanvas.designerWidth}set designerWidth(e){this._designerCanvas.designerWidth=e}get designerHeight(){return this._designerCanvas.designerHeight}set designerHeight(e){this._designerCanvas.designerHeight=e}set additionalStyles(e){this._designerCanvas.additionalStyles=e}setDesignItems(e){this._designerCanvas.setDesignItems(e)}async executeCommand(e){this._designerCanvas.executeCommand(e)}canExecuteCommand(e){return this._designerCanvas.canExecuteCommand(e)}initialize(e){if(this.serviceContainer=e,this._designerCanvas.initialize(e),e.designViewConfigButtons)for(let t of e.designViewConfigButtons)for(let i of t.provideButtons(this,this._designerCanvas))this._lowertoolbar.appendChild(i);this._toolbar.initialize(this.serviceContainer,this)}getDesignerHTML(){return this._designerCanvas.rootDesignItem.childCount>0?ie.ConvertToString(Array.from(this._designerCanvas.rootDesignItem.children()),!0,!0):this.serviceContainer.htmlWriterService.supportsRootItemWrite?ie.ConvertToString([this._designerCanvas.rootDesignItem],!0,!0):""}async parseDesignerHTML(e,t=!1){let i=this.serviceContainer.htmlParserService;if(!e)this._designerCanvas.overlayLayer.removeAllOverlays(),Mx.removeAllChildnodes(this._designerCanvas.overlayLayer),this._designerCanvas.rootDesignItem.clearChildren();else{let n=await i.parse(e,this.serviceContainer,this.instanceServiceContainer,!1);t?this._designerCanvas._internalSetDesignItems(n):this._designerCanvas.setDesignItems(n)}}static wrapInDesigner(e,t){let i=new on;i.initialize(t);let n=i.serviceContainer.getLastServiceWhere("htmlParserService",s=>s.constructor==Zt);return i.addDesignItems(n.createDesignItems(e,i.serviceContainer,i.instanceServiceContainer)),i}};customElements.define("node-projects-designer-view",Si);var Wd=class extends Si{constructor(){super()}async ready(){let e=await(await Promise.resolve().then(()=>(qa(),Km))).default;this.initialize(e())}};customElements.define("node-projects-default-configured-designer-view",Wd);ot();gp();dp();_p();up();yp();mp();Wp();Cd();Vn();Lt();vh();_h();xh();Ch();fp();pp();vp();Hs();vt();Dt();$p();rh();tp();ip();np();Ah();mh();Th();nh();kh();Oh();uh();Sd();Ed();ct();se();st();le();Rh();zh();Kc();Zc();dd();ud();$a();Md();td();Tp();Zo();Nh();Vh();xp();bp();Fh();oo();eh();th();jp();Yp();qp();ed();Ue();Fi();bn();Cc();Ec();Pc();Ic();Dc();kc();Ue();var Lf=class{read(e){let i=getComputedStyle(e).clipPath||e.getAttribute("style")?.match(/clip-path\s*:\s*([^;]+)/)?.[1]||"";return this._parse(i)}serialize(e){return[{attribute:"style:clipPath",value:this._serializeGeometry(e)}]}_parse(e){let t=e.trim();return t.startsWith("polygon(")?this._parsePolygon(t):t.startsWith("circle(")?this._parseCircle(t):t.startsWith("ellipse(")?this._parseEllipse(t):t.startsWith("path(")?this._parsePath(t):{segments:[],closed:!1}}_parsePolygon(e){let t=e.slice(8,-1).trim(),i=[],n=t.split(",");for(let s=0;s<n.length;s++){let o=n[s].trim().split(/\s+/);if(o.length>=2){let a=parseFloat(o[0]),l=parseFloat(o[1]);!isNaN(a)&&!isNaN(l)&&i.push({type:s===0?x.Move:x.Line,relative:!1,point:{x:a,y:l}})}}return i.length>0&&i.push({type:x.Close,relative:!1,point:{...i[0].point}}),{segments:i,closed:!0}}_parseCircle(e){let t=e.slice(7,-1).trim(),i=t.indexOf(" at "),n=50,s=50,o=50;if(i>=0){n=parseFloat(t.substring(0,i));let l=t.substring(i+4).trim().split(/\s+/);s=parseFloat(l[0])||50,o=parseFloat(l[1])||50}else n=parseFloat(t)||50;return{segments:[{type:x.Move,relative:!1,point:{x:s,y:o-n}},{type:x.Arc,relative:!1,point:{x:s+n,y:o},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:s,y:o+n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:s-n,y:o},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:s,y:o-n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:x.Close,relative:!1,point:{x:s,y:o-n}}],closed:!0}}_parseEllipse(e){let t=e.slice(8,-1).trim(),i=t.indexOf(" at "),n=50,s=25,o=50,a=50;if(i>=0){let c=t.substring(0,i).trim().split(/\s+/);n=parseFloat(c[0])||50,s=parseFloat(c[1])||25;let h=t.substring(i+4).trim().split(/\s+/);o=parseFloat(h[0])||50,a=parseFloat(h[1])||50}return{segments:[{type:x.Move,relative:!1,point:{x:o,y:a-s}},{type:x.Arc,relative:!1,point:{x:o+n,y:a},arc:{rx:n,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:o,y:a+s},arc:{rx:n,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:o-n,y:a},arc:{rx:n,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:o,y:a-s},arc:{rx:n,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Close,relative:!1,point:{x:o,y:a-s}}],closed:!0}}_parsePath(e){let t=e.match(/path\(\s*["']([^"']+)["']\s*\)/);if(!t)return{segments:[],closed:!1};let i="http://www.w3.org/2000/svg",n=document.createElementNS(i,"svg"),s=document.createElementNS(i,"path");s.setAttribute("d",t[1]),n.appendChild(s),n.style.position="absolute",n.style.width="0",n.style.height="0",n.style.overflow="hidden",document.body.appendChild(n);try{let{SvgPathGeometryReader:o}=(bn(),eu(Sc));return new o().read(s)}catch{return{segments:[],closed:!1}}finally{document.body.removeChild(n)}}_serializeGeometry(e){let t=e.segments.filter(s=>s.type!==x.Close);if(t.length===0)return"none";let i=t.filter(s=>s.type===x.Arc);if(i.length>=3&&i[0].arc){let s=t,o=s[0].point,a=s[1].point,l=s[2].point,c=s[3].point,h=(a.x+c.x)/2,p=(o.y+l.y)/2,d=Math.abs(a.x-c.x)/2,u=Math.abs(l.y-o.y)/2;return Math.abs(d-u)<.01?`circle(${d}px at ${h}px ${p}px)`:`ellipse(${d}px ${u}px at ${h}px ${p}px)`}return`polygon(${t.map(s=>`${s.point.x}px ${s.point.y}px`).join(", ")})`}};Ue();var Of=class{read(e){let i=getComputedStyle(e).shapeOutside||e.getAttribute("style")?.match(/shape-outside\s*:\s*([^;]+)/)?.[1]||"";return this._parse(i)}serialize(e){return[{attribute:"style:shapeOutside",value:this._serializeGeometry(e)}]}_parse(e){let t=e.trim();return t.startsWith("polygon(")?this._parsePolygon(t):t.startsWith("circle(")?this._parseCircle(t):t.startsWith("ellipse(")?this._parseEllipse(t):{segments:[],closed:!1}}_parsePolygon(e){let t=e.slice(8,-1).trim(),i=[],n=t.split(",");for(let s=0;s<n.length;s++){let o=n[s].trim().split(/\s+/);if(o.length>=2){let a=parseFloat(o[0]),l=parseFloat(o[1]);!isNaN(a)&&!isNaN(l)&&i.push({type:s===0?x.Move:x.Line,relative:!1,point:{x:a,y:l}})}}return i.length>0&&i.push({type:x.Close,relative:!1,point:{...i[0].point}}),{segments:i,closed:!0}}_parseCircle(e){let t=e.slice(7,-1).trim(),i=t.indexOf(" at "),n=50,s=50,o=50;if(i>=0){n=parseFloat(t.substring(0,i));let l=t.substring(i+4).trim().split(/\s+/);s=parseFloat(l[0])||50,o=parseFloat(l[1])||50}else n=parseFloat(t)||50;return{segments:[{type:x.Move,relative:!1,point:{x:s,y:o-n}},{type:x.Arc,relative:!1,point:{x:s+n,y:o},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:s,y:o+n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:s-n,y:o},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:s,y:o-n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:x.Close,relative:!1,point:{x:s,y:o-n}}],closed:!0}}_parseEllipse(e){let t=e.slice(8,-1).trim(),i=t.indexOf(" at "),n=50,s=25,o=50,a=50;if(i>=0){let c=t.substring(0,i).trim().split(/\s+/);n=parseFloat(c[0])||50,s=parseFloat(c[1])||25;let h=t.substring(i+4).trim().split(/\s+/);o=parseFloat(h[0])||50,a=parseFloat(h[1])||50}return{segments:[{type:x.Move,relative:!1,point:{x:o,y:a-s}},{type:x.Arc,relative:!1,point:{x:o+n,y:a},arc:{rx:n,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:o,y:a+s},arc:{rx:n,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:o-n,y:a},arc:{rx:n,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:o,y:a-s},arc:{rx:n,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Close,relative:!1,point:{x:o,y:a-s}}],closed:!0}}_serializeGeometry(e){let t=e.segments.filter(s=>s.type!==x.Close);if(t.length===0)return"none";let i=t.filter(s=>s.type===x.Arc);if(i.length>=3&&i[0].arc){let s=t,o=s[0].point,a=s[1].point,l=s[2].point,c=s[3].point,h=(a.x+c.x)/2,p=(o.y+l.y)/2,d=Math.abs(a.x-c.x)/2,u=Math.abs(l.y-o.y)/2;return Math.abs(d-u)<.01?`circle(${d}px at ${h}px ${p}px)`:`ellipse(${d}px ${u}px at ${h}px ${p}px)`}return`polygon(${t.map(s=>`${s.point.x}px ${s.point.y}px`).join(", ")})`}};Ue();var Nf=class{read(e){let i=getComputedStyle(e).offsetPath||e.getAttribute("style")?.match(/offset-path\s*:\s*([^;]+)/)?.[1]||"";return this._parse(i)}serialize(e){return[{attribute:"style:offsetPath",value:this._serializeGeometry(e)}]}_parse(e){let t=e.trim();return t.startsWith("polygon(")?this._parsePolygon(t):t.startsWith("circle(")?this._parseCircle(t):t.startsWith("ellipse(")?this._parseEllipse(t):t.startsWith("path(")?this._parsePath(t):{segments:[],closed:!1}}_parsePolygon(e){let t=e.slice(8,-1).trim(),i=[],n=t.split(",");for(let s=0;s<n.length;s++){let o=n[s].trim().split(/\s+/);if(o.length>=2){let a=parseFloat(o[0]),l=parseFloat(o[1]);!isNaN(a)&&!isNaN(l)&&i.push({type:s===0?x.Move:x.Line,relative:!1,point:{x:a,y:l}})}}return i.length>0&&i.push({type:x.Close,relative:!1,point:{...i[0].point}}),{segments:i,closed:!0}}_parseCircle(e){let t=e.slice(7,-1).trim(),i=t.indexOf(" at "),n=50,s=50,o=50;if(i>=0){n=parseFloat(t.substring(0,i));let l=t.substring(i+4).trim().split(/\s+/);s=parseFloat(l[0])||50,o=parseFloat(l[1])||50}else n=parseFloat(t)||50;return{segments:[{type:x.Move,relative:!1,point:{x:s,y:o-n}},{type:x.Arc,relative:!1,point:{x:s+n,y:o},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:s,y:o+n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:s-n,y:o},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:s,y:o-n},arc:{rx:n,ry:n,rotation:0,largeArc:!1,sweep:!0}},{type:x.Close,relative:!1,point:{x:s,y:o-n}}],closed:!0}}_parseEllipse(e){let t=e.slice(8,-1).trim(),i=t.indexOf(" at "),n=50,s=25,o=50,a=50;if(i>=0){let c=t.substring(0,i).trim().split(/\s+/);n=parseFloat(c[0])||50,s=parseFloat(c[1])||25;let h=t.substring(i+4).trim().split(/\s+/);o=parseFloat(h[0])||50,a=parseFloat(h[1])||50}return{segments:[{type:x.Move,relative:!1,point:{x:o,y:a-s}},{type:x.Arc,relative:!1,point:{x:o+n,y:a},arc:{rx:n,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:o,y:a+s},arc:{rx:n,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:o-n,y:a},arc:{rx:n,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Arc,relative:!1,point:{x:o,y:a-s},arc:{rx:n,ry:s,rotation:0,largeArc:!1,sweep:!0}},{type:x.Close,relative:!1,point:{x:o,y:a-s}}],closed:!0}}_parsePath(e){let t=e.match(/path\(\s*["']([^"']+)["']\s*\)/);if(!t)return{segments:[],closed:!1};let i="http://www.w3.org/2000/svg",n=document.createElementNS(i,"svg"),s=document.createElementNS(i,"path");s.setAttribute("d",t[1]),n.appendChild(s),n.style.position="absolute",n.style.width="0",n.style.height="0",n.style.overflow="hidden",document.body.appendChild(n);try{let{SvgPathGeometryReader:o}=(bn(),eu(Sc));return new o().read(s)}catch{return{segments:[],closed:!1}}finally{document.body.removeChild(n)}}_serializeGeometry(e){let t=e.segments.filter(s=>s.type!==x.Close);if(t.length===0)return"none";let i=t.filter(s=>s.type===x.Arc);if(i.length>=3&&i[0].arc){let s=t,o=s[0].point,a=s[1].point,l=s[2].point,c=s[3].point,h=(a.x+c.x)/2,p=(o.y+l.y)/2,d=Math.abs(a.x-c.x)/2,u=Math.abs(l.y-o.y)/2;return Math.abs(d-u)<.01?`circle(${d}px at ${h}px ${p}px)`:`ellipse(${d}px ${u}px at ${h}px ${p}px)`}return`polygon(${t.map(s=>`${s.point.x}px ${s.point.y}px`).join(", ")})`}};Jc();qc();Nc();Vc();ah();lh();$e();Le();Tt();le();Ms();var ml=class extends F{_skewXLine;_skewYLine;_skewXCircle;_skewYCircle;_skewXReferencePoint={x:0,y:0};_skewYReferencePoint={x:0,y:0};_activeAxis=null;_baseTransform="";_skewX=0;_skewY=0;constructor(e,t,i){super(e,t,i)}extend(e,t){this.refresh(e,t)}refresh(e,t){let i=this.extendedItem.element.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!i)return;let n=[i.p1,i.p2,i.p3,i.p4];if(n.some(u=>!Number.isFinite(u.x)||!Number.isFinite(u.y))){this.remove();return}let s=this.designerCanvas.zoomFactor;if(!this._valuesHaveChanges(s,...n.flatMap(u=>[u.x,u.y])))return;let o=Ui(i),a=Be(i.p1,i.p2,o,56/s,{x:0,y:-1}),l=Be(i.p1,i.p2,o,48/s,{x:0,y:-1}),c=Be(i.p1,i.p2,o,38/s,{x:0,y:-1}),h=Be(i.p2,i.p3,o,30/s,{x:1,y:0}),p=Be(i.p2,i.p3,o,22/s,{x:1,y:0}),d=Be(i.p2,i.p3,o,6/s,{x:1,y:0});this._skewXLine=this._drawLine(l.x,l.y,c.x,c.y,"svg-primary-skew-line",this._skewXLine),this._skewYLine=this._drawLine(p.x,p.y,d.x,d.y,"svg-primary-skew-line",this._skewYLine),this._skewXLine.style.strokeWidth=(1/s).toString(),this._skewYLine.style.strokeWidth=(1/s).toString(),this._skewXCircle?this._skewXCircle=this._drawCircle(a.x,a.y,5/s,"svg-primary-skew",this._skewXCircle):(this._skewXCircle=this._drawCircle(a.x,a.y,5/s,"svg-primary-skew",this._skewXCircle),this._skewXCircle.addEventListener("pointerdown",u=>this._handlePointerEvent("x",u)),this._skewXCircle.addEventListener("pointermove",u=>this._handlePointerEvent("x",u)),this._skewXCircle.addEventListener("pointerup",u=>this._handlePointerEvent("x",u))),this._skewXCircle.style.strokeWidth=(1/s).toString(),this._skewXCircle.style.cursor="ew-resize",this._skewYCircle?this._skewYCircle=this._drawCircle(h.x,h.y,5/s,"svg-primary-skew",this._skewYCircle):(this._skewYCircle=this._drawCircle(h.x,h.y,5/s,"svg-primary-skew",this._skewYCircle),this._skewYCircle.addEventListener("pointerdown",u=>this._handlePointerEvent("y",u)),this._skewYCircle.addEventListener("pointermove",u=>this._handlePointerEvent("y",u)),this._skewYCircle.addEventListener("pointerup",u=>this._handlePointerEvent("y",u))),this._skewYCircle.style.strokeWidth=(1/s).toString(),this._skewYCircle.style.cursor="ns-resize",this._skewYCircle.style.fill="#eaf5ff"}_handlePointerEvent(e,t){t.stopPropagation();let i=t.target;switch(t.type){case"pointerdown":i.setPointerCapture(t.pointerId),this._readPersistedTransform(),e==="x"?this._skewXReferencePoint=this._getSkewReferencePoint("x"):this._skewYReferencePoint=this._getSkewReferencePoint("y"),this._activeAxis=e;break;case"pointermove":if(this._activeAxis===e&&t.buttons>0){let n=this._getSkewAngle(e,t);e==="x"?this._skewX=n:this._skewY=n,this._setPreviewTransform()}break;case"pointerup":if(this._activeAxis===e){i.releasePointerCapture(t.pointerId);let n=this._getSkewAngle(e,t);e==="x"?this._skewX=n:this._skewY=n,this._commitTransform(),this._activeAxis=null}break}}_readPersistedTransform(){let{baseTransform:e,skewX:t,skewY:i}=this._parseTransform(this.extendedItem.getStyleFromSheetOrLocal("transform")??"");this._baseTransform=e,this._skewX=t,this._skewY=i}_getSkewReferencePoint(e){let t=this.extendedItem.element,i=Fe(this.extendedItem.element),n=this.designerCanvas.zoomFactor,s=e==="x"?{x:i.width/2,y:-56/n}:{x:i.width+30/n,y:i.height/2},o=t.style.transform;try{t.style.transform=this._buildTransform(this._baseTransform,e==="x"?0:this._skewX,e==="y"?0:this._skewY);let a=t.getBoxQuads({box:"border",relativeTo:this.designerCanvas.canvas})[0];if(!a)return s;let l=Ui(a),c=e==="x"?Be(a.p1,a.p2,l,56/n,{x:0,y:-1}):Be(a.p2,a.p3,l,30/n,{x:1,y:0}),h=t.convertPointFromNode(c,this.designerCanvas.canvas);return!Number.isFinite(h.x)||!Number.isFinite(h.y)?s:{x:h.x,y:h.y}}finally{t.style.transform=o}}_setPreviewTransform(){this.extendedItem.element.style.transform=this._buildTransform(this._baseTransform,this._skewX,this._skewY)}_commitTransform(){let e=this._buildTransform(this._baseTransform,this._skewX,this._skewY);e?this.extendedItem.updateStyleInSheetOrLocal("transform",e):this.extendedItem.hasStyle("transform")?this.extendedItem.removeStyle("transform"):this.extendedItem.updateStyleInSheetOrLocal("transform",null);let t=this.extendedItem.element;this.extendedItem.hasStyle("transform")?t.style.transform=this.extendedItem.getStyle("transform")??"":t.style.transform=""}_getSkewAngle(e,t){let i=this.extendedItem.element;i.style.transform=this._buildTransform(this._baseTransform,e==="x"?0:this._skewX,e==="y"?0:this._skewY);let n=this.designerCanvas.getNormalizedEventCoordinates(t),s=i.convertPointFromNode({x:n.x,y:n.y},this.designerCanvas.canvas),a=getComputedStyle(i).transformOrigin.split(" "),l={x:parseFloat(a[0]),y:parseFloat(a[1])},c=Fe(i),h;if(e==="x"){let p=this._skewXReferencePoint.y-l.y;Math.abs(p)<.5&&(p=-Math.max(c.height/2,1)),h=Math.atan((s.x-l.x)/p)*180/Math.PI}else{let p=this._skewYReferencePoint.x-l.x;Math.abs(p)<.5&&(p=Math.max(c.width/2,1)),h=Math.atan((s.y-l.y)/p)*180/Math.PI}return h=Math.max(-80,Math.min(80,h)),$(t)||(h=Math.round(h/15)*15),parseFloat(N(this.extendedItem,h))}_buildTransform(e,t,i){let n=[];return e?.trim()&&n.push(e.trim()),Math.abs(t)>.001&&n.push(`skewX(${t}deg)`),Math.abs(i)>.001&&n.push(`skewY(${i}deg)`),n.join(" ").trim()}_parseTransform(e){if(!e||e==="none")return{baseTransform:"",skewX:0,skewY:0};let t=0,i=0,n=[];for(let s of this._splitTransformFunctions(e)){let o=s.slice(0,s.indexOf("(")).trim().toLowerCase(),l=s.slice(s.indexOf("(")+1,-1).split(",").map(c=>c.trim());o==="skewx"?t=this._parseAngle(l[0]):o==="skewy"?i=this._parseAngle(l[0]):o==="skew"?(t=this._parseAngle(l[0]),l.length>1&&(i=this._parseAngle(l[1]))):n.push(s)}return{baseTransform:n.join(" ").trim(),skewX:t,skewY:i}}_splitTransformFunctions(e){let t=[],i=-1,n=0;for(let s=0;s<e.length;s++){let o=e[s];o==="("?n++:o===")"?(n--,n===0&&i!==-1&&(t.push(e.slice(i,s+1).trim()),i=-1)):n===0&&i===-1&&o.trim()&&(i=s)}return!t.length&&e.trim()&&t.push(e.trim()),t}_parseAngle(e){if(!e)return 0;let t=parseFloat(e);return isNaN(t)?0:e.endsWith("rad")?t*180/Math.PI:e.endsWith("grad")?t*.9:e.endsWith("turn")?t*360:t}dispose(){this._removeAllOverlays()}};import{css as Nx}from"@node-projects/base-custom-webcomponent";var Vf=class{shouldExtend(e,t,i){return t.readOnly||i.element instanceof SVGElement||i.element instanceof HTMLTemplateElement?!1:!i.isRootItem}getExtension(e,t,i){return new ml(e,t,i)}static style=Nx`.svg-primary-skew{stroke:#3899ec;fill:#fff;stroke-width:1;pointer-events:auto}.svg-primary-skew-line{stroke:#3899ec;fill:none;stroke-width:1}`};ch();hh();ph();dh();sh();oh();Xc();$c();kp();Ap();vd();_d();od();ad();rd();sd();Fp();Bp();qh();Nn();md();fd();cd();hd();id();nd();Hp();Op();Lp();ep();ai();Jh();wr();pd();Kp();bd();Js();Xh();Td();ld();fh();Hh();wd();Dh();ap();op();Ao();hp();Ph();cp();lp();zp();gd();xd();yh();Eh();Oc();var an=class extends Hi{extendedItem;constructor(e,t){super(e,t)}};se();var fl=class extends an{_lineOffset=5;_lineLength=10;_circle;_line1;_line2;_line3;_line4;refresh(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e);this._circle=this._drawCircle(t.x,t.y,1,"svg-cursor-line",this._circle,T.Foreground),this._line1=this._drawLine(t.x,t.y-this._lineOffset,t.x,t.y-this._lineOffset-this._lineLength,"svg-cursor-line",this._line1,T.Foreground),this._line2=this._drawLine(t.x,t.y+this._lineOffset,t.x,t.y+this._lineOffset+this._lineLength,"svg-cursor-line",this._line2,T.Foreground),this._line3=this._drawLine(t.x-this._lineOffset,t.y,t.x-this._lineOffset-this._lineLength,t.y,"svg-cursor-line",this._line3,T.Foreground),this._line4=this._drawLine(t.x+this._lineOffset,t.y,t.x+this._lineOffset+this._lineLength,t.y,"svg-cursor-line",this._line4,T.Foreground)}dispose(){super._removeAllOverlays()}};import{css as Vx}from"@node-projects/base-custom-webcomponent";var Rf=class{getExtension(e){return new fl(e.extensionManager,e)}style=Vx`.svg-cursor-line{stroke:#000;pointer-events:none}`};se();var gl=class extends an{_circle;_line1;_line2;_line3;_line4;refresh(e){let t=this.designerCanvas.getNormalizedEventCoordinates(e);this._circle=this._drawCircle(t.x,t.y,1,"svg-cursor-line-dashed",this._circle,T.Foreground),this._line1=this._drawLine(t.x,t.y,t.x,0,"svg-cursor-line-dashed",this._line1,T.Foreground),this._line2=this._drawLine(t.x,t.y,t.x,this.designerCanvas.outerRect.height,"svg-cursor-line-dashed",this._line2,T.Foreground),this._line3=this._drawLine(t.x,t.y,0,t.y,"svg-cursor-line-dashed",this._line3,T.Foreground),this._line4=this._drawLine(t.x,t.y,this.designerCanvas.outerRect.width,t.y,"svg-cursor-line-dashed",this._line4,T.Foreground)}dispose(){super._removeAllOverlays()}};import{css as Rx}from"@node-projects/base-custom-webcomponent";var zf=class{getExtension(e){return new gl(e.extensionManager,e)}style=Rx`.svg-cursor-line-dashed{stroke:#000;pointer-events:none;stroke-dasharray:4 4}`};import{BaseCustomWebComponentConstructorAppend as zx,css as Fx,html as Bx}from"@node-projects/base-custom-webcomponent";var jd=class extends zx{static style=Fx`:host{overflow:hidden;display:block;width:100%;height:100%;position:relative}#outerDiv{width:100%;height:100%}#innerDiv{transform-origin:top left;height:100%;width:100%;image-rendering:pixelated}#above{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:auto;background:0 0;cursor:pointer}#viewRect{position:absolute;top:0;left:0;width:100%;height:100%;border:1px solid #000;pointer-events:none}`;static template=Bx`<div id="outerDiv"><div id="innerDiv"></div></div><div id="above"><div id="viewRect"></div></div>`;_innerDiv;_outerDiv;_above;_instanceServiceContainer;_contentChangedHandler;_maxX=0;_maxY=0;_resizeObserver;_innerShadow;_zoomFactorChangedHandler;_viewRect;_minatureScaleX=1;_minatureScaleY=1;_reRenderFlag=!1;_isDragging=!1;_boundMouseMove;_boundMouseUp;constructor(){super(),this._restoreCachedInititalValues(),this._outerDiv=this._getDomElement("outerDiv"),this._innerDiv=this._getDomElement("innerDiv"),this._viewRect=this._getDomElement("viewRect"),this._above=this._getDomElement("above"),this._innerShadow=this._innerDiv.attachShadow({mode:"open"}),this._boundMouseMove=this._onMouseMove.bind(this),this._boundMouseUp=this._onMouseUp.bind(this),this._above.addEventListener("mousedown",e=>this._onMouseDown(e)),this._resizeObserver=new ResizeObserver(()=>{this._reSize()})}ready(){this._resizeObserver.observe(this)}_reSize(){let e=this._outerDiv.getBoundingClientRect();this._minatureScaleX=e.width/this._maxX,this._minatureScaleY=e.height/this._maxY,this._innerDiv.style.scale=this._minatureScaleX+" "+this._minatureScaleY}async _reRender(){if(this._instanceServiceContainer){let e=this._instanceServiceContainer?.designerCanvas;this._innerShadow.adoptedStyleSheets=[...e.rootDesignItem.element.shadowRoot.adoptedStyleSheets];let t=e.designerPixelSize;this._maxX=t.width,this._maxY=t.height;let i=await this._instanceServiceContainer.designerCanvas.serviceContainer.miniatureViewService.provideMiniatureView(e);this._innerShadow.replaceChildren(i),this._reSize(),this._reDrawRect(),this._reRenderFlag=!1}}_reDrawRect(){let e=this._instanceServiceContainer?.designerCanvas,t=e.canvasOffset,i=e.zoomFactor;this._viewRect.style.left=-t.x/this._maxX*100+"%",this._viewRect.style.top=-t.y/this._maxY*100+"%",this._viewRect.style.width=e.clientWidth/i/this._maxX*100+"%",this._viewRect.style.height=e.clientHeight/i/this._maxY*100+"%"}_onMouseDown(e){this._instanceServiceContainer&&(this._isDragging=!0,this._moveCanvasToMousePosition(e),window.addEventListener("mousemove",this._boundMouseMove),window.addEventListener("mouseup",this._boundMouseUp),e.preventDefault())}_onMouseMove(e){this._isDragging&&(this._moveCanvasToMousePosition(e),e.preventDefault())}_onMouseUp(e){this._isDragging=!1,window.removeEventListener("mousemove",this._boundMouseMove),window.removeEventListener("mouseup",this._boundMouseUp)}_moveCanvasToMousePosition(e){let t=this._instanceServiceContainer.designerCanvas,i=t.zoomFactor,n=this._above.getBoundingClientRect(),s=e.clientX-n.left,o=e.clientY-n.top,a=s/n.width*this._maxX,l=o/n.height*this._maxY,c=t.clientWidth/i/2,h=t.clientHeight/i/2;t.canvasOffset={x:-(a-c),y:-(l-h)}}set instanceServiceContainer(e){this._contentChangedHandler?.dispose(),this._zoomFactorChangedHandler?.dispose(),this._instanceServiceContainer=e,this._instanceServiceContainer?(this._zoomFactorChangedHandler=this._instanceServiceContainer.designerCanvas.onZoomFactorChanged.on(()=>{this._reDrawRect()}),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(t=>{this._reRenderFlag===!1&&(this._reRenderFlag=!0,setTimeout(()=>this._reRender(),50))}),this._reRenderFlag===!1&&(this._reRenderFlag=!0,setTimeout(()=>this._reRender(),50))):this._innerShadow.innerHTML=""}};customElements.define("node-projects-web-component-designer-miniature-view",jd);q();import{BaseCustomWebComponentConstructorAppend as Hx,css as Gx,html as Wx}from"@node-projects/base-custom-webcomponent";var Yd=class extends Hx{static style=Gx`:host{overflow:hidden;display:block;width:100%;height:100%;position:relative;isolation:isolate;background:#f3f4f6;color:#111827;user-select:none;-webkit-user-select:none}#viewport{position:absolute;inset:0;overflow:hidden;cursor:grab;z-index:0;perspective:9000px}#viewport.dragging{cursor:grabbing}#scene{position:absolute;top:50%;left:50%;z-index:0;transform-style:preserve-3d;transform-origin:center center}#content{position:absolute;top:0;left:0;transform-style:preserve-3d;transform-origin:top left;pointer-events:none}#content,#content *{transform-style:preserve-3d}#empty{position:absolute;inset:0;display:none;align-items:center;justify-content:center;color:#4b5563;font:13px sans-serif;pointer-events:none}#controls{position:absolute;left:8px;right:8px;top:8px;z-index:2147483647;display:grid;grid-template-columns:auto minmax(100px,1fr) auto;align-items:center;gap:8px;box-sizing:border-box;padding:7px 9px;background:rgba(255,255,255,.92);border:1px solid rgba(17,24,39,.14);font:12px sans-serif;pointer-events:auto;z-index:1;position:relative}#depthSlider{width:100%;min-width:0}#depthValue{min-width:42px;text-align:right;font-variant-numeric:tabular-nums}`;static template=Wx`<div id="controls"><span>Depth</span> <input id="depthSlider" type="range" min="0" max="120" step="1" value="36"> <span id="depthValue">36px</span></div><div id="viewport"><div id="scene"><div id="content"></div></div><div id="empty">No layers</div></div>`;_viewport;_scene;_content;_empty;_depthSlider;_depthValue;_instanceServiceContainer;_contentChangedHandler;_zoomFactorChangedHandler;_resizeObserver;_reRenderFlag=!1;_maxX=0;_maxY=0;_depthSpacing=36;_rotateX=0;_rotateY=0;_translateX=0;_translateY=0;_scale=1;_layerDepthEntries=[];_dragStart;_boundPointerMove;_boundPointerUp;constructor(){super(),this._restoreCachedInititalValues(),this._viewport=this._getDomElement("viewport"),this._scene=this._getDomElement("scene"),this._content=this._getDomElement("content"),this._empty=this._getDomElement("empty"),this._depthSlider=this._getDomElement("depthSlider"),this._depthValue=this._getDomElement("depthValue"),this._boundPointerMove=this._onPointerMove.bind(this),this._boundPointerUp=this._onPointerUp.bind(this),this._depthSlider.addEventListener("input",()=>{this._depthSpacing=Number(this._depthSlider.value),this._depthValue.textContent=this._depthSpacing+"px",this._updateLayerDepths()}),this._viewport.addEventListener("pointerdown",e=>this._onPointerDown(e)),this._viewport.addEventListener("wheel",e=>this._onWheel(e),{passive:!1}),this._viewport.addEventListener("contextmenu",e=>e.preventDefault()),this._resizeObserver=new ResizeObserver(()=>this._fitScene())}ready(){this._resizeObserver.observe(this),this._applySceneTransform()}_scheduleRender(){this._reRenderFlag===!1&&(this._reRenderFlag=!0,setTimeout(()=>this._reRender(),50))}async _reRender(){if(!this._instanceServiceContainer)return;let e=this._instanceServiceContainer.designerCanvas;this._copyAdoptedStyleSheets(e.rootDesignItem);let t=e.designerPixelSize;this._maxX=Math.max(t.width,1),this._maxY=Math.max(t.height,1);let i=this._createLayerTree();this._content.replaceChildren(i.fragment),this._scene.style.width=this._maxX+"px",this._scene.style.height=this._maxY+"px",this._content.style.width=this._maxX+"px",this._content.style.height=this._maxY+"px",this._empty.style.display=i.count?"none":"flex",this._updateLayerDepths(),this._fitScene(),this._reRenderFlag=!1}_copyAdoptedStyleSheets(e){let t=e?.element,i=e?.usableContainer,n=t?.shadowRoot??(i instanceof Document?i:t?.ownerDocument);this.shadowRoot.adoptedStyleSheets=n?.adoptedStyleSheets?[...n.adoptedStyleSheets]:[]}_createLayerTree(){let e=this._instanceServiceContainer.rootDesignItem,t=document.createDocumentFragment(),i=0;this._layerDepthEntries=[];for(let n of e.children()){if(n.nodeType!==k.Element)continue;let s=n.element.cloneNode(!0);t.appendChild(s),i=this._prepareCloneTree(n,s,i)}return{fragment:t,count:i}}_prepareCloneTree(e,t,i){this._prepareCloneElement(t,i),i++;let n=Array.from(e.element.childNodes),s=Array.from(t.childNodes);for(let o of e.children()){if(o.nodeType!==k.Element)continue;let a=n.findIndex(c=>c===o.node),l=s[a];l instanceof Element&&(i=this._prepareCloneTree(o,l,i))}return i}_prepareCloneElement(e,t){(e instanceof HTMLElement||e instanceof SVGElement)&&(e.style.transformStyle="preserve-3d",e.style.willChange="translate",this._layerDepthEntries.push({element:e,depth:t}))}_updateLayerDepths(){if(this._depthValue.textContent=this._depthSpacing+"px",!this._layerDepthEntries.length)return;let e=this._layerDepthEntries.map(a=>a.depth),t=Math.min(...e),i=Math.max(...e),n=Math.max(i-t,1),s=a=>((a-t)/n-.5)*this._depthSpacing*2,o=new Map;for(let a of this._layerDepthEntries)o.set(a.element,a.depth);for(let a of this._layerDepthEntries){let l=a.element.parentElement,c;for(;l&&(c=o.get(l),c===void 0);)l=l.parentElement;let h=c===void 0?0:s(c);a.element.style.translate="0 0 "+(s(a.depth)-h)+"px"}}_fitScene(){let e=this._viewport.getBoundingClientRect();if(!e.width||!e.height||!this._maxX||!this._maxY)return;let t=Math.min(e.width/this._maxX,e.height/this._maxY)*.72;this._scale=Math.min(Math.max(t,.05),4),this._translateX=0,this._translateY=0,this._applySceneTransform()}_applySceneTransform(){this._scene.style.transformStyle="preserve-3d",this._content.style.transformStyle="preserve-3d",this._scene.style.transform="translate(-50%, -50%) translate("+this._translateX+"px, "+this._translateY+"px) scale("+this._scale+") rotateX("+this._rotateX+"deg) rotateY("+this._rotateY+"deg)",this._content.style.transform=""}_onPointerDown(e){e.target===this._depthSlider||e.button!==0&&e.button!==1&&e.button!==2||(this._dragStart={x:e.clientX,y:e.clientY,rotateX:this._rotateX,rotateY:this._rotateY,translateX:this._translateX,translateY:this._translateY,pan:e.button===1||e.button===2||e.shiftKey},this._viewport.classList.add("dragging"),this._viewport.setPointerCapture(e.pointerId),this._viewport.addEventListener("pointermove",this._boundPointerMove),this._viewport.addEventListener("pointerup",this._boundPointerUp),this._viewport.addEventListener("pointercancel",this._boundPointerUp),e.preventDefault())}_onPointerMove(e){if(!this._dragStart)return;let t=e.clientX-this._dragStart.x,i=e.clientY-this._dragStart.y;this._dragStart.pan?(this._translateX=this._dragStart.translateX+t,this._translateY=this._dragStart.translateY+i):(this._rotateY=this._dragStart.rotateY+t*.35,this._rotateX=Math.min(85,Math.max(-85,this._dragStart.rotateX-i*.35))),this._applySceneTransform(),e.preventDefault()}_onPointerUp(e){this._dragStart=null,this._viewport.classList.remove("dragging"),this._viewport.releasePointerCapture(e.pointerId),this._viewport.removeEventListener("pointermove",this._boundPointerMove),this._viewport.removeEventListener("pointerup",this._boundPointerUp),this._viewport.removeEventListener("pointercancel",this._boundPointerUp)}_onWheel(e){let t=e.deltaY<0?1.08:.92;this._scale=Math.min(6,Math.max(.03,this._scale*t)),this._applySceneTransform(),e.preventDefault()}set instanceServiceContainer(e){this._contentChangedHandler?.dispose(),this._zoomFactorChangedHandler?.dispose(),this._instanceServiceContainer=e,this._instanceServiceContainer?(this._zoomFactorChangedHandler=this._instanceServiceContainer.designerCanvas.onZoomFactorChanged.on(()=>{this._scheduleRender()}),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(()=>{this._scheduleRender()}),this._scheduleRender()):(this._content.replaceChildren(),this._layerDepthEntries=[],this._empty.style.display="flex")}};customElements.define("node-projects-web-component-designer-layer-depth-view",Yd);oe();import{BaseCustomWebComponentConstructorAppend as jx,css as Yx,html as Ux}from"@node-projects/base-custom-webcomponent";function Ff(r){if(!r)return"";let e,t=r.nodeName.toLowerCase();return r.id?e="#"+r.getAttribute("id"):r.getAttribute("class")&&(e="."+r.getAttribute("class").split(" ").join(".")),e?t+e:t}var yl=function(r){if(!r||r.nodeName==="HTML"||r.nodeName==="#document")return{node:document.documentElement,reason:"root"};if(r.nodeName==="#document-fragment")return yl(r.host);let e=r.ownerDocument.defaultView.getComputedStyle(r);if(e.position==="fixed"||e.position==="sticky")return{node:r,reason:`position: ${e.position}`};if(e.zIndex!=="auto"&&e.position!=="static")return{node:r,reason:`position: ${e.position}; z-index: ${e.zIndex}`};if(e.opacity!=="1")return{node:r,reason:`opacity: ${e.opacity}`};if(e.transform!=="none")return{node:r,reason:`transform: ${e.transform}`};if(e.scale!=="none")return{node:r,reason:`scale: ${e.scale}`};if(e.translate!=="none")return{node:r,reason:`translate: ${e.translate}`};if(e.rotate!=="none")return{node:r,reason:`rotate: ${e.rotate}`};if(e.mixBlendMode!=="normal")return{node:r,reason:`mixBlendMode: ${e.mixBlendMode}`};if(e.filter!=="none")return{node:r,reason:`filter: ${e.filter}`};if(e.backdropFilter!=="none")return{node:r,reason:`backdropFilter: ${e.backdropFilter}`};if(e.perspective!=="none")return{node:r,reason:`perspective: ${e.perspective}`};if(e.clipPath!=="none")return{node:r,reason:`clip-path: ${e.clipPath} `};let t=e.mask||e.webkitMask;if(t!=="none"&&t!==void 0)return{node:r,reason:`mask: ${t}`};let i=e.maskImage||e.webkitMaskImage;if(i!=="none"&&i!==void 0)return{node:r,reason:`mask-image: ${i}`};let n=e.maskBorder||e.webkitMaskBorder;if(n!=="none"&&n!==void 0)return{node:r,reason:`mask-border: ${n}`};if(e.isolation==="isolate")return{node:r,reason:`isolation: ${e.isolation}`};if(e.willChange==="transform"||e.willChange==="opacity"||e.willChange==="scale"||e.willChange==="translate"||e.willChange==="rotate")return{node:r,reason:`willChange: ${e.willChange}`};if(e.zIndex!=="auto"){let o=r.ownerDocument.defaultView.getComputedStyle(r.parentNode);if(o.display==="flex"||o.display==="inline-flex")return{node:r,reason:`flex-item; z-index: ${e.zIndex}`};if(o.grid!=="none / none / none / row / auto / auto")return{node:r,reason:`child of grid container; z-index: ${e.zIndex}`}}let s=e.contain;return["layout","paint","strict","content"].indexOf(s)>-1||s.indexOf("paint")>-1||s.indexOf("layout")>-1?{node:r,reason:`contain: ${s}`}:yl(r.parentNode)},Ud=class extends jx{static template=Ux`<div><table><tr><th colspan="2">Styling</th></tr><tr><td>display</td><td>[[?this.computedStyle?.display]]</td></tr><tr><td>position</td><td>[[?this.computedStyle?.position]]</td></tr><tr><td>visibility</td><td>[[?this.computedStyle?.visibility]]</td></tr><tr><td>pointerEvents</td><td>[[?this.computedStyle?.pointerEvents]]</td></tr><tr><td>zIndex</td><td>[[?this.computedStyle?.zIndex]]</td></tr><tr><th colspan="2">Context</th></tr><tr><td>offsetParent</td><td class="lnk" @click="[[this._clickLink(event, 'offsetParent')]]">[[?this.selectedElementOffsetParentText]]</td></tr><tr><td>createsStackingContext</td><td>[[this.createsStackingContext]]</td></tr><tr><td>stackingContextReason</td><td>[[this.createsStackingContextReason]]</td></tr><tr><td>stackingContextParent</td><td class="lnk" @click="[[this._clickLink(event, 'stackingContextParent')]]">[[?this.parentStackingContextText]]</td></tr></table></div>`;static style=Yx`:host{overflow:auto;height:100%;display:block;font-size:12px}table{font-family:Arial,Helvetica,sans-serif;border-collapse:collapse;width:100%}table td,table th{border:1px solid #ddd;padding:2px 4px}table tr:nth-child(even){background-color:#f2f2f2}table tr:hover{background-color:#ddd}table th{text-align:left;background-color:#989898;color:#fff}.lnk{color:#00f}.lnk:hover{text-decoration:underline;cursor:pointer}`;_ready;computedStyle;createsStackingContext="";createsStackingContextReason="";parentStackingContext;parentStackingContextText;selectedElementOffsetParent;selectedElementOffsetParentText;constructor(){super(),this._restoreCachedInititalValues()}ready(){this._parseAttributesToProperties(),this._bindingsParse(),this._ready=!0}_clickLink(e,t){if(t=="offsetParent"){if(this.selectedElementOffsetParent){let i=O.GetDesignItem(this.selectedElementOffsetParent);i.instanceServiceContainer.selectionService.setSelectedElements([i])}}else if(t=="stackingContextParent"&&this.parentStackingContext){let i=O.GetDesignItem(this.parentStackingContext);i.instanceServiceContainer.selectionService.setSelectedElements([i])}}update(e){this._ready&&requestAnimationFrame(()=>{let t=e?.element;if(t?.nodeType==3&&(t=t.parentNode),t&&t.nodeType!=8&&t.nodeType!=11){if(this.computedStyle=t.ownerDocument.defaultView.getComputedStyle(t),this.selectedElementOffsetParent=t.offsetParent,this.selectedElementOffsetParent==e.instanceServiceContainer.designerCanvas.rootDesignItem.element||this.selectedElementOffsetParent==e.instanceServiceContainer.designerCanvas.rootDesignItem.element.parentElement?(this.selectedElementOffsetParentText=null,this.selectedElementOffsetParent=null):this.selectedElementOffsetParentText=Ff(t.offsetParent),t&&t.nodeType===1){let i=yl(t);this.createsStackingContext=t===i.node,this.createsStackingContextReason=this.createsStackingContext?i.reason:"not a stacking context",this.parentStackingContext=i.node,this.createsStackingContext&&t.nodeName!=="HTML"&&(this.parentStackingContext=yl(t.parentNode).node),this.parentStackingContext==e.instanceServiceContainer.designerCanvas.rootDesignItem.element.parentElement||this.parentStackingContext==e.instanceServiceContainer.designerCanvas.rootDesignItem.element.parentElement.parentElement?(this.parentStackingContextText=null,this.parentStackingContext=null):this.parentStackingContextText=Ff(this.parentStackingContext)}}else this.computedStyle={},this.createsStackingContext=!1,this.createsStackingContextReason="",this.createsStackingContext=!1,this.selectedElementOffsetParent=null,this.selectedElementOffsetParentText=null,this.parentStackingContext=null,this.parentStackingContextText=null;this._bindingsRefresh()})}};customElements.define("node-projects-debug-view",Ud);import{BaseCustomWebComponentConstructorAppend as Xx,css as $x,html as Kx}from"@node-projects/base-custom-webcomponent";var vl=class extends Xx{static template=Kx`<div id="root"><div class="search"><span>search</span> <input style="flex-grow:1;min-width:0" value="{{this.searchText}}"> <span>replace</span> <input style="flex-grow:1;min-width:0" value="{{this.replaceText}}"> <button @click="[[this.replace()]]" style="grid-column:2">replace</button></div><hr><template repeat:item="[[this.refactorings]]"><details open><summary>[[item[1][0].itemType]]-name:<input value="[[item[1][0].name]]" @keydown="[[this._refactor(item, event)]]" style="flex-grow:1;min-width:0"></summary><ul><template repeat:reft="[[item[1]]]"><li>[[reft.type]]/[[reft.display]]</li></template></ul></details></template></div>`;static style=$x`:host{box-sizing:border-box;font-family:monospace;height:100%;width:100%;position:absolute;overflow:hidden}.search{display:grid;grid-template-columns:40px 1fr;align-items:center}span{font-size:10px}summary{cursor:pointer;font-size:10px;display:flex;align-items:center;white-space:nowrap}ul{margin:4px;padding-left:20px;font-size:10px}#root{padding:5px;display:flex;flex-direction:column;gap:4px;overflow-y:auto;height:calc(100% - 10px)}`;static is="node-projects-refactor-view";static properties={};_instanceServiceContainer;_selectionChangedHandler;_selectedItems;searchText="(.*)";replaceText="$1";refactorings=new Map;ready(){this._bindingsParse()}set instanceServiceContainer(e){this._instanceServiceContainer=e,this._selectionChangedHandler?.dispose(),this._selectionChangedHandler=this._instanceServiceContainer.selectionService.onSelectionChanged.on(t=>{this.selectedItems=t.selectedElements}),this.selectedItems=this._instanceServiceContainer.selectionService.selectedElements}get selectedItems(){return this._selectedItems}set selectedItems(e){this._selectedItems!=e&&(this._selectedItems=e,this.updateRefactorlist(this._selectedItems))}replace(){let e=null;for(let t of this.refactorings){let i=t[1][0].name,n=new RegExp(this.searchText);if(i.match(n)){e||(e=t[1][0].designItem.openGroup("refactor with regex "+this.searchText+" -> "+this.replaceText));let o=i.replace(n,this.replaceText);o!=i&&this.applyRefactoring(t,o)}}e&&e.commit()}_refactor(e,t){let i=t.target;t.key=="Enter"&&this.applyRefactoring(e,i.value)}applyRefactoring(e,t){let i=e[1][0].designItem.openGroup("refactor "+e[1][0].name+" to "+t);for(let n of e[1])n.service.refactor(n,n.name,t);i.commit()}updateRefactorlist(e){if(this.refactorings.clear(),e&&e.length){let t=[],i=e[0].serviceContainer;for(let n of i.refactorServices){let s=n.getRefactorings(e);t.push(...s)}for(let n of t){let s=this.refactorings.get(n.itemType+"|"+n.name);s===void 0&&(s=[],this.refactorings.set(n.itemType+"|"+n.name,s)),s.push(n)}}this._bindingsRefresh()}};customElements.define(vl.is,vl);Fl();he();Dt();import{BaseCustomWebComponentLazyAppend as Qx,css as Zx,html as Jx}from"@node-projects/base-custom-webcomponent";var Xn=class extends Qx{static style=Zx`:host{display:block;box-sizing:border-box;height:100%;overflow:auto}button{background-color:transparent;color:#fff;border:none;font-size:13px;display:block;cursor:pointer;width:100%;text-align:left;padding:8px 14px}button:hover{background:var(--light-grey,#383f52)}table{width:100%}td{color:#fff;font-size:13px}div{text-transform:uppercase;font-size:12px;font-weight:700;padding:4px 14px}`;static template=Jx`<table id="table"></table>`;_table;constructor(){super(),this._table=this._getDomElement("table")}loadElements(e,t,i){this._table.replaceChildren();for(let n of t){let s=document.createElement("tr"),o=document.createElement("td"),a=document.createElement("button");if(a.setAttribute("part","button"),n.icon&&!n.displayHtml){let c=n.icon;n.icon.startsWith("data:")||(c=i+n.icon),a.innerHTML='<table><tr><td align="left" valign="middle" style="width:20px;"><img style="width:16px;height:16px" src="'+c+'"></td><td align="left" >'+n.tag+`</td></tr></table>
|
|
554
|
+
`}else n.displayHtml?a.innerHTML=n.displayHtml:a.innerText=n.name?n.name:n.tag;a.draggable=!0,a.ondragstart=c=>{if(c.dataTransfer.setData(Ni,JSON.stringify(n)),c.currentTarget.style.outline="dashed",n.ghostElement)if(typeof n.ghostElement=="string"){let h=document.createRange();h.selectNode(document.body);let d=h.createContextualFragment(n.ghostElement).firstChild;d.style.position="absolute",d.style.top="-1000px",document.body.appendChild(d),c.dataTransfer.setDragImage(d,0,0),requestAnimationFrame(()=>document.body.removeChild(d))}else c.dataTransfer.setDragImage(n.ghostElement,0,0);else if(!n.import)try{let h=document.createElement(n.tag);if(n.defaultContent&&(h.innerHTML=n.defaultContent),n.defaultWidth&&(h.style.width=n.defaultWidth),n.defaultHeight&&(h.style.height=n.defaultHeight),n.defaultAttributes)for(let d in n.defaultAttributes)h.setAttribute(d,n.defaultAttributes[d]);if(n.defaultStyles)for(let d in n.defaultStyles)h.style[d]=n.defaultStyles[d];h.style.position="absolute",n.defaultWidth?h.style.top="-"+(parseInt(n.defaultHeight)+500)+"px":h.style.top="-500px",n.defaultWidth?h.style.left="-"+(parseInt(n.defaultWidth)+500)+"px":h.style.left="-500px",document.body.appendChild(h);let p=h.getBoundingClientRect();p.width>0&&p.height>0&&c.dataTransfer.setDragImage(h,0,0),requestAnimationFrame(()=>document.body.removeChild(h))}catch(h){console.warn("error creating gost elment",h)}},a.ondragend=c=>{n.import=null,c.currentTarget.style.outline="none"},a.ontouchstart=c=>{c.preventDefault()},a.onclick=c=>{let h=e.designerTools.get(n.tool??ee.DrawElementTool);typeof h=="function"&&(h=new h(n)),e.globalContext.tool=h},o.appendChild(a),s.appendChild(o);let l=document.createElement("td");l.innerText=n.description??"",s.appendChild(l),this._table.appendChild(s)}}};customElements.define("node-projects-palette-elements",Xn);import{BaseCustomWebComponentLazyAppend as qx,css as eb}from"@node-projects/base-custom-webcomponent";var Xd=class extends qx{selected="native";_designerTabControl;static style=eb`:host{display:flex;flex-direction:column;flex:1;height:100%}`;constructor(){super(),this._restoreCachedInititalValues(),this._designerTabControl=new Ct,this._designerTabControl.selectedIndex=0,this.shadowRoot.appendChild(this._designerTabControl)}async loadControls(e,t){this._designerTabControl.innerHTML="";for(let i of t)try{let n=await i.getElements(),s=new Xn;s.title=i.name,this._designerTabControl.appendChild(s),s.loadElements(e,n),i.onElementsChanged?.on(async()=>{s.loadElements(e,await i.getElements())})}catch(n){console.warn("Error loading elements",n)}this._designerTabControl.refreshItems()}};customElements.define("node-projects-palette-view",Xd);oe();import{BaseCustomWebComponentLazyAppend as tb,css as ib}from"@node-projects/base-custom-webcomponent";var $d=class extends tb{_items;_index;_previouslySelected;_treeDiv;_instanceServiceContainer;_selectionChangedHandler;_contentChangedHandler;_mapElementTreeitem;_rootItem;static style=ib`:host{--horz-margin:20px;--vert-margin:0px;--horz-shift:calc(var(--horz-margin) / 2);--vert-shift:12px;display:inline-block;position:relative;width:100%;height:100%;background:var(--dark-grey,#232733);overflow-y:auto}button{border:none;font-size:13px;display:block;padding:4px 0;cursor:pointer;width:100%;text-align:left;display:inline-block;margin:0;background:var(--dark-grey,#232733);position:relative;color:#fff}button:focus,button:hover{background:var(--light-grey,#383f52)}span{margin:4px}.id{font-style:italic;color:var(--highlight-pink,#e91e63)}.selected{background:var(--light-grey,#383f52);outline:0}li,ul{margin:0;padding:0}.tree ul{margin-left:var(--horz-margin)}.tree li{list-style-type:none;margin-top:var(--vert-margin);margin-bottom:var(--vert-margin);position:relative}.tree li::before{content:"";position:absolute;top:calc(0px - var(--vert-margin));left:calc(var(--horz-shift) - var(--horz-margin));width:calc(var(--horz-margin) - var(--horz-shift));height:calc(var(--vert-shift) + var(--vert-margin));border-left:1px solid #ccc;border-bottom:1px solid #ccc;border-radius:0}.tree li::after{position:absolute;content:"";top:var(--vert-shift);left:calc(var(--horz-shift) - var(--horz-margin));width:calc(var(--horz-margin) - var(--horz-shift));height:calc(100% - var(--vert-shift));border-left:1px solid #ccc;border-top:1px solid #ccc;border-radius:0}ul.tree>li:first-child::before{display:none}.tree li:last-child::after{display:none}ul.tree>li:first-child::after{border-radius:5px 0 0 0}.tree li:last-child:before{border-radius:0 0 0 5px}`;constructor(){super(),this._restoreCachedInititalValues(),this._treeDiv=document.createElement("div"),this._treeDiv.style.userSelect="none",this.shadowRoot.appendChild(this._treeDiv),this._treeDiv.addEventListener("click",this._clickElement.bind(this))}createTree(e){this._rootItem=e,e!=null&&this._recomputeTree(e.element,null)}set instanceServiceContainer(e){this._instanceServiceContainer=e,this._selectionChangedHandler?.dispose(),this._selectionChangedHandler=this._instanceServiceContainer.selectionService.onSelectionChanged.on(t=>{this.selectionChanged(t)}),this._contentChangedHandler?.dispose(),this._contentChangedHandler=this._instanceServiceContainer.onContentChanged.on(t=>{this.createTree(e.designerCanvas.rootDesignItem)}),this.createTree(e.designerCanvas.rootDesignItem)}selectionChanged(e){this._selectTreeElements(e.selectedElements.map(t=>this._mapElementTreeitem.get(t.element)))}_recomputeTree(e,t){this._mapElementTreeitem=new Map,this._treeDiv.innerHTML="";let i=document.createElement("ul");return i.classList.add("tree"),this._treeDiv.appendChild(i),this._index=0,this._items=this._getChildren(e,i),this._highlight(t),this._items}_makeButton(e,t,i){let n=document.createElement("button");n.dataset.index=i;let s=document.createElement("span");s.className="tag",s.textContent=e;let o=document.createElement("span");return o.className="id",o.textContent=t,n.appendChild(s),n.appendChild(o),n}_getChildren(e,t){let i=e.id==="viewContainer",n={tag:i?"main-app":e.tagName.toLowerCase(),id:i?"":e.id?"#"+e.id:"",text:i?"":'"'+e.textContent+'"',ref:e,index:this._index},s=document.createElement("li"),o=this._makeButton(n.tag,n.id,n.index);s.appendChild(o),t.appendChild(s),this._mapElementTreeitem.set(n.ref,o),this._index++;let a=[n],l=null;for(let c=0;c<e.children.length;c++){let h=e.children[c];h.localName!=="style"&&(l==null&&(l=document.createElement("ul"),s.appendChild(l)),a=a.concat(this._getChildren(h,l)))}return a}_clickElement(e){let t=e.target;t.localName==="span"&&(t=t.parentElement),this._selectTreeElements([t]),this._selectDesignerElement(t)}_selectTreeElements(e){if(this._previouslySelected)for(let t of this._previouslySelected)t&&t.classList.remove("selected");if(this._previouslySelected=e,e)for(let t of e)t&&t.classList.add("selected")}_selectDesignerElement(e){let t=e.dataset.index,i=this._items[t].ref,n=O.GetOrCreateDesignItem(i,i,this._rootItem.serviceContainer,this._rootItem.instanceServiceContainer);n.instanceServiceContainer.selectionService.setSelectedElements([n])}_highlight(e){if(!e)return;let t=this.shadowRoot.querySelectorAll("button");if(t.length===this._items.length){for(let i=0;i<this._items.length;i++)if(this._items[i].ref===e){this._selectTreeElements([t[i]]);return}}}};customElements.define("node-projects-tree-view",$d);Bl();import{BaseCustomWebComponentLazyAppend as ob,css as ab,cssFromString as lb,debounce as cb,TypedEvent as Kd}from"@node-projects/base-custom-webcomponent";import{BaseCustomWebComponentConstructorAppend as nb,css as rb,html as sb}from"@node-projects/base-custom-webcomponent";var $n=class extends nb{static style=rb`:host{display:block}#split{position:relative;height:100%;width:100%;grid-template-rows:calc(var(--split) * 1%) 5px calc(((100 - var(--split)) * 1%) - 5px);grid-template-columns:100%;display:grid;align-items:center}:host([orientation=horizontal]) #split{grid-template-rows:100%;grid-template-columns:calc(var(--split) * 1%) 5px calc(((100 - var(--split)) * 1%) - 5px)}#splitter{user-select:none;-webkit-user-select:none}:host([orientation=horizontal])>div>#splitter{cursor:ew-resize;width:5px;height:100%}:host([orientation=vertical])>div>#splitter{cursor:ns-resize;height:5px;width:100%}`;static template=sb`<div id="split" style="--split:50"><slot name="top"></slot><div id="splitter"></div><slot name="bottom"></slot></div>`;static properties={orientation:String};_orientation="vertical";get orientation(){return this._orientation}set orientation(e){this._orientation=e,this.setAttribute("orientation",e)}constructor(){super(),this._restoreCachedInititalValues()}ready(){this._parseAttributesToProperties(),this.setAttribute("orientation",this.orientation);let e=this._getDomElement("split"),t=this._getDomElement("splitter"),i=null;t.addEventListener("pointerdown",n=>{t.setPointerCapture(n.pointerId),i=!0}),t.addEventListener("pointerup",n=>{t.releasePointerCapture(n.pointerId),i=null}),t.addEventListener("pointermove",n=>{if(i!==null){let s=parseFloat(e.style.getPropertyValue("--split"));this.orientation==="horizontal"?s+=n.movementX*100/e.clientWidth:s+=n.movementY*100/e.clientHeight,isNaN(s)||e.style.setProperty("--split",s)}})}};customElements.define("node-projects-simple-split-view",$n);ze();st();var U;(function(r){r[r.designer=0]="designer",r[r.code=1]="code",r[r.split=2]="split",r[r.preview=3]="preview"})(U||(U={}));var Qd=class extends ob{designerView;codeView;demoView;additionalData;_firstLoad=!0;_stylesheetChangedEventRegistered;_additionalStyle;set additionalStyleString(e){this._additionalStyle=e,this.designerView.additionalStyles=[lb(e)]}get additionalStyleString(){return this._additionalStyle}_additionalStyles;set additionalStyles(e){this._additionalStyles=e,this.designerView.additionalStyles=this._additionalStyles}get additionalStyles(){return this._additionalStyles}_additionalStylesheets;set additionalStylesheets(e){this._additionalStylesheets=e,this.designerView.instanceServiceContainer.stylesheetService&&(this.designerView.instanceServiceContainer.stylesheetService.setStylesheets(e),this._stylesheetChangedEventRegistered||(this._stylesheetChangedEventRegistered=!0,this.designerView.instanceServiceContainer.stylesheetService.stylesheetChanged.on(t=>this.additionalStylesheetChanged.emit({name:t.name,newStyle:t.newStyle,oldStyle:t.oldStyle,changeSource:t.changeSource}))))}get additionalStylesheets(){return this._additionalStylesheets}additionalStylesheetChanged=new Kd;get readOnly(){return this.designerView?.readOnly}set readOnly(e){this.designerView&&(this.designerView.readOnly=e),this.codeView&&(this.codeView.readOnly=e)}onContentChanged=new Kd;onTabChanged=new Kd;_contentChangeSource="designer";_serviceContainer;_content="";_tabControl;_selectionPosition;_lastCodeSelectionKey;_splitDiv;_designerDiv;_codeDiv;refreshInSplitViewDebounced;_disableChangeNotificationDesigner;_disableChangeNotificationEditor;static get style(){return ab`div{height:100%;display:flex;flex-direction:column}node-projects-designer-view{height:100%;overflow:hidden}`}constructor(e,t,i=!1){super(),this.refreshInSplitViewDebounced=cb(this.refreshInSplitView,200),this._serviceContainer=e,t!=null&&(this._content=t);let n=document.createElement("div");this._tabControl=new Ct,n.appendChild(this._tabControl),this.designerView=new Si(i),this.designerView.setAttribute("exportparts","canvas"),this.designerView.slot="top",this._designerDiv=document.createElement("div"),this._tabControl.appendChild(this._designerDiv),this._designerDiv.appendChild(this.designerView),this._designerDiv.dataset.title="Designer",this.designerView.initialize(this._serviceContainer),this.designerView.instanceServiceContainer.documentContainer=this,this.designerView.instanceServiceContainer.selectionService.onSelectionChanged.on(s=>this.designerSelectionChanged(s)),this.designerView.instanceServiceContainer.selectionService.onSelectionRefresh.on(s=>this.designerSelectionChanged(s)),this.designerView.instanceServiceContainer.onContentChanged.on(()=>this.designerContentChanged()),this.codeView=new e.config.codeViewWidget,this.codeView.slot="bottom",this.codeView.style.position="relative",this._codeDiv=document.createElement("div"),this._tabControl.appendChild(this._codeDiv),this._codeDiv.style.position="relative",this._codeDiv.appendChild(this.codeView),this._codeDiv.dataset.title="Code",this.codeView.onTextChanged.on(s=>{this._disableChangeNotificationDesigner||(this._tabControl.selectedIndex===U.code||this._tabControl.selectedIndex===U.split)&&(this._disableChangeNotificationEditor=!0,this._content=s,this.refreshInSplitViewDebounced())}),this._splitDiv=new $n,this._splitDiv.style.height="100%",this._splitDiv.dataset.title="Split",this._tabControl.appendChild(this._splitDiv),e.config.demoViewWidget&&(this.demoView=new e.config.demoViewWidget,this.demoView.dataset.title="Preview",this._tabControl.appendChild(this.demoView)),queueMicrotask(()=>{this.shadowRoot.appendChild(n),this._tabControl.selectedIndex=U.designer})}async refreshInSplitView(){try{await this.updateDesignerHtml()}catch(e){console.error(e)}this._disableChangeNotificationEditor=!1}get currentView(){return this._tabControl.selectedIndex==U.designer?"designer":this._tabControl.selectedIndex==U.split?"split":this._tabControl.selectedIndex==U.code?"code":this._tabControl.selectedIndex==U.preview?"preview":null}set currentView(e){e=="designer"&&(this._tabControl.selectedIndex=U.designer),e=="split"&&(this._tabControl.selectedIndex=U.split),e=="code"&&(this._tabControl.selectedIndex=U.code),e=="preview"&&(this._tabControl.selectedIndex=U.preview)}designerSelectionChanged(e){if(this._tabControl.selectedIndex===U.split){let t=this.instanceServiceContainer.selectionService.primarySelection;t&&this.designerView.instanceServiceContainer.designItemDocumentPositionService&&(this._selectionPosition=this.instanceServiceContainer.selectionService.selectedPart?.textRange??this.designerView.instanceServiceContainer.designItemDocumentPositionService.getPosition(t),this._selectionPosition&&this.setCodeViewSelection(this._selectionPosition),this._selectionPosition=null)}}designerContentChanged(){if(this.onContentChanged.emit({source:this._contentChangeSource}),!this._disableChangeNotificationEditor){if(this._disableChangeNotificationDesigner=!0,this._tabControl.selectedIndex===U.code||this._tabControl.selectedIndex===U.split){let e=this.instanceServiceContainer.selectionService.primarySelection;this._content=this.designerView.getDesignerHTML(),this.codeView.update(this._content,this.designerView.instanceServiceContainer),this._lastCodeSelectionKey=null,e&&this.designerView.instanceServiceContainer.designItemDocumentPositionService&&(this._selectionPosition=this.instanceServiceContainer.selectionService.selectedPart?.textRange??this.designerView.instanceServiceContainer.designItemDocumentPositionService.getPosition(e),this._selectionPosition&&this.setCodeViewSelection(this._selectionPosition),this._selectionPosition=null)}this._disableChangeNotificationDesigner=!1}}dispose(){this.designerView?.instanceServiceContainer?.collaborationService&&(this.designerView.instanceServiceContainer.collaborationService.disconnect(),this.designerView.instanceServiceContainer.collaborationService.detachTransport()),this.codeView.dispose(),this.demoView.dispose()}executeCommand(e){this._tabControl.selectedIndex===U.designer||this._tabControl.selectedIndex===U.split?this.designerView.executeCommand(e):this._tabControl.selectedIndex===U.code?this.codeView.executeCommand(e):this._tabControl.selectedIndex===U.preview&&this.demoView.executeCommand(e)}canExecuteCommand(e){if(this._tabControl.selectedIndex===U.designer||this._tabControl.selectedIndex===U.split){if(this.designerView?.canExecuteCommand)return this.designerView.canExecuteCommand(e)}else if(this._tabControl.selectedIndex===U.code){if(this.codeView?.canExecuteCommand)return this.codeView.canExecuteCommand(e)}else if(this._tabControl.selectedIndex===U.preview&&this.demoView?.canExecuteCommand)return this.demoView.canExecuteCommand(e);return!1}async setContentAsync(e){this._content=e,this._tabControl&&(this._tabControl.selectedIndex===U.designer?await this.updateDesignerHtml():this._tabControl.selectedIndex===U.code?this.codeView.update(this._content,this.designerView.instanceServiceContainer):this._tabControl.selectedIndex===U.split||this._tabControl.selectedIndex===U.preview&&this.demoView.display(this._serviceContainer,this.designerView.instanceServiceContainer,this._content,this.additionalStyleString))}set content(e){this.setContentAsync(e)}get content(){return this._tabControl?(this._tabControl.selectedIndex===U.designer?this._content=this.designerView.getDesignerHTML():this._tabControl.selectedIndex===U.code&&(this._content=this.codeView.getText()),this._content):null}ready(){this._tabControl.onSelectedTabChanged.on(e=>{if(e.oldIndex===U.designer){let t=this.instanceServiceContainer.selectionService.primarySelection;this._content=this.designerView.getDesignerHTML(),this.designerView.instanceServiceContainer.designItemDocumentPositionService&&(this._selectionPosition=this.instanceServiceContainer.selectionService.selectedPart?.textRange??this.designerView.instanceServiceContainer.designItemDocumentPositionService.getPosition(t))}else e.oldIndex===U.code?this._content=this.codeView.getText():e.oldIndex===U.split?(this._designerDiv.appendChild(this.designerView),this._codeDiv.appendChild(this.codeView)):e.oldIndex===U.preview&&this.demoView?.stopDisplay&&this.demoView.stopDisplay();(e.newIndex===U.designer||e.newIndex===U.split)&&this.updateDesignerHtml(),(e.newIndex===U.code||e.newIndex===U.split)&&(this.codeView.update(this._content,this.designerView.instanceServiceContainer),this._lastCodeSelectionKey=null,this._selectionPosition&&(this.setCodeViewSelection(this._selectionPosition),Pt(20).then(t=>{this._selectionPosition&&this.setCodeViewSelection(this._selectionPosition),this._selectionPosition=null})),e.changedViaClick&&this.codeView.focusEditor()),e.newIndex===U.split&&(this._splitDiv.appendChild(this.designerView),this._splitDiv.appendChild(this.codeView)),e.newIndex===U.preview&&this.demoView.display(this._serviceContainer,this.designerView.instanceServiceContainer,this._content,this.additionalStyleString),this._content&&(this._firstLoad=!1),this.onTabChanged.emit({oldTab:U[e.oldIndex],newTab:U[e.newIndex]})}),this._content&&(this.content=this._content,this._firstLoad=!1)}async updateDesignerHtml(){if(this._firstLoad)return this.designerView.parseDesignerHTML(this._content,this._firstLoad);if(this.designerView.getDesignerHTML()!=this._content){this._contentChangeSource="code",await this.designerView.parseDesignerHTML(this._content,this._firstLoad),this._contentChangeSource="designer";return}else this.instanceServiceContainer.undoService.clearTransactionstackIfNotEmpty(),this.designerView.designerCanvas.overlayLayer.removeAllOverlays(),this.designerView.designerCanvas.extensionManager.reapplyAllAppliedExtentions(null,[I.Permanent,I.Selection,I.PrimarySelection,I.PrimarySelectionContainer,I.OnlyOneItemSelected,I.MultipleItemsSelected])}setCodeViewSelection(e){if(!e)return;let t=`${e.start}:${e.length}`;this._lastCodeSelectionKey!==t&&(this._lastCodeSelectionKey=t,this.codeView.setSelection(e))}get instanceServiceContainer(){return this.designerView.instanceServiceContainer}};customElements.define("node-projects-document-container",Qd);me();ih();Mt();he();qa();export{rl as AbsolutePlacementService,ti as AbstractBaseToolPopup,Qi as AbstractCssPropertiesService,tt as AbstractDesignViewConfigButton,an as AbstractDesignerPointerExtension,F as AbstractExtension,Po as AbstractHtmlWriterService,mt as AbstractPolymerLikePropertiesService,re as AbstractPropertiesService,al as AbstractStylesheetService,La as AlignItemsContextMenu,io as AltToEnterContainerExtension,no as AltToEnterContainerExtensionProvider,ef as AlwaysAbsolutePlacementService,Zi as ApplyFirstMachingExtensionProvider,Ho as AttachedPropertiesService,fn as AttributeAndPropertyChangeAction,un as AttributeChangeAction,Ki as AttributesPropertiesService,jr as BaseCustomWebComponentPropertiesService,Jm as BaseCustomWebcomponentBindingsService,sf as BaseCustomWebcomponentDesignItemService,ae as BasePropertyEditor,Di as BaseServiceContainer,Xa as BasicContextMenu,Ke as BasicStackedToolbarExtension,Oa as BasicWebcomponentPropertiesService,Zm as BindableObjectType,jn as BindingMode,R as BindingTarget,mf as BindingsRefactorService,Ca as BlockToolbarExtension,Ea as BlockToolbarExtensionProvider,Lr as BooleanPropertyEditor,Tn as BorderRadiusEditorWindow,Dn as BoxShadowEditorWindow,Nt as ButtonSeperatorProvider,ea as ChangeGroup,bi as ChildContextMenu,Fa as ChildrenContextMenu,dn as CodeViewSimple,Pl as ColorEditor,Il as ColorInput,Dr as ColorPropertyEditor,A as CommandType,et as CommonPropertiesService,Vt as ConditionExtensionProvider,sl as ContentAndIdPropertiesService,De as ContextMenu,nf as CopyPasteAsJsonService,Fs as CopyPasteContextMenu,vo as CopyPasteService,yr as CssAttributeParser,Lf as CssClipPathGeometryReader,$i as CssCombiner,_i as CssCurrentPropertiesService,xi as CssCustomPropertiesService,gr as CssEntry,Nf as CssOffsetPathGeometryReader,He as CssPropertiesService,Gr as CssPropertyEditor,Of as CssShapeOutsideGeometryReader,Ti as CssStyleChangeAction,fl as CursorLinePointerExtension,Rf as CursorLinePointerExtensionProvider,kr as DatePropertyEditor,Ud as DebugView,Wd as DefaultConfiguredDesignerView,Qa as DefaultEditorTypeService,Zt as DefaultHtmlParserService,Ir as DefaultInstanceService,_o as DefaultModelCommandService,gt as DefaultPlacementService,Wr as DefaultPropertyEditorTypesService,Ha as DeleteAction,Ga as DeletionService,hn as DemoView,O as DesignItem,aa as DesignItemDocumentPositionService,en as DesignItemService,on as DesignerCanvas,Ct as DesignerTabControl,Un as DesignerToolbar,we as DesignerToolbarButton,Si as DesignerView,xo as DisplayGridExtension,vi as DisplayGridExtensionProvider,Ya as DisplayMediaPngWriterService,Qd as DocumentContainer,ie as DomConverter,pa as DragDropService,xe as DraggableToolWindow,ua as DrawElementTool,So as DrawEllipsisTool,Co as DrawLineTool,Is as DrawPathTool,wo as DrawRectTool,Ro as DrawToolButtonProvider,zn as DrawToolPopup,sa as EditGridColumnRowSizesExtension,oa as EditGridColumnRowSizesExtensionProvider,Xi as EditTextExtension,mo as EditTextExtensionProvider,tf as ElectronPngWriterService,co as ElementAtPointService,je as ElementDisplayType,rs as ElementDragTitleExtension,ss as ElementDragTitleExtensionProvider,P as EventNames,Ne as EventsService,ul as ExtensionManager,I as ExtensionType,uo as ExternalDragDropService,ho as FlexBoxPlacementService,wa as FlexToolbarExtension,Sa as FlexToolbarExtensionProvider,Qo as FlexboxExtension,Jo as FlexboxExtensionDesignViewConfigButtons,Hn as FlexboxExtensionProvider,Ra as ForceCssContextMenu,lf as FormatingHtmlWriterService,An as GradientEditorWindow,Bo as GrayOutDragOverContainerExtension,Bn as GrayOutDragOverContainerExtensionProvider,eo as GrayOutExtension,to as GrayOutExtensionProvider,Go as GridAssignedRowColumnPropertyEditor,Ta as GridChildResizeExtension,Ma as GridChildResizeExtensionProvider,Pa as GridChildToolbarExtension,Ia as GridChildToolbarExtensionProvider,bo as GridExtensionDesignViewConfigButtons,lo as GridPlacementService,xa as GridToolbarExtension,ba as GridToolbarExtensionProvider,Ss as HighlightElementExtension,Cs as HighlightElementExtensionProvider,Io as HtmlWriterService,rf as IframeDemoProviderService,Or as ImageButtonListPropertyEditor,Mi as IndentedTextWriter,Se as InsertAction,Wt as InsertChildAction,pl as InstanceServiceContainer,ro as InvisibleElementExtension,qo as InvisibleElementExtensionDesignViewConfigButtons,so as InvisibleElementExtensionProvider,ao as ItemsBelowContextMenu,of as JsonFileElementsService,Ar as JsonPropertyEditor,pf as JsonPropertyPopupEditor,ra as JumpToElementContextMenu,Yd as LayerDepthView,gl as LinePointerExtension,zf as LinePointerExtensionProvider,df as ListPropertiesService,ns as Lit2PropertiesService,ur as LitElementPropertiesService,Qs as MagicWandSelectorTool,gs as MarginExtension,xs as MarginExtensionProvider,Ji as MarginTool,fa as MathMLElementsPropertiesService,ln as MetricsEditor,Wo as MetricsPropertyEditor,jd as MiniatureView,Wa as MiniatureViewService,hf as MultiplayerService,Ks as MultipleItemsSelectedContextMenu,ca as MultipleSelectionRectExtension,ha as MultipleSelectionRectExtensionProvider,ee as NamedTools,mr as NativeElementsPropertiesService,k as NodeType,Qm as NpmPackageLoader,Tr as NumberPropertyEditor,cn as NumericStyleInput,el as ObservedCustomElementsRegistry,za as OptionsContextMenuButton,T as OverlayLayer,sn as OverlayLayerView,ka as PaddingExtension,Aa as PaddingExtensionProvider,qi as PaddingTool,Xn as PaletteElements,Xd as PaletteView,zs as PanTool,Bs as PasteFormatContextMenu,ko as PathContextMenu,Zs as PickColorTool,$o as PlacementExtension,Ko as PlacementExtensionProvider,zl as PlainScrollbar,Ee as PointerActionType,Es as PointerTool,No as PointerToolButtonProvider,Rn as PointerToolPopup,dr as PolymerPropertiesService,bs as PositionExtension,ws as PositionExtensionProvider,il as PreDefinedElementsService,Na as PreviousElementSelectExtension,Va as PreviousElementSelectExtensionProvider,tn as ProjectiveTransformExtension,Ka as ProjectiveTransformExtensionProvider,z as PropertiesHelper,Cr as PropertyChangeAction,Bd as PropertyGrid,Qe as PropertyGridPropertyList,Hd as PropertyGridWithHeader,Xo as PropertyGroupsService,_ as PropertyType,Do as RectContextMenu,Mn as RectangleSelectorTool,vl as RefactorView,Y as RefreshMode,As as ResizeExtension,Ts as ResizeExtensionProvider,Ls as RotateExtension,Os as RotateExtensionProvider,Ns as RotateGroupExtension,Vs as RotateGroupExtensionProvider,Lo as RotateLeftAndRight,ma as RoundPixelsDesignViewConfigButton,fr as SVGElementsPropertiesService,wi as Screenshot,Ua as SearchService,x as SegmentType,Oo as SelectAllChildrenContextMenu,gn as SelectPropertyEditor,Ds as SelectionDefaultExtension,ks as SelectionDefaultExtensionProvider,na as SelectionService,Fn as SelectionToolPopup,Fo as SelectorToolButtonProvider,Te as SeperatorContextMenu,_t as SeperatorToolProvider,lr as ServiceContainer,cl as SetDesignItemsAction,da as SimpleDemoProviderService,Wn as SimpleToolButtonProvider,ml as SkewExtension,Vf as SkewExtensionProvider,po as SnaplinesProviderService,Ja as StyleElementRenderedDesignItemService,ll as StylesheetChangedAction,xr as StylesheetServiceDesignViewConfigButtons,Qr as SvgCircleGeometryReader,Kr as SvgEllipseGeometryReader,$r as SvgLineGeometryReader,xn as SvgPathGeometryReader,ga as SvgPathSourceMapProvider,Zr as SvgPolygonGeometryReader,Jr as SvgPolylineGeometryReader,Xr as SvgRectGeometryReader,Sr as TextContentChangeAction,Mr as TextPropertyEditor,ff as TextRefactorService,kn as TextShadowEditorWindow,qs as TextTool,zo as TextToolButtonProvider,Vr as ThicknessPropertyEditor,Xs as ToolWindowsContextMenu,Da as ToolbarExtensionsDesignViewConfigButtons,tl as TouchGestureHelper,ms as TransformOriginExtension,fs as TransformOriginExtensionProvider,la as TransformToolButtonProvider,yi as TransformToolPopup,$d as TreeView,ta as UndoService,va as UnifiedGeometryExtension,_a as UnifiedGeometryExtensionProvider,Hr as UnitPropertyEditor,uf as UnkownElementsPropertiesService,W as ValueType,nl as WebcomponentManifestElementsService,af as WebcomponentManifestEventsService,cf as WebcomponentManifestParserService,nn as WebcomponentManifestPropertiesService,$s as ZMoveContextMenu,Mo as ZoomToElementContextMenu,Rs as ZoomTool,Vo as ZoomToolButtonProvider,Ye as appendCssImportant,Yw as arraysEqual,E as assetsPath,bt as basicStackedToolbarExtensionOverlayOptionName,ju as calculateAlpha,zi as calculateNormLegth,oi as calculateOuterRect,Fd as calculateSpecificity,Ii as combineNumericStyleInputValue,SI as copyTextToClipboard,Ln as copyToClipboard,$m as createDefaultServiceContainer,vm as createOverlayPathDataFromSvgGeometryElement,T1 as createPasteFormatSnapshot,Am as createPasteFormatSnapshotFromEntries,di as createPathD,Jp as createSvgPathHandleSourcePartKey,Ww as dataURItoBlob,Du as deepValue,hi as dragDropFormatNameBindingObject,Ni as dragDropFormatNameElementDefinition,hc as dragDropFormatNamePropertyGrid,br as enableStylesheetService,Iu as exportData,ue as filterChildPlaceItems,Tc as filterNonElementItems,Mp as flexboxExtensionShowOverlayOptionName,Yt as forceActiveAttributeName,Xt as forceFocusAttributeName,Kt as forceFocusVisibleAttributeName,$t as forceFocusWithinAttributeName,at as forceHoverAttributeName,Ut as forceVisitedAttributeName,ir as formatNumericStyleInputNumber,ym as fromOverlayPointToSvgUserSpace,Ub as getActiveElement,Z as getBoundingClientRectAlsoForDisplayContents,tx as getCollaborationNodeIndex,sR as getCollaborationNodeIndexes,Su as getContentBoxContentOffsets,$0 as getCustomGeometryReader,oR as getDesignItemByCollaborationNodeIndex,es as getDesignItemCurrentPos,Dm as getEdgeMidpoint,Be as getEdgeOffsetPoint,wu as getElementDisplaytype,Xb as getElementOffsetsInContainer,pr as getElementZoomFactor,go as getFromClipboard,Qt as getGeometryReader,xv as getOutwardNormal,Tm as getPasteFormatEntries,Ui as getQuadCenter,fo as getTextFromClipboard,On as gridExtensionShowOverlayOptionName,$ as hasCommandKey,Li as hideAtDesignTimeAttributeName,Oi as hideAtRunTimeAttributeName,Eu as htmlAsString,Yb as inDesigner,bu as instanceOf,Gl as instanceOfAny,Yu as interpolateLinePoints,Bh as invisibleElementExtensionShowOverlayOptionName,Pu as isAppleDevice,hr as isEmptyTextNode,Er as isFirefox,Ht as isInline,si as isInlineAfter,Jy as isSupportedSvgGeometryElement,gm as isVisualSvgElement,ci as lockAtDesignTimeAttributeName,Uu as moveSVGPath,cr as newElementFromString,Yi as normalizeToAbsolutePosition,Pi as parseNumericStyleInputValue,Ym as parseSvgPathDataSourceMap,A1 as pasteFormatKinds,ts as placeDesignItem,jw as pointInRect,Rm as positionsJsonMime,m_ as provideSnaplinesWithDistance,f_ as provideSnaplinesWithDistanceDistance,X0 as registerGeometryReader,ke as removeLeading,li as removeTrailing,mn as requestAnimationFramePromise,N as roundValue,Jl as setDeepValue,Mh as shadowrootGetSelection,IN as showPopup,Pt as sleep,Gt as splitCssImportant,It as straightenLine,iE as svg,fi as svgAsString,Om as switchContainer,En as toOverlayPointFromSvgUserSpace,is as transformOffsetByInverseLinearMatrix,qn as w3color,Vm as wrapSelectionInSpans};
|
|
555
555
|
// @license
|
|
556
556
|
//# sourceMappingURL=index-min.js.map
|