mirror of
https://github.com/barsdeveloper/ueblueprint.git
synced 2026-02-03 23:55:04 +08:00
34 lines
251 KiB
JavaScript
Executable File
34 lines
251 KiB
JavaScript
Executable File
/**
|
||
* @license
|
||
* Copyright 2019 Google LLC
|
||
* SPDX-License-Identifier: BSD-3-Clause
|
||
*/
|
||
const e=globalThis,t=e.ShadowRoot&&(void 0===e.ShadyCSS||e.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,i=Symbol(),r=new WeakMap;class n{constructor(e,t,r){if(this._$cssResult$=!0,r!==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=r.get(i)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),t&&r.set(i,e))}return e}toString(){return this.cssText}}const s=(e,...t)=>{const r=1===e.length?e[0]:t.reduce(((t,i,r)=>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[r+1]),e[0]);return new n(r,e,i)},a=t?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const i of e.cssRules)t+=i.cssText;return(e=>new n("string"==typeof e?e:e+"",void 0,i))(t)})(e):e
|
||
/**
|
||
* @license
|
||
* Copyright 2017 Google LLC
|
||
* SPDX-License-Identifier: BSD-3-Clause
|
||
*/,{is:o,defineProperty:l,getOwnPropertyDescriptor:c,getOwnPropertyNames:u,getOwnPropertySymbols:h,getPrototypeOf:p}=Object,d=globalThis,m=d.trustedTypes,g=m?m.emptyScript:"",b=d.reactiveElementPolyfillSupport,v=(e,t)=>e,f={toAttribute(e,t){switch(t){case Boolean:e=e?g: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}},y=(e,t)=>!o(e,t),w={attribute:!0,type:String,converter:f,reflect:!1,hasChanged:y};Symbol.metadata??=Symbol("metadata"),d.litPropertyMetadata??=new WeakMap;class S extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=w){if(t.state&&(t.attribute=!1),this._$Ei(),this.elementProperties.set(e,t),!t.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(e,i,t);void 0!==r&&l(this.prototype,e,r)}}static getPropertyDescriptor(e,t,i){const{get:r,set:n}=c(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get(){return r?.call(this)},set(t){const s=r?.call(this);n.call(this,t),this.requestUpdate(e,s,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??w}static _$Ei(){if(this.hasOwnProperty(v("elementProperties")))return;const e=p(this);e.finalize(),void 0!==e.l&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(v("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(v("properties"))){const e=this.properties,t=[...u(e),...h(e)];for(const i of t)this.createProperty(i,e[i])}const e=this[Symbol.metadata];if(null!==e){const t=litPropertyMetadata.get(e);if(void 0!==t)for(const[e,i]of t)this.elementProperties.set(e,i)}this._$Eh=new Map;for(const[e,t]of this.elementProperties){const i=this._$Eu(e,t);void 0!==i&&this._$Eh.set(i,e)}this.elementStyles=this.finalizeStyles(this.styles)}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(a(e))}else void 0!==e&&t.push(a(e));return t}static _$Eu(e,t){const i=t.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof e?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((e=>e(this)))}addController(e){(this._$EO??=new Set).add(e),void 0!==this.renderRoot&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const i of t.keys())this.hasOwnProperty(i)&&(e.set(i,this[i]),delete this[i]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const i=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return((i,r)=>{if(t)i.adoptedStyleSheets=r.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet));else for(const t of r){const r=document.createElement("style"),n=e.litNonce;void 0!==n&&r.setAttribute("nonce",n),r.textContent=t.cssText,i.appendChild(r)}})(i,this.constructor.elementStyles),i}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((e=>e.hostConnected?.()))}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach((e=>e.hostDisconnected?.()))}attributeChangedCallback(e,t,i){this._$AK(e,i)}_$EC(e,t){const i=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,i);if(void 0!==r&&!0===i.reflect){const n=(void 0!==i.converter?.toAttribute?i.converter:f).toAttribute(t,i.type);this._$Em=e,null==n?this.removeAttribute(r):this.setAttribute(r,n),this._$Em=null}}_$AK(e,t){const i=this.constructor,r=i._$Eh.get(e);if(void 0!==r&&this._$Em!==r){const e=i.getPropertyOptions(r),n="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==e.converter?.fromAttribute?e.converter:f;this._$Em=r,this[r]=n.fromAttribute(t,e.type),this._$Em=null}}requestUpdate(e,t,i){if(void 0!==e){if(i??=this.constructor.getPropertyOptions(e),!(i.hasChanged??y)(this[e],t))return;this.P(e,t,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(e,t,i){this._$AL.has(e)||this._$AL.set(e,t),!0===i.reflect&&this._$Em!==e&&(this._$Ej??=new Set).add(e)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}const e=this.constructor.elementProperties;if(e.size>0)for(const[t,i]of e)!0!==i.wrapped||this._$AL.has(t)||void 0===this[t]||this.P(t,this[t],i)}let e=!1;const t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach((e=>e.hostUpdate?.())),this.update(t)):this._$EU()}catch(t){throw e=!1,this._$EU(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach((e=>e.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Ej&&=this._$Ej.forEach((e=>this._$EC(e,this[e]))),this._$EU()}updated(e){}firstUpdated(e){}}S.elementStyles=[],S.shadowRootOptions={mode:"open"},S[v("elementProperties")]=new Map,S[v("finalized")]=new Map,b?.({ReactiveElement:S}),(d.reactiveElementVersions??=[]).push("2.0.4");
|
||
/**
|
||
* @license
|
||
* Copyright 2017 Google LLC
|
||
* SPDX-License-Identifier: BSD-3-Clause
|
||
*/
|
||
const E=globalThis,C=E.trustedTypes,N=C?C.createPolicy("lit-html",{createHTML:e=>e}):void 0,P="$lit$",x=`lit$${Math.random().toFixed(9).slice(2)}$`,k="?"+x,L=`<${k}>`,A=document,M=()=>A.createComment(""),T=e=>null===e||"object"!=typeof e&&"function"!=typeof e,I=Array.isArray,O="[ \t\n\f\r]",D=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,$=/-->/g,V=/>/g,B=RegExp(`>|${O}(?:([^\\s"'>=/]+)(${O}*=${O}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),G=/'/g,H=/"/g,R=/^(?:script|style|textarea|title)$/i,z=(e=>(t,...i)=>({_$litType$:e,strings:t,values:i}))(1),F=Symbol.for("lit-noChange"),_=Symbol.for("lit-nothing"),j=new WeakMap,U=A.createTreeWalker(A,129);function K(e,t){if(!I(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==N?N.createHTML(t):t}const q=(e,t)=>{const i=e.length-1,r=[];let n,s=2===t?"<svg>":3===t?"<math>":"",a=D;for(let t=0;t<i;t++){const i=e[t];let o,l,c=-1,u=0;for(;u<i.length&&(a.lastIndex=u,l=a.exec(i),null!==l);)u=a.lastIndex,a===D?"!--"===l[1]?a=$:void 0!==l[1]?a=V:void 0!==l[2]?(R.test(l[2])&&(n=RegExp("</"+l[2],"g")),a=B):void 0!==l[3]&&(a=B):a===B?">"===l[0]?(a=n??D,c=-1):void 0===l[1]?c=-2:(c=a.lastIndex-l[2].length,o=l[1],a=void 0===l[3]?B:'"'===l[3]?H:G):a===H||a===G?a=B:a===$||a===V?a=D:(a=B,n=void 0);const h=a===B&&e[t+1].startsWith("/>")?" ":"";s+=a===D?i+L:c>=0?(r.push(o),i.slice(0,c)+P+i.slice(c)+x+h):i+x+(-2===c?t:h)}return[K(e,s+(e[i]||"<?>")+(2===t?"</svg>":3===t?"</math>":"")),r]};class Y{constructor({strings:e,_$litType$:t},i){let r;this.parts=[];let n=0,s=0;const a=e.length-1,o=this.parts,[l,c]=q(e,t);if(this.el=Y.createElement(l,i),U.currentNode=this.el.content,2===t||3===t){const e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;null!==(r=U.nextNode())&&o.length<a;){if(1===r.nodeType){if(r.hasAttributes())for(const e of r.getAttributeNames())if(e.endsWith(P)){const t=c[s++],i=r.getAttribute(e).split(x),a=/([.?@])?(.*)/.exec(t);o.push({type:1,index:n,name:a[2],strings:i,ctor:"."===a[1]?J:"?"===a[1]?ee:"@"===a[1]?te:Q}),r.removeAttribute(e)}else e.startsWith(x)&&(o.push({type:6,index:n}),r.removeAttribute(e));if(R.test(r.tagName)){const e=r.textContent.split(x),t=e.length-1;if(t>0){r.textContent=C?C.emptyScript:"";for(let i=0;i<t;i++)r.append(e[i],M()),U.nextNode(),o.push({type:2,index:++n});r.append(e[t],M())}}}else if(8===r.nodeType)if(r.data===k)o.push({type:2,index:n});else{let e=-1;for(;-1!==(e=r.data.indexOf(x,e+1));)o.push({type:7,index:n}),e+=x.length-1}n++}}static createElement(e,t){const i=A.createElement("template");return i.innerHTML=e,i}}function W(e,t,i=e,r){if(t===F)return t;let n=void 0!==r?i._$Co?.[r]:i._$Cl;const s=T(t)?void 0:t._$litDirective$;return n?.constructor!==s&&(n?._$AO?.(!1),void 0===s?n=void 0:(n=new s(e),n._$AT(e,i,r)),void 0!==r?(i._$Co??=[])[r]=n:i._$Cl=n),void 0!==n&&(t=W(e,n._$AS(e,t.values),n,r)),t}class X{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){const{el:{content:t},parts:i}=this._$AD,r=(e?.creationScope??A).importNode(t,!0);U.currentNode=r;let n=U.nextNode(),s=0,a=0,o=i[0];for(;void 0!==o;){if(s===o.index){let t;2===o.type?t=new Z(n,n.nextSibling,this,e):1===o.type?t=new o.ctor(n,o.name,o.strings,this,e):6===o.type&&(t=new ie(n,this,e)),this._$AV.push(t),o=i[++a]}s!==o?.index&&(n=U.nextNode(),s++)}return U.currentNode=A,r}p(e){let t=0;for(const i of this._$AV)void 0!==i&&(void 0!==i.strings?(i._$AI(e,i,t),t+=i.strings.length-2):i._$AI(e[t])),t++}}class Z{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,i,r){this.type=2,this._$AH=_,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=i,this.options=r,this._$Cv=r?.isConnected??!0}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=W(this,e,t),T(e)?e===_||null==e||""===e?(this._$AH!==_&&this._$AR(),this._$AH=_):e!==this._$AH&&e!==F&&this._(e):void 0!==e._$litType$?this.$(e):void 0!==e.nodeType?this.T(e):(e=>I(e)||"function"==typeof e?.[Symbol.iterator])(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==_&&T(this._$AH)?this._$AA.nextSibling.data=e:this.T(A.createTextNode(e)),this._$AH=e}$(e){const{values:t,_$litType$:i}=e,r="number"==typeof i?this._$AC(e):(void 0===i.el&&(i.el=Y.createElement(K(i.h,i.h[0]),this.options)),i);if(this._$AH?._$AD===r)this._$AH.p(t);else{const e=new X(r,this),i=e.u(this.options);e.p(t),this.T(i),this._$AH=e}}_$AC(e){let t=j.get(e.strings);return void 0===t&&j.set(e.strings,t=new Y(e)),t}k(e){I(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let i,r=0;for(const n of e)r===t.length?t.push(i=new Z(this.O(M()),this.O(M()),this,this.options)):i=t[r],i._$AI(n),r++;r<t.length&&(this._$AR(i&&i._$AB.nextSibling,r),t.length=r)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e&&e!==this._$AB;){const t=e.nextSibling;e.remove(),e=t}}setConnected(e){void 0===this._$AM&&(this._$Cv=e,this._$AP?.(e))}}class Q{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,i,r,n){this.type=1,this._$AH=_,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=n,i.length>2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=_}_$AI(e,t=this,i,r){const n=this.strings;let s=!1;if(void 0===n)e=W(this,e,t,0),s=!T(e)||e!==this._$AH&&e!==F,s&&(this._$AH=e);else{const r=e;let a,o;for(e=n[0],a=0;a<n.length-1;a++)o=W(this,r[i+a],t,a),o===F&&(o=this._$AH[a]),s||=!T(o)||o!==this._$AH[a],o===_?e=_:e!==_&&(e+=(o??"")+n[a+1]),this._$AH[a]=o}s&&!r&&this.j(e)}j(e){e===_?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class J extends Q{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===_?void 0:e}}class ee extends Q{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==_)}}class te extends Q{constructor(e,t,i,r,n){super(e,t,i,r,n),this.type=5}_$AI(e,t=this){if((e=W(this,e,t,0)??_)===F)return;const i=this._$AH,r=e===_&&i!==_||e.capture!==i.capture||e.once!==i.once||e.passive!==i.passive,n=e!==_&&(i===_||r);r&&this.element.removeEventListener(this.name,this,i),n&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){"function"==typeof this._$AH?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}}class ie{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){W(this,e)}}const re=E.litHtmlPolyfillSupport;re?.(Y,Z),(E.litHtmlVersions??=[]).push("3.2.1");
|
||
/**
|
||
* @license
|
||
* Copyright 2017 Google LLC
|
||
* SPDX-License-Identifier: BSD-3-Clause
|
||
*/
|
||
class ne extends S{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){const e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=((e,t,i)=>{const r=i?.renderBefore??t;let n=r._$litPart$;if(void 0===n){const e=i?.renderBefore??null;r._$litPart$=n=new Z(t.insertBefore(M(),e),e,void 0,i??{})}return n._$AI(e),n})(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return F}}ne._$litElement$=!0,ne.finalized=!0,globalThis.litElementHydrateSupport?.({LitElement:ne});const se=globalThis.litElementPolyfillSupport;se?.({LitElement:ne}),(globalThis.litElementVersions??=[]).push("4.1.1");class ae{static VERSION="2.0.0";static nodeColors={black:s``,blue:s``,darkBlue:s``,darkerBlue:s``,darkTurquoise:s``,gray:s``,green:s``,intenseGreen:s``,lime:s``,red:s``,turquoise:s``,violet:s``,yellow:s``};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 colorWindowName="Color Picker";static defaultCommentHeight=96;static defaultCommentWidth=400;static distanceThreshold=20;static dragEventName="ueb-drag";static dragGeneralEventName="ueb-drag-general";static edgeScrollThreshold=50;static editTextEventName={begin:"ueb-edit-text-begin",end:"ueb-edit-text-end"};static expandGridSize=400;static focusEventName={begin:"blueprint-focus",end:"blueprint-unfocus"};static fontSize=s``;static gridExpandThreshold=.25;static gridLineWidth=1;static gridSet=8;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 indentation=" ";static keysSeparator=/[\.\(\)]/;static knotOffset=[-ae.gridSize,-.5*ae.gridSize];static lineTracePattern=/LineTrace(Single|Multi)(\w*)/;static linkCurveHeight=15;static linkCurveWidth=80;static linkMinWidth=100;static nameRegexSpaceReplacement=new RegExp("^K2(?:[Nn]ode)?_|(?<=[a-z])(?=[A-Z0-9])|(?<=[A-Z])(?<!U(?=Vs(?![a-z])))(?<!V(?=[23](?![0-9])))(?<!T(?=2d(?![a-z])))(?<!BT)(?=[A-Z][a-z]|[0-9])|(?<=[0-9])(?<))(?=[a-zA-Z])|\\s*_+\\s*|\\s{2,}","g");static linkRightSVGPath=(e,t,i,r=!1)=>{const n=100-e,s=r?i-e+50:50,a=r?n+t-e:n-t+e;return`M ${e} 0 C ${t.toFixed(2)} 0, ${i.toFixed(2)} 0, ${s.toFixed(2)} 50 S ${a.toFixed(2)} 100, ${n.toFixed(3)} 100`};static maxZoom=7;static minZoom=-12;static mouseClickButton=0;static mouseRightClickButton=2;static mouseWheelZoomThreshold=80;static nodeDragEventName="ueb-node-drag";static nodeDragGeneralEventName="ueb-node-drag-general";static nodeRadius=8;static nodeTitle=(e,t)=>`${e}_${t}`;static nodeUpdateEventName="ueb-node-update";static paths={actorBoundEvent:"/Script/BlueprintGraph.K2Node_ActorBoundEvent",addDelegate:"/Script/BlueprintGraph.K2Node_AddDelegate",ambientSound:"/Script/Engine.AmbientSound",asyncAction:"/Script/BlueprintGraph.K2Node_AsyncAction",blueprint:"/Script/Engine.Blueprint",blueprintGameplayTagLibrary:"/Script/GameplayTags.BlueprintGameplayTagLibrary",blueprintMapLibrary:"/Script/Engine.BlueprintMapLibrary",blueprintSetLibrary:"/Script/Engine.BlueprintSetLibrary",callArrayFunction:"/Script/BlueprintGraph.K2Node_CallArrayFunction",callDelegate:"/Script/BlueprintGraph.K2Node_CallDelegate",callFunction:"/Script/BlueprintGraph.K2Node_CallFunction",clearDelegate:"/Script/BlueprintGraph.K2Node_ClearDelegate",comment:"/Script/UnrealEd.EdGraphNode_Comment",commutativeAssociativeBinaryOperator:"/Script/BlueprintGraph.K2Node_CommutativeAssociativeBinaryOperator",componentBoundEvent:"/Script/BlueprintGraph.K2Node_ComponentBoundEvent",createDelegate:"/Script/BlueprintGraph.K2Node_CreateDelegate",customEvent:"/Script/BlueprintGraph.K2Node_CustomEvent",doN:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:Do N",doOnce:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:DoOnce",dynamicCast:"/Script/BlueprintGraph.K2Node_DynamicCast",eAttachmentRule:"/Script/Engine.EAttachmentRule",edGraph:"/Script/Engine.EdGraph",eDrawDebugTrace:"/Script/Engine.EDrawDebugTrace",eMaterialSamplerType:"/Script/Engine.EMaterialSamplerType",eNiagara_Float4Channel:"/Niagara/Enums/ENiagara_Float4Channel.ENiagara_Float4Channel",enum:"/Script/CoreUObject.Enum",enumLiteral:"/Script/BlueprintGraph.K2Node_EnumLiteral",eSamplerSourceMode:"/Script/Engine.ESamplerSourceMode",eSearchCase:"/Script/CoreUObject.ESearchCase",eSearchDir:"/Script/CoreUObject.ESearchDir",eSpawnActorCollisionHandlingMethod:"/Script/Engine.ESpawnActorCollisionHandlingMethod",eTextureMipValueMode:"/Script/Engine.ETextureMipValueMode",eTraceTypeQuery:"/Script/Engine.ETraceTypeQuery",event:"/Script/BlueprintGraph.K2Node_Event",eWorldPositionIncludedOffsets:"/Script/Engine.EWorldPositionIncludedOffsets",executionSequence:"/Script/BlueprintGraph.K2Node_ExecutionSequence",flipflop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:FlipFlop",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",functionEntry:"/Script/BlueprintGraph.K2Node_FunctionEntry",functionResult:"/Script/BlueprintGraph.K2Node_FunctionResult",gameplayTag:"/Script/GameplayTags.GameplayTag",getInputAxisKeyValue:"/Script/BlueprintGraph.K2Node_GetInputAxisKeyValue",ifThenElse:"/Script/BlueprintGraph.K2Node_IfThenElse",inputAxisKeyEvent:"/Script/BlueprintGraph.K2Node_InputAxisKeyEvent",inputDebugKey:"/Script/InputBlueprintNodes.K2Node_InputDebugKey",inputKey:"/Script/BlueprintGraph.K2Node_InputKey",inputVectorAxisEvent:"/Script/BlueprintGraph.K2Node_InputVectorAxisEvent",isValid:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:IsValid",kismetArrayLibrary:"/Script/Engine.KismetArrayLibrary",kismetMathLibrary:"/Script/Engine.KismetMathLibrary",kismetStringLibrary:"/Script/Engine.KismetStringLibrary",knot:"/Script/BlueprintGraph.K2Node_Knot",linearColor:"/Script/CoreUObject.LinearColor",literal:"/Script/BlueprintGraph.K2Node_Literal",macro:"/Script/BlueprintGraph.K2Node_MacroInstance",makeArray:"/Script/BlueprintGraph.K2Node_MakeArray",makeMap:"/Script/BlueprintGraph.K2Node_MakeMap",makeSet:"/Script/BlueprintGraph.K2Node_MakeSet",makeStruct:"/Script/BlueprintGraph.K2Node_MakeStruct",materialExpressionComponentMask:"/Script/Engine.MaterialExpressionComponentMask",materialExpressionConstant:"/Script/Engine.MaterialExpressionConstant",materialExpressionConstant2Vector:"/Script/Engine.MaterialExpressionConstant2Vector",materialExpressionConstant3Vector:"/Script/Engine.MaterialExpressionConstant3Vector",materialExpressionConstant4Vector:"/Script/Engine.MaterialExpressionConstant4Vector",materialExpressionFunctionInput:"/Script/Engine.MaterialExpressionFunctionInput",materialExpressionLogarithm:"/Script/InterchangeImport.MaterialExpressionLogarithm",materialExpressionLogarithm10:"/Script/Engine.MaterialExpressionLogarithm10",materialExpressionLogarithm2:"/Script/Engine.MaterialExpressionLogarithm2",materialExpressionMaterialFunctionCall:"/Script/Engine.MaterialExpressionMaterialFunctionCall",materialExpressionSquareRoot:"/Script/Engine.MaterialExpressionSquareRoot",materialExpressionSubtract:"/Script/Engine.MaterialExpressionSubtract",materialExpressionTextureCoordinate:"/Script/Engine.MaterialExpressionTextureCoordinate",materialExpressionTextureSample:"/Script/Engine.MaterialExpressionTextureSample",materialExpressionWorldPosition:"/Script/Engine.MaterialExpressionWorldPosition",materialGraphNode:"/Script/UnrealEd.MaterialGraphNode",materialGraphNodeComment:"/Script/UnrealEd.MaterialGraphNode_Comment",metasoundEditorGraphExternalNode:"/Script/MetasoundEditor.MetasoundEditorGraphExternalNode",multiGate:"/Script/BlueprintGraph.K2Node_MultiGate",niagaraBool:"/Script/Niagara.NiagaraBool",niagaraClipboardContent:"/Script/NiagaraEditor.NiagaraClipboardContent",niagaraDataInterfaceCollisionQuery:"/Script/Niagara.NiagaraDataInterfaceCollisionQuery",niagaraDataInterfaceCurlNoise:"/Script/Niagara.NiagaraDataInterfaceCurlNoise",niagaraDataInterfaceVolumeTexture:"/Script/Niagara.NiagaraDataInterfaceVolumeTexture",niagaraFloat:"/Script/Niagara.NiagaraFloat",niagaraInt32:"/Script/Niagara.NiagaraInt32",niagaraNodeConvert:"/Script/NiagaraEditor.NiagaraNodeConvert",niagaraNodeFunctionCall:"/Script/NiagaraEditor.NiagaraNodeFunctionCall",niagaraNodeInput:"/Script/NiagaraEditor.NiagaraNodeInput",niagaraNodeOp:"/Script/NiagaraEditor.NiagaraNodeOp",niagaraParameterMap:"/Script/Niagara.NiagaraParameterMap",niagaraPosition:"/Script/Niagara.NiagaraPosition",pawn:"/Script/Engine.Pawn",pcgEditorGraphNode:"/Script/PCGEditor.PCGEditorGraphNode",pcgEditorGraphNodeInput:"/Script/PCGEditor.PCGEditorGraphNodeInput",pcgEditorGraphNodeOutput:"/Script/PCGEditor.PCGEditorGraphNodeOutput",pcgHiGenGridSizeSettings:"/Script/PCG.PCGHiGenGridSizeSettings",pcgSubgraphSettings:"/Script/PCG.PCGSubgraphSettings",promotableOperator:"/Script/BlueprintGraph.K2Node_PromotableOperator",quat4f:"/Script/CoreUObject.Quat4f",removeDelegate:"/Script/BlueprintGraph.K2Node_RemoveDelegate",reverseForEachLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ReverseForEachLoop",rotator:"/Script/CoreUObject.Rotator",select:"/Script/BlueprintGraph.K2Node_Select",self:"/Script/BlueprintGraph.K2Node_Self",slateBlueprintLibrary:"/Script/UMG.SlateBlueprintLibrary",soundCueGraphNode:"/Script/AudioEditor.SoundCueGraphNode",soundNodeWavePlayer:"/Script/Engine.SoundNodeWavePlayer",spawnActorFromClass:"/Script/BlueprintGraph.K2Node_SpawnActorFromClass",switchEnum:"/Script/BlueprintGraph.K2Node_SwitchEnum",switchGameplayTag:"/Script/GameplayTagsEditor.GameplayTagsK2Node_SwitchGameplayTag",switchInteger:"/Script/BlueprintGraph.K2Node_SwitchInteger",switchName:"/Script/BlueprintGraph.K2Node_SwitchName",switchString:"/Script/BlueprintGraph.K2Node_SwitchString",timeline:"/Script/BlueprintGraph.K2Node_Timeline",timeManagementBlueprintLibrary:"/Script/TimeManagement.TimeManagementBlueprintLibrary",transform:"/Script/CoreUObject.Transform",typedElementHandleLibrary:"/Script/TypedElementFramework.TypedElementHandleLibrary",userDefinedEnum:"/Script/Engine.UserDefinedEnum",variableGet:"/Script/BlueprintGraph.K2Node_VariableGet",variableSet:"/Script/BlueprintGraph.K2Node_VariableSet",vector:"/Script/CoreUObject.Vector",vector2D:"/Script/CoreUObject.Vector2D",vector2f:"/Script/CoreUObject.Vector2f",vector3f:"/Script/CoreUObject.Vector3f",vector4f:"/Script/CoreUObject.Vector4f",whileLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:WhileLoop"};static pinInputWrapWidth=145;static pinUpdateEventName="ueb-pin-update";static removeEventName="ueb-element-delete";static scale={[-12]:.133333,[-11]:.166666,[-10]:.2,[-9]:.233333,[-8]:.266666,[-7]:.3,[-6]:.333333,[-5]:.375,[-4]:.5,[-3]:.675,[-2]:.75,[-1]:.875,0:1,1:1.25,2:1.375,3:1.5,4:1.675,5:1.75,6:1.875,7:2};static smoothScrollTime=1e3;static stringEscapedCharacters=/["\\]/g;static subObjectAttributeNamePrefix="#SubObject";static subObjectAttributeNameFromEntity=(e,t=!1)=>this.subObjectAttributeNamePrefix+(!t&&e.Class?`_${e.Class.type}`:"")+"_"+e.Name;static subObjectAttributeNameFromReference=(e,t=!1)=>this.subObjectAttributeNamePrefix+(t?"":"_"+e.type)+"_"+e.path;static subObjectAttributeNameFromName=e=>this.subObjectAttributeNamePrefix+"_"+e;static switchTargetPattern=/\/Script\/[\w\.\/\:]+K2Node_Switch([A-Z]\w+)+/;static trackingMouseEventName={begin:"ueb-tracking-mouse-begin",end:"ueb-tracking-mouse-end"};static unescapedBackslash=/(?<=(?:[^\\]|^)(?:\\\\)*)\\(?!\\)/;static windowApplyEventName="ueb-window-apply";static windowApplyButtonText="OK";static windowCancelEventName="ueb-window-cancel";static windowCancelButtonText="Cancel";static windowCloseEventName="ueb-window-close";static CommonEnums={[this.paths.eAttachmentRule]:["KeepRelative","KeepWorld","SnapToTarget"],[this.paths.eDrawDebugTrace]:["None","ForOneFrame","ForDuration","Persistent"],[this.paths.eMaterialSamplerType]:["Color","Grayscale","Alpha","Normal","Masks","Distance Field Font","Linear Color","Linear Grayscale","Data","External","Virtual Color","Virtual Grayscale","Virtual Alpha","Virtual Normal","Virtual Mask","Virtual Linear Color","Virtual Linear Grayscal"],[this.paths.eNiagara_Float4Channel]:[["NewEnumerator0","R"],["NewEnumerator1","G"],["NewEnumerator2","B"],["NewEnumerator3","A"]],[this.paths.eSamplerSourceMode]:["From texture asset","Shared: Wrap","Shared: Clamp","Hidden"],[this.paths.eSearchCase]:["CaseSensitive","IgnoreCase"],[this.paths.eWorldPositionIncludedOffsets]:["Absolute World Position (Including Material Shader Offsets)","Absolute World Position (Excluding Material Shader Offsets)","Camera Relative World Position (Including Material Shader Offsets)","Camera Relative World Position (Excluding Material Shader Offsets)"],[this.paths.eSearchDir]:["FromStart","FromEnd"],[this.paths.eSpawnActorCollisionHandlingMethod]:[["Undefined","Default"],["AlwaysSpawn","Always Spawn, Ignore Collisions"],["AdjustIfPossibleButAlwaysSpawn","Try To Adjust Location, But Always Spawn"],["AdjustIfPossibleButDontSpawnIfColliding","Try To Adjust Location, Don't Spawn If Still Colliding"],["DontSpawnIfColliding","Do Not Spawn"]],[this.paths.eTextureMipValueMode]:["None (use computed mip level)","MipLevel (absolute, 0 is full resolution)","MipBias (relative to the computed mip level)","Derivative (explicit derivative to compute mip level)"],[this.paths.eTraceTypeQuery]:[["TraceTypeQuery1","Visibility"],["TraceTypeQuery2","Camera"]]};static ModifierKeys=["Ctrl","Shift","Alt","Meta"];static rgba=["R","G","B","A"];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:"ArrowLeft",ArrowUp:"ArrowUp",ArrowRight:"ArrowRight",ArrowDown:"ArrowDown",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 oe{static clamp(e,t=-1/0,i=1/0){return Math.min(Math.max(e,t),i)}static getScale(e){const t=e.blueprint?.getScale()??getComputedStyle(e).getPropertyValue("--ueb-scale");return""!=t?parseFloat(t):1}static minDecimals(e,t=1,i=1e-8){const r=e*10**t;return Math.abs(r%1)>i?e.toString():e.toFixed(t)}static roundDecimals(e,t=1){const i=10**t;return Math.round(e*i)/i}static printExponential(e){if(e==Number.POSITIVE_INFINITY)return"inf";if(e==Number.NEGATIVE_INFINITY)return"-inf";const t=Math.round(e);if(t>=1e3){const i=Math.floor(Math.log10(t));return`${Math.round(e/10**(i-2))/100}e+${i<10?"0":""}${i}`}return 0==Math.floor(e)?e.toString():this.roundDecimals(e,Math.max(0,3-Math.floor(e).toString().length)).toString()}static approximatelyEqual(e,t,i=1e-8){return!(Math.abs(e-t)>i)}static convertLocation(e,t,i=!1){const r=i?1:1/oe.getScale(t),n=t.getBoundingClientRect();return[Math.round((e[0]-n.x)*r),Math.round((e[1]-n.y)*r)]}static isSerialized(e,t){return e.attributes?.[t]?.serialized??e.constructor.attributes?.[t]?.serialized??!1}static objectGet(e,t,i=void 0){if(void 0!==e){if(!(t instanceof Array))throw new TypeError("UEBlueprint: 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]]:oe.objectGet(e[t[0]],t.slice(1),i):i}}static objectSet(e,t,i,r=Object){if(!(t instanceof Array))throw new TypeError("Expected keys to be an array.");if(1==t.length){if(t[0]in e||void 0===e[t[0]])return e[t[0]]=i,!0}else if(t.length>0)return e[t[0]]instanceof Object||(e[t[0]]=new r),oe.objectSet(e[t[0]],t.slice(1),i,r);return!1}static snapToGrid(e,t,i){return 1===i?[e,t]:[i*Math.floor(e/i),i*Math.floor(t/i)]}static mergeArrays(e=[],t=[],i=(e,t)=>e==t,r=e=>{}){let n=[];e=[...e],t=[...t];e:for(;;){for(let s=0;s<t.length;++s)for(let a=0;a<e.length;++a)if(i(e[a],t[s])){n.push(...e.splice(0,a),...t.splice(0,s).map((e=>(r(e),e))),...e.splice(0,1)),t.shift();continue e}break e}return n.push(...e),n.push(...t.filter((e=>!n.some((t=>i(t,e))))).map(((e,t)=>(r(e),e)))),n}static escapeNewlines(e){return e.replaceAll("\n","\\n").replaceAll("\t","\\t")}static escapeString(e,t=!0){let i=e.replaceAll(new RegExp(`(${ae.stringEscapedCharacters.source})`,"g"),"\\$1");return t&&(i=i.replaceAll("\n","\\n").replaceAll("\t","\\t")),i}static unescapeString(e){return e.replaceAll(new RegExp(ae.unescapedBackslash.source+"t","g"),"\t").replaceAll(new RegExp(ae.unescapedBackslash.source+"n","g"),"\n").replaceAll(new RegExp(`\\\\(${ae.stringEscapedCharacters.source})`,"g"),"$1")}static clearHTMLWhitespace(e){return e.replaceAll(" "," ").replaceAll(/<br\s*\/>|<br>/g,"\n").replaceAll(/(\<!--.*?\-->)/g,"")}static encodeHTMLWhitespace(e){return e.replaceAll(" "," ")}static capitalFirstLetter(e){return 0===e.length?e:e.charAt(0).toUpperCase()+e.slice(1)}static formatStringName(e=""){return e.replace(/^\s*b(?=[A-Z])/,"").replaceAll(ae.nameRegexSpaceReplacement," ").trim().split(" ").map((e=>oe.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 getNameFromPath(e,t=!1){const i=t?/([^\.\/]+?)(?:_\d+)$/:/([^\.\/]+)$/;return e.match(i)?.[1]??""}static getPolarCoordinates(e,t,i=!1){let r=Math.atan2(t,e);return i&&r<0&&(r=2*Math.PI+r),[Math.sqrt(e*e+t*t),r]}static getCartesianCoordinates(e,t){return[e*Math.cos(t),e*Math.sin(t)]}static range(e=0,t=0,i=(t>=e?1:-1)){return Array.from({length:Math.ceil((t-e)/i)},((t,r)=>e+r*i))}static getFirstWordOrder(e){return new RegExp(/\s*/.source+e.join(/[^\n]+\n\s*/.source)+/\s*/.source)}static paste(e,t){const i=new ClipboardEvent("paste",{bubbles:!0,cancelable:!0,clipboardData:new DataTransfer});i.clipboardData.setData("text",t),e.dispatchEvent(i)}static async copy(e){const t=new ClipboardEvent("copy",{bubbles:!0,cancelable:!0,clipboardData:new DataTransfer});e.dispatchEvent(t)}static animate(e,t,i,r,n=e=>{},s=e=>{const t=e**3.5;return t/(t+(1-e)**3.5)}){let a;const o=l=>{void 0===a&&(a=l);let c=(l-a)/i;oe.approximatelyEqual(c,1)||c>1?c=1:n(requestAnimationFrame(o));const u=e+(t-e)*s(c);r(u)};n(requestAnimationFrame(o))}}class le extends ne{#e;get blueprint(){return this.#e}set blueprint(e){this.#e=e}#t;get entity(){return this.#t}set entity(e){this.#t=e}#i;get template(){return this.#i}isInitialized=!1;isSetup=!1;inputObjects=[];initialize(e,t){this.requestUpdate(),this.#t=e,this.#i=t,this.#i.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())),this.acknowledgeDelete()}createRenderRoot(){return this}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)}acknowledgeDelete(){let e=new CustomEvent(ae.removeEventName);this.dispatchEvent(e)}isSameGraph(e){return this.blueprint&&this.blueprint==e?.blueprint}}class ce{static arrayPin=z`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 0H0V4H4V0Z" fill="currentColor"/><path d="M10 0H6V4H10V0Z" fill="currentColor"/><path d="M16 0H12V4H16V0Z" fill="currentColor"/><path d="M4 6H0V10H4V6Z" fill="currentColor"/><path class="ueb-pin-tofill" d="M10 6H6V10H10V6Z" fill="black"/><path d="M16 6H12V10H16V6Z" fill="currentColor"/><path d="M4 12H0V16H4V12Z" fill="currentColor"/><path d="M10 12H6V16H10V12Z" fill="currentColor"/><path d="M16 12H12V16H16V12Z" fill="currentColor"/></svg>`;static branchNode=z`<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=z`<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=z`<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=z`<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 convert=z`<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><path fill="#3e7fbc" d="M 4 0 H 16 V 32 H 4 L 0 28 V 4 Z"/><path fill="#bdd6ef" d="M 2 8 H 14 V 30 H 4 L 2 28 Z"/><path fill="#bc3e4a" d="M 16 0 H 28 L 32 4 V 28 L 28 32 H 16 Z"/><path fill="#efbdc1" d="M 18 8 H 30 V 27 L 27 30 H 18 Z"/></svg>`;static correct=z`<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 delegate=z`<svg width="11" height="11" viewBox="-2 -2 32 32" xmlns="http://www.w3.org/2000/svg"><rect class="ueb-pin-tofill" fill="black" width="28" height="28" rx="4" stroke="currentColor" stroke-width="5"/></svg>`;static doN=z`<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path fill="white" d="M1 12V8H9V4L16 10L9 16V12H1Z"/><path fill="white" d="M7 6L6 6L4 2.66667V6H3V1H4L6 4.33333V1H7V6Z"/></svg>`;static doOnce=z`<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M1 12V8H9V4L16 10L9 16V12H1Z" fill="white"/><path d="M6 6H5L4.98752 2.42387L4 2.8642V1.893L5.89305 1H6V6Z" fill="white"/><rect x="4" y="5" width="3" height="1" fill="white"/></svg>`;static enum=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="white" d="M9 5V0H2V16H14V5H9ZM3.2 4.4L4.5 4H4.6V7H4V4.7L3.2 4.9V4.4ZM4.7 14.8C4.6 14.9 4.3 15 4 15C3.7 15 3.5 14.9 3.3 14.8C3.1 14.6 3 14.4 3 14.2H3.6C3.6 14.3 3.6 14.4 3.7 14.5C3.8 14.6 3.9 14.6 4 14.6C4.1 14.6 4.2 14.6 4.3 14.5C4.4 14.4 4.4 14.3 4.4 14.2C4.4 13.9 4.2 13.8 3.9 13.8H3.7V13.3H4C4.1 13.3 4.3 13.3 4.3 13.2C4.4 13.1 4.4 13 4.4 12.9C4.4 12.8 4.4 12.7 4.3 12.6C4.2 12.5 4.1 12.5 4 12.5C3.9 12.5 3.8 12.5 3.7 12.6C3.6 12.7 3.6 12.7 3.6 12.8H3C3 12.6 3 12.5 3.1 12.4C3.2 12.3 3.3 12.2 3.4 12.1C3.7 12 3.8 12 4 12C4.3 12 4.6 12.1 4.7 12.2C4.9 12.4 5 12.6 5 12.8C5 12.9 5 13.1 4.9 13.2C4.8 13.3 4.7 13.4 4.6 13.5C4.8 13.6 4.9 13.6 5 13.8C5 13.8 5 14 5 14.1C5 14.4 4.9 14.6 4.7 14.8ZM5.1 11H3.1V10.6L4.1 9.6C4.2 9.5 4.3 9.3 4.4 9.2C4.4 9.1 4.4 9 4.4 8.9C4.4 8.8 4.4 8.7 4.3 8.6C4.2 8.5 4.1 8.5 4 8.5C3.9 8.5 3.8 8.5 3.7 8.6C3.6 8.7 3.6 8.8 3.6 9H3C3 8.8 3 8.7 3.1 8.5C3.2 8.4 3.3 8.2 3.5 8.1C3.7 8 3.8 8 4 8C4.3 8 4.5 8.1 4.7 8.2C4.9 8.4 5 8.6 5 8.8C5 9 5 9.1 4.9 9.3C4.8 9.4 4.7 9.6 4.5 9.8L3.8 10.5H5.1V11ZM12 15H6V14H12V15ZM12 11H6V10H12V11ZM12 7H6V6H12V7Z"/><path d="M9 0H8L14 6V5L9 0Z" fill="white"/></svg>`;static event=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="0.929031" y="8" width="10" height="10" rx="0.5" transform="rotate(-45 0.929031 8)" stroke="white"/><path d="M5 4.00024L8 1.00024V6.00024H3L5 4.00024Z" fill="white"/><path d="M6 13.0002L3 10.0002L8 10.0002L8 15.0002L6 13.0002Z" fill="white"/><path d="M4.53551 6.82854L4.53551 11.0712L0.999977 7.53564L4.53551 4.00011L4.53551 6.82854Z" fill="white"/></svg>`;static execPin=z`<svg width="15" height="15" 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=z`<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 flipflop=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14 2L10 14" stroke="white" stroke-width="2" stroke-linecap="round"/><path d="M6 2L2 14" stroke="white" stroke-width="2" stroke-linecap="round"/><path d="M6 2L10 14" stroke="white" stroke-opacity="0.5" stroke-width="2" stroke-linecap="round"/></svg>`;static forEachLoop=z`<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=z`<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 gamepad=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="white" d="m 15.2107 8.525 c -0.6619 -1.7207 -1.9856 -4.8978 -3.3094 -4.8978 c -1.9856 0 -1.9856 1.8532 -2.7799 1.8532 c -0.3971 0 -1.8532 0 -2.3827 0 c -0.7943 0 -0.7943 -1.8532 -2.6475 -1.8532 c -1.3238 0 -2.6475 3.0446 -3.3094 4.8978 c -1.059 3.3094 -1.1914 4.8979 1.1914 4.8979 c 2.6475 0 2.6475 -3.0445 5.9569 -3.0445 c 3.3094 0 3.4418 3.0445 5.9569 3.0445 c 2.5151 0 2.5151 -1.5885 1.3238 -4.8979 z m -8.472 0 h -1.3238 v 1.3238 h -1.3238 v -1.3238 h -1.3238 v -1.3238 h 1.3238 v -1.3238 h 1.3238 v 1.3238 h 1.3238 v 1.3238 z m 4.6331 1.5887 c -1.1914 0 -2.2504 -0.9268 -2.2504 -2.2505 c 0 -1.1913 0.9267 -2.2503 2.2504 -2.2503 c 1.3238 0 2.2504 0.9266 2.2504 2.2503 c 0 1.1915 -1.059 2.2505 -2.2504 2.2505 z m -0.0001 -2.9124 c -0.3971 0 -0.6619 0.2648 -0.6619 0.6619 c 0 0.3971 0.2648 0.6619 0.6619 0.6619 c 0.3971 0 0.6619 -0.2648 0.6619 -0.6619 c 0 -0.3971 -0.2648 -0.6619 -0.6619 -0.6619 z"/></svg>`;static genericPin=z`<svg width="16" height="12" viewBox="0 0 42 32" xmlns="http://www.w3.org/2000/svg"><circle class="ueb-pin-tofill" cx="16" cy="16" r="13" fill="black" stroke="currentColor" stroke-width="5"/><path fill="currentColor" d="M 34 6 L 34 26 L 42 16 Z"/></svg>`;static keyboard=z`<svg viewBox="0 -3 16 16" xmlns="http://www.w3.org/2000/svg"><path fill="white" d="M 1 10 H 15 c 0.2652 0 0.5195 -0.1054 0.707 -0.293 c 0.1875 -0.1875 0.293 -0.4418 0.293 -0.707 v -8 c 0 -0.2652 -0.1054 -0.5195 -0.293 -0.707 c -0.1875 -0.1875 -0.4418 -0.293 -0.707 -0.293 H 1 c -0.2652 0 -0.5195 0.1054 -0.707 0.293 c -0.1875 0.1875 -0.293 0.4418 -0.293 0.707 V 9 c 0 0.2652 0.1054 0.5195 0.293 0.707 c 0.1875 0.1875 0.4418 0.293 0.707 0.293 Z M 14 6 h -3 v -2 h 3 v 2 Z M 13 1 h 2 v 2 h -2 v -2 Z M 10 1 h 2 v 2 h -2 v -2 Z M 10 6 h -2 v -2 h 2 v 2 Z M 7 1 h 2 v 2 h -2 v -2 Z M 7 6 h -2 v -2 h 2 v 2 Z M 4 1 h 2 v 2 h -2 v -2 Z M 4 6 h -2 v -2 h 2 v 2 Z M 1 1 h 2 v 2 h -2 v -2 Z M 1 7 h 2 v 2 h -2 v -2 M 4 7 h 8 v 2 h -8 v -2 M 13 7 h 2 v 2 h -2 v -2 Z"/></svg>`;static loop=z`<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=z`<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 mapPin=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M4 0H0V4H4V0Z" fill="currentColor"/><path d="M4 6H0V10H4V6Z" fill="currentColor"/><path d="M4 12H0V16H4V12Z" fill="currentColor"/><path d="M16 0H6V4H16V0Z" fill="white"/><path d="M16 6H6V10H16V6Z" fill="white"/><path d="M16 12H6V16H16V12Z" fill="white"/></svg>`;static makeArray=z`<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=z`<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 makeSet=z`<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="M6 8.00205V7.43062C6.40147 7.37088 6.79699 7.28299 7.18286 7.16777C7.30414 7.11578 7.40659 7.03462 7.47858 6.93348C7.57165 6.81021 7.63108 6.66933 7.65215 6.52205C7.6832 6.31181 7.69609 6.09976 7.69072 5.88777C7.67539 5.53753 7.70341 5.18685 7.77429 4.84205C7.81918 4.66059 7.92446 4.49533 8.07643 4.36777C8.26269 4.22923 8.48285 4.13138 8.71929 4.08205C9.01252 4.02392 9.31249 3.99706 9.61287 4.00205H9.85715V4.57348C9.66398 4.58307 9.47806 4.64211 9.32179 4.7435C9.16552 4.84489 9.04559 4.9843 8.97644 5.14491C8.92057 5.24999 8.89621 5.36613 8.90572 5.48205C8.90572 5.64205 8.90572 5.95062 8.86715 6.40205C8.85805 6.6136 8.81697 6.8231 8.74501 7.02491C8.69216 7.17345 8.60697 7.3113 8.49429 7.43062C8.33135 7.64 8.1415 7.83177 7.92858 8.00205" fill="white"/><path d="M7.92858 8.00195C8.14537 8.18165 8.33547 8.3852 8.49429 8.60767C8.60419 8.72229 8.6892 8.85404 8.74501 8.99624C8.81697 9.19805 8.85805 9.40755 8.86715 9.6191C8.89286 10.0724 8.90572 10.381 8.90572 10.5448C8.89679 10.6607 8.92112 10.7767 8.97644 10.882C9.05077 11.0375 9.17272 11.1714 9.32842 11.2683C9.48411 11.3653 9.66731 11.4215 9.85715 11.4305V12.002H9.61287C9.31086 12.0112 9.0087 11.9881 8.71286 11.9334C8.47744 11.8816 8.25788 11.784 8.07001 11.6477C7.91926 11.5193 7.81421 11.3543 7.76786 11.1734C7.69764 10.8285 7.66962 10.4779 7.68429 10.1277C7.69081 9.91186 7.67791 9.69593 7.64572 9.48195C7.62465 9.33468 7.56522 9.1938 7.47215 9.07052C7.40016 8.96939 7.29771 8.88822 7.17643 8.83624C6.79266 8.72131 6.3993 8.63342 6 8.57338V8.00195" fill="white"/><path d="M13.0712 8.00197C12.8582 7.83169 12.6684 7.63992 12.5054 7.43054C12.3942 7.31461 12.3091 7.18076 12.2547 7.03626C12.1828 6.83445 12.1417 6.62495 12.1326 6.4134C12.1326 5.96197 12.094 5.6534 12.094 5.4934C12.1058 5.37369 12.0814 5.25334 12.0233 5.14483C11.9541 4.98422 11.8342 4.84481 11.6779 4.74342C11.5217 4.64203 11.3357 4.58299 11.1426 4.5734V4.00197H11.3869C11.6889 3.99277 11.991 4.01579 12.2869 4.07054C12.5233 4.11987 12.7435 4.21772 12.9297 4.35626C13.0817 4.48382 13.187 4.64908 13.2319 4.83054C13.3027 5.17534 13.3308 5.52602 13.3154 5.87626C13.3094 6.09206 13.3223 6.30795 13.354 6.52197C13.3751 6.66925 13.4345 6.81013 13.5276 6.9334C13.5996 7.03454 13.702 7.1157 13.8233 7.16769C14.2071 7.28262 14.6004 7.37051 14.9997 7.43054V8.00197" fill="white"/><path d="M14.9997 8.00195V8.57338C14.5983 8.63312 14.2027 8.72102 13.8169 8.83624C13.6956 8.88822 13.5931 8.96939 13.5212 9.07052C13.4281 9.1938 13.3686 9.33468 13.3476 9.48195C13.3154 9.69593 13.3025 9.91186 13.309 10.1277C13.3237 10.4779 13.2957 10.8285 13.2254 11.1734C13.1791 11.3543 13.074 11.5193 12.9233 11.6477C12.7354 11.784 12.5159 11.8816 12.2804 11.9334C11.9846 11.9881 11.6824 12.0112 11.3804 12.002H11.1426V11.4305C11.3353 11.4196 11.5205 11.36 11.6765 11.2588C11.8325 11.1576 11.9528 11.0189 12.0233 10.8591C12.0786 10.7539 12.1029 10.6378 12.094 10.522C12.094 10.3543 12.1069 10.0458 12.1326 9.59624C12.1417 9.38469 12.1828 9.17519 12.2547 8.97338C12.3105 8.83119 12.3955 8.69943 12.5054 8.58481C12.666 8.37037 12.856 8.17457 13.0712 8.00195" fill="white"/></svg>`;static makeStruct=z`<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 metasoundFunction=z`<svg viewBox="-8 1 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M7.14453 3.32422C7.14453 3.53255 7.07292 3.70833 6.92969 3.85156C6.78646 3.98828 6.61068 4.05664 6.40234 4.05664C6.19401 4.05664 6.00846 3.98828 5.8457 3.85156C5.68945 3.71484 5.61133 3.53581 5.61133 3.31445C5.61133 3.0931 5.69922 2.91081 5.875 2.76758C5.82943 2.61784 5.7513 2.49414 5.64063 2.39648C5.52995 2.29232 5.39323 2.24023 5.23047 2.24023C5.02214 2.24023 4.85612 2.31185 4.73242 2.45508C4.61523 2.5918 4.52734 2.76107 4.46875 2.96289C4.41016 3.1582 4.37435 3.36328 4.36133 3.57812C4.34831 3.79297 4.3418 3.972 4.3418 4.11523C4.3418 4.42773 4.35482 4.74023 4.38086 5.05273C4.4069 5.35872 4.4362 5.66797 4.46875 5.98047H6.38281V6.86914H4.61523L5.13281 11.3418C5.14583 11.4915 5.15885 11.6413 5.17188 11.791C5.19141 11.9473 5.20117 12.1003 5.20117 12.25C5.20117 12.5885 5.1556 12.9206 5.06445 13.2461C4.97331 13.5781 4.83333 13.8711 4.64453 14.125C4.46224 14.3854 4.22786 14.5937 3.94141 14.75C3.66146 14.9128 3.33268 14.9941 2.95508 14.9941C2.69466 14.9941 2.44401 14.9453 2.20313 14.8477C1.96875 14.7565 1.75716 14.6263 1.56836 14.457C1.38607 14.2878 1.23958 14.0859 1.12891 13.8516C1.01823 13.6237 0.962891 13.3763 0.962891 13.1094C0.962891 12.8945 1.03451 12.7187 1.17773 12.582C1.32096 12.4453 1.49675 12.377 1.70508 12.377C1.80273 12.377 1.89714 12.3932 1.98828 12.4258C2.08594 12.4648 2.17057 12.5169 2.24219 12.582C2.32031 12.6471 2.37891 12.722 2.41797 12.8066C2.46354 12.8978 2.48633 12.9954 2.48633 13.0996C2.48633 13.3079 2.4082 13.4902 2.25195 13.6465C2.29753 13.7897 2.37565 13.9102 2.48633 14.0078C2.59701 14.112 2.72721 14.1641 2.87695 14.1641C3.05273 14.1641 3.19596 14.1087 3.30664 13.998C3.42383 13.8939 3.51497 13.7637 3.58008 13.6074C3.64518 13.4577 3.6875 13.2949 3.70703 13.1191C3.73307 12.9499 3.74609 12.8001 3.74609 12.6699C3.74609 12.4225 3.72982 12.1751 3.69727 11.9277C3.67122 11.6803 3.63867 11.4329 3.59961 11.1855L3.58984 11.1758L3.0625 6.86914H1.60742V5.98047H2.96484C2.93229 5.73307 2.90625 5.48893 2.88672 5.24805C2.8737 5.00716 2.86719 4.76302 2.86719 4.51562C2.86719 4.15104 2.903 3.7832 2.97461 3.41211C3.04622 3.04102 3.16992 2.70898 3.3457 2.41602C3.52148 2.11654 3.7526 1.8724 4.03906 1.68359C4.33203 1.49479 4.69661 1.40039 5.13281 1.40039C5.39974 1.40039 5.65365 1.44922 5.89453 1.54687C6.13542 1.64453 6.34701 1.78125 6.5293 1.95703C6.7181 2.1263 6.86784 2.32812 6.97852 2.5625C7.08919 2.79687 7.14453 3.05078 7.14453 3.32422Z"/></svg>`;static mouse=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path opacity="0.5" fill-rule="evenodd" clip-rule="evenodd" d="M8.85714 8.34043H14L13.9143 6.6383H8.85714V0H7.14286V6.6383H2.08571L2 8.34043H7.14286H8.85714Z" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M8.85714 0C11 0.595745 13.4 3.31915 13.9143 6.6383H8.85714V0ZM7.14286 0C5 0.595745 2.6 3.31915 2.08571 6.6383H7.14286V0ZM8.85714 8.34043H7.14286H2C2 12.5957 3.02857 16 8 16C12.9714 16 14 12.5957 14 8.34043H8.85714Z" fill="white"/></svg>`;static node=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="16" height="15" rx="1" fill="white" fill-opacity="0.5"/><rect x="0.5" y="0.5" width="15" height="14" rx="0.5" stroke="white"/><rect x="1" width="14" height="5" fill="white"/></svg>`;static operationPin=z`<svg width="14" height="14" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><circle class="ueb-pin-tostroke" cx="16" cy="16" r="14" stroke="currentColor" stroke-width="4"/><circle cx="16" cy="16" r="9.5" fill="#817a7a"/></svg>`;static pcgStackPin=z`<svg width="18" height="22" viewBox="4 0 28 36" xmlns="http://www.w3.org/2000/svg"><path stroke="black" stroke-width="1" fill="rgba(var(--ueb-pin-color-rgb), 0.5)" d="M25.8,32.2V17.5c0-1.7,1.3-3.1,3-3.1s3,1.3,3,3.1v14.7c0,1.8-1.3,3.2-3,3.2C27,35.5,25.8,34,25.8,32.2z"/><path stroke="black" stroke-width="1" fill="rgba(var(--ueb-pin-color-rgb), 0.75)" d="M18.8,30.1V11.8c0-2.4,1.8-4.3,4-4.3s4,1.9,4,4.3v18.4c0,2.4-1.8,4.3-4,4.3C20.5,34.5,18.8,32.5,18.8,30.1z"/><path stroke="black" stroke-width="1" fill="currentColor" d="M21.3,6.4v21.3c0,3.2-2.4,5.8-5.5,5.8s-5.5-2.5-5.5-5.8V6.3c0-3.2,2.4-5.8,5.5-5.8C18.8,0.5,21.2,3,21.3,6.4z"/><circle class="ueb-pin-tofill ueb-pin-tostroke" stroke="currentColor" stroke-width="1" cx="10.2" cy="9" r="6"/><circle class="ueb-pin-tofill ueb-pin-tostroke" stroke="currentColor" stroke-width="1" cx="10.2" cy="17" r="6"/><circle class="ueb-pin-tofill ueb-pin-tostroke" stroke="currentColor" stroke-width="1" cx="10.2" cy="25" r="6"/></svg>`;static pcgPin=z`<svg class="ueb-pin-reflect-output" width="12" height="20" viewBox="8 0 20 36" xmlns="http://www.w3.org/2000/svg"><path stroke="black" stroke-width="1" fill="currentColor" d="M21.2,34.5c-3.1,0-5.5-2.6-5.5-5.8V7.3c0-3.3,2.4-5.8,5.5-5.8s5.5,2.6,5.5,5.8v21.3C26.8,31.9,24.3,34.5,21.2,34.5z"/><circle class="ueb-pin-tofill ueb-pin-tostroke" stroke="currentColor" stroke-width="1" cx="15.8" cy="10" r="6"/><circle class="ueb-pin-tofill ueb-pin-tostroke" stroke="currentColor" stroke-width="1" cx="15.8" cy="18" r="6"/><circle class="ueb-pin-tofill ueb-pin-tostroke" stroke="currentColor" stroke-width="1" cx="15.8" cy="26" r="6"/></svg>`;static pcgParamPin=z`<svg class="ueb-pin-reflect-output" width="18" height="12" viewBox="8 8 19 21" xmlns="http://www.w3.org/2000/svg"><path class="ueb-pin-tofill" stroke="currentcolor" stroke-width="1" d="M8,18c-2.5,0-4.5-2-4.5-4.5S5.5,9,8,9h20c2.5,0,4.5,2,4.5,4.5S30.5,18,28,18H8z"/><path fill="currentColor" d="M31,27.5H13c-0.5,0-1-0.4-1-1v-4c0-0.5,0.4-1,1-1h18c0.5,0,1,0.4,1,1v4C32,27.1,31.6,27.5,31,27.5z"/></svg>`;static pcgSpatialPin=z`<svg width="14" height="16" viewBox="5 4 28 28" xmlns="http://www.w3.org/2000/svg"><path stroke="#ffffff" stroke-width="1" fill="#808080" d="M20.5,33h-10c-2.8,0-5-2.2-5-5V8c0-2.8,2.2-5,5-5h10c2.8,0,5,2.2,5,5v20C25.5,30.8,23.3,33,20.5,33z"/><circle class="ueb-pin-tofill" stroke="#ffffff" stroke-width="1" fill="#202020" cx="23.7" cy="18" r="10"/></svg>`;static plusCircle=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" d="M8.00016 10.6667V5.33334M5.3335 8H10.6668M8.00016 1.33334C4.31826 1.33334 1.3335 4.3181 1.3335 8C1.3335 11.6819 4.31826 14.6667 8.00016 14.6667C11.6821 14.6667 14.6668 11.6819 14.6668 8C14.6668 4.3181 11.6821 1.33334 8.00016 1.33334Z"/></svg>`;static questionMark=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8 15C9.10456 15 10 14.1046 10 13C10 11.8954 9.10456 11 8 11C6.89544 11 6 11.8954 6 13C6 14.1046 6.89544 15 8 15Z" fill="white"/><path d="M5 4.86697C5.15 3.33619 6.5 2.26465 8 2.26465C9.65 2.26465 11 3.64235 11 5.3262C11 7.01005 8 7.92852 8 9.00006" stroke="white" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></svg>`;static referencePin=z`<svg width="12" height="12" 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=z`<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 setPin=z`<svg width="16" height="16" viewBox="2 2 12 12" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 7.99956V6.99956C1.62451 6.89501 2.23976 6.7412 2.84 6.53956C3.02865 6.44859 3.18802 6.30655 3.3 6.12956C3.44478 5.91383 3.53723 5.6673 3.57 5.40956C3.6183 5.04164 3.63836 4.67055 3.63 4.29956C3.60615 3.68664 3.64974 3.07296 3.76 2.46956C3.82982 2.152 3.99359 1.86279 4.23 1.63956C4.51974 1.39713 4.86221 1.22589 5.23 1.13956C5.68612 1.03782 6.15275 0.990826 6.62 0.999563H7V1.99956C6.69952 2.01634 6.4103 2.11967 6.16722 2.2971C5.92414 2.47453 5.73757 2.71849 5.63 2.99956C5.5431 3.18346 5.5052 3.3867 5.52 3.58956C5.52 3.86956 5.52 4.40956 5.46 5.19956C5.44584 5.56977 5.38194 5.9364 5.27 6.28956C5.18779 6.5495 5.05527 6.79074 4.88 6.99956C4.62654 7.36597 4.33121 7.70157 4 7.99956" fill="currentColor"/><path d="M4 7.99951C4.33723 8.31397 4.63295 8.67019 4.88 9.05951C5.05095 9.2601 5.18319 9.49067 5.27 9.73951C5.38194 10.0927 5.44584 10.4593 5.46 10.8295C5.5 11.6228 5.52 12.1628 5.52 12.4495C5.5061 12.6523 5.54395 12.8553 5.63 13.0395C5.74563 13.3117 5.93533 13.546 6.17752 13.7157C6.41972 13.8854 6.70468 13.9837 7 13.9995V14.9995H6.62C6.15021 15.0156 5.68019 14.9753 5.22 14.8795C4.85378 14.7889 4.51224 14.6181 4.22 14.3795C3.98551 14.1548 3.8221 13.8662 3.75 13.5495C3.64077 12.946 3.59718 12.3324 3.62 11.7195C3.63014 11.3418 3.61007 10.964 3.56 10.5895C3.52723 10.3318 3.43478 10.0852 3.29 9.86951C3.17802 9.69252 3.01865 9.55048 2.83 9.45951C2.23302 9.25838 1.62113 9.10457 1 8.99951V7.99951" fill="currentColor"/><path d="M12 7.99955C11.6688 7.70156 11.3735 7.36596 11.12 6.99955C10.947 6.79667 10.8146 6.56242 10.73 6.30955C10.6181 5.95638 10.5542 5.58976 10.54 5.21954C10.54 4.42954 10.48 3.88955 10.48 3.60955C10.4983 3.40004 10.4604 3.18944 10.37 2.99955C10.2624 2.71847 10.0759 2.47452 9.83278 2.29708C9.5897 2.11965 9.30048 2.01632 9 1.99955V0.999545H9.38C9.84979 0.983442 10.3198 1.02373 10.78 1.11955C11.1478 1.20587 11.4903 1.37711 11.78 1.61955C12.0164 1.84278 12.1802 2.13198 12.25 2.44955C12.3603 3.05294 12.4039 3.66662 12.38 4.27955C12.3706 4.6572 12.3907 5.03501 12.44 5.40954C12.4728 5.66728 12.5652 5.91382 12.71 6.12955C12.822 6.30653 12.9813 6.44858 13.17 6.53955C13.767 6.74067 14.3789 6.89448 15 6.99955V7.99955" fill="currentColor"/><path d="M15 7.99951V8.99951C14.3755 9.10406 13.7602 9.25787 13.16 9.45951C12.9713 9.55048 12.812 9.69252 12.7 9.86951C12.5552 10.0852 12.4628 10.3318 12.43 10.5895C12.3799 10.964 12.3599 11.3418 12.37 11.7195C12.3928 12.3324 12.3492 12.946 12.24 13.5495C12.1679 13.8662 12.0045 14.1548 11.77 14.3795C11.4778 14.6181 11.1362 14.7889 10.77 14.8795C10.3098 14.9753 9.83979 15.0156 9.37 14.9995H9V13.9995C9.2998 13.9803 9.58791 13.876 9.83056 13.6989C10.0732 13.5218 10.2603 13.2792 10.37 12.9995C10.456 12.8153 10.4939 12.6123 10.48 12.4095C10.48 12.1162 10.5 11.5762 10.54 10.7895C10.5542 10.4193 10.6181 10.0527 10.73 9.69951C10.8168 9.45067 10.9491 9.2201 11.12 9.01951C11.3698 8.64424 11.6654 8.30159 12 7.99951" fill="currentColor"/></svg>`;static select=z`<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=z`<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>`;static sound=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M0 5H3L7 1V15L3 11H0V5Z" fill="white"/><path opacity="0.5" d="M9 1C13 2.7 15 5.4 15 8C15 10.6 13 13.3 9 15C11.5 12.8 12.7 10.4 12.7 8C12.7 5.6 11.5 3.2 9 1Z" fill="white"/><path opacity="0.5" d="M9 5C10.3 5.7 11 6.9 11 8C11 9.1 10.3 10.3 9 11C9.8 10 9.8 6 9 5Z" fill="white"/></svg>`;static spawnActor=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M10.38 12.62L7 11.5L10.38 10.38L11.5 7L12.63 10.38L16 11.5L12.63 12.62L11.5 16L10.38 12.62Z" fill="white"/><path opacity="0.5" fill-rule="evenodd" clip-rule="evenodd" d="M4 14H2L3 10L0 14V16H10L9 14H4Z" fill="white"/><path opacity="0.5" fill-rule="evenodd" clip-rule="evenodd" d="M2 6C1.9996 7.10384 2.30372 8.1864 2.87889 9.12854C3.45406 10.0707 4.27798 10.8359 5.26 11.34L9 9L11.5 5L13.78 7.6C13.9251 7.07902 13.9991 6.54081 14 6C14 4.4087 13.3679 2.88258 12.2426 1.75736C11.1174 0.63214 9.5913 0 8 0C6.4087 0 4.88258 0.63214 3.75736 1.75736C2.63214 2.88258 2 4.4087 2 6V6Z" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M8.22005 0.810059H8.00005C6.62265 0.810056 5.30153 1.35654 4.32663 2.32957C3.35172 3.30259 2.8027 4.62266 2.80005 6.00006C2.79984 7.03987 3.11257 8.05567 3.69756 8.91532C4.28255 9.77497 5.11271 10.4387 6.08005 10.8201L7.17005 10.1401C6.16687 9.86642 5.28119 9.27116 4.64894 8.44562C4.01669 7.62008 3.6728 6.60989 3.67005 5.57006C3.66886 4.34318 4.14143 3.16323 4.98917 2.27635C5.83692 1.38948 6.99437 0.864185 8.22005 0.810059V0.810059Z" fill="white"/><path d="M10.0401 5.16001C10.7028 5.16001 11.2401 4.62275 11.2401 3.96001C11.2401 3.29727 10.7028 2.76001 10.0401 2.76001C9.37735 2.76001 8.84009 3.29727 8.84009 3.96001C8.84009 4.62275 9.37735 5.16001 10.0401 5.16001Z" fill="white"/></svg>`;static staticPin=z`<svg width="16" height="12" viewBox="1 0 16 14" fill="none" xmlns="http://www.w3.org/2000/svg"><path class="ueb-pin-tofill" d="M1 7C1 4 3 1 7 1C10 1 14 3 17 6C18 7 18 7 17 8C14 11 10 13 7 13C3 13 1 10 1 7Z" fill="none" stroke="currentColor" stroke-width="2"/><path class="ueb-pin-tostroke" d="M 9 4 V 3.5 H 5 V 7 H 9 V 10.5 H 5 V 10" stroke="currentColor" stroke-width="2"/></svg>`;static switch=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="3" y="2" width="6" height="2" fill="white"/><rect y="7" width="9" height="2" fill="white"/><rect x="3" y="4" width="2" height="9" fill="white"/><rect x="3" y="12" width="6" height="2" fill="white"/><rect x="10" y="2" width="3" height="2" fill="white"/><path d="M12 0L15 3L12 6V0Z" fill="white"/></svg>`;static timer=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M8 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.5ZM8 14.1C4.6 14.1 1.9 11.4 1.9 8C1.9 4.6 4.6 1.90002 8 1.90002C11.4 1.90002 14.1 4.6 14.1 8C14.1 11.4 11.4 14.1 8 14.1Z" fill="white"/><path fill-rule="evenodd" clip-rule="evenodd" d="M8.60003 3.19995H7.40002V8.49994L10.5 11.4999L11.4 10.5999L8.60003 7.99994V3.19995Z" fill="white"/></svg>`;static touchpad=z`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill="white" fill-rule="evenodd" clip-rule="evenodd" d="M13 0H3C2.4 0 2 0.4 2 1V15C2 15.6 2.4 16 3 16H13C13.6 16 14 15.6 14 15V1C14 0.4 13.6 0 13 0ZM8 15.5C7.2 15.5 6.5 14.8 6.5 14C6.5 13.2 7.2 12.5 8 12.5C8.8 12.5 9.5 13.2 9.5 14C9.5 14.8 8.8 15.5 8 15.5ZM13 12H3V1H13V12Z"/><path opacity="0.5" d="M13 1H3V12H13V1Z" fill="white"/></svg>`}class ue{static makeSuccess(e,t,i=null,r=0){return{status:!0,value:t,position:e,bestParser:i,bestPosition:r}}static makeFailure(e=0,t=null,i=0){return{status:!1,value:null,position:e,bestParser:t,bestPosition:i}}static makeContext(e=null,t=""){return{parsernostrum:e,input:t,highlighted:null}}static makePathNode(e,t=0,i=null){return{parent:i,current:e,index:t}}}class he{static indentation=" ";static highlight="Last valid parser";Self;static frame(e,t="",i=""){t=e?"[ "+t+" ]":"";let r=e.split("\n");const n=Math.max(...r.map((e=>e.length))),s=n<t.length?" ".repeat(t.length-n):"";for(let e=0;e<r.length;++e)r[e]=i+"| "+r[e]+" ".repeat(n-r[e].length)+s+" |";t.length<n&&(t+="─".repeat(n-t.length));const a="┌─"+t+"─┐",o=i+"└─"+"─".repeat(t.length)+"─┘";return r=[a,...r,o],r.join("\n")}makePath(e,t){return{current:this,parent:e,index:t}}isHighlighted(e,t){if(e.highlighted instanceof he)return e.highlighted===this;if(!e.highlighted||!t?.current)return!1;let i,r;for(i=t,r=e.highlighted;i.current&&r.current;i=i.parent,r=r.parent)if(i.current!==r.current||i.index!==r.index)return!1;return!i.current&&!r.current}isVisited(e){if(!e)return!1;for(e=e.parent;null!=e;e=e.parent)if(e.current===this)return!0;return!1}parse(e,t,i,r){return null}toString(e=ue.makeContext(null,""),t="",i=null,r=0){if(i=this.makePath(i,r),this.isVisited(i))return"<...>";const n=this.isVisited(i),s=this.isHighlighted(e,i);let a=n?"<...>":this.doToString(e,s?"":t,i,r);return s&&(a=he.frame(a,he.highlight,t)),a}doToString(e,t,i,r){return`${this.constructor.name} does not implement toString()`}}class pe extends he{#r;get value(){return this.#r}constructor(e){super(),this.#r=e}parse(e,t,i,r){i=this.makePath(i,r);const n=t+this.#r.length,s=e.input.substring(t,n);return this.#r===s?ue.makeSuccess(n,this.#r,i,n):ue.makeFailure()}doToString(e,t,i,r){return`"${this.value.replaceAll("\n","\\n").replaceAll('"','\\"')}"`}}class de extends he{static instance=new de;parse(e,t,i,r){return i=this.makePath(i,r),ue.makeSuccess(t,"",i,0)}doToString(e,t,i,r){return"<SUCCESS>"}}class me extends he{#n;get parsers(){return this.#n}constructor(...e){super(),this.#n=e}parse(e,t,i,r){i=this.makePath(i,r);const n=ue.makeSuccess(0,"");for(let r=0;r<this.#n.length;++r){const s=this.#n[r].parse(e,t,i,r);if(s.bestPosition>n.bestPosition&&(n.bestParser=s.bestParser,n.bestPosition=s.bestPosition),s.status)return n.value=s.value,n.position=s.position,n}return n.status=!1,n.value=null,n}doToString(e,t,i,r){if(2===this.#n.length&&this.#n[1]instanceof de){let r=this.#n[0].toString(e,t,i,0);return this.#n[0]instanceof pe||(r="<"+r+">"),r+="?",r}const n=t+he.indentation;let s="ALT<\n"+n+this.#n.map(((t,r)=>t.toString(e,n+" ".repeat(0===r?0:he.indentation.length-2),i,r))).join("\n"+n+"| ")+"\n"+t+">";return s}}class ge extends he{#s;get parser(){return this.#s}#a;constructor(e,t){super(),this.#s=e,this.#a=t}parse(e,t,i,r){i=this.makePath(i,r);const n=this.#s.parse(e,t,i,0);if(!n.status)return n;const s=this.#a(n.value,e.input,n.position).getParser().parse(e,n.position,i,0);return n.bestPosition>s.bestPosition&&(s.bestParser=n.bestParser,s.bestPosition=n.bestPosition),s}doToString(e,t,i,r){return this.#s.toString(e,t,i,0)+" => chained<f()>"}}class be extends he{static instance=new be;parse(e,t,i,r){return ue.makeFailure()}doToString(e,t,i,r){return"<FAILURE>"}}class ve extends he{#s;get parser(){return this.#s}#o="";constructor(e,t){super(),this.#s=e,this.#o=t}makePath(e,t){return e}parse(e,t,i,r){return this.parse=this.#s.parse.bind(this.#s),this.parse(e,t,i,r)}doToString(e,t,i,r){let n=this.#s.toString(e,"",i,r);return n=he.frame(n,this.#o,t),n}}class fe extends he{#s;#l;constructor(e){super(),this.#s=e}makePath(e,t){return e}isHighlighted(e,t){if(super.isHighlighted(e,t)){const i={parent:t,parser:this.#l,index:0};e.highlighted=e.highlighted instanceof he?this.#l:i}return!1}resolve(){return this.#l||(this.#l=this.#s().getParser()),this.#l}parse(e,t,i,r){return this.resolve(),this.parse=this.#l.parse.bind(this.#l),this.parse(e,t,i,r)}doToString(e,t,i,r){return this.resolve(),this.doToString=this.#l.toString.bind(this.#l),this.doToString(e,t,i,r)}}class ye extends he{#s;get parser(){return this.#s}#c;get type(){return this.#c}static Type={NEGATIVE_AHEAD:"?!",NEGATIVE_BEHIND:"?<!",POSITIVE_AHEAD:"?=",POSITIVE_BEHIND:"?<="};constructor(e,t){super(),this.#s=e,this.#c=t}parse(e,t,i,r){i=this.makePath(i,r);let n=this.#s.parse(e,t,i,0);return n=n.status==(this.#c===ye.Type.POSITIVE_AHEAD)?ue.makeSuccess(t,"",i,t):ue.makeFailure(),n}doToString(e,t,i,r){return"("+this.#c+this.#s.toString(e,t,i,0)+")"}}class we extends he{#u;get regexp(){return this.#u}#h;#p;static#d=e=>String.raw`[^${e}\\]*(?:\\.[^${e}\\]*)*`;static#m=/[-\+]?(?:\d*\.)?\d+/;static common={number:new RegExp(this.#m.source+String.raw`(?!\.)`),numberInteger:/[\-\+]?\d+(?!\.\d)/,numberNatural:/\d+/,numberExponential:new RegExp(this.#m.source+String.raw`(?:[eE][\+\-]?\d+)?(?!\.)`),numberUnit:/\+?(?:0(?:\.\d+)?|1(?:\.0+)?)(?![\.\d])/,numberByte:/0*(?:25[0-5]|2[0-4]\d|1?\d?\d)(?!\d|\.)/,whitespace:/\s+/,whitespaceOpt:/\s*/,whitespaceInline:/[^\S\n]+/,whitespaceInlineOpt:/[^\S\n]*/,whitespaceMultiline:/\s*?\n\s*/,doubleQuotedString:new RegExp(`"(${this.#d('"')})"`),singleQuotedString:new RegExp(`'(${this.#d("'")})'`),backtickQuotedString:new RegExp("`("+this.#d("`")+")`")};constructor(e,t){super(),this.#u=e,this.#h=new RegExp(`^(?:${e.source})`,e.flags),this.#p=t}parse(e,t,i,r){i=this.makePath(i,r);const n=this.#h.exec(e.input.substring(t));n&&(t+=n[0].length);return n?ue.makeSuccess(t,this.#p(n),i,t):ue.makeFailure()}doToString(e,t,i,r){let n="/"+this.#u.source+"/";const s=Object.entries(we.common).find((([e,t])=>t.source===this.#u.source))?.[0];return s&&(n="P."+s),n}}class Se extends he{#s;get parser(){return this.#s}#g;get mapper(){return this.#g}constructor(e,t){super(),this.#s=e,this.#g=t}isHighlighted(e,t){if(super.isHighlighted(e,t)){const i={parent:t,parser:this.#s,index:0};e.highlighted=e.highlighted instanceof he?this.#s:i}return!1}parse(e,t,i,r){i=this.makePath(i,r);const n=this.#s.parse(e,t,i,0);return n.status&&(n.value=this.#g(n.value)),n}doToString(e,t,i,r){let n=this.#s.toString(e,t,i,0);if(this.#s instanceof we&&Object.values(we.common).includes(this.#s.regexp))return this.#s.regexp===we.common.numberInteger&&this.#g===BigInt?"P.numberBigInteger":n;let s=this.#g.toString();return(s.length>60||s.includes("\n"))&&(s="(...) => { ... }"),n+=` -> map<${s}>`,n}}class Ee extends we{static#g=e=>e;constructor(e){super(e,Ee.#g)}}class Ce extends we{constructor(e,t=0){super(e,(e=>e[t]))}}class Ne extends he{#n;get parsers(){return this.#n}constructor(...e){super(),this.#n=e}parse(e,t,i,r){i=this.makePath(i,r);const n=new Array(this.#n.length),s=ue.makeSuccess(t,n);for(let t=0;t<this.#n.length;++t){const r=this.#n[t].parse(e,s.position,i,t);if(r.bestPosition>s.bestPosition&&(s.bestParser=r.bestParser,s.bestPosition=r.bestPosition),!r.status){s.status=!1,s.value=null;break}s.value[t]=r.value,s.position=r.position}return s}doToString(e,t,i,r){const n=t+he.indentation,s="SEQ<\n"+n+this.#n.map(((t,r)=>t.toString(e,n,i,r))).join("\n"+n)+"\n"+t+">";return s}}class Pe extends he{#s;get parser(){return this.#s}#b;get min(){return this.#b}#v;get max(){return this.#v}constructor(e,t=0,i=Number.POSITIVE_INFINITY){if(super(),t>i)throw new Error("Min is greater than max");this.#s=e,this.#b=t,this.#v=i}parse(e,t,i,r){i=this.makePath(i,r);const n=ue.makeSuccess(t,[],i);for(let t=0;t<this.#v;++t){const r=this.#s.parse(e,n.position,i,0);if(r.bestPosition>n.bestPosition&&(n.bestParser=r.bestParser,n.bestPosition=r.bestPosition),!r.status){t<this.#b&&(n.status=!1,n.value=null);break}n.value.push(r.value),n.position=r.position}return n}doToString(e,t,i,r){let n=this.parser.toString(e,t,i,0);return n+=0===this.#b&&1===this.#v?"?":0===this.#b&&this.#v===Number.POSITIVE_INFINITY?"*":1===this.#b&&this.#v===Number.POSITIVE_INFINITY?"+":"{"+this.#b+(this.#b!==this.#v?","+this.#v:"")+"}",n}}class xe{#s;Self;static lineColumnFromOffset(e,t){const i=e.substring(0,t).split("\n");return{line:i.length,column:i[i.length-1].length+1}}static#f=([e,t])=>e;static#y=([e,t])=>t;static#w=([e,t])=>[e,...t];static#S=e=>e instanceof Array?e.join(""):e;static number=this.reg(we.common.number).map(Number);static numberInteger=this.reg(we.common.numberInteger).map(Number);static numberBigInteger=this.reg(this.numberInteger.getParser().parser.regexp).map(BigInt);static numberNatural=this.reg(we.common.numberNatural).map(Number);static numberExponential=this.reg(we.common.numberExponential).map(Number);static numberUnit=this.reg(we.common.numberUnit).map(Number);static numberByte=this.reg(we.common.numberByte).map(Number);static whitespace=this.reg(we.common.whitespace);static whitespaceOpt=this.reg(we.common.whitespaceOpt);static whitespaceInline=this.reg(we.common.whitespaceInline);static whitespaceInlineOpt=this.reg(we.common.whitespaceInlineOpt);static whitespaceMultiline=this.reg(we.common.whitespaceMultiline);static doubleQuotedString=this.reg(we.common.doubleQuotedString,1);static singleQuotedString=this.reg(we.common.singleQuotedString,1);static backtickQuotedString=this.reg(we.common.backtickQuotedString,1);constructor(e,t=!1){this.#s=e}static#E(e){const t=[];for(;e;)t.push(e),e=e.parent;t.reverse();let i=new Map;for(let e=1;e<t.length;++e){const r=i.get(t[e].current);void 0!==r?(t[e+1]&&(t[e+1].parent=t[r]),i=new Map([...i.entries()].filter((([t,i])=>i<=r||i>e))),i.set(t[e].current,r),t.splice(r+1,e-r),e=r):i.set(t[e].current,e)}return t[t.length-1]}getParser(){return this.#s}run(e){const t=this.#s.parse(ue.makeContext(this,e),0,ue.makePathNode(),0);return t.position!==e.length&&(t.status=!1),t}parse(e,t=!0){const i=this.run(e);if(i.status)return i.value;const r=[Math.ceil(30),Math.floor(30)],n=xe.lineColumnFromOffset(e,i.bestPosition);let s=i.bestPosition;const a=e.replaceAll(/^(\s)+|\s{6,}|\s*?\n\s*/g,((e,t,r)=>{let n=t?"...":" ... ";return r<=i.bestPosition&&(i.bestPosition<r+e.length?s-=i.bestPosition-r:s-=e.length-n.length),n})),o=a.substring(0,60).trimEnd(),l=Math.min(e.substring(i.bestPosition-r[0]).match(/^\s*/)[0].length,r[0]-1);let c=Math.min(s,r[0]-l);r[0]=Math.max(0,s-r[0])+l,r[1]=Math.min(e.length,r[0]+60);let u=a.substring(...r);r[0]>0&&(u="..."+u,c+=3),r[1]<a.length-1&&(u+="...");const h=this.toString(he.indentation,!0,xe.#E(i.bestParser));throw new Error(`Could not parse: ${o}\n\nInput: ${u}\n `+" ".repeat(c)+`^ From here (line: ${n.line}, `+`column: ${n.column}, `+`offset: ${i.bestPosition})${i.bestPosition===e.length?", end of string":""}\n`+(t?"\n"+(i.bestParser?"Last valid parser matched:":"No parser matched:")+h+"\n":""))}static str(e){return new this(new pe(e))}static reg(e,t=0){return new this(new Ce(e,t))}static regArray(e){return new this(new Ee(e))}static success(){return new this(de.instance)}static failure(){return new this(be.instance)}static seq(...e){return new this(new Ne(...e.map((e=>e.getParser()))))}static alt(...e){return new this(new me(...e.map((e=>e.getParser()))))}static lookahead(e){return new this(new ye(e.getParser(),ye.Type.POSITIVE_AHEAD))}static lazy(e){return new this(new fe(e))}times(e,t=e){return new xe(new Pe(this.#s,e,t))}many(){return this.times(0,Number.POSITIVE_INFINITY)}atLeast(e){return this.times(e,Number.POSITIVE_INFINITY)}atMost(e){return this.times(0,e)}opt(e=""){let t=xe.success();return""!==e&&(t=t.map((()=>e))),xe.alt(this,t)}sepBy(e,t=1,i=!1){let r=xe.seq(this,xe.seq(e,this).map(xe.#y).atLeast(t-1),...i?[e.opt([])]:[]).map(xe.#w);return 0===t&&(r=r.opt([])),r}skipSpace(){return xe.seq(this,xe.whitespaceOpt).map(xe.#f)}map(e){return new xe(new Se(this.#s,e))}chain(e){return new xe(new ge(this.#s,e))}assert(e){return this.chain(((t,i,r)=>e(t,i,r)?xe.success().map((()=>t)):xe.failure()))}join(e=""){return this.map(xe.#S)}label(e=""){return new xe(new ve(this.#s,e))}toString(e="",t=!1,i=null){i instanceof xe&&(i=i.getParser());const r=ue.makeContext(this,"");r.highlighted=i;const n=ue.makePathNode();return(t?"\n"+e:"")+this.#s.toString(r,e,n)}}class ke{static same=e=>e;static notWrapped=(e,t)=>t;static defaultWrapped=(e,t)=>`${e.#C}(${t})`;static wrap=this.defaultWrapped;static attributeSeparator=",";static keySeparator="=";static printKey=e=>e;static grammar=xe.lazy((()=>this.createGrammar()));static unknownEntityGrammar;static unknownEntity;static attributes={};static lookbehind="";static default;static nullable=!1;static ignored=!1;static serialized=!1;static expected=!1;static inlined=!1;static quoted;static silent=!1;static trailing=!1;#N;get keys(){return this.#N??Object.keys(this)}set keys(e){this.#N=[...new Set(e)]}#C=this.constructor.lookbehind;get lookbehind(){return this.#C.trim()}set lookbehind(e){this.#C=e}#P=this.constructor.ignored;get ignored(){return this.#P}set ignored(e){this.#P=e}#x=this.constructor.inlined;get inlined(){return this.#x}set inlined(e){this.#x=e}#k;get quoted(){return this.#k??this.constructor.quoted??!1}set quoted(e){this.#k=e}#L;get trailing(){return this.#L??this.constructor.trailing??!1}set trailing(e){this.#L=e}constructor(e={}){const t=this.constructor.attributes,i=oe.mergeArrays(Object.keys(e),Object.entries(t).filter((([e,t])=>void 0!==t.default)).map((([e,t])=>e)));for(const r of i){if(void 0!==e[r]){e[r].constructor===Object&&(e[r]=new(void 0!==t[r]?t[r]:ke.unknownEntity)(e[r]));const i=t[r];if(this[r]=e[r],i?.compute){const t=i.compute(this).grammar.run(e[r].toString());t.status&&(this[r]=t.value)}continue}const i=t[r];void 0===i.default||(this[r]=i.default(i))}}static createGrammar(){return this.unknownEntityGrammar}static actualClass(){let e=this;for(;!e.name;)e=Object.getPrototypeOf(e);return e}static className(){return this.actualClass().name}static asUniqueClass(e=!1){let t=this;return(this.name.length||e)&&(t=class extends(this){},t.grammar=t.createGrammar()),t}static withLookbehind(e){const t=this.asUniqueClass();return t.lookbehind=e,t}static withDefault(e=e=>new e){const t=this.asUniqueClass();return t.default=e,t}static flagNullable(e=!0){const t=this.asUniqueClass();return t.nullable=e,t}static flagIgnored(e=!0){const t=this.asUniqueClass();return t.ignored=e,t}static flagSerialized(e=!0){const t=this.asUniqueClass();return t.serialized=e,t}static flagInlined(e=!0){const t=this.asUniqueClass();return t.inlined=e,t}static flagQuoted(e=!0){const t=this.asUniqueClass();return t.quoted=e,t}static flagSilent(e=!0){const t=this.asUniqueClass();return t.silent=e,t}static flagTrailing(e=!0){const t=this.asUniqueClass();return t.trailing=e,t}static asSerializedString(e){return`"${e.replaceAll(/(?<=(?:[^\\]|^)(?:\\\\)*?)"/g,'\\"')}"`}showProperty(e){let t=this[e];const i=t.constructor;if(i.silent&&void 0!==i.default){void 0===i["#default"]&&(i["#default"]=i.default(i));const e=i["#default"];return!t.equals(e)}return!0}listenAttribute(e,t){const i=Object.getOwnPropertyDescriptor(this,e),r=i.set;r?(i.set=e=>{r(e),t(e)},Object.defineProperties(this,{[e]:i})):i.value&&Object.defineProperties(this,{["#"+e]:{value:i.value,writable:!0,enumerable:!1},[e]:{enumerable:!0,get(){return this["#"+e]},set(i){t(i),this["#"+e]=i}}})}doSerialize(e=!1,t="",i=this.constructor,r=i.printKey,n=i.keySeparator,s=i.attributeSeparator,a=i.wrap){const o=i!==this.constructor;let l="",c=!0;const u=this instanceof ke?this.keys:Object.keys(this);for(const a of u){const o=this[a],u=o?.constructor;if(void 0===o||this instanceof ke&&!this.showProperty(a))continue;c?c=!1:l+=s;let h=this instanceof Array?`(${a})`:a;if(h.length&&(i.attributes[a]?.quoted||o.quoted)&&(h=`"${h}"`),o.inlined){const a="ArrayEntity"===u.className()?e=>r(`${h}${e}`):e=>r(`${h}.${e}`);l+=o.serialize(e,t,void 0,a,n,s,i.notWrapped);continue}h=r(h),h.length&&(l+=(s.includes("\n")?t:"")+h+n);let p=o?.serialize(e,t);l+=p}return this instanceof ke&&(o&&i.trailing||this.trailing)&&l.length&&(l+=s),a(this,l)}serialize(e=!1,t="",i=this.constructor,r=i.printKey,n=i.keySeparator,s=i.attributeSeparator,a=i.wrap){this.constructor;let o=this instanceof Array?ke.prototype.doSerialize.bind(this)(e,t,i,r,n,s,a):this.doSerialize(e,t,i,r,n,s,a);return i.serialized&&(o=ke.asSerializedString(o)),o}equals(e){if(!(e instanceof ke))return!1;const t=Object.keys(this),i=Object.keys(e),r=this.constructor.actualClass(),n=e.constructor.actualClass();if(!(t.length===i.length&&this.lookbehind==e.lookbehind&&(e instanceof r||this instanceof n)))return!1;for(let r=0;r<t.length;++r){const n=t[r];if(!i.includes(n))return!1;const s=this[n],a=e[n];if(s instanceof ke){if(!s.equals(a))return!1}else if(s instanceof Array&&a instanceof Array){if(s.length!==a.length)return!1;for(let e=0;e<s.length;++e)if(!(s[e]instanceof ke&&s[e].equals(a[e]))&&s[e]!==a[e])return!1}else if(s!==a)return!1}return!0}valueOf(){return this}}class Le extends ke{static grammar=this.createGrammar();static booleanConverter={fromAttribute:(e,t)=>{},toAttribute:(e,t)=>!0===e?"true":!1===e?"false":""};#A=!0;get uppercase(){return this.#A}set uppercase(e){this.#A=e}static createGrammar(){return xe.regArray(/(true)|(True)|(false)|(False)/).map((e=>{const t=e[1]??e[2]?new this(!0):new this(!1);return t.uppercase=void 0!==(e[2]??e[4]),t})).label("BooleanEntity")}constructor(e=!1){super(),this.value=e}serialize(e=!1,t="",i=this.constructor){let r=this.value?this.#A?"True":"true":this.#A?"False":"false";return i.serialized&&(r=`"${r}"`),r}valueOf(){return this.value}}class Ae{static#M=new Map;static registerElement(e,t){Ae.#M.set(e,t)}static getConstructor(e){return Ae.#M.get(e)}}class Me extends ke{static alternatives=[];static className(){let e=super.className();return this.alternatives.length&&(e+=".accepting("+this.alternatives.map((e=>e.className())).join(", ")+")"),e}static createGrammar(){const e=this.alternatives.map((e=>e.grammar));return 0==this.alternatives.length||e.includes(this.unknownEntityGrammar)?this.unknownEntityGrammar:xe.alt(...e)}static accepting(...e){const t=this.asUniqueClass();return t.alternatives=e,t.grammar=t.createGrammar(),t}}class Te{static numberRegexSource=xe.number.getParser().parser.regexp.source;static separatedBy=(e,t,i=1)=>new RegExp(e+"(?:"+t+e+")"+(1===i?"*":2===i?"+":`{${i},}`));static Regex=class{static HexDigit=/[0-9a-fA-F]/;static InsideString=/(?:[^"\\]|\\.)*/;static InsideSingleQuotedString=/(?:[^'\\]|\\.)*/;static Integer=/[\-\+]?\d+(?!\d|\.)/;static Number=/[-\+]?(?:\d*\.)?\d+(?!\d|\.)/;static RealUnit=/\+?(?:0(?:\.\d+)?|1(?:\.0+)?)(?![\.\d])/;static Word=Te.separatedBy("[a-zA-Z]","_");static Symbol=/[a-zA-Z_]\w*/;static DotSeparatedSymbols=Te.separatedBy(this.Symbol.source,"\\.");static MultipleWordsSymbols=Te.separatedBy(this.Symbol.source,"(?:\\.|\\ +)");static PathFragment=Te.separatedBy(this.Symbol.source,"[\\.:]");static PathSpaceFragment=Te.separatedBy(this.Symbol.source,"[\\.:\\ ]");static Path=new RegExp(`(?:\\/${this.PathFragment.source}){2,}`)};static null=xe.reg(/\(\s*\)/).map((()=>null));static true=xe.reg(/true/i).map((()=>!0));static false=xe.reg(/false/i).map((()=>!1));static number=xe.regArray(new RegExp(`(${xe.number.getParser().parser.regexp.source})|(\\+?inf)|(-inf)`)).map((([e,t,i,r])=>t?Number(t):i?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY));static bigInt=xe.reg(new RegExp(xe.number.getParser().parser.regexp.source)).map(BigInt).map((e=>void 0!==e[2]?Number.POSITIVE_INFINITY:void 0!==e[3]?Number.NEGATIVE_INFINITY:Number(e[1])));static naturalNumber=xe.lazy((()=>xe.reg(/\d+/).map(Number)));static string=xe.doubleQuotedString.map((e=>oe.unescapeString(e)));static colorValue=xe.numberByte;static word=xe.reg(Te.Regex.Word);static symbol=xe.reg(Te.Regex.Symbol);static symbolQuoted=xe.reg(new RegExp('"('+Te.Regex.Symbol.source+')"'),1);static attributeName=xe.reg(Te.Regex.DotSeparatedSymbols);static attributeNameQuoted=xe.reg(new RegExp('"('+Te.Regex.InsideString.source+')"'),1);static guid=xe.reg(new RegExp(`${Te.Regex.HexDigit.source}{32}`));static commaSeparation=xe.reg(/\s*,\s*(?!\))/);static commaOrSpaceSeparation=xe.reg(/\s*,\s*(?!\))|\s+/);static equalSeparation=xe.reg(/\s*=\s*/);static hexColorChannel=xe.reg(new RegExp(Te.Regex.HexDigit.source+"{2}"));static getAttribute(e,[t,...i]){const r=e?.attributes?.[t];if(r){if(r.prototype instanceof Me)for(const e of r.alternatives){const t=this.getAttribute(e,i);if(t)return t}return i.length>0?this.getAttribute(r,i):r}}static createAttributeGrammar(e,t=this.attributeName,i=this.equalSeparation,r=(e,t,i)=>{}){return xe.seq(t,i).chain((([t,i])=>{const n=t.split(ae.keysSeparator),s=this.getAttribute(e,n),a=s?s.grammar:ke.unknownEntityGrammar,o=n.length>1;return a.map((e=>t=>{oe.objectSet(t,n,e),n.reduce(((e,t,i)=>(e[t].inlined=o&&i<n.length-1,e[t])),t),r(t,n,e)}))}))}static createEntityGrammar(e,t=this.commaSeparation,i=null,r=1){const n=e.lookbehind instanceof Array?e.lookbehind.join("|"):e.lookbehind;return xe.seq(xe.reg(new RegExp(String.raw`(${n}\s*)\(\s*`),1),this.createAttributeGrammar(e).sepBy(t,r),xe.reg(/\s*(,\s*)?\)/,1)).map((([e,t,i])=>{let r={};return e.length&&(r.lookbehind=e),t.forEach((e=>e(r))),r.trailing=void 0!==i,r})).chain((t=>{(e.lookbehind instanceof Array||e.lookbehind!==n)&&(e=e.withLookbehind(n));const r=Object.keys(t),s=Object.keys(e.attributes);return null!=i?xe.success().assert((e=>r.filter((e=>s.includes(e))).length/s.length>=i)).map((()=>new e(t))):xe.success().map((()=>new e(t)))}))}}class Ie extends ke{static grammar=this.createGrammar();constructor(e=0){super(),this.value=e}static createGrammar(){return xe.number.map((e=>new this(e)))}serialize(e=!1,t="",i=this.constructor){let r=this.value.toFixed(6);return i.serialized&&(r=`"${r}"`),r}valueOf(){return this.value}toString(){return this.value.toString()}}class Oe extends ke{static attributes={...super.attributes,R:Ie.withDefault(),G:Ie.withDefault(),B:Ie.withDefault(),A:Ie.withDefault((e=>new e(1)))};static grammar=this.createGrammar();#T=new Ie;get H(){return this.#T}set H(e){this.#T=e}#I=new Ie;get S(){return this.#I}set S(e){this.#I=e}#O=new Ie;get V(){return this.#O}set V(e){this.#O=e}constructor(e){super(e),e instanceof Array&&(e={R:e[0]??0,G:e[1]??0,B:e[2]??0,A:e[3]??1}),this.R,this.G,this.B,this.A,this.#D()}static createGrammar(){return Te.createEntityGrammar(this,Te.commaSeparation,.5).label("LinearColorEntity")}static printLinearColor(e){return`${Math.round(255*e.R.valueOf())}, ${Math.round(255*e.G.valueOf())}, ${Math.round(255*e.B.valueOf())}`}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 Oe({R:new Ie(1),G:new Ie(1),B:new Ie(1)})}static getLinearColorFromHexGrammar(){const e=/[0-9a-fA-F]/;return xe.regArray(new RegExp("#("+e.source+"{2})("+e.source+"{2})("+e.source+"{2})("+e.source+"{2})?")).map((([e,t,i,r,n])=>new this({R:parseInt(t,16)/255,G:parseInt(i,16)/255,B:parseInt(r,16)/255,A:parseInt(n??"FF",16)/255})))}static getLinearColorRGBListGrammar(){return xe.seq(xe.numberByte,Te.commaSeparation,xe.numberByte,Te.commaSeparation,xe.numberByte).map((([e,t,i,r,n])=>new this({R:e/255,G:i/255,B:n/255,A:1})))}static getLinearColorRGBGrammar(){return xe.seq(xe.reg(/rgb\s*\(\s*/),this.getLinearColorRGBListGrammar(),xe.reg(/\s*\)/)).map((([e,t,i])=>t))}static getLinearColorRGBAGrammar(){return xe.seq(xe.reg(/rgba\s*\(\s*/),this.getLinearColorRGBListGrammar(),xe.reg(/\s*\)/)).map((([e,t,i])=>t))}static getLinearColorFromAnyFormat(){return xe.alt(this.getLinearColorFromHexGrammar(),this.getLinearColorRGBAGrammar(),this.getLinearColorRGBGrammar(),this.getLinearColorRGBListGrammar())}#D(){const e=this.R.value,t=this.G.value,i=this.B.value;if(oe.approximatelyEqual(e,t)&&oe.approximatelyEqual(e,i)&&oe.approximatelyEqual(t,i))return this.S.value=0,void(this.V.value=e);const r=Math.max(e,t,i),n=Math.min(e,t,i),s=r-n;let a;switch(r){case n:a=0;break;case e:a=(t-i)/s+(t<i?6:0);break;case t:a=(i-e)/s+2;break;case i:a=(e-t)/s+4}a/=6,this.H.value=a,this.S.value=0==r?0:s/r,this.V.value=r}setFromRGBA(e,t,i,r=1){this.R.value=e,this.G.value=t,this.B.value=i,this.A.value=r,this.#D()}setFromHSVA(e,t,i,r=1){const n=Math.floor(6*e),s=6*e-n,a=i*(1-t),o=[i,i*(1-s*t),a,a,i*(1-(1-s)*t),i],[l,c,u]=[o[n%6],o[(n+4)%6],o[(n+2)%6]];this.R.value=l,this.G.value=c,this.B.value=u,this.A.value=r,this.H.value=e,this.S.value=t,this.V.value=i}setFromWheelLocation(e,t,i,r){const[n,s]=oe.getPolarCoordinates(e,t,!0);this.setFromHSVA(1-s/(2*Math.PI),n,i,r)}toDimmedColor(e=0){const t=new Oe;return t.setFromRGBANumber(this.toNumber()),t.setFromHSVA(t.H.value,.6*t.S.value,.7*Math.pow(t.V.value+e,.55)),t}toCSSRGBValues(){const e=Math.round(255*this.R.value),t=Math.round(255*this.G.value),i=Math.round(255*this.B.value);return s`${e}${t}${i}`}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*Oe.linearToSRGB(this.R.value)),Math.round(255*Oe.linearToSRGB(this.G.value)),Math.round(255*Oe.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)}toArray(){return[this.R.value,this.G.value,this.B.value,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=Oe.sRGBtoLinear((e>>8&255)/255),this.G.value=Oe.sRGBtoLinear((e>>16&255)/255),this.R.value=Oe.sRGBtoLinear((e>>24&255)/255),this.#D()}toString(){return Oe.printLinearColor(this)}}const De=ae.paths;class $e extends ke{static type;constructor(e=null){super();const t=this.constructor;e??=void 0!==t.default?t.default(t).getter:e,this.getter=e}static createGrammar(e=this.type?.grammar??xe.lazy((()=>this.unknownEntityGrammar))){return this.type?.grammar.map((e=>new this((()=>e))))}static withDefault(e=e=>new e((()=>new e.type))){return super.withDefault(e)}static of(e){const t=this.asUniqueClass();return t.type=e,t.grammar=t.createGrammar(),t}doSerialize(e=!1,t="",i=this.constructor,r=i.printKey,n=i.keySeparator,s=i.attributeSeparator,a=i.wrap){return this.getter().serialize(e,t,i.type,r,n,s,a)}equals(e){return e instanceof $e&&(e=e.getter?.()),this.getter?.().equals(e)}valueOf(e){return this.getter(e).valueOf()}toString(){return this.getter().toString()}}class Ve extends ke{static numberRegexSource=String.raw`${Te.numberRegexSource}(?<=(?:\.(\d*0+))?)`;static grammar=this.createGrammar();static precision;#$;get precision(){return this.constructor.precision??this.#$}set precision(e){this.#$=e}_value;get value(){return this._value}set value(e){-0===e&&(e=0),this._value=e}constructor(e=0,t=null){super(),this.value=Number(e),null!==t&&(this.#$=Number(t))}static createGrammar(){return xe.regArray(new RegExp(`(?<n>${this.numberRegexSource})|(?<posInf>\\+?inf)|(?<negInf>-inf)`)).map((({2:e,groups:{n:t,posInf:i,negInf:r}})=>new this(t?Number(t):i?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY,e?.length))).label("NumberEntity")}static withPrecision(e=0){const t=this.asUniqueClass();return t.precision=e,t}static printNumber(e){return e==Number.POSITIVE_INFINITY?"inf":e==Number.NEGATIVE_INFINITY?"-inf":oe.minDecimals(e)}serialize(e=!1,t="",i=this.constructor){if(this.value===Number.POSITIVE_INFINITY)return"+inf";if(this.value===Number.NEGATIVE_INFINITY)return"-inf";const r=i.precision??this.precision;let n=void 0!==r?this.value.toFixed(r):this.value.toString();return i.serialized&&(n=`"${n}"`),n}valueOf(){return this.value}toString(){return this.value.toString()}}class Be extends ke{static attributes={...super.attributes,X:Ve.withDefault(),Y:Ve.withDefault(),Z:Ve.withDefault()};static grammar=this.createGrammar();constructor(e){super(e),this.X,this.Y,this.Z}static createGrammar(){return Te.createEntityGrammar(this,Te.commaSeparation,1).label("VectorEntity")}toArray(){return[this.X.valueOf(),this.Y.valueOf(),this.Z.valueOf()]}}const Ge=/\/Script\/SequencerScripting\.MovieSceneScripting(.+)Channel/,He={A_AccentGrave:"à",Add:"Num +",C_Cedille:"ç",Decimal:"Num .",Divide:"Num /",E_AccentAigu:"é",E_AccentGrave:"è",F1:"F1",F10:"F10",F11:"F11",F12:"F12",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",Gamepad_Special_Left_X:"Touchpad Button X Axis",Gamepad_Special_Left_Y:"Touchpad Button Y Axis",Mouse2D:"Mouse XY 2D-Axis",Multiply:"Num *",Section:"§",Subtract:"Num -",Tilde:"`"},Re={"Boolean::LogicAnd":"Logic AND","Boolean::LogicEq":"==","Boolean::LogicNEq":"!=","Boolean::LogicNot":"Logic NOT","Boolean::LogicOr":"Logic OR","Integer::BitAnd":"Bitwise AND","Integer::BitLShift":"Bitwise Left Shift","Integer::BitNot":"Bitwise NOT","Integer::BitOr":"Bitwise OR","Integer::BitRShift":"Bitwise Right Shift","Integer::BitXOr":"Bitwise XOR","Integer::EnumEq":"==","Integer::EnumNEq":"!=","Matrix::MatrixMultiply":"Multiply (Matrix * Matrix)","Matrix::MatrixVectorMultiply":"Multiply (Matrix * Vector4)",...Object.fromEntries(Object.entries({Add:"+",ArcCosine:"ArcCosine","ArcCosine(Degrees)":"ArcCos(D)","ArcCosine(Radians)":"ArcCos(R)",ArcSine:"ArcSine","ArcSine(Degrees)":"ArcSin(D)","ArcSine(Radians)":"ArcSin(R)","ArcTangent(Degrees)":"ArcTan(D)","ArcTangent(Radians)":"ArcTan(R)",CmpEQ:"==",CmpGE:">=",CmpGT:">",CmpLE:"<=",CmpLT:"<",CmpNEQ:"!=","Cosine(Degrees)":"Cos(D)","Cosine(Radians)":"Cos(R)",DegreesToRadians:"DegToRad",DistancePos:"Distance",Div:String.fromCharCode(247),FMod:"%",FModFast:"Modulo Fast",Length:"Len",Madd:`(A${String.fromCharCode(10799)}B)+C`,Mul:String.fromCharCode(10799),Negate:"-A",OneMinus:"1-A",PI:String.fromCharCode(960),RadiansToDegrees:"RadToDeg","Rand Float":"Random Float","Rand Integer":"Random Integer",Rand:"Random",Rcp:"Reciprocal",RSqrt:"Rcp Sqrt","Sine(Degrees)":"Sin(D)","Sine(Radians)":"Sin(R)",Subtract:"-","Tangent(Degrees)":"Tan(D)","Tangent(Radians)":"Tan(R)",TWO_PI:`2 ${String.fromCharCode(960)}`}).map((([e,t])=>["Numeric::"+e,t])))},ze=ae.paths,Fe=oe.formatStringName;function _e(e=""){switch(e=e.toLowerCase()){case"zero":return 0;case"one":return 1;case"two":return 2;case"three":return 3;case"four":return 4;case"five":return 5;case"six":return 6;case"seven":return 7;case"eight":return 8;case"nine":return 9}}function je(e){let t;switch(e.getType()){case ze.addDelegate:t??="Bind Event to ";case ze.clearDelegate:t??="Unbind all Events from ";case ze.removeDelegate:return t??="Unbind Event from ",t+Fe(e.DelegateReference?.MemberName?.toString().replace(/Delegate$/,"")??"None");case ze.asyncAction:if(e.ProxyFactoryFunctionName)return Fe(e.ProxyFactoryFunctionName?.toString());case ze.actorBoundEvent:case ze.componentBoundEvent:return`${Fe(e.DelegatePropertyName?.toString())} (${e.ComponentPropertyName?.toString()??"Unknown"})`;case ze.callDelegate:return`Call ${e.DelegateReference?.MemberName?.toString()??"None"}`;case ze.createDelegate:return"Create Event";case ze.customEvent:if(e.CustomFunctionName)return e.CustomFunctionName?.toString();case ze.dynamicCast:return e.TargetType?`Cast To ${e.TargetType?.getName()}`:"Bad cast node";case ze.enumLiteral:return`Literal enum ${e.Enum?.getName()}`;case ze.event:return`Event ${(e.EventReference?.MemberName?.toString()??"").replace(/^Receive/,"")}`;case ze.executionSequence:return"Sequence";case ze.forEachElementInEnum:return`For Each ${e.Enum?.getName()}`;case ze.forEachLoopWithBreak:return"For Each Loop with Break";case ze.functionEntry:return"UserConstructionScript"===e.FunctionReference?.MemberName?.toString()?"Construction Script":e.FunctionReference?.MemberName?.toString();case ze.functionResult:return"Return Node";case ze.ifThenElse:return"Branch";case ze.makeStruct:if(e.StructType)return`Make ${e.StructType.getName()}`;case ze.materialExpressionComponentMask:{const t=e.getMaterialSubobject();if(t)return`Mask ( ${ae.rgba.filter((e=>!0===t[e].getter().value)).map((e=>e+" ")).join("")})`}case ze.materialExpressionConstant:t??=[e.getCustomproperties().find((e=>"Value"==e.PinName.toString()))?.DefaultValue];case ze.materialExpressionConstant2Vector:t??=[e.getCustomproperties().find((e=>"X"==e.PinName?.toString()))?.DefaultValue,e.getCustomproperties().find((e=>"Y"==e.PinName?.toString()))?.DefaultValue];case ze.materialExpressionConstant3Vector:case ze.materialExpressionConstant4Vector:if(!t){const i=e.getCustomproperties().find((e=>"Constant"==e.PinName?.toString()))?.DefaultValue;t=i instanceof Be?[i.X,i.Y,i.Z].map((e=>e.valueOf())):i instanceof Oe?[i.R,i.G,i.B,i.A].map((e=>e.valueOf())):[]}if(t?.length>0)return t.map((e=>oe.printExponential(e))).join(",");t=void 0;break;case ze.materialExpressionFunctionInput:{const t=e.getMaterialSubobject();return`Input ${t?.InputName??"In"} (${t?.InputType?.value.match(/^.+?_(\w+)$/)?.[1]??"Vector3"})`}case ze.materialExpressionLogarithm:return"Ln";case ze.materialExpressionLogarithm10:return"Log10";case ze.materialExpressionLogarithm2:return"Log2";case ze.materialExpressionMaterialFunctionCall:const i=e.getMaterialSubobject()?.MaterialFunction;if(i)return i.getName();break;case ze.materialExpressionSquareRoot:return"Sqrt";case ze.materialExpressionSubtract:const r=e.getMaterialSubobject();if(r)return`Subtract(${r.ConstA??"1"},${r.ConstB??"1"})`;case ze.metasoundEditorGraphExternalNode:{const t=e.ClassName?.Name;if(t)return"Add"===t?"+":t}case ze.niagaraNodeConvert:return`Make ${(e.AutowireMakeType?.ClassStructOrEnum??"").toString().match(/(?:Niagara)?(\w+)['"]*$/)?.[1]??""}`;case ze.pcgEditorGraphNodeInput:return"Input";case ze.pcgEditorGraphNodeOutput:return"Output";case ze.soundNodeWavePlayer:return`Wave Player : ${e.getSounCueSubobject()?.SoundWaveAssetPtr?.type.match(/([^.]+)$/)?.[0]??"NONE"}`;case ze.spawnActorFromClass:let n=e.getCustomproperties().find((e=>"ReturnValue"==e.PinName.toString()))?.PinType?.PinSubCategoryObject?.getName();return"Actor"===n&&(n=null),`SpawnActor ${Fe(n??"NONE")}`;case ze.switchEnum:return`Switch on ${e.Enum?.getName()??"Enum"}`;case ze.switchInteger:return"Switch on Int";case ze.variableGet:return"";case ze.variableSet:return"SET"}const i=e.getClass();let r=e.switchTarget();if(r)return"E"!==r[0]&&(r=Fe(r)),`Switch on ${r}`;if(e.isComment())return e.NodeComment.toString();const n=e.getHIDAttribute();if(n){const e=n.toString();let t=function(e){let t=He[e];if(t)return t;if(t=_e(e)?.toString(),t)return t;const i=e.match(/NumPad([a-zA-Z]+)/);return i&&(t=_e(i[1]).toString(),t)?"Num "+t:void 0}(e)??Fe(e);return i===ze.inputDebugKey?t="Debug Key "+t:i===ze.getInputAxisKeyValue&&(t="Get "+t),t}if(i===ze.macro)return Fe(e.MacroGraphReference?.getMacroName());const s=e.getMaterialSubobject();if(s){let e=je(s);return e=e.match(/Material Expression (.+)/)?.[1]??e,e}if(e.isPcg()&&e.getPcgSubobject()){let t=e.getPcgSubobject();return t.NodeTitle?t.NodeTitle.toString():je(t)}const a=e.getSounCueSubobject();if(a)return oe.formatStringName(a.getObjectName(!0).replace(/^SoundNode/,""));const o=e.getSubgraphObject();if(o)return o.Graph.getName();const l=e.getSettingsObject();if(l){if(l.ExportPath?.valueOf()?.type===ze.pcgHiGenGridSizeSettings)return`Grid Size: ${l.HiGenGridSize?.toString().match(/\d+/)?.[0]?.concat("00")??l.HiGenGridSize?.toString().match(/^\w+$/)?.[0]??"256"}`;if(l.BlueprintElementInstance)return Fe(l.BlueprintElementType.getName());if(l.Operation){const e=l.Name?.toString().match(/PCGMetadata(\w+)Settings_\d+/);if(e)return Fe(e[1]+": "+l.Operation)}const e=l.getSubgraphObject();if(e&&e.Graph)return e.Graph.getName()}let c,u=e.FunctionReference?.MemberName?.toString();if(u){const t=e.FunctionReference.MemberParent?.path??"";switch(u){case"AddKey":let e=t.match(Ge);if(e)return`Add Key (${Fe(e[1])})`;case"Concat_StrStr":return"Append"}const i=u.match(ae.lineTracePattern);if(i)return"Line Trace"+("Multi"===i[1]?" Multi ":" ")+(""===i[2]?"By Channel":Fe(i[2]));switch(t){case ze.blueprintGameplayTagLibrary:case ze.kismetMathLibrary:case ze.kismetStringLibrary:case ze.slateBlueprintLibrary:case ze.timeManagementBlueprintLibrary:case ze.typedElementHandleLibrary:const e=u.match(/[BF]([A-Z]\w+)/);switch(e&&(u=e[1]),u){case"Abs":return"ABS";case"BooleanAND":return"AND";case"BooleanNAND":return"NAND";case"BooleanOR":return"OR";case"Equal":return"==";case"Exp":return"e";case"LineTraceSingle":return"Line Trace By Channel";case"Max":case"MaxInt64":return"MAX";case"Min":case"MinInt64":return"MIN";case"Not_PreBool":return"NOT";case"Sin":return"SIN";case"Sqrt":return"SQRT";case"Square":return"^2";case"CrossProduct2D":return"cross";case"Vector4_CrossProduct3":return"cross3";case"DotProduct2D":case"Vector4_DotProduct":return"dot";case"Vector4_DotProduct3":return"dot3"}if(u.startsWith("Add_"))return"+";if(u.startsWith("And_"))return"&";if(u.startsWith("Conv_"))return"";if(u.startsWith("Cross_"))return"cross";if(u.startsWith("Divide_"))return String.fromCharCode(247);if(u.startsWith("Dot_"))return"dot";if(u.startsWith("EqualEqual_"))return"==";if(u.startsWith("Greater_"))return">";if(u.startsWith("GreaterEqual_"))return">=";if(u.startsWith("Less_"))return"<";if(u.startsWith("LessEqual_"))return"<=";if(u.startsWith("Multiply_"))return String.fromCharCode(10799);if(u.startsWith("Not_"))return"~";if(u.startsWith("NotEqual_"))return"!=";if(u.startsWith("Or_"))return"|";if(u.startsWith("Percent_"))return"%";if(u.startsWith("Subtract_"))return"-";if(u.startsWith("Xor_"))return"^";break;case ze.blueprintSetLibrary:{const e=u.match(/Set_(\w+)/);if(e)return Fe(e[1]).toUpperCase()}break;case ze.blueprintMapLibrary:{const e=u.match(/Map_(\w+)/);if(e)return Fe(e[1]).toUpperCase()}break;case ze.kismetArrayLibrary:{const e=u.match(/Array_(\w+)/);if(e)return e[1].toUpperCase()}}return Fe(u)}return e.OpName?Re[e.OpName.toString()]??Fe(e.OpName.toString().replaceAll(/(?:^\w+(?<!^Matrix))?::/g," ")):e.FunctionDisplayName?Fe(e.FunctionDisplayName.toString()):e.ObjectRef?e.ObjectRef.getName():i.startsWith(c="/Script/NiagaraEditor.NiagaraNodeParameter")||i.startsWith(c="/Script/NiagaraEditor.NiagaraNode")?e.Input?.Name?.toString()??Fe(i.substring(c.length)):e.ParameterName?e.ParameterName.toString():Fe(e.getNameAndCounter()[0])}const Ue=ae.paths;class Ke extends ke{static type;static grammar=this.createGrammar();get length(){return this.values.length}constructor(e=[]){super(),this.values=e}static createGrammar(e=this.type?.grammar??xe.lazy((()=>this.unknownEntityGrammar))){return this.inlined?e:xe.seq(xe.reg(/\(\s*/),e.sepBy(Te.commaSeparation).opt(),xe.reg(/\s*(,\s*)?\)/,1)).map((([e,t,i])=>{t=t instanceof Array?t:[];let r=this;return void 0!==i!==r.trailing&&(r=r.flagTrailing(void 0!==i)),new r(t)})).label(`ArrayEntity of ${this.type?.className()??"unknown values"}`)}static flagInlined(e=!0){const t=this.asUniqueClass();return t.inlined=e,t.grammar=t.createGrammar(),t}static of(e){const t=this.asUniqueClass();return t.type=e,t.grammar=t.createGrammar(),t}doSerialize(e=!1,t="",i=this.constructor,r=i.printKey,n=i.keySeparator,s=i.attributeSeparator,a=i.wrap){if(i.inlined)return super.serialize.bind(this.values,e,t,i,r,n,s,a)();let o=this.values.map((t=>t?.serialize(e))).join(i.attributeSeparator);return this.trailing&&(o+=i.attributeSeparator),`(${o})`}valueOf(){return this.values}equals(e){if(!(e instanceof Ke)||this.values.length!==e.values.length)return!1;for(let t=0;t<this.values.length;++t)if(!this.values[t].equals(e.values[t]))return!1;return!0}}var qe;"undefined"==typeof window?import("crypto").then((e=>qe=e.default)).catch():qe=window.crypto;class Ye extends ke{static grammar=this.createGrammar();static generateGuid(){let e=new Uint32Array(4);qe.getRandomValues(e);let t="";return e.forEach((e=>{t+=("0".repeat(8)+e.toString(16).toUpperCase()).slice(-8)})),t}constructor(e=Ye.generateGuid()){super(),this.value=e}static createGrammar(){return xe.reg(/[0-9A-F]{32}/i).map((e=>new this(e))).label("GuidEntity")}serialize(e=!1,t="",i=this.constructor){let r=this.value;return i.serialized&&(r=`"${r}"`),r}toString(){return this.value}}class We extends Ve{static grammar=this.createGrammar();get value(){return super.value}set value(e){(e=Math.trunc(e))>=1<<31&&e<-(1<<31)&&(e=Math.floor(e),super.value=e)}static createGrammar(){return xe.numberInteger.map((e=>new this(e)))}}class Xe extends We{static grammar=this.createGrammar();get value(){return super.value}set value(e){e=Math.round(oe.clamp(e,0)),super.value=e}static createGrammar(){return xe.numberNatural.map((e=>new this(e)))}}const Ze=ae.paths,Qe={Any:s``,"Any[]":s``,audio:s``,blue:s``,bool:s``,byte:s``,class:s``,default:s``,delegate:s``,enum:s``,exec:s``,float:s``,green:s``,int:s``,int32:s``,int64:s``,interface:s``,name:s``,object:s``,Param:s``,"Param[]":s``,Point:s``,"Point[]":s``,real:s``,red:s``,string:s``,struct:s``,Surface:s``,"Surface[]":s``,text:s``,time:s``,Volume:s``,"Volume[]":s``,wildcard:s``,[Ze.linearColor]:s``,[Ze.niagaraBool]:s``,[Ze.niagaraDataInterfaceCollisionQuery]:s``,[Ze.niagaraDataInterfaceCurlNoise]:s``,[Ze.niagaraDataInterfaceVolumeTexture]:s``,[Ze.niagaraFloat]:s``,[Ze.niagaraInt32]:s``,[Ze.niagaraPosition]:s``,[Ze.quat4f]:s``,[Ze.rotator]:s``,[Ze.transform]:s``,[Ze.vector]:s``,[Ze.vector2f]:s``,[Ze.vector3f]:s``,[Ze.vector4f]:s``},Je=s``;function et(e){let t,i=e.PinFriendlyName?e.PinFriendlyName.toString():oe.formatStringName(e.PinName?.toString()??"");return(t=e.PinToolTip?.toString().match(/\s*(.+?(?=\n)|.+\S)\s*/))&&t[1].toLowerCase()===i.toLowerCase()?t[1]:(i=i.replace(/^Module\./,""),i)}class tt extends We{static grammar=this.createGrammar();get value(){return super.value}set value(e){(e=Math.trunc(e))>=0&&e<256&&(super.value=e)}createGrammar(){return xe.numberByte.map((e=>new this(e)))}}class it extends ke{static grammar=this.createGrammar();static escapedCharacters=/['"\\]/g;static unescapedBackslash=/(?<=(?:[^\\]|^)(?:\\\\)*)\\(?!\\)/;constructor(e=""){super(),this.value=e}static createGrammar(){return xe.doubleQuotedString.map((e=>new this(it.unescape(e)))).label("StringEntity")}static escape(e,t=!0){let i=e.replaceAll(new RegExp(`(${it.escapedCharacters.source})`,"g"),"\\$1");return t&&(i=i.replaceAll("\n","\\n").replaceAll("\t","\\t")),i}static unescape(e){return e.replaceAll(new RegExp(it.unescapedBackslash.source+"t","g"),"\t").replaceAll(new RegExp(it.unescapedBackslash.source+"n","g"),"\n").replaceAll(new RegExp(`\\\\(${it.escapedCharacters.source})`,"g"),"$1")}doSerialize(e=!1){let t=`"${it.escape(this.value)}"`;return e&&(t=it.escape(t,!1)),t}valueOf(){return this.value}toString(){return this.value}}class rt extends ke{static grammar=this.createGrammar();static f;static createGrammar(){return it.grammar}static from(e){const t=this.asUniqueClass();return t.f=e,t}static compute(e){return this.f(e)}}class nt extends ke{static attributeConverter={fromAttribute:(e,t)=>new this(e),toAttribute:(e,t)=>e.toString()};static grammar=this.createGrammar();static createGrammar(){return Te.symbol.map((e=>new this(e))).label("SymbolEntity")}constructor(e=""){super(),this.value=e}serialize(e=!1,t="",i=this.constructor){let r=this.value;return i.serialized&&(r=`"${r}"`),r}toString(){return this.value}}class st extends nt{static grammar=this.createGrammar();static createGrammar(){return Te.symbol.map((e=>new this(e)))}}class at extends st{static grammar=this.createGrammar();static createGrammar(){return xe.reg(Te.Regex.InsideString).map((e=>new this(e)))}}class ot extends ke{static lookbehind="INVTEXT";static grammar=this.createGrammar();constructor(e=""){super(),this.value=e}static createGrammar(){return xe.alt(xe.seq(xe.reg(new RegExp(`${this.lookbehind}\\s*\\(`)),xe.doubleQuotedString,xe.reg(/\s*\)/)).map((([e,t,i])=>t)),xe.reg(new RegExp(this.lookbehind)).map((()=>""))).map((e=>new this(e))).label("InvariantTextEntity")}doSerialize(){return this.lookbehind+'("'+this.value+'")'}valueOf(){return this.value}toString(){return this.value}}class lt extends ke{static attributeSeparator=", ";static printKey=e=>"";static lookbehind="NSLOCTEXT";static attributes={...super.attributes,namespace:it.withDefault(),key:it.withDefault(),value:it.withDefault()};static grammar=this.createGrammar();constructor(e={}){super(e),this.namespace,this.key,this.value}static createGrammar(){return xe.regArray(new RegExp(String.raw`${lt.lookbehind}\s*\(`+String.raw`\s*"(?<namespace>${Te.Regex.InsideString.source})"\s*,`+String.raw`\s*"(?<key>${Te.Regex.InsideString.source})"\s*,`+String.raw`\s*"(?<value>${Te.Regex.InsideString.source})"\s*`+String.raw`(?<trailing>,\s+)?`+String.raw`\)`,"m")).map((({groups:{namespace:e,key:t,value:i,trailing:r}})=>new this({namespace:new this.attributes.namespace(oe.unescapeString(e)),key:new this.attributes.namespace(oe.unescapeString(t)),value:new this.attributes.namespace(oe.unescapeString(i)),trailing:void 0!==r}))).label("LocalizedTextEntity")}toString(){return oe.capitalFirstLetter(this.value.valueOf())}}class ct extends ke{static attributeSeparator=", ";static lookbehind=["LOCGEN_FORMAT_NAMED","LOCGEN_FORMAT_ORDERED"];static grammar=this.createGrammar();constructor(e){super(),this.values=e}static createGrammar(){return xe.lazy((()=>xe.seq(xe.reg(new RegExp(String.raw`(${this.lookbehind.join("|")})\s*\(\s*`),1),xe.alt(...[it,lt,ot,ct].map((e=>e.grammar))).sepBy(xe.reg(/\s*\,\s*/)),xe.reg(/\s*\)/)).map((([e,t])=>{const i=new this(t);return i.lookbehind=e,i})))).label("FormatTextEntity")}doSerialize(e=!1,t="",i=this.constructor,r=i.printKey,n=i.keySeparator,s=i.attributeSeparator,a=i.wrap){const o=i.attributeSeparator;return this.lookbehind+"("+this.values.map((t=>t.serialize(e))).join(o)+(i.trailing?o:"")+")"}toString(){const e=this.values?.[0]?.toString();if(!e)return"";const t=this.values.slice(1).map((e=>e?.valueOf()));return"LOCGEN_FORMAT_NAMED"==this.lookbehind?e.replaceAll(/\{([a-zA-Z]\w*)\}/g,((e,i)=>{const r=t.indexOf(i)+1;return r>0&&r<t.length?t[r]:e})):"LOCGEN_FORMAT_ORDERED"==this.lookbehind?e.replaceAll(/\{(\d+)\}/g,((e,i)=>{const r=Number(i);return r<t.length?t[r]:e})):""}}class ut extends ke{static grammar=this.createGrammar();_value;get value(){return this._value}set value(e){e>=-(1n<<63n)&&e<1n<<63n&&(this._value=e)}constructor(e=0n){super(),this.value=BigInt(e)}static createGrammar(){return xe.numberBigInteger.map((e=>new this(e)))}serialize(e=!1,t="",i=this.constructor){let r=this.value.toString();return i.serialized&&(r=`"${r}"`),r}valueOf(){return this.value}toString(){return this.value.toString()}}class ht extends ke{static typeReference=xe.reg(new RegExp(Te.Regex.Path.source+"|"+Te.symbol.getParser().regexp.source));static fullReferenceGrammar=this.createFullReferenceGrammar();static grammar=this.createGrammar();#c;get type(){return this.#c}set type(e){this.#c=e}#V;get path(){return this.#V}set path(e){this.#B="",this.#V=e}#G;get full(){return this.#G}set full(e){this.#G=e}#B="";constructor(e="None",t="",i=(e.includes("/")||t?(e,t)=>`"${e+(t?`'${t}'`:"")}"`:(e,t)=>e)){super(),this.#c=e,this.#V=t,this.#G=i}static createGrammar(){return xe.alt(this.createFullReferenceSerializedGrammar(),this.createFullReferenceGrammar(),this.createTypeReferenceGrammar()).label("ObjectReferenceEntity")}static createFullReferenceGrammar(){return xe.regArray(new RegExp("("+this.typeReference.getParser().regexp.source+")(?:"+`'"(${Te.Regex.InsideString.source})"'|`+`'(${Te.Regex.InsideSingleQuotedString.source})')`)).map((([e,t,i,r])=>{let n=!!i,s=n?["'\"","\"'"]:["'","'"];return new this(t,n?i:r,((e,t)=>e+s[0]+t+s[1]))}))}static createFullReferenceSerializedGrammar(){return xe.regArray(new RegExp('"('+Te.Regex.InsideString.source+"?)(?:'("+Te.Regex.InsideSingleQuotedString.source+"?)')?\"")).map((([e,t,i])=>new this(t,i,((e,t)=>`"${e}${t?`'${t}'`:""}"`))))}static createTypeReferenceGrammar(){return this.typeReference.map((e=>new this(e,"",((e,t)=>e))))}static createNoneInstance(){return new this("None")}getName(e=!1){return this.#B?this.#B:e?oe.getNameFromPath(this.path.replace(/_C$/,""),e):this.#B=oe.getNameFromPath(this.path.replace(/_C$/,""),e)}doSerialize(e=!1){let t=this.full(this.type,this.path);return e&&(t=oe.escapeString(t,!1)),t}equals(e){return e instanceof ht&&(this.type==e.type&&this.path==e.path)}toString(){return this.full(this.type,this.path)}}class pt extends ke{static grammar=this.createGrammar();constructor(e=null,t=null){super(),this.objectName=e,this.pinGuid=t}static createGrammar(){return xe.seq(nt.grammar,xe.whitespace,Ye.grammar).map((([e,t,i])=>new this(e,i))).label("PinReferenceEntity")}doSerialize(){return this.objectName.serialize()+" "+this.pinGuid.serialize()}}class dt extends ke{static attributes={...super.attributes,MemberParent:ht,MemberName:it,MemberGuid:Ye};static grammar=this.createGrammar();constructor(e){super(e),this.MemberParent,this.MemberName,this.MemberGuid}static createGrammar(){return Te.createEntityGrammar(this,Te.commaSeparation,0,0)}}class mt extends ke{static attributes={...super.attributes,PinCategory:it.withDefault(),PinSubCategory:it,PinSubCategoryObject:ht,PinSubCategoryMemberReference:dt,ContainerType:nt,bIsReference:Le,bIsConst:Le,bIsWeakPointer:Le,bIsUObjectWrapper:Le,bSerializeAsSinglePrecisionFloat:Le};static grammar=this.createGrammar();constructor(e={}){super(e),this.PinCategory,this.PinSubCategory,this.PinSubCategoryObject,this.PinSubCategoryMemberReference,this.ContainerType,this.bIsReference,this.bIsConst,this.bIsWeakPointer,this.bIsUObjectWrapper,this.bIsUObjectWrapper,this.bSerializeAsSinglePrecisionFloat}static createGrammar(){return Te.createEntityGrammar(this).label("PinTypeEntity")}copyTypeFrom(e){for(const t of this.keys)void 0!==e[t]&&(this[t]=e[t])}}class gt extends ke{static attributes={...super.attributes,X:Ve.withDefault(),Y:Ve.withDefault()};static grammar=this.createGrammar();constructor(e){super(e),this.X,this.Y}static createGrammar(){return Te.createEntityGrammar(this,Te.commaSeparation,1).label("Vector2DEntity")}toArray(){return[this.X.valueOf(),this.Y.valueOf()]}}class bt extends gt{static grammar=this.createGrammar();static createGrammar(){return xe.alt(xe.regArray(new RegExp(/X\s*=\s*/.source+"(?<x>"+Te.numberRegexSource+")\\s+"+/Y\s*=\s*/.source+"(?<y>"+Te.numberRegexSource+")")).map((({groups:{x:e,y:t}})=>new this({X:new gt.attributes.X(e),Y:new gt.attributes.Y(t)}))),gt.grammar.map((e=>new this({X:e.X,Y:e.Y})))).label("RBSerializationVector2DEntity")}}class vt extends ke{static attributes={...super.attributes,R:Ve.withDefault(),P:Ve.withDefault(),Y:Ve.withDefault()};static grammar=this.createGrammar();constructor(e){super(e),this.R,this.P,this.Y}static createGrammar(){return Te.createEntityGrammar(this,Te.commaSeparation,1).label("RotatorEntity")}getRoll(){return this.R}getPitch(){return this.P}getYaw(){return this.Y}}class ft extends vt{static attributeSeparator=", ";static grammar=this.createGrammar();static createGrammar(){return xe.alt(xe.regArray(new RegExp(`(${Ve.numberRegexSource})`+String.raw`\s*,\s*`+`(${Ve.numberRegexSource})`+String.raw`\s*,\s*`+`(${Ve.numberRegexSource})`)).map((([e,t,i,r,n,s,a])=>new this({R:new vt.attributes.R(s,a?.length),P:new vt.attributes.P(t,i?.length),Y:new vt.attributes.Y(r,n?.length)}))),vt.grammar.map((e=>new this({R:e.R,P:e.P,Y:e.Y})))).label("SimpleSerializationRotatorEntity")}doSerialize(){const e=this.constructor.attributeSeparator;return this.P.serialize()+e+this.Y.serialize()+e+this.R.serialize()+(this.trailing?e:"")}}class yt extends gt{static attributeSeparator=", ";static grammar=this.createGrammar();static createGrammar(){return xe.alt(xe.regArray(new RegExp(`(${Ve.numberRegexSource})`+String.raw`\s*,\s*`+`(${Ve.numberRegexSource})`)).map((([e,t,i,r,n])=>new this({X:new gt.attributes.X(t,i?.length),Y:new gt.attributes.Y(r,n?.length)}))),gt.grammar.map((e=>new this({X:e.X,Y:e.Y})))).label("SimpleSerializationVector2DEntity")}doSerialize(){const e=this.constructor.attributeSeparator;return this.X.serialize()+e+this.Y.serialize()+(this.trailing?e:"")}}class wt extends ke{static attributes={...super.attributes,X:Ve.withDefault(),Y:Ve.withDefault(),Z:Ve.withDefault(),W:Ve.withDefault()};static grammar=this.createGrammar();constructor(e){super(e),this.X,this.Y,this.Z,this.W}static createGrammar(){return Te.createEntityGrammar(this,Te.commaSeparation,1).label("Vector4DEntity")}toArray(){return[this.X.valueOf(),this.Y.valueOf(),this.Z.valueOf(),this.W.valueOf()]}}class St extends wt{static grammar=this.createGrammar();static createGrammar(){return xe.alt(xe.regArray(new RegExp(`(${Te.numberRegexSource})`+String.raw`\s*,\s*`+`(${Te.numberRegexSource})`+String.raw`\s*,\s*`+`(${Te.numberRegexSource})`+String.raw`\s*,\s*`+`(${Te.numberRegexSource})`)).map((([e,t,i,r,n])=>new this({X:new wt.attributes.X(t),Y:new wt.attributes.Y(i),Z:new wt.attributes.Z(r),W:new wt.attributes.W(n)}))),wt.grammar)}}class Et extends Be{static allowShortSerialization=!1;static attributeSeparator=", ";static grammar=this.createGrammar();static createGrammar(){return xe.alt(xe.regArray(new RegExp(`(${Ve.numberRegexSource})`+(this.allowShortSerialization?"(?:":"")+String.raw`\s*,\s*`+`(${Ve.numberRegexSource})`+String.raw`\s*,\s*`+`(${Ve.numberRegexSource})`+(this.allowShortSerialization?")?":""))).map((([e,t,i,r,n,s,a])=>new this({X:new Be.attributes.X(t,i?.length),Y:new Be.attributes.Y(r,n?.length),Z:new Be.attributes.Z(s,a?.length)}))),Be.grammar.map((e=>new this({X:e.X,Y:e.Y,Z:e.Z}))))}static flagAllowShortSerialization(e=!0){const t=this.asUniqueClass();return e!==t.allowShortSerialization&&(t.allowShortSerialization=e,t.grammar=t.createGrammar()),t}doSerialize(){const e=this.constructor.attributeSeparator;return this.X.serialize()+e+this.Y.serialize()+e+this.Z.serialize()+(this.trailing?e:"")}}const Ct=ae.paths;class Nt extends ke{static lookbehind="Pin";static#H={bool:Le,byte:tt,enum:st,exec:it,float:Ve,int:We,int64:ut,name:it,real:Ve,string:it,[Ct.linearColor]:Oe,[Ct.niagaraBool]:Le,[Ct.niagaraFloat]:Ve,[Ct.niagaraPosition]:Be,[Ct.rotator]:vt,[Ct.vector]:Be,[Ct.vector2D]:gt,[Ct.vector4f]:wt};static#R={enum:at,rg:bt,[Ct.niagaraPosition]:Et.flagAllowShortSerialization(),[Ct.rotator]:ft,[Ct.vector]:Et,[Ct.vector2D]:yt,[Ct.vector3f]:Et,[Ct.vector4f]:St};static attributes={PinId:Ye.withDefault(),PinName:it.withDefault(),PinFriendlyName:Me.accepting(lt,ct,ot,it),PinToolTip:it,Direction:it,PinType:mt.withDefault().flagInlined(),LinkedTo:Ke.of(pt).withDefault().flagSilent(),SubPins:Ke.of(pt),ParentPin:pt,DefaultValue:rt.from((e=>e.getEntityType(!0)?.flagSerialized()??it)),AutogeneratedDefaultValue:it,DefaultObject:ht,PersistentGuid:Ye,bHidden:Le,bNotConnectable:Le,bDefaultValueIsReadOnly:Le,bDefaultValueIsIgnored:Le,bAdvancedView:Le,bOrphanedPin:Le};static grammar=this.createGrammar();#z=!1;set recomputesNodeTitleOnChange(e){this.#z=e}get recomputesNodeTitleOnChange(){return this.#z}#F=null;get objectEntity(){try{return this.#F}catch(e){return null}}set objectEntity(e){this.#F=e}#_;get pinIndex(){return this.#_}set pinIndex(e){this.#_=e}constructor(e={}){super(e),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,this.objectEntity}static createGrammar(){return Te.createEntityGrammar(this)}static fromLegacyObject(e){return new Nt(e)}getType(){const e=this.PinType.PinCategory?.toString().toLocaleLowerCase();if(["struct","class","object","type","statictype"].includes(e))return this.PinType.PinSubCategoryObject?.path;if(this.isEnum())return"enum";if(this.objectEntity?.isPcg()){const e=this.objectEntity.getPcgSubobject(),t=this.getPinObject(e);if(t){let e=t.Properties?.AllowedTypes?.toString()??"";if(""==e&&(e=this.PinType.PinCategory??"",""==e&&(e="Any")),e)return!1!==t.Properties.bAllowMultipleData?.valueOf()&&!1!==t.Properties.bAllowMultipleConnections?.valueOf()&&(e+="[]"),e}}if("optional"===e){const e=this.PinType.PinSubCategory?.toString();switch(e){case"red":return"real";case"rg":return"rg";case"rgb":return Ct.vector;case"rgba":return Ct.linearColor;default:return e}}return e}getEntityType(e=!1){const t=this.getType(),i=Nt.#H[t],r=Nt.#R[t];return e&&void 0!==r?r:i}pinTitle(){return et(this)}copyTypeFrom(e){this.PinType=e.PinType}getDefaultValue(e=!1){return void 0===this.DefaultValue&&e&&(this.DefaultValue=new(this.getEntityType(!0))),this.DefaultValue}isEnum(){const e=this.PinType.PinSubCategoryObject?.type;return e===Ct.enum||e===Ct.userDefinedEnum||"enum"===e?.toLowerCase()}isExecution(){return"exec"===this.PinType.PinCategory.toString()||this.getType()===Ct.niagaraParameterMap}isHidden(){return this.bHidden?.valueOf()}isInput(){return!this.isHidden()&&"EGPD_Output"!=this.Direction?.toString()}isOutput(){return!this.isHidden()&&"EGPD_Output"==this.Direction?.toString()}isLinked(){return this.LinkedTo?.length>0}linkTo(e,t){const i=this.LinkedTo.values?.some((i=>i.objectName.toString()==e&&i.pinGuid.toString()==t.PinId.toString()));return!i&&(this.LinkedTo.values.push(new pt(new nt(e),t.PinId)),!0)}unlinkFrom(e,t){const i=this.LinkedTo.values?.findIndex((i=>i.objectName.toString()==e&&i.pinGuid.toString()==t.PinId.toString()));return i>=0&&(this.LinkedTo.values.splice(i,1),0===this.LinkedTo.length&&void 0===Nt.attributes.LinkedTo.default&&(this.LinkedTo.values=[]),!0)}getPinObject(e){const t=this.isInput()?e.InputPins?.valueOf()[this.pinIndex]:e.OutputPins?.valueOf()[this.pinIndex];if(t)return e[ae.subObjectAttributeNameFromReference(t,!0)]}getSubCategory(){return this.PinType.PinSubCategoryObject?.path}pinColor(){return function(e){if("mask"===e.PinType.PinCategory?.toString()){const t=Qe[e.PinType.PinSubCategory?.toString()];if(t)return t}else if("optional"===e.PinType.PinCategory?.toString())return Je;const t=e.getType();return Qe[t]??Qe[e.PinType.PinCategory?.toString().toLowerCase()]??(t.startsWith("/Script/Niagara.")?Qe.struct:Qe.default)}(this)}}const Pt=e=>e.PinName?.toString().match(/^\s*([A-Z])\s*$/)?.[1]?.charCodeAt(0)-"A".charCodeAt(0),xt=ae.paths;class kt extends ke{static attributes={...super.attributes,MacroGraph:ht,GraphBlueprint:ht,GraphGuid:Ye};static grammar=this.createGrammar();constructor(e){super(e),this.MacroGraph,this.GraphBlueprint,this.GraphGuid}static createGrammar(){return Te.createEntityGrammar(this)}getMacroName(){const e=this.MacroGraph.path.search(":");return this.MacroGraph.path.substring(e+1)}}class Lt extends ke{static grammar=this.createGrammar();static createGrammar(){return xe.reg(new RegExp(String.raw`\(${xe.whitespaceInlineOpt.getParser().regexp.source}\)`)).map((e=>new this)).label("NullEntity")}serialize(e=!1,t="",i=this.constructor){let r="()";return i.serialized&&(r=`"${r}"`),r}}class At extends ke{static attributes={...super.attributes,ScriptVariable:ht,OriginalChangeId:Ye};static grammar=this.createGrammar();constructor(e={}){super(e),this.ScriptVariable,this.OriginalChangeId}static createGrammar(){return Te.createEntityGrammar(this).label("ScriptVariableEntity")}}class Mt extends Nt{static attributes={...super.attributes,PinId:Ye};static grammar=this.createGrammar();static createGrammar(){return xe.seq(xe.reg(new RegExp(`(${Te.Regex.Symbol.source}\\s*)?\\(\\s*`),1),Te.createAttributeGrammar(this).sepBy(Te.commaSeparation),xe.reg(/\s*(?:,\s*)?\)/)).map((([e,t,i])=>{e??="";let r={};return e.length&&(r.lookbehind=e),t.forEach((e=>e(r))),new this(r)})).label("UnknownPinEntity")}}class Tt extends ke{static attributes={...super.attributes,MemberScope:it,MemberName:it.withDefault(),MemberGuid:Ye,bSelfContext:Le};static grammar=this.createGrammar();constructor(e){super(e),this.MemberScope,this.MemberName,this.MemberGuid,this.bSelfContext}static createGrammar(){return Te.createEntityGrammar(this).label("VariableReferenceEntity")}}class It extends ke{#j=!1;get exported(){return this.#j}set exported(e){this.#j=e}static#U=/^(\w+?)(?:_(\d+))?$/;static printKey=e=>e.startsWith(ae.subObjectAttributeNamePrefix)?"":e;static attributeSeparator="\n";static wrap=this.notWrapped;static trailing=!0;static attributes={...super.attributes,Class:ht,Name:it,Archetype:ht,ExportPath:$e.of(ht),ObjectRef:ht,BlueprintElementType:ht,BlueprintElementInstance:ht,ConstA:$e.of(Ve),ConstB:$e.of(Ve),PinTags:Ke.of(Lt).flagInlined(),PinNames:Ke.of(it).flagInlined(),AxisKey:nt,InputAxisKey:nt,InputName:it,InputType:nt,NumAdditionalInputs:Xe,bIsPureFunc:Le,bIsConstFunc:Le,bIsCaseSensitive:Le,bDefaultsToPureFunc:Le,VariableReference:Tt,SelfContextInfo:nt,DelegatePropertyName:it,DelegateOwnerClass:ht,ComponentPropertyName:it,EventReference:dt,FunctionReference:dt,FunctionScript:ht,CustomFunctionName:it,TargetType:ht,MacroGraphReference:kt,Enum:ht,EnumEntries:Ke.of(it).flagInlined(),InputKey:nt,OpName:it,CachedChangeId:Ye,FunctionDisplayName:it,AddedPins:Ke.of(Mt).withDefault().flagInlined().flagSilent(),ChangeId:Ye,MaterialFunction:ht,bOverrideFunction:Le,bInternalEvent:Le,bConsumeInput:Le,bExecuteWhenPaused:Le,bOverrideParentBinding:Le,bControl:Le,bAlt:Le,bShift:Le,bCommand:Le,CommentColor:Oe,bCommentBubbleVisible_InDetailsPanel:Le,bColorCommentBubble:Le,ProxyFactoryFunctionName:it,ProxyFactoryClass:ht,ProxyClass:ht,StructType:ht,MaterialExpression:ht,MaterialExpressionComment:ht,MoveMode:nt,TimelineName:it,TimelineGuid:Ye,SizeX:$e.of(We),SizeY:$e.of(We),Text:$e.of(it),ParameterName:it,ExpressionGUID:Ye,MaterialExpressionEditorX:$e.of(We),MaterialExpressionEditorY:$e.of(We),MaterialExpressionGuid:Ye,NodeTitle:it,NodeTitleColor:Oe,PositionX:$e.of(We),PositionY:$e.of(We),SettingsInterface:ht,PCGNode:ht,SoundNode:ht,SoundWaveAssetPtr:ht,HiGenGridSize:nt,Operation:nt,NodePosX:We,NodePosY:We,NodeHeight:We,NodeWidth:We,Graph:ht,SubgraphInstance:it,InputPins:Ke.of(ht).flagInlined(),OutputPins:Ke.of(ht).flagInlined(),bExposeToLibrary:Le,bCanRenameNode:Le,bCommentBubblePinned:Le,bCommentBubbleVisible:Le,NodeComment:it,AdvancedPinDisplay:nt,DelegateReference:Tt,EnabledState:nt,NodeGuid:Ye,ErrorType:We,ErrorMsg:it,ScriptVariables:Ke.flagInlined().of(At),Node:$e.of(ht),ExportedNodes:it,CustomProperties:Ke.of(Me.accepting(Nt,Mt)).withDefault().flagSilent()};static customPropertyGrammar=xe.seq(xe.reg(/CustomProperties\s+/),this.attributes.CustomProperties.type.grammar).map((([e,t])=>e=>{(e.CustomProperties??=new this.attributes.CustomProperties).values.push(t)}));static inlinedArrayEntryGrammar=xe.seq(xe.alt(Te.symbolQuoted.map((e=>[e,!0])),Te.symbol.map((e=>[e,!1]))),xe.reg(new RegExp(String.raw`\s*\(\s*(\d+)\s*\)\s*\=\s*`),1).map(Number)).chain((([[e,t],i])=>(this.attributes[e]?.grammar??ke.unknownEntityGrammar).map((r=>n=>{if(void 0===n[e]){let i=Ke;t!=i.quoted&&(i=i.flagQuoted(t)),i.inlined||(i=i.flagInlined()),n[e]=new i}n[e].values[i]=r}))));static grammar=this.createGrammar();static grammarMultipleObjects=xe.seq(xe.whitespaceOpt,this.grammar,xe.seq(xe.whitespace,this.grammar).map((([e,t])=>t)).many(),xe.whitespaceOpt).map((([e,t,i,r])=>[t,...i]));constructor(e={}){if("NodePosX"in e!="NodePosY"in e){const t=Object.entries(e),[i,r]="NodePosX"in e?["NodePosY",Object.keys(e).indexOf("NodePosX")+1]:["NodePosX",Object.keys(e).indexOf("NodePosY")];t.splice(r,0,[i,new We(0)]),e=Object.fromEntries(t)}super(e),this.CustomProperties,this.AddedPins,this.AdvancedPinDisplay,this.Archetype,this.AxisKey,this.bIsPureFunc,this.bDefaultsToPureFunc,this.BlueprintElementInstance,this.BlueprintElementType,this.Class,this.CommentColor,this.ComponentPropertyName,this.ConstA,this.ConstB,this.CustomFunctionName,this.DelegatePropertyName,this.DelegateReference,this.EnabledState,this.Enum,this.EnumEntries,this.EventReference,this.ExportedNodes,this.ExportPath,this.FunctionDisplayName,this.FunctionReference,this.FunctionScript,this.Graph,this.HiGenGridSize,this.InputAxisKey,this.InputKey,this.InputName,this.InputPins,this.InputType,this.MacroGraphReference,this.MaterialExpression,this.MaterialExpressionComment,this.MaterialExpressionEditorX,this.MaterialExpressionEditorY,this.MaterialFunction,this.Name,this.Node,this.NodeComment,this.NodeHeight,this.NodePosX,this.NodePosY,this.NodeTitle,this.NodeTitleColor,this.NodeWidth,this.NumAdditionalInputs,this.ObjectRef,this.Operation,this.OpName,this.OutputPins,this.ParameterName,this.PCGNode,this.SoundNode,this.SoundWaveAssetPtr,this.PinNames,this.PinTags,this.PositionX,this.PositionY,this.ProxyFactoryFunctionName,this.ScriptVariables,this.SettingsInterface,this.SizeX,this.SizeY,this.StructType,this.SubgraphInstance,this.TargetType,this.Text,this.Text,this.VariableReference,this.Pins instanceof Ke&&this.Pins.valueOf().forEach((e=>{const t=this[ae.subObjectAttributeNameFromReference(e,!0)];if(t){const e=Nt.fromLegacyObject(t);e.LinkedTo=new Nt.attributes.LinkedTo,this.getCustomproperties(!0).push(e),this.CustomProperties.ignored=!0}}));const t=this.getMaterialSubobject();if(t){const e=t;if(void 0!==e.SizeX&&(e.SizeX.getter=()=>this.NodeWidth),e.SizeY&&(e.SizeY.getter=()=>this.NodeHeight),e.Text&&(e.Text.getter=()=>this.NodeComment),e.MaterialExpressionEditorX&&(e.MaterialExpressionEditorX.getter=()=>this.NodePosX),e.MaterialExpressionEditorY&&(e.MaterialExpressionEditorY.getter=()=>this.NodePosY),this.getType()===ae.paths.materialExpressionComponentMask){const t=ae.rgba.map((e=>{const t=this.getPinEntities().find((t=>t.PinName.toString()===e));return t.recomputesNodeTitleOnChange=!0,t}));e.keys=[...ae.rgba,...e.keys];const i=$e.of(Le).withDefault().flagSilent();e.R=new i((()=>t[0].DefaultValue)),e.G=new i((()=>t[1].DefaultValue)),e.B=new i((()=>t[2].DefaultValue)),e.A=new i((()=>t[3].DefaultValue))}else if(this.getType()===ae.paths.materialExpressionSubtract){const t=$e.of(Ve.withPrecision(6)).withDefault((()=>new $e((()=>new Ve(1))))).flagSilent(),i=this.getCustomproperties().find((e=>"A"===e.PinName?.toString())),r=this.getCustomproperties().find((e=>"B"===e.PinName?.toString()));(i||r)&&(e.keys=["ConstA","ConstB",...e.keys],i&&(i.recomputesNodeTitleOnChange=!0,e.ConstA=new t((()=>i.DefaultValue))),r&&(r.recomputesNodeTitleOnChange=!0,e.ConstB=new t((()=>r.DefaultValue))))}}const i=this.getPcgSubobject();i&&(i.PositionX&&(i.PositionX.getter=()=>this.NodePosX),i.PositionY&&(i.PositionY.getter=()=>this.NodePosY),i.getSubobjects().forEach((e=>{if(void 0!==e.Node){const t=e.Node.getter();t.type===this.PCGNode.type&&t.path===`${this.Name}.${this.PCGNode.path}`&&(e.Node.getter=()=>new ht(this.PCGNode.type,`${this.Name}.${this.PCGNode.path}`,t.full))}})));let r=0,n=0;this.getCustomproperties().forEach(((e,t)=>{e.objectEntity=this,e.pinIndex=e.isInput()?r++:e.isOutput()?n++:t})),this.mirrorNameInExportPaths()}static createGrammar(){return xe.seq(xe.reg(/Begin +Object/),xe.seq(xe.whitespace,xe.alt(this.createSubObjectGrammar(),this.customPropertyGrammar,Te.createAttributeGrammar(this,xe.reg(Te.Regex.MultipleWordsSymbols)),Te.createAttributeGrammar(this,Te.attributeNameQuoted,void 0,((e,t,i)=>{oe.objectSet(e,[...t,"quoted"],!0)})),this.inlinedArrayEntryGrammar)).map((([e,t])=>t)).many(),xe.reg(/\s+End +Object/)).map((([e,t,i])=>{const r={};return t.forEach((e=>e(r))),new this(r)})).label("ObjectEntity")}static createSubObjectGrammar(){return xe.lazy((()=>this.grammar)).map((e=>t=>{e.trailing=!1,t[ae.subObjectAttributeNameFromEntity(e)]=e}))}mirrorNameInExportPaths(e=this.Name?.toString()){if(!e)return;const t=[this];for(let i=0;i<t.length;++i){const r=t[i];if(!(r instanceof It))continue;if(t.push(...Object.values(r)),!r.ExportPath?.valueOf().path.includes(e))continue;const n=r.constructor.attributes.ExportPath;let s=r.ExportPath;r.ExportPath=new n((()=>{const t=s.valueOf();return new n.type(t.type,t.path.replace(e,this.Name?.toString()??""),t.full)}))}}#K;getClass(){if(!this.#K&&(this.#K=(this.Class?.path?this.Class.path:this.Class?.type)??this.ExportPath?.valueOf()?.type??"",this.#K&&!this.#K.startsWith("/"))){let e=Object.values(ae.paths).find((e=>e.endsWith("."+this.#K)));e&&(this.#K=e)}return this.#K}getType(){const e=this.MacroGraphReference?.MacroGraph?.path;if(e)return e;if(this.MaterialExpression)return this.MaterialExpression.type;let t=this.getSounCueSubobject();return t?t.getClass():this.getClass()}getObjectName(e=!1){return e?this.getNameAndCounter()[0]:this.Name.toString()}getNameAndCounter(){const e=this.getObjectName().match(It.#U);return e?[e[1]??"",parseInt(e[2]??"0")]:["",0]}getCounter(){return this.getNameAndCounter()[1]}getNodeWidth(){return this.NodeWidth??this.isComment()?ae.defaultCommentWidth:void 0}setNodeWidth(e){this.NodeWidth||(this.NodeWidth=new We),this.NodeWidth.value=e}getNodeHeight(){return this.NodeHeight??this.isComment()?ae.defaultCommentHeight:void 0}setNodeHeight(e){this.NodeHeight||(this.NodeHeight=new We),this.NodeHeight.value=e}getNodePosX(){return this.NodePosX?.value??0}setNodePosX(e){this.NodePosX||(this.NodePosX=new We),this.NodePosX.value=Math.round(e)}getNodePosY(){return this.NodePosY?.value??0}setNodePosY(e){this.NodePosY||(this.NodePosY=new We),this.NodePosY.value=Math.round(e)}getCustomproperties(e=!1){return this.CustomProperties.values}getPinEntities(){return this.getCustomproperties().filter((e=>e.constructor===Nt))}getSubobjects(){return Object.keys(this).filter((e=>e.startsWith(ae.subObjectAttributeNamePrefix))).flatMap((e=>[this[e],...this[e].getSubobjects()]))}switchTarget(){const e=this.getClass().match(ae.switchTargetPattern);if(e)return e[1]}isEvent(){switch(this.getClass()){case ae.paths.actorBoundEvent:case ae.paths.componentBoundEvent:case ae.paths.customEvent:case ae.paths.event:case ae.paths.inputAxisKeyEvent:case ae.paths.inputVectorAxisEvent:return!0}return!1}isComment(){switch(this.getClass()){case ae.paths.comment:case ae.paths.materialGraphNodeComment:return!0}return!1}isMaterial(){const e=this.getClass();return e.startsWith("/Script/Engine.MaterialExpression")||e.startsWith("/Script/InterchangeImport.MaterialExpression")||e.startsWith("/Script/UnrealEd.MaterialGraph")}getMaterialSubobject(){const e=this.MaterialExpression??this.MaterialExpressionComment;return e?this[ae.subObjectAttributeNameFromReference(e,!0)]:null}isPcg(){return this.getClass()==ae.paths.pcgEditorGraphNode||null!=this.getPcgSubobject()}isNiagara(){return this.Class&&(this.Class.type?this.Class.type:this.Class.path)?.startsWith("/Script/NiagaraEditor.")}isSoundCue(){return this.getClass()==ae.paths.soundCueGraphNode}getBlueprintType(){return this.isMaterial()?"MATERIAL":this.isNiagara()?"NIAGARA":this.isPcg()?"PCG Graph":this.isSoundCue()?"SOUND CUE":"BLUEPRINT"}getPcgSubobject(){const e=this.PCGNode;return e?this[ae.subObjectAttributeNameFromReference(e,!0)]:null}getSounCueSubobject(){const e=this.SoundNode;return e?this[ae.subObjectAttributeNameFromReference(e,!0)]:null}getSettingsObject(){const e=this.SettingsInterface;return e?this[ae.subObjectAttributeNameFromReference(e,!0)]:null}getSubgraphObject(){const e=this.SubgraphInstance;return e?this[ae.subObjectAttributeNameFromName(e)]:null}isDevelopmentOnly(){const e=this.getClass();return"DevelopmentOnly"===this.EnabledState?.toString()||e.includes("Debug",Math.max(0,e.lastIndexOf(".")))}getHIDAttribute(){return this.InputKey??this.AxisKey??this.InputAxisKey}getDelegatePin(){return this.getCustomproperties().find((e=>"delegate"===e.PinType.PinCategory.toString()))}nodeColor(){return function(e){switch(e.getType()){case De.materialExpressionConstant2Vector:case De.materialExpressionConstant3Vector:case De.materialExpressionConstant4Vector:return ae.nodeColors.yellow;case De.materialExpressionFunctionInput:case De.materialExpressionTextureCoordinate:case De.materialExpressionWorldPosition:case De.pcgEditorGraphNodeInput:case De.pcgEditorGraphNodeOutput:return ae.nodeColors.red;case De.makeStruct:return ae.nodeColors.darkBlue;case De.materialExpressionMaterialFunctionCall:return ae.nodeColors.blue;case De.materialExpressionTextureSample:return ae.nodeColors.darkTurquoise;case De.niagaraNodeInput:switch(e.Usage?.toString()){case"Attribute":return ae.nodeColors.intenseGreen;case"Parameter":default:return ae.nodeColors.red;case"RapidIterationParameter":return ae.nodeColors.black;case"SystemConstant":case"TranslatorConstant":return ae.nodeColors.gray}}switch(e.getClass()){case De.niagaraNodeFunctionCall:return ae.nodeColors.darkerBlue;case De.dynamicCast:return ae.nodeColors.turquoise;case De.inputDebugKey:case De.inputKey:return ae.nodeColors.red;case De.createDelegate:case De.enumLiteral:case De.makeArray:case De.makeMap:case De.materialGraphNode:case De.select:return ae.nodeColors.green;case De.executionSequence:case De.ifThenElse:case De.macro:case De.multiGate:return ae.nodeColors.gray;case De.functionEntry:case De.functionResult:return ae.nodeColors.violet;case De.timeline:return ae.nodeColors.yellow}if(e.switchTarget())return ae.nodeColors.lime;if(e.isEvent())return ae.nodeColors.red;if(e.isComment())return(e.CommentColor?e.CommentColor:Oe.getWhite()).toDimmedColor().toCSSRGBValues();const t=e.getPcgSubobject();if(t){if(t.NodeTitleColor)return t.NodeTitleColor.toDimmedColor(.1).toCSSRGBValues();switch(e.PCGNode?.getName(!0)){case"Branch":case"Select":return ae.nodeColors.intenseGreen}}return e.bIsPureFunc?.valueOf()||e.bDefaultsToPureFunc?.valueOf()?ae.nodeColors.green:e.Input?.Name?ae.nodeColors.gray:ae.nodeColors.blue}(this)}nodeIcon(){return function(e){if(e.isMaterial()||e.isPcg()||e.isSoundCue()||e.isNiagara())return null;switch(e.getType()){case Ue.addDelegate:case Ue.asyncAction:case Ue.callDelegate:case Ue.clearDelegate:case Ue.createDelegate:case Ue.functionEntry:case Ue.functionResult:case Ue.removeDelegate:return ce.node;case Ue.customEvent:return ce.event;case Ue.doN:return ce.doN;case Ue.doOnce:return ce.doOnce;case Ue.dynamicCast:return ce.cast;case Ue.enumLiteral:return ce.enum;case Ue.event:return ce.event;case Ue.executionSequence:case Ue.multiGate:return ce.sequence;case Ue.flipflop:return ce.flipflop;case Ue.forEachElementInEnum:case Ue.forLoop:case Ue.forLoopWithBreak:case Ue.whileLoop:return ce.loop;case Ue.forEachLoop:case Ue.forEachLoopWithBreak:return ce.forEachLoop;case Ue.ifThenElse:return ce.branchNode;case Ue.isValid:return ce.questionMark;case Ue.makeArray:return ce.makeArray;case Ue.makeMap:return ce.makeMap;case Ue.makeSet:return ce.makeSet;case Ue.makeStruct:return ce.makeStruct;case Ue.metasoundEditorGraphExternalNode:return ce.metasoundFunction;case Ue.select:return ce.select;case Ue.spawnActorFromClass:return ce.spawnActor;case Ue.timeline:return ce.timer}if(e.switchTarget())return ce.switch;if(je(e).startsWith("Break"))return ce.breakStruct;if(e.getClass()===Ue.macro)return ce.macro;const t=e.getHIDAttribute()?.toString();return t?t.includes("Mouse")?ce.mouse:t.includes("Gamepad_Special")?ce.keyboard:t.includes("Gamepad")||t.includes("Steam")?ce.gamepad:t.includes("Touch")?ce.touchpad:ce.keyboard:e.getDelegatePin()?ce.event:e.ObjectRef?.type===Ue.ambientSound?ce.sound:ce.functionSymbol}(this)}additionalPinInserter(){return function(e){let t,i,r,n,s;switch(e.getType()){case xt.commutativeAssociativeBinaryOperator:case xt.promotableOperator:switch(s=e.FunctionReference?.MemberName?.toString(),s){default:if(!(s?.startsWith("Add_")||s?.startsWith("Subtract_")||s?.startsWith("Multiply_")||s?.startsWith("Divide_")))break;case"And_Int64Int64":case"And_IntInt":case"BMax":case"BMin":case"BooleanAND":case"BooleanNAND":case"BooleanOR":case"Concat_StrStr":case"FMax":case"FMin":case"Max":case"MaxInt64":case"Min":case"MinInt64":case"Or_Int64Int64":case"Or_IntInt":t??=()=>e.getPinEntities().filter((e=>e.isInput())),i??=Pt,r??=(i,r=-1,n=-1)=>{const s=String.fromCharCode(i>=0?i:n+"A".charCodeAt(0)+1);return e.NumAdditionalInputs=new Xe(t().length-1),s}}break;case xt.executionSequence:n??="Then";case xt.multiGate:n??="Out",t??=()=>e.getPinEntities().filter((e=>e.isOutput())),i??=e=>Number(e.PinName?.toString().match(new RegExp(String.raw`^\s*${n}[_\s]+(\d+)\s*$`,"i"))?.[1]),r??=(e,t=-1,i=-1,r)=>`${n} ${e>=0?e:t>0?`${n} 0`:i+1}`;break;case xt.switchInteger:t??=()=>e.getPinEntities().filter((e=>e.isOutput())),i??=e=>Number(e.PinName?.toString().match(/^\s*(\d+)\s*$/)?.[1]),r??=(e,t=-1,i=-1,r)=>(e<0?i+1:e).toString();break;case xt.switchGameplayTag:r??=(t,i=-1,r=-1,n)=>{const s=`Case_${t>=0?t:i>0?"0":r+1}`;return e.PinNames??=new Ke,e.PinNames.valueOf().push(new it(s)),delete e.PinTags.valueOf()[e.PinTags.length-1],e.PinTags.valueOf()[e.PinTags.length]=null,s};case xt.switchName:case xt.switchString:t??=()=>e.getPinEntities().filter((e=>e.isOutput())),i??=e=>Number(e.PinName.toString().match(/^\s*Case[_\s]+(\d+)\s*$/i)?.[1]),r??=(t,i=-1,r=-1,n)=>{const s=`Case_${t>=0?t:i>0?"0":r+1}`;return e.PinNames??=new Ke,e.PinNames.valueOf().push(new it(s)),s}}if(t)return()=>{let n=Number.MAX_SAFE_INTEGER,s=Number.MIN_SAFE_INTEGER,a=[];const o=t().reduce(((e,t)=>{const r=i(t);if(isNaN(r)){if(void 0===e)return t}else if(a.push(r),n=Math.min(r,n),r>s)return s=r,t;return e}),void 0);if(n!==Number.MAX_SAFE_INTEGER&&s!==Number.MIN_SAFE_INTEGER||(n=void 0,s=void 0),!o)return null;a.sort(((e,t)=>e<t?-1:e===t?0:1));let l=a[0],c=a.findIndex((e=>{const t=e-l>1;return l=e,t}));const u=new Nt(o);return u.PinId=new Ye,u.PinName=new it(r(c,n,s,u)),u.PinToolTip=void 0,u.DefaultValue&&(u.DefaultValue=new u.DefaultValue.constructor),e.getCustomproperties(!0).push(u),u}}(this)}showProperty(e){switch(e){case"Class":case"Name":case"Archetype":case"ExportPath":case"CustomProperties":return!1}return super.showProperty(e)}doSerialize(e=!1,t="",i=this.constructor,r=i.printKey,n=i.keySeparator,s=i.attributeSeparator,a=i.wrap){const o=i!==this.constructor,l=t+ae.indentation,c=this.trailing;this.trailing=!0;const u=super.doSerialize(e,l,i,r,n,s,a);return this.trailing=c,t+"Begin Object"+(this.Class?.type||this.Class?.path?` Class${n}${this.Class.serialize(e)}`:"")+(this.Name?` Name${n}${this.Name.serialize(e)}`:"")+(this.Archetype?` Archetype${n}${this.Archetype.serialize(e)}`:"")+(this.ExportPath?.valueOf()?.type||this.ExportPath?.valueOf()?.path?` ExportPath${n}${this.ExportPath.serialize(e)}`:"")+s+u+(!0!==i.attributes.CustomProperties.ignored&&!0!==this.CustomProperties.ignored?this.getCustomproperties().map((t=>l+r("CustomProperties ")+t.serialize(e)+s)).join(""):"")+t+"End Object"+(o&&i.trailing||this.trailing?s:"")}}class Ot extends It{constructor(e={},t=void 0){e.Class=new ht(ae.paths.knot),e.Name=new It.attributes.Name("K2Node_Knot");const i=new Nt({PinName:new Nt.attributes.PinName("InputPin")}),r=new Nt({PinName:new Nt.attributes.PinName("OutputPin"),Direction:new Nt.attributes.Direction("EGPD_Output")});t&&(i.copyTypeFrom(t),r.copyTypeFrom(t)),e.CustomProperties=new It.attributes.CustomProperties([i,r]),super(e)}}class Dt{#q;get target(){return this.#q}#e;get blueprint(){return this.#e}consumeEvent;options;listenHandler=()=>this.listenEvents();unlistenHandler=()=>this.unlistenEvents();constructor(e,t,i={}){i.consumeEvent??=!1,i.listenOnFocus??=!1,i.unlistenOnTextEdit??=!1,this.#q=e,this.#e=t,this.consumeEvent=i.consumeEvent,this.options=i}setup(){this.options.listenOnFocus&&(this.blueprint.addEventListener(ae.focusEventName.begin,this.listenHandler),this.blueprint.addEventListener(ae.focusEventName.end,this.unlistenHandler)),this.options.unlistenOnTextEdit&&(this.blueprint.addEventListener(ae.editTextEventName.begin,this.unlistenHandler),this.blueprint.addEventListener(ae.editTextEventName.end,this.listenHandler)),this.blueprint.focused&&this.listenEvents()}cleanup(){this.unlistenEvents(),this.blueprint.removeEventListener(ae.focusEventName.begin,this.listenHandler),this.blueprint.removeEventListener(ae.focusEventName.end,this.unlistenHandler),this.blueprint.removeEventListener(ae.editTextEventName.begin,this.unlistenHandler),this.blueprint.removeEventListener(ae.editTextEventName.end,this.listenHandler)}listenEvents(){}unlistenEvents(){}}class $t extends ke{static attributes={...super.attributes,ActionName:it,bShift:Le,bCtrl:Le,bAlt:Le,bCmd:Le,Key:nt};static grammar=this.createGrammar();constructor(e){super(e),this.ActionName,this.bShift,this.bCtrl,this.bAlt,this.bCmd,this.Key}static createGrammar(){return xe.alt(nt.grammar.map((e=>new this({Key:e}))),Te.createEntityGrammar(this))}}class Vt extends Dt{static#Y=e=>{};#W;pressedKey="";constructor(e,t,i={},r=Vt.#Y,n=Vt.#Y){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 $t)return e;if(e.constructor===String){const t=$t.grammar.run(e);if(t.status)return t.value}throw new Error("Unexpected key value")})),super(e,t,i),this.onKeyDown=r,this.onKeyUp=n,this.#W=this.options.activationKeys??[];let s=this;this.keyDownHandler=e=>{s.#W.some((t=>(e=>e.bShift?.valueOf()||"LeftShift"==e.Key.valueOf()||"RightShift"==e.Key.valueOf())(t)==e.shiftKey&&(e=>e.bCtrl?.valueOf()||"LeftControl"==e.Key.valueOf()||"RightControl"==e.Key.valueOf())(t)==e.ctrlKey&&(e=>e.bAlt?.valueOf()||"LeftAlt"==e.Key.valueOf()||"RightAlt"==e.Key.valueOf())(t)==e.altKey&&ae.Keys[t.Key.value]==e.code))&&(this.consumeEvent&&(e.preventDefault(),e.stopImmediatePropagation()),this.pressedKey=e.code,s.fire(),document.removeEventListener("keydown",s.keyDownHandler),document.addEventListener("keyup",s.keyUpHandler))},this.keyUpHandler=e=>{s.#W.some((t=>t.bShift?.valueOf()&&"Shift"==e.key||t.bCtrl?.valueOf()&&"Control"==e.key||t.bAlt?.valueOf()&&"Alt"==e.key||t.bCmd?.valueOf()&&"Meta"==e.key||ae.Keys[t.Key.value]==e.code))&&(this.consumeEvent&&e.stopImmediatePropagation(),s.unfire(),this.pressedKey="",document.removeEventListener("keyup",this.keyUpHandler),document.addEventListener("keydown",this.keyDownHandler))}}listenEvents(){document.addEventListener("keydown",this.keyDownHandler)}unlistenEvents(){document.removeEventListener("keydown",this.keyDownHandler)}fire(){this.onKeyDown(this)}unfire(){this.onKeyUp(this)}}class Bt extends Dt{#X=[0,0];get location(){return this.#X}#Z;get enablerKey(){return this.#Z}#Q=!0;get enablerActivated(){return this.#Q}constructor(e,t,i={}){i.ignoreTranslateCompensate??=!1,i.ignoreScale??=!1,i.movementSpace??=t.getGridDOMElement()??document.documentElement,super(e,t,i),this.movementSpace=i.movementSpace,i.enablerKey&&(this.#Z=i.enablerKey,this.#Z.onKeyDown=()=>this.#Q=!0,this.#Z.onKeyUp=()=>this.#Q=!1,this.#Z.consumeEvent=!1,this.#Z.listenEvents(),this.#Q=!1)}setLocationFromEvent(e){let t=oe.convertLocation([e.clientX,e.clientY],this.movementSpace,this.options.ignoreScale);return t=this.options.ignoreTranslateCompensate?t:this.blueprint.compensateTranslation(t[0],t[1]),this.#X=[...t],this.#X}}class Gt extends Bt{static#Y=e=>{};#J=e=>{if(this.blueprint.setFocused(!0),!this.enablerKey||this.enablerActivated)if(e.button===this.options.clickButton)this.options.strictTarget&&e.target!==e.currentTarget||(this.consumeEvent&&e.stopImmediatePropagation(),document.addEventListener("mouseup",this.#ee),this.setLocationFromEvent(e),this.clickedPosition[0]=this.location[0],this.clickedPosition[1]=this.location[1],this.blueprint.mousePosition[0]=this.location[0],this.blueprint.mousePosition[1]=this.location[1],this.clicked(this.clickedPosition));else this.options.exitAnyButton||this.#ee(e)};#ee=e=>{this.options.exitAnyButton&&e.button!=this.options.clickButton||(this.consumeEvent&&e.stopImmediatePropagation(),document.removeEventListener("mouseup",this.#ee),this.unclicked())};clickedPosition=[0,0];constructor(e,t,i={},r=Gt.#Y,n=Gt.#Y){i.clickButton??=ae.mouseClickButton,i.consumeEvent??=!0,i.exitAnyButton??=!0,i.strictTarget??=!1,super(e,t,i),this.onClick=r,this.onUnclick=n,this.listenEvents()}listenEvents(){this.target.addEventListener("mousedown",this.#J),this.options.clickButton===ae.mouseRightClickButton&&this.target.addEventListener("contextmenu",(e=>e.preventDefault()))}unlistenEvents(){this.target.removeEventListener("mousedown",this.#J)}clicked(e){this.onClick(this)}unclicked(e){this.onUnclick(this)}}class Ht extends Bt{static ignoreDbClick=e=>{};#te=e=>{this.options.strictTarget&&e.target!==e.currentTarget||(this.consumeEvent&&e.stopImmediatePropagation(),this.clickedPosition=this.setLocationFromEvent(e),this.blueprint.mousePosition=[...this.clickedPosition],this.dbclicked(this.clickedPosition))};#ie;get onDbClick(){return this.#ie}set onDbClick(e){this.#ie=e}clickedPosition=[0,0];constructor(e,t,i={},r=Ht.ignoreDbClick){i.consumeEvent??=!0,i.strictTarget??=!1,super(e,t,i),this.#ie=r,this.listenEvents()}listenEvents(){this.target.addEventListener("dblclick",this.#te)}unlistenEvents(){this.target.removeEventListener("dblclick",this.#te)}dbclicked(e){this.onDbClick(e)}}class Rt{static deleteNodes="Delete";static duplicateNodes="(bCtrl=True,Key=D)";static enableLinkDelete="LeftAlt";static enableZoomIn=["LeftControl","RightControl"];static selectAllNodes="(bCtrl=True,Key=A)"}class zt{element;get blueprint(){return this.element.blueprint}#re=[];get inputObjects(){return this.#re}initialize(e){this.element=e}createInputObjects(){return[]}setup(){this.#re.forEach((e=>e.setup()))}cleanup(){this.#re.forEach((e=>e.cleanup()))}willUpdate(e){}update(e){}render(){return z``}firstUpdated(e){}updated(e){}inputSetup(){this.#re=this.createInputObjects()}}class Ft extends zt{update(e){super.update(e);const[t,i,r,n]=[Math.round(this.element.originX),Math.round(this.element.originY),Math.round(this.element.targetX),Math.round(this.element.targetY)],[s,a,o,l]=[Math.min(t,r),Math.min(i,n),Math.abs(t-r),Math.abs(i-n)];(e.has("originX")||e.has("targetX"))&&(this.element.style.left=`${s}px`,this.element.style.width=`${o}px`),(e.has("originY")||e.has("targetY"))&&(this.element.style.top=`${a}px`,this.element.style.height=`${l}px`)}}class _t extends Ft{static sigmoidPositive(e,t=3.7,i=1.1){return 1-Math.exp(-((e/i)**t))}static decreasingValue(e,t){const i=-e*t[0]**2,r=t[1]-i/t[0];return e=>i/e+r}static clampedLine=e=>Math.min(Math.max(0,e),1);static c1DecreasingValue=_t.decreasingValue(-.15,[100,15]);static c2DecreasingValue=_t.decreasingValue(-.05,[500,130]);static c2Clamped=e=>-40*_t.clampedLine(e/200)+80;#ne=`ueb-id-${Math.floor(1e12*Math.random())}`;#se=e=>{const t=new Ot({},this.element.origin.entity),i=Ae.getConstructor("ueb-node").newObject(t);i.setLocation(...this.blueprint.snapToGrid(...e));const r=i.template;this.blueprint.addGraphElement(i);const n=this.element.getInputPin(),s=this.element.getOutputPin();this.element.origin=null,this.element.target=null;const a=Ae.getConstructor("ueb-link").newObject(s,r.inputPin);this.blueprint.addGraphElement(a),this.element.origin=r.outputPin,this.element.target=n};#ae(e){const t=this.element.origin,i=this.element.target,r=t?.isKnot(),n=i?.isKnot(),s=this.element.originX,a=this.element.targetX;r&&!i&&(t?.isInput()&&a>s+ae.distanceThreshold||t?.isOutput()&&a<s-ae.distanceThreshold)&&(this.element.origin=t.template.getoppositePin()),n&&!t&&(i?.isInputLoosely()&&a<s-ae.distanceThreshold||i?.isOutputLoosely()&&a>s+ae.distanceThreshold)&&(this.element.target=i.template.getoppositePin()),t&&i&&(t.isKnot()&&t.hasUpdated&&t.nodeElement.template.checkSwtichDirectionsVisually(),i.isKnot()&&i.hasUpdated&&i.nodeElement.template.checkSwtichDirectionsVisually());let o=t?.isOutputVisually()==i?.isOutputVisually();const l=Math.max(Math.abs(this.element.originX-this.element.targetX),1),c=Math.max(Math.abs(this.element.originY-this.element.targetY),1),u=Math.max(l,ae.linkMinWidth),h=l/u,p=this.element.originatesFromInput?this.element.originX<this.element.targetX:this.element.targetX<this.element.originX;this.element.startPixels=l<u?(u-l)/2:0;const d=p?this.element.startPixels+100*h:this.element.startPixels;this.element.startPercentage=d;const m=d+(o?5:(p?_t.c1DecreasingValue(u):10)*h),g=c/Math.max(30,l),b=o?100*_t.clampedLine(d/50)+15:_t.c2Clamped(l)*_t.sigmoidPositive(1.2*h+.5*g,1.5,1.8)+d;this.element.svgPathD=ae.linkRightSVGPath(d,m,b,o)}createInputObjects(){const e=this.element.querySelector(".ueb-link-area");return[...super.createInputObjects(),new Ht(e,this.blueprint,void 0,(e=>{e[0]+=ae.knotOffset[0],e[1]+=ae.knotOffset[1],e=oe.snapToGrid(e[0],e[1],ae.gridSize),this.#se(e)})),new Gt(e,this.blueprint,{enablerKey:new Vt(this.blueprint,this.blueprint,{activationKeys:Rt.enableLinkDelete})},(()=>this.blueprint.removeGraphElement(this.element)))]}willUpdate(e){super.willUpdate(e);const t=(e.get("originX")??this.element.originX)-this.element.originX,i=(e.get("originY")??this.element.originY)-this.element.originY,r=(e.get("targetX")??this.element.targetX)-this.element.targetX,n=(e.get("targetY")??this.element.targetY)-this.element.targetY;t==r&&i==n||this.#ae(e)}update(e){super.update(e);const t=this.element.style;e.has("color")&&t.setProperty("--ueb-link-color-rgb",this.element.color?.toString()??"255, 255, 255"),t.setProperty("--ueb-start-percentage",`${Math.round(this.element.startPercentage)}%`),t.setProperty("--ueb-link-start",`${Math.round(this.element.startPixels)}`);const i=(this.element.originY>this.element.targetY?-1:1)*(this.element.originatesFromInput?-1:1)*(this.element.origin?.isInputVisually()&&this.element.target?.isInputVisually()?-1:1),r=this.element.origin?.isInputVisually()&&this.element.target?.isInputVisually()?-1:1;t.setProperty("--ueb-link-scale-y",`${i}`),t.setProperty("--ueb-link-scale-x",`${r}`)}render(){return z`<svg version="1.2" baseProfile="tiny" width="100%" height="100%" viewBox="0 0 100 100" preserveAspectRatio="none"><path id="${this.#ne}" fill="none" vector-effect="non-scaling-stroke" d="${this.element.svgPathD}"/><use href="#${this.#ne}" class="ueb-link-area" pointer-events="all"/><use href="#${this.#ne}" class="ueb-link-path" pointer-events="none"/></svg> ${this.element.linkMessageIcon||this.element.linkMessageText?z`<div class="ueb-link-message">${this.element.linkMessageIcon!==_?z`<span class="ueb-link-message-icon">${this.element.linkMessageIcon}</span>`:_} ${this.element.linkMessageText!==_?z`<span class="ueb-link-message-text">${this.element.linkMessageText}</span>`:_}</div>`:_}`}}class jt extends le{static properties={...super.properties,originX:{type:Number,attribute:!1},originY:{type:Number,attribute:!1},targetX:{type:Number,attribute:!1},targetY:{type:Number,attribute:!1}};constructor(){super(),this.originX=0,this.originY=0,this.targetX=0,this.targetY=0}setBothLocations([e,t]){this.originX=e,this.originY=t,this.targetX=e,this.targetY=t}addOriginLocation(e,t){this.originX+=e,this.originY+=t}addTargetLocation(e,t){this.targetX+=e,this.targetY+=t}}class Ut extends jt{static properties={...super.properties,dragging:{type:Boolean,attribute:"data-dragging",converter:Le.booleanConverter,reflect:!0},originNode:{type:String,attribute:"data-origin-node",reflect:!0},originPin:{type:String,attribute:"data-origin-pin",reflect:!0},targetNode:{type:String,attribute:"data-target-node",reflect:!0},targetPin:{type:String,attribute:"data-target-pin",reflect:!0},originatesFromInput:{type:Boolean,attribute:"data-from-input",converter:Le.booleanConverter,reflect:!0},color:{type:Oe},svgPathD:{type:String,attribute:!1},linkMessageIcon:{type:String,attribute:!1},linkMessageText:{type:String,attribute:!1}};#oe;get origin(){return this.#oe}set origin(e){this.#le(e,!1)}#q;get target(){return this.#q}set target(e){this.#le(e,!0)}#ce=e=>{if(this.#oe.nodeElement===e.target)this.originNode!=this.#oe.nodeElement.nodeTitle&&(this.originNode=this.#oe.nodeElement.nodeTitle),this.setOriginLocation();else{if(this.#q.nodeElement!==e.target)throw new Error("Unexpected node update");this.targetNode!=this.#q.nodeElement.nodeTitle&&(this.targetNode=this.#q.nodeElement.nodeTitle),this.setTargetLocation()}};#ue=e=>{const t=this.getOutputPin(!0);this.color?.equals(t.color)||(this.color=t.color)};#he=()=>this.remove();#pe=e=>this.addOriginLocation(...e.detail.value);#de=e=>this.addTargetLocation(...e.detail.value);#me=e=>{this.origin.isKnot()&&(this.originatesFromInput=this.origin.isInputVisually()),this.setOriginLocation()};#ge=e=>this.setTargetLocation();linkMessageIcon=_;linkMessageText=_;pathElement;constructor(){super(),this.dragging=!1,this.originNode="",this.originPin="",this.targetNode="",this.targetPin="",this.originatesFromInput=!1,this.color=new Oe,this.startPercentage=0,this.svgPathD="",this.startPixels=0}static newObject(e,t){const i=new Ut;return i.initialize(e,t),i}initialize(e,t){super.initialize({},new _t),e&&(this.origin=e,t||(this.targetX=this.originX,this.targetY=this.originY)),t&&(this.target=t,e||(this.originX=this.targetX,this.originY=this.targetY))}#le(e,t){const i=()=>t?this.target:this.origin;if(i()!=e){if(i()){const e=i().getNodeElement();e.removeEventListener(ae.nodeUpdateEventName,this.#ce),e.removeEventListener(ae.removeEventName,this.#he),e.removeEventListener(ae.nodeDragEventName,t?this.#de:this.#pe),i().removeEventListener(ae.pinUpdateEventName,this.#ue),this.#be()}if(t?(this.#q=e,this.targetNode=e?.nodeElement.nodeTitle,this.targetPin=e?.pinId.toString()):(this.#oe=e,this.originNode=e?.nodeElement.nodeTitle,this.originPin=e?.pinId.toString()),i()){const e=i().getNodeElement();e.addEventListener(ae.nodeUpdateEventName,this.#ce),e.addEventListener(ae.pinUpdateEventName,this.#ue),e.addEventListener(ae.removeEventName,this.#he),e.addEventListener(ae.nodeDragEventName,t?this.#de:this.#pe),i().addEventListener(ae.pinUpdateEventName,this.#ue),t?this.setTargetLocation():(this.setOriginLocation(),this.originatesFromInput=this.origin.isInputVisually()),this.#ve()}this.color=this.getOutputPin(!0)?.color}}#ve(){this.origin&&this.target&&(this.origin.linkTo(this.target),this.target.linkTo(this.origin))}#be(){this.origin&&this.target&&(this.origin.unlinkFrom(this.target,!1),this.target.unlinkFrom(this.origin,!1))}cleanup(){super.cleanup(),this.#be(),this.origin=null,this.target=null}setOriginLocation(e=null,t=!0){if(null==e){const i=this;if(t&&(!this.hasUpdated||!this.origin.hasUpdated))return void Promise.all([this.updateComplete,this.origin.updateComplete]).then((()=>i.setOriginLocation(null,!1)));e=this.origin.template.getLinkLocation()}const[i,r]=e;this.originX=i,this.originY=r}setTargetLocation(e=null,t=!0){if(null==e){const i=this;if(t&&(!this.hasUpdated||!this.target.hasUpdated))return void Promise.all([this.updateComplete,this.target.updateComplete]).then((()=>i.setTargetLocation(null,!1)));e=this.target.template.getLinkLocation()}this.targetX=e[0],this.targetY=e[1]}getInputPin(e=!1){return this.origin?.isInput()?this.origin:this.target?.isInput()?this.target:e?this.origin??this.target:void 0}setInputPin(e){this.origin?.isInput()&&(this.origin=e),this.target=e}getOutputPin(e=!1){return this.origin?.isOutput()?this.origin:this.target?.isOutput()?this.target:e?this.origin??this.target:void 0}setOutputPin(e){this.target?.isOutput()&&(this.target=e),this.origin=e}getOtherPin(e){return this.origin?.nodeElement===e?this.target:this.target?.nodeElement===e?this.origin:void 0}startDragging(){this.dragging=!0}finishDragging(){this.dragging=!1}removeMessage(){this.linkMessageIcon=_,this.linkMessageText=_}setMessageConvertType(){this.linkMessageIcon=ce.convert,this.linkMessageText=z`Convert ${this.origin.pinType} to ${this.target.pinType}.`}setMessageCorrect(){this.linkMessageIcon=ce.correct,this.linkMessageText=_}setMessageReplace(){this.linkMessageIcon=ce.correct,this.linkMessageText=_}setMessageDirectionsIncompatible(){this.linkMessageIcon=ce.reject,this.linkMessageText=z`Directions are not compatbile.`}setMessagePlaceNode(){this.linkMessageIcon=_,this.linkMessageText=z`Place a new node.`}setMessageReplaceLink(){this.linkMessageIcon=ce.correct,this.linkMessageText=z`Replace existing input connections.`}setMessageReplaceOutputLink(){this.linkMessageIcon=ce.correct,this.linkMessageText=z`Replace existing output connections.`}setMessageSameNode(){this.linkMessageIcon=ce.reject,this.linkMessageText=z`Both are on the same node.`}setMessageTypesIncompatible(e,t){this.linkMessageIcon=ce.reject,this.linkMessageText=z`${oe.capitalFirstLetter(e.pinType)} is not compatible with ${oe.capitalFirstLetter(t.pinType)}.`}}class Kt extends le{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=ae.dragEventName;static dragGeneralEventName=ae.dragGeneralEventName;constructor(){super(),this.locationX=0,this.locationY=0,this.sizeX=0,this.sizeY=0}computeSizes(){const e=this.getBoundingClientRect();this.sizeX=this.blueprint.scaleCorrect(e.width),this.sizeY=this.blueprint.scaleCorrect(e.height)}firstUpdated(e){super.firstUpdated(e),this.computeSizes()}setLocation(e,t,i=!0){const r=e-this.locationX,n=t-this.locationY;if(this.locationX=e,this.locationY=t,this.blueprint&&i){const e=new CustomEvent(this.constructor.dragEventName,{detail:{value:[r,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=oe.snapToGrid(this.locationX,this.locationY,ae.gridSize);this.locationX==e[0]&&this.locationY==e[1]||this.setLocation(e[0],e[1])}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 qt extends Bt{#J=e=>{if(this.blueprint.setFocused(!0),e.button===this.options.clickButton)this.options.strictTarget&&e.target!=e.currentTarget||(this.consumeEvent&&e.stopImmediatePropagation(),this.#fe.addEventListener("mousemove",this.#ye),document.addEventListener("mouseup",this.#ee),this.setLocationFromEvent(e),this.clickedPosition[0]=this.location[0],this.clickedPosition[1]=this.location[1],this.blueprint.mousePosition[0]=this.location[0],this.blueprint.mousePosition[1]=this.location[1],this.target instanceof Kt&&(this.clickedOffset=[this.clickedPosition[0]-this.target.locationX,this.clickedPosition[1]-this.target.locationY]),this.clicked(this.clickedPosition));else this.options.exitAnyButton||this.#ee(e)};#ye=e=>{this.consumeEvent&&e.stopImmediatePropagation(),this.#fe.removeEventListener("mousemove",this.#ye),this.#fe.addEventListener("mousemove",this.#we);const t=this.getEvent(ae.trackingMouseEventName.begin);this.#Se=0==this.target.dispatchEvent(t),this.setLocationFromEvent(e),this.lastLocation=oe.snapToGrid(this.clickedPosition[0],this.clickedPosition[1],this.stepSize),this.startDrag(this.location),this.started=!0,this.#we(e)};#we=e=>{this.consumeEvent&&e.stopImmediatePropagation();const t=this.setLocationFromEvent(e),i=[e.movementX,e.movementY];if(this.dragTo(t,i),this.#Se&&(this.blueprint.mousePosition=t),this.options.scrollGraphEdge){const e=Math.sqrt(i[0]*i[0]+i[1]*i[1]),r=this.blueprint.scaleCorrect(ae.edgeScrollThreshold),n=this.blueprint.template.gridLeftVisibilityBoundary()+r,s=this.blueprint.template.gridRightVisibilityBoundary()-r;let a=0;t[0]<n?a=t[0]-n:t[0]>s&&(a=t[0]-s);const o=this.blueprint.template.gridTopVisibilityBoundary()+r,l=this.blueprint.template.gridBottomVisibilityBoundary()-r;let c=0;t[1]<o?c=t[1]-o:t[1]>l&&(c=t[1]-l),a=oe.clamp(this.blueprint.scaleCorrectReverse(a)**3*e*.6,-20,20),c=oe.clamp(this.blueprint.scaleCorrectReverse(c)**3*e*.6,-20,20),this.blueprint.scrollDelta(a,c)}};#ee=e=>{if(!this.options.exitAnyButton||e.button==this.options.clickButton){if(this.consumeEvent&&e.stopImmediatePropagation(),this.#fe.removeEventListener("mousemove",this.#ye),this.#fe.removeEventListener("mousemove",this.#we),document.removeEventListener("mouseup",this.#ee),this.started&&this.endDrag(),this.unclicked(),this.#Se){const e=this.getEvent(ae.trackingMouseEventName.end);this.target.dispatchEvent(e),this.#Se=!1}this.started=!1}};#Se=!1;#fe;#Ee;get draggableElement(){return this.#Ee}clickedOffset=[0,0];clickedPosition=[0,0];lastLocation=[0,0];started=!1;stepSize=1;constructor(e,t,i={}){i.clickButton??=ae.mouseClickButton,i.consumeEvent??=!0,i.draggableElement??=e,i.exitAnyButton??=!0,i.moveEverywhere??=!1,i.movementSpace??=t?.getGridDOMElement(),i.repositionOnClick??=!1,i.scrollGraphEdge??=!1,i.strictTarget??=!1,super(e,t,i),this.stepSize=Number(i.stepSize??ae.gridSize),this.#fe=this.options.moveEverywhere?document.documentElement:this.movementSpace,this.#Ee=this.options.draggableElement,this.listenEvents()}listenEvents(){super.listenEvents(),this.#Ee.addEventListener("mousedown",this.#J),this.options.clickButton===ae.mouseRightClickButton&&this.#Ee.addEventListener("contextmenu",(e=>e.preventDefault()))}unlistenEvents(){super.unlistenEvents(),this.#Ee.removeEventListener("mousedown",this.#J)}getEvent(e){return new CustomEvent(e,{detail:{tracker:this},bubbles:!0,cancelable:!0})}clicked(e){}startDrag(e){}dragTo(e,t){}endDrag(){}unclicked(e){}}class Yt extends qt{clicked(e){this.options.repositionOnClick&&(this.target.setLocation(...this.stepSize>1?oe.snapToGrid(e[0],e[1],this.stepSize):e),this.clickedOffset=[0,0])}dragTo(e,t){const i=[this.target.locationX??this.lastLocation[0],this.target.locationY??this.lastLocation[1]],[r,n]=this.stepSize>1?[oe.snapToGrid(e[0],e[1],this.stepSize),oe.snapToGrid(i[0],i[1],this.stepSize)]:[e,i];0==(t=[r[0]-this.lastLocation[0],r[1]-this.lastLocation[1]])[0]&&0==t[1]||(t[0]+=n[0]-i[0],t[1]+=n[1]-i[1],this.dragAction(r,t),this.lastLocation=r)}dragAction(e,t){this.target.setLocation(e[0]-this.clickedOffset[0],e[1]-this.clickedOffset[1])}}class Wt extends Yt{#Ce;#Ne;#Pe;#xe;constructor(e,t,i={}){super(e,t,i),i.onClicked&&(this.#Ce=i.onClicked),i.onStartDrag&&(this.#Ne=i.onStartDrag),i.onDrag&&(this.#Pe=i.onDrag),i.onEndDrag&&(this.#xe=i.onEndDrag)}clicked(e){super.clicked(e),this.#Ce?.()}startDrag(){super.startDrag(),this.#Ne?.()}dragAction(e,t){this.#Pe?.(e,t)}endDrag(){super.endDrag(),this.#xe?.()}}const Xt=ae.paths;class Zt extends Yt{constructor(e,t,i={}){super(e,t,i),this.draggableElement.classList.add("ueb-draggable")}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 Qt extends zt{getDraggableElement(){return this.element}createDraggableObject(){const e=this.getDraggableElement();return new Yt(this.element,this.blueprint,{draggableElement:e})}createInputObjects(){return[...super.createInputObjects(),this.createDraggableObject(),new Vt(this.element,this.blueprint,{activationKeys:[ae.Keys.ArrowUp,ae.Keys.ArrowRight,ae.Keys.ArrowDown,ae.Keys.ArrowLeft]},(e=>e.target.acknowledgeDrag([e.pressedKey===ae.Keys.ArrowLeft?-ae.gridSize:e.pressedKey===ae.Keys.ArrowRight?ae.gridSize:0,e.pressedKey===ae.Keys.ArrowUp?-ae.gridSize:e.pressedKey===ae.Keys.ArrowDown?ae.gridSize:0])))]}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 r=Math.max((t+i)/2,e);const n=this.topBoundary()-this.blueprint.template.gridTopVisibilityBoundary(),s=this.blueprint.template.gridBottomVisibilityBoundary()-this.bottomBoundary();let a=Math.max((n+s)/2,e);this.blueprint.scrollDelta(t-r,n-a,!0)}}class Jt extends Qt{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 ei extends Jt{getDraggableElement(){return this.element}createDraggableObject(){return new Zt(this.element,this.blueprint,{draggableElement:this.getDraggableElement(),scrollGraphEdge:!0})}firstUpdated(e){super.firstUpdated(e),this.element.selected&&!this.element.listeningDrag&&this.element.setSelected(!0)}}class ti extends ei{static nodeStyleClasses=["ueb-node-style-default"];#ke;pinInserter;inputContainer;outputContainer;pinElement;addPinHandler=()=>{const e=this.pinInserter?.();e&&(this.defaultPin&&this.defaultPin.isInput()===e.isInput()?this.defaultPin.before(this.createPinElement(e)):(e.isInput()?this.inputContainer:this.outputContainer).appendChild(this.createPinElement(e)),this.element.acknowledgeUpdate())};toggleAdvancedDisplayHandler=()=>{this.element.toggleShowAdvancedPinDisplay(),this.element.requestUpdate(),this.element.updateComplete.then((()=>this.element.acknowledgeUpdate()))};createPinElement(e){const t=Ae.getConstructor("ueb-pin").newObject(e,void 0,this.element);return this.pinInserter&&!this.defaultPin&&"Default"===t.getPinName()&&(this.defaultPin=t,this.defaultPin.classList.add("ueb-node-variadic-default")),t}initialize(e){super.initialize(e),this.#ke=function(e){switch(e.getType()){case Xt.addDelegate:case Xt.clearDelegate:case Xt.callDelegate:case Xt.removeDelegate:return null}const t=e.getPinEntities().find((e=>!e.isHidden()&&"self"===e.PinName?.toString()&&"Target"===et(e)));if(t){const i=e.FunctionReference?.MemberParent?.getName()??t.PinType?.PinSubCategoryObject?.getName()??"Untitled";return i.length>0?`Target is ${oe.formatStringName(i)}`:null}return null}(e.entity),this.element.classList.add(...this.constructor.nodeStyleClasses),this.element.style.setProperty("--ueb-node-color",this.element.entity.nodeColor().cssText),this.pinInserter=this.element.entity.additionalPinInserter(),this.pinInserter&&this.element.classList.add("ueb-node-is-variadic")}render(){return z`<div class="ueb-node-border"><div class="ueb-node-wrapper"><div class="ueb-node-top">${this.renderTop()}</div><div class="ueb-node-inputs"></div><div class="ueb-node-outputs"></div>${this.pinInserter?z`<div class="ueb-node-variadic" @click="${this.addPinHandler}">Add pin ${ce.plusCircle}</div>`:_} ${this.element.entity.isDevelopmentOnly()?z`<div class="ueb-node-developmentonly"><span class="ueb-node-developmentonly-text">Development Only</span></div>`:_} ${this.element.advancedPinDisplay?z`<div class="ueb-node-expansion" @click="${this.toggleAdvancedDisplayHandler}">${ce.expandIcon}</div>`:_}</div></div>`}renderNodeIcon(){return this.element.entity.nodeIcon()}renderNodeName(){return this.element.nodeDisplayName}renderTop(){const e=this.renderNodeIcon(),t=this.renderNodeName();return z`<div class="ueb-node-name">${e?z`<div class="ueb-node-name-symbol">${e}</div>`:_} ${t?z`<div class="ueb-node-name-text ueb-ellipsis-nowrap-text">${t} ${this.#ke?z`<div class="ueb-node-subtitle-text ueb-ellipsis-nowrap-text">${this.#ke}</div>`:_}</div>`:_}</div>`}firstUpdated(e){super.firstUpdated(e),this.inputContainer=this.element.querySelector(".ueb-node-inputs"),this.outputContainer=this.element.querySelector(".ueb-node-outputs"),this.setupPins(),this.element.updateComplete.then((()=>this.element.acknowledgeUpdate()))}setupPins(){this.element.nodeNameElement=this.element.querySelector(".ueb-node-name-text");let e=!1,t=!1;for(const i of this.getPinElements())i!==this.defaultPin&&(i.isInput()?(this.inputContainer.appendChild(i),e=!0):i.isOutput()&&(this.outputContainer.appendChild(i),t=!0));this.defaultPin&&(this.defaultPin.isInput()?this.inputContainer:this.outputContainer).appendChild(this.defaultPin),e&&this.element.classList.add("ueb-node-has-inputs"),t&&this.element.classList.add("ueb-node-has-outputs")}getPinElements(){return this.element.getPinElements()}createPinElements(){return this.element.getPinEntities().filter((e=>!e.isHidden())).map((e=>this.createPinElement(e)))}getAllConnectedLinks(){const e=this.element.nodeTitle,t=`ueb-link[data-origin-node="${e}"],ueb-link[data-target-node="${e}"]`;return[...this.blueprint.querySelectorAll(t)]}}class ii extends ti{#Le=document.createElement("div");#Ae=document.createElement("div");#Me=document.createElement("div");#Te=document.createElement("div");#Ie=document.createElement("div");#Oe=document.createElement("div");#De=document.createElement("div");#$e=document.createElement("div");initialize(e){super.initialize(e),this.element.classList.add("ueb-resizeable"),this.#Le.classList.add("ueb-resizeable-top"),this.#Ae.classList.add("ueb-resizeable-right"),this.#Me.classList.add("ueb-resizeable-bottom"),this.#Te.classList.add("ueb-resizeable-left"),this.#Ie.classList.add("ueb-resizeable-top-right"),this.#Oe.classList.add("ueb-resizeable-bottom-right"),this.#De.classList.add("ueb-resizeable-bottom-left"),this.#$e.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.#Le,this.#Ae,this.#Me,this.#Te,this.#Ie,this.#Oe,this.#De,this.#$e)}createInputObjects(){return[...super.createInputObjects(),new Wt(this.#Le,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 Wt(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 Wt(this.#Me,this.blueprint,{onDrag:(e,t)=>{t[1]=e[1]-this.element.bottomBoundary(),this.setSizeY(this.element.sizeY+t[1])},onEndDrag:()=>this.endResize()}),new Wt(this.#Te,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 Wt(this.#Ie,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 Wt(this.#Oe,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 Wt(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 Wt(this.#$e,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 ri extends ii{#Ve=0;initialize(e){super.initialize(e),e.classList.add("ueb-node-style-comment","ueb-node-resizeable"),e.sizeX=25*ae.gridSize,e.sizeY=6*ae.gridSize,super.initialize(e)}getDraggableElement(){return this.element.querySelector(".ueb-node-top")}render(){return z`<div class="ueb-node-border"><div class="ueb-node-wrapper"><div class="ueb-node-top" .innerText="${oe.encodeHTMLWhitespace(this.element.entity.NodeComment?.toString())}"></div></div></div>`}firstUpdated(e){super.firstUpdated(e);const t=this.getDraggableElement().getBoundingClientRect();this.#Ve=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))>=2*ae.gridSize&&(this.element.setNodeWidth(e),!0)}setSizeY(e){return(e=Math.round(e))>=2*ae.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.#Ve:super.bottomBoundary()}leftBoundary(e=!1){return this.element.locationX}}class ni extends qt{#Be;#Ge=e=>{if(!this.enteredPin){this.linkValid=!1,this.enteredPin=e.target;const t=this.link.origin??this.target,i=this.enteredPin,r=t.isOutput()?t:i;t.isKnot()||i.isKnot()?(this.link.setMessageCorrect(),this.linkValid=!0):t.getNodeElement()===i.getNodeElement()?this.link.setMessageSameNode():t.isOutput()===i.isOutput()?this.link.setMessageDirectionsIncompatible():this.blueprint.getLinks(t,i).length?(this.link.setMessageReplaceLink(),this.linkValid=!0):"exec"===r.entity.getType()&&r.isLinked?(this.link.setMessageReplaceOutputLink(),this.linkValid=!0):"object"==t.entity.PinType.PinCategory.valueOf()&&"object"==i.entity.PinType.PinCategory.valueOf()||t.pinType==i.pinType?(this.link.setMessageCorrect(),this.linkValid=!0):(this.link.setMessageTypesIncompatible(t,i),this.linkValid=!1)}};#He=e=>{this.enteredPin==e.target&&(this.enteredPin=null,this.linkValid=!1,this.link?.setMessagePlaceNode())};link;enteredPin;linkValid=!1;constructor(e,t,i={}){i.scrollGraphEdge??=!0,super(e,t,i)}startDrag(e){this.link=Ae.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=>{e!=this.target&&(e.addEventListener("mouseenter",this.#Ge),e.addEventListener("mouseleave",this.#He))})),this.link.startDragging(),this.link.setTargetLocation(e)}dragTo(e,t){this.link.setTargetLocation(e)}endDrag(){if(this.#Be.forEach((e=>{e.removeEventListener("mouseenter",this.#Ge),e.removeEventListener("mouseleave",this.#He)})),this.#Be=null,this.enteredPin&&this.linkValid){const e=this.enteredPin.isKnot()?this.enteredPin:this.link.origin.isKnot()?this.link.origin:null;if(e){const t=e!==this.link.origin?this.link.origin:this.enteredPin;if(e.isInput()&&t.isInput()||e.isOutput()&&t.isOutput()){const t=e.template.getoppositePin();e===this.link.origin?this.link.origin=t:this.enteredPin=t}}else this.enteredPin.isKnot()&&this.link.origin.isOutput()&&(this.enteredPin=this.enteredPin.template.getoppositePin());this.link.origin.getLinks().find((e=>e.equals(this.enteredPin.createPinReference())))?this.link.remove():(this.blueprint.addGraphElement(this.link),this.link.target=this.enteredPin)}else this.link.remove();this.enteredPin=null,this.link.removeMessage(),this.link.finishDragging(),this.link=null}}class si extends ti{#Re=!1;#ze=!1;displayName="";static nodeStyleClasses=["ueb-node-style-glass"];initialize(e){super.initialize(e),this.displayName=this.element.nodeDisplayName}render(){return z`<div class="ueb-node-border"><div class="ueb-node-wrapper">${this.displayName?z`<div class="ueb-node-top"><div class="ueb-node-name"><span class="ueb-node-name-text ueb-ellipsis-nowrap-text">${this.displayName}</span></div></div>`:_} ${this.#Re?z`<div class="ueb-node-inputs"></div>`:_} ${this.#ze?z`<div class="ueb-node-outputs"></div>`:_} ${this.pinInserter?z`<div class="ueb-node-variadic" @click="${this.addPinHandler}">Add pin ${ce.plusCircle}</div>`:_}</div></div>`}createPinElements(){return this.element.getPinEntities().filter((e=>!e.isHidden())).map((e=>{this.#Re||=e.isInput(),this.#ze||=e.isOutput();return Ae.getConstructor("ueb-pin").newObject(e,void 0,this.element)}))}}class ai extends si{static nodeStyleClasses=["ueb-node-style-metasound","ueb-node-style-operation"]}class oi extends si{static nodeStyleClasses=[...super.nodeStyleClasses,"ueb-node-style-conversion"]}class li extends si{static nodeStyleClasses=[...super.nodeStyleClasses,"ueb-node-style-operation"]}class ci extends zt{static canWrapInput=!0;#Fe;get iconElement(){return this.#Fe}#_e;get wrapperElement(){return this.#_e}isNameRendered=!0;initialize(e){if(super.initialize(e),this.element.nodeElement){const e=this.element.nodeElement.template;this.isNameRendered=!(e instanceof oi||e instanceof li||e instanceof ai)}}setup(){super.setup(),this.element.nodeElement=this.element.closest("ueb-node");const e=this.element.nodeElement.template;(e instanceof oi||e instanceof li)&&(this.isNameRendered=!1,this.element.requestUpdate())}createInputObjects(){return[new ni(this.element,this.blueprint,{moveEverywhere:!0,draggableElement:this.getClickableElement()})]}render(){const e=z`<div class="ueb-pin-icon">${this.renderIcon()}</div>`,t=z`<div class="ueb-pin-content">${this.isNameRendered?this.renderName():_} ${this.isInputRendered()?this.renderInput():z``}</div>`;let i=this.element.nodeElement.entity.getPcgSubobject();return z`<div class="ueb-pin-wrapper">${i&&"Required"==this.element.entity.getPinObject(i)?.Properties?.PinStatus?z`<div class="ueb-pin-required-mark"></div>`:_} ${this.element.isInput()?z`${e}${t}`:z`${t}${e}`}</div>`}renderIcon(){if(this.element.nodeElement.entity.isPcg())switch(this.element.entity.getType()){case"Any":return ce.pcgPin;case"Param":case"Param[]":return ce.pcgParamPin;case"Spatial":case"Spatial[]":return ce.pcgSpatialPin;case"Any[]":case"Point[]":case"Surface[]":case"Volume[]":if(this.element.isOutput())return ce.pcgPin;case"Point":case"Surface":case"Volume":return ce.pcgStackPin}switch(this.element.entity.PinType.ContainerType?.toString()){case"Array":return ce.arrayPin;case"Set":return ce.setPin;case"Map":return ce.mapPin}return"delegate"==this.element.entity.PinType.PinCategory?.toString().toLocaleLowerCase()?ce.delegate:this.element.nodeElement?.template instanceof li?ce.operationPin:"statictype"==this.element.entity.PinType.PinCategory?.toString().toLocaleLowerCase()?ce.staticPin:ce.genericPin}renderName(){let e=this.element.getPinDisplayName();const t=this.element.nodeElement,i=this.element.getPinName();return t.getType()==ae.paths.makeStruct&&i==t.entity.StructType.getName()&&(e=i),z`<span class="ueb-pin-name ueb-ellipsis-nowrap-text">${e}</span>`}isInputRendered(){return this.element.isInput()&&!this.element.entity.bDefaultValueIsIgnored?.valueOf()&&!this.element.entity.PinType.bIsReference?.valueOf()}renderInput(){return z``}updated(e){if(super.updated(e),this.element.isInput()&&e.has("isLinked")){const e=this.element.nodeElement;this.element.requestUpdate(),this.element.updateComplete.then((()=>e.acknowledgeUpdate()))}e.has("color")&&this.element.style.setProperty("--ueb-pin-color-rgb",this.element.color.toString())}firstUpdated(e){super.firstUpdated(e),this.#Fe=this.element.querySelector(".ueb-pin-icon svg")??this.element,this.#_e=this.element.querySelector(".ueb-pin-wrapper")}getLinkLocation(e=!1){const t=(this.#Fe??this.element).getBoundingClientRect(),i=[this.element.isInputVisually()!=e?t.left:t.right+1,(t.top+t.bottom)/2],r=oe.convertLocation(i,this.blueprint.template.gridElement);return this.blueprint.compensateTranslation(r[0],r[1])}getClickableElement(){return this.#_e??this.element}getAllConnectedLinks(){if(!this.element.isLinked)return[];const e=this.element.nodeElement.nodeTitle,t=this.element.pinId,i=`ueb-link[data-origin-node="${e}"][data-origin-pin="${t}"],ueb-link[data-target-node="${e}"][data-target-pin="${t}"]`;return[...this.blueprint.querySelectorAll(i)]}}class ui extends ci{render(){return z`<div class="ueb-pin-wrapper"><div class="ueb-pin-icon">${this.renderIcon()}</div></div>`}}class hi extends ti{static nodeStyleClasses=[...super.nodeStyleClasses,"ueb-node-style-event"];#je;firstUpdated(e){super.firstUpdated(e),this.element.querySelector(".ueb-node-top").appendChild(this.createDelegatePinElement())}renderTop(){const e=this.renderNodeIcon(),t=this.renderNodeName(),i=this.element.getType()===ae.paths.customEvent&&(this.element.entity.CustomFunctionName||this.element.entity.FunctionReference.MemberParent);return z`<div class="ueb-node-name">${e?z`<div class="ueb-node-name-symbol">${e}</div>`:_} ${t?z`<div class="ueb-node-name-text ueb-ellipsis-nowrap-text">${t} ${i?z`<div class="ueb-node-subtitle-text ueb-ellipsis-nowrap-text">Custom Event</div>`:_}</div>`:_}</div>`}getPinElements(){return this.element.getPinElements().filter((e=>"delegate"!==e.entity.PinType.PinCategory?.toString()))}createDelegatePinElement(){return this.#je||(this.#je=Ae.getConstructor("ueb-pin").newObject(this.element.getPinEntities().find((e=>!e.isHidden()&&"delegate"===e.PinType.PinCategory?.toString())),new ui,this.element),this.#je.template.isNameRendered=!1),this.#je}createPinElements(){return[this.createDelegatePinElement(),...this.element.getPinEntities().filter((e=>!e.isHidden()&&"delegate"!==e.PinType.PinCategory?.toString())).map((e=>Ae.getConstructor("ueb-pin").newObject(e,void 0,this.element)))]}}class pi extends ui{static#Ue=new mt({PinCategory:new it("wildcard"),PinSubCategoryObject:ht.createNoneInstance(),PinSubCategoryMemberReference:new dt});#Ke(e){const t=this.getoppositePin();this.element.entity.PinType.copyTypeFrom(e),t.entity.PinType.copyTypeFrom(e),this.element.updateType(),t.updateType()}render(){return this.element.isOutput()?super.render():z``}update(e){if(super.update(e),e.has("isLinked")){const e=this.getoppositePin();if(this.element.isLinked||e.isLinked){if(this.element.isLinked&&"wildcard"==this.element.pinType){const e=this.element.getLinks().map((e=>this.blueprint.getPin(e))).find((e=>e&&"wildcard"!=e.pinType))?.entity.PinType;if(e){const t=[this];for(let i=0;i<t.length;++i){let r=t[i];r.#Ke(e),r=r.getoppositePin().template,r.#Ke(e),t.push(...r.element.getLinks().map((e=>this.blueprint.getPin(e).template)))}}}}else this.#Ke(pi.#Ue)}}getoppositePin(){const e=this.element.nodeElement.template;return this.element.isOutput()?e.inputPin:e.outputPin}getLinkLocation(e=!1){return this.element.isInput()?this.getoppositePin().getLinkLocation(!e):super.getLinkLocation(e)}}class di extends ti{#qe=!1;get switchDirectionsVisually(){return this.#qe}set switchDirectionsVisually(e){this.#qe!=e&&(this.#qe=e,this.element.acknowledgeUpdate())}#Ye;get inputPin(){return this.#Ye}#We;get outputPin(){return this.#We}initialize(e){super.initialize(e),this.element.classList.add("ueb-node-style-minimal")}render(){return z`<div class="ueb-node-border"></div>`}setupPins(){for(const e of this.getPinElements())this.element.querySelector(".ueb-node-border").appendChild(e)}createPinElements(){const e=this.element.getPinEntities().filter((e=>!e.isHidden())),t=e[e[0].isInput()?0:1],i=e[e[0].isOutput()?0:1],r=Ae.getConstructor("ueb-pin");return[this.#Ye=r.newObject(t,new pi,this.element),this.#We=r.newObject(i,new pi,this.element)]}checkSwtichDirectionsVisually(){let e=0,t=0,i=0,r=0;const n=this.outputPin.getLinkLocation()[0],s=this.getAllConnectedLinks();for(const a of s){const s=a.getOtherPin(this.element),o=s.getLinkLocation()[0]-n;s?.isInput()?(i+=o,++r):s?.isOutput()&&(e+=o,++t)}e/=t,i/=r,i<e!=this.switchDirectionsVisually&&(this.switchDirectionsVisually=i<e)}}class mi extends ti{static nodeStyleClasses=["ueb-node-style-metasound"]}class gi extends si{initialize(e){super.initialize(e);const t=e.getType();t===ae.paths.variableGet||t===ae.paths.self?(this.element.classList.add("ueb-node-style-getter"),this.displayName=""):t===ae.paths.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.entity.pinColor().cssText)}}const bi=["Boolean::LogicEq","Boolean::LogicNEq","Integer::EnumNEq","Integer::EnumEq",...["Abs","Add","ArcCosine(Degrees)","ArcCosine(Radians)","ArcSine(Degrees)","ArcSine(Radians)","ArcTangent(Degrees)","ArcTangent(Radians)","Ceil","CmpEQ","CmpGE","CmpGT","CmpLE","CmpLT","CmpNEQ","Cosine(Degrees)","Cosine(Radians)","DegreesToRadians","Div","Dot","Exp","Exp2","Floor","FMod","Frac","Length","Lerp","Log","Log2","Madd","Max","Min","Mul","Negate","Normalize","OneMinus","PI","RadiansToDegrees","Rcp","RcpFast","Round","RSqrt","Sign","Sine(Degrees)","Sine(Radians)","Sqrt","Step","Subtract","Tangent(Degrees)","Tangent(Radians)","Trunc","TWO_PI"].map((e=>"Numeric::"+e)),"Vector3::Cross"],vi=ae.paths;function fi(e){const t=e.getClass();if(t===vi.callFunction||t===vi.commutativeAssociativeBinaryOperator||t===vi.callArrayFunction){const t=e.FunctionReference?.MemberParent?.path??"",i=e.FunctionReference?.MemberName?.toString();if(i&&(t===vi.kismetArrayLibrary||t===vi.kismetMathLibrary||t===vi.kismetStringLibrary||t===vi.typedElementHandleLibrary)){if(i.startsWith("Conv_"))return oi;if(i.startsWith("Add_")||i.startsWith("And_")||i.startsWith("Boolean")||i.startsWith("Cross_")||i.startsWith("Dot_")||i.startsWith("Not_")||i.startsWith("Or_")||i.startsWith("Percent_")||i.startsWith("Xor_"))return li;switch(i){case"Abs":case"Array_Add":case"Array_AddUnique":case"Array_Identical":case"BMax":case"BMin":case"CrossProduct2D":case"DotProduct2D":case"Equal":case"Exp":case"FMax":case"FMin":case"GetPI":case"Max":case"MaxInt64":case"Min":case"MinInt64":case"Sqrt":case"Square":case"Vector4_CrossProduct3":case"Vector4_DotProduct":case"Vector4_DotProduct3":case"Acos":case"Asin":case"Cos":case"DegAcos":case"DegCos":case"DegSin":case"DegTan":case"Sin":case"Tan":return li}}if(t===vi.blueprintSetLibrary)return li;if(t===vi.blueprintMapLibrary)return li}switch(t){case vi.comment:case vi.materialGraphNodeComment:return ri;case vi.createDelegate:return ti;case vi.metasoundEditorGraphExternalNode:return"Add"==e.ClassName?.Name?ai:mi;case vi.niagaraNodeOp:if(bi.includes(e.OpName?.toString()))return li;break;case vi.promotableOperator:return li;case vi.knot:return di;case vi.literal:case vi.self:case vi.variableGet:case vi.variableSet:return gi}return e.isEvent()?hi:ti}class yi extends Kt{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(ae.nodeDragGeneralEventName,this.dragHandler)}setSelected(e=!0){this.selected=e,this.blueprint&&(this.selected?(this.listeningDrag=!0,this.blueprint.addEventListener(ae.nodeDragGeneralEventName,this.dragHandler)):(this.blueprint.removeEventListener(ae.nodeDragGeneralEventName,this.dragHandler),this.listeningDrag=!1))}}class wi extends yi{static properties={...yi.properties,typePath:{type:String,attribute:"data-type",reflect:!0},nodeTitle:{type:String,attribute:"data-title",reflect:!0},advancedPinDisplay:{type:String,attribute:"data-advanced-display",converter:nt.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=ae.nodeDragEventName;static dragGeneralEventName=ae.nodeDragGeneralEventName;get blueprint(){return super.blueprint}set blueprint(e){super.blueprint=e,this.#Xe.forEach((t=>t.blueprint=e))}#Ze;get nodeNameElement(){return this.#Ze}set nodeNameElement(e){this.#Ze=e}#Xe=[];boundComments=[];#Qe=!1;#Je=e=>{this.selected||this.#Qe||(this.#Qe=!0,this.requestUpdate(),this.updateComplete.then((()=>this.#Qe=!1)),this.addLocation(...e.detail.value))};static fromSerializedObject(e){e=e.trim();let t=It.grammar.parse(e);return wi.newObject(t)}static newObject(e=new It,t=new(fi(e))){const i=new wi;return i.initialize(e,t),i}#et(e){for(let t of this.getPinElements())for(let i of t.getLinks())this.blueprint.getPin(i).redirectLink(t,new pt(new nt(e),t.entity.PinId))}initialize(e=new It,t=new(fi(e))){this.typePath=e.getType(),this.nodeTitle=e.getObjectName(),this.advancedPinDisplay=e.AdvancedPinDisplay?.toString(),this.enabledState=e.EnabledState,this.nodeDisplayName=je(e),this.pureFunction=e.bIsPureFunc?.valueOf(),this.dragLinkObjects=[],super.initialize(e,t),this.#Xe=this.template.createPinElements(),super.setLocation(this.entity.getNodePosX(),this.entity.getNodePosY()),this.entity.NodeWidth&&this.entity.NodeHeight?(this.sizeX=this.entity.NodeWidth.value,this.sizeY=this.entity.NodeHeight.value):this.updateComplete.then((()=>this.computeSizes())),e.listenAttribute("Name",(t=>{this.#et(t?.toString()),this.nodeTitle=t?.toString(),this.nodeDisplayName=je(e),this.acknowledgeUpdate()}))}bindToComment(e){e==this||this.boundComments.includes(e)||(e.addEventListener(ae.nodeDragEventName,this.#Je),this.boundComments.push(e))}unbindFromComment(e){const t=this.boundComments.indexOf(e);t>=0&&(e.removeEventListener(ae.nodeDragEventName,this.#Je),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()}getType(){return this.entity.getType()}getNodeName(){return this.entity.getObjectName()}computeNodeDisplayName(){this.nodeDisplayName=je(this.entity)}setNodeWidth(e){this.entity.setNodeWidth(e),this.sizeX=e,this.acknowledgeUpdate(!0)}setNodeHeight(e){this.entity.setNodeHeight(e),this.sizeY=e,this.acknowledgeUpdate(!0)}sanitizeLinks(e=[]){this.getPinElements().forEach((t=>t.sanitizeLinks(e)))}getPinElements(){return this.#Xe}getPinEntities(){return this.entity.getPinEntities()}setLocation(e=0,t=0,i=!0){this.entity.setNodePosX(e),this.entity.setNodePosY(t),super.setLocation(e,t,i)}acknowledgeUpdate(e=!1){const t=new CustomEvent(ae.nodeUpdateEventName);e&&(this.requestUpdate(),this.updateComplete.then((()=>this.computeSizes()))),this.dispatchEvent(t)}setShowAdvancedPinDisplay(e){this.entity.AdvancedPinDisplay=new nt(e?"Shown":"Hidden"),this.advancedPinDisplay=this.entity.AdvancedPinDisplay}toggleShowAdvancedPinDisplay(){this.setShowAdvancedPinDisplay("Shown"!=this.entity.AdvancedPinDisplay?.toString())}}class Si extends It{#tt=new Map;#it=[];get objectEntities(){return this.#it}static attributes={...super.attributes,ScriptVariables:super.attributes.ScriptVariables.asUniqueClass(!0).withDefault()};constructor(...e){super(...e),this.Name||(this.Name=new this.constructor.attributes.Name("Blueprint"))}getHomonymObjectEntity(e){const t=e.getObjectName();return this.#it.find((e=>e.getObjectName()==t))}takeFreeName(e){e=e.replace(/_\d+$/,"");const t=(this.#tt.get(e)??-1)+1;return this.#tt.set(e,t),ae.nodeTitle(e,t)}updateNameIndex(e){const t=e.match(/(.+)_(\d+)$/);if(t){e=t[1];const i=Number(t[2]);this.#tt.set(e,Math.max(i,this.#tt.get(e)??0))}}addObjectEntity(e){if(!this.#it.includes(e)){this.#it.push(e);const[t,i]=e.getNameAndCounter();return this.#tt.set(t,Math.max(this.#tt.get(t)??0,i)),!0}return!1}removeObjectEntity(e){const t=this.#it.indexOf(e);if(t>=0){const e=this.#it.pop();return t<this.#it.length&&(this.#it[t]=e),!0}return!1}renameScriptVariable(e,t){const i=e.getName(),r=this.takeFreeName(i);return[!0,!1].forEach((t=>{let i=this[ae.subObjectAttributeNameFromReference(e,t)];i.Name.value=r,i.Name=i.Name})),e.path.replace(i,r),r}variableName(e){return this[ae.subObjectAttributeNameFromReference(e.ScriptVariable,!0)]?.Variable?.Name?.toString()}variableIndex(e){let t=0;for(const i of this.ScriptVariables?.valueOf()){if(e==this.variableName(i))return t;++t}}mergeWith(e){if(0===(e.ScriptVariables?.length??0))return this;const t=this.ScriptVariables.valueOf().map((e=>e.ScriptVariable.getName()));let i=oe.mergeArrays(this.ScriptVariables.valueOf(),e.ScriptVariables.valueOf(),((e,t)=>this.variableName(e)==this.variableName(t)),(i=>{let r=i.ScriptVariable.getName();t.includes(r)&&(r=this.renameScriptVariable(i.ScriptVariable,e)),this.updateNameIndex(r)}));if(i.length===this.ScriptVariables.length)return this;i.reverse();const r=this.constructor,n=i.concat(i).map(((t,r)=>{const n=ae.subObjectAttributeNameFromReference(t.ScriptVariable,r>=i.length),s=this[n]??e[n];return s?[n,s]:null})).filter((e=>e));n.push(...Object.entries(this).filter((([e,t])=>!e.startsWith(ae.subObjectAttributeNamePrefix)&&"ExportedNodes"!==e)),["ScriptVariables",new r.attributes.ScriptVariables(i.reverse())]);const s=new Si(Object.fromEntries(n));return s.mirrorNameInExportPaths(e.Name?.toString()),s.#tt=this.#tt,s.#it=this.#it,s}getVariablesAttributesReferringTo(...e){let t=new Set(...e.flatMap((e=>e.getPinEntities())).map((e=>e.PinName.toString())));return this.ScriptVariables.valueOf().map((e=>{const t=ae.subObjectAttributeNameFromReference(e.ScriptVariable,!1),i=ae.subObjectAttributeNameFromReference(e.ScriptVariable,!0);return{simple:[t,this[t]],full:[i,this[i]],variable:e}})).filter((e=>t.has(e.full?.Variable?.Name))).reduce(((e,t)=>(e.simple.push([t.simple[0],t.simple[1]]),e.full.push([t.full[0],t.full[1]]),e.ScriptVariables.push(t.variable),e)),{simple:[],full:[],ScriptVariables:[]}),{}}}class Ei extends It{constructor(e,t){const i=ae.paths.niagaraClipboardContent,r=e.takeFreeName("NiagaraClipboardContent"),n=`/Engine/Transient.${r}`,s=new Set;let a="";for(const i of t)i.exported&&(i.getPinEntities().map((t=>e.variableIndex(t.PinName.toString()))).filter((e=>null!=e)).forEach((e=>s.add(e))),a+=i.serialize());const o=e.ScriptVariables.valueOf().filter(((e,t)=>s.has(t))),l=o.concat(o).map(((t,i)=>{const r=ae.subObjectAttributeNameFromReference(t.ScriptVariable,i>=o.length);return[r,e[r]]}));super({Class:new ht(i),Name:new it(r),...Object.fromEntries(l),ExportPath:new ht(i,n),ScriptVariables:new Ei.attributes.ScriptVariables(o),ExportedNodes:new it(btoa(a))})}}class Ci extends Dt{#rt;constructor(e,t,i={}){i.listenOnFocus??=!0,i.unlistenOnTextEdit??=!0,super(e,t,i);let r=this;this.#rt=()=>r.copied()}listenEvents(){window.addEventListener("copy",this.#rt)}unlistenEvents(){window.removeEventListener("copy",this.#rt)}copied(){const e=this.blueprint.getSerializedText();return navigator.clipboard.writeText(e),e}}class Ni extends Dt{#nt;constructor(e,t,i={}){i.listenOnFocus??=!0,i.unlistenOnTextEdit??=!0,super(e,t,i);let r=this;this.#nt=()=>r.cut()}listenEvents(){window.addEventListener("cut",this.#nt)}unlistenEvents(){window.removeEventListener("cut",this.#nt)}cut(){this.blueprint.template.getCopyInputObject().copied(),this.blueprint.removeGraphElement(...this.blueprint.getNodes(!0))}}class Pi extends Dt{#st;constructor(e,t,i={}){i.listenOnFocus??=!0,i.unlistenOnTextEdit??=!0,super(e,t,i);let r=this;this.#st=e=>r.pasted(e.clipboardData.getData("Text"))}listenEvents(){window.addEventListener("paste",this.#st)}unlistenEvents(){window.removeEventListener("paste",this.#st)}pasted(e){let t=0,i=0,r=0,n=It.grammarMultipleObjects.parse(e).map((e=>{let n=Ae.getConstructor("ueb-node").newObject(e);return t+=n.locationY,i+=n.locationX,++r,n}));t/=r,i/=r,n.length>0&&this.blueprint.unselectAll();let s=this.blueprint.mousePosition;for(const e of n)e.addLocation(s[0]-i,s[1]-t),e.snapToGrid(),e.setSelected(!0);return this.blueprint.addGraphElement(...n),n}}class xi extends Bt{static#Y=e=>{};#at=0;get variation(){return this.#at}#ot=e=>{this.enablerKey&&!this.enablerActivated||(e.preventDefault(),this.#at=e.deltaY,this.setLocationFromEvent(e),this.wheel())};#lt=e=>e.preventDefault();constructor(e,t,i={},r=xi.#Y){i.listenOnFocus=!0,i.strictTarget??=!1,super(e,t,i),this.strictTarget=i.strictTarget,this.onWheel=r}listenEvents(){this.movementSpace.addEventListener("wheel",this.#ot,!1),this.movementSpace.parentElement?.addEventListener("wheel",this.#lt)}unlistenEvents(){this.movementSpace.removeEventListener("wheel",this.#ot,!1),this.movementSpace.parentElement?.removeEventListener("wheel",this.#lt)}wheel(){this.onWheel(this)}}class ki extends xi{#ct=0;#ut=!1;get enableZoonIn(){return this.#ut}set enableZoonIn(e){e!=this.#ut&&(this.#ut=e)}wheel(){if(this.#ct+=-this.variation,Math.abs(this.#ct)<ae.mouseWheelZoomThreshold)return;let e=this.blueprint.getZoom();!this.enableZoonIn&&0==e&&this.#ct>0||(e+=Math.sign(this.#ct),this.blueprint.setZoom(e,this.location),this.#ct=0)}}class Li extends Vt{#ht;constructor(e,t,i={}){i.activationKeys=Rt.enableZoomIn,super(e,t,i)}fire(){this.#ht=this.blueprint.template.getZoomInputObject(),this.#ht.enableZoonIn=!0}unfire(){this.#ht.enableZoonIn=!1}}class Ai extends qt{startDrag(){this.blueprint.scrolling=!0}dragTo(e,t){this.blueprint.scrollDelta(-t[0],-t[1])}endDrag(){this.blueprint.scrolling=!1}}class Mi extends Bt{#pt=null;#dt=e=>{e.preventDefault(),this.setLocationFromEvent(e),this.blueprint.mousePosition=[...this.location]};#mt=e=>{this.#pt||(e.preventDefault(),this.#pt=e.detail.tracker,this.unlistenMouseMove())};#gt=e=>{this.#pt==e.detail.tracker&&(e.preventDefault(),this.#pt=null,this.listenMouseMove())};constructor(e,t,i={}){i.listenOnFocus=!0,super(e,t,i)}listenMouseMove(){this.target.addEventListener("mousemove",this.#dt)}unlistenMouseMove(){this.target.removeEventListener("mousemove",this.#dt)}listenEvents(){this.listenMouseMove(),this.blueprint.addEventListener(ae.trackingMouseEventName.begin,this.#mt),this.blueprint.addEventListener(ae.trackingMouseEventName.end,this.#gt)}unlistenEvents(){this.unlistenMouseMove(),this.blueprint.removeEventListener(ae.trackingMouseEventName.begin,this.#mt),this.blueprint.removeEventListener(ae.trackingMouseEventName.end,this.#gt)}}class Ti extends qt{constructor(e,t,i={}){i.scrollGraphEdge??=!0,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 Ii extends Dt{#bt=e=>this.clickedSomewhere(e.target);constructor(e,t,i={}){i.listenOnFocus=!0,super(e,t,i),this.blueprint.focus&&document.addEventListener("click",this.#bt)}clickedSomewhere(e){e.closest("ueb-blueprint")||this.blueprint.setFocused(!1)}listenEvents(){document.addEventListener("click",this.#bt)}unlistenEvents(){document.removeEventListener("click",this.#bt)}}class Oi extends zt{static styleVariables={"--ueb-font-size":`${ae.fontSize}`,"--ueb-grid-expand":`${ae.expandGridSize}px`,"--ueb-grid-line-width":`${ae.gridLineWidth}px`,"--ueb-grid-set":`${ae.gridSet}`,"--ueb-grid-size":`${ae.gridSize}px`,"--ueb-link-min-width":`${ae.linkMinWidth}`,"--ueb-node-radius":`${ae.nodeRadius}px`};#vt=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)}));#ft;#yt;#ht;headerElement;overlayElement;viewportElement;selectorElement;gridElement;linksContainerElement;nodesContainerElement;viewportSize=[0,0];#wt=()=>this.headerElement.classList.remove("ueb-zoom-changed");initialize(e){super.initialize(e),this.element.style.cssText=Object.entries(Oi.styleVariables).map((([e,t])=>`${e}:${t};`)).join("");const t=this.element.querySelector(":scope > template")?.content.textContent;t&&(this.element.requestUpdate(),this.element.updateComplete.then((()=>{this.blueprint.mousePosition=[Math.round(this.viewportSize[0]/2),Math.round(this.viewportSize[1]/2)],this.getPasteInputObject().pasted(t),this.blueprint.unselectAll()})))}setup(){super.setup(),this.#vt.observe(this.viewportElement,{box:"device-pixel-content-box"});const e=this.viewportElement.getBoundingClientRect();this.viewportSize[0]=e.width,this.viewportSize[1]=e.height,this.blueprint.nodes.length>0&&(this.blueprint.requestUpdate(),this.blueprint.updateComplete.then((()=>this.centerContentInViewport())))}cleanup(){super.cleanup(),this.#vt.unobserve(this.viewportElement)}createInputObjects(){const e=this.element.getGridDOMElement();return this.#ft=new Ci(e,this.blueprint),this.#yt=new Pi(e,this.blueprint),this.#ht=new ki(e,this.blueprint),[...super.createInputObjects(),this.#ft,this.#yt,this.#ht,new Ni(e,this.blueprint),new Vt(e,this.blueprint,{activationKeys:Rt.duplicateNodes},(()=>this.blueprint.template.getPasteInputObject().pasted(this.blueprint.template.getCopyInputObject().copied()))),new Vt(e,this.blueprint,{activationKeys:Rt.deleteNodes},(()=>this.blueprint.removeGraphElement(...this.blueprint.getNodes(!0)))),new Vt(e,this.blueprint,{activationKeys:Rt.selectAllNodes},(()=>this.blueprint.selectAll())),new Ti(e,this.blueprint,{clickButton:ae.mouseClickButton,exitAnyButton:!0,moveEverywhere:!0}),new Ai(e,this.blueprint,{clickButton:ae.mouseRightClickButton,exitAnyButton:!1,moveEverywhere:!0}),new Ii(e,this.blueprint),new Mi(e,this.blueprint),new Li(e,this.blueprint)]}render(){return z`<div class="ueb-viewport-header"><div class="ueb-viewport-about"><a @click="${e=>e.target.closest("ueb-blueprint").querySelector(".ueb-info-dialog").showModal()}">ⓘ</a></div><div class="ueb-viewport-zoom">Zoom ${0==this.blueprint.zoom?"1:1":(this.blueprint.zoom>0?"+":"")+this.blueprint.zoom}</div></div><div class="ueb-viewport-type">${this.blueprint.blueprintType}</div><div class="ueb-viewport-body"><div class="ueb-grid" style="--ueb-additional-x:${Math.round(this.blueprint.translateX)}--ueb-additional-y:${Math.round(this.blueprint.translateY)}--ueb-translate-x:${Math.round(this.blueprint.translateX)}--ueb-translate-y:${Math.round(this.blueprint.translateY)}"><div class="ueb-grid-content"><div data-links></div><div data-nodes></div><ueb-selector></ueb-selector></div></div></div><dialog class="ueb-info-dialog" @click="${e=>e.target.closest(".ueb-info-dialog").close()}"><h2>UEBlueprint</h2><p>A stand alone implementation of the UE's Blueprint visual language editor.</p><p>Version: ${ae.VERSION}<br>Author: barsdeveloper<br>License: MIT<br><a target="_blank" href="https://github.com/barsdeveloper/ueblueprint"><svg width="16" height="16" viewBox="0 0 24 24" fill="#e3b341" style="vertical-align:bottom"><path d="M 12 0.587 L 16 8 L 24 9 L 18 15 L 20 24 L 12 19 L 4 24 L 6 15 L 0 9 L 8 8 Z M 0 0"></path></svg> https://github.com/barsdeveloper/ueblueprint</a></p></dialog>`}firstUpdated(e){super.firstUpdated(e),this.headerElement=this.blueprint.querySelector(".ueb-viewport-header"),this.overlayElement=this.blueprint.querySelector(".ueb-viewport-overlay"),this.viewportElement=this.blueprint.querySelector(".ueb-viewport-body"),this.selectorElement=this.blueprint.querySelector("ueb-selector"),this.gridElement=this.viewportElement.querySelector(".ueb-grid"),this.linksContainerElement=this.blueprint.querySelector("[data-links]"),this.linksContainerElement.append(...this.blueprint.getLinks()),this.nodesContainerElement=this.blueprint.querySelector("[data-nodes]"),this.nodesContainerElement.append(...this.blueprint.getNodes()),this.viewportElement.scroll(ae.expandGridSize,ae.expandGridSize)}willUpdate(e){super.willUpdate(e),this.headerElement&&e.has("zoom")&&(this.headerElement.classList.contains("ueb-zoom-changed")&&(this.headerElement.classList.remove("ueb-zoom-changed"),this.headerElement.offsetWidth),this.headerElement.classList.add("ueb-zoom-changed"),this.headerElement.addEventListener("animationend",this.#wt,{once:!0}))}updated(e){if(super.updated(e),(e.has("scrollX")||e.has("scrollY"))&&this.viewportElement.scroll(this.blueprint.scrollX,this.blueprint.scrollY),e.has("zoom")){this.blueprint.style.setProperty("--ueb-scale",this.blueprint.getScale());const t=e.get("zoom"),i=Math.min(t,this.blueprint.zoom),r=Math.max(t,this.blueprint.zoom),n=oe.range(i,r),s=e=>`ueb-zoom-${e}`;t<this.blueprint.zoom?(this.blueprint.classList.remove(...n.filter((e=>e<0)).map(s)),this.blueprint.classList.add(...n.filter((e=>e>0)).map(s))):(this.blueprint.classList.remove(...n.filter((e=>e>0)).map(s)),this.blueprint.classList.add(...n.filter((e=>e<0)).map(s)))}}getCommentNodes(e=!1){return this.blueprint.querySelectorAll(`ueb-node[data-type="${ae.paths.comment}"]${e?'[data-selected="true"]':""}, ueb-node[data-type="${ae.paths.materialGraphNodeComment}"]${e?'[data-selected="true"]':""}`)}getPin(e){return this.blueprint.querySelector(`ueb-node[data-title="${e.objectName}"] ueb-pin[data-id="${e.pinGuid}"]`)}getCopyInputObject(){return this.#ft}getPasteInputObject(){return this.#yt}getZoomInputObject(){return this.#ht}isPointVisible(e,t){return!1}gridTopVisibilityBoundary(){return this.blueprint.scaleCorrect(this.blueprint.scrollY)-this.blueprint.translateY}gridRightVisibilityBoundary(){return this.gridLeftVisibilityBoundary()+this.blueprint.scaleCorrect(this.viewportSize[0])}gridBottomVisibilityBoundary(){return this.gridTopVisibilityBoundary()+this.blueprint.scaleCorrect(this.viewportSize[1])}gridLeftVisibilityBoundary(){return this.blueprint.scaleCorrect(this.blueprint.scrollX)-this.blueprint.translateX}centerViewport(e=0,t=0,i=!0){const r=this.gridLeftVisibilityBoundary()+this.blueprint.scaleCorrect(this.viewportSize[0]/2),n=this.gridTopVisibilityBoundary()+this.blueprint.scaleCorrect(this.viewportSize[1]/2);this.blueprint.scrollDelta(this.blueprint.scaleCorrectReverse(e-r),this.blueprint.scaleCorrectReverse(t-n),i)}centerContentInViewport(e=!0){let t=0,i=0,r=Number.MAX_SAFE_INTEGER,n=Number.MIN_SAFE_INTEGER,s=Number.MAX_SAFE_INTEGER,a=Number.MIN_SAFE_INTEGER;const o=this.blueprint.getNodes();for(const e of o)t+=e.leftBoundary()+e.rightBoundary(),i+=e.topBoundary()+e.bottomBoundary(),r=Math.min(r,e.leftBoundary()),n=Math.max(n,e.rightBoundary()),s=Math.min(s,e.topBoundary()),a=Math.max(a,e.bottomBoundary());t=Math.round(n-r<=this.viewportSize[0]?(n+r)/2:t/(2*o.length)),i=Math.round(a-s<=this.viewportSize[1]?(a+s)/2:i/(2*o.length)),this.centerViewport(t,i,e)}}class Di extends le{static properties={blueprintType:{type:String,attribute:"data-type",reflect:!0},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}};static nodeBoundariesSupplier=e=>({primaryInf:e.leftBoundary(!0),primarySup:e.rightBoundary(!0),secondaryInf:e.topBoundary(!0),secondarySup:e.bottomBoundary(!0)});static nodeSelectToggleFunction=(e,t)=>{e.setSelected(t)};#St=0;#Et=0;nodes=[];links=[];nodesNames=new Map;mousePosition=[0,0];constructor(){super(),this.blueprintType="",this.selecting=!1,this.scrolling=!1,this.focused=!1,this.zoom=0,this.scrollX=ae.expandGridSize,this.scrollY=ae.expandGridSize,this.translateX=ae.expandGridSize,this.translateY=ae.expandGridSize,super.initialize(new Si,new Oi)}initialize(){}getGridDOMElement(){return this.template.gridElement}getScroll(){return[this.scrollX,this.scrollY]}setScroll(e,t){this.scrollX=e,this.scrollY=t}scrollDelta(e=0,t=0,i=!1,r=ae.smoothScrollTime){if(i){let i=[0,0];this.#St&&cancelAnimationFrame(this.#St),this.#Et&&cancelAnimationFrame(this.#Et),oe.animate(0,e,r,(e=>{this.scrollDelta(e-i[0],0,!1),i[0]=e}),(e=>this.#St=e)),oe.animate(0,t,r,(e=>{this.scrollDelta(0,e-i[1],!1),i[1]=e}),(e=>this.#Et=e))}else{const i=[2*ae.expandGridSize,2*ae.expandGridSize];let r=this.getScroll(),n=[r[0]+e,r[1]+t],s=[0,0];for(let e=0;e<2;++e)n[e]<ae.gridExpandThreshold*ae.expandGridSize?s[e]=-1:n[e]>i[e]-ae.gridExpandThreshold*ae.expandGridSize&&(s[e]=1);0==s[0]&&0==s[1]||this.seamlessExpand(s[0],s[1]),r=this.getScroll(),n=[r[0]+e,r[1]+t],this.setScroll(n[0],n[1])}}scrollCenter(e=!1){const t=this.getScroll(),i=[this.translateX-t[0],this.translateY-t[1]],r=this.getViewportSize().map((e=>e/2)),n=[i[0]-r[0],i[1]-r[1]];this.scrollDelta(n[0],n[1],e)}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,t){return oe.snapToGrid(e,t,ae.gridSize)}seamlessExpand(e,t){e=Math.round(e),t=Math.round(t);let i=this.getScale();[e,t]=[-e*ae.expandGridSize,-t*ae.expandGridSize],0!=e&&(this.scrollX+=e,e/=i),0!=t&&(this.scrollY+=t,t/=i),this.translateX+=e,this.translateY+=t}progressiveSnapToGrid(e){return ae.expandGridSize*Math.round(e/ae.expandGridSize+.5*Math.sign(e))}getZoom(){return this.zoom}setZoom(e,t){if((e=oe.clamp(e,ae.minZoom,ae.maxZoom))==this.zoom)return;let i=this.getScale();if(this.zoom=e,t){t[0]+=this.translateX,t[1]+=this.translateY;let e=this.getScale()/i,r=[e*t[0],e*t[1]];this.scrollDelta((r[0]-t[0])*i,(r[1]-t[1])*i)}}getScale(){return ae.scale[this.getZoom()]}scaleCorrect(e){return e/this.getScale()}scaleCorrectReverse(e){return e*this.getScale()}compensateTranslation(e,t){return[e-=this.translateX,t-=this.translateY]}getNodes(e=!1){let t=this.nodes;return e&&(t=t.filter((e=>e.selected))),t}getCommentNodes(e=!1){let t=[...this.template.getCommentNodes(e)];return 0===t.length&&(t=this.nodes.filter((t=>t.getType()===ae.paths.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=null,t=null){if(null==e!=(null==t)){const i=e??t;return this.links.filter((e=>e.origin==i||e.target==i))}return null!=e&&null!=t?this.links.filter((i=>i.origin==e&&i.target==t||i.origin==t&&i.target==e)):this.links}getLink(e,t,i=!1){return this.links.find((r=>r.origin==e&&r.target==t||!i&&r.origin==t&&r.target==e))}selectAll(){this.getNodes().forEach((e=>Di.nodeSelectToggleFunction(e,!0)))}unselectAll(){this.getNodes().forEach((e=>Di.nodeSelectToggleFunction(e,!1)))}getSerializedText(){const e=this.blueprint.getNodes(!0).map((e=>e.entity));let t=!1,i=e.filter((e=>(t||=e.exported,!e.exported))).reduce(((e,t)=>e+t.serialize()),"");if(t){i=new Ei(this.blueprint.entity,e).serialize()+i}return i}addGraphElement(...e){const t=e=>{const i=e.currentTarget;i.removeEventListener(ae.removeEventName,t);const[r,n]=i instanceof wi?[this.nodes,i.entity]:i instanceof Ut?[this.links]:null,s=r?.indexOf(i);if(s>=0){const e=r.pop();s<r.length&&(r[s]=e)}n&&this.entity.removeObjectEntity(n)};for(const i of e)if(i.blueprint=this,i instanceof wi&&!this.nodes.includes(i)){const e=i.entity.getObjectName();if(this.entity.updateNameIndex(e),i.getType()==ae.paths.niagaraClipboardContent){this.entity=this.entity.mergeWith(i.entity);const e=atob(i.entity.ExportedNodes?.toString()??"");e&&this.template.getPasteInputObject().pasted(e).forEach((e=>e.entity.exported=!0));continue}const r=this.entity.getHomonymObjectEntity(i.entity);if(r){const t=this.entity.takeFreeName(e);r.Name=new r.Name.constructor(t)}this.nodes.push(i),this.entity.addObjectEntity(i.entity),i.addEventListener(ae.removeEventName,t),this.template.nodesContainerElement?.appendChild(i),this.blueprintType||(this.blueprintType=i.entity.getBlueprintType())}else i instanceof Ut&&!this.links.includes(i)&&(this.links.push(i),i.addEventListener(ae.removeEventName,t),this.template.linksContainerElement&&!this.template.linksContainerElement.contains(i)&&this.template.linksContainerElement.appendChild(i));e.filter((e=>e instanceof wi)).forEach((t=>t.sanitizeLinks(e))),e.filter((e=>e instanceof wi&&e.getType()==ae.paths.comment)).forEach((e=>e.updateComplete.then((()=>e.template.manageNodesBind()))))}removeGraphElement(...e){for(let t of e){if(t.closest("ueb-blueprint")!==this)return;t.remove()}0==this.nodes.length&&(this.blueprintType="")}setFocused(e=!0){if(this.focused==e)return;let t=new CustomEvent(e?ae.focusEventName.begin:ae.focusEventName.end);this.focused=e,this.focused||this.unselectAll(),this.dispatchEvent(t)}acknowledgeEditText(e){const t=new CustomEvent(e?ae.editTextEventName.begin:ae.editTextEventName.end);this.dispatchEvent(t)}}customElements.define("ueb-blueprint",Di);class $i extends Qt{#Ct;get locationChangeCallback(){return this.#Ct}set locationChangeCallback(e){this.#Ct=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 Yt(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 Vi extends $i{adjustLocation(e,t){const i=Math.round(this.movementSpaceSize[0]/2);e-=i,t=-(t-i);let[r,n]=oe.getPolarCoordinates(e,t);return r=Math.min(r,i),[e,t]=oe.getCartesianCoordinates(r,n),this.locationChangeCallback?.(e/i,t/i),[e=Math.round(e+i),t=Math.round(-t+i)]}}class Bi extends Kt{windowElement;setup(){super.setup(),this.windowElement=this.closest("ueb-window")}setLocation(e,t){super.setLocation(...this.template.adjustLocation(e,t))}}class Gi extends Bi{constructor(){super(),super.initialize({},new Vi)}static newObject(){return new Gi}initialize(){}}class Hi extends $i{adjustLocation(e,t){return e=oe.clamp(e,0,this.movementSpaceSize[0]),t=oe.clamp(t,0,this.movementSpaceSize[1]),this.locationChangeCallback?.(e/this.movementSpaceSize[0],1-t/this.movementSpaceSize[1]),[e,t]}}class Ri extends Bi{constructor(){super(),super.initialize({},new Hi)}static newObject(){return new Ri}initialize(){}}class zi extends qt{constructor(e,t,i={}){i.consumeEvent=!0,super(e,t,i)}}class Fi extends zt{#Nt;#Pt;#xt=e=>this.element.selectedOption=e.target.selectedOptions[0].value;render(){return z`<select class="ueb-pin-input-content" @change="${this.#xt}">${this.element.options.map((([e,t])=>z`<option value="${e}" ?selected="${e===this.element.selectedOption}">${t}</option>`))}</select> <select style="visibility:hidden;position:fixed"><option>${this.element.selectedOption}</option></select>`}firstUpdated(e){super.firstUpdated(e),this.#Nt=this.element.querySelector("select:first-child"),this.#Pt=this.element.querySelector("select:last-child");const t=new Event("input",{bubbles:!0});this.#Nt.dispatchEvent(t)}updated(e){super.updated(e);const t=this.#Pt.getBoundingClientRect();this.element.style.setProperty("--ueb-dropdown-width",t.width+"px")}createInputObjects(){return[...super.createInputObjects(),new zi(this.element,this.blueprint)]}setSelectedValue(e){this.element.querySelector(`option[value="${e}"]`).defaultSelected=!0}getSelectedValue(){return this.#Nt.value}}class _i extends le{static properties={...super.properties,options:{type:Object},selectedOption:{type:String}};constructor(){super(),super.initialize({},new Fi),this.options=[],this.selectedOption=""}static newObject(e){return new _i}initialize(){}getValue(){return this.template.getSelectedValue()}}class ji extends zt{#kt=()=>{this.blueprint.acknowledgeEditText(!0),this.element.selectOnFocus&&getSelection().selectAllChildren(this.element)};#Lt=()=>{this.blueprint.acknowledgeEditText(!1),getSelection().removeAllRanges()};#At=e=>e.target.querySelectorAll("br").forEach((e=>e.remove()));#Mt=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"),"false"!==this.element.contentEditable&&(this.element.contentEditable="true")}firstUpdated(e){super.firstUpdated(e);const t=new Event("input",{bubbles:!0});this.element.dispatchEvent(t)}createInputObjects(){return[...super.createInputObjects(),new zi(this.element,this.blueprint)]}setup(){super.setup(),this.element.addEventListener("focus",this.#kt),this.element.addEventListener("focusout",this.#Lt),this.element.singleLine&&this.element.addEventListener("input",this.#At),this.element.blurOnEnter&&this.element.addEventListener("keydown",this.#Mt)}cleanup(){super.cleanup(),this.element.removeEventListener("focus",this.#kt),this.element.removeEventListener("focusout",this.#Lt),this.element.removeEventListener("input",this.#At),this.element.removeEventListener("keydown",this.#Mt)}}class Ui extends le{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 ji)}static newObject(){return new Ui}initialize(){}}class Ki extends ci{#Tt;#It=()=>{const e=this.element.getDefaultValue(!0);e.value=this.#Tt.checked,this.element.setDefaultValue(e)};firstUpdated(e){super.firstUpdated(e),this.#Tt=this.element.querySelector(".ueb-pin-input")}setup(){super.setup(),this.#Tt?.addEventListener("change",this.#It)}cleanup(){super.cleanup(),this.#Tt?.removeEventListener("change",this.#It)}createInputObjects(){return[...super.createInputObjects(),new zi(this.#Tt,this.blueprint)]}renderInput(){return z`<input type="checkbox" class="ueb-pin-input-wrapper ueb-pin-input" ?checked="${!0===this.element.defaultValue?.valueOf()}">`}}class qi extends ci{static singleLineInput=!1;static selectOnFocus=!0;static saveEachInputChange=!1;#Ot;get inputWrapper(){return this.#Ot}#Dt;static stringFromInputToUE(e){return e.replace(/(?=\n\s*)\n$/,"")}static stringFromUEToInput(e){return e.replaceAll(/(?:\r|(?<=(?:^|[^\\])(?:\\\\)*)\\r)(?=\n)/g,"").replace(/(?<=\n\s*)$/,"\n")}#$t=()=>this.setInputs(this.getInputs(),!0);#Vt=e=>this.#Bt(e.target);#Bt(e){if(this.element.querySelector(".ueb-pin-name")?.getBoundingClientRect().width<20)return;const t=this.blueprint.scaleCorrect(this.#Ot.getBoundingClientRect().width)+this.nameWidth,i=this.element.classList.contains("ueb-pin-input-wrap");!i&&t>ae.pinInputWrapWidth?this.element.classList.add("ueb-pin-input-wrap"):i&&t<=ae.pinInputWrapWidth&&this.element.classList.remove("ueb-pin-input-wrap")}firstUpdated(e){super.firstUpdated(e);this.constructor.canWrapInput&&this.isInputRendered()&&(this.element.addEventListener("input",this.#Vt),this.nameWidth=this.blueprint.scaleCorrect(this.element.querySelector(".ueb-pin-name")?.getBoundingClientRect().width??0)),this.#Ot=this.element.querySelector(".ueb-pin-input-wrapper"),this.#Dt=[...this.element.querySelectorAll("ueb-input")]}setup(){super.setup();const e=this.constructor;e.saveEachInputChange?this.element.addEventListener("input",this.#$t):this.element.addEventListener("focusout",this.#$t),e.canWrapInput&&this.isInputRendered()&&(this.element.addEventListener("input",this.#Vt),this.element.nodeElement.addEventListener(ae.nodeUpdateEventName,this.#Vt))}cleanup(){super.cleanup(),this.element.nodeElement.removeEventListener(ae.nodeUpdateEventName,this.#Vt),this.element.removeEventListener("input",this.#Vt),this.element.removeEventListener("input",this.#$t),this.element.removeEventListener("focusout",this.#$t)}getInput(){return this.getInputs().reduce(((e,t)=>e+t),"")}getInputs(){return this.#Dt.map((e=>oe.clearHTMLWhitespace(e.innerHTML)))}setInputs(e=[],t=!0){this.#Dt.forEach(this.constructor.singleLineInput?(t,i)=>t.innerText=e[i]:(t,i)=>t.innerText=e[i].replaceAll("\n","")),t&&this.setDefaultValue(e.map((e=>qi.stringFromInputToUE(e))),e),this.element.requestUpdate(),this.element.updateComplete.then((()=>this.element.nodeElement.acknowledgeUpdate()))}setDefaultValue(e=[],t=e){this.element.setDefaultValue(e.join(""))}renderInput(){const e=this.constructor,t=e.singleLineInput,i=e.selectOnFocus;return z`<div class="ueb-pin-input-wrapper ueb-pin-input"><ueb-input .singleLine="${t}" .selectOnFocus="${i}" .innerText="${qi.stringFromUEToInput(this.element.getDefaultValue()?.toString()??"")}"></ueb-input></div>`}}class Yi extends ci{renderIcon(){return ce.execPin}renderName(){let e=this.element.entity.PinName?.toString();if(this.element.entity.PinFriendlyName)e=this.element.entity.PinFriendlyName.toString();else if("execute"===e||"then"===e)return z``;return z`<span class="ueb-pin-name ueb-ellipsis-nowrap-text">${this.element.getPinDisplayName()}</span>`}}class Wi extends qi{static singleLineInput=!0;setInputs(e=[],t=!1){if(e&&0!=e.length||(e=[this.getInput()]),super.setInputs(e,!1),t){let i=[];for(const r of e){let e=parseFloat(r);isNaN(e)&&(e=0,t=!1),i.push(e)}this.setDefaultValue(i,e)}}setDefaultValue(e=[],t){const i=this.element.getDefaultValue();i.value=e[0],this.element.setDefaultValue(i),this.element.requestUpdate()}}class Xi extends Wi{renderInput(){return z`<div class="ueb-pin-input-wrapper 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 Zi=1;class Qi{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 Ji="important",er=" !"+Ji,tr=(e=>(...t)=>({_$litDirective$:e,values:t}))(class extends Qi{constructor(e){if(super(e),e.type!==Zi||"style"!==e.name||e.strings?.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 r=e[i];return null==r?t:t+`${i=i.includes("-")?i:i.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`}),"")}update(e,[t]){const{style:i}=e.element;if(void 0===this.ft)return this.ft=new Set(Object.keys(t)),this.render(t);for(const e of this.ft)null==t[e]&&(this.ft.delete(e),e.includes("-")?i.removeProperty(e):i[e]=null);for(const e in t){const r=t[e];if(null!=r){this.ft.add(e);const t="string"==typeof r&&r.endsWith(er);e.includes("-")||t?i.setProperty(e,t?r.slice(0,-11):r,t?Ji:""):i[e]=r}}return F}});class ir extends Jt{toggleAdvancedDisplayHandler;getDraggableElement(){return this.element.querySelector(".ueb-window-top")}createDraggableObject(){return new Yt(this.element,this.blueprint,{draggableElement:this.getDraggableElement(),ignoreScale:!0,ignoreTranslateCompensate:!1,movementSpace:this.blueprint,stepSize:1})}setup(){const e=this.blueprint.template.gridLeftVisibilityBoundary(),t=this.blueprint.template.gridTopVisibilityBoundary();this.element.locationX=this.blueprint.scaleCorrectReverse(this.blueprint.mousePosition[0]-e),this.element.locationY=this.blueprint.scaleCorrectReverse(this.blueprint.mousePosition[1]-t),this.element.updateComplete.then((()=>{const e=this.blueprint.getBoundingClientRect();this.element.locationX+this.element.sizeX>e.width&&(this.element.locationX=e.width-this.element.sizeX),this.element.locationX=Math.max(0,this.element.locationX),this.element.locationY+this.element.sizeY>e.height&&(this.element.locationY=e.height-this.element.sizeY),this.element.locationY=Math.max(0,this.element.locationY)}))}render(){return z`<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()}">${ce.close}</div></div><div class="ueb-window-content">${this.renderContent()}</div></div>`}renderWindowName(){return z`Window`}renderContent(){return z``}apply(){this.element.dispatchEvent(new CustomEvent(ae.windowApplyEventName)),this.element.remove()}cancel(){this.element.dispatchEvent(new CustomEvent(ae.windowCancelEventName)),this.element.remove()}}class rr extends ir{#Gt;#Ht;#Rt;#zt;#Ft;#_t;#jt;#Ut;#Kt;#qt;#Yt=e=>{const t=oe.clearHTMLWhitespace(e.target.innerHTML),i=parseInt(t,16);isNaN(i)||(this.color.setFromRGBANumber(i),this.element.requestUpdate())};#Wt=e=>{const t=oe.clearHTMLWhitespace(e.target.innerHTML),i=parseInt(t,16);isNaN(i)||(this.color.setFromSRGBANumber(i),this.element.requestUpdate())};#Xt=e=>t=>{"Enter"==t.code&&(t.preventDefault(),e(t))};#Zt=new Oe;get color(){return this.#Zt}set color(e){e.toNumber()!=this.color?.toNumber()&&(this.element.requestUpdate("color",this.#Zt),this.#Zt=e)}#Qt=new Oe;get fullColor(){return this.#Qt}#Jt;get initialColor(){return this.#Jt}#ei=new Oe;#ti(e,t,i=!1){const r=this.color.toRGBAString(),n=`${r.substring(0,2*e)}${t}${r.substring(2+2*e)}`;return i?`${n.substring(0,6)}FF`:n}initialize(e){super.initialize(e),this.#Jt=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.#Gt=this.element.querySelector(".ueb-color-picker-wheel ueb-color-handler"),this.#Ht=this.element.querySelector(".ueb-color-picker-saturation ueb-ui-slider"),this.#Rt=this.element.querySelector(".ueb-color-picker-value ueb-ui-slider"),this.#zt=this.element.querySelector(".ueb-color-picker-r ueb-ui-slider"),this.#Ft=this.element.querySelector(".ueb-color-picker-g ueb-ui-slider"),this.#_t=this.element.querySelector(".ueb-color-picker-b ueb-ui-slider"),this.#jt=this.element.querySelector(".ueb-color-picker-a ueb-ui-slider"),this.#Ut=this.element.querySelector(".ueb-color-picker-h ueb-ui-slider"),this.#Kt=this.element.querySelector(".ueb-color-picker-s ueb-ui-slider"),this.#qt=this.element.querySelector(".ueb-color-picker-v ueb-ui-slider"),this.#Gt.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.#Ht.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,t,this.color.V.value,this.color.A.value),this.element.requestUpdate()},this.#Rt.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,this.color.S.value,t,this.color.A.value),this.element.requestUpdate()},this.#zt.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(e,this.color.G.value,this.color.B.value,this.color.A.value),this.element.requestUpdate()},this.#Ft.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(this.color.R.value,e,this.color.B.value,this.color.A.value),this.element.requestUpdate()},this.#_t.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(this.color.R.value,this.color.G.value,e,this.color.A.value),this.element.requestUpdate()},this.#jt.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(this.color.R.value,this.color.G.value,this.color.B.value,e),this.element.requestUpdate()},this.#Ut.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(e,this.color.S.value,this.color.V.value,this.color.A.value),this.element.requestUpdate()},this.#Kt.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,e,this.color.V.value,this.color.A.value),this.element.requestUpdate()},this.#qt.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,r="";const n=e=>`linear-gradient(to right, #${this.#ti(e,"00",!0)}, #${this.#ti(e,"ff",!0)})`;switch(e){case 0:t="r",i=this.color.R.value,r=n(e);break;case 1:t="g",i=this.color.G.value,r=n(e);break;case 2:t="b",i=this.color.B.value,r=n(e);break;case 3:t="a",i=this.color.A.value,r=`${ae.alphaPattern}, ${n(e)}`;break;case 4:t="h",i=360*this.color.H.value,r="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,r=`linear-gradient(to right,#${this.#ei.setFromHSVA(this.color.H.value,0,this.color.V.value,1),this.#ei.toRGBAString()},#${this.#ei.setFromHSVA(this.color.H.value,1,this.color.V.value,1),this.#ei.toRGBAString()})`;break;case 6:t="v",i=this.color.V.value,r=`linear-gradient(to right, #000, #${this.fullColor.toRGBAString()})`}return r=`background: ${r};`,z`<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="${Ve.printNumber(oe.roundDecimals(i,3))}"></span><ueb-ui-slider></ueb-ui-slider></div><div class="ueb-color-picker-gradient" style="${r}"></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(),r=this.color.toSRGBAString(),n=this.fullColor.toRGBAString();return z`<div class="ueb-color-picker" style="${tr(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:#${n}"><ueb-ui-slider></ueb-ui-slider></div><div class="ueb-color-picker-value ueb-vertical-slider" style="background-color:#${n}"><ueb-ui-slider></ueb-ui-slider></div><div class="ueb-color-picker-preview">Old<div class="ueb-color-picker-preview-old" style="background:#${this.#Jt.toRGBAString()}"></div><div class="ueb-color-picker-preview-new"><div class="ueb-color-picker-preview-1" style="background:#${this.#ti(3,"FF")}"></div><div class="ueb-color-picker-preview-2" style="background:${`linear-gradient(#${i}, #${i}),${ae.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.#Yt}" @keydown="${this.#Xt(this.#Yt)}"></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="${r}" @focusout="${this.#Wt}" @keydown="${this.#Xt(this.#Wt)}"></ueb-input></div></div></div></div><div class="ueb-buttons"><div class="ueb-color-picker-ok ueb-button" @click="${()=>this.apply()}">${ae.windowApplyButtonText}</div><div class="ueb-color-picker-cancel ueb-button" @click="${()=>this.cancel()}">${ae.windowCancelButtonText}</div></div></div>`}renderWindowName(){return z`${ae.colorWindowName}`}}class nr extends ci{setDefaultValue(e=[],t=e){}renderInput(){return z`<div class="ueb-pin-input-wrapper ueb-pin-input"><ueb-input contenteditable="false" .singleLine="${!0}" .selectOnFocus="${!1}" .innerText="${this.element.entity.PinName.toString()}"></ueb-input></div>`}}class sr extends Wi{renderInput(){return z`<div class="ueb-pin-input-wrapper ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${Ve.printNumber(this.element.getDefaultValue()?.valueOf()??0)}"></ueb-input></div>`}}class ar extends Wi{#ii(){return Ve.printNumber(this.element.getDefaultValue()?.X.valueOf()??0)}#ri(){return Ve.printNumber(this.element.getDefaultValue()?.Y.valueOf()??0)}setDefaultValue(e,t){const i=this.element.getDefaultValue(!0);i.X.value=e[0],i.Y.value=e[1],this.element.setDefaultValue(i)}renderInput(){return z`<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.#ii()}"></ueb-input></div><span class="ueb-pin-input-label">Y</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#ri()}"></ueb-input></div></div>`}}class or extends Wi{#ii(){return Ve.printNumber(this.element.getDefaultValue()?.X.valueOf()??0)}#ri(){return Ve.printNumber(this.element.getDefaultValue()?.Y.valueOf()??0)}#ni(){return Ve.printNumber(this.element.getDefaultValue()?.Z.valueOf()??0)}setDefaultValue(e,t){const i=this.element.getDefaultValue(!0);if(!(i instanceof Be))throw new TypeError("Expected DefaultValue to be a VectorEntity");i.X.value=e[0],i.Y.value=e[1],i.Z.value=e[2],this.element.requestUpdate("DefaultValue",i)}renderInput(){return z`<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.#ii()}"></ueb-input></div><span class="ueb-pin-input-label">Y</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#ri()}"></ueb-input></div><span class="ueb-pin-input-label">Z</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#ni()}"></ueb-input></div></div>`}}const lr=ae.paths,cr={bool:Ki,byte:Xi,enum:class extends qi{static saveEachInputChange=!0;#si;#ai=[];setup(){super.setup();const e=this.element.nodeElement.entity.EnumEntries?.valueOf();this.#ai=e?.map((e=>(""===e.valueOf()&&(e=new it("None")),[e,this.element.nodeElement.getPinEntities().find((t=>e===t.PinName))?.PinFriendlyName.toString()??e])))??ae.CommonEnums[this.element.entity.getSubCategory()]?.map((e=>e instanceof Array?e:[e,oe.formatStringName(e)]))??[];const t=this.element.getDefaultValue()?.toString();this.#ai.find((([e,i])=>e===t))||this.#ai.push([t,oe.formatStringName(t)]),this.element.requestUpdate()}renderInput(){return z`<ueb-dropdown class="ueb-pin-input-wrapper ueb-pin-input" .options="${this.#ai}" .selectedOption="${this.element.defaultValue}"></ueb-dropdown>`}firstUpdated(e){super.firstUpdated(e),this.#si=this.element.querySelector("ueb-dropdown")}getInputs(){return[this.#si.getValue()]}setDefaultValue(e=[],t){const i=this.element.getDefaultValue();i.value=e[0],this.element.setDefaultValue(i),this.element.requestUpdate()}},float:sr,int:Xi,int64:class extends Wi{setDefaultValue(e=[],t){const i=this.element.getDefaultValue();i.value=BigInt(e[0]),this.element.setDefaultValue(i),this.element.requestUpdate()}renderInput(){return z`<div class="ueb-pin-input-wrapper ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.element.getDefaultValue()?.toString()??"0"}"></ueb-input></div>`}},MUTABLE_REFERENCE:class extends ci{renderIcon(){return ce.referencePin}},name:class extends qi{static singleLineInput=!0},real:sr,rg:ar,string:class extends qi{setDefaultValue(e=[],t){const i=this.element.getDefaultValue();i.value=e[0],this.element.setDefaultValue(i),this.element.requestUpdate()}},[lr.linearColor]:class extends ci{#oi;#li=e=>{e.preventDefault(),this.blueprint.setFocused(!0),this.#oi=Ae.getConstructor("ueb-window").newObject({type:new rr,windowOptions:{getPinColor:()=>this.element.defaultValue,setPinColor:e=>this.element.setDefaultValue(e)}}),this.blueprint.append(this.#oi);const t=()=>{this.element.setDefaultValue(this.#oi.template.color)},i=()=>{this.#oi.removeEventListener(ae.windowApplyEventName,t),this.#oi.removeEventListener(ae.windowCloseEventName,i),this.#oi=null};this.#oi.addEventListener(ae.windowApplyEventName,t),this.#oi.addEventListener(ae.windowCloseEventName,i)};renderInput(){return z`<span class="ueb-pin-input-wrapper ueb-pin-input" data-linear-color="${this.element.getDefaultValue()?.toString()??_}" @click="${this.#li}" style="--ueb-linear-color:rgba(${this.element.getDefaultValue()?.toString()??_})"></span>`}},[lr.niagaraBool]:Ki,[lr.niagaraFloat]:sr,[lr.niagaraInt32]:Xi,[lr.niagaraPosition]:or,[lr.rotator]:class extends Wi{#ci(){return Ve.printNumber(this.element.getDefaultValue()?.R.valueOf()??0)}#ui(){return Ve.printNumber(this.element.getDefaultValue()?.P.valueOf()??0)}#ri(){return Ve.printNumber(this.element.getDefaultValue()?.Y.valueOf()??0)}setDefaultValue(e=[],t=e){const i=this.element.getDefaultValue(!0);if(!(i instanceof vt))throw new TypeError("Expected DefaultValue to be a RotatorEntity");i.R.value=e[0],i.P.value=e[1],i.Y.value=e[2],this.element.requestUpdate("DefaultValue",i)}renderInput(){return z`<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.#ci()}"></ueb-input></div><span class="ueb-pin-input-label">Y</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#ui()}"></ueb-input></div><span class="ueb-pin-input-label">Z</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#ri()}"></ueb-input></div></div>`}},[lr.vector]:or,[lr.vector2D]:ar,[lr.vector2f]:ar,[lr.vector3f]:or,[lr.vector4f]:class extends Wi{#ii(){return Ve.printNumber(this.element.getDefaultValue()?.X.valueOf()??0)}#ri(){return Ve.printNumber(this.element.getDefaultValue()?.Y.valueOf()??0)}#ni(){return Ve.printNumber(this.element.getDefaultValue()?.Z.valueOf()??0)}#hi(){return Ve.printNumber(this.element.getDefaultValue()?.W.valueOf()??0)}setDefaultValue(e,t){const i=this.element.getDefaultValue(!0);if(!(i instanceof wt))throw new TypeError("Expected DefaultValue to be a Vector4DEntity");i.X.value=e[0],i.Y.value=e[1],i.Z.value=e[2],i.W.value=e[3],this.element.requestUpdate("DefaultValue",i)}renderInput(){return z`<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.#ii()}"></ueb-input></div><span class="ueb-pin-input-label">Y</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#ri()}"></ueb-input></div><span class="ueb-pin-input-label">Z</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#ni()}"></ueb-input></div><span class="ueb-pin-input-label">W</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.#hi()}"></ueb-input></div></div>`}}};function ur(e){if("Array"===e.PinType.ContainerType?.toString())return ci;if(e.PinType.bIsReference?.valueOf()&&!e.PinType.bIsConst?.valueOf())return cr.MUTABLE_REFERENCE;if(e.isExecution())return Yi;if("self"===e.PinName?.toString()&&"Target"===et(e))return nr;const t=e.getType();return(e.isInput()?cr[t]:ci)??ci}class hr extends le{static properties={pinId:{type:Ye,converter:{fromAttribute:(e,t)=>e?Ye.grammar.parse(e):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:Oe,converter:{fromAttribute:(e,t)=>e?Oe.getLinearColorFromAnyFormat().parse(e):null,toAttribute:(e,t)=>e?.toString()??""},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},connectable:{type:Boolean,converter:Le.booleanConverter,attribute:"data-connectable",reflect:!0}};nodeElement;static newObject(e=new Nt,t=new(ur(e)),i=void 0){const r=new hr;return r.initialize(e,t,i),r}initialize(e=new Nt,t=new(ur(e)),i=void 0){this.nodeElement=i,this.advancedView=e.bAdvancedView?.valueOf(),this.isLinked=!1,this.connectable=!e.bNotConnectable?.valueOf(),super.initialize(e,t),this.pinId=this.entity.PinId,this.updateType(),this.defaultValue=this.entity.getDefaultValue(),this.pinDirection=e.isInput()?"input":e.isOutput()?"output":"hidden",this.color=hr.properties.color.converter.fromAttribute(this.entity.pinColor().toString())}setup(){super.setup(),this.nodeElement=this.closest("ueb-node")}updateType(){this.pinType=this.entity.getType();const e=hr.properties.color.converter.fromAttribute(this.entity.pinColor().toString());this.color?.equals(e)||(this.color=e,this.acknowledgeUpdate())}createPinReference(){return new pt(new nt(this.nodeElement.getNodeName()),this.getPinId())}getPinId(){return this.entity.PinId}getPinName(){return this.entity.PinName?.toString()??""}getPinDisplayName(){return this.entity.pinTitle()}#pi(e){for(;e?.isKnot();){const t=e.nodeElement.getPinElements();e=(e=e===t[0]?t[1]:t[0]).isLinked?this.blueprint.getPin(e.getLinks()[0]):null}return e?.isKnot()?void 0:e}isInput(e=!1){let t=this;return e?this.#pi(t)?.isInput():t.entity.isInput()}isInputLoosely(){return this.isInput(!1)&&void 0===this.isInput(!0)}isInputVisually(){const e=this.nodeElement.template,t=this.isKnot();return t&&this.isInput()!=e.switchDirectionsVisually||!t&&this.isInput()}isOutput(e=!1){let t=this;return e?this.#pi(t)?.isOutput():t.entity.isOutput()}isOutputLoosely(){return this.isOutput(!1)&&void 0===this.isOutput(!0)}isOutputVisually(){const e=this.nodeElement.template,t=this.isKnot();return t&&this.isOutput()!=e.switchDirectionsVisually||!t&&this.isOutput()}isKnot(){return this.nodeElement?.getType()==ae.paths.knot}getLinkLocation(e=!1){return this.template.getLinkLocation(e)}getNodeElement(){return this.nodeElement}getLinks(){return this.entity.LinkedTo?.valueOf()??[]}getDefaultValue(e=!1){return this.defaultValue=this.entity.getDefaultValue(e)}setDefaultValue(e){this.entity.DefaultValue=e,this.defaultValue=e,this.entity.recomputesNodeTitleOnChange&&this.nodeElement?.computeNodeDisplayName()}sanitizeLinks(e=[]){this.entity.LinkedTo=new Nt.attributes.LinkedTo(this.entity.LinkedTo?.valueOf().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);t||(t=Ae.getConstructor("ueb-link").newObject(this,i),this.blueprint.addGraphElement(t))}return i}))),this.isLinked=this.entity.isLinked()}linkTo(e){const t=this.createPinReference();this.isLinked&&this.entity.isExecution()&&this.isOutput(!0)&&this.getLinks().some((e=>!t.equals(e)))&&(this.isKnot(),this.unlinkFromAll()),this.entity.linkTo(e.getNodeElement().getNodeName(),e.entity)&&(this.isLinked=this.entity.isLinked(),this.entity.recomputesNodeTitleOnChange&&this.nodeElement?.computeNodeDisplayName())}unlinkFrom(e,t=!0){this.entity.unlinkFrom(e.getNodeElement().getNodeName(),e.entity)&&(this.isLinked=this.entity.isLinked(),t&&this.blueprint.getLink(this,e)?.remove(),this.entity.recomputesNodeTitleOnChange&&this.nodeElement?.computeNodeDisplayName())}unlinkFromAll(){this.getLinks().map((e=>this.blueprint.getPin(e))).forEach((e=>this.unlinkFrom(e)))}redirectLink(e,t){const i=this.getLinks().findIndex((t=>t.objectName.toString()==e.getNodeElement().getNodeName()&&t.pinGuid.toString()==e.entity.PinId.toString()));return i>=0&&(this.entity.LinkedTo.valueOf()[i]=t,!0)}acknowledgeUpdate(){let e=new CustomEvent(ae.pinUpdateEventName);this.dispatchEvent(e)}}class pr{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 r=Math.floor((t+i)/2);this.comparisonValueSupplier(this.array[r])<e?t=r+1:i=r}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 dr{constructor(e,t,i,r){this.initialPosition=e,this.finalPosition=e,this.metadata=new Array(t.length),this.primaryOrder=new pr((e=>this.metadata[e].primaryBoundary)),this.secondaryOrder=new pr((e=>this.metadata[e].secondaryBoundary)),this.selectFunc=r,this.rectangles=t,this.primaryOrder.reserve(this.rectangles.length),this.secondaryOrder.reserve(this.rectangles.length),t.forEach(((e,t)=>{let n={primaryBoundary:this.initialPosition[0],secondaryBoundary:this.initialPosition[1],rectangle:t,onSecondaryAxis:!1};this.metadata[t]=n,r(e,!1);const s=i(e);this.initialPosition[1]<s.secondaryInf?n.secondaryBoundary=s.secondaryInf:s.secondarySup<this.initialPosition[1]?n.secondaryBoundary=s.secondarySup:n.onSecondaryAxis=!0,this.initialPosition[0]<s.primaryInf?(n.primaryBoundary=s.primaryInf,this.primaryOrder.insert(t)):s.primarySup<this.initialPosition[0]?(n.primaryBoundary=s.primarySup,this.primaryOrder.insert(t)):s.secondarySup<this.initialPosition[1]||this.initialPosition[1]<s.secondaryInf?this.secondaryOrder.insert(t):r(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,r)=>{if(this.metadata[i].onSecondaryAxis)this.selectFunc(this.rectangles[i],r);else if(r){this.secondaryOrder.insert(i,e[1]);const r=this.metadata[i].secondaryBoundary;Math.sign(e[1]-r)==t[1]&&Math.sign(r-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 r=(t,i)=>{this.selectFunc(this.rectangles[t],i),this.computeBoundaries(),this.selectTo(e)};e[1]<this.boundaries.secondaryN.v?(--this.secondaryOrder.currentPosition,r(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,r(this.boundaries.secondaryP.i,this.initialPosition[1]<this.boundaries.secondaryP.v&&this.initialPosition[1]<e[1])),this.finalPosition=e}}class mr extends Ft{}class gr extends jt{selectionModel=null;constructor(){super(),super.initialize({},new mr)}static newObject(){return new gr}initialize(){}beginSelect(e){const t=this.blueprint.constructor;this.blueprint.selecting=!0,this.setBothLocations(e),this.selectionModel=new dr(e,this.blueprint.getNodes(),t.nodeBoundariesSupplier,t.nodeSelectToggleFunction)}selectTo(e){this.selectionModel.selectTo(e),this.targetX=e[0],this.targetY=e[1]}endSelect(){this.blueprint.selecting=!1,this.selectionModel=null,this.originX=0,this.originY=0,this.targetX=0,this.targetY=0}}class br extends Kt{static#di={window:ir,"color-picker":rr};static properties={...Kt.properties,type:{type:ir,attribute:"data-type",reflect:!0,converter:{fromAttribute:(e,t)=>br.#di[e],toAttribute:(e,t)=>Object.entries(br.#di).find((([t,i])=>e.constructor===i))?.[0]}}};static newObject(e={},t=e.type??new ir){const i=new br;return i.initialize(e,t),i}initialize(e={},t=e.type??new ir){e.windowOptions??={},this.type=e.type,this.windowOptions=e.windowOptions,super.initialize(e,t)}computeSizes(){const e=this.getBoundingClientRect();this.sizeX=e.width,this.sizeY=e.height}cleanup(){super.cleanup(),this.acknowledgeClose()}acknowledgeClose(){let e=new CustomEvent(ae.windowCloseEventName);this.dispatchEvent(e)}}class vr extends ke{static attributes={...super.attributes,VariableGuid:Ye};static grammar=this.createGrammar();static{ke.unknownEntity=this}static createGrammar(){return xe.seq(xe.reg(new RegExp(`(${Te.Regex.Path.source}|${Te.Regex.Symbol.source}\\s*)?\\(\\s*`),1),xe.seq(Te.attributeName,Te.equalSeparation).map((([e,t])=>e)).chain((e=>this.unknownEntityGrammar.map((t=>i=>i[e]=t)))).sepBy(Te.commaSeparation),xe.reg(/\s*(?:,\s*)?\)/)).map((([e,t,i])=>{e??="";let r={};return e.length&&(r.lookbehind=e),t.forEach((e=>e(r))),new this(r)})).label("UnknownKeysEntity")}}ke.unknownEntityGrammar=xe.alt(Le.grammar,Ye.grammar,xe.str("None").map((()=>ht.createNoneInstance())),Lt.grammar,Ve.grammar,xe.alt(ht.fullReferenceGrammar,xe.regArray(new RegExp(`"(${Te.Regex.Path.source})'(${Te.Regex.Path.source}|${Te.symbol.getParser().regexp.source})'"`)).map((([e,t,i])=>new ht(t,i,((e,t)=>`"${e}'${t}'"`))))),it.grammar,lt.grammar,ot.grammar,ct.grammar,pt.grammar,wt.grammar,Be.grammar,gt.grammar,vt.grammar,Oe.grammar,vr.grammar,nt.grammar,Ke.of(pt).grammar,Ke.of(Me.accepting(Ve,it,nt)).grammar,xe.lazy((()=>Ke.createGrammar(ke.unknownEntityGrammar)))),function(){const e=(e,t)=>{customElements.define(e,t),Ae.registerElement(e,t)};e("ueb-color-handler",Gi),e("ueb-dropdown",_i),e("ueb-input",Ui),e("ueb-link",Ut),e("ueb-node",wi),e("ueb-pin",hr),e("ueb-selector",gr),e("ueb-ui-slider",Ri),e("ueb-window",br)}();export{Di as Blueprint,ae as Configuration,Ut as LinkElement,wi as NodeElement,oe as Utility};
|