Files
ueblueprint/dist/ueblueprint.min.js
2022-12-29 13:23:11 +01:00

34 lines
161 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
const e=window,t=e.ShadowRoot&&(void 0===e.ShadyCSS||e.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,i=Symbol(),n=new WeakMap;class s{constructor(e,t,n){if(this._$cssResult$=!0,n!==i)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const i=this.t;if(t&&void 0===e){const t=void 0!==i&&1===i.length;t&&(e=n.get(i)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),t&&n.set(i,e))}return e}toString(){return this.cssText}}const r=(e,...t)=>{const n=1===e.length?e[0]:t.reduce(((t,i,n)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if("number"==typeof e)return e;throw Error("Value passed to 'css' function must be a 'css' function result: "+e+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+e[n+1]),e[0]);return new s(n,e,i)},o=t?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const i of e.cssRules)t+=i.cssText;return(e=>new s("string"==typeof e?e:e+"",void 0,i))(t)})(e):e
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/;var a;const l=window,u=l.trustedTypes,c=u?u.emptyScript:"",h=l.reactiveElementPolyfillSupport,d={toAttribute(e,t){switch(t){case Boolean:e=e?c:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let i=e;switch(t){case Boolean:i=null!==e;break;case Number:i=null===e?null:Number(e);break;case Object:case Array:try{i=JSON.parse(e)}catch(e){i=null}}return i}},p=(e,t)=>t!==e&&(t==t||e==e),m={attribute:!0,type:String,converter:d,reflect:!1,hasChanged:p};class g extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(e){var t;this.finalize(),(null!==(t=this.h)&&void 0!==t?t:this.h=[]).push(e)}static get observedAttributes(){this.finalize();const e=[];return this.elementProperties.forEach(((t,i)=>{const n=this._$Ep(i,t);void 0!==n&&(this._$Ev.set(n,i),e.push(n))})),e}static createProperty(e,t=m){if(t.state&&(t.attribute=!1),this.finalize(),this.elementProperties.set(e,t),!t.noAccessor&&!this.prototype.hasOwnProperty(e)){const i="symbol"==typeof e?Symbol():"__"+e,n=this.getPropertyDescriptor(e,i,t);void 0!==n&&Object.defineProperty(this.prototype,e,n)}}static getPropertyDescriptor(e,t,i){return{get(){return this[t]},set(n){const s=this[e];this[t]=n,this.requestUpdate(e,s,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)||m}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const e=Object.getPrototypeOf(this);if(e.finalize(),void 0!==e.h&&(this.h=[...e.h]),this.elementProperties=new Map(e.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const e=this.properties,t=[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)];for(const i of t)this.createProperty(i,e[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const i=new Set(e.flat(1/0).reverse());for(const e of i)t.unshift(o(e))}else void 0!==e&&t.push(o(e));return t}static _$Ep(e,t){const i=t.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof e?e.toLowerCase():void 0}u(){var e;this._$E_=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(e=this.constructor.h)||void 0===e||e.forEach((e=>e(this)))}addController(e){var t,i;(null!==(t=this._$ES)&&void 0!==t?t:this._$ES=[]).push(e),void 0!==this.renderRoot&&this.isConnected&&(null===(i=e.hostConnected)||void 0===i||i.call(e))}removeController(e){var t;null===(t=this._$ES)||void 0===t||t.splice(this._$ES.indexOf(e)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((e,t)=>{this.hasOwnProperty(t)&&(this._$Ei.set(t,this[t]),delete this[t])}))}createRenderRoot(){var i;const n=null!==(i=this.shadowRoot)&&void 0!==i?i:this.attachShadow(this.constructor.shadowRootOptions);return((i,n)=>{t?i.adoptedStyleSheets=n.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet)):n.forEach((t=>{const n=document.createElement("style"),s=e.litNonce;void 0!==s&&n.setAttribute("nonce",s),n.textContent=t.cssText,i.appendChild(n)}))})(n,this.constructor.elementStyles),n}connectedCallback(){var e;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostConnected)||void 0===t?void 0:t.call(e)}))}enableUpdating(e){}disconnectedCallback(){var e;null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostDisconnected)||void 0===t?void 0:t.call(e)}))}attributeChangedCallback(e,t,i){this._$AK(e,i)}_$EO(e,t,i=m){var n;const s=this.constructor._$Ep(e,i);if(void 0!==s&&!0===i.reflect){const r=(void 0!==(null===(n=i.converter)||void 0===n?void 0:n.toAttribute)?i.converter:d).toAttribute(t,i.type);this._$El=e,null==r?this.removeAttribute(s):this.setAttribute(s,r),this._$El=null}}_$AK(e,t){var i;const n=this.constructor,s=n._$Ev.get(e);if(void 0!==s&&this._$El!==s){const e=n.getPropertyOptions(s),r="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==(null===(i=e.converter)||void 0===i?void 0:i.fromAttribute)?e.converter:d;this._$El=s,this[s]=r.fromAttribute(t,e.type),this._$El=null}}requestUpdate(e,t,i){let n=!0;void 0!==e&&(((i=i||this.constructor.getPropertyOptions(e)).hasChanged||p)(this[e],t)?(this._$AL.has(e)||this._$AL.set(e,t),!0===i.reflect&&this._$El!==e&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(e,i))):n=!1),!this.isUpdatePending&&n&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var e;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((e,t)=>this[t]=e)),this._$Ei=void 0);let t=!1;const i=this._$AL;try{t=this.shouldUpdate(i),t?(this.willUpdate(i),null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostUpdate)||void 0===t?void 0:t.call(e)})),this.update(i)):this._$Ek()}catch(e){throw t=!1,this._$Ek(),e}t&&this._$AE(i)}willUpdate(e){}_$AE(e){var t;null===(t=this._$ES)||void 0===t||t.forEach((e=>{var t;return null===(t=e.hostUpdated)||void 0===t?void 0:t.call(e)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(e){return!0}update(e){void 0!==this._$EC&&(this._$EC.forEach(((e,t)=>this._$EO(t,this[t],e))),this._$EC=void 0),this._$Ek()}updated(e){}firstUpdated(e){}}
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
var b;g.finalized=!0,g.elementProperties=new Map,g.elementStyles=[],g.shadowRootOptions={mode:"open"},null==h||h({ReactiveElement:g}),(null!==(a=l.reactiveElementVersions)&&void 0!==a?a:l.reactiveElementVersions=[]).push("1.4.2");const v=window,f=v.trustedTypes,y=f?f.createPolicy("lit-html",{createHTML:e=>e}):void 0,w=`lit$${(Math.random()+"").slice(9)}$`,E="?"+w,S=`<${E}>`,P=document,C=(e="")=>P.createComment(e),k=e=>null===e||"object"!=typeof e&&"function"!=typeof e,x=Array.isArray,N=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,L=/-->/g,T=/>/g,A=RegExp(">|[ \t\n\f\r](?:([^\\s\"'>=/]+)([ \t\n\f\r]*=[ \t\n\f\r]*(?:[^ \t\n\f\r\"'`<>=]|(\"|')|))|$)","g"),M=/'/g,$=/"/g,D=/^(?:script|style|textarea|title)$/i,B=(e=>(t,...i)=>({_$litType$:e,strings:t,values:i}))(1),O=Symbol.for("lit-noChange"),H=Symbol.for("lit-nothing"),z=new WeakMap,I=P.createTreeWalker(P,129,null,!1),R=(e,t)=>{const i=e.length-1,n=[];let s,r=2===t?"<svg>":"",o=N;for(let t=0;t<i;t++){const i=e[t];let a,l,u=-1,c=0;for(;c<i.length&&(o.lastIndex=c,l=o.exec(i),null!==l);)c=o.lastIndex,o===N?"!--"===l[1]?o=L:void 0!==l[1]?o=T:void 0!==l[2]?(D.test(l[2])&&(s=RegExp("</"+l[2],"g")),o=A):void 0!==l[3]&&(o=A):o===A?">"===l[0]?(o=null!=s?s:N,u=-1):void 0===l[1]?u=-2:(u=o.lastIndex-l[2].length,a=l[1],o=void 0===l[3]?A:'"'===l[3]?$:M):o===$||o===M?o=A:o===L||o===T?o=N:(o=A,s=void 0);const h=o===A&&e[t+1].startsWith("/>")?" ":"";r+=o===N?i+S:u>=0?(n.push(a),i.slice(0,u)+"$lit$"+i.slice(u)+w+h):i+w+(-2===u?(n.push(void 0),t):h)}const a=r+(e[i]||"<?>")+(2===t?"</svg>":"");if(!Array.isArray(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==y?y.createHTML(a):a,n]};class V{constructor({strings:e,_$litType$:t},i){let n;this.parts=[];let s=0,r=0;const o=e.length-1,a=this.parts,[l,u]=R(e,t);if(this.el=V.createElement(l,i),I.currentNode=this.el.content,2===t){const e=this.el.content,t=e.firstChild;t.remove(),e.append(...t.childNodes)}for(;null!==(n=I.nextNode())&&a.length<o;){if(1===n.nodeType){if(n.hasAttributes()){const e=[];for(const t of n.getAttributeNames())if(t.endsWith("$lit$")||t.startsWith(w)){const i=u[r++];if(e.push(t),void 0!==i){const e=n.getAttribute(i.toLowerCase()+"$lit$").split(w),t=/([.?@])?(.*)/.exec(i);a.push({type:1,index:s,name:t[2],strings:e,ctor:"."===t[1]?U:"?"===t[1]?W:"@"===t[1]?Y:j})}else a.push({type:6,index:s})}for(const t of e)n.removeAttribute(t)}if(D.test(n.tagName)){const e=n.textContent.split(w),t=e.length-1;if(t>0){n.textContent=f?f.emptyScript:"";for(let i=0;i<t;i++)n.append(e[i],C()),I.nextNode(),a.push({type:2,index:++s});n.append(e[t],C())}}}else if(8===n.nodeType)if(n.data===E)a.push({type:2,index:s});else{let e=-1;for(;-1!==(e=n.data.indexOf(w,e+1));)a.push({type:7,index:s}),e+=w.length-1}s++}}static createElement(e,t){const i=P.createElement("template");return i.innerHTML=e,i}}function _(e,t,i=e,n){var s,r,o,a;if(t===O)return t;let l=void 0!==n?null===(s=i._$Co)||void 0===s?void 0:s[n]:i._$Cl;const u=k(t)?void 0:t._$litDirective$;return(null==l?void 0:l.constructor)!==u&&(null===(r=null==l?void 0:l._$AO)||void 0===r||r.call(l,!1),void 0===u?l=void 0:(l=new u(e),l._$AT(e,i,n)),void 0!==n?(null!==(o=(a=i)._$Co)&&void 0!==o?o:a._$Co=[])[n]=l:i._$Cl=l),void 0!==l&&(t=_(e,l._$AS(e,t.values),l,n)),t}class G{constructor(e,t){this.u=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}v(e){var t;const{el:{content:i},parts:n}=this._$AD,s=(null!==(t=null==e?void 0:e.creationScope)&&void 0!==t?t:P).importNode(i,!0);I.currentNode=s;let r=I.nextNode(),o=0,a=0,l=n[0];for(;void 0!==l;){if(o===l.index){let t;2===l.type?t=new F(r,r.nextSibling,this,e):1===l.type?t=new l.ctor(r,l.name,l.strings,this,e):6===l.type&&(t=new q(r,this,e)),this.u.push(t),l=n[++a]}o!==(null==l?void 0:l.index)&&(r=I.nextNode(),o++)}return s}p(e){let t=0;for(const i of this.u)void 0!==i&&(void 0!==i.strings?(i._$AI(e,i,t),t+=i.strings.length-2):i._$AI(e[t])),t++}}class F{constructor(e,t,i,n){var s;this.type=2,this._$AH=H,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=i,this.options=n,this._$Cm=null===(s=null==n?void 0:n.isConnected)||void 0===s||s}get _$AU(){var e,t;return null!==(t=null===(e=this._$AM)||void 0===e?void 0:e._$AU)&&void 0!==t?t:this._$Cm}get parentNode(){let e=this._$AA.parentNode;const t=this._$AM;return void 0!==t&&11===e.nodeType&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=_(this,e,t),k(e)?e===H||null==e||""===e?(this._$AH!==H&&this._$AR(),this._$AH=H):e!==this._$AH&&e!==O&&this.g(e):void 0!==e._$litType$?this.$(e):void 0!==e.nodeType?this.T(e):(e=>x(e)||"function"==typeof(null==e?void 0:e[Symbol.iterator]))(e)?this.k(e):this.g(e)}O(e,t=this._$AB){return this._$AA.parentNode.insertBefore(e,t)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}g(e){this._$AH!==H&&k(this._$AH)?this._$AA.nextSibling.data=e:this.T(P.createTextNode(e)),this._$AH=e}$(e){var t;const{values:i,_$litType$:n}=e,s="number"==typeof n?this._$AC(e):(void 0===n.el&&(n.el=V.createElement(n.h,this.options)),n);if((null===(t=this._$AH)||void 0===t?void 0:t._$AD)===s)this._$AH.p(i);else{const e=new G(s,this),t=e.v(this.options);e.p(i),this.T(t),this._$AH=e}}_$AC(e){let t=z.get(e.strings);return void 0===t&&z.set(e.strings,t=new V(e)),t}k(e){x(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let i,n=0;for(const s of e)n===t.length?t.push(i=new F(this.O(C()),this.O(C()),this,this.options)):i=t[n],i._$AI(s),n++;n<t.length&&(this._$AR(i&&i._$AB.nextSibling,n),t.length=n)}_$AR(e=this._$AA.nextSibling,t){var i;for(null===(i=this._$AP)||void 0===i||i.call(this,!1,!0,t);e&&e!==this._$AB;){const t=e.nextSibling;e.remove(),e=t}}setConnected(e){var t;void 0===this._$AM&&(this._$Cm=e,null===(t=this._$AP)||void 0===t||t.call(this,e))}}class j{constructor(e,t,i,n,s){this.type=1,this._$AH=H,this._$AN=void 0,this.element=e,this.name=t,this._$AM=n,this.options=s,i.length>2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=H}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,t=this,i,n){const s=this.strings;let r=!1;if(void 0===s)e=_(this,e,t,0),r=!k(e)||e!==this._$AH&&e!==O,r&&(this._$AH=e);else{const n=e;let o,a;for(e=s[0],o=0;o<s.length-1;o++)a=_(this,n[i+o],t,o),a===O&&(a=this._$AH[o]),r||(r=!k(a)||a!==this._$AH[o]),a===H?e=H:e!==H&&(e+=(null!=a?a:"")+s[o+1]),this._$AH[o]=a}r&&!n&&this.j(e)}j(e){e===H?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=e?e:"")}}class U extends j{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===H?void 0:e}}const X=f?f.emptyScript:"";class W extends j{constructor(){super(...arguments),this.type=4}j(e){e&&e!==H?this.element.setAttribute(this.name,X):this.element.removeAttribute(this.name)}}class Y extends j{constructor(e,t,i,n,s){super(e,t,i,n,s),this.type=5}_$AI(e,t=this){var i;if((e=null!==(i=_(this,e,t,0))&&void 0!==i?i:H)===O)return;const n=this._$AH,s=e===H&&n!==H||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,r=e!==H&&(n===H||s);s&&this.element.removeEventListener(this.name,this,n),r&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var t,i;"function"==typeof this._$AH?this._$AH.call(null!==(i=null===(t=this.options)||void 0===t?void 0:t.host)&&void 0!==i?i:this.element,e):this._$AH.handleEvent(e)}}class q{constructor(e,t,i){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=i}get _$AU(){return this._$AM._$AU}_$AI(e){_(this,e)}}const K=v.litHtmlPolyfillSupport;null==K||K(V,F),(null!==(b=v.litHtmlVersions)&&void 0!==b?b:v.litHtmlVersions=[]).push("2.4.0");
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
var Z,J;class Q extends g{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var e,t;const i=super.createRenderRoot();return null!==(e=(t=this.renderOptions).renderBefore)&&void 0!==e||(t.renderBefore=i.firstChild),i}update(e){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=((e,t,i)=>{var n,s;const r=null!==(n=null==i?void 0:i.renderBefore)&&void 0!==n?n:t;let o=r._$litPart$;if(void 0===o){const e=null!==(s=null==i?void 0:i.renderBefore)&&void 0!==s?s:null;r._$litPart$=o=new F(t.insertBefore(C(),e),e,void 0,null!=i?i:{})}return o._$AI(e),o})(t,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),null===(e=this._$Do)||void 0===e||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),null===(e=this._$Do)||void 0===e||e.setConnected(!1)}render(){return O}}Q.finalized=!0,Q._$litElement$=!0,null===(Z=globalThis.litElementHydrateSupport)||void 0===Z||Z.call(globalThis,{LitElement:Q});const ee=globalThis.litElementPolyfillSupport;null==ee||ee({LitElement:Q}),(null!==(J=globalThis.litElementVersions)&&void 0!==J?J:globalThis.litElementVersions=[]).push("3.2.2");class te{static#e={"/Script/CoreUObject.Rotator":r``,"/Script/CoreUObject.Transform":r``,"/Script/CoreUObject.Vector":r``,"/Script/Engine.Actor":r``,"/Script/Engine.GameStateBase":r``,"/Script/Engine.Pawn":r``,"/Script/Engine.PlayerState":r``,bool:r``,byte:r``,class:r``,default:r``,exec:r``,int:r``,int64:r``,name:r``,real:r``,string:r``,wildcard:r``};static alphaPattern="repeating-conic-gradient(#7c8184 0% 25%, #c2c3c4 0% 50%) 50% / 10px 10px";static colorDragEventName="ueb-color-drag";static colorPickEventName="ueb-color-pick";static colorWindowEventName="ueb-color-window";static defaultCommentHeight=96;static defaultCommentWidth=400;static deleteNodesKeyboardKey="Delete";static distanceThreshold=5;static dragEventName="ueb-drag";static dragGeneralEventName="ueb-drag-general";static editTextEventName={begin:"ueb-edit-text-begin",end:"ueb-edit-text-end"};static enableZoomIn=["LeftControl","RightControl"];static expandGridSize=400;static focusEventName={begin:"blueprint-focus",end:"blueprint-unfocus"};static fontSize=r``;static getPinColor(e){if(!e)return te.#e.default;if(te.#e[e.pinType])return te.#e[e.pinType];if("struct"==e.entity.PinType.PinCategory||"object"==e.entity.PinType.PinCategory)switch(e.entity.PinType.PinSubCategoryObject.type){case"ScriptStruct":case"/Script/CoreUObject.ScriptStruct":return r``;default:if(e.entity.PinType.PinSubCategoryObject.getName().endsWith("Actor")||"Target"==e.getPinDisplayName())return te.#e["/Script/Engine.Actor"]}return te.#e.default}static gridAxisLineColor=r``;static gridExpandThreshold=.25;static gridLineColor=r``;static gridLineWidth=1;static gridSet=8;static gridSetLineColor=r``;static gridShrinkThreshold=4;static gridSize=16;static hexColorRegex=/^\s*#(?<r>[0-9a-fA-F]{2})(?<g>[0-9a-fA-F]{2})(?<b>[0-9a-fA-F]{2})([0-9a-fA-F]{2})?|#(?<rs>[0-9a-fA-F])(?<gs>[0-9a-fA-F])(?<bs>[0-9a-fA-F])\s*$/;static keysSeparator="+";static linkCurveHeight=15;static linkCurveWidth=80;static linkMinWidth=100;static linkRightSVGPath=(e,t,i)=>{let n=100-e;return`M ${e} 0 C ${t} 0, ${i} 0, 50 50 S ${n-t+e} 100, ${n} 100`};static maxZoom=7;static minZoom=-12;static mouseWheelFactor=.2;static nodeDeleteEventName="ueb-node-delete";static nodeDragGeneralEventName="ueb-node-drag-general";static nodeDragEventName="ueb-node-drag";static nodeName=(e,t)=>`${e}_${t}`;static nodeRadius=8;static nodeReflowEventName="ueb-node-reflow";static nodeType={callFunction:"/Script/BlueprintGraph.K2Node_CallFunction",comment:"/Script/UnrealEd.EdGraphNode_Comment",commutativeAssociativeBinaryOperator:"/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator",doN:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:Do N",dynamicCast:"/Script/BlueprintGraph.K2Node_DynamicCast",executionSequence:"/Script/BlueprintGraph.K2Node_ExecutionSequence",forEachElementInEnum:"/Script/BlueprintGraph.K2Node_ForEachElementInEnum",forEachLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForEachLoop",forEachLoopWithBreak:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForEachLoopWithBreak",forLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoop",forLoopWithBreak:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoopWithBreak",ifThenElse:"/Script/BlueprintGraph.K2Node_IfThenElse",knot:"/Script/BlueprintGraph.K2Node_Knot",macro:"/Script/BlueprintGraph.K2Node_MacroInstance",makeArray:"/Script/BlueprintGraph.K2Node_MakeArray",makeMap:"/Script/BlueprintGraph.K2Node_MakeMap",pawn:"/Script/Engine.Pawn",reverseForEachLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ReverseForEachLoop",select:"/Script/BlueprintGraph.K2Node_Select",variableGet:"/Script/BlueprintGraph.K2Node_VariableGet",variableSet:"/Script/BlueprintGraph.K2Node_VariableSet",whileLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:WhileLoop"};static selectAllKeyboardKey="(bCtrl=True,Key=A)";static smoothScrollTime=1e3;static trackingMouseEventName={begin:"ueb-tracking-mouse-begin",end:"ueb-tracking-mouse-end"};static windowApplyEventName="ueb-window-apply";static windowCancelEventName="ueb-window-cancel";static windowCloseEventName="ueb-window-close";static ModifierKeys=["Ctrl","Shift","Alt","Meta"];static Keys={Backspace:"Backspace",Tab:"Tab",LeftControl:"ControlLeft",RightControl:"ControlRight",LeftShift:"ShiftLeft",RightShift:"ShiftRight",LeftAlt:"AltLeft",RightAlt:"AltRight",Enter:"Enter",Pause:"Pause",CapsLock:"CapsLock",Escape:"Escape",Space:"Space",PageUp:"PageUp",PageDown:"PageDown",End:"End",Home:"Home",ArrowLeft:"Left",ArrowUp:"Up",ArrowRight:"Right",ArrowDown:"Down",PrintScreen:"PrintScreen",Insert:"Insert",Delete:"Delete",Zero:"Digit0",One:"Digit1",Two:"Digit2",Three:"Digit3",Four:"Digit4",Five:"Digit5",Six:"Digit6",Seven:"Digit7",Eight:"Digit8",Nine:"Digit9",A:"KeyA",B:"KeyB",C:"KeyC",D:"KeyD",E:"KeyE",F:"KeyF",G:"KeyG",H:"KeyH",I:"KeyI",K:"KeyK",L:"KeyL",M:"KeyM",N:"KeyN",O:"KeyO",P:"KeyP",Q:"KeyQ",R:"KeyR",S:"KeyS",T:"KeyT",U:"KeyU",V:"KeyV",W:"KeyW",X:"KeyX",Y:"KeyY",Z:"KeyZ",NumPadZero:"Numpad0",NumPadOne:"Numpad1",NumPadTwo:"Numpad2",NumPadThree:"Numpad3",NumPadFour:"Numpad4",NumPadFive:"Numpad5",NumPadSix:"Numpad6",NumPadSeven:"Numpad7",NumPadEight:"Numpad8",NumPadNine:"Numpad9",Multiply:"NumpadMultiply",Add:"NumpadAdd",Subtract:"NumpadSubtract",Decimal:"NumpadDecimal",Divide:"NumpadDivide",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12",NumLock:"NumLock",ScrollLock:"ScrollLock"}}class ie{#t;get target(){return this.#t}#i;get blueprint(){return this.#i}options;listenHandler=()=>this.listenEvents();unlistenHandler=()=>this.unlistenEvents();constructor(e,t,i={}){i.consumeEvent??=!1,i.listenOnFocus??=!1,i.unlistenOnTextEdit??=!1,this.#t=e,this.#i=t,this.options=i}setup(){this.options.listenOnFocus&&(this.blueprint.addEventListener(te.focusEventName.begin,this.listenHandler),this.blueprint.addEventListener(te.focusEventName.end,this.unlistenHandler)),this.options.unlistenOnTextEdit&&(this.blueprint.addEventListener(te.editTextEventName.begin,this.unlistenHandler),this.blueprint.addEventListener(te.editTextEventName.end,this.listenHandler)),this.blueprint.focused&&this.listenEvents()}cleanup(){this.unlistenEvents(),this.blueprint.removeEventListener(te.focusEventName.begin,this.listenHandler),this.blueprint.removeEventListener(te.focusEventName.end,this.unlistenHandler),this.blueprint.removeEventListener(te.editTextEventName.begin,this.unlistenHandler),this.blueprint.removeEventListener(te.editTextEventName.end,this.listenHandler)}listenEvents(){}unlistenEvents(){}}class ne{#n;constructor(e){this.#n=e}calculate(e){return this.#n(e)}}class se{#s=new Map;subscribe(e,t){let i=this.#s;if(i.has(e)){let n=i.get(e);if(n.includes(t))return!1;n.push(t)}else{let n=!1,s=Object.getOwnPropertyDescriptor(this,e);if(!s&&(n=!0,s=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this),e)??{},!s))return!1;i.set(e,[t]);const r="value"in s,o="set"in s;if(!r&&!o)throw new Error(`Property ${e} is not a value or a setter`);const a=Symbol.for(e+"Storage"),l=Symbol.for(e+"ValInfo");Object.defineProperties(n?Object.getPrototypeOf(this):this,{[a]:{configurable:!0,enumerable:!1,...r?{value:this[e],writable:!0}:{get:s.get,set:s.set}},[l]:{configurable:!0,enumerable:!1,value:[n,r]},[e]:{configurable:!0,...r&&{get(){return this[a]}},set(t){this[a]=t,i.get(e).forEach((t=>{t(this[e])}))}}})}return!0}unsubscribe(e,t){let i=this.#s.get(e);if(!i?.includes(t))return!1;if(i.splice(i.indexOf(t),1),0==i.length){const t=Symbol.for(e+"Storage"),i=Symbol.for(e+"ValInfo"),n=this[i][0];this[i][1],Object.defineProperty(n?Object.getPrototypeOf(this):this,e,Object.getOwnPropertyDescriptor(n?Object.getPrototypeOf(this):this,t)),delete this[i],delete this[t]}return!0}}class re{static#r=new Map;static registerSerializer(e,t){re.#r.set(e,t)}static getSerializer(e){return re.#r.get(e)}}class oe{#o;get types(){return this.#o}constructor(...e){this.#o=e}getFirstType(){return this.#o[0]}}class ae{#a;get type(){return this.#a}set type(e){this.#a=e}#l=!0;get showDefault(){return this.#l}set showDefault(e){this.#l=e}#u;get value(){return this.#u}set value(e){this.#u=e}#c;get serialized(){return this.#c}set serialized(e){this.#c=e}#h;get ignored(){return this.#h}set ignored(e){this.#h=e}static isValueOfType(e,t){return null!=e&&(e instanceof t||e.constructor===t)}static sanitize(e,t){if(void 0===t&&(t=e?.constructor),t instanceof Array){let i=t.find((t=>ae.isValueOfType(e,t)));i||(i=t[0]),t=i}return t&&!ae.isValueOfType(e,t)&&(e=new t(e)),(e instanceof Boolean||e instanceof Number||e instanceof String)&&(e=e.valueOf()),e}constructor(e,t=!0,i,n=!1,s=!1){void 0===i&&(i=e instanceof Array?[]:()=>ae.sanitize(new e)),this.#a=e,this.#l=t,this.#u=i,this.#c=n,this.#h=s}}class le{static emptyObj={};static booleanConverter={fromAttribute:(e,t)=>{},toAttribute:(e,t)=>!0===e?"true":!1===e?"false":""};static sigmoid(e,t=1.7){return 1/(1+e/(1-e)**-t)}static clamp(e,t,i){return Math.min(Math.max(e,t),i)}static getScale(e){const t=e.blueprint?e.blueprint.getScale():getComputedStyle(e).getPropertyValue("--ueb-scale");return""!=t?parseFloat(t):1}static minDecimals(e,t=1){const i=e*10**t;return Math.abs(i%1)>Number.EPSILON?e.toString():e.toFixed(t)}static roundDecimals(e,t=1){const i=10**t;return Math.round(e*i)/i}static approximatelyEqual(e,t){return!(Math.abs(e-t)>Number.EPSILON)}static convertLocation(e,t,i=!1){const n=i?1:1/le.getScale(t),s=t.getBoundingClientRect();return[Math.round((e[0]-s.x)*n),Math.round((e[1]-s.y)*n)]}static isSerialized(e,t,i=le.objectGet(e.constructor.attributes,t)){return i instanceof ne?le.isSerialized(e,t,i.calculate(e)):i instanceof ae&&(!!i.serialized||le.isSerialized(e,t,i.type))}static objectGet(e,t,i){if(void 0!==e){if(!(t instanceof Array))throw new TypeError("Expected keys to be an array.");return 0!=t.length&&t[0]in e&&void 0!==e[t[0]]?1==t.length?e[t[0]]:le.objectGet(e[t[0]],t.slice(1),i):i}}static objectSet(e,t,i,n=!1,s=Object){if(!(t instanceof Array))throw new TypeError("Expected keys to be an array.");if(1==t.length){if(n||t[0]in e||void 0===e[t[0]])return e[t[0]]=i,!0}else if(t.length>0)return!n||e[t[0]]instanceof Object||(e[t[0]]=new s),le.objectSet(e[t[0]],t.slice(1),i,n,s);return!1}static equals(e,t){return(e=ae.sanitize(e))===(t=ae.sanitize(t))||(e instanceof Array&&t instanceof Array?e.length==t.length&&!e.find(((e,i)=>!le.equals(e,t[i]))):void 0)}static getType(e){return null===e?null:e instanceof ae?le.getType(e.type):e instanceof oe?e.types:e instanceof Function?e:e?.constructor}static snapToGrid(e,t){return 1===t?e:[t*Math.round(e[0]/t),t*Math.round(e[1]/t)]}static mergeArrays(e=[],t=[]){let i=[];e:for(let n=0;n<t.length;++n)for(let s=0;s<e.length;++s)if(e[s]==t[n]){i.push(...e.splice(0,s),...t.splice(0,n),...e.splice(0,1)),t.shift();break e}return[...new Set(i.concat(...e,...t))]}static escapeString(e,t=!1){return e.replaceAll('"','\\"').replaceAll("\n","\\n")}static unescapeString(e,t=!1){return e.replaceAll('\\"','"').replaceAll("\\n","\n")}static clearHTMLWhitespace(e){return e.replaceAll("&nbsp;"," ").replaceAll("<br>","\n").replaceAll(/(\<!--.*?\-->)/g,"")}static capitalFirstLetter(e){return 0===e.length?e:e.charAt(0).toLocaleUpperCase()+e.slice(1).toLocaleLowerCase()}static formatStringName(e){return e.trim().replace(/^b/,"").replaceAll(/^K2(?:Node|node)?_|(?<=[a-z])(?=[A-Z])|_|\s+/g," ").split(" ").map((e=>le.capitalFirstLetter(e))).join(" ")}static getIdFromReference(e){return e.replace(/(?:.+\.)?([^\.]+)$/,"$1").replaceAll(/(?<=[a-z\d])(?=[A-Z])|(?<=[a-zA-Z])(?=\d)|(?<=[A-Z]{2})(?=[A-Z][a-z])/g,"-").toLowerCase()}static printLinearColor(e){return`${Math.round(255*e.R.valueOf())}, ${Math.round(255*e.G.valueOf())}, ${Math.round(255*e.B.valueOf())}`}static getPolarCoordinates([e,t],i=!1){let n=Math.atan2(t,e);return i&&n<0&&(n=2*Math.PI+n),[Math.sqrt(e*e+t*t),n]}static getCartesianCoordinates([e,t]){return[e*Math.cos(t),e*Math.sin(t)]}static range(e,t,i=1){return Array.from({length:Math.ceil((t-e)/i)},((t,n)=>e+n*i))}static paste(e,t){const i=new ClipboardEvent("paste",{bubbles:!0,cancelable:!0});i.clipboardData.setData("text",t),e.dispatchEvent(i)}static animate(e,t,i,n,s=(e=>{const t=e**3.5;return t/(t+(1-e)**3.5)})){const r=performance.now(),o=a=>{let l=(a-r)/i;le.approximatelyEqual(l,1)||l>1?l=1:requestAnimationFrame(o);const u=e+(t-e)*s(l);n(u)};requestAnimationFrame(o)}}class ue extends se{static attributes={};constructor(e={},t=!1){super();const i=(e,n,s={},r="")=>{const o=Object.getOwnPropertyNames(s);for(let a of le.mergeArrays(Object.getOwnPropertyNames(n),o)){let l=le.objectGet(s,[a]),u=n[a],c=le.getType(u);if(u instanceof ne&&(u=u.calculate(this),c=le.getType(u)),null!=u&&u===c&&(u=new c),t||(a in n?!(o.length>0)||a in s||void 0===u||u instanceof ae&&(!u.showDefault||u.ignored)||console.warn(`${this.constructor.name} will add attribute ${r}${a} not defined in the serialized data`):console.warn(`Attribute ${r}${a} in the serialized data is not defined in ${this.constructor.name}.attributes`)),c!==Object)if(void 0===l){if(u instanceof ae){if(!u.showDefault){e[a]=void 0;continue}u.serialized?u="":(c=u.type,u=u.value,u instanceof Function&&(u=u()))}u instanceof oe&&(c=u.getFirstType(),u=ae.sanitize(null,c)),u instanceof Array&&(u=[]),e[a]=ae.sanitize(u,c)}else l?.constructor===String&&u instanceof ae&&u.serialized&&u.type!==String&&(l=re.getSerializer(u.type).deserialize(l)),e[a]=ae.sanitize(l,le.getType(u));else e[a]={},i(e[a],n[a],s[a],a+".")}},n=this.constructor.attributes;e.constructor!==Object&&1===Object.getOwnPropertyNames(n).length&&(e={[Object.getOwnPropertyNames(n)[0]]:e}),i(this,n,e)}unexpectedKeys(){return Object.getOwnPropertyNames(this).length-Object.getOwnPropertyNames(this.constructor.attributes).length}}class ce extends ue{static attributes={type:String,path:String};constructor(e={}){e.constructor!==Object&&(e={path:e}),super(e),this.type,this.path}getName(){return this.path.match(/[^\.\/]+$/)?.[0]??""}}class he extends ue{static attributes={MemberParent:new ae(ce,!1),MemberName:""};constructor(e){super(e),this.MemberParent,this.MemberName}}class de extends ue{static attributes={value:String};static generateGuid(e=!0){let t=new Uint32Array(4);!0===e&&crypto.getRandomValues(t);let i="";return t.forEach((e=>{i+=("0".repeat(8)+e.toString(16).toUpperCase()).slice(-8)})),new de({value:i})}constructor(e){e||(e=de.generateGuid().value),super(e),this.value}valueOf(){return this.value}toString(){return this.value}}class pe extends ue{static attributes={value:String};static attributeConverter={fromAttribute:(e,t)=>new pe(e),toAttribute:(e,t)=>e.toString()};constructor(e){super(e),this.value}valueOf(){return this.value}toString(){return this.value}}class me extends ue{static attributes={value:0};constructor(e=0){super(e),this.value=Math.round(this.value)}valueOf(){return this.value}toString(){return this.value.toString()}}class ge extends ue{static lookbehind="INVTEXT";static attributes={value:String};constructor(e){super(e),this.value}}class be extends ue{static attributes={ActionName:"",bShift:!1,bCtrl:!1,bAlt:!1,bCmd:!1,Key:pe};constructor(e={}){e.ActionName=e.ActionName??"",e.bShift=e.bShift??!1,e.bCtrl=e.bCtrl??!1,e.bAlt=e.bAlt??!1,e.bCmd=e.bCmd??!1,super(e),this.ActionName,this.bShift,this.bCtrl,this.bAlt,this.bCmd,this.Key}}class ve extends ue{static attributes={value:0};constructor(e=0){super(e),this.value=le.clamp(this.value,0,1)}valueOf(){return this.value}toString(){return this.value.toFixed(6)}}class fe extends ue{static attributes={R:ve,G:ve,B:ve,A:new ae(ve,!0,(()=>new ve(1)),!1,!1),H:new ae(ve,!0,void 0,!1,!0),S:new ae(ve,!0,void 0,!1,!0),V:new ae(ve,!0,void 0,!1,!0)};static linearToSRGB(e){return e<=0?0:e>=1?1:e<.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055}static sRGBtoLinear(e){return e<=0?0:e>=1?1:e<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}static getWhite(){return new fe({R:1,G:1,B:1})}constructor(e){e instanceof Array&&(e={R:e[0]??0,G:e[1]??0,B:e[2]??0,A:e[3]??1}),super(e),this.R,this.G,this.B,this.A,this.H,this.S,this.V,this.#d()}#d(){const e=this.R.value,t=this.G.value,i=this.B.value;if(le.approximatelyEqual(e,t)&&le.approximatelyEqual(e,i)&&le.approximatelyEqual(t,i))return this.S.value=0,void(this.V.value=e);const n=Math.max(e,t,i),s=Math.min(e,t,i),r=n-s;let o;switch(n){case s:o=0;break;case e:o=(t-i)/r+(t<i?6:0);break;case t:o=(i-e)/r+2;break;case i:o=(e-t)/r+4}o/=6,this.H.value=o,this.S.value=0==n?0:r/n,this.V.value=n}setFromRGBA(e,t,i,n=1){this.R.value=e,this.G.value=t,this.B.value=i,this.A.value=n,this.#d()}setFromHSVA(e,t,i,n=1){const s=Math.floor(6*e),r=6*e-s,o=i*(1-t),a=[i,i*(1-r*t),o,o,i*(1-(1-r)*t),i],[l,u,c]=[a[s%6],a[(s+4)%6],a[(s+2)%6]];this.R.value=l,this.G.value=u,this.B.value=c,this.A.value=n,this.H.value=e,this.S.value=t,this.V.value=i}setFromWheelLocation([e,t],i,n){const[s,r]=le.getPolarCoordinates([e,t],!0);this.setFromHSVA(1-r/(2*Math.PI),s,i,n)}toRGBA(){return[Math.round(255*this.R.value),Math.round(255*this.G.value),Math.round(255*this.B.value),Math.round(255*this.A.value)]}toSRGBA(){return[Math.round(255*fe.linearToSRGB(this.R.value)),Math.round(255*fe.linearToSRGB(this.G.value)),Math.round(255*fe.linearToSRGB(this.B.value)),Math.round(255*this.A.value)]}toRGBAString(){return this.toRGBA().map((e=>e.toString(16).toUpperCase().padStart(2,"0"))).join("")}toSRGBAString(){return this.toSRGBA().map((e=>e.toString(16).toUpperCase().padStart(2,"0"))).join("")}toHSVA(){return[this.H.value,this.S.value,this.V.value,this.A.value]}toNumber(){return(Math.round(255*this.R.value)<<24)+(Math.round(255*this.G.value)<<16)+(Math.round(255*this.B.value)<<8)+Math.round(255*this.A.value)}setFromRGBANumber(e){this.A.value=(255&e)/255,this.B.value=(e>>8&255)/255,this.G.value=(e>>16&255)/255,this.R.value=(e>>24&255)/255,this.#d()}setFromSRGBANumber(e){this.A.value=(255&e)/255,this.B.value=fe.sRGBtoLinear((e>>8&255)/255),this.G.value=fe.sRGBtoLinear((e>>16&255)/255),this.R.value=fe.sRGBtoLinear((e>>24&255)/255),this.#d()}toString(){return le.printLinearColor(this)}}class ye extends ue{static lookbehind="NSLOCTEXT";static attributes={namespace:String,key:String,value:String};constructor(e){super(e),this.namespace,this.key,this.value}toString(){return le.capitalFirstLetter(this.value)}}class we extends ue{static attributes={MacroGraph:ce,GraphBlueprint:ce,GraphGuid:de};constructor(e){super(e),this.MacroGraph,this.GraphBlueprint,this.GuidEntity}getMacroName(){const e=this.MacroGraph.path.search(":");return this.MacroGraph.path.substring(e+1)}}class Ee extends ue{static attributes={value:String};constructor(e){super(e),this.value}valueOf(){return this.value}toString(){return this.value}}class Se extends ue{static attributes={objectName:Ee,pinGuid:de};constructor(e){super(e),this.objectName,this.pinGuid}}class Pe extends ue{static attributes={R:Number,P:Number,Y:Number};constructor(e){super(e),this.R,this.P,this.Y}}class Ce extends Pe{}class ke extends ue{static attributes={X:Number,Y:Number};constructor(e){super(e),this.X,this.Y}}class xe extends ke{}class Ne extends ue{static attributes={X:Number,Y:Number,Z:Number};constructor(e){super(e),this.X,this.Y,this.Z}}class Le extends Ne{}class Te extends ue{static#p={"/Script/CoreUObject.LinearColor":fe,"/Script/CoreUObject.Rotator":Pe,"/Script/CoreUObject.Vector2D":ke,"/Script/CoreUObject.Vector":Ne,bool:Boolean,exec:String,int:me,name:String,real:Number,string:String};static#m={"/Script/CoreUObject.Vector2D":xe,"/Script/CoreUObject.Vector":Le,"/Script/CoreUObject.Rotator":Ce};static lookbehind="Pin";static attributes={PinId:de,PinName:"",PinFriendlyName:new ae(new oe(ye,String),!1,null),PinToolTip:new ae(String,!1,""),Direction:new ae(String,!1,""),PinType:{PinCategory:"",PinSubCategory:"",PinSubCategoryObject:ce,PinSubCategoryMemberReference:null,PinValueType:null,ContainerType:ce,bIsReference:!1,bIsConst:!1,bIsWeakPointer:!1,bIsUObjectWrapper:!1,bSerializeAsSinglePrecisionFloat:!1},LinkedTo:new ae([Se],!1),DefaultValue:new ne((e=>new ae(e.getEntityType(!0)??String,!1,void 0,!0))),AutogeneratedDefaultValue:new ae(String,!1),DefaultObject:new ae(ce,!1,null),PersistentGuid:de,bHidden:!1,bNotConnectable:!1,bDefaultValueIsReadOnly:!1,bDefaultValueIsIgnored:!1,bAdvancedView:!1,bOrphanedPin:!1};constructor(e={},t=!1){super(e,t),this.PinId,this.PinName,this.PinFriendlyName,this.PinToolTip,this.Direction,this.PinType,this.LinkedTo,this.DefaultValue,this.AutogeneratedDefaultValue,this.DefaultObject,this.PersistentGuid,this.bHidden,this.bNotConnectable,this.bDefaultValueIsReadOnly,this.bDefaultValueIsIgnored,this.bAdvancedView,this.bOrphanedPin}getType(){return"struct"==this.PinType.PinCategory||"object"==this.PinType.PinCategory?this.PinType.PinSubCategoryObject.path:this.PinType.PinCategory}getEntityType(e=!1){const t=this.getType(),i=Te.#p[t],n=Te.#m[t];return e&&void 0!==n?n:i}getDisplayName(){let e=null;return this.PinToolTip&&(e=this.PinToolTip.match(/\s*(.+?(?=\n)|.+\S)\s*/))?le.formatStringName(e[1]):le.formatStringName(this.PinName)}copyTypeFrom(e){this.PinType.PinCategory=e.PinType.PinCategory,this.PinType.PinSubCategory=e.PinType.PinSubCategory,this.PinType.PinSubCategoryObject=e.PinType.PinSubCategoryObject,this.PinType.PinSubCategoryMemberReference=e.PinType.PinSubCategoryMemberReference,this.PinType.PinValueType=e.PinType.PinValueType,this.PinType.ContainerType=e.PinType.ContainerType,this.PinType.bIsReference=e.PinType.bIsReference,this.PinType.bIsConst=e.PinType.bIsConst,this.PinType.bIsWeakPointer=e.PinType.bIsWeakPointer,this.PinType.bIsUObjectWrapper=e.PinType.bIsUObjectWrapper,this.PinType.bSerializeAsSinglePrecisionFloat=e.PinType.bSerializeAsSinglePrecisionFloat}getDefaultValue(e=!1){return void 0===this.DefaultValue&&e&&(this.DefaultValue=new(this.getEntityType(!0))),this.DefaultValue}isExecution(){return"exec"===this.PinType.PinCategory}isHidden(){return this.bHidden}isInput(){return!this.bHidden&&"EGPD_Output"!=this.Direction}isOutput(){return!this.bHidden&&"EGPD_Output"==this.Direction}isLinked(){return this.LinkedTo?.length>0??!1}linkTo(e,t){this.LinkedTo;const i=this.LinkedTo?.find((i=>i.objectName.toString()==e&&i.pinGuid.valueOf()==t.PinId.valueOf()));return!i&&((this.LinkedTo??(this.LinkedTo=[])).push(new Se({objectName:e,pinGuid:t.PinId})),!0)}unlinkFrom(e,t){const i=this.LinkedTo?.findIndex((i=>i.objectName.toString()==e&&i.pinGuid.valueOf()==t.PinId.valueOf()));return i>=0&&(1==this.LinkedTo.length?this.LinkedTo=void 0:this.LinkedTo.splice(i,1),!0)}getSubCategory(){return this.PinType.PinSubCategoryObject.path}}class Ae extends ue{static attributes={value:String};constructor(e){super(e),this.value}}class Me extends ue{static attributes={MemberScope:new ae(String,!1),MemberName:String,MemberGuid:de,bSelfContext:new ae(Boolean,!1,!1)};constructor(e){super(e),this.MemberName,this.GuidEntity,this.bSelfContext}}class $e extends ue{static attributes={Class:ce,Name:"",bIsPureFunc:new ae(Boolean,!1,!1),VariableReference:new ae(Me,!1,null),SelfContextInfo:new ae(Ae,!1,null),FunctionReference:new ae(he,!1,null),EventReference:new ae(he,!1,null),TargetType:new ae(ce,!1,null),MacroGraphReference:new ae(we,!1,null),Enum:new ae(ce,!1),CommentColor:new ae(fe,!1),bCommentBubbleVisible_InDetailsPanel:new ae(Boolean,!1),bColorCommentBubble:new ae(Boolean,!1,!1),MoveMode:new ae(Ae,!1),NodePosX:me,NodePosY:me,NodeWidth:new ae(me,!1),NodeHeight:new ae(me,!1),bCommentBubblePinned:new ae(Boolean,!1),bCommentBubbleVisible:new ae(Boolean,!1),NodeComment:new ae(String,!1),AdvancedPinDisplay:new ae(pe,!1,null),EnabledState:new ae(pe,!1,null),NodeGuid:de,ErrorType:new ae(me,!1),ErrorMsg:new ae(String,!1,""),CustomProperties:[Te]};static nameRegex=/^(\w+?)(?:_(\d+))?$/;static sequencerScriptingNameRegex=/\/Script\/SequencerScripting\.MovieSceneScripting(.+)Channel/;constructor(e,t=!1){super(e,t),this.Class,this.Name,this.bIsPureFunc,this.VariableReference,this.FunctionReference,this.EventReference,this.TargetType,this.MacroGraphReference,this.Enum,this.CommentColor,this.bCommentBubbleVisible_InDetailsPanel,this.NodePosX,this.NodePosY,this.NodeWidth,this.NodeHeight,this.bCommentBubblePinned,this.bCommentBubbleVisible,this.NodeComment,this.AdvancedPinDisplay,this.EnabledState,this.NodeGuid,this.ErrorType,this.ErrorMsg,this.CustomProperties}getClass(){return this.Class.path}getType(){let e=this.getClass();return e===te.nodeType.macro?this.MacroGraphReference.MacroGraph.path:e}getObjectName(e=!1){return e?this.getNameAndCounter()[0]:this.Name}getNameAndCounter(){const e=this.getObjectName(!1).match($e.nameRegex);let t="",i=null;return e?(e.length>1&&(t=e[1]),e.length>2&&(i=parseInt(e[2])),[t,i]):["",0]}getCounter(){return this.getNameAndCounter()[1]}getNodeWidth(){return this.NodeWidth??this.getType()==te.nodeType.comment?te.defaultCommentWidth:void 0}setNodeWidth(e){this.NodeWidth||(this.NodeWidth=new me),this.NodeWidth.value=e}getNodeHeight(){return this.NodeHeight??this.getType()==te.nodeType.comment?te.defaultCommentHeight:void 0}setNodeHeight(e){this.NodeHeight||(this.NodeHeight=new me),this.NodeHeight.value=e}}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function De(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Be={exports:{}};"undefined"!=typeof self&&self;var Oe=De(Be.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},i.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=0)}([function(e,t,i){function n(e){if(!(this instanceof n))return new n(e);this._=e}var s=n.prototype;function r(e,t){for(var i=0;i<e;i++)t(i)}function o(e,t,i){return function(e,t){r(t.length,(function(i){e(t[i],i,t)}))}((function(i,n,s){t=e(t,i,n,s)}),i),t}function a(e,t){return o((function(t,i,n,s){return t.concat([e(i,n,s)])}),[],t)}function l(e,t){var i={v:0,buf:t};return r(e,(function(){var e;i={v:i.v<<1|(e=i.buf,e[0]>>7),buf:function(e){var t=o((function(e,t,i,n){return e.concat(i===n.length-1?Buffer.from([t,0]).readUInt16BE(0):n.readUInt16BE(i))}),[],e);return Buffer.from(a((function(e){return(e<<1&65535)>>8}),t))}(i.buf)}})),i}function u(){return"undefined"!=typeof Buffer}function c(){if(!u())throw new Error("Buffer global does not exist; please use webpack if you need to parse Buffers in the browser.")}function h(e){c();var t=o((function(e,t){return e+t}),0,e);if(t%8!=0)throw new Error("The bits ["+e.join(", ")+"] add up to "+t+" which is not an even number of bytes; the total should be divisible by 8");var i,s=t/8,r=(i=function(e){return e>48},o((function(e,t){return e||(i(t)?t:e)}),null,e));if(r)throw new Error(r+" bit range requested exceeds 48 bit (6 byte) Number max.");return new n((function(t,i){var n=s+i;return n>t.length?S(i,s.toString()+" bytes"):E(n,o((function(e,t){var i=l(t,e.buf);return{coll:e.coll.concat(i.v),buf:i.buf}}),{coll:[],buf:t.slice(i,n)},e).coll)}))}function d(e,t){return new n((function(i,n){return c(),n+t>i.length?S(n,t+" bytes for "+e):E(n+t,i.slice(n,n+t))}))}function p(e,t){if("number"!=typeof(i=t)||Math.floor(i)!==i||t<0||t>6)throw new Error(e+" requires integer length in range [0, 6].");var i}function m(e){return p("uintBE",e),d("uintBE("+e+")",e).map((function(t){return t.readUIntBE(0,e)}))}function g(e){return p("uintLE",e),d("uintLE("+e+")",e).map((function(t){return t.readUIntLE(0,e)}))}function b(e){return p("intBE",e),d("intBE("+e+")",e).map((function(t){return t.readIntBE(0,e)}))}function v(e){return p("intLE",e),d("intLE("+e+")",e).map((function(t){return t.readIntLE(0,e)}))}function f(e){return e instanceof n}function y(e){return"[object Array]"==={}.toString.call(e)}function w(e){return u()&&Buffer.isBuffer(e)}function E(e,t){return{status:!0,index:e,value:t,furthest:-1,expected:[]}}function S(e,t){return y(t)||(t=[t]),{status:!1,index:-1,value:null,furthest:e,expected:t}}function P(e,t){if(!t)return e;if(e.furthest>t.furthest)return e;var i=e.furthest===t.furthest?function(e,t){if(function(){if(void 0!==n._supportsSet)return n._supportsSet;var e="undefined"!=typeof Set;return n._supportsSet=e,e}()&&Array.from){for(var i=new Set(e),s=0;s<t.length;s++)i.add(t[s]);var r=Array.from(i);return r.sort(),r}for(var o={},a=0;a<e.length;a++)o[e[a]]=!0;for(var l=0;l<t.length;l++)o[t[l]]=!0;var u=[];for(var c in o)({}).hasOwnProperty.call(o,c)&&u.push(c);return u.sort(),u}(e.expected,t.expected):t.expected;return{status:e.status,index:e.index,value:e.value,furthest:t.furthest,expected:i}}var C={};function k(e,t){if(w(e))return{offset:t,line:-1,column:-1};e in C||(C[e]={});for(var i=C[e],n=0,s=0,r=0,o=t;o>=0;){if(o in i){n=i[o].line,0===r&&(r=i[o].lineStart);break}("\n"===e.charAt(o)||"\r"===e.charAt(o)&&"\n"!==e.charAt(o+1))&&(s++,0===r&&(r=o+1)),o--}var a=n+s,l=t-r;return i[t]={line:a,lineStart:r},{offset:t,line:a+1,column:l+1}}function x(e){if(!f(e))throw new Error("not a parser: "+e)}function N(e,t){return"string"==typeof e?e.charAt(t):e[t]}function L(e){if("number"!=typeof e)throw new Error("not a number: "+e)}function T(e){if("function"!=typeof e)throw new Error("not a function: "+e)}function A(e){if("string"!=typeof e)throw new Error("not a string: "+e)}var M=2,$=3,D=8,B=5*D,O=4*D,H=" ";function z(e,t){return new Array(t+1).join(e)}function I(e,t,i){var n=t-e.length;return n<=0?e:z(i,n)+e}function R(e,t,i,n){return{from:e-t>0?e-t:0,to:e+i>n?n:e+i}}function V(e,t){var i,n,s,r,l,u=t.index,c=u.offset,h=1;if(c===e.length)return"Got the end of the input";if(w(e)){var d=c-c%D,p=c-d,m=R(d,B,O+D,e.length),g=a((function(e){return a((function(e){return I(e.toString(16),2,"0")}),e)}),function(e,t){var i=e.length,n=[],s=0;if(i<=t)return[e.slice()];for(var r=0;r<i;r++)n[s]||n.push([]),n[s].push(e[r]),(r+1)%t==0&&s++;return n}(e.slice(m.from,m.to).toJSON().data,D));r=function(e){return 0===e.from&&1===e.to?{from:e.from,to:e.to}:{from:e.from/D,to:Math.floor(e.to/D)}}(m),n=d/D,i=3*p,p>=4&&(i+=1),h=2,s=a((function(e){return e.length<=4?e.join(" "):e.slice(0,4).join(" ")+" "+e.slice(4).join(" ")}),g),(l=(8*(r.to>0?r.to-1:r.to)).toString(16).length)<2&&(l=2)}else{var b=e.split(/\r\n|[\n\r\u2028\u2029]/);i=u.column-1,n=u.line-1,r=R(n,M,$,b.length),s=b.slice(r.from,r.to),l=r.to.toString().length}var v=n-r.from;return w(e)&&(l=(8*(r.to>0?r.to-1:r.to)).toString(16).length)<2&&(l=2),o((function(t,n,s){var o,a=s===v,u=a?"> ":H;return o=w(e)?I((8*(r.from+s)).toString(16),l,"0"):I((r.from+s+1).toString(),l," "),[].concat(t,[u+o+" | "+n],a?[H+z(" ",l)+" | "+I("",i," ")+z("^",h)]:[])}),[],s).join("\n")}function _(e,t){return["\n","-- PARSING FAILED "+z("-",50),"\n\n",V(e,t),"\n\n",(i=t.expected,1===i.length?"Expected:\n\n"+i[0]:"Expected one of the following: \n\n"+i.join(", ")),"\n"].join("");var i}function G(e){return void 0!==e.flags?e.flags:[e.global?"g":"",e.ignoreCase?"i":"",e.multiline?"m":"",e.unicode?"u":"",e.sticky?"y":""].join("")}function F(){for(var e=[].slice.call(arguments),t=e.length,i=0;i<t;i+=1)x(e[i]);return n((function(i,n){for(var s,r=new Array(t),o=0;o<t;o+=1){if(!(s=P(e[o]._(i,n),s)).status)return s;r[o]=s.value,n=s.index}return P(E(n,r),s)}))}function j(){var e=[].slice.call(arguments);if(0===e.length)throw new Error("seqMap needs at least one argument");var t=e.pop();return T(t),F.apply(null,e).map((function(e){return t.apply(null,e)}))}function U(){var e=[].slice.call(arguments),t=e.length;if(0===t)return Z("zero alternates");for(var i=0;i<t;i+=1)x(e[i]);return n((function(t,i){for(var n,s=0;s<e.length;s+=1)if((n=P(e[s]._(t,i),n)).status)return n;return n}))}function X(e,t){return W(e,t).or(K([]))}function W(e,t){return x(e),x(t),j(e,t.then(e).many(),(function(e,t){return[e].concat(t)}))}function Y(e){A(e);var t="'"+e+"'";return n((function(i,n){var s=n+e.length,r=i.slice(n,s);return r===e?E(s,r):S(n,t)}))}function q(e,t){!function(e){if(!(e instanceof RegExp))throw new Error("not a regexp: "+e);for(var t=G(e),i=0;i<t.length;i++){var n=t.charAt(i);if("i"!==n&&"m"!==n&&"u"!==n&&"s"!==n)throw new Error('unsupported regexp flag "'+n+'": '+e)}}(e),arguments.length>=2?L(t):t=0;var i=function(e){return RegExp("^(?:"+e.source+")",G(e))}(e),s=""+e;return n((function(e,n){var r=i.exec(e.slice(n));if(r){if(0<=t&&t<=r.length){var o=r[0],a=r[t];return E(n+o.length,a)}return S(n,"valid match group (0 to "+r.length+") in "+s)}return S(n,s)}))}function K(e){return n((function(t,i){return E(i,e)}))}function Z(e){return n((function(t,i){return S(i,e)}))}function J(e){if(f(e))return n((function(t,i){var n=e._(t,i);return n.index=i,n.value="",n}));if("string"==typeof e)return J(Y(e));if(e instanceof RegExp)return J(q(e));throw new Error("not a string, regexp, or parser: "+e)}function Q(e){return x(e),n((function(t,i){var n=e._(t,i),s=t.slice(i,n.index);return n.status?S(i,'not "'+s+'"'):E(i,null)}))}function ee(e){return T(e),n((function(t,i){var n=N(t,i);return i<t.length&&e(n)?E(i+1,n):S(i,"a character/byte matching "+e)}))}function te(e,t){arguments.length<2&&(t=e,e=void 0);var i=n((function(e,n){return i._=t()._,i._(e,n)}));return e?i.desc(e):i}function ie(){return Z("fantasy-land/empty")}s.parse=function(e){if("string"!=typeof e&&!w(e))throw new Error(".parse must be called with a string or Buffer as its argument");var t,i=this.skip(oe)._(e,0);return t=i.status?{status:!0,value:i.value}:{status:!1,index:k(e,i.furthest),expected:i.expected},delete C[e],t},s.tryParse=function(e){var t=this.parse(e);if(t.status)return t.value;var i=_(e,t),n=new Error(i);throw n.type="ParsimmonError",n.result=t,n},s.assert=function(e,t){return this.chain((function(i){return e(i)?K(i):Z(t)}))},s.or=function(e){return U(this,e)},s.trim=function(e){return this.wrap(e,e)},s.wrap=function(e,t){return j(e,this,t,(function(e,t){return t}))},s.thru=function(e){return e(this)},s.then=function(e){return x(e),F(this,e).map((function(e){return e[1]}))},s.many=function(){var e=this;return n((function(t,i){for(var n=[],s=void 0;;){if(!(s=P(e._(t,i),s)).status)return P(E(i,n),s);if(i===s.index)throw new Error("infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause");i=s.index,n.push(s.value)}}))},s.tieWith=function(e){return A(e),this.map((function(t){if(function(e){if(!y(e))throw new Error("not an array: "+e)}(t),t.length){A(t[0]);for(var i=t[0],n=1;n<t.length;n++)A(t[n]),i+=e+t[n];return i}return""}))},s.tie=function(){return this.tieWith("")},s.times=function(e,t){var i=this;return arguments.length<2&&(t=e),L(e),L(t),n((function(n,s){for(var r=[],o=void 0,a=void 0,l=0;l<e;l+=1){if(a=P(o=i._(n,s),a),!o.status)return a;s=o.index,r.push(o.value)}for(;l<t&&(a=P(o=i._(n,s),a),o.status);l+=1)s=o.index,r.push(o.value);return P(E(s,r),a)}))},s.result=function(e){return this.map((function(){return e}))},s.atMost=function(e){return this.times(0,e)},s.atLeast=function(e){return j(this.times(e),this.many(),(function(e,t){return e.concat(t)}))},s.map=function(e){T(e);var t=this;return n((function(i,n){var s=t._(i,n);return s.status?P(E(s.index,e(s.value)),s):s}))},s.contramap=function(e){T(e);var t=this;return n((function(i,n){var s=t.parse(e(i.slice(n)));return s.status?E(n+i.length,s.value):s}))},s.promap=function(e,t){return T(e),T(t),this.contramap(e).map(t)},s.skip=function(e){return F(this,e).map((function(e){return e[0]}))},s.mark=function(){return j(ne,this,ne,(function(e,t,i){return{start:e,value:t,end:i}}))},s.node=function(e){return j(ne,this,ne,(function(t,i,n){return{name:e,value:i,start:t,end:n}}))},s.sepBy=function(e){return X(this,e)},s.sepBy1=function(e){return W(this,e)},s.lookahead=function(e){return this.skip(J(e))},s.notFollowedBy=function(e){return this.skip(Q(e))},s.desc=function(e){y(e)||(e=[e]);var t=this;return n((function(i,n){var s=t._(i,n);return s.status||(s.expected=e),s}))},s.fallback=function(e){return this.or(K(e))},s.ap=function(e){return j(e,this,(function(e,t){return e(t)}))},s.chain=function(e){var t=this;return n((function(i,n){var s=t._(i,n);return s.status?P(e(s.value)._(i,s.index),s):s}))},s.concat=s.or,s.empty=ie,s.of=K,s["fantasy-land/ap"]=s.ap,s["fantasy-land/chain"]=s.chain,s["fantasy-land/concat"]=s.concat,s["fantasy-land/empty"]=s.empty,s["fantasy-land/of"]=s.of,s["fantasy-land/map"]=s.map;var ne=n((function(e,t){return E(t,k(e,t))})),se=n((function(e,t){return t>=e.length?S(t,"any character/byte"):E(t+1,N(e,t))})),re=n((function(e,t){return E(e.length,e.slice(t))})),oe=n((function(e,t){return t<e.length?S(t,"EOF"):E(t,null)})),ae=q(/[0-9]/).desc("a digit"),le=q(/[0-9]*/).desc("optional digits"),ue=q(/[a-z]/i).desc("a letter"),ce=q(/[a-z]*/i).desc("optional letters"),he=q(/\s*/).desc("optional whitespace"),de=q(/\s+/).desc("whitespace"),pe=Y("\r"),me=Y("\n"),ge=Y("\r\n"),be=U(ge,me,pe).desc("newline"),ve=U(be,oe);n.all=re,n.alt=U,n.any=se,n.cr=pe,n.createLanguage=function(e){var t={};for(var i in e)({}).hasOwnProperty.call(e,i)&&function(i){t[i]=te((function(){return e[i](t)}))}(i);return t},n.crlf=ge,n.custom=function(e){return n(e(E,S))},n.digit=ae,n.digits=le,n.empty=ie,n.end=ve,n.eof=oe,n.fail=Z,n.formatError=_,n.index=ne,n.isParser=f,n.lazy=te,n.letter=ue,n.letters=ce,n.lf=me,n.lookahead=J,n.makeFailure=S,n.makeSuccess=E,n.newline=be,n.noneOf=function(e){return ee((function(t){return e.indexOf(t)<0})).desc("none of '"+e+"'")},n.notFollowedBy=Q,n.of=K,n.oneOf=function(e){for(var t=e.split(""),i=0;i<t.length;i++)t[i]="'"+t[i]+"'";return ee((function(t){return e.indexOf(t)>=0})).desc(t)},n.optWhitespace=he,n.Parser=n,n.range=function(e,t){return ee((function(i){return e<=i&&i<=t})).desc(e+"-"+t)},n.regex=q,n.regexp=q,n.sepBy=X,n.sepBy1=W,n.seq=F,n.seqMap=j,n.seqObj=function(){for(var e,t={},i=0,s=(e=arguments,Array.prototype.slice.call(e)),r=s.length,o=0;o<r;o+=1){var a=s[o];if(!f(a)){if(y(a)&&2===a.length&&"string"==typeof a[0]&&f(a[1])){var l=a[0];if(Object.prototype.hasOwnProperty.call(t,l))throw new Error("seqObj: duplicate key "+l);t[l]=!0,i++;continue}throw new Error("seqObj arguments must be parsers or [string, parser] array pairs.")}}if(0===i)throw new Error("seqObj expects at least one named parser, found zero");return n((function(e,t){for(var i,n={},o=0;o<r;o+=1){var a,l;if(y(s[o])?(a=s[o][0],l=s[o][1]):(a=null,l=s[o]),!(i=P(l._(e,t),i)).status)return i;a&&(n[a]=i.value),t=i.index}return P(E(t,n),i)}))},n.string=Y,n.succeed=K,n.takeWhile=function(e){return T(e),n((function(t,i){for(var n=i;n<t.length&&e(N(t,n));)n++;return E(n,t.slice(i,n))}))},n.test=ee,n.whitespace=de,n["fantasy-land/empty"]=ie,n["fantasy-land/of"]=K,n.Binary={bitSeq:h,bitSeqObj:function(e){c();var t={},i=0,n=a((function(e){if(y(e)){var n=e;if(2!==n.length)throw new Error("["+n.join(", ")+"] should be length 2, got length "+n.length);if(A(n[0]),L(n[1]),Object.prototype.hasOwnProperty.call(t,n[0]))throw new Error("duplicate key in bitSeqObj: "+n[0]);return t[n[0]]=!0,i++,n}return L(e),[null,e]}),e);if(i<1)throw new Error("bitSeqObj expects at least one named pair, got ["+e.join(", ")+"]");var s=a((function(e){return e[0]}),n);return h(a((function(e){return e[1]}),n)).map((function(e){return o((function(e,t){return null!==t[0]&&(e[t[0]]=t[1]),e}),{},a((function(t,i){return[t,e[i]]}),s))}))},byte:function(e){if(c(),L(e),e>255)throw new Error("Value specified to byte constructor ("+e+"=0x"+e.toString(16)+") is larger in value than a single byte.");var t=(e>15?"0x":"0x0")+e.toString(16);return n((function(i,n){var s=N(i,n);return s===e?E(n+1,s):S(n,t)}))},buffer:function(e){return d("buffer",e).map((function(e){return Buffer.from(e)}))},encodedString:function(e,t){return d("string",t).map((function(t){return t.toString(e)}))},uintBE:m,uint8BE:m(1),uint16BE:m(2),uint32BE:m(4),uintLE:g,uint8LE:g(1),uint16LE:g(2),uint32LE:g(4),intBE:b,int8BE:b(1),int16BE:b(2),int32BE:b(4),intLE:v,int8LE:v(1),int16LE:v(2),int32LE:v(4),floatBE:d("floatBE",4).map((function(e){return e.readFloatBE(0)})),floatLE:d("floatLE",4).map((function(e){return e.readFloatLE(0)})),doubleBE:d("doubleBE",8).map((function(e){return e.readDoubleBE(0)})),doubleLE:d("doubleLE",8).map((function(e){return e.readDoubleLE(0)}))},e.exports=n}]));class He extends ue{static attributes={lookbehind:new ae(String,!1,"",!1,!0)};constructor(e){super(e),this.lookbehind}}class ze extends me{static attributes={value:0};constructor(e=0){super(e);const t=Math.round(this.value);this.value=t>=0&&t<256?t:0}valueOf(){return this.value}toString(){return this.value.toString()}}let Ie=Oe;class Re{static getGrammarForType(e,t,i=e.AttributeAnyValue){if(t instanceof ae){let n=Re.getGrammarForType(e,t.type,i);return!t.serialized||t.type instanceof String||(n=n.wrap(Ie.string('"'),Ie.string('"'))),n}switch(le.getType(t)){case Array:return Ie.seqMap(Ie.string("("),t.map((t=>Re.getGrammarForType(e,le.getType(t)))).reduce(((t,i)=>i&&t!==e.AttributeAnyValue?t.or(i):e.AttributeAnyValue)).trim(Ie.optWhitespace).sepBy(Ie.string(",")).skip(Ie.regex(/,?\s*/)),Ie.string(")"),((e,t,i)=>t));case Boolean:return e.Boolean;case ze:return e.Byte;case he:return e.FunctionReference;case de:return e.Guid;case pe:return e.Identifier;case me:return e.Integer;case ge:return e.InvariantText;case fe:return e.LinearColor;case ye:return e.LocalizedText;case we:return e.MacroGraphReference;case Number:return e.Number;case ce:return e.ObjectReference;case Te:return e.Pin;case Se:return e.PinReference;case ve:return e.RealUnit;case Pe:return e.Rotator;case Ce:return e.SimpleSerializationRotator;case xe:return e.SimpleSerializationVector2D;case Le:return e.SimpleSerializationVector;case String:return e.String;case Ae:return e.Symbol;case oe:return t.types.map((t=>Re.getGrammarForType(e,le.getType(t)))).reduce(((t,i)=>i&&t!==e.AttributeAnyValue?t.or(i):e.AttributeAnyValue));case Me:return e.VariableReference;case ke:return e.Vector2D;case Ne:return e.Vector;default:return i}}static ReferencePath=(e,t)=>Ie.alt(t,Ie.seq(Ie.string("/"),t.map((e=>e.toString())).sepBy1(Ie.string(".")).tieWith(".").sepBy1(Ie.string(":")).tieWith(":")).tie().atLeast(2).tie());static createAttributeGrammar=(e,t,i=Ie.string("=").trim(Ie.optWhitespace))=>e.AttributeName.skip(i).chain((i=>{const n=i.split("."),s=le.objectGet(t.attributes,n);return Re.getGrammarForType(e,s,e.AttributeAnyValue).map((e=>t=>le.objectSet(t,n,e,!0)))}));static createEntityGrammar=(e,t,i=!1)=>Ie.seqMap(t.lookbehind?Ie.seq(Ie.string(t.lookbehind),Ie.optWhitespace,Ie.string("(")):Ie.string("("),Re.createAttributeGrammar(e,t).trim(Ie.optWhitespace).sepBy(Ie.string(",")).skip(Ie.regex(/,?/).then(Ie.optWhitespace)),Ie.string(")"),((e,t,i)=>{let n={};return t.forEach((e=>e(n))),n})).chain((e=>{if(i){let i=0,n=0;for(const s in e)i+=s in t.attributes?0:1,++n;if(i+.5>Math.sqrt(n))return Ie.fail()}return Ie.succeed().map((()=>new t(e)))}));InlineWhitespace=e=>Ie.regex(/[^\S\n]+/).desc("single line whitespace");InlineOptWhitespace=e=>Ie.regex(/[^\S\n]*/).desc("single line optional whitespace");MultilineWhitespace=e=>Ie.regex(/[^\S\n]*\n\s*/).desc("whitespace with at least a newline");Null=e=>Ie.seq(Ie.string("("),e.InlineOptWhitespace,Ie.string(")")).map((()=>null)).desc("null: ()");Boolean=e=>Ie.alt(Ie.string("True"),Ie.string("true"),Ie.string("False"),Ie.string("false")).map((e=>"true"===e.toLocaleLowerCase())).desc("either True or False");HexDigit=e=>Ie.regex(/[0-9a-fA-f]/).desc("hexadecimal digit");Number=e=>Ie.regex(/[-\+]?[0-9]+(?:\.[0-9]+)?/).map(Number).desc("a number");RealNumber=e=>Ie.regex(/[-\+]?[0-9]+\.[0-9]+/).map(Number).desc("a number written as real");RealUnit=e=>Ie.regex(/\+?[0-9]+(?:\.[0-9]+)?/).map(Number).assert((e=>e>=0&&e<=1)).desc("a number between 0 and 1");NaturalNumber=e=>Ie.regex(/0|[1-9]\d*/).map(Number).desc("a natural number");ColorNumber=e=>e.NaturalNumber.assert((e=>0<=e&&e<256),"the color must be between 0 and 256 excluded");Word=e=>Ie.regex(/[a-zA-Z_]+/).desc("a word");String=e=>Ie.regex(/(?:[^"\\]|\\.)*/).wrap(Ie.string('"'),Ie.string('"')).map(le.unescapeString).desc('string (with possibility to escape the quote using ")');AttributeName=e=>e.Word.sepBy1(Ie.string(".")).tieWith(".").desc("dot-separated words");None=e=>Ie.string("None").map((()=>new ce({type:"None",path:""}))).desc("none");Integer=e=>Ie.regex(/[\-\+]?[0-9]+/).map((e=>new me(e))).desc("an integer");Byte=e=>Ie.regex(/\+?[0-9]+/).map((e=>parseInt(e))).assert((e=>e>=0&&e<256)).map((e=>new ze(e))).desc("a Byte");Guid=e=>e.HexDigit.times(32).tie().map((e=>new de({value:e}))).desc("32 digit hexadecimal value");Identifier=e=>Ie.regex(/\w+/).map((e=>new pe(e)));PathSymbol=e=>Ie.regex(/[0-9\w]+/).map((e=>new Ee({value:e})));PathSymbolOptSpaces=e=>Ie.regex(/[0-9\w]+(?: [0-9\w]+)+|[0-9\w]+/).map((e=>new Ee({value:e})));Symbol=e=>Ie.regex(/\w+/).map((e=>new Ae({value:e})));ObjectReference=e=>Ie.alt(e.None,...[Re.ReferencePath(e,e.PathSymbolOptSpaces).map((e=>new ce({type:"",path:e})))].flatMap((e=>[e.wrap(Ie.string('"'),Ie.string('"')),e.wrap(Ie.string("'\""),Ie.string("\"'"))])),Ie.seqMap(Re.ReferencePath(e,e.PathSymbolOptSpaces),Ie.optWhitespace,Ie.alt(...[Re.ReferencePath(e,e.PathSymbolOptSpaces)].flatMap((e=>[e.wrap(Ie.string('"'),Ie.string('"')),e.wrap(Ie.string("'\""),Ie.string("\"'"))]))),((e,t,i)=>new ce({type:e,path:i}))),Re.ReferencePath(e,e.PathSymbol).map((e=>new ce({type:"",path:e}))),e.Word.map((e=>new ce({type:e,path:""}))));LocalizedText=e=>Ie.seqMap(Ie.string(ye.lookbehind).skip(Ie.optWhitespace).skip(Ie.string("(")),e.String.trim(Ie.optWhitespace),Ie.string(","),e.String.trim(Ie.optWhitespace),Ie.string(","),e.String.trim(Ie.optWhitespace),Ie.string(")"),((e,t,i,n,s,r,o)=>new ye({namespace:t,key:n,value:r})));InvariantText=e=>e.String.trim(Ie.optWhitespace).wrap(Ie.string(ge.lookbehind).skip(Ie.optWhitespace).skip(Ie.string("(")),Ie.string(")")).map((e=>new ge({value:e})));AttributeAnyValue=e=>Ie.alt(e.Boolean,e.Guid,e.None,e.Null,e.Number,e.String,e.LocalizedText,e.InvariantText,e.PinReference,Re.createEntityGrammar(e,Ne,!0),Re.createEntityGrammar(e,ke,!0),Re.createEntityGrammar(e,fe,!0),e.UnknownKeys,e.ObjectReference,e.Symbol);PinReference=e=>Ie.seqMap(e.PathSymbol,Ie.whitespace,e.Guid,((e,t,i)=>new Se({objectName:e,pinGuid:i})));Vector2D=e=>Re.createEntityGrammar(e,ke);Vector=e=>Re.createEntityGrammar(e,Ne);Rotator=e=>Re.createEntityGrammar(e,Pe);SimpleSerializationRotator=e=>Ie.seqMap(e.Number,Ie.string(",").trim(Ie.optWhitespace),e.Number,Ie.string(",").trim(Ie.optWhitespace),e.Number,((e,t,i,n,s)=>new Ce({R:s,P:e,Y:i})));SimpleSerializationVector2D=e=>Ie.seqMap(e.Number,Ie.string(",").trim(Ie.optWhitespace),e.Number,((e,t,i)=>new xe({X:e,Y:i})));SimpleSerializationVector=e=>Ie.seqMap(e.Number,Ie.string(",").trim(Ie.optWhitespace),e.Number,Ie.string(",").trim(Ie.optWhitespace),e.Number,((e,t,i,n,s)=>new Le({X:e,Y:i,Z:s})));LinearColor=e=>Re.createEntityGrammar(e,fe);FunctionReference=e=>Re.createEntityGrammar(e,he);VariableReference=e=>Re.createEntityGrammar(e,Me);MacroGraphReference=e=>Re.createEntityGrammar(e,we);KeyBinding=e=>Ie.alt(e.Identifier.map((e=>new be({Key:e}))),Re.createEntityGrammar(e,be));Pin=e=>Re.createEntityGrammar(e,Te);CustomProperties=e=>Ie.string("CustomProperties").then(Ie.whitespace).then(e.Pin).map((e=>t=>{let i=le.objectGet(t,["CustomProperties"],[]);i.push(e),le.objectSet(t,["CustomProperties"],i,!0)}));Object=e=>Ie.seqMap(Ie.seq(Ie.string("Begin"),Ie.whitespace,Ie.string("Object"),Ie.whitespace),Ie.alt(e.CustomProperties,Re.createAttributeGrammar(e,$e)).sepBy1(Ie.whitespace),Ie.seq(e.MultilineWhitespace,Ie.string("End"),Ie.whitespace,Ie.string("Object")),((e,t,i)=>{let n={};return t.forEach((e=>e(n))),new $e(n)}));MultipleObject=e=>e.Object.sepBy1(Ie.whitespace).trim(Ie.optWhitespace);LinearColorFromHex=e=>Ie.string("#").then(e.HexDigit.times(2).tie().times(3,4)).trim(Ie.optWhitespace).map((([e,t,i,n])=>new fe({R:parseInt(e,16)/255,G:parseInt(t,16)/255,B:parseInt(i,16)/255,A:n?parseInt(n,16)/255:1})));LinearColorFromRGBList=e=>Ie.seqMap(e.ColorNumber,Ie.string(",").skip(Ie.optWhitespace),e.ColorNumber,Ie.string(",").skip(Ie.optWhitespace),e.ColorNumber.map(Number),((e,t,i,n,s)=>new fe({R:e/255,G:i/255,B:s/255,A:1})));LinearColorFromRGB=e=>Ie.string("rgb").then(e.LinearColorFromRGBList.wrap(Ie.regex(/\(\s*/),Ie.regex(/\s*\)/)));LinearColorFromRGBA=e=>Ie.string("rgba").then(Ie.seqMap(e.ColorNumber,Ie.string(",").skip(Ie.optWhitespace),e.ColorNumber,Ie.string(",").skip(Ie.optWhitespace),e.ColorNumber.map(Number),Ie.string(",").skip(Ie.optWhitespace),Ie.regex(/0?\.\d+|[01]/).map(Number),((e,t,i,n,s,r,o)=>new fe({R:e/255,G:i/255,B:s/255,A:o}))).wrap(Ie.regex(/\(\s*/),Ie.regex(/\s*\)/)));LinearColorFromAnyColor=e=>Ie.alt(e.LinearColorFromRGBList,e.LinearColorFromHex,e.LinearColorFromRGB,e.LinearColorFromRGBA);UnknownKeys=e=>Ie.seqMap(Ie.regex(/\w*\s*/).skip(Ie.string("(")),Ie.seqMap(e.AttributeName,Ie.string("=").trim(Ie.optWhitespace),e.AttributeAnyValue,((e,t,i)=>t=>le.objectSet(t,e.split("."),i,!0))).trim(Ie.optWhitespace).sepBy(Ie.string(",")).skip(Ie.regex(/,?/).then(Ie.optWhitespace)),Ie.string(")"),((e,t,i)=>{let n={};t.forEach((e=>e(n)));let s=new He(n);return e&&(s.lookbehind=e),s}))}class Ve{static grammar=Oe.createLanguage(new Re);constructor(e,t="",i=",",n=!1,s="=",r=(e=>e.join("."))){this.entityType=e,this.attributePrefix=t,this.attributeSeparator=i,this.trailingSeparator=n,this.attributeValueConjunctionSign=s,this.attributeKeyPrinter=r}deserialize(e){return this.read(e)}serialize(e,t=!1,i=e){return this.write(i,e,t)}read(e){throw new Error("Not implemented")}write(e,t,i){throw new Error("Not implemented")}writeValue(e,t,i,n){const s=le.getType(t),r=re.getSerializer(s);if(!r)throw new Error(`Unknown value type "${s.name}", a serializer must be registered in the SerializerFactory class, check initializeSerializerFactory.js`);return r.write(e,t,n)}subWrite(e,t,i,n){let s="",r=t.concat("");const o=r.length-1,a=i.constructor.attributes,l=a?le.mergeArrays(Object.getOwnPropertyNames(a),Object.getOwnPropertyNames(i)):Object.getOwnPropertyNames(i);for(const t of l){r[o]=t;const a=i[t];if(a?.constructor===Object)s+=(s.length?this.attributeSeparator:"")+this.subWrite(e,r,a,n);else if(void 0!==a&&this.showProperty(e,i,r,a)){const t=le.isSerialized(e,r);s+=(s.length?this.attributeSeparator:"")+this.attributePrefix+this.attributeKeyPrinter(r)+this.attributeValueConjunctionSign+(t?`"${this.writeValue(e,a,r,!0)}"`:this.writeValue(e,a,r,n))}}return this.trailingSeparator&&s.length&&1===r.length&&(s+=this.attributeSeparator),s}showProperty(e,t,i,n){const s=this.entityType.attributes,r=le.objectGet(s,i);return!(r instanceof ae)||!r.ignored&&(!le.equals(r.value,n)||r.showDefault)}}class _e extends Ve{constructor(){super($e," ","\n",!1)}showProperty(e,t,i,n){switch(i.toString()){case"Class":case"Name":case"CustomProperties":return!1}return super.showProperty(e,t,i,n)}read(e){const t=Ve.grammar.Object.parse(e);if(!t.status)throw new Error("Error when trying to parse the object.");return t.value}readMultiple(e){const t=Ve.grammar.MultipleObject.parse(e);if(!t.status)throw new Error("Error when trying to parse the object.");return t.value}write(e,t,i){return`Begin Object Class=${t.Class.path} Name=${this.writeValue(e,t.Name,["Name"],i)}\n${this.subWrite(e,[],t,i)+t.CustomProperties.map((e=>this.attributeSeparator+this.attributePrefix+"CustomProperties "+re.getSerializer(Te).serialize(e))).join("")}\nEnd Object\n`}}class Ge extends ie{static#g=new _e;#b;constructor(e,t,i={}){i.listenOnFocus??=!0,i.unlistenOnTextEdit??=!0,super(e,t,i);let n=this;this.#b=e=>n.copied()}listenEvents(){window.addEventListener("copy",this.#b)}unlistenEvents(){window.removeEventListener("copy",this.#b)}getSerializedText(){return this.blueprint.getNodes(!0).map((e=>Ge.#g.serialize(e.entity,!1))).join("")}copied(){const e=this.getSerializedText();navigator.clipboard.writeText(e)}}class Fe{element;get blueprint(){return this.element.blueprint}#v=[];get inputObjects(){return this.#v}initialize(e){this.element=e}createInputObjects(){return[]}setup(){this.#v.forEach((e=>e.setup()))}cleanup(){this.#v.forEach((e=>e.cleanup()))}willUpdate(e){}update(e){}render(){return B``}firstUpdated(e){}updated(e){}inputSetup(){this.#v=this.createInputObjects()}}class je extends ie{#f;constructor(e,t,i={}){i.activateAnyKey??=!1,i.activationKeys??=[],i.consumeEvent??=!0,i.listenOnFocus??=!0,i.unlistenOnTextEdit??=!0,i.activationKeys instanceof Array||(i.activationKeys=[i.activationKeys]),i.activationKeys=i.activationKeys.map((e=>{if(e instanceof be)return e;if(e.constructor===String){const t=Ve.grammar.KeyBinding.parse(e);if(t.status)return t.value}throw new Error("Unexpected key value")})),super(e,t,i),this.#f=this.options.activationKeys??[];let n=this;this.keyDownHandler=e=>{(this.options.activateAnyKey||n.#f.some((t=>(e=>e.bShift||"LeftShift"==e.Key||"RightShift"==e.Key)(t)==e.shiftKey&&(e=>e.bCtrl||"LeftControl"==e.Key||"RightControl"==e.Key)(t)==e.ctrlKey&&(e=>e.bAlt||"LeftAlt"==e.Key||"RightAlt"==e.Key)(t)==e.altKey&&te.Keys[t.Key]==e.code)))&&(i.consumeEvent&&(e.preventDefault(),e.stopImmediatePropagation()),n.fire(),document.removeEventListener("keydown",n.keyDownHandler),document.addEventListener("keyup",n.keyUpHandler))},this.keyUpHandler=e=>{(this.options.activateAnyKey||n.#f.some((t=>t.bShift&&"Shift"==e.key||t.bCtrl&&"Control"==e.key||t.bAlt&&"Alt"==e.key||t.bCmd&&"Meta"==e.key||te.Keys[t.Key]==e.code)))&&(i.consumeEvent&&e.stopImmediatePropagation(),n.unfire(),document.removeEventListener("keyup",this.keyUpHandler),document.addEventListener("keydown",this.keyDownHandler))}}listenEvents(){document.addEventListener("keydown",this.keyDownHandler)}unlistenEvents(){document.removeEventListener("keydown",this.keyDownHandler)}fire(){}unfire(){}}class Ue extends je{constructor(e,t,i={}){i.activationKeys=te.deleteNodesKeyboardKey,super(e,t,i)}fire(){this.blueprint.removeGraphElement(...this.blueprint.getNodes(!0))}}class Xe extends ie{constructor(e,t,i={}){i.ignoreTranslateCompensate??=!1,i.ignoreScale??=!1,i.movementSpace??=t.getGridDOMElement()??document.documentElement,super(e,t,i),this.movementSpace=i.movementSpace}locationFromEvent(e){const t=le.convertLocation([e.clientX,e.clientY],this.movementSpace,this.options.ignoreScale);return this.options.ignoreTranslateCompensate?t:this.blueprint.compensateTranslation(t)}}class We extends Xe{#y=e=>{e.preventDefault();const t=this.locationFromEvent(e);this.wheel(Math.sign(e.deltaY*te.mouseWheelFactor),t)};#w=e=>e.preventDefault();constructor(e,t,i={}){i.listenOnFocus=!0,i.strictTarget??=!1,super(e,t,i),this.strictTarget=i.strictTarget}listenEvents(){this.movementSpace.addEventListener("wheel",this.#y,!1),this.movementSpace.parentElement?.addEventListener("wheel",this.#w)}unlistenEvents(){this.movementSpace.removeEventListener("wheel",this.#y,!1),this.movementSpace.parentElement?.removeEventListener("wheel",this.#w)}wheel(e,t){}}class Ye extends We{#E=!1;get enableZoonIn(){return this.#E}set enableZoonIn(e){(e=Boolean(e))!=this.#E&&(this.#E=e)}wheel(e,t){let i=this.blueprint.getZoom();e=-e,!this.enableZoonIn&&0==i&&e>0||(i+=e,this.blueprint.setZoom(i,t))}}class qe extends je{#S;constructor(e,t,i={}){i.activationKeys=te.enableZoomIn,super(e,t,i)}fire(){this.#S=this.blueprint.getInputObject(Ye),this.#S.enableZoonIn=!0}unfire(){this.#S.enableZoonIn=!1}}class Ke extends je{constructor(e,t,i={}){i.activationKeys=te.selectAllKeyboardKey,super(e,t,i)}fire(){this.blueprint.selectAll()}}class Ze extends Q{static properties={};#P=[];#i;get blueprint(){return this.#i}set blueprint(e){this.#i=e}#C;get entity(){return this.#C}set entity(e){this.#C=e}#k;get template(){return this.#k}isInitialized=!1;isSetup=!1;inputObjects=[];initialize(e,t){this.requestUpdate(),this.#C=e,this.#k=t,this.#k.initialize(this),this.isConnected&&this.updateComplete.then((()=>this.setup())),this.isInitialized=!0}connectedCallback(){super.connectedCallback(),this.blueprint=this.closest("ueb-blueprint"),this.isInitialized&&(this.requestUpdate(),this.updateComplete.then((()=>this.setup())))}disconnectedCallback(){super.disconnectedCallback(),this.isSetup&&this.updateComplete.then((()=>this.cleanup()))}createRenderRoot(){return this}shouldUpdate(e){return this.isInitialized&&this.isConnected}setup(){this.template.setup(),this.isSetup=!0}cleanup(){this.template.cleanup(),this.isSetup=!1}willUpdate(e){super.willUpdate(e),this.template.willUpdate(e)}update(e){super.update(e),this.template.update(e)}render(){return this.template.render()}firstUpdated(e){super.firstUpdated(e),this.template.firstUpdated(e),this.template.inputSetup()}updated(e){super.updated(e),this.template.updated(e);for(const t of this.#P)t(e);this.#P=[]}addNextUpdatedCallbacks(e,t=!1){this.#P.push(e),t&&this.requestUpdate()}isSameGraph(e){return this.blueprint&&this.blueprint==e?.blueprint}getInputObject(e){return this.template.inputObjects.find((t=>t.constructor==e))}}class Je extends Ze{static properties={...super.properties,locationX:{type:Number,attribute:!1},locationY:{type:Number,attribute:!1},sizeX:{type:Number,attribute:!1},sizeY:{type:Number,attribute:!1}};static dragEventName=te.dragEventName;static dragGeneralEventName=te.dragGeneralEventName;constructor(){super(),this.locationX=0,this.locationY=0,this.sizeX=0,this.sizeY=0}computeSizes(){const e=1/this.blueprint.getScale(),t=this.getBoundingClientRect();this.sizeX=t.width*e,this.sizeY=t.height*e}firstUpdated(e){super.firstUpdated(e),this.computeSizes()}setLocation([e,t],i=!0){const n=[e-this.locationX,t-this.locationY];if(this.locationX=e,this.locationY=t,this.blueprint&&i){const e=new CustomEvent(this.constructor.dragEventName,{detail:{value:n},bubbles:!1,cancelable:!0});this.dispatchEvent(e)}}addLocation([e,t],i=!0){this.setLocation([this.locationX+e,this.locationY+t],i)}acknowledgeDrag(e){const t=new CustomEvent(this.constructor.dragGeneralEventName,{detail:{value:e},bubbles:!0,cancelable:!0});this.dispatchEvent(t)}snapToGrid(){const e=le.snapToGrid([this.locationX,this.locationY],te.gridSize);this.locationX==e[0]&&this.locationY==e[1]||this.setLocation(e)}topBoundary(e=!1){return this.template.topBoundary(e)}rightBoundary(e=!1){return this.template.rightBoundary(e)}bottomBoundary(e=!1){return this.template.bottomBoundary(e)}leftBoundary(e=!1){return this.template.leftBoundary(e)}}class Qe extends Xe{#x=e=>{if(this.blueprint.setFocused(!0),e.button===this.options.clickButton)this.options.strictTarget&&e.target!=e.currentTarget||(this.options.consumeEvent&&e.stopImmediatePropagation(),this.#N.addEventListener("mousemove",this.#L),document.addEventListener("mouseup",this.#T),this.clickedPosition=this.locationFromEvent(e),this.blueprint.mousePosition[0]=this.clickedPosition[0],this.blueprint.mousePosition[1]=this.clickedPosition[1],this.target instanceof Je&&(this.clickedOffset=[this.clickedPosition[0]-this.target.locationX,this.clickedPosition[1]-this.target.locationY]),this.clicked(this.clickedPosition));else this.options.exitAnyButton||this.#T(e)};#L=e=>{this.options.consumeEvent&&e.stopImmediatePropagation(),this.#N.removeEventListener("mousemove",this.#L),this.#N.addEventListener("mousemove",this.#A);const t=this.getEvent(te.trackingMouseEventName.begin);this.#M=0==this.target.dispatchEvent(t);const i=this.locationFromEvent(e);this.lastLocation=le.snapToGrid(this.clickedPosition,this.stepSize),this.startDrag(i),this.started=!0};#A=e=>{this.options.consumeEvent&&e.stopImmediatePropagation();const t=this.locationFromEvent(e),i=[e.movementX,e.movementY];this.dragTo(t,i),this.#M&&(this.blueprint.mousePosition=this.locationFromEvent(e))};#T=e=>{if(!this.options.exitAnyButton||e.button==this.options.clickButton){if(this.options.consumeEvent&&e.stopImmediatePropagation(),this.#N.removeEventListener("mousemove",this.#L),this.#N.removeEventListener("mousemove",this.#A),document.removeEventListener("mouseup",this.#T),this.started&&this.endDrag(),this.unclicked(),this.#M){const e=this.getEvent(te.trackingMouseEventName.end);this.target.dispatchEvent(e),this.#M=!1}this.started=!1}};#M=!1;#N;#$;clickedOffset=[0,0];clickedPosition=[0,0];lastLocation=[0,0];started=!1;stepSize=1;constructor(e,t,i={}){i.clickButton??=0,i.consumeEvent??=!0,i.draggableElement??=e,i.exitAnyButton??=!0,i.moveEverywhere??=!1,i.movementSpace??=t?.getGridDOMElement(),i.repositionOnClick??=!1,i.strictTarget??=!1,super(e,t,i),this.stepSize=parseInt(i?.stepSize??te.gridSize),this.#N=this.options.moveEverywhere?document.documentElement:this.movementSpace,this.#$=this.options.draggableElement,this.listenEvents()}listenEvents(){super.listenEvents(),this.#$.addEventListener("mousedown",this.#x),2==this.options.clickButton&&this.#$.addEventListener("contextmenu",(e=>e.preventDefault()))}unlistenEvents(){super.unlistenEvents(),this.#$.removeEventListener("mousedown",this.#x)}getEvent(e){return new CustomEvent(e,{detail:{tracker:this},bubbles:!0,cancelable:!0})}clicked(e){}startDrag(e){}dragTo(e,t){}endDrag(){}unclicked(e){}}class et extends Qe{startDrag(){this.blueprint.scrolling=!0}dragTo(e,t){this.blueprint.scrollDelta([-t[0],-t[1]])}endDrag(){this.blueprint.scrolling=!1}}class tt extends Xe{#D=null;#B;#O;#H;constructor(e,t,i={}){i.listenOnFocus=!0,super(e,t,i);let n=this;this.#B=e=>{e.preventDefault(),n.blueprint.mousePosition=n.locationFromEvent(e)},this.#O=e=>{n.#D||(e.preventDefault(),this.#D=e.detail.tracker,n.unlistenMouseMove())},this.#H=e=>{n.#D==e.detail.tracker&&(e.preventDefault(),n.#D=null,n.listenMouseMove())}}listenMouseMove(){this.target.addEventListener("mousemove",this.#B)}unlistenMouseMove(){this.target.removeEventListener("mousemove",this.#B)}listenEvents(){this.listenMouseMove(),this.blueprint.addEventListener(te.trackingMouseEventName.begin,this.#O),this.blueprint.addEventListener(te.trackingMouseEventName.end,this.#H)}unlistenEvents(){this.unlistenMouseMove(),this.blueprint.removeEventListener(te.trackingMouseEventName.begin,this.#O),this.blueprint.removeEventListener(te.trackingMouseEventName.end,this.#H)}}class it{static#z=new Map;static registerElement(e,t){it.#z.set(e,t)}static getConstructor(e){return it.#z.get(e)}}class nt extends ie{static#g=new _e;#I;constructor(e,t,i={}){i.listenOnFocus??=!0,i.unlistenOnTextEdit??=!0,super(e,t,i);let n=this;this.#I=e=>n.pasted(e.clipboardData.getData("Text"))}listenEvents(){window.addEventListener("paste",this.#I)}unlistenEvents(){window.removeEventListener("paste",this.#I)}pasted(e){let t=0,i=0,n=0,s=nt.#g.readMultiple(e).map((e=>{let s=it.getConstructor("ueb-node").newObject(e);return t+=s.locationY,i+=s.locationX,++n,s}));t/=n,i/=n,s.length>0&&this.blueprint.unselectAll();let r=this.blueprint.mousePosition;return s.forEach((e=>{const n=[r[0]-i,r[1]-t];e.addLocation(n),e.snapToGrid(),e.setSelected(!0)})),this.blueprint.addGraphElement(...s),!0}}class st extends Qe{constructor(e,t,i){super(e,t,i),this.selectorElement=this.blueprint.template.selectorElement}startDrag(){this.selectorElement.beginSelect(this.clickedPosition)}dragTo(e,t){this.selectorElement.selectTo(e)}endDrag(){this.started&&this.selectorElement.endSelect()}unclicked(){this.started||this.blueprint.unselectAll()}}class rt extends ie{#R;constructor(e,t,i={}){i.listenOnFocus=!0,super(e,t,i);let n=this;this.#R=e=>n.clickedSomewhere(e.target),this.blueprint.focus&&document.addEventListener("click",this.#R)}clickedSomewhere(e){e.closest("ueb-blueprint")||this.blueprint.setFocused(!1)}listenEvents(){document.addEventListener("click",this.#R)}unlistenEvents(){document.removeEventListener("click",this.#R)}}class ot extends Fe{static styleVariables={"--ueb-font-size":`${te.fontSize}`,"--ueb-grid-axis-line-color":`${te.gridAxisLineColor}`,"--ueb-grid-expand":`${te.expandGridSize}px`,"--ueb-grid-line-color":`${te.gridLineColor}`,"--ueb-grid-line-width":`${te.gridLineWidth}px`,"--ueb-grid-set-line-color":`${te.gridSetLineColor}`,"--ueb-grid-set":`${te.gridSet}`,"--ueb-grid-size":`${te.gridSize}px`,"--ueb-link-min-width":`${te.linkMinWidth}`,"--ueb-node-radius":`${te.nodeRadius}px`};#V=new ResizeObserver((e=>{const t=e.find((e=>e.target===this.viewportElement))?.devicePixelContentBoxSize?.[0];t&&(this.viewportSize[0]=t.inlineSize,this.viewportSize[1]=t.blockSize)}));headerElement;overlayElement;viewportElement;selectorElement;gridElement;linksContainerElement;nodesContainerElement;viewportSize=[0,0];initialize(e){super.initialize(e),this.element.style.cssText=Object.entries(ot.styleVariables).map((([e,t])=>`${e}:${t};`)).join("")}setup(){super.setup(),this.#V.observe(this.viewportElement,{box:"device-pixel-content-box"});const e=this.viewportElement.getBoundingClientRect();this.viewportSize[0]=e.width,this.viewportSize[1]=e.height}cleanup(){super.cleanup(),this.#V.unobserve(this.viewportElement)}createInputObjects(){return[...super.createInputObjects(),new Ge(this.element.getGridDOMElement(),this.element),new nt(this.element.getGridDOMElement(),this.element),new Ue(this.element.getGridDOMElement(),this.element),new Ke(this.element.getGridDOMElement(),this.element),new Ye(this.element.getGridDOMElement(),this.element),new st(this.element.getGridDOMElement(),this.element,{clickButton:0,exitAnyButton:!0,moveEverywhere:!0}),new et(this.element.getGridDOMElement(),this.element,{clickButton:2,exitAnyButton:!1,moveEverywhere:!0}),new rt(this.element.getGridDOMElement(),this.element),new tt(this.element.getGridDOMElement(),this.element),new qe(this.element.getGridDOMElement(),this.element)]}render(){return B`<div class="ueb-viewport-header"><div class="ueb-viewport-zoom">Zoom ${0==this.element.zoom?"1:1":(this.element.zoom>0?"+":"")+this.element.zoom}</div></div><div class="ueb-viewport-overlay"></div><div class="ueb-viewport-body"><div class="ueb-grid" style="--ueb-additional-x:${Math.round(this.element.translateX)}--ueb-additional-y:${Math.round(this.element.translateY)}--ueb-translate-x:${Math.round(this.element.translateX)}--ueb-translate-y:${Math.round(this.element.translateY)}"><div class="ueb-grid-content"><div data-links></div><div data-nodes></div><ueb-selector></ueb-selector></div></div></div>`}firstUpdated(e){super.firstUpdated(e),this.headerElement=this.element.querySelector(".ueb-viewport-header"),this.overlayElement=this.element.querySelector(".ueb-viewport-overlay"),this.viewportElement=this.element.querySelector(".ueb-viewport-body"),this.selectorElement=this.element.querySelector("ueb-selector"),this.gridElement=this.viewportElement.querySelector(".ueb-grid"),this.linksContainerElement=this.element.querySelector("[data-links]"),this.linksContainerElement.append(...this.element.getLinks()),this.nodesContainerElement=this.element.querySelector("[data-nodes]"),this.nodesContainerElement.append(...this.element.getNodes()),this.viewportElement.scroll(te.expandGridSize,te.expandGridSize)}willUpdate(e){super.willUpdate(e),this.headerElement&&e.has("zoom")&&(this.headerElement.classList.add("ueb-zoom-changed"),this.headerElement.addEventListener("animationend",(()=>this.headerElement.classList.remove("ueb-zoom-changed"))))}updated(e){if(super.updated(e),(e.has("scrollX")||e.has("scrollY"))&&this.viewportElement.scroll(this.element.scrollX,this.element.scrollY),e.has("zoom")){const t=e.get("zoom"),i=Math.min(t,this.element.zoom),n=Math.max(t,this.element.zoom),s=le.range(i,n),r=e=>`ueb-zoom-${e}`;t<this.element.zoom?(this.element.classList.remove(...s.filter((e=>e<0)).map(r)),this.element.classList.add(...s.filter((e=>e>0)).map(r))):(this.element.classList.remove(...s.filter((e=>e>0)).map(r)),this.element.classList.add(...s.filter((e=>e<0)).map(r)))}}getCommentNodes(e=!1){return this.element.querySelectorAll(`ueb-node[data-type="${te.nodeType.comment}"]${e?'[data-selected="true"]':""}`)}getPin(e){return this.element.querySelector(`ueb-node[data-name="${e.objectName}"] ueb-pin[data-id="${e.pinGuid}"]`)}isPointVisible(e,t){return!1}gridTopVisibilityBoundary(){return this.blueprint.scrollY-this.blueprint.translateY}gridRightVisibilityBoundary(){return this.gridLeftVisibilityBoundary()+this.viewportSize[0]}gridBottomVisibilityBoundary(){return this.gridTopVisibilityBoundary()+this.viewportSize[1]}gridLeftVisibilityBoundary(){return this.blueprint.scrollX-this.blueprint.translateX}}class at extends Ze{static properties={...super.properties,fromX:{type:Number,attribute:!1},fromY:{type:Number,attribute:!1},toX:{type:Number,attribute:!1},toY:{type:Number,attribute:!1}};constructor(){super(),this.fromX=0,this.fromY=0,this.toX=0,this.toY=0}setBothLocations([e,t]){this.fromX=e,this.fromY=t,this.toX=e,this.toY=t}addSourceLocation([e,t]){this.fromX+=e,this.fromY+=t}addDestinationLocation([e,t]){this.toX+=e,this.toY+=t}}class lt extends Fe{update(e){super.update(e);const[t,i,n,s]=[Math.round(this.element.fromX),Math.round(this.element.fromY),Math.round(this.element.toX),Math.round(this.element.toY)],[r,o,a,l]=[Math.min(t,n),Math.min(i,s),Math.abs(t-n),Math.abs(i-s)];(e.has("fromX")||e.has("toX"))&&(this.element.style.left=`${r}px`,this.element.style.width=`${a}px`),(e.has("fromY")||e.has("toY"))&&(this.element.style.top=`${o}px`,this.element.style.height=`${l}px`)}}class ut extends $e{constructor(e={},t){super(e,!0),this.Class=new ce("/Script/BlueprintGraph.K2Node_Knot"),this.Name="K2Node_Knot";const i=new Te({PinName:"InputPin"},!0),n=new Te({PinName:"OutputPin",Direction:"EGPD_Output"},!0);t&&(i.copyTypeFrom(t),n.copyTypeFrom(t)),this.CustomProperties=[i,n]}}class ct extends Xe{static ignoreDbClick=e=>{};#_=e=>{this.options.strictTarget&&e.target!==e.currentTarget||(this.options.consumeEvent&&e.stopImmediatePropagation(),this.clickedPosition=this.locationFromEvent(e),this.blueprint.mousePosition[0]=this.clickedPosition[0],this.blueprint.mousePosition[1]=this.clickedPosition[1],this.dbclicked(this.clickedPosition))};#G;get onDbClick(){return this.#G}set onDbClick(e){this.#G=e}clickedPosition=[0,0];constructor(e,t,i={},n=ct.ignoreDbClick){i.consumeEvent??=!0,i.strictTarget??=!1,super(e,t,i),this.#G=n,this.listenEvents()}listenEvents(){this.target.addEventListener("dblclick",this.#_)}unlistenEvents(){this.target.removeEventListener("dblclick",this.#_)}dbclicked(e){this.onDbClick(e)}}class ht extends lt{static decreasingValue(e,t){const i=-e*t[0]**2,n=t[1]-i/t[0];return e=>i/e+n}static clampedLine(e,t){if(e[0]>t[0]){const i=e;e=t,t=i}const i=(t[1]-e[1])/(t[0]-e[0]),n=e[1]-i*e[0];return s=>s<e[0]?e[1]:s>t[0]?t[1]:i*s+n}static c1DecreasingValue=ht.decreasingValue(-.15,[100,15]);static c2DecreasingValue=ht.decreasingValue(-.06,[500,130]);static c2Clamped=ht.clampedLine([0,100],[200,30]);#F=e=>{const t=new ut({},this.element.sourcePin.entity),i=it.getConstructor("ueb-node").newObject(t);i.setLocation(this.blueprint.snapToGrid(e)),this.blueprint.addGraphElement(i);const n=it.getConstructor("ueb-link").newObject(i.template.outputPin,this.element.destinationPin);this.element.destinationPin=i.template.inputPin,this.blueprint.addGraphElement(n)};createInputObjects(){return[...super.createInputObjects(),new ct(this.element.querySelector(".ueb-link-area"),this.blueprint,void 0,(e=>this.#F(e)))]}willUpdate(e){super.willUpdate(e);const t=this.element.sourcePin,i=this.element.destinationPin;if(e.has("fromX")||e.has("toX")){const e=t?.nodeElement.getType()==te.nodeType.knot,n=i?.nodeElement.getType()==te.nodeType.knot;!e||i&&!n||(t?.isInput()&&this.element.toX>this.element.fromX+te.distanceThreshold?this.element.sourcePin=t.nodeElement.template.outputPin:t?.isOutput()&&this.element.toX<this.element.fromX-te.distanceThreshold&&(this.element.sourcePin=t.nodeElement.template.inputPin)),!n||t&&!e||(i?.isInput()&&this.element.toX<this.element.fromX+te.distanceThreshold?this.element.destinationPin=i.nodeElement.template.outputPin:i?.isOutput()&&this.element.toX>this.element.fromX-te.distanceThreshold&&(this.element.destinationPin=i.nodeElement.template.inputPin))}const n=Math.max(Math.abs(this.element.fromX-this.element.toX),1);Math.max(Math.abs(this.element.fromY-this.element.toY),1);const s=Math.max(n,te.linkMinWidth),r=n/s,o=this.element.originatesFromInput?this.element.fromX<this.element.toX:this.element.toX<this.element.fromX;this.element.startPixels=n<s?(s-n)/2:0,this.element.startPercentage=o?this.element.startPixels+100*r:this.element.startPixels;const a=this.element.startPercentage+(o?ht.c1DecreasingValue(s):10)*r;let l=ht.c2Clamped(o?-n:n)+this.element.startPercentage;l=Math.min(l,ht.c2DecreasingValue(s)),this.element.svgPathD=te.linkRightSVGPath(this.element.startPercentage,a,l)}update(e){super.update(e),e.has("originatesFromInput")&&this.element.style.setProperty("--ueb-from-input",this.element.originatesFromInput?"1":"0");const t=this.element.sourcePin??this.element.destinationPin;t&&this.element.style.setProperty("--ueb-link-color-rgb",le.printLinearColor(t.color)),this.element.style.setProperty("--ueb-y-reflected",""+(this.element.fromY>this.element.toY?1:0)),this.element.style.setProperty("--ueb-start-percentage",`${Math.round(this.element.startPercentage)}%`),this.element.style.setProperty("--ueb-link-start",`${Math.round(this.element.startPixels)}`)}render(){const e=`ueb-id-${Math.floor(1e12*Math.random())}`;return B`<svg version="1.2" baseProfile="tiny" width="100%" height="100%" viewBox="0 0 100 100" preserveAspectRatio="none"><g class="ueb-link-area"><path id="${e}" fill="none" vector-effect="non-scaling-stroke" d="${this.element.svgPathD}"/><use href="#${e}" pointer-events="stroke" stroke-width="20"/></g></svg> ${this.element.linkMessageIcon||this.element.linkMessageText?B`<div class="ueb-link-message">${this.element.linkMessageIcon!==H?B`<span class="ueb-link-message-icon">${this.element.linkMessageIcon}</span>`:H} ${this.element.linkMessageText!==H?B`<span class="ueb-link-message-text">${this.element.linkMessageText}</span>`:H}</div>`:H}`}}class dt{static branchNode=B`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M11 2H6C5.44772 2 5 2.44772 5 3V13C5 13.5523 5.44772 14 6 14H11V12H7V4H11V2Z" fill="white"/><rect x="1" y="7" width="4" height="2" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M11 6L15 3L11 0V6Z" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M11 16L15 13L11 10V16Z" fill="white"/></svg>`;static breakStruct=B`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M12 14L10 12L11 11L13 13L14 12L14 15L11 15L12 14Z" fill="white"/><path d="M13 3L11 5L10 4L12 2L11 1L14 1L14 4L13 3Z" fill="white"/><path d="M7.975 6H3.025C1.90662 6 1 6.90662 1 8.025V8.475C1 9.59338 1.90662 10.5 3.025 10.5H7.975C9.09338 10.5 10 9.59338 10 8.475V8.025C10 6.90662 9.09338 6 7.975 6Z" fill="white"/></svg>`;static cast=B`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 12L16 7.5L12 3V12Z" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M0 11L4 7.5L0 4V11Z" fill="white"/><rect opacity="0.5" x="5" y="6" width="1" height="3" fill="white"/><rect opacity="0.5" x="7" y="6" width="1" height="3" fill="white"/><rect opacity="0.5" x="9" y="6" width="1" height="3" fill="white"/><rect x="9" y="6" width="3" height="3" fill="white"/></svg>`;static close=B`<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><line x1="2" y1="2" x2="30" y2="30" stroke="currentColor" stroke-width="4"/><line x1="30" y1="2" x2="2" y2="30" stroke="currentColor" stroke-width="4"/></svg>`;static correct=B`<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path fill="#2da800" d="M 2 16 L 14 30 L 30 2 L 13 22 Z"/></svg>`;static doN=B`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 12V8H9V4L16 10L9 16V12H1Z" fill="white"/><path d="M7 6L6 6L4 2.66667V6H3V1H4L6 4.33333V1H7V6Z" fill="white"/></svg>`;static execPin=B`<svg viewBox="-2 0 16 16" xmlns="http://www.w3.org/2000/svg"><path class="ueb-pin-tofill" stroke-width="1.25" stroke="white" fill="none" d="M 2 1 a 2 2 0 0 0 -2 2 v 10 a 2 2 0 0 0 2 2 h 4 a 2 2 0 0 0 1.519 -0.698 l 4.843 -5.651 a 1 1 0 0 0 0 -1.302 L 7.52 1.7 a 2 2 0 0 0 -1.519 -0.698 z"/></svg>`;static expandIcon=B`<svg fill="currentColor" viewBox="4 4 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M 16.003 18.626 l 7.081 -7.081 L 25 13.46 l -8.997 8.998 -9.003 -9 1.917 -1.916 z"/></svg>`;static forEachLoop=B`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M4 2C1.8 2 0 3.8 0 6V9C0 11.2 2 13 4 13H10V11H5C3.2 11 2 9.7 2 8V7C2 5.63882 2.76933 4.53408 4 4.14779V2ZM12 4C13.8 4 14 5.3 14 7V8C14 8.8 13.7 9.5 13.3 10L15.2 11.4C15.7 10.7 16 9.9 16 9V6C16 3.8 14.2 2 12 2V4Z" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M8 16L13 12L8 8V16Z" fill="white"/><rect x="5" y="1" width="1" height="4" fill="white"/><rect x="7" y="1" width="1" height="4" fill="white"/><rect x="9" y="1" width="1" height="4" fill="white"/><rect x="11" y="2" width="1" height="2" fill="white"/></svg>`;static functionSymbol=B`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.72002 6.0699C9.88111 4.96527 10.299 3.9138 10.94 2.99991C10.94 2.99991 10.94 3.05991 10.94 3.08991C10.94 3.36573 11.0496 3.63026 11.2446 3.8253C11.4397 4.02033 11.7042 4.12991 11.98 4.12991C12.2558 4.12991 12.5204 4.02033 12.7154 3.8253C12.9105 3.63026 13.02 3.36573 13.02 3.08991C13.0204 2.90249 12.9681 2.71873 12.8691 2.5596C12.7701 2.40047 12.6283 2.27237 12.46 2.18991H12.37C11.8725 2.00961 11.3275 2.00961 10.83 2.18991C9.21002 2.63991 8.58002 4.99991 8.58002 4.99991L8.40002 5.1199H5.40002L5.15002 6.1199H8.27002L7.27002 11.4199C7.11348 12.0161 6.79062 12.5555 6.33911 12.9751C5.8876 13.3948 5.32607 13.6773 4.72002 13.7899C4.78153 13.655 4.81227 13.5081 4.81002 13.3599C4.81002 13.0735 4.69624 12.7988 4.4937 12.5962C4.29116 12.3937 4.01646 12.2799 3.73002 12.2799C3.44359 12.2799 3.16889 12.3937 2.96635 12.5962C2.76381 12.7988 2.65002 13.0735 2.65002 13.3599C2.66114 13.605 2.75692 13.8386 2.92104 14.021C3.08517 14.2033 3.30746 14.3231 3.55002 14.3599C7.91002 15.1999 8.55002 11.4499 8.55002 11.4499L9.55002 7.05991H12.55L12.8 6.05991H9.64002L9.72002 6.0699Z" fill="currentColor"/></svg>`;static genericPin=B`<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><circle class="ueb-pin-tofill" cx="16" cy="16" r="14" fill="black" stroke="currentColor" stroke-width="5"/><path d="M 34 6 L 34 26 L 42 16 Z" fill="currentColor"/></svg>`;static loop=B`<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><defs><style>.cls-1{fill:#fff;fill-rule:evenodd}.cls-2{fill:none}</style></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_4" data-name="Layer 4"><path class="cls-1" d="M16,2H4A4,4,0,0,0,0,6v4a4.14,4.14,0,0,0,4,4H9v5l8-6L9,7v5H4.5A2.36,2.36,0,0,1,2,9.5v-3A2.36,2.36,0,0,1,4.5,4h11A2.36,2.36,0,0,1,18,6.5V9a3,3,0,0,1-.69,2l1.88,1.41A4,4,0,0,0,20,10V6A4,4,0,0,0,16,2Z"/><rect class="cls-2" width="20" height="20"/></g></g></svg>`;static macro=B`<svg viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8 2.92L10 12.29L14.55 2.61C14.662 2.4259 14.8189 2.27332 15.0061 2.16661C15.1933 2.05989 15.4045 2.00256 15.62 2H19L18.66 2.89C18.66 2.89 17.17 3.04 17.11 3.63C17.05 4.22 16 15.34 15.93 16.13C15.86 16.92 17.33 17.13 17.33 17.13L17.17 17.99H13.84C13.7241 17.9764 13.612 17.9399 13.5103 17.8826C13.4086 17.8253 13.3194 17.7484 13.2477 17.6562C13.176 17.5641 13.1234 17.4586 13.0929 17.346C13.0624 17.2333 13.0546 17.1157 13.07 17L14.43 5.52L10 14.57C9.8 15.03 9.07 15.72 8.63 15.71H7.75L6.05 4.86L3.54 17.39C3.51941 17.5514 3.44327 17.7005 3.32465 17.8118C3.20603 17.9232 3.05235 17.9897 2.89 18H1L1.11 17.09C1.11 17.09 2.21 17.09 2.3 16.69C2.39 16.29 5.3 3.76 5.41 3.32C5.52 2.88 4.19 2.81 4.19 2.81L4.46 2H6.62C7.09 2 7.92 2.38 8 2.92Z" fill="white"/></svg>`;static makeArray=B`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15 4H13V6H15V4Z" fill="white"/><path d="M15 7H13V9H15V7Z" fill="white"/><path d="M15 10H13V12H15V10Z" fill="white"/><path d="M12 4H10V6H12V4Z" fill="white"/><path d="M12 7H10V9H12V7Z" fill="white"/><path d="M12 10H10V12H12V10Z" fill="white"/><path d="M9 4H7V6H9V4Z" fill="white"/><path d="M9 7H7V9H9V7Z" fill="white"/><path d="M9 10H7V12H9V10Z" fill="white"/><path d="M3 4L1 1.99995L2 1L4 3L5 1.99995L5 5L2 5L3 4Z" fill="white"/><path d="M4 13L1.99995 15L1 14L3 12L1.99995 11L5 11L5 14L4 13Z" fill="white"/></svg>`;static makeMap=B`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M15 4H10V6H15V4Z" fill="white"/><path d="M15 7H10V9H15V7Z" fill="white"/><path d="M15 10H10V12H15V10Z" fill="white"/><path d="M9 4H7V6H9V4Z" fill="white"/><path d="M9 7H7V9H9V7Z" fill="white"/><path d="M9 10H7V12H9V10Z" fill="white"/><path d="M3 4L1 1.99995L2 1L4 3L5 1.99995L5 5L2 5L3 4Z" fill="white"/><path d="M4 13L1.99995 15L1 14L3 12L1.99995 11L5 11L5 14L4 13Z" fill="white"/></svg>`;static makeStruct=B`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M3 4L1 1.99995L2 1L4 3L5 1.99995L5 5L2 5L3 4Z" fill="white"/><path d="M4 13L1.99995 15L1 14L3 12L1.99995 11L5 11L5 14L4 13Z" fill="white"/><path d="M12.975 6H8.025C6.90662 6 6 6.90662 6 8.025V8.475C6 9.59338 6.90662 10.5 8.025 10.5H12.975C14.0934 10.5 15 9.59338 15 8.475V8.025C15 6.90662 14.0934 6 12.975 6Z" fill="white"/></svg>`;static referencePin=B`<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><polygon class="ueb-pin-tofill" points="4 16 16 4 28 16 16 28" stroke="currentColor" stroke-width="5"/></svg>`;static reject=B`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path stroke="red" stroke-width="2" stroke-miterlimit="10" d="M12.5 3.5L3.5 12.5"/><path fill="red" d="M8 2C11.3 2 14 4.7 14 8C14 11.3 11.3 14 8 14C4.7 14 2 11.3 2 8C2 4.7 4.7 2 8 2ZM8 0.5C3.9 0.5 0.5 3.9 0.5 8C0.5 12.1 3.9 15.5 8 15.5C12.1 15.5 15.5 12.1 15.5 8C15.5 3.9 12.1 0.5 8 0.5Z"/></svg>`;static select=B`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="1" y="2" width="6" height="2" fill="white"/><rect x="10" y="7" width="3" height="2" fill="white"/><path d="M12 5L15 8L12 11V5Z" fill="white"/><rect x="1" y="7" width="8" height="2" fill="white"/><rect x="5" y="4" width="2" height="9" fill="white"/><rect x="1" y="12" width="6" height="2" fill="white"/></svg>`;static sequence=B`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="2" width="5" height="2" fill="white"/><rect y="7" width="8" height="2" fill="white"/><rect x="3" y="4" width="2" height="9" fill="white"/><rect x="3" y="12" width="5" height="2" fill="white"/><rect x="10" y="2" width="6" height="2" fill="white"/><rect x="10" y="7" width="4" height="2" fill="white"/><rect x="10" y="12" width="2" height="2" fill="white"/></svg>`}class pt extends at{static properties={...super.properties,source:{type:String,reflect:!0},destination:{type:String,reflect:!0},dragging:{type:Boolean,attribute:"data-dragging",converter:le.booleanConverter,reflect:!0},originatesFromInput:{type:Boolean,attribute:!1},svgPathD:{type:String,attribute:!1},linkMessageIcon:{type:String,attribute:!1},linkMessageText:{type:String,attribute:!1}};#j;get sourcePin(){return this.#j}set sourcePin(e){this.#U(e,!1)}#X;get destinationPin(){return this.#X}set destinationPin(e){this.#U(e,!0)}#W=()=>this.remove();#Y=e=>this.addSourceLocation(e.detail.value);#q=e=>this.addDestinationLocation(e.detail.value);#K=e=>this.setSourceLocation();#Z=e=>this.setDestinationLocation();linkMessageIcon=H;linkMessageText=H;pathElement;constructor(){super(),this.source=null,this.destination=null,this.dragging=!1,this.originatesFromInput=!1,this.startPercentage=0,this.svgPathD="",this.startPixels=0}static newObject(e,t){const i=new pt;return i.initialize(e,t),i}initialize(e,t){super.initialize({},new ht),e&&(this.sourcePin=e,t||(this.toX=this.fromX,this.toY=this.fromY)),t&&(this.destinationPin=t,e||(this.fromX=this.toX,this.fromY=this.toY)),this.#J()}#U(e,t){const i=()=>t?this.destinationPin:this.sourcePin;if(i()!=e){if(i()){const e=i().getNodeElement();e.removeEventListener(te.nodeDeleteEventName,this.#W),e.removeEventListener(te.nodeDragEventName,t?this.#q:this.#Y),e.removeEventListener(te.nodeReflowEventName,t?this.#Z:this.#K),this.#Q()}if(t?this.#X=e:this.#j=e,i()){const e=i().getNodeElement();e.addEventListener(te.nodeDeleteEventName,this.#W),e.addEventListener(te.nodeDragEventName,t?this.#q:this.#Y),e.addEventListener(te.nodeReflowEventName,t?this.#Z:this.#K),t?this.setDestinationLocation():(this.setSourceLocation(),this.originatesFromInput=this.sourcePin.isInput()),this.#J()}}}#J(){this.sourcePin&&this.destinationPin&&(this.sourcePin.linkTo(this.destinationPin),this.destinationPin.linkTo(this.sourcePin))}#Q(){this.sourcePin&&this.destinationPin&&(this.sourcePin.unlinkFrom(this.destinationPin),this.destinationPin.unlinkFrom(this.sourcePin))}cleanup(){super.cleanup(),this.#Q(),this.sourcePin=null,this.destinationPin=null}setSourceLocation(e=null){if(null==e){const t=this;if(!this.hasUpdated||!this.sourcePin.hasUpdated)return void Promise.all([this.updateComplete,this.sourcePin.updateComplete]).then((()=>t.setSourceLocation()));e=this.sourcePin.template.getLinkLocation()}const[t,i]=e;this.fromX=t,this.fromY=i}setDestinationLocation(e=null){if(null==e){const t=this;if(!this.hasUpdated||!this.destinationPin.hasUpdated)return void Promise.all([this.updateComplete,this.destinationPin.updateComplete]).then((()=>t.setDestinationLocation()));e=this.destinationPin.template.getLinkLocation()}this.toX=e[0],this.toY=e[1]}startDragging(){this.dragging=!0}finishDragging(){this.dragging=!1}removeMessage(){this.linkMessageIcon="",this.linkMessageText=""}setMessageConvertType(){this.linkMessageIcon="ueb-icon-conver-type",this.linkMessageText=`Convert ${this.sourcePin.pinType} to ${this.destinationPin.pinType}.`}setMessageCorrect(){this.linkMessageIcon=dt.correct,this.linkMessageText=H}setMessageReplace(){this.linkMessageIcon=dt.correct,this.linkMessageText=H}setMessageDirectionsIncompatible(){this.linkMessageIcon=dt.reject,this.linkMessageText=B`Directions are not compatbile.`}setMessagePlaceNode(){this.linkMessageIcon="ueb-icon-place-node",this.linkMessageText=B`Place a new node.`}setMessageReplaceLink(){this.linkMessageIcon=dt.correct,this.linkMessageText=B`Replace existing input connections.`}setMessageSameNode(){this.linkMessageIcon=dt.reject,this.linkMessageText=B`Both are on the same node.`}setMEssagetypesIncompatible(){this.linkMessageIcon=dt.reject,this.linkMessageText=B`${this.sourcePin.pinType} is not compatible with ${this.destinationPin.pinType}.`}}class mt extends Qe{clicked(e){this.options.repositionOnClick&&(this.target.setLocation(this.stepSize>1?le.snapToGrid(e,this.stepSize):e),this.clickedOffset=[0,0])}dragTo(e,t){const i=[this.target.locationX??this.lastLocation[0],this.target.locationY??this.lastLocation[1]],[n,s]=this.stepSize>1?[le.snapToGrid(e,this.stepSize),le.snapToGrid(i,this.stepSize)]:[e,i];0==(t=[n[0]-this.lastLocation[0],n[1]-this.lastLocation[1]])[0]&&0==t[1]||(t[0]+=s[0]-i[0],t[1]+=s[1]-i[1],this.dragAction(n,t),this.lastLocation=n)}dragAction(e,t){this.target.setLocation([e[0]-this.clickedOffset[0],e[1]-this.clickedOffset[1]])}}class gt extends mt{#ee;#te;#ie;#ne;constructor(e,t,i={}){super(e,t,i),i.onClicked&&(this.#ee=i.onClicked),i.onStartDrag&&(this.#te=i.onStartDrag),i.onDrag&&(this.#ie=i.onDrag),i.onEndDrag&&(this.#ne=i.onEndDrag)}clicked(){super.clicked(),this.#ee?.()}startDrag(){super.startDrag(),this.#te?.()}dragAction(e,t){this.#ie?.(e,t)}endDrag(){super.endDrag(),this.#ne?.()}}class bt extends Fe{getDraggableElement(){return this.element}createDraggableObject(){return new mt(this.element,this.blueprint,{draggableElement:this.getDraggableElement()})}createInputObjects(){return[...super.createInputObjects(),this.createDraggableObject()]}topBoundary(e=!1){return this.element.locationY}rightBoundary(e=!1){return this.element.locationX+this.element.sizeX}bottomBoundary(e=!1){return this.element.locationY+this.element.sizeY}leftBoundary(e=!1){return this.element.locationX}centerInViewport(){const e=Math.min(this.blueprint.template.viewportSize[0]/10,this.blueprint.template.viewportSize[1]/10),t=this.leftBoundary()-this.blueprint.template.gridLeftVisibilityBoundary(),i=this.blueprint.template.gridRightVisibilityBoundary()-this.rightBoundary();let n=Math.max((t+i)/2,e);const s=this.topBoundary()-this.blueprint.template.gridTopVisibilityBoundary(),r=this.blueprint.template.gridBottomVisibilityBoundary()-this.bottomBoundary();const o=[t-n,s-Math.max((s+r)/2,e)];this.blueprint.scrollDelta(o,!0)}}class vt extends bt{update(e){super.update(e),e.has("locationX")&&(this.element.style.left=`${this.element.locationX}px`),e.has("locationY")&&(this.element.style.top=`${this.element.locationY}px`)}}class ft extends mt{startDrag(){this.target.selected||(this.blueprint.unselectAll(),this.target.setSelected(!0))}dragAction(e,t){this.target.acknowledgeDrag(t)}unclicked(){this.started?(this.blueprint.getNodes(!0).forEach((e=>e.boundComments.filter((t=>!e.isInsideComment(t))).forEach((t=>e.unbindFromComment(t))))),this.blueprint.getCommentNodes().forEach((e=>e.template.manageNodesBind()))):(this.blueprint.unselectAll(),this.target.setSelected(!0))}}class yt extends vt{getDraggableElement(){return this.element}createDraggableObject(){return new ft(this.element,this.blueprint,{draggableElement:this.getDraggableElement()})}firstUpdated(e){super.firstUpdated(e),this.element.selected&&!this.element.listeningDrag&&this.element.setSelected(!0)}}class wt extends yt{static#se={[te.nodeType.doN]:dt.doN,[te.nodeType.dynamicCast]:dt.cast,[te.nodeType.executionSequence]:dt.sequence,[te.nodeType.forEachElementInEnum]:dt.loop,[te.nodeType.forEachLoop]:dt.forEachLoop,[te.nodeType.forEachLoopWithBreak]:dt.forEachLoop,[te.nodeType.forLoop]:dt.loop,[te.nodeType.forLoopWithBreak]:dt.loop,[te.nodeType.ifThenElse]:dt.branchNode,[te.nodeType.makeArray]:dt.makeArray,[te.nodeType.makeMap]:dt.makeMap,[te.nodeType.select]:dt.select,[te.nodeType.whileLoop]:dt.loop,default:dt.functionSymbol};#re=!1;toggleAdvancedDisplayHandler=()=>{this.element.toggleShowAdvancedPinDisplay(),this.element.addNextUpdatedCallbacks((()=>this.element.acknowledgeReflow()),!0)};initialize(e){super.initialize(e),this.element.style.setProperty("--ueb-node-color",this.getColor().cssText)}getColor(){const e=r``,t=r``;switch(this.element.entity.getClass()){case te.nodeType.callFunction:return this.element.entity.bIsPureFunc?t:e;case te.nodeType.makeArray:case te.nodeType.makeMap:case te.nodeType.select:return t;case te.nodeType.macro:case te.nodeType.executionSequence:case te.nodeType.dynamicCast:return r``}return e}render(){const e=this.renderNodeIcon(),t=this.renderNodeName();return B`<div class="ueb-node-border"><div class="ueb-node-wrapper"><div class="ueb-node-top"><div class="ueb-node-name">${e?B`<div class="ueb-node-name-symbol">${e}</div>`:H} ${t?B`<div class="ueb-node-name-text ueb-ellipsis-nowrap-text">${t} ${this.#re&&this.element.entity.FunctionReference.MemberParent?B`<div class="ueb-node-subtitle-text ueb-ellipsis-nowrap-text">Target is ${le.formatStringName(this.element.entity.FunctionReference.MemberParent.getName())}</div>`:H}</div>`:H}</div></div><div class="ueb-node-content"><div class="ueb-node-inputs"></div><div class="ueb-node-outputs"></div></div>${"DevelopmentOnly"==this.element.enabledState?.toString()?B`<div class="ueb-node-developmentonly"><span class="ueb-node-developmentonly-text">Development Only</span></div>`:H} ${this.element.advancedPinDisplay?B`<div class="ueb-node-expansion" @click="${this.toggleAdvancedDisplayHandler}">${dt.expandIcon}</div>`:H}</div></div>`}renderNodeIcon(){let e=wt.#se[this.element.getType()];return e||(this.element.getNodeDisplayName().startsWith("Break")?dt.breakStruct:this.element.entity.getClass()===te.nodeType.macro?dt.macro:wt.#se.default)}renderNodeName(){return this.element.getNodeDisplayName()}firstUpdated(e){super.firstUpdated(e),this.setupPins(),this.element.updateComplete.then((()=>this.element.acknowledgeReflow()))}setupPins(){const e=this.element.querySelector(".ueb-node-inputs"),t=this.element.querySelector(".ueb-node-outputs");this.element.nodeNameElement=this.element.querySelector(".ueb-node-name-text"),this.element.getPinElements().forEach((i=>{i.isInput()?e.appendChild(i):i.isOutput()&&t.appendChild(i)}))}createPinElements(){return this.element.getPinEntities().filter((e=>!e.isHidden())).map((e=>(this.#re||"Target"!=e.getDisplayName()||(this.#re=!0),it.getConstructor("ueb-pin").newObject(e,void 0,this.element))))}getPinElements(e){return e.querySelectorAll("ueb-pin")}linksChanged(){}}class Et extends wt{#oe=document.createElement("div");#ae=document.createElement("div");#le=document.createElement("div");#ue=document.createElement("div");#ce=document.createElement("div");#he=document.createElement("div");#de=document.createElement("div");#pe=document.createElement("div");initialize(e){super.initialize(e),this.element.classList.add("ueb-resizeable"),this.#oe.classList.add("ueb-resizeable-top"),this.#ae.classList.add("ueb-resizeable-right"),this.#le.classList.add("ueb-resizeable-bottom"),this.#ue.classList.add("ueb-resizeable-left"),this.#ce.classList.add("ueb-resizeable-top-right"),this.#he.classList.add("ueb-resizeable-bottom-right"),this.#de.classList.add("ueb-resizeable-bottom-left"),this.#pe.classList.add("ueb-resizeable-top-left")}update(e){super.update(e),this.element.sizeX>=0&&e.has("sizeX")&&(this.element.style.width=`${this.element.sizeX}px`),this.element.sizeY>=0&&e.has("sizeY")&&(this.element.style.height=`${this.element.sizeY}px`)}firstUpdated(e){super.firstUpdated(e),this.element.append(this.#oe,this.#ae,this.#le,this.#ue,this.#ce,this.#he,this.#de,this.#pe)}createInputObjects(){return[...super.createInputObjects(),new gt(this.#oe,this.blueprint,{onDrag:(e,t)=>{t[1]=e[1]-this.element.topBoundary(),this.setSizeY(this.element.sizeY-t[1])&&this.element.addLocation([0,t[1]],!1)},onEndDrag:()=>this.endResize()}),new gt(this.#ae,this.blueprint,{onDrag:(e,t)=>{t[0]=e[0]-this.element.rightBoundary(),this.setSizeX(this.element.sizeX+t[0])},onEndDrag:()=>this.endResize()}),new gt(this.#le,this.blueprint,{onDrag:(e,t)=>{t[1]=e[1]-this.element.bottomBoundary(),this.setSizeY(this.element.sizeY+t[1])},onEndDrag:()=>this.endResize()}),new gt(this.#ue,this.blueprint,{onDrag:(e,t)=>{t[0]=e[0]-this.element.leftBoundary(),this.setSizeX(this.element.sizeX-t[0])&&this.element.addLocation([t[0],0],!1)},onEndDrag:()=>this.endResize()}),new gt(this.#ce,this.blueprint,{onDrag:(e,t)=>{t[0]=e[0]-this.element.rightBoundary(),t[1]=e[1]-this.element.topBoundary(),this.setSizeX(this.element.sizeX+t[0]),this.setSizeY(this.element.sizeY-t[1])&&this.element.addLocation([0,t[1]],!1)},onEndDrag:()=>this.endResize()}),new gt(this.#he,this.blueprint,{onDrag:(e,t)=>{t[0]=e[0]-this.element.rightBoundary(),t[1]=e[1]-this.element.bottomBoundary(),this.setSizeX(this.element.sizeX+t[0]),this.setSizeY(this.element.sizeY+t[1])},onEndDrag:()=>this.endResize()}),new gt(this.#de,this.blueprint,{onDrag:(e,t)=>{t[0]=e[0]-this.element.leftBoundary(),t[1]=e[1]-this.element.bottomBoundary(),this.setSizeX(this.element.sizeX-t[0])&&this.element.addLocation([t[0],0],!1),this.setSizeY(this.element.sizeY+t[1])},onEndDrag:()=>this.endResize()}),new gt(this.#pe,this.blueprint,{onDrag:(e,t)=>{t[0]=e[0]-this.element.leftBoundary(),t[1]=e[1]-this.element.topBoundary(),this.setSizeX(this.element.sizeX-t[0])&&this.element.addLocation([t[0],0],!1),this.setSizeY(this.element.sizeY-t[1])&&this.element.addLocation([0,t[1]],!1)},onEndDrag:()=>this.endResize()})]}setSizeX(e){return this.element.setNodeWidth(e),!0}setSizeY(e){return this.element.setNodeHeight(e),!0}endResize(){}}class St extends Et{#me=fe.getWhite();#ge=0;initialize(e){e.entity.CommentColor&&(this.#me.setFromRGBANumber(e.entity.CommentColor.toNumber()),this.#me.setFromHSVA(this.#me.H.value,this.#me.S.value,.67*Math.pow(this.#me.V.value,.45))),e.classList.add("ueb-node-style-comment","ueb-node-resizeable"),e.sizeX=25*te.gridSize,e.sizeY=6*te.gridSize,super.initialize(e)}getColor(){return r`${Math.round(255*this.#me.R.value)}${Math.round(255*this.#me.G.value)}${Math.round(255*this.#me.B.value)}`}getDraggableElement(){return this.element.querySelector(".ueb-node-top")}render(){return B`<div class="ueb-node-border"><div class="ueb-node-wrapper"><div class="ueb-node-top">${this.element.entity.NodeComment}</div></div></div>`}firstUpdated(e){super.firstUpdated(e);const t=this.getDraggableElement().getBoundingClientRect();this.#ge=t.height}manageNodesBind(){let e=this.blueprint.getNodes();for(let t of e)t.topBoundary()>=this.element.topBoundary()&&t.rightBoundary()<=this.element.rightBoundary()&&t.bottomBoundary()<=this.element.bottomBoundary()&&t.leftBoundary()>=this.element.leftBoundary()?t.bindToComment(this.element):t.unbindFromComment(this.element)}setSizeX(e){return(e=Math.round(e))>=te.gridSet*te.gridSize&&(this.element.setNodeWidth(e),!0)}setSizeY(e){return(e=Math.round(e))>=3*te.gridSize&&(this.element.setNodeHeight(e),!0)}endResize(){this.manageNodesBind()}topBoundary(e=!1){return this.element.locationY}rightBoundary(e=!1){return this.element.locationX+this.element.sizeX}bottomBoundary(e=!1){return e?this.element.locationY+this.#ge:super.bottomBoundary()}leftBoundary(e=!1){return this.element.locationX}}class Pt extends Je{static properties={...super.properties,selected:{type:Boolean,attribute:"data-selected",reflect:!0,converter:le.booleanConverter}};dragHandler=e=>this.addLocation(e.detail.value);constructor(){super(),this.selected=!1,this.listeningDrag=!1}setup(){super.setup(),this.setSelected(this.selected)}cleanup(){super.cleanup(),this.blueprint.removeEventListener(te.nodeDragGeneralEventName,this.dragHandler)}setSelected(e=!0){this.selected=e,this.blueprint&&(this.selected?(this.listeningDrag=!0,this.blueprint.addEventListener(te.nodeDragGeneralEventName,this.dragHandler)):(this.blueprint.removeEventListener(te.nodeDragGeneralEventName,this.dragHandler),this.listeningDrag=!1))}}class Ct extends Qe{#be;#ve=null;#fe=e=>{if(!this.enteredPin){this.linkValid=!1,this.enteredPin=e.target;const t=this.link.sourcePin??this.target,i=this.enteredPin;t.nodeElement.getType()==te.nodeType.knot||i.nodeElement.getType()==te.nodeType.knot?(this.link.setMessageCorrect(),this.linkValid=!0):t.getNodeElement()==i.getNodeElement()?this.link.setMessageSameNode():t.isOutput()==i.isOutput()||t.isOutput()==i.isOutput()?this.link.setMessageDirectionsIncompatible():this.blueprint.getLinks([t,i]).length?(this.link.setMessageReplaceLink(),this.linkValid=!0):(this.link.setMessageCorrect(),this.linkValid=!0)}};#ye=e=>{this.enteredPin==e.target&&(this.enteredPin=null,this.linkValid=!1,this.link?.setMessagePlaceNode())};link;enteredPin;linkValid=!1;startDrag(e){this.target.nodeElement.getType()==te.nodeType.knot&&(this.#ve=this.target),this.link=it.getConstructor("ueb-link").newObject(this.target,null),this.blueprint.template.linksContainerElement.prepend(this.link),this.link.setMessagePlaceNode(),this.#be=this.blueprint.querySelectorAll("ueb-pin"),this.#be.forEach((e=>{if(e!=this.target){const t=e.template.getClickableElement();t.addEventListener("mouseenter",this.#fe),t.addEventListener("mouseleave",this.#ye)}})),this.link.startDragging(),this.link.setDestinationLocation(e)}dragTo(e,t){this.link.setDestinationLocation(e)}endDrag(){if(this.#be.forEach((e=>{e.removeEventListener("mouseenter",this.#fe),e.removeEventListener("mouseleave",this.#ye)})),this.enteredPin&&this.linkValid){if(this.#ve){const e=this.#ve!==this.link.sourcePin?this.link.sourcePin:this.enteredPin;if(this.#ve.isInput()&&e.isInput()||this.#ve.isOutput()&&e.isOutput()){const e=this.#ve.isInput()?this.#ve.nodeElement.template.outputPin:this.#ve.nodeElement.template.inputPin;this.#ve===this.link.sourcePin?this.link.sourcePin=e:this.enteredPin=e}}this.blueprint.addGraphElement(this.link),this.link.destinationPin=this.enteredPin,this.link.removeMessage(),this.link.finishDragging()}else this.link.finishDragging(),this.link.remove();this.enteredPin=null,this.link=null,this.#be=null}}class kt extends wt{#we=!1;#Ee=!1;#Se="";initialize(e){super.initialize(e),this.element.classList.add("ueb-node-style-glass"),this.#Se=this.element.getNodeDisplayName()}render(){return B`<div class="ueb-node-border"><div class="ueb-node-wrapper">${this.#Se?B`<div class="ueb-node-top"><div class="ueb-node-name"><span class="ueb-node-name-text ueb-ellipsis-nowrap-text">${this.#Se}</span></div></div>`:H}<div class="ueb-node-content">${this.#we?B`<div class="ueb-node-inputs"></div>`:H} ${this.#Ee?B`<div class="ueb-node-outputs"></div>`:H}</div></div></div>`}createPinElements(){return this.element.getPinEntities().filter((e=>!e.isHidden())).map((e=>{this.#we||=e.isInput(),this.#Ee||=e.isOutput();return it.getConstructor("ueb-pin").newObject(e,void 0,this.element)}))}}class xt extends kt{initialize(e){super.initialize(e),this.element.classList.add("ueb-node-style-conversion")}}class Nt extends kt{initialize(e){super.initialize(e),this.element.classList.add("ueb-node-style-operation")}}class Lt extends Fe{#Pe;get iconElement(){return this.#Pe}isNameRendered=!0;setup(){super.setup(),this.element.nodeElement=this.element.closest("ueb-node");const e=this.element.nodeElement.template;(e instanceof xt||e instanceof Nt)&&(this.isNameRendered=!1,this.element.requestUpdate())}createInputObjects(){return[new Ct(this.getClickableElement(),this.blueprint,{moveEverywhere:!0})]}render(){const e=B`<div class="ueb-pin-icon">${this.renderIcon()}</div>`,t=B`<div class="ueb-pin-content">${this.isNameRendered?this.renderName():H} ${this.element.isInput()&&!this.element.entity.bDefaultValueIsIgnored?this.renderInput():B``}</div>`;return B`<div class="ueb-pin-wrapper">${this.element.isInput()?B`${e}${t}`:B`${t}${e}`}</div>`}renderIcon(){return dt.genericPin}renderName(){return B`<span class="ueb-pin-name">${this.element.getPinDisplayName()}</span>`}renderInput(){return B``}updated(e){if(super.updated(e),this.element.isInput()&&e.has("isLinked")){const e=this.element.nodeElement;e.addNextUpdatedCallbacks((()=>e.acknowledgeReflow())),e.requestUpdate()}}firstUpdated(e){super.firstUpdated(e),this.element.style.setProperty("--ueb-pin-color-rgb",te.getPinColor(this.element).cssText),this.#Pe=this.element.querySelector(".ueb-pin-icon svg")??this.element}getLinkLocation(){const e=this.iconElement.getBoundingClientRect(),t=le.convertLocation([(e.left+e.right)/2,(e.top+e.bottom)/2],this.blueprint.template.gridElement);return this.blueprint.compensateTranslation(t)}getClickableElement(){return this.element}}class Tt extends Lt{render(){return this.element.isOutput()?B`<div class="ueb-pin-icon">${this.renderIcon()}</div>`: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`<div class="ueb-node-border"></div>`}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]<te.gridExpandThreshold*te.expandGridSize?s[e]=-1: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||i<Number.MAX_SAFE_INTEGER||n<Number.MAX_SAFE_INTEGER||s>Number.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`<input type="checkbox" class="ueb-pin-input" ?checked="${this.element.defaultValue}">`}}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`<div class="ueb-pin-input"><ueb-input .singleLine="${e}" .selectOnFocus="${t}" .innerText="${jt.stringFromUEToInput(this.element.entity.DefaultValue.toString())}"></ueb-input></div>`}}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`<div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${jt.stringFromUEToInput(this.element.getDefaultValue()?.toString()??"0")}"></ueb-input></div>`}}class Wt extends Lt{renderIcon(){return dt.execPin}renderName(){let e=this.element.entity.PinName;if(this.element.entity.PinFriendlyName)e=this.element.entity.PinFriendlyName.toString();else if("execute"===e||"then"===e)return B``;return B`${le.formatStringName(e)}`}}class Yt extends Ut{setDefaultValue(e=[],t=e){parseInt(e[0]);const i=this.element.getDefaultValue(!0);i.value=e[0],this.element.requestUpdate("DefaultValue",i)}renderInput(){return B`<div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.element.getDefaultValue()?.toString()??"0"}"></ueb-input></div>`}}
/**
* @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`<div class="ueb-window"><div class="ueb-window-top"><div class="ueb-window-name ueb-ellipsis-nowrap-text">${this.renderWindowName()}</div><div class="ueb-window-close" @click="${()=>this.element.remove()}">${dt.close}</div></div><div class="ueb-window-content">${this.renderContent()}</div></div>`}renderWindowName(){return B`Window`}renderContent(){return B``}apply(){this.element.dispatchEvent(new CustomEvent(te.windowApplyEventName)),this.element.remove()}cancel(){this.element.dispatchEvent(new CustomEvent(te.windowCancelEventName)),this.element.remove()}}class Qt extends Jt{#je;#Ue;#Xe;#We;#Ye;#qe;#Ke;#Ze;#Je;#Qe;#et=e=>{const t=le.clearHTMLWhitespace(e.target.innerHTML),i=parseInt(t,16);isNaN(i)||(this.color.setFromRGBANumber(i),this.element.requestUpdate())};#tt=e=>{const t=le.clearHTMLWhitespace(e.target.innerHTML),i=parseInt(t,16);isNaN(i)||(this.color.setFromSRGBANumber(i),this.element.requestUpdate())};#it=e=>t=>{"Enter"==t.code&&(t.preventDefault(),e(t))};#me=new fe;get color(){return this.#me}set color(e){e.toNumber()!=this.color?.toNumber()&&(this.element.requestUpdate("color",this.#me),this.#me=e)}#nt=new fe;get fullColor(){return this.#nt}#st;get initialColor(){return this.#st}#rt=new fe;#ot(e,t,i=!1){const n=this.color.toRGBAString(),s=`${n.substring(0,2*e)}${t}${n.substring(2+2*e)}`;return i?`${s.substring(0,6)}FF`:s}initialize(e){super.initialize(e),this.#st=this.element.windowOptions.getPinColor(),this.color.setFromHSVA(this.initialColor.H.value,this.initialColor.S.value,this.initialColor.V.value,this.initialColor.A.value),this.fullColor.setFromHSVA(this.color.H.value,1,1,1)}firstUpdated(e){this.#je=this.element.querySelector(".ueb-color-picker-wheel ueb-color-handler"),this.#Ue=this.element.querySelector(".ueb-color-picker-saturation ueb-ui-slider"),this.#Xe=this.element.querySelector(".ueb-color-picker-value ueb-ui-slider"),this.#We=this.element.querySelector(".ueb-color-picker-r ueb-ui-slider"),this.#Ye=this.element.querySelector(".ueb-color-picker-g ueb-ui-slider"),this.#qe=this.element.querySelector(".ueb-color-picker-b ueb-ui-slider"),this.#Ke=this.element.querySelector(".ueb-color-picker-a ueb-ui-slider"),this.#Ze=this.element.querySelector(".ueb-color-picker-h ueb-ui-slider"),this.#Je=this.element.querySelector(".ueb-color-picker-s ueb-ui-slider"),this.#Qe=this.element.querySelector(".ueb-color-picker-v ueb-ui-slider"),this.#je.template.locationChangeCallback=(e,t)=>{this.color.setFromWheelLocation([e,t],this.color.V.value,this.color.A.value),this.fullColor.setFromHSVA(this.color.H.value,1,1,1),this.element.requestUpdate()},this.#Ue.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,t,this.color.V.value,this.color.A.value),this.element.requestUpdate()},this.#Xe.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,this.color.S.value,t,this.color.A.value),this.element.requestUpdate()},this.#We.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(e,this.color.G.value,this.color.B.value,this.color.A.value),this.element.requestUpdate()},this.#Ye.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(this.color.R.value,e,this.color.B.value,this.color.A.value),this.element.requestUpdate()},this.#qe.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(this.color.R.value,this.color.G.value,e,this.color.A.value),this.element.requestUpdate()},this.#Ke.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(this.color.R.value,this.color.G.value,this.color.B.value,e),this.element.requestUpdate()},this.#Ze.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(e,this.color.S.value,this.color.V.value,this.color.A.value),this.element.requestUpdate()},this.#Je.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,e,this.color.V.value,this.color.A.value),this.element.requestUpdate()},this.#Qe.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,this.color.S.value,e,this.color.A.value),this.element.requestUpdate()}}renderSlider(e){let t="",i=0,n="";const s=e=>`linear-gradient(to right, #${this.#ot(e,"00",!0)}, #${this.#ot(e,"ff",!0)})`;switch(e){case 0:t="r",i=this.color.R.value,n=s(e);break;case 1:t="g",i=this.color.G.value,n=s(e);break;case 2:t="b",i=this.color.B.value,n=s(e);break;case 3:t="a",i=this.color.A.value,n=`${te.alphaPattern}, ${s(e)}`;break;case 4:t="h",i=360*this.color.H.value,n="linear-gradient(to right, #f00 0%, #ff0 16.666%, #0f0 33.333%, #0ff 50%, #00f 66.666%, #f0f 83.333%, #f00 100%)";break;case 5:t="s",i=this.color.S.value,n=`linear-gradient(to right,#${this.#rt.setFromHSVA(this.color.H.value,0,this.color.V.value,1),this.#rt.toRGBAString()},#${this.#rt.setFromHSVA(this.color.H.value,1,this.color.V.value,1),this.#rt.toRGBAString()})`;break;case 6:t="v",i=this.color.V.value,n=`linear-gradient(to right, #000, #${this.fullColor.toRGBAString()})`}return n=`background: ${n};`,B`<div class="ueb-color-picker-${t.toLowerCase()}"><span class="ueb-color-control-label">${t.toUpperCase()}</span><div><div class="ueb-horizontal-slider"><span class="ueb-horizontal-slider-text" .innerText="${le.minDecimals(le.roundDecimals(i,3))}"></span><ueb-ui-slider></ueb-ui-slider></div><div class="ueb-color-picker-gradient" style="${n}"></div></div></div>`}renderContent(){const e=2*this.color.H.value*Math.PI,t={"--ueb-color-r":this.color.R.toString(),"--ueb-color-g":this.color.G.toString(),"--ueb-color-b":this.color.B.toString(),"--ueb-color-a":this.color.A.toString(),"--ueb-color-h":this.color.H.toString(),"--ueb-color-s":this.color.S.toString(),"--ueb-color-v":this.color.V.toString(),"--ueb-color-wheel-x":100*(this.color.S.value*Math.cos(e)*.5+.5)+"%","--ueb-color-wheel-y":100*(this.color.S.value*Math.sin(e)*.5+.5)+"%"},i=this.color.toRGBAString(),n=this.color.toSRGBAString(),s=this.fullColor.toRGBAString();return B`<div class="ueb-color-picker" style="${Zt(t)}"><div class="ueb-color-picker-toolbar"><div class="ueb-color-picker-theme"></div><div class="ueb-color-picker-srgb"></div></div><div class="ueb-color-picker-main"><div class="ueb-color-picker-wheel"><ueb-color-handler></ueb-color-handler></div><div class="ueb-color-picker-saturation ueb-vertical-slider" style="background-color:#${s}"><ueb-ui-slider></ueb-ui-slider></div><div class="ueb-color-picker-value ueb-vertical-slider" style="background-color:#${s}"><ueb-ui-slider></ueb-ui-slider></div><div class="ueb-color-picker-preview">Old<div class="ueb-color-picker-preview-old" style="background:#${this.#st.toRGBAString()}"></div><div class="ueb-color-picker-preview-new"><div class="ueb-color-picker-preview-1" style="background:#${this.#ot(3,"FF")}"></div><div class="ueb-color-picker-preview-2" style="background:${`linear-gradient(#${i}, #${i}),${te.alphaPattern}`}"></div></div>New</div></div><div class="ueb-color-picker-advanced-toggle ueb-toggle-control">Advanced</div><div class="ueb-color-picker-advanced"><div class="ueb-color-picker-column">${this.renderSlider(0)} ${this.renderSlider(1)} ${this.renderSlider(2)} ${this.renderSlider(3)}</div><div class="ueb-color-picker-column">${this.renderSlider(4)} ${this.renderSlider(5)} ${this.renderSlider(6)}<div class="ueb-color-control"><span class="ueb-color-control-label">Hex Linear</span><div class="ueb-color-picker-hex-linear ueb-text-input"><ueb-input .innerText="${i}" @focusout="${this.#et}" @keydown="${this.#it(this.#et)}"></ueb-input></div></div><div class="ueb-color-control"><span class="ueb-color-control-label">Hex sRGB</span><div class="ueb-color-picker-hex-srgb ueb-text-input"><ueb-input .innerText="${n}" @focusout="${this.#tt}" @keydown="${this.#it(this.#tt)}"></ueb-input></div></div></div></div><div class="ueb-buttons"><div class="ueb-color-picker-ok ueb-button" @click="${()=>this.apply()}">OK</div><div class="ueb-color-picker-cancel ueb-button" @click="${()=>this.cancel()}">Cancel</div></div></div>`}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`<span class="ueb-pin-input" data-linear-color="${this.element.defaultValue.toString()}" @click="${this.#lt}" style="--ueb-linear-color:rgba(${this.element.defaultValue.toString()})"></span>`}}class ti extends jt{static singleLineInput=!0}class ii extends Ut{setDefaultValue(e=[],t=e){this.element.setDefaultValue(e[0])}renderInput(){return B`<div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${jt.stringFromUEToInput(le.minDecimals(this.element.getDefaultValue()??0))}"></ueb-input></div>`}}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`<div class="ueb-pin-input-wrapper"><span class="ueb-pin-input-label">X</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#ut()}"></ueb-input></div><span class="ueb-pin-input-label">Y</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#ct()}"></ueb-input></div><span class="ueb-pin-input-label">Z</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#ht()}"></ueb-input></div></div>`}}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`<div class="ueb-pin-input-wrapper"><span class="ueb-pin-input-label">X</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#dt()}"></ueb-input></div><span class="ueb-pin-input-label">Y</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#ht()}"></ueb-input></div></div>`}}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`<div class="ueb-pin-input-wrapper"><span class="ueb-pin-input-label">X</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#dt()}"></ueb-input></div><span class="ueb-pin-input-label">Y</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#ht()}"></ueb-input></div><span class="ueb-pin-input-label">Z</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#pt()}"></ueb-input></div></div>`}}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<this.length?this.array[e]:null}getArray(){return this.array}getPosition(e){let t=0,i=this.length;for(;t<i;){let n=Math.floor((t+i)/2);this.comparisonValueSupplier(this.array[n])<e?t=n+1:i=n}return t}reserve(e){if(this.array.length<e){let t=new Uint32Array(e);t.set(this.array),this.array=t}}insert(e,t=null){let i=this.getPosition(this.comparisonValueSupplier(e));return(i<this.currentPosition||null!=t&&i==this.currentPosition&&this.comparisonValueSupplier(e)<t)&&++this.currentPosition,this.shiftRight(i),this.array[i]=e,++this.length,i}remove(e){let t=this.getPosition(this.comparisonValueSupplier(e));this.array[t]==e&&this.removeAt(t)}removeAt(e){return e<this.currentPosition&&--this.currentPosition,this.shiftLeft(e),--this.length,e}getNext(){return this.currentPosition>=0&&this.currentPosition<this.length?this.get(this.currentPosition):null}getNextValue(){return this.currentPosition>=0&&this.currentPosition<this.length?this.comparisonValueSupplier(this.get(this.currentPosition)):Number.MAX_SAFE_INTEGER}getPrev(){return this.currentPosition>0?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]<r.secondaryInf?s.secondaryBoundary=r.secondaryInf:r.secondarySup<this.initialPosition[1]?s.secondaryBoundary=r.secondarySup:s.onSecondaryAxis=!0,this.initialPosition[0]<r.primaryInf?(s.primaryBoundary=r.primaryInf,this.primaryOrder.insert(t)):r.primarySup<this.initialPosition[0]?(s.primaryBoundary=r.primarySup,this.primaryOrder.insert(t)):r.secondarySup<this.initialPosition[1]||this.initialPosition[1]<r.secondaryInf?this.secondaryOrder.insert(t):n(e,!0)})),this.primaryOrder.currentPosition=this.primaryOrder.getPosition(this.initialPosition[0]),this.secondaryOrder.currentPosition=this.secondaryOrder.getPosition(this.initialPosition[1]),this.computeBoundaries()}computeBoundaries(){this.boundaries={primaryN:{v:this.primaryOrder.getPrevValue(),i:this.primaryOrder.getPrev()},primaryP:{v:this.primaryOrder.getNextValue(),i:this.primaryOrder.getNext()},secondaryN:{v:this.secondaryOrder.getPrevValue(),i:this.secondaryOrder.getPrev()},secondaryP:{v:this.secondaryOrder.getNextValue(),i:this.secondaryOrder.getNext()}}}selectTo(e){const t=[Math.sign(e[0]-this.initialPosition[0]),Math.sign(e[1]-this.initialPosition[1])],i=(i,n)=>{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?(--this.primaryOrder.currentPosition,i(this.boundaries.primaryN.i,this.initialPosition[0]>this.boundaries.primaryN.v&&e[0]<this.initialPosition[0])):e[0]>this.boundaries.primaryP.v&&(++this.primaryOrder.currentPosition,i(this.boundaries.primaryP.i,this.initialPosition[0]<this.boundaries.primaryP.v&&this.initialPosition[0]<e[0]));const n=(t,i)=>{this.selectFunc(this.rectangles[t],i),this.computeBoundaries(),this.selectTo(e)};e[1]<this.boundaries.secondaryN.v?(--this.secondaryOrder.currentPosition,n(this.boundaries.secondaryN.i,this.initialPosition[1]>this.boundaries.secondaryN.v&&e[1]<this.initialPosition[1])):e[1]>this.boundaries.secondaryP.v&&(++this.secondaryOrder.currentPosition,n(this.boundaries.secondaryP.i,this.initialPosition[1]<this.boundaries.secondaryP.v&&this.initialPosition[1]<e[1])),this.finalPosition=e}}class hi extends lt{}class di extends at{selectionModel=null;constructor(){super(),super.initialize({},new hi)}static newObject(){return new di}initialize(){}beginSelect(e){this.blueprint.selecting=!0,this.setBothLocations(e),this.selectionModel=new ci(e,this.blueprint.getNodes(),this.blueprint.nodeBoundariesSupplier,this.blueprint.nodeSelectToggleFunction)}selectTo(e){this.selectionModel.selectTo(e),this.toX=e[0],this.toY=e[1]}endSelect(){this.blueprint.selecting=!1,this.selectionModel=null,this.fromX=0,this.fromY=0,this.toX=0,this.toY=0}}class pi extends Je{static#Le={window:Jt,"color-picker":Qt};static properties={...Je.properties,type:{type:Jt,attribute:"data-type",reflect:!0,converter:{fromAttribute:(e,t)=>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};