`:B``}getLinkLocation(){const e=(this.element.isInput()?this.element.nodeElement.template.outputPin.template:this).iconElement.getBoundingClientRect(),t=le.convertLocation([this.element.isInput()?e.left+1:e.right+2,(e.top+e.bottom)/2],this.blueprint.template.gridElement);return this.blueprint.compensateTranslation(t)}}class At extends wt{static#Ce=new Set;#ke=null;#xe;get inputPin(){return this.#xe}#Ne;get outputPin(){return this.#Ne}initialize(e){super.initialize(e),this.element.classList.add("ueb-node-style-minimal")}findDirectionaPin(e){if(e.nodeElement.getType()!==te.nodeType.knot||At.#Ce.has(e))return At.#Ce.clear(),!0;At.#Ce.add(e);for(let t of e.getLinks().map((e=>this.blueprint.getPin(e))))if(this.findDirectionaPin(t))return!0;return!1}render(){return B``}setupPins(){this.element.getPinElements().forEach((e=>this.element.querySelector(".ueb-node-border").appendChild(e)))}getPinElements(e){return e.querySelectorAll("ueb-pin")}createPinElements(){const e=this.element.getPinEntities().filter((e=>!e.isHidden())),t=e[e[0].isInput()?0:1],i=e[e[0].isOutput()?0:1],n=it.getConstructor("ueb-pin");return[this.#xe=n.newObject(t,new Tt,this.element),this.#Ne=n.newObject(i,new Tt,this.element)]}linksChanged(){}}class Mt extends kt{initialize(e){super.initialize(e),e.getType()===te.nodeType.variableGet?this.element.classList.add("ueb-node-style-getter"):e.getType()===te.nodeType.variableSet&&this.element.classList.add("ueb-node-style-setter")}setupPins(){super.setupPins();let e=this.element.getPinElements().find((e=>!e.entity.isHidden()&&!e.entity.isExecution()));this.element.style.setProperty("--ueb-node-color",e.getColor().cssText)}}class $t extends Pt{static#Le={};static properties={...Pt.properties,typePath:{type:String,attribute:"data-type",reflect:!0},nodeName:{type:String,attribute:"data-name",reflect:!0},advancedPinDisplay:{type:String,attribute:"data-advanced-display",converter:pe.attributeConverter,reflect:!0},enabledState:{type:String,attribute:"data-enabled-state",reflect:!0},nodeDisplayName:{type:String,attribute:!1},pureFunction:{type:Boolean,converter:le.booleanConverter,attribute:"data-pure-function",reflect:!0}};static dragEventName=te.nodeDragEventName;static dragGeneralEventName=te.nodeDragGeneralEventName;get blueprint(){return super.blueprint}set blueprint(e){super.blueprint=e,this.#Te.forEach((t=>t.blueprint=e))}#Ae;get nodeNameElement(){return this.#Ae}set nodeNameElement(e){this.#Ae=e}#Te=[];boundComments=[];#Me=!1;#$e=e=>{this.selected||this.#Me||(this.#Me=!0,this.addNextUpdatedCallbacks((()=>this.#Me=!1)),this.addLocation(e.detail.value))};static getTypeTemplate(e){if((e.getClass()===te.nodeType.callFunction||e.getClass()===te.nodeType.commutativeAssociativeBinaryOperator)&&"/Script/Engine.KismetMathLibrary"===e.FunctionReference.MemberParent.path){if(e.FunctionReference.MemberName?.startsWith("Conv_"))return xt;if(e.FunctionReference.MemberName?.startsWith("Percent_"))return Nt;switch(e.FunctionReference.MemberName){case"Abs":case"BMax":case"BMin":case"Exp":case"FMax":case"FMin":case"Max":case"MaxInt64":case"Min":case"MinInt64":return Nt}}switch(e.getClass()){case te.nodeType.comment:return St;case te.nodeType.knot:return At;case te.nodeType.variableGet:case te.nodeType.variableSet:return Mt}return wt}static fromSerializedObject(e){e=e.trim();let t=re.getSerializer($e).deserialize(e);return $t.newObject(t)}static newObject(e=new $e,t=new($t.getTypeTemplate(e))){const i=new $t;return i.initialize(e,t),i}initialize(e=new $e,t=new($t.getTypeTemplate(e))){super.initialize(e,t),this.#Te=this.template.createPinElements(),this.typePath=this.entity.getType(),this.nodeName=this.entity.getObjectName(),this.advancedPinDisplay=this.entity.AdvancedPinDisplay?.toString(),this.enabledState=this.entity.EnabledState,this.nodeDisplayName=this.getNodeDisplayName(),this.pureFunction=this.entity.bIsPureFunc,this.dragLinkObjects=[],super.setLocation([this.entity.NodePosX.value,this.entity.NodePosY.value]),this.entity.subscribe("AdvancedPinDisplay",(e=>this.advancedPinDisplay=e)),this.entity.subscribe("Name",(e=>this.nodeName=e)),this.entity.NodeWidth&&this.entity.NodeHeight?(this.sizeX=this.entity.NodeWidth.value,this.sizeY=this.entity.NodeHeight.value):this.updateComplete.then((()=>this.computeSizes()))}getUpdateComplete(){return Promise.all([super.getUpdateComplete(),...this.getPinElements().map((e=>e.updateComplete))]).then((()=>!0))}bindToComment(e){e==this||this.boundComments.includes(e)||(e.addEventListener(te.nodeDragEventName,this.#$e),this.boundComments.push(e))}unbindFromComment(e){const t=this.boundComments.indexOf(e);t>=0&&(e.removeEventListener(te.nodeDragEventName,this.#$e),this.boundComments[t]=this.boundComments[this.boundComments.length-1],this.boundComments.pop())}isInsideComment(e){return this.topBoundary()>=e.topBoundary()&&this.rightBoundary()<=e.rightBoundary()&&this.bottomBoundary()<=e.bottomBoundary()&&this.leftBoundary()>=e.leftBoundary()}cleanup(){super.cleanup(),this.acknowledgeDelete()}getType(){return this.entity.getType()}getNodeName(){return this.entity.getObjectName()}getNodeDisplayName(){switch(this.getType()){case te.nodeType.callFunction:case te.nodeType.commutativeAssociativeBinaryOperator:if("AddKey"==this.entity.FunctionReference.MemberName){let e=this.entity.FunctionReference.MemberParent.path.match($e.sequencerScriptingNameRegex);if(e)return`Add Key (${le.formatStringName(e[1])})`}let e=this.entity.FunctionReference.MemberName;if("/Script/Engine.KismetMathLibrary"==this.entity.FunctionReference.MemberParent.path){if(e.startsWith("Conv_"))return"";if(e.startsWith("Percent_"))return"%";const t=e.match(/[BF]([A-Z]\w+)/);switch(t&&(e=t[1]),e){case"Abs":return"ABS";case"Exp":return"e";case"Max":case"MaxInt64":return"MAX";case"Min":case"MinInt64":return"MIN"}}return le.formatStringName(e);case te.nodeType.dynamicCast:return`Cast To ${this.entity.TargetType.getName()}`;case te.nodeType.executionSequence:return"Sequence";case te.nodeType.ifThenElse:return"Branch";case te.nodeType.forEachElementInEnum:return`For Each ${this.entity.Enum.getName()}`;case te.nodeType.forEachLoopWithBreak:return"For Each Loop with Break";case te.nodeType.variableGet:return"";case te.nodeType.variableSet:return"SET";default:return this.entity.getClass()===te.nodeType.macro?le.formatStringName(this.entity.MacroGraphReference.getMacroName()):le.formatStringName(this.entity.getNameAndCounter()[0])}}setNodeWidth(e){this.entity.setNodeWidth(e),this.sizeX=e,this.acknowledgeReflow()}setNodeHeight(e){this.entity.setNodeHeight(e),this.sizeY=e,this.acknowledgeReflow()}sanitizeLinks(e=[]){this.getPinElements().forEach((t=>t.sanitizeLinks(e)))}rename(e){if(this.entity.Name==e)return!1;for(let t of this.getPinElements())for(let i of t.getLinks())this.blueprint.getPin(i).redirectLink(t,new Se({objectName:e,pinGuid:t.entity.PinId}));this.entity.Name=e}getPinElements(){return this.#Te}getPinEntities(){return this.entity.CustomProperties.filter((e=>e instanceof Te))}setLocation(e=[0,0],t=!0){this.entity.NodePosX.value=e[0],this.entity.NodePosY.value=e[1],super.setLocation(e,t)}acknowledgeDelete(){let e=new CustomEvent(te.nodeDeleteEventName);this.dispatchEvent(e)}acknowledgeReflow(){this.addNextUpdatedCallbacks((()=>this.computeSizes()),!0);let e=new CustomEvent(te.nodeReflowEventName);this.dispatchEvent(e)}setShowAdvancedPinDisplay(e){this.entity.AdvancedPinDisplay=new pe(e?"Shown":"Hidden")}toggleShowAdvancedPinDisplay(){this.setShowAdvancedPinDisplay("Shown"!=this.entity.AdvancedPinDisplay?.toString())}}class Dt extends Ze{static properties={selecting:{type:Boolean,attribute:"data-selecting",reflect:!0,converter:le.booleanConverter},scrolling:{type:Boolean,attribute:"data-scrolling",reflect:!0,converter:le.booleanConverter},focused:{type:Boolean,attribute:"data-focused",reflect:!0,converter:le.booleanConverter},zoom:{type:Number,attribute:"data-zoom",reflect:!0},scrollX:{type:Number,attribute:!1},scrollY:{type:Number,attribute:!1},additionalX:{type:Number,attribute:!1},additionalY:{type:Number,attribute:!1},translateX:{type:Number,attribute:!1},translateY:{type:Number,attribute:!1}};#De=!1;#Be=new Map;nodes=[];links=[];mousePosition=[0,0];waitingExpandUpdate=!1;nodeBoundariesSupplier=e=>({primaryInf:e.leftBoundary(!0),primarySup:e.rightBoundary(!0),secondaryInf:e.topBoundary(!0),secondarySup:e.bottomBoundary(!0)});nodeSelectToggleFunction=(e,t)=>{e.setSelected(t)};constructor(){super(),this.selecting=!1,this.scrolling=!1,this.focused=!1,this.zoom=0,this.scrollX=te.expandGridSize,this.scrollY=te.expandGridSize,this.translateX=te.expandGridSize,this.translateY=te.expandGridSize,super.initialize({},new ot)}initialize(){}getGridDOMElement(){return this.template.gridElement}getScroll(){return[this.scrollX,this.scrollY]}setScroll([e,t]){this.scrollX=e,this.scrollY=t}scrollDelta(e,t=!1){if(t){let t=[0,0];le.animate(0,e[0],te.smoothScrollTime,(e=>{this.scrollDelta([e-t[0],0],!1),t[0]=e})),le.animate(0,e[1],te.smoothScrollTime,(e=>{this.scrollDelta([0,e-t[1]],!1),t[1]=e}))}else{const t=[2*te.expandGridSize,2*te.expandGridSize];let i=this.getScroll(),n=[i[0]+e[0],i[1]+e[1]],s=[0,0];for(let e=0;e<2;++e)n[e]t[e]-te.gridExpandThreshold*te.expandGridSize&&(s[e]=1);0==s[0]&&0==s[1]||this.seamlessExpand(s),i=this.getScroll(),n=[i[0]+e[0],i[1]+e[1]],this.setScroll(n)}}scrollCenter(){const e=this.getScroll(),t=[this.translateX-e[0],this.translateY-e[1]],i=this.getViewportSize().map((e=>e/2)),n=[t[0]-i[0],t[1]-i[1]];this.scrollDelta(n,!0)}getViewportSize(){return[this.template.viewportElement.clientWidth,this.template.viewportElement.clientHeight]}getScrollMax(){return[this.template.viewportElement.scrollWidth-this.template.viewportElement.clientWidth,this.template.viewportElement.scrollHeight-this.template.viewportElement.clientHeight]}snapToGrid(e){return le.snapToGrid(e,te.gridSize)}seamlessExpand([e,t]){e=Math.round(e),t=Math.round(t);let i=this.getScale();[e,t]=[-e*te.expandGridSize,-t*te.expandGridSize],0!=e&&(this.scrollX+=e,e/=i),0!=t&&(this.scrollY+=t,t/=i),this.translateX+=e,this.translateY+=t}progressiveSnapToGrid(e){return te.expandGridSize*Math.round(e/te.expandGridSize+.5*Math.sign(e))}getZoom(){return this.zoom}setZoom(e,t){if((e=le.clamp(e,te.minZoom,te.maxZoom))==this.zoom)return;let i=this.getScale();this.zoom=e,t&&requestAnimationFrame((e=>{t[0]+=this.translateX,t[1]+=this.translateY;let n=this.getScale()/i,s=[n*t[0],n*t[1]];this.scrollDelta([(s[0]-t[0])*i,(s[1]-t[1])*i])}))}getScale(){return parseFloat(getComputedStyle(this.template.gridElement).getPropertyValue("--ueb-scale"))}compensateTranslation([e,t]){return[e-=this.translateX,t-=this.translateY]}getNodes(e=!1,[t,i,n,s]=[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MAX_SAFE_INTEGER,Number.MIN_SAFE_INTEGER]){let r=this.nodes;return e&&(r=r.filter((e=>e.selected))),(t>Number.MIN_SAFE_INTEGER||iNumber.MIN_SAFE_INTEGER)&&(r=r.filter((e=>e.topBoundary()>=t&&e.rightBoundary()<=i&&e.bottomBoundary()<=n&&e.leftBoundary()>=s))),r}getCommentNodes(e=!1){let t=[...this.template.getCommentNodes(e)];return 0===t.length&&(t=this.nodes.filter((t=>t.getType()===te.nodeType.comment&&(!e||t.selected)))),t}getPin(e){let t=this.template.getPin(e);return t&&t.nodeElement.getNodeName()==e.objectName.toString()||(t=[...this.nodes.find((t=>e.objectName.toString()==t.getNodeName()))?.getPinElements()??[]].find((t=>e.pinGuid.toString()==t.getPinId().toString()))),t}getLinks([e,t]=[]){if(null==e!=t==null){const i=e??t;return this.links.filter((e=>e.sourcePin==i||e.destinationPin==i))}return null!=e&&null!=t?this.links.filter((i=>i.sourcePin==e&&i.destinationPin==t||i.sourcePin==t&&i.destinationPin==e)):this.links}getLink(e,t,i=!1){return this.links.find((n=>n.sourcePin==e&&n.destinationPin==t||i&&n.sourcePin==t&&n.destinationPin==e))}selectAll(){this.getNodes().forEach((e=>this.nodeSelectToggleFunction(e,!0)))}unselectAll(){this.getNodes().forEach((e=>this.nodeSelectToggleFunction(e,!1)))}addGraphElement(...e){for(let t of e)if(t.blueprint=this,t instanceof $t&&!this.nodes.includes(t)){const e=t.entity.getObjectName(),i=this.nodes.find((t=>t.entity.getObjectName()==e));if(i){let e=i.entity.getObjectName(!0);this.#Be[e]=this.#Be[e]??-1;do{++this.#Be[e]}while(this.nodes.find((t=>t.entity.getObjectName()==te.nodeName(e,this.#Be[e]))));i.rename(te.nodeName(e,this.#Be[e]))}this.nodes.push(t),this.template.nodesContainerElement?.appendChild(t)}else t instanceof pt&&!this.links.includes(t)&&(this.links.push(t),this.template.linksContainerElement&&!this.template.linksContainerElement.contains(t)&&this.template.linksContainerElement.appendChild(t));e.filter((e=>e instanceof $t)).forEach((t=>t.sanitizeLinks(e))),e.filter((e=>e instanceof $t&&e.getType()==te.nodeType.comment)).forEach((e=>e.updateComplete.then((()=>e.template.manageNodesBind()))))}removeGraphElement(...e){for(let t of e)if(t.closest("ueb-blueprint")==this){t.remove();let e=t instanceof $t?this.nodes:t instanceof pt?this.links:null;e?.splice(e.findIndex((e=>e===t)),1)}}setFocused(e=!0){if(this.focused==e)return;let t=new CustomEvent(e?te.focusEventName.begin:te.focusEventName.end);this.focused=e,this.focused||this.unselectAll(),this.dispatchEvent(t)}acknowledgeEditText(e){const t=new CustomEvent(e?te.editTextEventName.begin:te.editTextEventName.end);this.dispatchEvent(t)}}customElements.define("ueb-blueprint",Dt);class Bt extends bt{#Oe;get locationChangeCallback(){return this.#Oe}set locationChangeCallback(e){this.#Oe=e}movementSpace;movementSpaceSize=[0,0];firstUpdated(e){super.firstUpdated(e),this.movementSpace=this.element.parentElement}setup(){super.setup();const e=this.movementSpace.getBoundingClientRect();this.movementSpaceSize=[e.width,e.height]}createDraggableObject(){return new mt(this.element,this.blueprint,{draggableElement:this.movementSpace,ignoreTranslateCompensate:!0,moveEverywhere:!0,movementSpace:this.movementSpace,repositionOnClick:!0,stepSize:1})}adjustLocation([e,t]){return this.locationChangeCallback?.(e,t),[e,t]}}class Ot extends Bt{adjustLocation([e,t]){const i=Math.round(this.movementSpaceSize[0]/2);e-=i,t=-(t-i);let[n,s]=le.getPolarCoordinates([e,t]);return n=Math.min(n,i),[e,t]=le.getCartesianCoordinates([n,s]),this.locationChangeCallback?.(e/i,t/i),[e=Math.round(e+i),t=Math.round(-t+i)]}}class Ht extends Je{windowElement;setup(){super.setup(),this.windowElement=this.closest("ueb-window")}setLocation([e,t]){super.setLocation(this.template.adjustLocation([e,t]))}}class zt extends Ht{constructor(){super(),super.initialize({},new Ot)}static newObject(){return new zt}initialize(){}}class It extends Bt{adjustLocation([e,t]){return e=le.clamp(e,0,this.movementSpaceSize[0]),t=le.clamp(t,0,this.movementSpaceSize[1]),this.locationChangeCallback?.(e/this.movementSpaceSize[0],1-t/this.movementSpaceSize[1]),[e,t]}}class Rt extends Ht{constructor(){super(),super.initialize({},new It)}static newObject(){return new Rt}initialize(){}}class Vt extends Fe{#He=()=>{this.blueprint.acknowledgeEditText(!0),this.element.selectOnFocus&&getSelection().selectAllChildren(this.element)};#ze=()=>{this.blueprint.acknowledgeEditText(!1),document.getSelection()?.removeAllRanges()};#Ie=e=>e.target.querySelectorAll("br").forEach((e=>e.remove()));#Re=e=>{"Enter"!=e.code||e.shiftKey||e.target.blur()};initialize(e){super.initialize(e),this.element.classList.add("ueb-pin-input-content"),this.element.setAttribute("role","textbox"),this.element.contentEditable="true"}setup(){super.setup(),this.element.addEventListener("focus",this.#He),this.element.addEventListener("focusout",this.#ze),this.element.singleLine&&this.element.addEventListener("input",this.#Ie),this.element.blurOnEnter&&this.element.addEventListener("keydown",this.#Re)}cleanup(){super.cleanup(),this.element.removeEventListener("focus",this.#He),this.element.removeEventListener("focusout",this.#ze),this.element.removeEventListener("input",this.#Ie),this.element.removeEventListener("keydown",this.#Re)}}class _t extends Ze{static properties={...super.properties,singleLine:{type:Boolean,attribute:"data-single-line",converter:le.booleanConverter,reflect:!0},selectOnFocus:{type:Boolean,attribute:"data-select-focus",converter:le.booleanConverter,reflect:!0},blurOnEnter:{type:Boolean,attribute:"data-blur-enter",converter:le.booleanConverter,reflect:!0}};constructor(){super(),this.singleLine=!1,this.selectOnFocus=!0,this.blurOnEnter=!0,super.initialize({},new Vt)}static newObject(){return new _t}initialize(){}}class Gt extends Qe{constructor(e,t,i={}){i.consumeEvent=!0,super(e,t,i)}}class Ft extends Lt{#Ve;#_e=e=>this.element.setDefaultValue(this.#Ve.checked);firstUpdated(e){super.firstUpdated(e),this.#Ve=this.element.querySelector(".ueb-pin-input")}setup(){super.setup(),this.#Ve?.addEventListener("change",this.#_e)}cleanup(){super.cleanup(),this.#Ve?.removeEventListener("change",this.#_e)}createInputObjects(){return[...super.createInputObjects(),new Gt(this.#Ve,this.blueprint)]}renderInput(){return B``}}class jt extends Lt{static singleLineInput=!1;static selectOnFocus=!0;#Ge;get inputContentElements(){return this.#Ge}static stringFromInputToUE(e){return e.replace(/(?=\n\s*)\n$/,"").replaceAll("\n","\\r\n")}static stringFromUEToInput(e){return e.replaceAll(/(?:\r|(?<=(?:^|[^\\])(?:\\\\)*)\\r)(?=\n)/g,"").replace(/(?<=\n\s*)$/,"\n")}#Fe=()=>this.setInputs(this.getInputs(),!0);firstUpdated(e){super.firstUpdated(e),this.#Ge=[...this.element.querySelectorAll("ueb-input")]}setup(){super.setup(),this.#Ge.forEach((e=>{e.addEventListener("focusout",this.#Fe)}))}cleanup(){super.cleanup(),this.#Ge.forEach((e=>{e.removeEventListener("focusout",this.#Fe)}))}createInputObjects(){return[...super.createInputObjects(),...this.#Ge.map((e=>new Gt(e,this.blueprint)))]}getInput(){return this.getInputs().reduce(((e,t)=>e+t),"")}getInputs(){return this.#Ge.map((e=>le.clearHTMLWhitespace(e.innerHTML)))}setInputs(e=[],t=!0){this.#Ge.forEach(this.constructor.singleLineInput?(t,i)=>t.innerText=e[i]:(t,i)=>t.innerText=e[i].replaceAll("\n","")),t&&this.setDefaultValue(e.map((e=>jt.stringFromInputToUE(e))),e),this.element.addNextUpdatedCallbacks((()=>this.element.nodeElement.acknowledgeReflow()))}setDefaultValue(e=[],t=e){this.element.setDefaultValue(e.join(""))}renderInput(){const e=this.constructor.singleLineInput,t=this.constructor.selectOnFocus;return B`
`}}class Ut extends jt{static singleLineInput=!0;setInputs(e=[],t=!1){e&&0!=e.length||(e=[this.getInput()]);let i=[];for(const t of e){let e=parseFloat(t);isNaN(e)&&(e=0,!1),i.push(e)}super.setInputs(e,!1),this.setDefaultValue(i,e)}setDefaultValue(e=[],t){this.element.setDefaultValue(e[0])}}class Xt extends Ut{setDefaultValue(e=[],t=e){const i=this.element.getDefaultValue(!0);if(!(i instanceof ze))throw new TypeError("Expected DefaultValue to be a ByteEntity");i.value=e[0],this.element.requestUpdate("DefaultValue",i)}renderInput(){return B`
`}}
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/const qt=1;class Kt{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,i){this._$Ct=e,this._$AM=t,this._$Ci=i}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}}
/**
* @license
* Copyright 2018 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/const Zt=(e=>(...t)=>({_$litDirective$:e,values:t}))(class extends Kt{constructor(e){var t;if(super(e),e.type!==qt||"style"!==e.name||(null===(t=e.strings)||void 0===t?void 0:t.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce(((t,i)=>{const n=e[i];return null==n?t:t+`${i=i.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${n};`}),"")}update(e,[t]){const{style:i}=e.element;if(void 0===this.vt){this.vt=new Set;for(const e in t)this.vt.add(e);return this.render(t)}this.vt.forEach((e=>{null==t[e]&&(this.vt.delete(e),e.includes("-")?i.removeProperty(e):i[e]="")}));for(const e in t){const n=t[e];null!=n&&(this.vt.add(e),e.includes("-")?i.setProperty(e,n):i[e]=n)}return O}});class Jt extends vt{toggleAdvancedDisplayHandler;getDraggableElement(){return this.element.querySelector(".ueb-window-top")}createDraggableObject(){return new mt(this.element,this.blueprint,{draggableElement:this.getDraggableElement(),ignoreScale:!0,ignoreTranslateCompensate:!1,movementSpace:this.blueprint,stepSize:1})}render(){return B`
`}renderWindowName(){return B`Color Picker`}}class ei extends Lt{#at;#lt=e=>{e.preventDefault(),this.blueprint.setFocused(!0),this.#at=it.getConstructor("ueb-window").newObject({type:new Qt,windowOptions:{getPinColor:()=>this.element.defaultValue,setPinColor:e=>this.element.setDefaultValue(e)}}),this.blueprint.append(this.#at);const t=()=>{this.element.setDefaultValue(this.#at.template.color)},i=()=>{this.#at.removeEventListener(te.windowApplyEventName,t),this.#at.removeEventListener(te.windowCloseEventName,i),this.#at=null};this.#at.addEventListener(te.windowApplyEventName,t),this.#at.addEventListener(te.windowCloseEventName,i)};renderInput(){return B``}}class ti extends jt{static singleLineInput=!0}class ii extends Ut{setDefaultValue(e=[],t=e){this.element.setDefaultValue(e[0])}renderInput(){return B`
`}}class ni extends Lt{renderIcon(){return dt.referencePin}}class si extends Ut{#ut(){return jt.stringFromUEToInput(le.minDecimals(this.element.getDefaultValue()?.R??0))}#ct(){return jt.stringFromUEToInput(le.minDecimals(this.element.getDefaultValue()?.P??0))}#ht(){return jt.stringFromUEToInput(le.minDecimals(this.element.getDefaultValue()?.Y??0))}setDefaultValue(e=[],t=e){const i=this.element.getDefaultValue(!0);if(!(i instanceof Pe))throw new TypeError("Expected DefaultValue to be a RotatorEntity");i.R=e[0],i.P=e[1],i.Y=e[2],this.element.requestUpdate("DefaultValue",i)}renderInput(){return B`
X
Y
Z
`}}class ri extends jt{}class oi extends Ut{#dt(){return jt.stringFromUEToInput(le.minDecimals(this.element.getDefaultValue()?.X??0))}#ht(){return jt.stringFromUEToInput(le.minDecimals(this.element.getDefaultValue()?.Y??0))}setDefaultValue(e,t){const i=this.element.getDefaultValue(!0);if(!(i instanceof ke))throw new TypeError("Expected DefaultValue to be a Vector2DEntity");i.X=e[0],i.Y=e[1],this.element.requestUpdate("DefaultValue",i)}renderInput(){return B`
X
Y
`}}class ai extends Ut{#dt(){return jt.stringFromUEToInput(le.minDecimals(this.element.getDefaultValue()?.X??0))}#ht(){return jt.stringFromUEToInput(le.minDecimals(this.element.getDefaultValue()?.Y??0))}#pt(){return jt.stringFromUEToInput(le.minDecimals(this.element.getDefaultValue()?.Z??0))}setDefaultValue(e,t){const i=this.element.getDefaultValue(!0);if(!(i instanceof Ne))throw new TypeError("Expected DefaultValue to be a VectorEntity");i.X=e[0],i.Y=e[1],i.Z=e[2],this.element.requestUpdate("DefaultValue",i)}renderInput(){return B`
X
Y
Z
`}}class li extends Ze{static#mt={"/Script/CoreUObject.LinearColor":ei,"/Script/CoreUObject.Rotator":si,"/Script/CoreUObject.Vector":ai,"/Script/CoreUObject.Vector2D":oi,bool:Ft,byte:Xt,int:Yt,int64:Yt,MUTABLE_REFERENCE:ni,name:ti,real:ii,string:ri};static properties={pinId:{type:de,converter:{fromAttribute:(e,t)=>e?Ve.grammar.Guid.parse(e).value:null,toAttribute:(e,t)=>e?.toString()},attribute:"data-id",reflect:!0},pinType:{type:String,attribute:"data-type",reflect:!0},advancedView:{type:String,attribute:"data-advanced-view",reflect:!0},color:{type:fe,converter:{fromAttribute:(e,t)=>e?Ve.grammar.LinearColorFromAnyColor.parse(e).value:null,toAttribute:(e,t)=>e?le.printLinearColor(e):null},attribute:"data-color",reflect:!0},defaultValue:{type:String,attribute:!1},isLinked:{type:Boolean,converter:le.booleanConverter,attribute:"data-linked",reflect:!0},pinDirection:{type:String,attribute:"data-direction",reflect:!0}};nodeElement;static getTypeTemplate(e){if(e.PinType.bIsReference&&!e.PinType.bIsConst)return li.#mt.MUTABLE_REFERENCE;if("exec"===e.getType())return Wt;let t;return e.isInput()&&(t=li.#mt[e.getType()]),t??Lt}static newObject(e=new Te,t=new(li.getTypeTemplate(e)),i){const n=new li;return n.initialize(e,t,i),n}initialize(e=new Te,t=new(li.getTypeTemplate(e)),i){super.initialize(e,t),this.pinId=this.entity.PinId,this.pinType=this.entity.getType(),this.advancedView=this.entity.bAdvancedView,this.defaultValue=this.entity.getDefaultValue(),this.color=li.properties.color.converter.fromAttribute(this.getColor().toString()),this.isLinked=!1,this.pinDirection=e.isInput()?"input":e.isOutput()?"output":"hidden",this.nodeElement=i,this.entity.subscribe("PinToolTip",(e=>{let t=e.match(/\s*(.+?(?=\n)|.+\S)\s*/);return t?le.formatStringName(t[1]):le.formatStringName(this.entity.PinName)}))}setup(){super.setup(),this.nodeElement=this.closest("ueb-node")}getPinId(){return this.entity.PinId}getPinName(){return this.entity.PinName}getPinDisplayName(){return this.entity.getDisplayName()}getColor(){return te.getPinColor(this)}isInput(){return this.entity.isInput()}isOutput(){return this.entity.isOutput()}getLinkLocation(){return this.template.getLinkLocation()}getNodeElement(){return this.nodeElement}getLinks(){return this.entity.LinkedTo??[]}getDefaultValue(e=!1){return this.defaultValue=this.entity.getDefaultValue(e)}setDefaultValue(e){this.entity.DefaultValue=e,this.defaultValue=e}sanitizeLinks(e=[]){this.entity.LinkedTo=this.getLinks().filter((t=>{let i=this.blueprint.getPin(t);if(i){if(e.length&&!e.includes(i.nodeElement))return!1;let t=this.blueprint.getLink(this,i,!0);t||(t=it.getConstructor("ueb-link").newObject(this,i),this.blueprint.addGraphElement(t))}return i})),this.isLinked=this.entity.isLinked()}linkTo(e){this.entity.linkTo(e.getNodeElement().getNodeName(),e.entity)&&(this.isLinked=this.entity.isLinked(),this.nodeElement?.template.linksChanged())}unlinkFrom(e){this.entity.unlinkFrom(e.getNodeElement().getNodeName(),e.entity)&&(this.isLinked=this.entity.isLinked(),this.nodeElement?.template.linksChanged())}redirectLink(e,t){const i=this.entity.LinkedTo.findIndex((t=>t.objectName.toString()==e.getNodeElement().getNodeName()&&t.pinGuid.valueOf()==e.entity.PinId.valueOf()));return i>=0&&(this.entity.LinkedTo[i]=t,!0)}}class ui{constructor(e=(e=>e),t=null){this.array=new Uint32Array(t),this.comparisonValueSupplier=e,this.length=0,this.currentPosition=0}get(e){return e>=0&&e=0&&this.currentPosition=0&&this.currentPosition0?this.get(this.currentPosition-1):null}getPrevValue(){return this.currentPosition>0?this.comparisonValueSupplier(this.get(this.currentPosition-1)):Number.MIN_SAFE_INTEGER}shiftLeft(e,t=1){this.array.set(this.array.subarray(e+t),e)}shiftRight(e,t=1){this.array.set(this.array.subarray(e,-t),e+t)}}class ci{constructor(e,t,i,n){this.initialPosition=e,this.finalPosition=e,this.metadata=new Array(t.length),this.primaryOrder=new ui((e=>this.metadata[e].primaryBoundary)),this.secondaryOrder=new ui((e=>this.metadata[e].secondaryBoundary)),this.selectFunc=n,this.rectangles=t,this.primaryOrder.reserve(this.rectangles.length),this.secondaryOrder.reserve(this.rectangles.length),t.forEach(((e,t)=>{let s={primaryBoundary:this.initialPosition[0],secondaryBoundary:this.initialPosition[1],rectangle:t,onSecondaryAxis:!1};this.metadata[t]=s,n(e,!1);const r=i(e);this.initialPosition[1]{if(this.metadata[i].onSecondaryAxis)this.selectFunc(this.rectangles[i],n);else if(n){this.secondaryOrder.insert(i,e[1]);const n=this.metadata[i].secondaryBoundary;Math.sign(e[1]-n)==t[1]&&Math.sign(n-this.initialPosition[1])==t[1]&&this.selectFunc(this.rectangles[i],!0)}else this.selectFunc(this.rectangles[i],!1),this.secondaryOrder.remove(i);this.computeBoundaries(),this.selectTo(e)};e[0]this.boundaries.primaryN.v&&e[0]this.boundaries.primaryP.v&&(++this.primaryOrder.currentPosition,i(this.boundaries.primaryP.i,this.initialPosition[0]{this.selectFunc(this.rectangles[t],i),this.computeBoundaries(),this.selectTo(e)};e[1]this.boundaries.secondaryN.v&&e[1]this.boundaries.secondaryP.v&&(++this.secondaryOrder.currentPosition,n(this.boundaries.secondaryP.i,this.initialPosition[1]pi.#Le[e],toAttribute:(e,t)=>Object.entries(pi.#Le).find((([t,i])=>e.constructor===i))?.[0]}}};static newObject(e={},t=e.type??new Jt){const i=new pi;return i.initialize(e,t),i}initialize(e={},t=e.type??new Jt){e.windowOptions??={},this.type=e.type,this.windowOptions=e.windowOptions,super.initialize(e,t)}setup(){super.setup(),this.locationX=this.blueprint.mousePosition[0],this.locationY=this.blueprint.mousePosition[1]}cleanup(){super.cleanup(),this.acknowledgeClose()}acknowledgeClose(){let e=new CustomEvent(te.windowCloseEventName);this.dispatchEvent(e)}}class mi extends Ve{constructor(e,t,i,n,s,r,o){e=e??(e=>`(${e})`),super(t,i,n,s,r,o),this.wrap=e}read(e){const t=Re.getGrammarForType(Ve.grammar,this.entityType).parse(e);if(!t.status)throw new Error(`Error when trying to parse the entity ${this.entityType.prototype.constructor.name}.`);return t.value}write(e,t,i=!1){return this.wrap(this.subWrite(e,[],t,i),t)}}class gi extends mi{#gt;constructor(e,t){super(void 0,t),this.#gt=e}write(e,t,i=!1){return this.#gt(t,i)}}class bi extends mi{constructor(e){super(void 0,e)}write(e,t,i){return i||t.constructor!==String?le.escapeString(t.toString()):`"${le.escapeString(t.toString())}"`}}!function(){const e=e=>`(${e})`;re.registerSerializer(null,new gi(((e,t)=>"()"),null)),re.registerSerializer(Array,new gi(((e,t)=>`(${e.map((e=>re.getSerializer(le.getType(e)).serialize(e,t)+",")).join("")})`),Array)),re.registerSerializer(Boolean,new gi(((e,t)=>e?t?"true":"True":t?"false":"False"),Boolean)),re.registerSerializer(he,new mi(e,he)),re.registerSerializer(de,new bi(de)),re.registerSerializer(pe,new bi(pe)),re.registerSerializer(me,new bi(me)),re.registerSerializer(ge,new mi((e=>`${ge.lookbehind}(${e})`),ge,"",", ",!1,"",(e=>""))),re.registerSerializer(be,new mi(e,be)),re.registerSerializer(fe,new mi(e,fe)),re.registerSerializer(ye,new mi((e=>`${ye.lookbehind}(${e})`),ye,"",", ",!1,"",(e=>""))),re.registerSerializer(we,new mi(e,we)),re.registerSerializer(Number,new gi((e=>e.toString()),Number)),re.registerSerializer($e,new _e),re.registerSerializer(ce,new gi((e=>(e.type??"")+(e.path?e.type?`'"${e.path}"'`:`"${e.path}"`:"")),ce)),re.registerSerializer(Ee,new bi(Ee)),re.registerSerializer(Te,new mi((e=>`${Te.lookbehind} (${e})`),Te,"",",",!0)),re.registerSerializer(Se,new mi((e=>e),Se,""," ",!1,"",(e=>""))),re.registerSerializer(ve,new bi(ve)),re.registerSerializer(Pe,new mi(e,Pe)),re.registerSerializer(String,new gi(((e,t)=>t?le.escapeString(e):`"${le.escapeString(e)}"`),String)),re.registerSerializer(Ce,new gi(((e,t)=>`${e.P}, ${e.Y}, ${e.R}`),Ce)),re.registerSerializer(xe,new gi(((e,t)=>`${e.X}, ${e.Y}`),xe)),re.registerSerializer(Le,new gi(((e,t)=>`${e.X}, ${e.Y}, ${e.Z}`),Le)),re.registerSerializer(Ae,new bi(Ae)),re.registerSerializer(He,new mi(((e,t)=>`${t.lookbehind??""}(${e})`),He)),re.registerSerializer(Me,new mi(e,Me)),re.registerSerializer(ke,new mi(e,ke)),re.registerSerializer(Ne,new mi(e,Ne))}(),customElements.define("ueb-color-handler",zt),it.registerElement("ueb-color-handler",zt),customElements.define("ueb-input",_t),it.registerElement("ueb-input",_t),customElements.define("ueb-link",pt),it.registerElement("ueb-link",pt),customElements.define("ueb-node",$t),it.registerElement("ueb-node",$t),customElements.define("ueb-pin",li),it.registerElement("ueb-pin",li),customElements.define("ueb-selector",di),it.registerElement("ueb-selector",di),customElements.define("ueb-ui-slider",Rt),it.registerElement("ueb-ui-slider",Rt),customElements.define("ueb-window",pi),it.registerElement("ueb-window",pi);export{Dt as Blueprint,te as Configuration,pt as LinkElement,$t as NodeElement,le as Utility};