mirror of
https://github.com/barsdeveloper/ueblueprint.git
synced 2026-02-21 14:24:47 +08:00
35 lines
134 KiB
JavaScript
35 lines
134 KiB
JavaScript
/**
|
||
* @license
|
||
* Copyright 2019 Google LLC
|
||
* SPDX-License-Identifier: BSD-3-Clause
|
||
*/
|
||
const e=window.ShadowRoot&&(void 0===window.ShadyCSS||window.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,t=Symbol(),i=new WeakMap;class n{constructor(e,i,n){if(this._$cssResult$=!0,n!==t)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=i}get styleSheet(){let t=this.o;const n=this.t;if(e&&void 0===t){const e=void 0!==n&&1===n.length;e&&(t=i.get(n)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&i.set(n,t))}return t}toString(){return this.cssText}}const s=(e,...i)=>{const s=1===e.length?e[0]:i.reduce(((t,i,n)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if("number"==typeof e)return e;throw Error("Value passed to 'css' function must be a 'css' function result: "+e+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+e[n+1]),e[0]);return new n(s,e,t)},r=e?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let i="";for(const t of e.cssRules)i+=t.cssText;return(e=>new n("string"==typeof e?e:e+"",void 0,t))(i)})(e):e
|
||
/**
|
||
* @license
|
||
* Copyright 2017 Google LLC
|
||
* SPDX-License-Identifier: BSD-3-Clause
|
||
*/;var o;const a=window.trustedTypes,l=a?a.emptyScript:"",u=window.reactiveElementPolyfillSupport,c={toAttribute(e,t){switch(t){case Boolean:e=e?l: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}},h=(e,t)=>t!==e&&(t==t||e==e),d={attribute:!0,type:String,converter:c,reflect:!1,hasChanged:h};class p extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(e){var t;null!==(t=this.h)&&void 0!==t||(this.h=[]),this.h.push(e)}static get observedAttributes(){this.finalize();const e=[];return this.elementProperties.forEach(((t,i)=>{const n=this._$Ep(i,t);void 0!==n&&(this._$Ev.set(n,i),e.push(n))})),e}static createProperty(e,t=d){if(t.state&&(t.attribute=!1),this.finalize(),this.elementProperties.set(e,t),!t.noAccessor&&!this.prototype.hasOwnProperty(e)){const i="symbol"==typeof e?Symbol():"__"+e,n=this.getPropertyDescriptor(e,i,t);void 0!==n&&Object.defineProperty(this.prototype,e,n)}}static getPropertyDescriptor(e,t,i){return{get(){return this[t]},set(n){const s=this[e];this[t]=n,this.requestUpdate(e,s,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)||d}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const e=Object.getPrototypeOf(this);if(e.finalize(),this.elementProperties=new Map(e.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const e=this.properties,t=[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)];for(const i of t)this.createProperty(i,e[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const i=new Set(e.flat(1/0).reverse());for(const e of i)t.unshift(r(e))}else void 0!==e&&t.push(r(e));return t}static _$Ep(e,t){const i=t.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof e?e.toLowerCase():void 0}u(){var e;this._$E_=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(e=this.constructor.h)||void 0===e||e.forEach((e=>e(this)))}addController(e){var t,i;(null!==(t=this._$ES)&&void 0!==t?t:this._$ES=[]).push(e),void 0!==this.renderRoot&&this.isConnected&&(null===(i=e.hostConnected)||void 0===i||i.call(e))}removeController(e){var t;null===(t=this._$ES)||void 0===t||t.splice(this._$ES.indexOf(e)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((e,t)=>{this.hasOwnProperty(t)&&(this._$Ei.set(t,this[t]),delete this[t])}))}createRenderRoot(){var t;const i=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return((t,i)=>{e?t.adoptedStyleSheets=i.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet)):i.forEach((e=>{const i=document.createElement("style"),n=window.litNonce;void 0!==n&&i.setAttribute("nonce",n),i.textContent=e.cssText,t.appendChild(i)}))})(i,this.constructor.elementStyles),i}connectedCallback(){var e;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostConnected)||void 0===t?void 0:t.call(e)}))}enableUpdating(e){}disconnectedCallback(){var e;null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostDisconnected)||void 0===t?void 0:t.call(e)}))}attributeChangedCallback(e,t,i){this._$AK(e,i)}_$EO(e,t,i=d){var n,s;const r=this.constructor._$Ep(e,i);if(void 0!==r&&!0===i.reflect){const o=(null!==(s=null===(n=i.converter)||void 0===n?void 0:n.toAttribute)&&void 0!==s?s:c.toAttribute)(t,i.type);this._$El=e,null==o?this.removeAttribute(r):this.setAttribute(r,o),this._$El=null}}_$AK(e,t){var i,n;const s=this.constructor,r=s._$Ev.get(e);if(void 0!==r&&this._$El!==r){const e=s.getPropertyOptions(r),o=e.converter,a=null!==(n=null!==(i=null==o?void 0:o.fromAttribute)&&void 0!==i?i:"function"==typeof o?o:null)&&void 0!==n?n:c.fromAttribute;this._$El=r,this[r]=a(t,e.type),this._$El=null}}requestUpdate(e,t,i){let n=!0;void 0!==e&&(((i=i||this.constructor.getPropertyOptions(e)).hasChanged||h)(this[e],t)?(this._$AL.has(e)||this._$AL.set(e,t),!0===i.reflect&&this._$El!==e&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(e,i))):n=!1),!this.isUpdatePending&&n&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var e;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((e,t)=>this[t]=e)),this._$Ei=void 0);let t=!1;const i=this._$AL;try{t=this.shouldUpdate(i),t?(this.willUpdate(i),null===(e=this._$ES)||void 0===e||e.forEach((e=>{var t;return null===(t=e.hostUpdate)||void 0===t?void 0:t.call(e)})),this.update(i)):this._$Ek()}catch(e){throw t=!1,this._$Ek(),e}t&&this._$AE(i)}willUpdate(e){}_$AE(e){var t;null===(t=this._$ES)||void 0===t||t.forEach((e=>{var t;return null===(t=e.hostUpdated)||void 0===t?void 0:t.call(e)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(e){return!0}update(e){void 0!==this._$EC&&(this._$EC.forEach(((e,t)=>this._$EO(t,this[t],e))),this._$EC=void 0),this._$Ek()}updated(e){}firstUpdated(e){}}
|
||
/**
|
||
* @license
|
||
* Copyright 2017 Google LLC
|
||
* SPDX-License-Identifier: BSD-3-Clause
|
||
*/
|
||
var m;p.finalized=!0,p.elementProperties=new Map,p.elementStyles=[],p.shadowRootOptions={mode:"open"},null==u||u({ReactiveElement:p}),(null!==(o=globalThis.reactiveElementVersions)&&void 0!==o?o:globalThis.reactiveElementVersions=[]).push("1.3.4");const g=globalThis.trustedTypes,v=g?g.createPolicy("lit-html",{createHTML:e=>e}):void 0,b=`lit$${(Math.random()+"").slice(9)}$`,f="?"+b,y=`<${f}>`,E=document,w=(e="")=>E.createComment(e),S=e=>null===e||"object"!=typeof e&&"function"!=typeof e,P=Array.isArray,k=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,C=/-->/g,x=/>/g,N=RegExp(">|[ \t\n\f\r](?:([^\\s\"'>=/]+)([ \t\n\f\r]*=[ \t\n\f\r]*(?:[^ \t\n\f\r\"'`<>=]|(\"|')|))|$)","g"),A=/'/g,L=/"/g,$=/^(?:script|style|textarea|title)$/i,T=(e=>(t,...i)=>({_$litType$:e,strings:t,values:i}))(1),M=Symbol.for("lit-noChange"),O=Symbol.for("lit-nothing"),D=new WeakMap,H=E.createTreeWalker(E,129,null,!1),I=(e,t)=>{const i=e.length-1,n=[];let s,r=2===t?"<svg>":"",o=k;for(let t=0;t<i;t++){const i=e[t];let a,l,u=-1,c=0;for(;c<i.length&&(o.lastIndex=c,l=o.exec(i),null!==l);)c=o.lastIndex,o===k?"!--"===l[1]?o=C:void 0!==l[1]?o=x:void 0!==l[2]?($.test(l[2])&&(s=RegExp("</"+l[2],"g")),o=N):void 0!==l[3]&&(o=N):o===N?">"===l[0]?(o=null!=s?s:k,u=-1):void 0===l[1]?u=-2:(u=o.lastIndex-l[2].length,a=l[1],o=void 0===l[3]?N:'"'===l[3]?L:A):o===L||o===A?o=N:o===C||o===x?o=k:(o=N,s=void 0);const h=o===N&&e[t+1].startsWith("/>")?" ":"";r+=o===k?i+y:u>=0?(n.push(a),i.slice(0,u)+"$lit$"+i.slice(u)+b+h):i+b+(-2===u?(n.push(void 0),t):h)}const a=r+(e[i]||"<?>")+(2===t?"</svg>":"");if(!Array.isArray(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==v?v.createHTML(a):a,n]};class _{constructor({strings:e,_$litType$:t},i){let n;this.parts=[];let s=0,r=0;const o=e.length-1,a=this.parts,[l,u]=I(e,t);if(this.el=_.createElement(l,i),H.currentNode=this.el.content,2===t){const e=this.el.content,t=e.firstChild;t.remove(),e.append(...t.childNodes)}for(;null!==(n=H.nextNode())&&a.length<o;){if(1===n.nodeType){if(n.hasAttributes()){const e=[];for(const t of n.getAttributeNames())if(t.endsWith("$lit$")||t.startsWith(b)){const i=u[r++];if(e.push(t),void 0!==i){const e=n.getAttribute(i.toLowerCase()+"$lit$").split(b),t=/([.?@])?(.*)/.exec(i);a.push({type:1,index:s,name:t[2],strings:e,ctor:"."===t[1]?j:"?"===t[1]?z:"@"===t[1]?U:F})}else a.push({type:6,index:s})}for(const t of e)n.removeAttribute(t)}if($.test(n.tagName)){const e=n.textContent.split(b),t=e.length-1;if(t>0){n.textContent=g?g.emptyScript:"";for(let i=0;i<t;i++)n.append(e[i],w()),H.nextNode(),a.push({type:2,index:++s});n.append(e[t],w())}}}else if(8===n.nodeType)if(n.data===f)a.push({type:2,index:s});else{let e=-1;for(;-1!==(e=n.data.indexOf(b,e+1));)a.push({type:7,index:s}),e+=b.length-1}s++}}static createElement(e,t){const i=E.createElement("template");return i.innerHTML=e,i}}function B(e,t,i=e,n){var s,r,o,a;if(t===M)return t;let l=void 0!==n?null===(s=i._$Cl)||void 0===s?void 0:s[n]:i._$Cu;const u=S(t)?void 0:t._$litDirective$;return(null==l?void 0:l.constructor)!==u&&(null===(r=null==l?void 0:l._$AO)||void 0===r||r.call(l,!1),void 0===u?l=void 0:(l=new u(e),l._$AT(e,i,n)),void 0!==n?(null!==(o=(a=i)._$Cl)&&void 0!==o?o:a._$Cl=[])[n]=l:i._$Cu=l),void 0!==l&&(t=B(e,l._$AS(e,t.values),l,n)),t}class R{constructor(e,t){this.v=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}p(e){var t;const{el:{content:i},parts:n}=this._$AD,s=(null!==(t=null==e?void 0:e.creationScope)&&void 0!==t?t:E).importNode(i,!0);H.currentNode=s;let r=H.nextNode(),o=0,a=0,l=n[0];for(;void 0!==l;){if(o===l.index){let t;2===l.type?t=new G(r,r.nextSibling,this,e):1===l.type?t=new l.ctor(r,l.name,l.strings,this,e):6===l.type&&(t=new K(r,this,e)),this.v.push(t),l=n[++a]}o!==(null==l?void 0:l.index)&&(r=H.nextNode(),o++)}return s}m(e){let t=0;for(const i of this.v)void 0!==i&&(void 0!==i.strings?(i._$AI(e,i,t),t+=i.strings.length-2):i._$AI(e[t])),t++}}class G{constructor(e,t,i,n){var s;this.type=2,this._$AH=O,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=i,this.options=n,this._$C_=null===(s=null==n?void 0:n.isConnected)||void 0===s||s}get _$AU(){var e,t;return null!==(t=null===(e=this._$AM)||void 0===e?void 0:e._$AU)&&void 0!==t?t:this._$C_}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=B(this,e,t),S(e)?e===O||null==e||""===e?(this._$AH!==O&&this._$AR(),this._$AH=O):e!==this._$AH&&e!==M&&this.T(e):void 0!==e._$litType$?this.$(e):void 0!==e.nodeType?this.k(e):(e=>P(e)||"function"==typeof(null==e?void 0:e[Symbol.iterator]))(e)?this.S(e):this.T(e)}j(e,t=this._$AB){return this._$AA.parentNode.insertBefore(e,t)}k(e){this._$AH!==e&&(this._$AR(),this._$AH=this.j(e))}T(e){this._$AH!==O&&S(this._$AH)?this._$AA.nextSibling.data=e:this.k(E.createTextNode(e)),this._$AH=e}$(e){var t;const{values:i,_$litType$:n}=e,s="number"==typeof n?this._$AC(e):(void 0===n.el&&(n.el=_.createElement(n.h,this.options)),n);if((null===(t=this._$AH)||void 0===t?void 0:t._$AD)===s)this._$AH.m(i);else{const e=new R(s,this),t=e.p(this.options);e.m(i),this.k(t),this._$AH=e}}_$AC(e){let t=D.get(e.strings);return void 0===t&&D.set(e.strings,t=new _(e)),t}S(e){P(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let i,n=0;for(const s of e)n===t.length?t.push(i=new G(this.j(w()),this.j(w()),this,this.options)):i=t[n],i._$AI(s),n++;n<t.length&&(this._$AR(i&&i._$AB.nextSibling,n),t.length=n)}_$AR(e=this._$AA.nextSibling,t){var i;for(null===(i=this._$AP)||void 0===i||i.call(this,!1,!0,t);e&&e!==this._$AB;){const t=e.nextSibling;e.remove(),e=t}}setConnected(e){var t;void 0===this._$AM&&(this._$C_=e,null===(t=this._$AP)||void 0===t||t.call(this,e))}}class F{constructor(e,t,i,n,s){this.type=1,this._$AH=O,this._$AN=void 0,this.element=e,this.name=t,this._$AM=n,this.options=s,i.length>2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=O}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(e,t=this,i,n){const s=this.strings;let r=!1;if(void 0===s)e=B(this,e,t,0),r=!S(e)||e!==this._$AH&&e!==M,r&&(this._$AH=e);else{const n=e;let o,a;for(e=s[0],o=0;o<s.length-1;o++)a=B(this,n[i+o],t,o),a===M&&(a=this._$AH[o]),r||(r=!S(a)||a!==this._$AH[o]),a===O?e=O:e!==O&&(e+=(null!=a?a:"")+s[o+1]),this._$AH[o]=a}r&&!n&&this.P(e)}P(e){e===O?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,null!=e?e:"")}}class j extends F{constructor(){super(...arguments),this.type=3}P(e){this.element[this.name]=e===O?void 0:e}}const V=g?g.emptyScript:"";class z extends F{constructor(){super(...arguments),this.type=4}P(e){e&&e!==O?this.element.setAttribute(this.name,V):this.element.removeAttribute(this.name)}}class U extends F{constructor(e,t,i,n,s){super(e,t,i,n,s),this.type=5}_$AI(e,t=this){var i;if((e=null!==(i=B(this,e,t,0))&&void 0!==i?i:O)===M)return;const n=this._$AH,s=e===O&&n!==O||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,r=e!==O&&(n===O||s);s&&this.element.removeEventListener(this.name,this,n),r&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var t,i;"function"==typeof this._$AH?this._$AH.call(null!==(i=null===(t=this.options)||void 0===t?void 0:t.host)&&void 0!==i?i:this.element,e):this._$AH.handleEvent(e)}}class K{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){B(this,e)}}const W=window.litHtmlPolyfillSupport;
|
||
/**
|
||
* @license
|
||
* Copyright 2017 Google LLC
|
||
* SPDX-License-Identifier: BSD-3-Clause
|
||
*/
|
||
var X,q;null==W||W(_,G),(null!==(m=globalThis.litHtmlVersions)&&void 0!==m?m:globalThis.litHtmlVersions=[]).push("2.2.7");class Y extends p{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var e,t;const i=super.createRenderRoot();return null!==(e=(t=this.renderOptions).renderBefore)&&void 0!==e||(t.renderBefore=i.firstChild),i}update(e){const t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=((e,t,i)=>{var n,s;const r=null!==(n=null==i?void 0:i.renderBefore)&&void 0!==n?n:t;let o=r._$litPart$;if(void 0===o){const e=null!==(s=null==i?void 0:i.renderBefore)&&void 0!==s?s:null;r._$litPart$=o=new G(t.insertBefore(w(),e),e,void 0,null!=i?i:{})}return o._$AI(e),o})(t,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),null===(e=this._$Do)||void 0===e||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),null===(e=this._$Do)||void 0===e||e.setConnected(!1)}render(){return M}}Y.finalized=!0,Y._$litElement$=!0,null===(X=globalThis.litElementHydrateSupport)||void 0===X||X.call(globalThis,{LitElement:Y});const Z=globalThis.litElementPolyfillSupport;null==Z||Z({LitElement:Y}),(null!==(q=globalThis.litElementVersions)&&void 0!==q?q:globalThis.litElementVersions=[]).push("3.2.2");class J{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 deleteNodesKeyboardKey="Delete";static dragGeneralEventName="ueb-drag-general";static dragEventName="ueb-drag";static editTextEventName={begin:"ueb-edit-text-begin",end:"ueb-edit-text-end"};static enableZoomIn=["LeftControl","RightControl"];static expandGridSize=400;static focusEventName={begin:"blueprint-focus",end:"blueprint-unfocus"};static fontSize=s``;static gridAxisLineColor=s``;static gridExpandThreshold=.25;static gridLineColor=s``;static gridLineWidth=1;static gridSet=8;static gridSetLineColor=s``;static gridShrinkThreshold=4;static gridSize=16;static hexColorRegex=/^\s*#(?<r>[0-9a-fA-F]{2})(?<g>[0-9a-fA-F]{2})(?<b>[0-9a-fA-F]{2})([0-9a-fA-F]{2})?|#(?<rs>[0-9a-fA-F])(?<gs>[0-9a-fA-F])(?<bs>[0-9a-fA-F])\s*$/;static keysSeparator="+";static linkCurveHeight=15;static linkCurveWidth=80;static linkMinWidth=100;static linkRightSVGPath=(e,t,i)=>{let n=100-e;return`M ${e} 0 C ${t} 0, ${i} 0, 50 50 S ${n-t+e} 100, ${n} 100`};static maxZoom=7;static minZoom=-12;static mouseWheelFactor=.2;static nodeDeleteEventName="ueb-node-delete";static nodeDragGeneralEventName="ueb-node-drag-general";static nodeDragEventName="ueb-node-drag";static nodeName=(e,t)=>`${e}_${t}`;static nodeRadius=8;static nodeReflowEventName="ueb-node-reflow";static nodeType={forEachLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForEachLoopWithBreak",forLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ForLoop",callFunction:"/Script/BlueprintGraph.K2Node_CallFunction",ifThenElse:"/Script/BlueprintGraph.K2Node_IfThenElse",knot:"/Script/BlueprintGraph.K2Node_Knot",macro:"/Script/BlueprintGraph.K2Node_MacroInstance",reverseForEachLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:ReverseForEachLoop",whileLoop:"/Engine/EditorBlueprintResources/StandardMacros.StandardMacros:WhileLoop"};static pinColor={"/Script/CoreUObject.LinearColor":s``,"/Script/CoreUObject.Rotator":s``,"/Script/CoreUObject.Transform":s``,"/Script/CoreUObject.Vector":s``,"/Script/Engine.Actor":s``,bool:s``,default:s``,exec:s``,int:s``,name:s``,real:s``,string:s``,wildcard:s``};static selectAllKeyboardKey="(bCtrl=True,Key=A)";static distanceThreshold=5;static trackingMouseEventName={begin:"ueb-tracking-mouse-begin",end:"ueb-tracking-mouse-end"};static windowApplyEventName="ueb-window-apply";static windowCancelEventName="ueb-window-cancel";static windowCloseEventName="ueb-window-close";static ModifierKeys=["Ctrl","Shift","Alt","Meta"];static Keys={Backspace:"Backspace",Tab:"Tab",LeftControl:"ControlLeft",RightControl:"ControlRight",LeftShift:"ShiftLeft",RightShift:"ShiftRight",LeftAlt:"AltLeft",RightAlt:"AltRight",Enter:"Enter",Pause:"Pause",CapsLock:"CapsLock",Escape:"Escape",Space:"Space",PageUp:"PageUp",PageDown:"PageDown",End:"End",Home:"Home",ArrowLeft:"Left",ArrowUp:"Up",ArrowRight:"Right",ArrowDown:"Down",PrintScreen:"PrintScreen",Insert:"Insert",Delete:"Delete",Zero:"Digit0",One:"Digit1",Two:"Digit2",Three:"Digit3",Four:"Digit4",Five:"Digit5",Six:"Digit6",Seven:"Digit7",Eight:"Digit8",Nine:"Digit9",A:"KeyA",B:"KeyB",C:"KeyC",D:"KeyD",E:"KeyE",F:"KeyF",G:"KeyG",H:"KeyH",I:"KeyI",K:"KeyK",L:"KeyL",M:"KeyM",N:"KeyN",O:"KeyO",P:"KeyP",Q:"KeyQ",R:"KeyR",S:"KeyS",T:"KeyT",U:"KeyU",V:"KeyV",W:"KeyW",X:"KeyX",Y:"KeyY",Z:"KeyZ",NumPadZero:"Numpad0",NumPadOne:"Numpad1",NumPadTwo:"Numpad2",NumPadThree:"Numpad3",NumPadFour:"Numpad4",NumPadFive:"Numpad5",NumPadSix:"Numpad6",NumPadSeven:"Numpad7",NumPadEight:"Numpad8",NumPadNine:"Numpad9",Multiply:"NumpadMultiply",Add:"NumpadAdd",Subtract:"NumpadSubtract",Decimal:"NumpadDecimal",Divide:"NumpadDivide",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F11",F12:"F12",NumLock:"NumLock",ScrollLock:"ScrollLock"}}class Q{#e;get target(){return this.#e}#t;get blueprint(){return this.#t}options;constructor(e,t,i={}){i.consumeEvent??=!1,i.listenOnFocus??=!1,i.unlistenOnTextEdit??=!1,this.#e=e,this.#t=t,this.options=i;let n=this;this.listenHandler=e=>n.listenEvents(),this.unlistenHandler=e=>n.unlistenEvents(),this.options.listenOnFocus&&(this.blueprint.addEventListener(J.focusEventName.begin,this.listenHandler),this.blueprint.addEventListener(J.focusEventName.end,this.unlistenHandler)),this.options.unlistenOnTextEdit&&(this.blueprint.addEventListener(J.editTextEventName.begin,this.unlistenHandler),this.blueprint.addEventListener(J.editTextEventName.end,this.listenHandler))}unlistenDOMElement(){this.unlistenEvents(),this.blueprint.removeEventListener(J.focusEventName.begin,this.listenHandler),this.blueprint.removeEventListener(J.focusEventName.end,this.unlistenHandler),this.blueprint.removeEventListener(J.editTextEventName.begin,this.unlistenHandler),this.blueprint.removeEventListener(J.editTextEventName.end,this.listenHandler)}listenEvents(){}unlistenEvents(){}}class ee{#i;constructor(e){this.#i=e}calculate(e){return this.#i(e)}}class te{static#n=new Map;static registerSerializer(e,t){te.#n.set(e,t)}static getSerializer(e){return te.#n.get(e)}}class ie{#s;get type(){return this.#s}set type(e){this.#s=e}#r=!0;get showDefault(){return this.#r}set showDefault(e){this.#r=e}#o;get value(){return this.#o}set value(e){this.#o=e}#a;get serialized(){return this.#a}set serialized(e){this.#a=e}#l;get ignored(){return this.#l}set ignored(e){this.#l=e}static sanitize(e,t){return void 0===t&&(t=e?.constructor),t&&!(e?.constructor===t||e instanceof t)&&(e=new t(e)),(e instanceof Boolean||e instanceof Number||e instanceof String)&&(e=e.valueOf()),e}constructor(e,t=!0,i,n=!1,s=!1){void 0===i&&(i=e instanceof Array?[]:n?"":()=>ie.sanitize(new e)),this.#s=e,this.#r=t,this.#o=i,this.#a=n,this.#l=s}}class ne{static emptyObj={};static booleanConverter={fromAttribute:(e,t)=>{},toAttribute:(e,t)=>!0===e?"true":!1===e?"false":""};static sigmoid(e,t=1.7){return 1/(1+e/(1-e)**-t)}static clamp(e,t,i){return Math.min(Math.max(e,t),i)}static getScale(e){const t=getComputedStyle(e).getPropertyValue("--ueb-scale");return""!=t?parseFloat(t):1}static minDecimals(e,t=1){const i=e*10**t;return Math.abs(i%1)>Number.EPSILON?e.toString():e.toFixed(t)}static roundDecimals(e,t=1){const i=10**t;return Math.round(e*i)/i}static convertLocation(e,t){const i=1/ne.getScale(t),n=t.getBoundingClientRect();return[Math.round((e[0]-n.x)*i),Math.round((e[1]-n.y)*i)]}static isSerialized(e,t,i=ne.objectGet(e.constructor.attributes,t)){return i instanceof ee?ne.isSerialized(e,t,i.calculate(e)):i instanceof ie&&(!!i.serialized||ne.isSerialized(e,t,i.type))}static objectGet(e,t,i){if(void 0!==e){if(!(t instanceof Array))throw new TypeError("Expected keys to be an array.");return 0!=t.length&&t[0]in e&&void 0!==e[t[0]]?1==t.length?e[t[0]]:ne.objectGet(e[t[0]],t.slice(1),i):i}}static objectSet(e,t,i,n=!1,s=Object){if(!(t instanceof Array))throw new TypeError("Expected keys to be an array.");if(1==t.length){if(n||t[0]in e||void 0===e[t[0]])return e[t[0]]=i,!0}else if(t.length>0)return!n||e[t[0]]instanceof Object||(e[t[0]]=new s),ne.objectSet(e[t[0]],t.slice(1),i,n,s);return!1}static equals(e,t){return(e=ie.sanitize(e))===(t=ie.sanitize(t))||(e instanceof Array&&t instanceof Array?e.length==t.length&&!e.find(((e,i)=>!ne.equals(e,t[i]))):void 0)}static getType(e){return null===e?null:e instanceof ie?ne.getType(e.type):e instanceof Function?e:e?.constructor}static snapToGrid(e,t){return 1===t?e:[t*Math.round(e[0]/t),t*Math.round(e[1]/t)]}static mergeArrays(e=[],t=[]){let i=[];for(let n=0;n<t.length;++n)for(let s=0;s<e.length;++s)if(e[s]==t[n]){i.push(...e.splice(0,s),...t.splice(0,n),...e.splice(0,1)),n=0,s=0,t.shift();break}return[...new Set(i.concat(...e,...t))]}static escapeString(e,t=!1){return e.replaceAll('"','\\"').replaceAll("\n","\\n")}static unescapeString(e,t=!1){return e.replaceAll('\\"','"').replaceAll("\\n","\n")}static clearHTMLWhitespace(e){return e.replaceAll(" "," ").replaceAll("<br>","\n").replaceAll(/(\<!--.*?\-->)/g,"")}static formatStringName(e){return e.trim().replace(/^b/,"").replaceAll(/(?<=[a-z])(?=[A-Z])|_|\s+/g," ")}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,"-").toLocaleLowerCase()}static printLinearColor(e){return`${Math.round(255*e.R.valueOf())}, ${Math.round(255*e.G.valueOf())}, ${Math.round(255*e.B.valueOf())}`}static getPolarCoordinates([e,t],i=!1){let n=Math.atan2(t,e);return i&&n<0&&(n=2*Math.PI+n),[Math.sqrt(e*e+t*t),n]}static getCartesianCoordinates([e,t]){return[e*Math.cos(t),e*Math.sin(t)]}static range(e,t,i=1){return Array.from({length:Math.ceil((t-e)/i)},((t,n)=>e+n*i))}}class se extends class{#u=new Map;subscribe(e,t){let i=this.#u;if(i.has(e)){let n=i.get(e);if(n.includes(t))return!1;n.push(t)}else{let n=!1,s=Object.getOwnPropertyDescriptor(this,e);if(!s&&(n=!0,s=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(this),e)??{},!s))return!1;i.set(e,[t]);const r="value"in s,o="set"in s;if(!r&&!o)throw new Error(`Property ${e} is not a value or a setter`);const a=Symbol.for(e+"Storage"),l=Symbol.for(e+"ValInfo");Object.defineProperties(n?Object.getPrototypeOf(this):this,{[a]:{configurable:!0,enumerable:!1,...r?{value:this[e],writable:!0}:{get:s.get,set:s.set}},[l]:{configurable:!0,enumerable:!1,value:[n,r]},[e]:{configurable:!0,...r&&{get(){return this[a]}},set(t){this[a]=t,i.get(e).forEach((t=>{t(this[e])}))}}})}return!0}unsubscribe(e,t){let i=this.#u.get(e);if(!i?.includes(t))return!1;if(i.splice(i.indexOf(t),1),0==i.length){const t=Symbol.for(e+"Storage"),i=Symbol.for(e+"ValInfo"),n=this[i][0];this[i][1],Object.defineProperty(n?Object.getPrototypeOf(this):this,e,Object.getOwnPropertyDescriptor(n?Object.getPrototypeOf(this):this,t)),delete this[i],delete this[t]}return!0}}{static attributes={};constructor(e={}){super();const t=(e,i,n={},s="")=>{const r=Object.getOwnPropertyNames(n);for(let o of ne.mergeArrays(Object.getOwnPropertyNames(i),r)){let a=ne.objectGet(n,[o]),l=i[o],u=ne.getType(l);if(l instanceof ee&&(l=l.calculate(this),u=ne.getType(l)),null!=l&&l===u&&(l=new u),o in i?!(r.length>0)||o in n||void 0===l||l instanceof ie&&(!l.showDefault||l.ignored)||console.warn(`${this.constructor.name} will add attribute ${s}${o} not defined in the serialized data`):console.warn(`Attribute ${s}${o} in the serialized data is not defined in ${this.constructor.name}.attributes`),u!==Object)if(void 0===a){if(l instanceof ie){if(!l.showDefault){e[o]=void 0;continue}l.serialized?l="":(u=l.type,l=l.value,l instanceof Function&&(l=l()))}l instanceof Array&&(l=[]),e[o]=ie.sanitize(l,u)}else a?.constructor===String&&l instanceof ie&&l.serialized&&l.type!==String&&(a=te.getSerializer(l.type).deserialize(a)),e[o]=ie.sanitize(a,ne.getType(l));else e[o]={},t(e[o],i[o],n[o],o+".")}},i=this.constructor.attributes;e.constructor!==Object&&1===Object.getOwnPropertyNames(i).length&&(e={[Object.getOwnPropertyNames(i)[0]]:e}),t(this,i,e)}}class re extends se{static attributes={type:String,path:String};constructor(e={}){e.constructor!==Object&&(e={path:e}),super(e),this.type,this.path}}class oe extends se{static attributes={MemberParent:re,MemberName:""};constructor(e={}){super(e),this.MemberParent,this.MemberName}}class ae extends se{static attributes={value:String};static generateGuid(e=!0){let t=new Uint32Array(4);!0===e&&crypto.getRandomValues(t);let i="";return t.forEach((e=>{i+=("0".repeat(8)+e.toString(16).toUpperCase()).slice(-8)})),new ae({value:i})}constructor(e){e||(e=ae.generateGuid().value),super(e),this.value}valueOf(){return this.value}toString(){return this.value}}class le extends se{static attributes={value:String};static attributeConverter={fromAttribute:(e,t)=>new le(e),toAttribute:(e,t)=>e.toString()};constructor(e={}){super(e),this.value}valueOf(){return this.value}toString(){return this.value}}class ue extends se{static attributes={value:0};constructor(e=0){super(e),this.value=Math.round(this.value)}valueOf(){return this.value}toString(){return this.value.toString()}}class ce extends se{static lookbehind="INVTEXT";static attributes={value:String};constructor(e={}){super(e),this.value}}class he extends se{static attributes={ActionName:"",bShift:!1,bCtrl:!1,bAlt:!1,bCmd:!1,Key:le};constructor(e={}){e.ActionName=e.ActionName??"",e.bShift=e.bShift??!1,e.bCtrl=e.bCtrl??!1,e.bAlt=e.bAlt??!1,e.bCmd=e.bCmd??!1,super(e),this.ActionName,this.bShift,this.bCtrl,this.bAlt,this.bCmd,this.Key}}class de extends se{static attributes={value:0};constructor(e=0){super(e),this.value=ne.clamp(this.value,0,1)}valueOf(){return this.value}toString(){return this.value.toFixed(6)}}class pe extends se{static attributes={R:de,G:de,B:de,A:new ie(de,!0,(()=>new de(1)),!1,!0),H:new ie(de,!0,void 0,!1,!0),S:new ie(de,!0,void 0,!1,!0),V:new ie(de,!0,void 0,!1,!0)};static linearToSRGB(e){return e<=0?0:e>=1?1:e<.0031308?12.92*e:1.055*Math.pow(e,1/2.4)-.055}static sRGBtoLinear(e){return e<=0?0:e>=1?1:e<.04045?e/12.92:Math.pow((e+.055)/1.055,2.4)}constructor(e){super(e),this.R,this.G,this.B,this.A,this.H,this.S,this.V,this.#c()}#c(){const e=this.R.value,t=this.G.value,i=this.B.value;if(!(Math.abs(e-t)>Number.EPSILON||Math.abs(e-i)>Number.EPSILON||Math.abs(t-i)>Number.EPSILON))return void(this.V.value=0);const n=Math.max(e,t,i),s=Math.min(e,t,i),r=n-s;let o;switch(n){case s:o=0;break;case e:o=(t-i)/r+(t<i?6:0);break;case t:o=(i-e)/r+2;break;case i:o=(e-t)/r+4}o/=6,this.H.value=o,this.S.value=0==n?0:r/n,this.V.value=n}setFromRGBA(e,t,i,n=1){this.R.value=e,this.G.value=t,this.B.value=i,this.A.value=n,this.#c()}setFromHSVA(e,t,i,n=1){const s=Math.floor(6*e),r=6*e-s,o=i*(1-t),a=[i,i*(1-r*t),o,o,i*(1-(1-r)*t),i],[l,u,c]=[a[s%6],a[(s+4)%6],a[(s+2)%6]];this.R.value=l,this.G.value=u,this.B.value=c,this.A.value=n,this.H.value=e,this.S.value=t,this.V.value=i}setFromWheelLocation([e,t],i,n){const[s,r]=ne.getPolarCoordinates([e,t],!0);this.setFromHSVA(1-r/(2*Math.PI),s,i,n)}toRGBA(){return[Math.round(255*this.R.value),Math.round(255*this.G.value),Math.round(255*this.B.value),Math.round(255*this.A.value)]}toSRGBA(){return[Math.round(255*pe.linearToSRGB(this.R.value)),Math.round(255*pe.linearToSRGB(this.G.value)),Math.round(255*pe.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(this.R.value<<24)+(this.G.value<<16)+(this.B.value<<8)+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.#c()}setFromSRGBANumber(e){this.A.value=(255&e)/255,this.B.value=pe.sRGBtoLinear((e>>8&255)/255),this.G.value=pe.sRGBtoLinear((e>>16&255)/255),this.R.value=pe.sRGBtoLinear((e>>24&255)/255),this.#c()}toString(){return ne.printLinearColor(this)}}class me extends se{static lookbehind="NSLOCTEXT";static attributes={namespace:String,key:String,value:String};constructor(e={}){super(e),this.namespace,this.key,this.value}toString(){if(0===this.value.length)return this.value;let e=this.value;return e.charAt(0).toLocaleUpperCase()+e.slice(1).toLocaleLowerCase()}}class ge extends se{static attributes={MacroGraph:re,GraphBlueprint:re,GraphGuid:ae};constructor(e={}){super(e),this.MacroGraph,this.GraphBlueprint,this.GuidEntity}getMacroName(){const e=this.MacroGraph.path.search(":");return this.MacroGraph.path.substring(e+1)}}class ve extends se{static attributes={value:String};constructor(e={}){super(e),this.value}valueOf(){return this.value}toString(){return this.value}}class be extends se{static attributes={objectName:ve,pinGuid:ae};constructor(e={}){super(e),this.objectName,this.pinGuid}}class fe extends se{static attributes={R:Number,P:Number,Y:Number};constructor(e={}){super(e),this.R,this.P,this.Y}}class ye extends fe{}class Ee extends se{static attributes={X:Number,Y:Number,Z:Number};constructor(e={}){super(e),this.X,this.Y,this.Z}}class we extends Ee{}class Se extends se{static#h={"/Script/CoreUObject.LinearColor":pe,"/Script/CoreUObject.Rotator":fe,"/Script/CoreUObject.Vector":Ee,bool:Boolean,exec:String,int:ue,name:String,real:Number,string:String};static#d={"/Script/CoreUObject.Vector":we,"/Script/CoreUObject.Rotator":ye};static lookbehind="Pin";static attributes={PinId:ae,PinName:"",PinFriendlyName:new ie(me,!1,null),PinToolTip:new ie(String,!1,""),Direction:new ie(String,!1,""),PinType:{PinCategory:"",PinSubCategory:"",PinSubCategoryObject:re,PinSubCategoryMemberReference:null,PinValueType:null,ContainerType:re,bIsReference:!1,bIsConst:!1,bIsWeakPointer:!1,bIsUObjectWrapper:!1,bSerializeAsSinglePrecisionFloat:!1},LinkedTo:new ie([be],!1),DefaultValue:new ee((e=>new ie(Se.getEntityType(e.getType(),!0)??String,!1,void 0,!0))),AutogeneratedDefaultValue:new ie(String,!1),DefaultObject:new ie(re,!1,null),PersistentGuid:ae,bHidden:!1,bNotConnectable:!1,bDefaultValueIsReadOnly:!1,bDefaultValueIsIgnored:!1,bAdvancedView:!1,bOrphanedPin:!1};static getEntityType(e,t=!1){const[i,n]=[this.#h[e],this.#d[e]];return t&&void 0!==n?n:i}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}getType(){return"struct"==this.PinType.PinCategory||"object"==this.PinType.PinCategory?this.PinType.PinSubCategoryObject.path:this.PinType.PinCategory}copyTypeFrom(e){this.PinType.PinCategory=e.PinType.PinCategory,this.PinType.PinSubCategory=e.PinType.PinSubCategory,this.PinType.PinSubCategoryObject=e.PinType.PinSubCategoryObject,this.PinType.PinSubCategoryMemberReference=e.PinType.PinSubCategoryMemberReference,this.PinType.PinValueType=e.PinType.PinValueType,this.PinType.ContainerType=e.PinType.ContainerType,this.PinType.bIsReference=e.PinType.bIsReference,this.PinType.bIsConst=e.PinType.bIsConst,this.PinType.bIsWeakPointer=e.PinType.bIsWeakPointer,this.PinType.bIsUObjectWrapper=e.PinType.bIsUObjectWrapper,this.PinType.bSerializeAsSinglePrecisionFloat=e.PinType.bSerializeAsSinglePrecisionFloat}getDefaultValue(){return this.DefaultValue}isHidden(){return this.bHidden}isInput(){return!this.bHidden&&"EGPD_Output"!=this.Direction}isOutput(){return!this.bHidden&&"EGPD_Output"==this.Direction}isLinked(){return this.LinkedTo?.length>0??!1}linkTo(e,t){this.LinkedTo;const i=this.LinkedTo?.find((i=>i.objectName.toString()==e&&i.pinGuid.valueOf()==t.PinId.valueOf()));return!i&&((this.LinkedTo??(this.LinkedTo=[])).push(new be({objectName:e,pinGuid:t.PinId})),!0)}unlinkFrom(e,t){const i=this.LinkedTo?.findIndex((i=>i.objectName.toString()==e&&i.pinGuid.valueOf()==t.PinId.valueOf()));return i>=0&&(1==this.LinkedTo.length?this.LinkedTo=void 0:this.LinkedTo.splice(i,1),!0)}getSubCategory(){return this.PinType.PinSubCategoryObject.path}}class Pe extends se{static attributes={MemberName:String,MemberGuid:ae,bSelfContext:!1}}class ke extends se{static attributes={Class:re,Name:"",bIsPureFunc:new ie(Boolean,!1,!1),VariableReference:new ie(Pe,!1,null),FunctionReference:new ie(oe,!1,null),EventReference:new ie(oe,!1,null),TargetType:new ie(re,!1,null),MacroGraphReference:new ie(ge,!1,null),NodePosX:ue,NodePosY:ue,AdvancedPinDisplay:new ie(le,!1,null),EnabledState:new ie(le,!1,null),NodeGuid:ae,ErrorType:new ie(ue,!1),ErrorMsg:new ie(String,!1,""),CustomProperties:[Se]};static nameRegex=/(\w+)(?:_(\d+))?/;constructor(e={}){super(e),this.Class,this.Name,this.bIsPureFunc,this.VariableReference,this.FunctionReference,this.EventReference,this.TargetType,this.MacroGraphReference,this.NodePosX,this.NodePosY,this.AdvancedPinDisplay,this.EnabledState,this.NodeGuid,this.ErrorType,this.ErrorMsg,this.CustomProperties}getClass(){return this.Class.path}getType(){let e=this.getClass();return e===J.nodeType.macro?this.MacroGraphReference.MacroGraph.path:e}getObjectName(e=!1){return e?this.getNameAndCounter()[0]:this.Name}getNameAndCounter(){const e=this.getObjectName(!1).match(ke.nameRegex);let t="",i=null;return e?(e.length>1&&(t=e[1]),e.length>2&&(i=parseInt(e[2])),[t,i]):["",0]}getDisplayName(){let e="";switch(this.getType()){case J.nodeType.callFunction:e=this.FunctionReference.MemberName;break;case J.nodeType.ifThenElse:e="Branch";break;case J.nodeType.forEachLoop:e="For Each Loop with Break";break;case J.nodeType.reverseForEachLoop:e="Reverse for Each Loop";break;default:e=this.getClass()===J.nodeType.macro?this.MacroGraphReference.getMacroName():this.getNameAndCounter()[0]}return ne.formatStringName(e)}getCounter(){return this.getNameAndCounter()[1]}}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function Ce(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var xe={exports:{}};"undefined"!=typeof self&&self;var Ne=Ce(xe.exports=function(e){var t={};function i(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,i),s.l=!0,s.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:n})},i.r=function(e){Object.defineProperty(e,"__esModule",{value:!0})},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=0)}([function(e,t,i){function n(e){if(!(this instanceof n))return new n(e);this._=e}var s=n.prototype;function r(e,t){for(var i=0;i<e;i++)t(i)}function o(e,t,i){return function(e,t){r(t.length,(function(i){e(t[i],i,t)}))}((function(i,n,s){t=e(t,i,n,s)}),i),t}function a(e,t){return o((function(t,i,n,s){return t.concat([e(i,n,s)])}),[],t)}function l(e,t){var i={v:0,buf:t};return r(e,(function(){var e;i={v:i.v<<1|(e=i.buf,e[0]>>7),buf:function(e){var t=o((function(e,t,i,n){return e.concat(i===n.length-1?Buffer.from([t,0]).readUInt16BE(0):n.readUInt16BE(i))}),[],e);return Buffer.from(a((function(e){return(e<<1&65535)>>8}),t))}(i.buf)}})),i}function u(){return"undefined"!=typeof Buffer}function c(){if(!u())throw new Error("Buffer global does not exist; please use webpack if you need to parse Buffers in the browser.")}function h(e){c();var t=o((function(e,t){return e+t}),0,e);if(t%8!=0)throw new Error("The bits ["+e.join(", ")+"] add up to "+t+" which is not an even number of bytes; the total should be divisible by 8");var i,s=t/8,r=(i=function(e){return e>48},o((function(e,t){return e||(i(t)?t:e)}),null,e));if(r)throw new Error(r+" bit range requested exceeds 48 bit (6 byte) Number max.");return new n((function(t,i){var n=s+i;return n>t.length?S(i,s.toString()+" bytes"):w(n,o((function(e,t){var i=l(t,e.buf);return{coll:e.coll.concat(i.v),buf:i.buf}}),{coll:[],buf:t.slice(i,n)},e).coll)}))}function d(e,t){return new n((function(i,n){return c(),n+t>i.length?S(n,t+" bytes for "+e):w(n+t,i.slice(n,n+t))}))}function p(e,t){if("number"!=typeof(i=t)||Math.floor(i)!==i||t<0||t>6)throw new Error(e+" requires integer length in range [0, 6].");var i}function m(e){return p("uintBE",e),d("uintBE("+e+")",e).map((function(t){return t.readUIntBE(0,e)}))}function g(e){return p("uintLE",e),d("uintLE("+e+")",e).map((function(t){return t.readUIntLE(0,e)}))}function v(e){return p("intBE",e),d("intBE("+e+")",e).map((function(t){return t.readIntBE(0,e)}))}function b(e){return p("intLE",e),d("intLE("+e+")",e).map((function(t){return t.readIntLE(0,e)}))}function f(e){return e instanceof n}function y(e){return"[object Array]"==={}.toString.call(e)}function E(e){return u()&&Buffer.isBuffer(e)}function w(e,t){return{status:!0,index:e,value:t,furthest:-1,expected:[]}}function S(e,t){return y(t)||(t=[t]),{status:!1,index:-1,value:null,furthest:e,expected:t}}function P(e,t){if(!t)return e;if(e.furthest>t.furthest)return e;var i=e.furthest===t.furthest?function(e,t){if(function(){if(void 0!==n._supportsSet)return n._supportsSet;var e="undefined"!=typeof Set;return n._supportsSet=e,e}()&&Array.from){for(var i=new Set(e),s=0;s<t.length;s++)i.add(t[s]);var r=Array.from(i);return r.sort(),r}for(var o={},a=0;a<e.length;a++)o[e[a]]=!0;for(var l=0;l<t.length;l++)o[t[l]]=!0;var u=[];for(var c in o)({}).hasOwnProperty.call(o,c)&&u.push(c);return u.sort(),u}(e.expected,t.expected):t.expected;return{status:e.status,index:e.index,value:e.value,furthest:t.furthest,expected:i}}var k={};function C(e,t){if(E(e))return{offset:t,line:-1,column:-1};e in k||(k[e]={});for(var i=k[e],n=0,s=0,r=0,o=t;o>=0;){if(o in i){n=i[o].line,0===r&&(r=i[o].lineStart);break}("\n"===e.charAt(o)||"\r"===e.charAt(o)&&"\n"!==e.charAt(o+1))&&(s++,0===r&&(r=o+1)),o--}var a=n+s,l=t-r;return i[t]={line:a,lineStart:r},{offset:t,line:a+1,column:l+1}}function x(e){if(!f(e))throw new Error("not a parser: "+e)}function N(e,t){return"string"==typeof e?e.charAt(t):e[t]}function A(e){if("number"!=typeof e)throw new Error("not a number: "+e)}function L(e){if("function"!=typeof e)throw new Error("not a function: "+e)}function $(e){if("string"!=typeof e)throw new Error("not a string: "+e)}var T=2,M=3,O=8,D=5*O,H=4*O,I=" ";function _(e,t){return new Array(t+1).join(e)}function B(e,t,i){var n=t-e.length;return n<=0?e:_(i,n)+e}function R(e,t,i,n){return{from:e-t>0?e-t:0,to:e+i>n?n:e+i}}function G(e,t){var i,n,s,r,l,u=t.index,c=u.offset,h=1;if(c===e.length)return"Got the end of the input";if(E(e)){var d=c-c%O,p=c-d,m=R(d,D,H+O,e.length),g=a((function(e){return a((function(e){return B(e.toString(16),2,"0")}),e)}),function(e,t){var i=e.length,n=[],s=0;if(i<=t)return[e.slice()];for(var r=0;r<i;r++)n[s]||n.push([]),n[s].push(e[r]),(r+1)%t==0&&s++;return n}(e.slice(m.from,m.to).toJSON().data,O));r=function(e){return 0===e.from&&1===e.to?{from:e.from,to:e.to}:{from:e.from/O,to:Math.floor(e.to/O)}}(m),n=d/O,i=3*p,p>=4&&(i+=1),h=2,s=a((function(e){return e.length<=4?e.join(" "):e.slice(0,4).join(" ")+" "+e.slice(4).join(" ")}),g),(l=(8*(r.to>0?r.to-1:r.to)).toString(16).length)<2&&(l=2)}else{var v=e.split(/\r\n|[\n\r\u2028\u2029]/);i=u.column-1,n=u.line-1,r=R(n,T,M,v.length),s=v.slice(r.from,r.to),l=r.to.toString().length}var b=n-r.from;return E(e)&&(l=(8*(r.to>0?r.to-1:r.to)).toString(16).length)<2&&(l=2),o((function(t,n,s){var o,a=s===b,u=a?"> ":I;return o=E(e)?B((8*(r.from+s)).toString(16),l,"0"):B((r.from+s+1).toString(),l," "),[].concat(t,[u+o+" | "+n],a?[I+_(" ",l)+" | "+B("",i," ")+_("^",h)]:[])}),[],s).join("\n")}function F(e,t){return["\n","-- PARSING FAILED "+_("-",50),"\n\n",G(e,t),"\n\n",(i=t.expected,1===i.length?"Expected:\n\n"+i[0]:"Expected one of the following: \n\n"+i.join(", ")),"\n"].join("");var i}function j(e){return void 0!==e.flags?e.flags:[e.global?"g":"",e.ignoreCase?"i":"",e.multiline?"m":"",e.unicode?"u":"",e.sticky?"y":""].join("")}function V(){for(var e=[].slice.call(arguments),t=e.length,i=0;i<t;i+=1)x(e[i]);return n((function(i,n){for(var s,r=new Array(t),o=0;o<t;o+=1){if(!(s=P(e[o]._(i,n),s)).status)return s;r[o]=s.value,n=s.index}return P(w(n,r),s)}))}function z(){var e=[].slice.call(arguments);if(0===e.length)throw new Error("seqMap needs at least one argument");var t=e.pop();return L(t),V.apply(null,e).map((function(e){return t.apply(null,e)}))}function U(){var e=[].slice.call(arguments),t=e.length;if(0===t)return Z("zero alternates");for(var i=0;i<t;i+=1)x(e[i]);return n((function(t,i){for(var n,s=0;s<e.length;s+=1)if((n=P(e[s]._(t,i),n)).status)return n;return n}))}function K(e,t){return W(e,t).or(Y([]))}function W(e,t){return x(e),x(t),z(e,t.then(e).many(),(function(e,t){return[e].concat(t)}))}function X(e){$(e);var t="'"+e+"'";return n((function(i,n){var s=n+e.length,r=i.slice(n,s);return r===e?w(s,r):S(n,t)}))}function q(e,t){!function(e){if(!(e instanceof RegExp))throw new Error("not a regexp: "+e);for(var t=j(e),i=0;i<t.length;i++){var n=t.charAt(i);if("i"!==n&&"m"!==n&&"u"!==n&&"s"!==n)throw new Error('unsupported regexp flag "'+n+'": '+e)}}(e),arguments.length>=2?A(t):t=0;var i=function(e){return RegExp("^(?:"+e.source+")",j(e))}(e),s=""+e;return n((function(e,n){var r=i.exec(e.slice(n));if(r){if(0<=t&&t<=r.length){var o=r[0],a=r[t];return w(n+o.length,a)}return S(n,"valid match group (0 to "+r.length+") in "+s)}return S(n,s)}))}function Y(e){return n((function(t,i){return w(i,e)}))}function Z(e){return n((function(t,i){return S(i,e)}))}function J(e){if(f(e))return n((function(t,i){var n=e._(t,i);return n.index=i,n.value="",n}));if("string"==typeof e)return J(X(e));if(e instanceof RegExp)return J(q(e));throw new Error("not a string, regexp, or parser: "+e)}function Q(e){return x(e),n((function(t,i){var n=e._(t,i),s=t.slice(i,n.index);return n.status?S(i,'not "'+s+'"'):w(i,null)}))}function ee(e){return L(e),n((function(t,i){var n=N(t,i);return i<t.length&&e(n)?w(i+1,n):S(i,"a character/byte matching "+e)}))}function te(e,t){arguments.length<2&&(t=e,e=void 0);var i=n((function(e,n){return i._=t()._,i._(e,n)}));return e?i.desc(e):i}function ie(){return Z("fantasy-land/empty")}s.parse=function(e){if("string"!=typeof e&&!E(e))throw new Error(".parse must be called with a string or Buffer as its argument");var t,i=this.skip(oe)._(e,0);return t=i.status?{status:!0,value:i.value}:{status:!1,index:C(e,i.furthest),expected:i.expected},delete k[e],t},s.tryParse=function(e){var t=this.parse(e);if(t.status)return t.value;var i=F(e,t),n=new Error(i);throw n.type="ParsimmonError",n.result=t,n},s.assert=function(e,t){return this.chain((function(i){return e(i)?Y(i):Z(t)}))},s.or=function(e){return U(this,e)},s.trim=function(e){return this.wrap(e,e)},s.wrap=function(e,t){return z(e,this,t,(function(e,t){return t}))},s.thru=function(e){return e(this)},s.then=function(e){return x(e),V(this,e).map((function(e){return e[1]}))},s.many=function(){var e=this;return n((function(t,i){for(var n=[],s=void 0;;){if(!(s=P(e._(t,i),s)).status)return P(w(i,n),s);if(i===s.index)throw new Error("infinite loop detected in .many() parser --- calling .many() on a parser which can accept zero characters is usually the cause");i=s.index,n.push(s.value)}}))},s.tieWith=function(e){return $(e),this.map((function(t){if(function(e){if(!y(e))throw new Error("not an array: "+e)}(t),t.length){$(t[0]);for(var i=t[0],n=1;n<t.length;n++)$(t[n]),i+=e+t[n];return i}return""}))},s.tie=function(){return this.tieWith("")},s.times=function(e,t){var i=this;return arguments.length<2&&(t=e),A(e),A(t),n((function(n,s){for(var r=[],o=void 0,a=void 0,l=0;l<e;l+=1){if(a=P(o=i._(n,s),a),!o.status)return a;s=o.index,r.push(o.value)}for(;l<t&&(a=P(o=i._(n,s),a),o.status);l+=1)s=o.index,r.push(o.value);return P(w(s,r),a)}))},s.result=function(e){return this.map((function(){return e}))},s.atMost=function(e){return this.times(0,e)},s.atLeast=function(e){return z(this.times(e),this.many(),(function(e,t){return e.concat(t)}))},s.map=function(e){L(e);var t=this;return n((function(i,n){var s=t._(i,n);return s.status?P(w(s.index,e(s.value)),s):s}))},s.contramap=function(e){L(e);var t=this;return n((function(i,n){var s=t.parse(e(i.slice(n)));return s.status?w(n+i.length,s.value):s}))},s.promap=function(e,t){return L(e),L(t),this.contramap(e).map(t)},s.skip=function(e){return V(this,e).map((function(e){return e[0]}))},s.mark=function(){return z(ne,this,ne,(function(e,t,i){return{start:e,value:t,end:i}}))},s.node=function(e){return z(ne,this,ne,(function(t,i,n){return{name:e,value:i,start:t,end:n}}))},s.sepBy=function(e){return K(this,e)},s.sepBy1=function(e){return W(this,e)},s.lookahead=function(e){return this.skip(J(e))},s.notFollowedBy=function(e){return this.skip(Q(e))},s.desc=function(e){y(e)||(e=[e]);var t=this;return n((function(i,n){var s=t._(i,n);return s.status||(s.expected=e),s}))},s.fallback=function(e){return this.or(Y(e))},s.ap=function(e){return z(e,this,(function(e,t){return e(t)}))},s.chain=function(e){var t=this;return n((function(i,n){var s=t._(i,n);return s.status?P(e(s.value)._(i,s.index),s):s}))},s.concat=s.or,s.empty=ie,s.of=Y,s["fantasy-land/ap"]=s.ap,s["fantasy-land/chain"]=s.chain,s["fantasy-land/concat"]=s.concat,s["fantasy-land/empty"]=s.empty,s["fantasy-land/of"]=s.of,s["fantasy-land/map"]=s.map;var ne=n((function(e,t){return w(t,C(e,t))})),se=n((function(e,t){return t>=e.length?S(t,"any character/byte"):w(t+1,N(e,t))})),re=n((function(e,t){return w(e.length,e.slice(t))})),oe=n((function(e,t){return t<e.length?S(t,"EOF"):w(t,null)})),ae=q(/[0-9]/).desc("a digit"),le=q(/[0-9]*/).desc("optional digits"),ue=q(/[a-z]/i).desc("a letter"),ce=q(/[a-z]*/i).desc("optional letters"),he=q(/\s*/).desc("optional whitespace"),de=q(/\s+/).desc("whitespace"),pe=X("\r"),me=X("\n"),ge=X("\r\n"),ve=U(ge,me,pe).desc("newline"),be=U(ve,oe);n.all=re,n.alt=U,n.any=se,n.cr=pe,n.createLanguage=function(e){var t={};for(var i in e)({}).hasOwnProperty.call(e,i)&&function(i){t[i]=te((function(){return e[i](t)}))}(i);return t},n.crlf=ge,n.custom=function(e){return n(e(w,S))},n.digit=ae,n.digits=le,n.empty=ie,n.end=be,n.eof=oe,n.fail=Z,n.formatError=F,n.index=ne,n.isParser=f,n.lazy=te,n.letter=ue,n.letters=ce,n.lf=me,n.lookahead=J,n.makeFailure=S,n.makeSuccess=w,n.newline=ve,n.noneOf=function(e){return ee((function(t){return e.indexOf(t)<0})).desc("none of '"+e+"'")},n.notFollowedBy=Q,n.of=Y,n.oneOf=function(e){for(var t=e.split(""),i=0;i<t.length;i++)t[i]="'"+t[i]+"'";return ee((function(t){return e.indexOf(t)>=0})).desc(t)},n.optWhitespace=he,n.Parser=n,n.range=function(e,t){return ee((function(i){return e<=i&&i<=t})).desc(e+"-"+t)},n.regex=q,n.regexp=q,n.sepBy=K,n.sepBy1=W,n.seq=V,n.seqMap=z,n.seqObj=function(){for(var e,t={},i=0,s=(e=arguments,Array.prototype.slice.call(e)),r=s.length,o=0;o<r;o+=1){var a=s[o];if(!f(a)){if(y(a)&&2===a.length&&"string"==typeof a[0]&&f(a[1])){var l=a[0];if(Object.prototype.hasOwnProperty.call(t,l))throw new Error("seqObj: duplicate key "+l);t[l]=!0,i++;continue}throw new Error("seqObj arguments must be parsers or [string, parser] array pairs.")}}if(0===i)throw new Error("seqObj expects at least one named parser, found zero");return n((function(e,t){for(var i,n={},o=0;o<r;o+=1){var a,l;if(y(s[o])?(a=s[o][0],l=s[o][1]):(a=null,l=s[o]),!(i=P(l._(e,t),i)).status)return i;a&&(n[a]=i.value),t=i.index}return P(w(t,n),i)}))},n.string=X,n.succeed=Y,n.takeWhile=function(e){return L(e),n((function(t,i){for(var n=i;n<t.length&&e(N(t,n));)n++;return w(n,t.slice(i,n))}))},n.test=ee,n.whitespace=de,n["fantasy-land/empty"]=ie,n["fantasy-land/of"]=Y,n.Binary={bitSeq:h,bitSeqObj:function(e){c();var t={},i=0,n=a((function(e){if(y(e)){var n=e;if(2!==n.length)throw new Error("["+n.join(", ")+"] should be length 2, got length "+n.length);if($(n[0]),A(n[1]),Object.prototype.hasOwnProperty.call(t,n[0]))throw new Error("duplicate key in bitSeqObj: "+n[0]);return t[n[0]]=!0,i++,n}return A(e),[null,e]}),e);if(i<1)throw new Error("bitSeqObj expects at least one named pair, got ["+e.join(", ")+"]");var s=a((function(e){return e[0]}),n);return h(a((function(e){return e[1]}),n)).map((function(e){return o((function(e,t){return null!==t[0]&&(e[t[0]]=t[1]),e}),{},a((function(t,i){return[t,e[i]]}),s))}))},byte:function(e){if(c(),A(e),e>255)throw new Error("Value specified to byte constructor ("+e+"=0x"+e.toString(16)+") is larger in value than a single byte.");var t=(e>15?"0x":"0x0")+e.toString(16);return n((function(i,n){var s=N(i,n);return s===e?w(n+1,s):S(n,t)}))},buffer:function(e){return d("buffer",e).map((function(e){return Buffer.from(e)}))},encodedString:function(e,t){return d("string",t).map((function(t){return t.toString(e)}))},uintBE:m,uint8BE:m(1),uint16BE:m(2),uint32BE:m(4),uintLE:g,uint8LE:g(1),uint16LE:g(2),uint32LE:g(4),intBE:v,int8BE:v(1),int16BE:v(2),int32BE:v(4),intLE:b,int8LE:b(1),int16LE:b(2),int32LE:b(4),floatBE:d("floatBE",4).map((function(e){return e.readFloatBE(0)})),floatLE:d("floatLE",4).map((function(e){return e.readFloatLE(0)})),doubleBE:d("doubleBE",8).map((function(e){return e.readDoubleBE(0)})),doubleLE:d("doubleLE",8).map((function(e){return e.readDoubleLE(0)}))},e.exports=n}]));let Ae=Ne;class Le{static getGrammarForType(e,t,i=e.AttributeAnyValue){if(t instanceof ie){let n=Le.getGrammarForType(e,t.type,i);return!t.serialized||t.type instanceof String||(n=n.wrap(Ae.string('"'),Ae.string('"'))),n}switch(ne.getType(t)){case Array:return Ae.seqMap(Ae.string("("),t.map((t=>Le.getGrammarForType(e,ne.getType(t)))).reduce(((t,i)=>i&&t!==e.AttributeAnyValue?t.or(i):e.AttributeAnyValue)).trim(Ae.optWhitespace).sepBy(Ae.string(",")).skip(Ae.regex(/,?\s*/)),Ae.string(")"),((e,t,i)=>t));case Boolean:return e.Boolean;case oe:return e.FunctionReference;case ae:return e.Guid;case le:return e.Identifier;case ue:return e.Integer;case ce:return e.InvariantText;case pe:return e.LinearColor;case me:return e.LocalizedText;case ge:return e.MacroGraphReference;case Number:return e.Number;case re:return e.ObjectReference;case Se:return e.Pin;case be:return e.PinReference;case de:return e.RealUnit;case fe:return e.Rotator;case ye:return e.SimpleSerializationRotator;case we:return e.SimpleSerializationVector;case String:return e.String;case Ee:return e.Vector;default:return i}}static createAttributeGrammar=(e,t,i=Ae.string("=").trim(Ae.optWhitespace))=>e.AttributeName.skip(i).chain((i=>{const n=i.split("."),s=ne.objectGet(t.attributes,n);return Le.getGrammarForType(e,s,e.AttributeAnyValue).map((e=>t=>ne.objectSet(t,n,e,!0)))}));static createEntityGrammar=(e,t)=>Ae.seqMap(t.lookbehind?Ae.seq(Ae.string(t.lookbehind),Ae.optWhitespace,Ae.string("(")):Ae.string("("),Le.createAttributeGrammar(e,t).trim(Ae.optWhitespace).sepBy(Ae.string(",")).skip(Ae.regex(/,?/).then(Ae.optWhitespace)),Ae.string(")"),((e,i,n)=>{let s={};return i.forEach((e=>e(s))),new t(s)}));InlineWhitespace=e=>Ae.regex(/[^\S\n]+/).desc("inline whitespace");InlineOptWhitespace=e=>Ae.regex(/[^\S\n]*/).desc("inline optional whitespace");MultilineWhitespace=e=>Ae.regex(/[^\S\n]*\n\s*/).desc("whitespace with at least a newline");Null=e=>Ae.seq(Ae.string("("),e.InlineOptWhitespace,Ae.string(")")).map((e=>null)).desc("null: ()");Boolean=e=>Ae.alt(Ae.string("True"),Ae.string("true"),Ae.string("False"),Ae.string("false")).map((e=>"true"===e.toLocaleLowerCase())).desc("either True or False");HexDigit=e=>Ae.regex(/[0-9a-fA-f]/).desc("hexadecimal digit");Number=e=>Ae.regex(/[-\+]?[0-9]+(?:\.[0-9]+)?/).map(Number).desc("a number");RealNumber=e=>Ae.regex(/[-\+]?[0-9]+\.[0-9]+/).map(Number).desc("a number written as real");RealUnit=e=>Ae.regex(/\+?[0-9]+(?:\.[0-9]+)?/).map(Number).assert((e=>e>=0&&e<=1)).desc("a number between 0 and 1");NaturalNumber=e=>Ae.regex(/0|[1-9]\d*/).map(Number).desc("a natural number");ColorNumber=e=>e.NaturalNumber.assert((e=>0<=e&&e<256),"the color must be between 0 and 256 excluded");Word=e=>Ae.regex(/[a-zA-Z]+/).desc("a word");String=e=>Ae.regex(/(?:[^"\\]|\\.)*/).wrap(Ae.string('"'),Ae.string('"')).map(ne.unescapeString).desc('string (with possibility to escape the quote using ")');ReferencePath=e=>Ae.seq(Ae.string("/"),e.PathSymbol.map((e=>e.toString())).sepBy1(Ae.string(".")).tieWith(".").sepBy1(Ae.string(":")).tieWith(":")).tie().atLeast(2).tie().desc('a path (words with possibly underscore, separated by ".", separated by "/")');AttributeName=e=>e.Word.sepBy1(Ae.string(".")).tieWith(".").desc('words separated by ""');None=e=>Ae.string("None").map((e=>new re({type:"None",path:""}))).desc("none");Integer=e=>Ae.regex(/[\-\+]?[0-9]+/).map((e=>new ue(e))).desc("an integer");Guid=e=>e.HexDigit.times(32).tie().map((e=>new ae({value:e}))).desc("32 digit hexadecimal value");Identifier=e=>Ae.regex(/\w+/).map((e=>new le(e)));PathSymbol=e=>Ae.regex(/[0-9\w]+/).map((e=>new ve({value:e})));ObjectReference=e=>Ae.alt(e.None,...[e.ReferencePath.map((e=>new re({type:"",path:e})))].flatMap((e=>[e,e.trim(Ae.string('"'))])),Ae.seqMap(e.Word,Ae.optWhitespace,Ae.alt(...[e.ReferencePath].flatMap((e=>[e.wrap(Ae.string('"'),Ae.string('"')),e.wrap(Ae.string("'\""),Ae.string("\"'"))]))),((e,t,i)=>new re({type:e,path:i}))),e.Word.map((e=>new re({type:e,path:""}))));LocalizedText=e=>Ae.seqMap(Ae.string(me.lookbehind).skip(Ae.optWhitespace).skip(Ae.string("(")),e.String.trim(Ae.optWhitespace),Ae.string(","),e.String.trim(Ae.optWhitespace),Ae.string(","),e.String.trim(Ae.optWhitespace),Ae.string(")"),((e,t,i,n,s,r,o)=>new me({namespace:t,key:n,value:r})));InvariantText=e=>e.String.trim(Ae.optWhitespace).wrap(Ae.string(ce.lookbehind).skip(Ae.optWhitespace).skip(Ae.string("(")),Ae.string(")")).map((e=>new ce({value:e})));AttributeAnyValue=e=>Ae.alt(e.Null,e.None,e.Boolean,e.Number,e.Integer,e.String,e.Guid,e.LocalizedText,e.InvariantText,e.ObjectReference,e.Vector,e.LinearColor);PinReference=e=>Ae.seqMap(e.PathSymbol,Ae.whitespace,e.Guid,((e,t,i)=>new be({objectName:e,pinGuid:i})));Vector=e=>Le.createEntityGrammar(e,Ee);Rotator=e=>Le.createEntityGrammar(e,fe);SimpleSerializationRotator=e=>Ae.seqMap(e.Number,Ae.string(",").trim(Ae.optWhitespace),e.Number,Ae.string(",").trim(Ae.optWhitespace),e.Number,((e,t,i,n,s)=>new ye({R:s,P:e,Y:i})));SimpleSerializationVector=e=>Ae.seqMap(e.Number,Ae.string(",").trim(Ae.optWhitespace),e.Number,Ae.string(",").trim(Ae.optWhitespace),e.Number,((e,t,i,n,s)=>new we({X:e,Y:i,Z:s})));LinearColor=e=>Le.createEntityGrammar(e,pe);FunctionReference=e=>Le.createEntityGrammar(e,oe);MacroGraphReference=e=>Le.createEntityGrammar(e,ge);KeyBinding=e=>Ae.alt(e.Identifier.map((e=>new he({Key:e}))),Le.createEntityGrammar(e,he));Pin=e=>Le.createEntityGrammar(e,Se);CustomProperties=e=>Ae.string("CustomProperties").then(Ae.whitespace).then(e.Pin).map((e=>t=>{let i=ne.objectGet(t,["CustomProperties"],[]);i.push(e),ne.objectSet(t,["CustomProperties"],i,!0)}));Object=e=>Ae.seqMap(Ae.seq(Ae.string("Begin"),Ae.whitespace,Ae.string("Object"),Ae.whitespace),Ae.alt(e.CustomProperties,Le.createAttributeGrammar(e,ke)).sepBy1(Ae.whitespace),Ae.seq(e.MultilineWhitespace,Ae.string("End"),Ae.whitespace,Ae.string("Object")),((e,t,i)=>{let n={};return t.forEach((e=>e(n))),new ke(n)}));MultipleObject=e=>e.Object.sepBy1(Ae.whitespace).trim(Ae.optWhitespace);LinearColorFromHex=e=>Ae.string("#").then(e.HexDigit.times(2).tie().times(3,4)).trim(Ae.optWhitespace).map((([e,t,i,n])=>new pe({R:parseInt(e,16)/255,G:parseInt(t,16)/255,B:parseInt(i,16)/255,A:n?parseInt(n,16)/255:1})));LinearColorFromRGBList=e=>Ae.seqMap(e.ColorNumber,Ae.string(",").skip(Ae.optWhitespace),e.ColorNumber,Ae.string(",").skip(Ae.optWhitespace),e.ColorNumber.map(Number),((e,t,i,n,s)=>new pe({R:e/255,G:i/255,B:s/255,A:1})));LinearColorFromRGB=e=>Ae.string("rgb").then(e.LinearColorFromRGBList.wrap(Ae.regex(/\(\s*/),Ae.regex(/\s*\)/)));LinearColorFromRGBA=e=>Ae.string("rgba").then(Ae.seqMap(e.ColorNumber,Ae.string(",").skip(Ae.optWhitespace),e.ColorNumber,Ae.string(",").skip(Ae.optWhitespace),e.ColorNumber.map(Number),Ae.string(",").skip(Ae.optWhitespace),Ae.regex(/0?\.\d+|[01]/).map(Number),((e,t,i,n,s,r,o)=>new pe({R:e/255,G:i/255,B:s/255,A:o}))).wrap(Ae.regex(/\(\s*/),Ae.regex(/\s*\)/)));LinearColorFromAnyColor=e=>Ae.alt(e.LinearColorFromRGBList,e.LinearColorFromHex,e.LinearColorFromRGB,e.LinearColorFromRGBA)}class $e{static grammar=Ne.createLanguage(new Le);constructor(e,t="",i=",",n=!1,s="=",r=(e=>e.join("."))){this.entityType=e,this.prefix=t,this.separator=i,this.trailingSeparator=n,this.attributeValueConjunctionSign=s,this.attributeKeyPrinter=r}deserialize(e){return this.read(e)}serialize(e,t=!1,i=e){return this.write(i,e,t)}read(e){throw new Error("Not implemented")}write(e,t,i){throw new Error("Not implemented")}writeValue(e,t,i,n){const s=ne.getType(t),r=te.getSerializer(s);if(!r)throw new Error(`Unknown value type "${s.name}", a serializer must be registered in the SerializerFactory class, check initializeSerializerFactory.js`);return r.write(e,t,n)}subWrite(e,t,i,n){let s="",r=t.concat("");const o=r.length-1;for(const t of Object.getOwnPropertyNames(i)){r[o]=t;const a=i[t];if(a?.constructor===Object)s+=(s.length?this.separator:"")+this.subWrite(e,r,a,n);else if(void 0!==a&&this.showProperty(e,i,r,a)){const t=ne.isSerialized(e,r);s+=(s.length?this.separator:"")+this.prefix+this.attributeKeyPrinter(r)+this.attributeValueConjunctionSign+(t?`"${this.writeValue(e,a,r,!0)}"`:this.writeValue(e,a,r,n))}}return this.trailingSeparator&&s.length&&1===r.length&&(s+=this.separator),s}showProperty(e,t,i,n){const s=this.entityType.attributes,r=ne.objectGet(s,i);return!(r instanceof ie)||!r.ignored&&(!ne.equals(r.value,n)||r.showDefault)}}class Te extends $e{constructor(){super(ke," ","\n",!1)}showProperty(e,t,i,n){switch(i.toString()){case"Class":case"Name":case"CustomProperties":return!1}return super.showProperty(e,t,i,n)}read(e){const t=$e.grammar.Object.parse(e);if(!t.status)throw new Error("Error when trying to parse the object.");return t.value}readMultiple(e){const t=$e.grammar.MultipleObject.parse(e);if(!t.status)throw new Error("Error when trying to parse the object.");return t.value}write(e,t,i){return`Begin Object Class=${t.Class.path} Name=${this.writeValue(e,t.Name,["Name"],i)}\n${this.subWrite(e,[],t,i)+t.CustomProperties.map((e=>this.separator+this.prefix+"CustomProperties "+te.getSerializer(Se).serialize(e))).join("")}\nEnd Object\n`}}class Me extends Q{static#p=new Te;#m;constructor(e,t,i={}){i.listenOnFocus??=!0,i.unlistenOnTextEdit??=!0,super(e,t,i);let n=this;this.#m=e=>n.copied()}listenEvents(){document.body.addEventListener("copy",this.#m)}unlistenEvents(){document.body.removeEventListener("copy",this.#m)}copied(){const e=this.blueprint.getNodes(!0).map((e=>Me.#p.serialize(e.entity,!1))).join("\n\n");navigator.clipboard.writeText(e)}}class Oe{static styles=s``;element;#g=[];get inputObjects(){return this.#g}constructed(e){this.element=e}createInputObjects(){return[]}connectedCallback(){}willUpdate(e){}update(e){}render(){return T``}firstUpdated(e){}updated(e){}inputSetup(){this.#g=this.createInputObjects()}cleanup(){this.#g.forEach((e=>e.unlistenDOMElement()))}}class De extends Q{#v;constructor(e,t,i={}){i.activateAnyKey??=!1,i.activationKeys??=[],i.consumeEvent??=!0,i.listenOnFocus??=!0,i.unlistenOnTextEdit??=!0,i.activationKeys instanceof Array||(i.activationKeys=[i.activationKeys]),i.activationKeys=i.activationKeys.map((e=>{if(e instanceof he)return e;if(e.constructor===String){const t=$e.grammar.KeyBinding.parse(e);if(t.status)return t.value}throw new Error("Unexpected key value")})),super(e,t,i),this.#v=this.options.activationKeys??[];let n=this;this.keyDownHandler=e=>{(this.options.activateAnyKey||n.#v.some((t=>(e=>e.bShift||"LeftShift"==e.Key||"RightShift"==e.Key)(t)==e.shiftKey&&(e=>e.bCtrl||"LeftControl"==e.Key||"RightControl"==e.Key)(t)==e.ctrlKey&&(e=>e.bAlt||"LeftAlt"==e.Key||"RightAlt"==e.Key)(t)==e.altKey&&J.Keys[t.Key]==e.code)))&&(i.consumeEvent&&(e.preventDefault(),e.stopImmediatePropagation()),n.fire(),document.removeEventListener("keydown",n.keyDownHandler),document.addEventListener("keyup",n.keyUpHandler))},this.keyUpHandler=e=>{(this.options.activateAnyKey||n.#v.some((t=>t.bShift&&"Shift"==e.key||t.bCtrl&&"Control"==e.key||t.bAlt&&"Alt"==e.key||t.bCmd&&"Meta"==e.key||J.Keys[t.Key]==e.code)))&&(i.consumeEvent&&e.stopImmediatePropagation(),n.unfire(),document.removeEventListener("keyup",this.keyUpHandler),document.addEventListener("keydown",this.keyDownHandler))}}listenEvents(){document.addEventListener("keydown",this.keyDownHandler)}unlistenEvents(){document.removeEventListener("keydown",this.keyDownHandler)}fire(){}unfire(){}}class He extends De{constructor(e,t,i={}){i.activationKeys=J.deleteNodesKeyboardKey,super(e,t,i)}fire(){this.blueprint.removeGraphElement(...this.blueprint.getNodes(!0))}}class Ie extends Q{constructor(e,t,i={}){i.ignoreTranslateCompensate??=!1,i.movementSpace??=t.getGridDOMElement()??document.documentElement,super(e,t,i),this.movementSpace=i.movementSpace}locationFromEvent(e){const t=ne.convertLocation([e.clientX,e.clientY],this.movementSpace);return this.options.ignoreTranslateCompensate?t:this.blueprint.compensateTranslation(t)}}class _e extends Ie{#b=e=>{e.preventDefault();const t=this.locationFromEvent(e);this.wheel(Math.sign(e.deltaY*J.mouseWheelFactor),t)};#f=e=>e.preventDefault();constructor(e,t,i={}){i.listenOnFocus=!0,i.strictTarget??=!1,super(e,t,i),this.strictTarget=i.strictTarget}listenEvents(){this.movementSpace.addEventListener("wheel",this.#b,!1),this.movementSpace.parentElement?.addEventListener("wheel",this.#f)}unlistenEvents(){this.movementSpace.removeEventListener("wheel",this.#b,!1),this.movementSpace.parentElement?.removeEventListener("wheel",this.#f)}wheel(e,t){}}class Be extends _e{#y=!1;get enableZoonIn(){return this.#y}set enableZoonIn(e){(e=Boolean(e))!=this.#y&&(this.#y=e)}wheel(e,t){let i=this.blueprint.getZoom();e=-e,!this.enableZoonIn&&0==i&&e>0||(i+=e,this.blueprint.setZoom(i,t))}}class Re extends De{#E;constructor(e,t,i={}){i.activationKeys=J.enableZoomIn,super(e,t,i)}fire(){this.#E=this.blueprint.getInputObject(Be),this.#E.enableZoonIn=!0}unfire(){this.#E.enableZoonIn=!1}}class Ge extends De{constructor(e,t,i={}){i.activationKeys=J.selectAllKeyboardKey,super(e,t,i)}fire(){this.blueprint.selectAll()}}class Fe extends Y{static properties={};#w=[];#t;get blueprint(){return this.#t}set blueprint(e){this.#t=e}#S;get entity(){return this.#S}set entity(e){this.#S=e}#P;get template(){return this.#P}inputObjects=[];constructor(e,t){super(),this.#S=e,this.#P=t,this.inputObjects=[],this.#P.constructed(this)}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),this.blueprint=this.closest("ueb-blueprint"),this.template.connectedCallback()}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),this.#w.forEach((t=>t(e))),this.#w=[]}disconnectedCallback(){super.disconnectedCallback(),this.template.cleanup()}addNextUpdatedCallbacks(e,t=!1){this.#w.push(e),t&&this.requestUpdate()}isSameGraph(e){return this.blueprint&&this.blueprint==e?.blueprint}getInputObject(e){return this.template.inputObjects.find((t=>t.constructor==e))}}class je extends Fe{static properties={...super.properties,locationX:{type:Number,attribute:!1},locationY:{type:Number,attribute:!1}};static dragEventName=J.dragEventName;static dragGeneralEventName=J.dragGeneralEventName;constructor(e,t){super(e,t),this.locationX=0,this.locationY=0}setLocation([e,t]){const i=[e-this.locationX,t-this.locationY];if(this.locationX=e,this.locationY=t,this.blueprint){const e=new CustomEvent(this.constructor.dragEventName,{detail:{value:i},bubbles:!1,cancelable:!0});this.dispatchEvent(e)}}addLocation([e,t]){this.setLocation([this.locationX+e,this.locationY+t])}dispatchDragEvent(e){const t=new CustomEvent(this.constructor.dragGeneralEventName,{detail:{value:e},bubbles:!0,cancelable:!0});this.dispatchEvent(t)}snapToGrid(){const e=ne.snapToGrid([this.locationX,this.locationY],J.gridSize);this.locationX==e[0]&&this.locationY==e[1]||this.setLocation(e)}}class Ve extends Ie{#k=e=>{if(this.blueprint.setFocused(!0),e.button===this.options.clickButton)this.options.strictTarget&&e.target!=e.currentTarget||(this.options.consumeEvent&&e.stopImmediatePropagation(),this.#C.addEventListener("mousemove",this.#x),document.addEventListener("mouseup",this.#N),this.clickedPosition=this.locationFromEvent(e),this.blueprint.mousePosition[0]=this.clickedPosition[0],this.blueprint.mousePosition[1]=this.clickedPosition[1],this.target instanceof je&&(this.clickedOffset=[this.clickedPosition[0]-this.target.locationX,this.clickedPosition[1]-this.target.locationY]),this.clicked(this.clickedPosition));else this.options.exitAnyButton||this.#N(e)};#x=e=>{this.options.consumeEvent&&e.stopImmediatePropagation(),this.#C.removeEventListener("mousemove",this.#x),this.#C.addEventListener("mousemove",this.#A);const t=this.getEvent(J.trackingMouseEventName.begin);this.#L=0==this.target.dispatchEvent(t);const i=this.locationFromEvent(e);this.mouseLocation=ne.snapToGrid(this.clickedPosition,this.stepSize),this.startDrag(i),this.started=!0};#A=e=>{this.options.consumeEvent&&e.stopImmediatePropagation();const t=this.locationFromEvent(e),i=[e.movementX,e.movementY];this.dragTo(t,i),this.#L&&(this.blueprint.mousePosition=this.locationFromEvent(e))};#N=e=>{if(!this.options.exitAnyButton||e.button==this.options.clickButton){if(this.options.consumeEvent&&e.stopImmediatePropagation(),this.#C.removeEventListener("mousemove",this.#x),this.#C.removeEventListener("mousemove",this.#A),document.removeEventListener("mouseup",this.#N),this.started&&this.endDrag(),this.unclicked(),this.#L){const e=this.getEvent(J.trackingMouseEventName.end);this.target.dispatchEvent(e),this.#L=!1}this.started=!1}};#L=!1;#C;#$;clickedOffset=[0,0];clickedPosition=[0,0];mouseLocation=[0,0];started=!1;stepSize=1;constructor(e,t,i={}){i.clickButton??=0,i.consumeEvent??=!0,i.draggableElement??=e,i.exitAnyButton??=!0,i.moveEverywhere??=!1,i.movementSpace??=t?.getGridDOMElement(),i.repositionOnClick??=!1,i.strictTarget??=!1,super(e,t,i),this.stepSize=parseInt(i?.stepSize??J.gridSize),this.#C=this.options.moveEverywhere?document.documentElement:this.movementSpace,this.#$=this.options.draggableElement,this.listenEvents()}listenEvents(){this.#$.addEventListener("mousedown",this.#k),2==this.options.clickButton&&this.#$.addEventListener("contextmenu",(e=>e.preventDefault()))}unlistenEvents(){this.#$.removeEventListener("mousedown",this.#k)}getEvent(e){return new CustomEvent(e,{detail:{tracker:this},bubbles:!0,cancelable:!0})}clicked(e){}startDrag(e){}dragTo(e,t){}endDrag(){}unclicked(e){}}class ze extends Ve{startDrag(){this.blueprint.scrolling=!0}dragTo(e,t){this.blueprint.scrollDelta([-t[0],-t[1]])}endDrag(){this.blueprint.scrolling=!1}}class Ue extends Ie{#T=null;#M;#O;#D;constructor(e,t,i={}){i.listenOnFocus=!0,super(e,t,i);let n=this;this.#M=e=>{e.preventDefault(),n.blueprint.mousePosition=n.locationFromEvent(e)},this.#O=e=>{n.#T||(e.preventDefault(),this.#T=e.detail.tracker,n.unlistenMouseMove())},this.#D=e=>{n.#T==e.detail.tracker&&(e.preventDefault(),n.#T=null,n.listenMouseMove())}}listenMouseMove(){this.target.addEventListener("mousemove",this.#M)}unlistenMouseMove(){this.target.removeEventListener("mousemove",this.#M)}listenEvents(){this.listenMouseMove(),this.blueprint.addEventListener(J.trackingMouseEventName.begin,this.#O),this.blueprint.addEventListener(J.trackingMouseEventName.end,this.#D)}unlistenEvents(){this.unlistenMouseMove(),this.blueprint.removeEventListener(J.trackingMouseEventName.begin,this.#O),this.blueprint.removeEventListener(J.trackingMouseEventName.end,this.#D)}}class Ke{static#H=new Map;static registerElement(e,t){Ke.#H.set(e,t)}static getConstructor(e){return Ke.#H.get(e)}}class We extends Q{static#p=new Te;#I;constructor(e,t,i={}){i.listenOnFocus??=!0,i.unlistenOnTextEdit??=!0,super(e,t,i);let n=this;this.#I=e=>n.pasted(e.clipboardData.getData("Text"))}listenEvents(){document.body.addEventListener("paste",this.#I)}unlistenEvents(){document.body.removeEventListener("paste",this.#I)}pasted(e){let t=0,i=0,n=0,s=We.#p.readMultiple(e).map((e=>{let s=new(Ke.getConstructor("ueb-node"))(e);return t+=s.locationY,i+=s.locationX,++n,s}));t/=n,i/=n,s.length>0&&this.blueprint.unselectAll();let r=this.blueprint.mousePosition;return s.forEach((e=>{const n=[r[0]-i,r[1]-t];e.addLocation(n),e.snapToGrid(),e.setSelected(!0)})),this.blueprint.addGraphElement(...s),!0}}class Xe extends Ve{constructor(e,t,i){super(e,t,i),this.selectorElement=this.blueprint.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 qe extends Q{#_;constructor(e,t,i={}){i.listenOnFocus=!0,super(e,t,i);let n=this;this.#_=e=>n.clickedSomewhere(e.target),this.blueprint.focus&&document.addEventListener("click",this.#_)}clickedSomewhere(e){e.closest("ueb-blueprint")||this.blueprint.setFocused(!1)}listenEvents(){document.addEventListener("click",this.#_)}unlistenEvents(){document.removeEventListener("click",this.#_)}}class Ye extends Oe{static styleVariables={"--ueb-font-size":`${J.fontSize}`,"--ueb-grid-axis-line-color":`${J.gridAxisLineColor}`,"--ueb-grid-expand":`${J.expandGridSize}px`,"--ueb-grid-line-color":`${J.gridLineColor}`,"--ueb-grid-line-width":`${J.gridLineWidth}px`,"--ueb-grid-set-line-color":`${J.gridSetLineColor}`,"--ueb-grid-set":`${J.gridSet}`,"--ueb-grid-size":`${J.gridSize}px`,"--ueb-link-min-width":`${J.linkMinWidth}`,"--ueb-node-radius":`${J.nodeRadius}px`};constructed(e){super.constructed(e),this.element.style.cssText=Object.entries(Ye.styleVariables).map((([e,t])=>`${e}:${t};`)).join("")}createInputObjects(){return[...super.createInputObjects(),new Me(this.element.getGridDOMElement(),this.element),new We(this.element.getGridDOMElement(),this.element),new He(this.element.getGridDOMElement(),this.element),new Ge(this.element.getGridDOMElement(),this.element),new Be(this.element.getGridDOMElement(),this.element),new Xe(this.element.getGridDOMElement(),this.element,{clickButton:0,exitAnyButton:!0,moveEverywhere:!0}),new ze(this.element.getGridDOMElement(),this.element,{clickButton:2,exitAnyButton:!1,moveEverywhere:!0}),new qe(this.element.getGridDOMElement(),this.element),new Ue(this.element.getGridDOMElement(),this.element),new Re(this.element.getGridDOMElement(),this.element)]}render(){return T`<div class="ueb-viewport-header"><div class="ueb-viewport-zoom">${0==this.element.zoom?"1:1":this.element.zoom}</div></div><div class="ueb-viewport-overlay"></div><div class="ueb-viewport-body"><div class="ueb-grid" style="--ueb-additional-x:${Math.round(this.element.translateX)}--ueb-additional-y:${Math.round(this.element.translateY)}--ueb-translate-x:${Math.round(this.element.translateX)}--ueb-translate-y:${Math.round(this.element.translateY)}"><div class="ueb-grid-content"><div data-links></div><div data-nodes></div><ueb-selector></ueb-selector></div></div></div>`}firstUpdated(e){super.firstUpdated(e),this.element.headerElement=this.element.querySelector(".ueb-viewport-header"),this.element.overlayElement=this.element.querySelector(".ueb-viewport-overlay"),this.element.viewportElement=this.element.querySelector(".ueb-viewport-body"),this.element.selectorElement=this.element.querySelector("ueb-selector"),this.element.gridElement=this.element.viewportElement.querySelector(".ueb-grid"),this.element.linksContainerElement=this.element.querySelector("[data-links]"),this.element.linksContainerElement.append(...this.element.getLinks()),this.element.nodesContainerElement=this.element.querySelector("[data-nodes]"),this.element.nodesContainerElement.append(...this.element.getNodes()),this.element.viewportElement.scroll(J.expandGridSize,J.expandGridSize)}updated(e){if(super.updated(e),(e.has("scrollX")||e.has("scrollY"))&&this.element.viewportElement.scroll(this.element.scrollX,this.element.scrollY),e.has("zoom")){const t=e.get("zoom"),i=Math.min(t,this.element.zoom),n=Math.max(t,this.element.zoom),s=ne.range(i,n),r=e=>`ueb-zoom-${e}`;t<this.element.zoom?(this.element.classList.remove(...s.filter((e=>e<0)).map(r)),this.element.classList.add(...s.filter((e=>e>0)).map(r))):(this.element.classList.remove(...s.filter((e=>e>0)).map(r)),this.element.classList.add(...s.filter((e=>e<0)).map(r)))}}getPin(e){return this.element.querySelector(`ueb-node[data-name="${e.objectName}"] ueb-pin[data-id="${e.pinGuid}"]`)}}class Ze extends Fe{static properties={...super.properties,fromX:{type:Number,attribute:!1},fromY:{type:Number,attribute:!1},toX:{type:Number,attribute:!1},toY:{type:Number,attribute:!1}};constructor(...e){super(...e),this.fromX=0,this.fromY=0,this.toX=0,this.toY=0}setBothLocations([e,t]){this.fromX=e,this.fromY=t,this.toX=e,this.toY=t}addSourceLocation([e,t]){this.fromX+=e,this.fromY+=t}addDestinationLocation([e,t]){this.toX+=e,this.toY+=t}}class Je extends Oe{update(e){super.update(e);const[t,i,n,s]=[Math.round(this.element.fromX),Math.round(this.element.fromY),Math.round(this.element.toX),Math.round(this.element.toY)],[r,o,a,l]=[Math.min(t,n),Math.min(i,s),Math.abs(t-n),Math.abs(i-s)];(e.has("fromX")||e.has("toX"))&&(this.element.style.left=`${r}px`,this.element.style.width=`${a}px`),(e.has("fromY")||e.has("toY"))&&(this.element.style.top=`${o}px`,this.element.style.height=`${l}px`)}}class Qe extends ke{constructor(e={},t){super(e),this.Class=new re("/Script/BlueprintGraph.K2Node_Knot"),this.Name="K2Node_Knot";const i=new Se({PinName:"InputPin"}),n=new Se({PinName:"OutputPin",Direction:"EGPD_Output"});t&&(i.copyTypeFrom(t),n.copyTypeFrom(t)),this.CustomProperties=[i,n]}}class et extends Ie{static ignoreDbClick=e=>{};#B=e=>{this.options.strictTarget&&e.target!==e.currentTarget||(this.options.consumeEvent&&e.stopImmediatePropagation(),this.clickedPosition=this.locationFromEvent(e),this.blueprint.mousePosition[0]=this.clickedPosition[0],this.blueprint.mousePosition[1]=this.clickedPosition[1],this.dbclicked(this.clickedPosition))};#R;get onDbClick(){return this.#R}set onDbClick(e){this.#R=e}clickedPosition=[0,0];constructor(e,t,i={},n=et.ignoreDbClick){i.consumeEvent??=!0,i.strictTarget??=!1,super(e,t,i),this.#R=n,this.listenEvents()}listenEvents(){this.target.addEventListener("dblclick",this.#B)}unlistenEvents(){this.target.removeEventListener("dblclick",this.#B)}dbclicked(e){this.onDbClick(e)}}class tt extends Je{static decreasingValue(e,t){const i=-e*t[0]**2,n=t[1]-i/t[0];return e=>i/e+n}static clampedLine(e,t){if(e[0]>t[0]){const i=e;e=t,t=i}const i=(t[1]-e[1])/(t[0]-e[0]),n=e[1]-i*e[0];return s=>s<e[0]?e[1]:s>t[0]?t[1]:i*s+n}static c1DecreasingValue=tt.decreasingValue(-.15,[100,15]);static c2DecreasingValue=tt.decreasingValue(-.06,[500,130]);static c2Clamped=tt.clampedLine([0,100],[200,30]);#G=e=>{const t=new Qe({},this.element.sourcePin.entity),i=new(Ke.getConstructor("ueb-node"))(t);i.setLocation(this.element.blueprint.snapToGrid(e)),this.element.blueprint.addGraphElement(i);const n=new(Ke.getConstructor("ueb-link"))(i.template.outputPin,this.element.destinationPin);this.element.destinationPin=i.template.inputPin,this.element.blueprint.addGraphElement(n)};createInputObjects(){return[...super.createInputObjects(),new et(this.element.querySelector(".ueb-link-area"),this.element.blueprint,void 0,(e=>this.#G(e)))]}willUpdate(e){super.willUpdate(e);const t=this.element.sourcePin,i=this.element.destinationPin;if(e.has("fromX")||e.has("toX")){const e=t?.nodeElement.getType()==J.nodeType.knot,n=i?.nodeElement.getType()==J.nodeType.knot;!e||i&&!n||(t?.isInput()&&this.element.toX>this.element.fromX+J.distanceThreshold?this.element.sourcePin=t.nodeElement.template.outputPin:t?.isOutput()&&this.element.toX<this.element.fromX-J.distanceThreshold&&(this.element.sourcePin=t.nodeElement.template.inputPin)),!n||t&&!e||(i?.isInput()&&this.element.toX<this.element.fromX+J.distanceThreshold?this.element.destinationPin=i.nodeElement.template.outputPin:i?.isOutput()&&this.element.toX>this.element.fromX-J.distanceThreshold&&(this.element.destinationPin=i.nodeElement.template.inputPin))}const n=Math.max(Math.abs(this.element.fromX-this.element.toX),1);Math.max(Math.abs(this.element.fromY-this.element.toY),1);const s=Math.max(n,J.linkMinWidth),r=n/s,o=this.element.originatesFromInput?this.element.fromX<this.element.toX:this.element.toX<this.element.fromX;this.element.startPixels=n<s?(s-n)/2:0,this.element.startPercentage=o?this.element.startPixels+100*r:this.element.startPixels;const a=this.element.startPercentage+(o?tt.c1DecreasingValue(s):10)*r;let l=tt.c2Clamped(o?-n:n)+this.element.startPercentage;l=Math.min(l,tt.c2DecreasingValue(s)),this.element.svgPathD=J.linkRightSVGPath(this.element.startPercentage,a,l)}update(e){super.update(e),e.has("originatesFromInput")&&this.element.style.setProperty("--ueb-from-input",this.element.originatesFromInput?"1":"0");const t=this.element.sourcePin??this.element.destinationPin;t&&this.element.style.setProperty("--ueb-link-color-rgb",ne.printLinearColor(t.color)),this.element.style.setProperty("--ueb-y-reflected",""+(this.element.fromY>this.element.toY?1:0)),this.element.style.setProperty("--ueb-start-percentage",`${Math.round(this.element.startPercentage)}%`),this.element.style.setProperty("--ueb-link-start",`${Math.round(this.element.startPixels)}`)}render(){const e=`ueb-id-${Math.floor(1e12*Math.random())}`;return T`<svg version="1.2" baseProfile="tiny" width="100%" height="100%" viewBox="0 0 100 100" preserveAspectRatio="none"><g class="ueb-link-area"><path id="${e}" fill="none" vector-effect="non-scaling-stroke" d="${this.element.svgPathD}"/><use href="#${e}" pointer-events="stroke" stroke-width="20"/></g></svg> ${this.element.linkMessageIcon||this.element.linkMessageText?T`<div class="ueb-link-message"><span class="ueb-link-message-icon">${this.element.linkMessageIcon}</span> <span class="ueb-link-message-text">${this.element.linkMessageText}</span></div>`:O}`}}class it{static branchNode=T`<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 close=T`<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><line x1="2" y1="2" x2="30" y2="30" stroke="currentColor" stroke-width="4"/><line x1="30" y1="2" x2="2" y2="30" stroke="currentColor" stroke-width="4"/></svg>`;static correct=T`<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 execPin=T`<svg viewBox="-2 0 16 16" xmlns="http://www.w3.org/2000/svg"><path class="ueb-pin-tofill" stroke-width="1.25" stroke="white" fill="none" d="M 2 1 a 2 2 0 0 0 -2 2 v 10 a 2 2 0 0 0 2 2 h 4 a 2 2 0 0 0 1.519 -0.698 l 4.843 -5.651 a 1 1 0 0 0 0 -1.302 L 7.52 1.7 a 2 2 0 0 0 -1.519 -0.698 z"/></svg>`;static expandIcon=T`<svg fill="currentColor" viewBox="4 4 24 24" xmlns="http://www.w3.org/2000/svg"><path d="M 16.003 18.626 l 7.081 -7.081 L 25 13.46 l -8.997 8.998 -9.003 -9 1.917 -1.916 z"/></svg>`;static forEachLoop=T`<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=T`<svg viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M9.72002 6.0699C9.88111 4.96527 10.299 3.9138 10.94 2.99991C10.94 2.99991 10.94 3.05991 10.94 3.08991C10.94 3.36573 11.0496 3.63026 11.2446 3.8253C11.4397 4.02033 11.7042 4.12991 11.98 4.12991C12.2558 4.12991 12.5204 4.02033 12.7154 3.8253C12.9105 3.63026 13.02 3.36573 13.02 3.08991C13.0204 2.90249 12.9681 2.71873 12.8691 2.5596C12.7701 2.40047 12.6283 2.27237 12.46 2.18991H12.37C11.8725 2.00961 11.3275 2.00961 10.83 2.18991C9.21002 2.63991 8.58002 4.99991 8.58002 4.99991L8.40002 5.1199H5.40002L5.15002 6.1199H8.27002L7.27002 11.4199C7.11348 12.0161 6.79062 12.5555 6.33911 12.9751C5.8876 13.3948 5.32607 13.6773 4.72002 13.7899C4.78153 13.655 4.81227 13.5081 4.81002 13.3599C4.81002 13.0735 4.69624 12.7988 4.4937 12.5962C4.29116 12.3937 4.01646 12.2799 3.73002 12.2799C3.44359 12.2799 3.16889 12.3937 2.96635 12.5962C2.76381 12.7988 2.65002 13.0735 2.65002 13.3599C2.66114 13.605 2.75692 13.8386 2.92104 14.021C3.08517 14.2033 3.30746 14.3231 3.55002 14.3599C7.91002 15.1999 8.55002 11.4499 8.55002 11.4499L9.55002 7.05991H12.55L12.8 6.05991H9.64002L9.72002 6.0699Z" fill="currentColor"/></svg>`;static genericPin=T`<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><circle class="ueb-pin-tofill" cx="16" cy="16" r="14" fill="none" stroke="currentColor" stroke-width="5"/><path d="M 34 6 L 34 26 L 42 16 Z" fill="currentColor"/></svg>`;static loopNode=T`<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=T`<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 referencePin=T`<svg viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><polygon class="ueb-pin-tofill" points="4 16 16 4 28 16 16 28" stroke="currentColor" stroke-width="5"/></svg>`}class nt extends Ze{static properties={...super.properties,source:{type:String,reflect:!0},destination:{type:String,reflect:!0},dragging:{type:Boolean,attribute:"data-dragging",converter:ne.booleanConverter,reflect:!0},originatesFromInput:{type:Boolean,attribute:!1},svgPathD:{type:String,attribute:!1},linkMessageIcon:{type:String,attribute:!1},linkMessageText:{type:String,attribute:!1}};#F;get sourcePin(){return this.#F}set sourcePin(e){this.#j(e,!1)}#V;get destinationPin(){return this.#V}set destinationPin(e){this.#j(e,!0)}#z;#U;#K;#W;#X;linkMessageIcon=O;linkMessageText=O;pathElement;constructor(e,t){super({},new tt);const i=this;this.#z=()=>i.remove(),this.#U=e=>i.addSourceLocation(e.detail.value),this.#K=e=>i.addDestinationLocation(e.detail.value),this.#W=e=>i.setSourceLocation(),this.#X=e=>i.setDestinationLocation(),this.source=null,this.destination=null,this.dragging=!1,this.originatesFromInput=!1,this.startPercentage=0,this.svgPathD="",this.startPixels=0,e&&(this.sourcePin=e,t||(this.toX=this.fromX,this.toY=this.fromY)),t&&(this.destinationPin=t,e||(this.fromX=this.toX,this.fromY=this.toY)),this.#q()}#j(e,t){const i=()=>t?this.destinationPin:this.sourcePin;if(i()!=e){if(i()){const e=i().getNodeElement();e.removeEventListener(J.nodeDeleteEventName,this.#z),e.removeEventListener(J.nodeDragEventName,t?this.#K:this.#U),e.removeEventListener(J.nodeReflowEventName,t?this.#X:this.#W),this.#Y()}if(t?this.#V=e:this.#F=e,i()){const e=i().getNodeElement();e.addEventListener(J.nodeDeleteEventName,this.#z),e.addEventListener(J.nodeDragEventName,t?this.#K:this.#U),e.addEventListener(J.nodeReflowEventName,t?this.#X:this.#W),t?this.setDestinationLocation():(this.setSourceLocation(),this.originatesFromInput=this.sourcePin.isInput()),this.#q()}}}#q(){this.sourcePin&&this.destinationPin&&(this.sourcePin.linkTo(this.destinationPin),this.destinationPin.linkTo(this.sourcePin))}#Y(){this.sourcePin&&this.destinationPin&&(this.sourcePin.unlinkFrom(this.destinationPin),this.destinationPin.unlinkFrom(this.sourcePin))}disconnectedCallback(){super.disconnectedCallback(),this.#Y(),this.sourcePin=null,this.destinationPin=null}setSourceLocation(e=null){if(null==e){const t=this;if(!this.hasUpdated||!this.sourcePin.hasUpdated)return void Promise.all([this.updateComplete,this.sourcePin.updateComplete]).then((()=>t.setSourceLocation()));e=this.sourcePin.template.getLinkLocation()}const[t,i]=e;this.fromX=t,this.fromY=i}setDestinationLocation(e=null){if(null==e){const t=this;if(!this.hasUpdated||!this.destinationPin.hasUpdated)return void Promise.all([this.updateComplete,this.destinationPin.updateComplete]).then((()=>t.setDestinationLocation()));e=this.destinationPin.template.getLinkLocation()}this.toX=e[0],this.toY=e[1]}startDragging(){this.dragging=!0}finishDragging(){this.dragging=!1}removeMessage(){this.linkMessageIcon="",this.linkMessageText=""}setMessageConvertType(){this.linkMessageIcon="ueb-icon-conver-type",this.linkMessageText=`Convert ${this.sourcePin.pinType} to ${this.destinationPin.pinType}.`}setMessageCorrect(){this.linkMessageIcon=it.correct,this.linkMessageText=O}setMessageReplace(){this.linkMessageIcon=it.correct,this.linkMessageText=O}setMessageDirectionsIncompatible(){this.linkMessageIcon="ueb-icon-directions-incompatible",this.linkMessageText=T`Directions are not compatbile.`}setMessagePlaceNode(){this.linkMessageIcon="ueb-icon-place-node",this.linkMessageText=T`Place a new node.`}setMessageReplaceLink(){this.linkMessageIcon="ueb-icon-replace-link",this.linkMessageText=T`Replace existing input connections.`}setMessageSameNode(){this.linkMessageIcon="ueb-icon-same-node",this.linkMessageText=T`Both are on the same node.`}setMEssagetypesIncompatible(){this.linkMessageIcon="ueb-icon-types-incompatible",this.linkMessageText=T`${this.sourcePin.pinType} is not compatible with ${this.destinationPin.pinType}.`}}class st extends je{static properties={...super.properties,selected:{type:Boolean,attribute:"data-selected",reflect:!0,converter:ne.booleanConverter}};constructor(...e){super(...e),this.selected=!1,this.listeningDrag=!1;let t=this;this.dragHandler=e=>t.addLocation(e.detail.value)}connectedCallback(){super.connectedCallback(),this.setSelected(this.selected)}disconnectedCallback(){super.disconnectedCallback(),this.blueprint.removeEventListener(J.nodeDragGeneralEventName,this.dragHandler)}setSelected(e=!0){this.selected=e,this.blueprint&&(this.selected?(this.listeningDrag=!0,this.blueprint.addEventListener(J.nodeDragGeneralEventName,this.dragHandler)):(this.blueprint.removeEventListener(J.nodeDragGeneralEventName,this.dragHandler),this.listeningDrag=!1))}}class rt extends Ve{#Z;#J=null;#Q=e=>{if(!this.enteredPin){this.linkValid=!1,this.enteredPin=e.target;const t=this.link.sourcePin??this.target,i=this.enteredPin;t.nodeElement.getType()==J.nodeType.knot||i.nodeElement.getType()==J.nodeType.knot?(this.link.setMessageCorrect(),this.linkValid=!0):t.getNodeElement()==i.getNodeElement()?this.link.setMessageSameNode():t.isOutput()==i.isOutput()||t.isOutput()==i.isOutput()?this.link.setMessageDirectionsIncompatible():this.blueprint.getLinks([t,i]).length?(this.link.setMessageReplaceLink(),this.linkValid=!0):(this.link.setMessageCorrect(),this.linkValid=!0)}};#ee=e=>{this.enteredPin==e.target&&(this.enteredPin=null,this.linkValid=!1,this.link?.setMessagePlaceNode())};link;enteredPin;linkValid=!1;startDrag(e){this.target.nodeElement.getType()==J.nodeType.knot&&(this.#J=this.target),this.link=new(Ke.getConstructor("ueb-link"))(this.target,null),this.blueprint.linksContainerElement.prepend(this.link),this.link.setMessagePlaceNode(),this.#Z=this.blueprint.querySelectorAll("ueb-pin"),this.#Z.forEach((e=>{if(e!=this.target){const t=e.template.getClickableElement();t.addEventListener("mouseenter",this.#Q),t.addEventListener("mouseleave",this.#ee)}})),this.link.startDragging(),this.link.setDestinationLocation(e)}dragTo(e,t){this.link.setDestinationLocation(e)}endDrag(){if(this.#Z.forEach((e=>{e.removeEventListener("mouseenter",this.#Q),e.removeEventListener("mouseleave",this.#ee)})),this.enteredPin&&this.linkValid){if(this.#J){const e=this.#J!==this.link.sourcePin?this.link.sourcePin:this.enteredPin;if(this.#J.isInput()&&e.isInput()||this.#J.isOutput()&&e.isOutput()){const e=this.#J.isInput()?this.#J.nodeElement.template.outputPin:this.#J.nodeElement.template.inputPin;this.#J===this.link.sourcePin?this.link.sourcePin=e:this.enteredPin=e}}this.blueprint.addGraphElement(this.link),this.link.destinationPin=this.enteredPin,this.link.removeMessage(),this.link.finishDragging()}else this.link.finishDragging(),this.link.remove();this.enteredPin=null,this.link=null,this.#Z=null}}class ot extends Oe{#te;get iconElement(){return this.#te}connectedCallback(){super.connectedCallback(),this.element.nodeElement=this.element.closest("ueb-node")}createInputObjects(){return[new rt(this.getClickableElement(),this.element.blueprint,{moveEverywhere:!0})]}render(){const e=T`<div class="ueb-pin-icon">${this.renderIcon()}</div>`,t=T`<div class="ueb-pin-content">${this.renderName()} ${this.element.isInput()&&!this.element.entity.bDefaultValueIsIgnored?this.renderInput():T``}</div>`;return T`<div class="ueb-pin-wrapper">${this.element.isInput()?T`${e}${t}`:T`${t}${e}`}</div>`}renderIcon(){return it.genericPin}renderName(){return T`<span class="ueb-pin-name">${this.element.getPinDisplayName()}</span>`}renderInput(){return T``}updated(e){if(this.element.isInput()&&e.has("isLinked")){const e=this.element.nodeElement;e.addNextUpdatedCallbacks((()=>e.dispatchReflowEvent())),e.requestUpdate()}}firstUpdated(e){super.firstUpdated(e),this.element.style.setProperty("--ueb-pin-color-rgb",J.pinColor[this.element.pinType]),this.#te=this.element.querySelector(".ueb-pin-icon")??this.element}getLinkLocation(){const e=this.iconElement.getBoundingClientRect(),t=ne.convertLocation([(e.left+e.right)/2,(e.top+e.bottom)/2],this.element.blueprint.gridElement);return this.element.blueprint.compensateTranslation(t)}getClickableElement(){return this.element}}class at extends ot{render(){return this.element.isOutput()?T`<div class="ueb-pin-icon">${this.renderIcon()}</div>`:T``}getLinkLocation(){const e=(this.element.isInput()?this.element.nodeElement.template.outputPin.template:this).iconElement.getBoundingClientRect(),t=ne.convertLocation([this.element.isInput()?e.left+1:e.right+2,(e.top+e.bottom)/2],this.element.blueprint.gridElement);return this.element.blueprint.compensateTranslation(t)}}class lt extends Ve{clicked(e){this.options.repositionOnClick&&(this.target.setLocation(this.stepSize>1?ne.snapToGrid(e,this.stepSize):e),this.clickedOffset=[0,0])}dragTo(e,t){const i=[this.target.locationX,this.target.locationY],[n,s]=this.stepSize>1?[ne.snapToGrid(e,this.stepSize),ne.snapToGrid(i,this.stepSize)]:[e,i];0==(t=[n[0]-this.mouseLocation[0],n[1]-this.mouseLocation[1]])[0]&&0==t[1]||(t[0]+=s[0]-this.target.locationX,t[1]+=s[1]-this.target.locationY,this.dragAction(n,t),this.mouseLocation=n)}dragAction(e,t){this.target.setLocation([e[0]-this.clickedOffset[0],e[1]-this.clickedOffset[1]])}}class ut extends Oe{getDraggableElement(){return this.element}createDraggableObject(){return new lt(this.element,this.element.blueprint,{draggableElement:this.getDraggableElement()})}createInputObjects(){return[...super.createInputObjects(),this.createDraggableObject()]}}class ct extends ut{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 ht extends lt{startDrag(){this.target.selected||(this.blueprint.unselectAll(),this.target.setSelected(!0))}dragAction(e,t){this.target.dispatchDragEvent(t)}unclicked(){this.started||(this.blueprint.unselectAll(),this.target.setSelected(!0))}}class dt extends ct{getDraggableElement(){return this.element}createDraggableObject(){return new ht(this.element,this.element.blueprint,{draggableElement:this.getDraggableElement()})}firstUpdated(e){super.firstUpdated(e),this.element.selected&&!this.element.listeningDrag&&this.element.setSelected(!0)}}class pt extends dt{static#ie={[J.nodeType.callFunction]:it.functionSymbol,[J.nodeType.forEachLoop]:it.forEachLoop,[J.nodeType.forLoop]:it.loopNode,[J.nodeType.ifThenElse]:it.branchNode,[J.nodeType.whileLoop]:it.loopNode,default:it.functionSymbol};toggleAdvancedDisplayHandler=()=>{this.element.toggleShowAdvancedPinDisplay(),this.element.addNextUpdatedCallbacks((()=>this.element.dispatchReflowEvent()),!0)};constructed(e){super.constructed(e)}render(){return T`<div class="ueb-node-border"><div class="ueb-node-wrapper"><div class="ueb-node-top"><div class="ueb-node-name"><span class="ueb-node-name-symbol">${this.renderNodeIcon()}</span> <span class="ueb-node-name-text ueb-ellipsis-nowrap-text">${this.renderNodeName()}</span></div></div><div class="ueb-node-content"><div class="ueb-node-inputs"></div><div class="ueb-node-outputs"></div></div>${"DevelopmentOnly"==this.element.enabledState?.toString()?T`<div class="ueb-node-developmentonly"><span class="ueb-node-developmentonly-text">Development Only</span></div>`:O} ${this.element.advancedPinDisplay?T`<div class="ueb-node-expansion" @click="${this.toggleAdvancedDisplayHandler}">${it.expandIcon}</div>`:O}</div></div>`}renderNodeIcon(){let e=pt.#ie[this.element.getType()];return e||(this.element.entity.getClass()===J.nodeType.macro?it.macro:pt.#ie.default)}renderNodeName(){return this.element.getNodeDisplayName()}firstUpdated(e){super.firstUpdated(e),this.setupPins(),Promise.all(this.element.getPinElements().map((e=>e.updateComplete))).then((()=>this.element.dispatchReflowEvent()))}setupPins(){const e=this.element.querySelector(".ueb-node-inputs"),t=this.element.querySelector(".ueb-node-outputs");this.element.nodeNameElement=this.element.querySelector(".ueb-node-name-text"),this.element.getPinElements().forEach((i=>{i.isInput()?e.appendChild(i):i.isOutput()&&t.appendChild(i)}))}getPinElements(e){return e.querySelectorAll("ueb-pin")}createPinElements(){return this.element.getPinEntities().filter((e=>!e.isHidden())).map((e=>new(Ke.getConstructor("ueb-pin"))(e,void 0,this.element)))}linksChanged(){}}class mt extends pt{static#ne=new Set;#se=null;#re;get inputPin(){return this.#re}#oe;get outputPin(){return this.#oe}findDirectionaPin(e){if(e.nodeElement.getType()!==J.nodeType.knot||mt.#ne.has(e))return mt.#ne.clear(),!0;mt.#ne.add(e);for(let t of e.getLinks().map((e=>this.element.blueprint.getPin(e))))if(this.findDirectionaPin(t))return!0;return!1}render(){return T`<div class="ueb-node-border"></div>`}setupPins(){this.element.getPinElements().forEach((e=>this.element.querySelector(".ueb-node-border").appendChild(e)))}getPinElements(e){return e.querySelectorAll("ueb-pin")}createPinElements(){const e=this.element.getPinEntities().filter((e=>!e.isHidden())),t=e[e[0].isInput()?0:1],i=e[e[0].isOutput()?0:1],n=Ke.getConstructor("ueb-pin");return[this.#re=new n(t,new at,this.element),this.#oe=new n(i,new at,this.element)]}linksChanged(){}}class gt extends st{static#ae={"/Script/BlueprintGraph.K2Node_Knot":mt};static properties={...st.properties,nodeClass:{type:String,attribute:"data-type",reflect:!0},name:{type:String,attribute:"data-name",reflect:!0},advancedPinDisplay:{type:String,attribute:"data-advanced-display",converter:le.attributeConverter,reflect:!0},enabledState:{type:String,attribute:"data-enabled-state",reflect:!0},nodeDisplayName:{type:String,attribute:!1},pureFunction:{type:Boolean,converter:ne.booleanConverter,attribute:"data-pure-function",reflect:!0}};static dragEventName=J.nodeDragEventName;static dragGeneralEventName=J.nodeDragGeneralEventName;get blueprint(){return super.blueprint}set blueprint(e){super.blueprint=e,this.#le.forEach((t=>t.blueprint=e))}#ue;get nodeNameElement(){return this.#ue}set nodeNameElement(e){this.#ue=e}#le;constructor(e,t){super(e,t??new(gt.getTypeTemplate(e))),this.#le=this.template.createPinElements(),this.nodeClass=this.entity.getType(),this.name=this.entity.getObjectName(),this.advancedPinDisplay=this.entity.AdvancedPinDisplay?.toString(),this.enabledState=this.entity.EnabledState,this.nodeDisplayName=this.entity.getDisplayName(),this.pureFunction=this.entity.bIsPureFunc,this.dragLinkObjects=[],super.setLocation([this.entity.NodePosX.value,this.entity.NodePosY.value]),this.entity.subscribe("AdvancedPinDisplay",(e=>this.advancedPinDisplay=e)),this.entity.subscribe("Name",(e=>this.name=e))}static getTypeTemplate(e){return gt.#ae[e.getClass()]??pt}static fromSerializedObject(e){e=e.trim();let t=te.getSerializer(ke).deserialize(e);return new gt(t)}disconnectedCallback(){super.disconnectedCallback(),this.dispatchDeleteEvent()}getType(){return this.entity.getType()}getNodeName(){return this.entity.getObjectName()}getNodeDisplayName(){return this.entity.getDisplayName()}sanitizeLinks(e=[]){this.getPinElements().forEach((t=>t.sanitizeLinks(e)))}rename(e){if(this.entity.Name==e)return!1;for(let t of this.getPinElements())for(let i of t.getLinks())this.blueprint.getPin(i).redirectLink(t,new be({objectName:e,pinGuid:t.entity.PinId}));this.entity.Name=e}getPinElements(){return this.#le}getPinEntities(){return this.entity.CustomProperties.filter((e=>e instanceof Se))}setLocation(e=[0,0]){let t=this.entity.NodePosX.constructor;this.entity.NodePosX=new t(e[0]),this.entity.NodePosY=new t(e[1]),super.setLocation(e)}dispatchDeleteEvent(){let e=new CustomEvent(J.nodeDeleteEventName);this.dispatchEvent(e)}dispatchReflowEvent(){let e=new CustomEvent(J.nodeReflowEventName);this.dispatchEvent(e)}setShowAdvancedPinDisplay(e){this.entity.AdvancedPinDisplay=new le(e?"Shown":"Hidden")}toggleShowAdvancedPinDisplay(){this.setShowAdvancedPinDisplay("Shown"!=this.entity.AdvancedPinDisplay?.toString())}}class vt{constructor(e=(e=>e),t=null){this.array=new Uint32Array(t),this.comparisonValueSupplier=e,this.length=0,this.currentPosition=0}get(e){return e>=0&&e<this.length?this.array[e]:null}getArray(){return this.array}getPosition(e){let t=0,i=this.length;for(;t<i;){let n=Math.floor((t+i)/2);this.comparisonValueSupplier(this.array[n])<e?t=n+1:i=n}return t}reserve(e){if(this.array.length<e){let t=new Uint32Array(e);t.set(this.array),this.array=t}}insert(e,t=null){let i=this.getPosition(this.comparisonValueSupplier(e));return(i<this.currentPosition||null!=t&&i==this.currentPosition&&this.comparisonValueSupplier(e)<t)&&++this.currentPosition,this.shiftRight(i),this.array[i]=e,++this.length,i}remove(e){let t=this.getPosition(this.comparisonValueSupplier(e));this.array[t]==e&&this.removeAt(t)}removeAt(e){return e<this.currentPosition&&--this.currentPosition,this.shiftLeft(e),--this.length,e}getNext(){return this.currentPosition>=0&&this.currentPosition<this.length?this.get(this.currentPosition):null}getNextValue(){return this.currentPosition>=0&&this.currentPosition<this.length?this.comparisonValueSupplier(this.get(this.currentPosition)):Number.MAX_SAFE_INTEGER}getPrev(){return this.currentPosition>0?this.get(this.currentPosition-1):null}getPrevValue(){return this.currentPosition>0?this.comparisonValueSupplier(this.get(this.currentPosition-1)):Number.MIN_SAFE_INTEGER}shiftLeft(e,t=1){this.array.set(this.array.subarray(e+t),e)}shiftRight(e,t=1){this.array.set(this.array.subarray(e,-t),e+t)}}class bt{constructor(e,t,i,n){this.initialPosition=e,this.finalPosition=e,this.metadata=new Array(t.length),this.primaryOrder=new vt((e=>this.metadata[e].primaryBoundary)),this.secondaryOrder=new vt((e=>this.metadata[e].secondaryBoundary)),this.selectFunc=n,this.rectangles=t,this.primaryOrder.reserve(this.rectangles.length),this.secondaryOrder.reserve(this.rectangles.length),t.forEach(((e,t)=>{let s={primaryBoundary:this.initialPosition[0],secondaryBoundary:this.initialPosition[1],rectangle:t,onSecondaryAxis:!1};this.metadata[t]=s,n(e,!1);const r=i(e);this.initialPosition[1]<r.secondaryInf?s.secondaryBoundary=r.secondaryInf:r.secondarySup<this.initialPosition[1]?s.secondaryBoundary=r.secondarySup:s.onSecondaryAxis=!0,this.initialPosition[0]<r.primaryInf?(s.primaryBoundary=r.primaryInf,this.primaryOrder.insert(t)):r.primarySup<this.initialPosition[0]?(s.primaryBoundary=r.primarySup,this.primaryOrder.insert(t)):r.secondarySup<this.initialPosition[1]||this.initialPosition[1]<r.secondaryInf?this.secondaryOrder.insert(t):n(e,!0)})),this.primaryOrder.currentPosition=this.primaryOrder.getPosition(this.initialPosition[0]),this.secondaryOrder.currentPosition=this.secondaryOrder.getPosition(this.initialPosition[1]),this.computeBoundaries()}computeBoundaries(){this.boundaries={primaryN:{v:this.primaryOrder.getPrevValue(),i:this.primaryOrder.getPrev()},primaryP:{v:this.primaryOrder.getNextValue(),i:this.primaryOrder.getNext()},secondaryN:{v:this.secondaryOrder.getPrevValue(),i:this.secondaryOrder.getPrev()},secondaryP:{v:this.secondaryOrder.getNextValue(),i:this.secondaryOrder.getNext()}}}selectTo(e){const t=[Math.sign(e[0]-this.initialPosition[0]),Math.sign(e[1]-this.initialPosition[1])],i=(i,n)=>{if(this.metadata[i].onSecondaryAxis)this.selectFunc(this.rectangles[i],n);else if(n){this.secondaryOrder.insert(i,e[1]);const n=this.metadata[i].secondaryBoundary;Math.sign(e[1]-n)==t[1]&&Math.sign(n-this.initialPosition[1])==t[1]&&this.selectFunc(this.rectangles[i],!0)}else this.selectFunc(this.rectangles[i],!1),this.secondaryOrder.remove(i);this.computeBoundaries(),this.selectTo(e)};e[0]<this.boundaries.primaryN.v?(--this.primaryOrder.currentPosition,i(this.boundaries.primaryN.i,this.initialPosition[0]>this.boundaries.primaryN.v&&e[0]<this.initialPosition[0])):e[0]>this.boundaries.primaryP.v&&(++this.primaryOrder.currentPosition,i(this.boundaries.primaryP.i,this.initialPosition[0]<this.boundaries.primaryP.v&&this.initialPosition[0]<e[0]));const n=(t,i)=>{this.selectFunc(this.rectangles[t],i),this.computeBoundaries(),this.selectTo(e)};e[1]<this.boundaries.secondaryN.v?(--this.secondaryOrder.currentPosition,n(this.boundaries.secondaryN.i,this.initialPosition[1]>this.boundaries.secondaryN.v&&e[1]<this.initialPosition[1])):e[1]>this.boundaries.secondaryP.v&&(++this.secondaryOrder.currentPosition,n(this.boundaries.secondaryP.i,this.initialPosition[1]<this.boundaries.secondaryP.v&&this.initialPosition[1]<e[1])),this.finalPosition=e}}class ft extends Je{}class yt extends Ze{constructor(){super({},new ft),this.selectionModel=null}beginSelect(e){this.blueprint.selecting=!0,this.setBothLocations(e),this.selectionModel=new bt(e,this.blueprint.getNodes(),this.blueprint.nodeBoundariesSupplier,this.blueprint.nodeSelectToggleFunction)}selectTo(e){this.selectionModel.selectTo(e),this.toX=e[0],this.toY=e[1]}endSelect(){this.blueprint.selecting=!1,this.selectionModel=null,this.fromX=0,this.fromY=0,this.toX=0,this.toY=0}}class Et extends Fe{static properties={selecting:{type:Boolean,attribute:"data-selecting",reflect:!0,converter:ne.booleanConverter},scrolling:{type:Boolean,attribute:"data-scrolling",reflect:!0,converter:ne.booleanConverter},focused:{type:Boolean,attribute:"data-focused",reflect:!0,converter:ne.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 styles=Ye.styles;#ce=new Map;nodes=[];links=[];mousePosition=[0,0];gridElement;viewportElement;overlayElement;selectorElement;linksContainerElement;nodesContainerElement;headerElement;focused=!1;waitingExpandUpdate=!1;nodeBoundariesSupplier=e=>{let t=e.getBoundingClientRect(),i=this.nodesContainerElement.getBoundingClientRect();const n=1/this.getScale();return{primaryInf:(t.left-i.left)*n,primarySup:(t.right-i.right)*n,secondaryInf:(t.top-i.top)*n,secondarySup:(t.bottom-i.bottom)*n}};nodeSelectToggleFunction=(e,t)=>{e.setSelected(t)};constructor(e=new J){super({},new Ye),this.selecting=!1,this.scrolling=!1,this.focused=!1,this.zoom=0,this.scrollX=J.expandGridSize,this.scrollY=J.expandGridSize,this.translateX=J.expandGridSize,this.translateY=J.expandGridSize}getGridDOMElement(){return this.gridElement}disconnectedCallback(){super.disconnectedCallback()}getScroll(){return[this.scrollX,this.scrollY]}setScroll([e,t],i=!1){this.scrollX=e,this.scrollY=t}scrollDelta(e,t=!1){const i=[2*J.expandGridSize,2*J.expandGridSize];let n=this.getScroll(),s=[n[0]+e[0],n[1]+e[1]],r=[0,0];for(let t=0;t<2;++t)e[t]<0&&s[t]<J.gridExpandThreshold*J.expandGridSize?r[t]=-1:e[t]>0&&s[t]>i[t]-J.gridExpandThreshold*J.expandGridSize&&(r[t]=1);0==r[0]&&0==r[1]||this.seamlessExpand(r),n=this.getScroll(),s=[n[0]+e[0],n[1]+e[1]],this.setScroll(s,t)}scrollCenter(){const e=this.getScroll(),t=[this.translateX-e[0],this.translateY-e[1]],i=this.getViewportSize().map((e=>e/2)),n=[t[0]-i[0],t[1]-i[1]];this.scrollDelta(n,!0)}getViewportSize(){return[this.viewportElement.clientWidth,this.viewportElement.clientHeight]}getScrollMax(){return[this.viewportElement.scrollWidth-this.viewportElement.clientWidth,this.viewportElement.scrollHeight-this.viewportElement.clientHeight]}snapToGrid(e){return ne.snapToGrid(e,J.gridSize)}seamlessExpand([e,t]){e=Math.round(e),t=Math.round(t);let i=this.getScale();[e,t]=[-e*J.expandGridSize,-t*J.expandGridSize],0!=e&&(this.scrollX+=e,e/=i),0!=t&&(this.scrollY+=t,t/=i),this.translateX+=e,this.translateY+=t}progressiveSnapToGrid(e){return J.expandGridSize*Math.round(e/J.expandGridSize+.5*Math.sign(e))}getZoom(){return this.zoom}setZoom(e,t){if((e=ne.clamp(e,J.minZoom,J.maxZoom))==this.zoom)return;let i=this.getScale();this.zoom=e,t&&requestAnimationFrame((e=>{t[0]+=this.translateX,t[1]+=this.translateY;let n=this.getScale()/i,s=[n*t[0],n*t[1]];this.scrollDelta([(s[0]-t[0])*i,(s[1]-t[1])*i])}))}getScale(){return parseFloat(getComputedStyle(this.gridElement).getPropertyValue("--ueb-scale"))}compensateTranslation([e,t]){return[e-=this.translateX,t-=this.translateY]}getNodes(e=!1){return e?this.nodes.filter((e=>e.selected)):this.nodes}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()))}getLinks([e,t]=[]){if(null==e!=t==null){const i=e??t;return this.links.filter((e=>e.sourcePin==i||e.destinationPin==i))}return null!=e&&null!=t?this.links.filter((i=>i.sourcePin==e&&i.destinationPin==t||i.sourcePin==t&&i.destinationPin==e)):this.links}getLink(e,t,i=!1){return this.links.find((n=>n.sourcePin==e&&n.destinationPin==t||i&&n.sourcePin==t&&n.destinationPin==e))}selectAll(){this.getNodes().forEach((e=>this.nodeSelectToggleFunction(e,!0)))}unselectAll(){this.getNodes().forEach((e=>this.nodeSelectToggleFunction(e,!1)))}addGraphElement(...e){for(let t of e)if(t.blueprint=this,t instanceof gt&&!this.nodes.includes(t)){const e=t.entity.getObjectName(),i=this.nodes.find((t=>t.entity.getObjectName()==e));if(i){let e=i.entity.getObjectName(!0);this.#ce[e]=this.#ce[e]??-1;do{++this.#ce[e]}while(this.nodes.find((t=>t.entity.getObjectName()==J.nodeName(e,this.#ce[e]))));i.rename(J.nodeName(e,this.#ce[e]))}this.nodes.push(t),this.nodesContainerElement?.appendChild(t)}else t instanceof nt&&!this.links.includes(t)&&(this.links.push(t),this.linksContainerElement&&!this.linksContainerElement.contains(t)&&this.linksContainerElement.appendChild(t));e.filter((e=>e instanceof gt)).forEach((t=>t.sanitizeLinks(e)))}removeGraphElement(...e){for(let t of e)if(t.closest("ueb-blueprint")==this){t.remove();let e=t instanceof gt?this.nodes:t instanceof nt?this.links:null;e?.splice(e.findIndex((e=>e===t)),1)}}setFocused(e=!0){if(this.focused==e)return;let t=new CustomEvent(e?"blueprint-focus":"blueprint-unfocus");this.focused=e,this.focused||this.unselectAll(),this.dispatchEvent(t)}dispatchEditTextEvent(e){const t=new CustomEvent(e?J.editTextEventName.begin:J.editTextEventName.end);this.dispatchEvent(t)}}customElements.define("ueb-blueprint",Et);class wt extends ut{#he;get locationChangeCallback(){return this.#he}set locationChangeCallback(e){this.#he=e}movementSpace;movementSpaceSize=[0,0];connectedCallback(){super.connectedCallback(),this.movementSpace=this.element.parentElement;const e=this.movementSpace.getBoundingClientRect();this.movementSpaceSize=[e.width,e.height]}createDraggableObject(){return new lt(this.element,this.element.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 St extends wt{adjustLocation([e,t]){const i=Math.round(this.movementSpaceSize[0]/2);e-=i,t=-(t-i);let[n,s]=ne.getPolarCoordinates([e,t]);return n=Math.min(n,i),[e,t]=ne.getCartesianCoordinates([n,s]),this.locationChangeCallback?.(e/i,t/i),[e=Math.round(e+i),t=Math.round(-t+i)]}}class Pt extends je{windowElement;constructor(e,t){super(e,t)}connectedCallback(){super.connectedCallback(),this.windowElement=this.closest("ueb-window")}setLocation([e,t]){super.setLocation(this.template.adjustLocation([e,t]))}}class kt extends Pt{constructor(){super({},new St)}}class Ct extends wt{adjustLocation([e,t]){return e=ne.clamp(e,0,this.movementSpaceSize[0]),t=ne.clamp(t,0,this.movementSpaceSize[1]),this.locationChangeCallback?.(e/this.movementSpaceSize[0],1-t/this.movementSpaceSize[1]),[e,t]}}class xt extends Pt{constructor(){super({},new Ct)}}class Nt extends Oe{#de=()=>{this.element.blueprint.dispatchEditTextEvent(!0),this.element.selectOnFocus&&getSelection().selectAllChildren(this.element)};#pe=()=>{this.element.blueprint.dispatchEditTextEvent(!1),document.getSelection()?.removeAllRanges()};#me=e=>e.target.querySelectorAll("br").forEach((e=>e.remove()));#ge=e=>{"Enter"!=e.code||e.shiftKey||e.target.blur()};constructed(e){super.constructed(e),this.element.classList.add("ueb-pin-input-content"),this.element.setAttribute("role","textbox"),this.element.contentEditable="true"}connectedCallback(){this.element.addEventListener("focus",this.#de),this.element.addEventListener("focusout",this.#pe),this.element.singleLine&&this.element.addEventListener("input",this.#me),this.element.blurOnEnter&&this.element.addEventListener("keydown",this.#ge)}cleanup(){this.element.removeEventListener("focus",this.#de),this.element.removeEventListener("focusout",this.#pe),this.element.singleLine&&this.element.removeEventListener("input",this.#me),this.element.blurOnEnter&&this.element.removeEventListener("keydown",this.#ge)}}class At extends Fe{static properties={...super.properties,singleLine:{type:Boolean,attribute:"data-single-line",converter:ne.booleanConverter,reflect:!0},selectOnFocus:{type:Boolean,attribute:"data-select-focus",converter:ne.booleanConverter,reflect:!0},blurOnEnter:{type:Boolean,attribute:"data-blur-enter",converter:ne.booleanConverter,reflect:!0}};constructor(){super({},new Nt),this.singleLine=!1,this.selectOnFocus=!0,this.blurOnEnter=!0}}class Lt extends Ve{constructor(e,t,i={}){i.consumeEvent=!0,super(e,t,i)}}class $t extends ot{#ve;#be=e=>this.element.setDefaultValue(this.#ve.checked);firstUpdated(e){super.firstUpdated(e),this.#ve=this.element.querySelector(".ueb-pin-input"),this.#ve.addEventListener("change",this.#be)}cleanup(){super.cleanup(),this.#ve.removeEventListener("change",this.#be)}createInputObjects(){return[...super.createInputObjects(),new Lt(this.#ve,this.element.blueprint)]}renderInput(){return T`<input type="checkbox" class="ueb-pin-input" ?checked="${this.element.defaultValue}">`}}class Tt extends ot{renderIcon(){return it.execPin}renderName(){let e=this.element.entity.PinName;if(this.element.entity.PinFriendlyName)e=this.element.entity.PinFriendlyName.toString();else if("execute"===e||"then"===e)return T``;return T`${ne.formatStringName(e)}`}}class Mt extends ot{static singleLineInput=!1;static selectOnFocus=!0;#fe;get inputContentElements(){return this.#fe}static stringFromInputToUE(e){return e.replace(/(?=\n\s*)\n$/,"").replaceAll("\n","\\r\n")}static stringFromUEToInput(e){return e.replaceAll(/(?:\r|(?<=(?:^|[^\\])(?:\\\\)*)\\r)(?=\n)/g,"").replace(/(?<=\n\s*)$/,"\n")}#ye=()=>this.setInputs(this.getInputs(),!0);firstUpdated(e){super.firstUpdated(e),this.#fe=[...this.element.querySelectorAll("ueb-input")],this.#fe.length&&this.#fe.forEach((e=>{e.addEventListener("focusout",this.#ye)}))}cleanup(){super.cleanup(),this.#fe.forEach((e=>{e.removeEventListener("focusout",this.#ye)}))}createInputObjects(){return[...super.createInputObjects(),...this.#fe.map((e=>new Lt(e,this.element.blueprint)))]}getInput(){return this.getInputs().reduce(((e,t)=>e+t),"")}getInputs(){return this.#fe.map((e=>ne.clearHTMLWhitespace(e.innerHTML)))}setInputs(e=[],t=!0){this.#fe.forEach(this.constructor.singleLineInput?(t,i)=>t.innerText=e[i]:(t,i)=>t.innerText=e[i].replaceAll("\n","")),t&&this.setDefaultValue(e.map((e=>Mt.stringFromInputToUE(e))),e),this.element.addNextUpdatedCallbacks((()=>this.element.nodeElement.dispatchReflowEvent()))}setDefaultValue(e=[],t=e){this.element.setDefaultValue(e.join(""))}renderInput(){const e=this.constructor.singleLineInput,t=this.constructor.selectOnFocus;return T`<div class="ueb-pin-input"><ueb-input .singleLine="${e}" .selectOnFocus="${t}" .innerText="${Mt.stringFromUEToInput(this.element.entity.DefaultValue.toString())}"></ueb-input></div>`}}class Ot extends Mt{static singleLineInput=!0;setInputs(e=[],t=!1){e&&0!=e.length||(e=[this.getInput()]);let i=[];for(const t of e){let e=parseFloat(t);isNaN(e)&&(e=0,!1),i.push(e)}super.setInputs(e,!1),this.setDefaultValue(i,e)}setDefaultValue(e=[],t){this.element.setDefaultValue(e[0])}}class Dt extends Ot{setDefaultValue(e=[],t=e){this.element.setDefaultValue(new ue(e[0]))}renderInput(){return T`<div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${this.element.entity.DefaultValue?.toString()??"0"}"></ueb-input></div>`}}
|
||
/**
|
||
* @license
|
||
* Copyright 2017 Google LLC
|
||
* SPDX-License-Identifier: BSD-3-Clause
|
||
*/const Ht=1;
|
||
/**
|
||
* @license
|
||
* Copyright 2018 Google LLC
|
||
* SPDX-License-Identifier: BSD-3-Clause
|
||
*/
|
||
const It=(e=>(...t)=>({_$litDirective$:e,values:t}))(class extends class{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)}}{constructor(e){var t;if(super(e),e.type!==Ht||"style"!==e.name||(null===(t=e.strings)||void 0===t?void 0:t.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(e){return Object.keys(e).reduce(((t,i)=>{const n=e[i];return null==n?t:t+`${i=i.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${n};`}),"")}update(e,[t]){const{style:i}=e.element;if(void 0===this.vt){this.vt=new Set;for(const e in t)this.vt.add(e);return this.render(t)}this.vt.forEach((e=>{null==t[e]&&(this.vt.delete(e),e.includes("-")?i.removeProperty(e):i[e]="")}));for(const e in t){const n=t[e];null!=n&&(this.vt.add(e),e.includes("-")?i.setProperty(e,n):i[e]=n)}return M}});class _t extends ct{toggleAdvancedDisplayHandler;getDraggableElement(){return this.element.querySelector(".ueb-window-top")}createDraggableObject(){return new lt(this.element,this.element.blueprint,{draggableElement:this.getDraggableElement(),ignoreTranslateCompensate:!0,movementSpace:this.element.blueprint,stepSize:1})}render(){return T`<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()}">${it.close}</div></div><div class="ueb-window-content">${this.renderContent()}</div></div>`}renderWindowName(){return T`Window`}renderContent(){return T``}apply(){this.element.dispatchEvent(new CustomEvent(J.windowApplyEventName)),this.element.remove()}cancel(){this.element.dispatchEvent(new CustomEvent(J.windowCancelEventName)),this.element.remove()}}class Bt extends _t{#Ee;#we;#Se;#Pe;#ke;#Ce;#xe;#Ne;#Ae;#Le;#$e=e=>{const t=ne.clearHTMLWhitespace(e.target.innerHTML),i=parseInt(t,16);isNaN(i)||(this.color.setFromRGBANumber(i),this.element.requestUpdate())};#Te=e=>{const t=ne.clearHTMLWhitespace(e.target.innerHTML),i=parseInt(t,16);isNaN(i)||(this.color.setFromSRGBANumber(i),this.element.requestUpdate())};#Me=e=>t=>{"Enter"==t.code&&(t.preventDefault(),e(t))};#Oe=new pe;get color(){return this.#Oe}set color(e){e.toNumber()!=this.color?.toNumber()&&(this.element.requestUpdate("color",this.#Oe),this.#Oe=e)}#De=new pe;get fullColor(){return this.#De}#He;get initialColor(){return this.#He}#Ie=new pe;#_e(e,t,i=!1){const n=this.color.toRGBAString(),s=`${n.substring(0,2*e)}${t}${n.substring(2+2*e)}`;return i?`${s.substring(0,6)}FF`:s}connectedCallback(){super.connectedCallback(),this.#He=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.#Ee=this.element.querySelector(".ueb-color-picker-wheel ueb-color-handler"),this.#we=this.element.querySelector(".ueb-color-picker-saturation ueb-ui-slider"),this.#Se=this.element.querySelector(".ueb-color-picker-value ueb-ui-slider"),this.#Pe=this.element.querySelector(".ueb-color-picker-r ueb-ui-slider"),this.#ke=this.element.querySelector(".ueb-color-picker-g ueb-ui-slider"),this.#Ce=this.element.querySelector(".ueb-color-picker-b ueb-ui-slider"),this.#xe=this.element.querySelector(".ueb-color-picker-a ueb-ui-slider"),this.#Ne=this.element.querySelector(".ueb-color-picker-h ueb-ui-slider"),this.#Ae=this.element.querySelector(".ueb-color-picker-s ueb-ui-slider"),this.#Le=this.element.querySelector(".ueb-color-picker-v ueb-ui-slider"),this.#Ee.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.#we.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,t,this.color.V.value,this.color.A.value),this.element.requestUpdate()},this.#Se.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,this.color.S.value,t,this.color.A.value),this.element.requestUpdate()},this.#Pe.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(e,this.color.G.value,this.color.B.value,this.color.A.value),this.element.requestUpdate()},this.#ke.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(this.color.R.value,e,this.color.B.value,this.color.A.value),this.element.requestUpdate()},this.#Ce.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(this.color.R.value,this.color.G.value,e,this.color.A.value),this.element.requestUpdate()},this.#xe.template.locationChangeCallback=(e,t)=>{this.color.setFromRGBA(this.color.R.value,this.color.G.value,this.color.B.value,e),this.element.requestUpdate()},this.#Ne.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(e,this.color.S.value,this.color.V.value,this.color.A.value),this.element.requestUpdate()},this.#Ae.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,e,this.color.V.value,this.color.A.value),this.element.requestUpdate()},this.#Le.template.locationChangeCallback=(e,t)=>{this.color.setFromHSVA(this.color.H.value,this.color.S.value,e,this.color.A.value),this.element.requestUpdate()}}renderSlider(e){let t="",i=0,n="";const s=e=>`linear-gradient(to right, #${this.#_e(e,"00",!0)}, #${this.#_e(e,"ff",!0)})`;switch(e){case 0:t="r",i=this.color.R.value,n=s(e);break;case 1:t="g",i=this.color.G.value,n=s(e);break;case 2:t="b",i=this.color.B.value,n=s(e);break;case 3:t="a",i=this.color.A.value,n=`${J.alphaPattern}, ${s(e)}`;break;case 4:t="h",i=360*this.color.H.value,n="linear-gradient(to right, #f00 0%, #ff0 16.666%, #0f0 33.333%, #0ff 50%, #00f 66.666%, #f0f 83.333%, #f00 100%)";break;case 5:t="s",i=this.color.S.value,n=`linear-gradient(to right,#${this.#Ie.setFromHSVA(this.color.H.value,0,this.color.V.value,1),this.#Ie.toRGBAString()},#${this.#Ie.setFromHSVA(this.color.H.value,1,this.color.V.value,1),this.#Ie.toRGBAString()})`;break;case 6:t="v",i=this.color.V.value,n=`linear-gradient(to right, #000, #${this.fullColor.toRGBAString()})`}return n=`background: ${n};`,T`<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="${ne.minDecimals(ne.roundDecimals(i,3))}"></span><ueb-ui-slider></ueb-ui-slider></div><div class="ueb-color-picker-gradient" style="${n}"></div></div></div>`}renderContent(){const e=2*this.color.H.value*Math.PI,t={"--ueb-color-r":this.color.R.toString(),"--ueb-color-g":this.color.G.toString(),"--ueb-color-b":this.color.B.toString(),"--ueb-color-a":this.color.A.toString(),"--ueb-color-h":this.color.H.toString(),"--ueb-color-s":this.color.S.toString(),"--ueb-color-v":this.color.V.toString(),"--ueb-color-wheel-x":100*(this.color.S.value*Math.cos(e)*.5+.5)+"%","--ueb-color-wheel-y":100*(this.color.S.value*Math.sin(e)*.5+.5)+"%"},i=this.color.toRGBAString(),n=this.color.toSRGBAString(),s=this.fullColor.toRGBAString();return T`<div class="ueb-color-picker" style="${It(t)}"><div class="ueb-color-picker-toolbar"><div class="ueb-color-picker-theme"></div><div class="ueb-color-picker-srgb"></div></div><div class="ueb-color-picker-main"><div class="ueb-color-picker-wheel"><ueb-color-handler></ueb-color-handler></div><div class="ueb-color-picker-saturation ueb-vertical-slider" style="background-color:#${s}"><ueb-ui-slider></ueb-ui-slider></div><div class="ueb-color-picker-value ueb-vertical-slider" style="background-color:#${s}"><ueb-ui-slider></ueb-ui-slider></div><div class="ueb-color-picker-preview">Old<div class="ueb-color-picker-preview-old" style="background:#${this.#He.toRGBAString()}"></div><div class="ueb-color-picker-preview-new"><div class="ueb-color-picker-preview-1" style="background:#${this.#_e(3,"FF")}"></div><div class="ueb-color-picker-preview-2" style="background:${`linear-gradient(#${i}, #${i}),${J.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.#$e}" @keydown="${this.#Me(this.#$e)}"></ueb-input></div></div><div class="ueb-color-control"><span class="ueb-color-control-label">Hex sRGB</span><div class="ueb-color-picker-hex-srgb ueb-text-input"><ueb-input .innerText="${n}" @focusout="${this.#Te}" @keydown="${this.#Me(this.#Te)}"></ueb-input></div></div></div></div><div class="ueb-buttons"><div class="ueb-color-picker-ok ueb-button" @click="${()=>this.apply()}">OK</div><div class="ueb-color-picker-cancel ueb-button" @click="${()=>this.cancel()}">Cancel</div></div></div>`}renderWindowName(){return T`Color Picker`}}class Rt extends ot{#ve;#Be;#Re=e=>{e.preventDefault(),this.element.blueprint.setFocused(!0),this.#Be=new(Ke.getConstructor("ueb-window"))({type:Bt,windowOptions:{getPinColor:()=>this.element.defaultValue,setPinColor:e=>this.element.setDefaultValue(e)}}),this.element.blueprint.append(this.#Be);const t=()=>{this.element.setDefaultValue(this.#Be.template.color)},i=()=>{this.#Be.removeEventListener(J.windowApplyEventName,t),this.#Be.removeEventListener(J.windowCloseEventName,i),this.#Be=null};this.#Be.addEventListener(J.windowApplyEventName,t),this.#Be.addEventListener(J.windowCloseEventName,i)};firstUpdated(e){super.firstUpdated(e),this.#ve=this.element.querySelector(".ueb-pin-input")}renderInput(){return T`<span class="ueb-pin-input" data-linear-color="${this.element.defaultValue.toString()}" @click="${this.#Re}" style="--ueb-linear-color:rgba(${this.element.defaultValue.toString()})"></span>`}}class Gt extends Mt{static singleLineInput=!0}class Ft extends Ot{setDefaultValue(e=[],t=e){this.element.setDefaultValue(e[0])}renderInput(){return T`<div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${Mt.stringFromUEToInput(ne.minDecimals(this.element.entity.DefaultValue))}"></ueb-input></div>`}}class jt extends ot{renderIcon(){return it.referencePin}}class Vt extends Ot{setDefaultValue(e=[],t=e){if(!(this.element.entity.DefaultValue instanceof fe))throw new TypeError("Expected DefaultValue to be a VectorEntity");let i=this.element.entity.DefaultValue;i.R=e[0],i.P=e[1],i.Y=e[2]}renderInput(){return T`<div class="ueb-pin-input-wrapper"><span class="ueb-pin-input-label">X</span><div class="ueb-pin-input"><span class="ueb-pin-input-content ueb-pin-input-x" role="textbox" contenteditable="true" .innerText="${Mt.stringFromUEToInput(this.element.entity.getDefaultValue().R.toString())}"></span></div><span class="ueb-pin-input-label">Y</span><div class="ueb-pin-input"><span class="ueb-pin-input-content ueb-pin-input-y" role="textbox" contenteditable="true" .innerText="${Mt.stringFromUEToInput(this.element.entity.getDefaultValue().P.toString())}"></span></div><span class="ueb-pin-input-label">Z</span><div class="ueb-pin-input"><span class="ueb-pin-input-content ueb-pin-input-z" role="textbox" contenteditable="true" .innerText="${Mt.stringFromUEToInput(this.element.entity.getDefaultValue().Y.toString())}"></span></div></div>`}}class zt extends Mt{}class Ut extends Ot{setDefaultValue(e,t){if(!(this.element.entity.DefaultValue instanceof Ee))throw new TypeError("Expected DefaultValue to be a VectorEntity");let i=this.element.entity.DefaultValue;i.X=e[0],i.Y=e[1],i.Z=e[2]}renderInput(){return T`<div class="ueb-pin-input-wrapper"><span class="ueb-pin-input-label">X</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${Mt.stringFromUEToInput(ne.minDecimals(this.element.entity.getDefaultValue().X))}"></ueb-input></div><span class="ueb-pin-input-label">Y</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${Mt.stringFromUEToInput(ne.minDecimals(this.element.entity.getDefaultValue().Y))}"></ueb-input></div><span class="ueb-pin-input-label">Z</span><div class="ueb-pin-input"><ueb-input .singleLine="${!0}" .innerText="${Mt.stringFromUEToInput(ne.minDecimals(this.element.entity.getDefaultValue().Z))}"></ueb-input></div></div>`}}class Kt extends Fe{static#ae={"/Script/CoreUObject.LinearColor":Rt,"/Script/CoreUObject.Rotator":Vt,"/Script/CoreUObject.Vector":Ut,bool:$t,exec:Tt,int:Dt,MUTABLE_REFERENCE:jt,name:Gt,real:Ft,string:zt};static properties={pinId:{type:ae,converter:{fromAttribute:(e,t)=>e?$e.grammar.Guid.parse(e).value:null,toAttribute:(e,t)=>e?.toString()},attribute:"data-id",reflect:!0},pinType:{type:String,attribute:"data-type",reflect:!0},advancedView:{type:String,attribute:"data-advanced-view",reflect:!0},color:{type:pe,converter:{fromAttribute:(e,t)=>e?$e.grammar.LinearColorFromAnyColor.parse(e).value:null,toAttribute:(e,t)=>e?ne.printLinearColor(e):null},attribute:"data-color",reflect:!0},defaultValue:{type:String,attribute:!1},isLinked:{type:Boolean,converter:ne.booleanConverter,attribute:"data-linked",reflect:!0},pinDirection:{type:String,attribute:"data-direction",reflect:!0}};static getTypeTemplate(e){return Kt.#ae[e.PinType.bIsReference&&!e.PinType.bIsConst?"MUTABLE_REFERENCE":e.getType()]??ot}nodeElement;connections=0;constructor(e,t,i){super(e,t??new(Kt.getTypeTemplate(e))),this.pinId=this.entity.PinId,this.pinType=this.entity.getType(),this.advancedView=this.entity.bAdvancedView,this.defaultValue=this.entity.getDefaultValue(),this.color=Kt.properties.color.converter.fromAttribute(this.getColor().toString()),this.isLinked=!1,this.pinDirection=e.isInput()?"input":e.isOutput()?"output":"hidden",this.nodeElement=i,this.entity.subscribe("PinToolTip",(e=>{let t=e.match(/\s*(.+?(?=\n)|.+\S)\s*/);return t?ne.formatStringName(t[1]):ne.formatStringName(this.entity.PinName)}))}getPinId(){return this.entity.PinId}getPinName(){return this.entity.PinName}getPinDisplayName(){let e=null;return this.entity.PinToolTip&&(e=this.entity.PinToolTip.match(/\s*(.+?(?=\n)|.+\S)\s*/))?ne.formatStringName(e[1]):ne.formatStringName(this.entity.PinName)}getColor(){return J.pinColor[this.pinType]??J.pinColor.default}isInput(){return this.entity.isInput()}isOutput(){return this.entity.isOutput()}getLinkLocation(){return this.template.getLinkLocation()}getNodeElement(){return this.nodeElement}getLinks(){return this.entity.LinkedTo??[]}setDefaultValue(e){this.entity.DefaultValue=e,this.defaultValue=e}sanitizeLinks(e=[]){this.entity.LinkedTo=this.getLinks().filter((t=>{let i=this.blueprint.getPin(t);if(i){if(e.length&&!e.includes(i.nodeElement))return!1;this.blueprint.getLink(this,i,!0)||this.blueprint.addGraphElement(new(Ke.getConstructor("ueb-link"))(this,i))}return i}))}linkTo(e){this.entity.linkTo(e.getNodeElement().getNodeName(),e.entity)&&(this.isLinked=this.entity.isLinked(),this.nodeElement?.template.linksChanged())}unlinkFrom(e){this.entity.unlinkFrom(e.getNodeElement().getNodeName(),e.entity)&&(this.isLinked=this.entity.isLinked(),this.nodeElement?.template.linksChanged())}redirectLink(e,t){const i=this.entity.LinkedTo.findIndex((t=>t.objectName.toString()==e.getNodeElement().getNodeName()&&t.pinGuid.valueOf()==e.entity.PinId.valueOf()));return i>=0&&(this.entity.LinkedTo[i]=t,!0)}}class Wt extends je{static#ae={window:_t,"color-picker":Bt};static properties={...je.properties,type:{type:_t,attribute:"data-type",reflect:!0,converter:{fromAttribute:(e,t)=>Wt.#ae[e],toAttribute:(e,t)=>Object.entries(Wt.#ae).find((([t,i])=>e==i))[0]}}};constructor(e={}){e.type.constructor==String&&(e.type=Wt.#ae[e.type]),e.type??=_t,e.windowOptions??={},super({},new e.type),this.type=e.type,this.windowOptions=e.windowOptions}disconnectedCallback(){super.disconnectedCallback(),this.dispatchCloseEvent()}dispatchCloseEvent(){let e=new CustomEvent(J.windowCloseEventName);this.dispatchEvent(e)}}class Xt extends $e{constructor(e,t,i,n,s,r,o){e=e??(e=>`(${e})`),super(t,i,n,s,r,o),this.wrap=e}read(e){const t=Le.getGrammarForType($e.grammar,this.entityType).parse(e);if(!t.status)throw new Error(`Error when trying to parse the entity ${this.entityType.prototype.constructor.name}.`);return t.value}write(e,t,i=!1){return this.wrap(this.subWrite(e,[],t,i))}}class qt extends Xt{#Ge;constructor(e,t){super(void 0,t),this.#Ge=e}write(e,t,i=!1){return this.#Ge(t,i)}}class Yt extends Xt{constructor(e){super(void 0,e)}write(e,t,i){return i||t.constructor!==String?ne.escapeString(t.toString()):`"${ne.escapeString(t.toString())}"`}}!function(){const e=e=>`(${e})`;te.registerSerializer(null,new qt(((e,t)=>"()"),null)),te.registerSerializer(Array,new qt(((e,t)=>`(${e.map((e=>te.getSerializer(ne.getType(e)).serialize(e,t)+",")).join("")})`),Array)),te.registerSerializer(Boolean,new qt(((e,t)=>e?t?"true":"True":t?"false":"False"),Boolean)),te.registerSerializer(oe,new Xt(e,oe)),te.registerSerializer(ae,new Yt(ae)),te.registerSerializer(le,new Yt(le)),te.registerSerializer(ue,new Yt(ue)),te.registerSerializer(ce,new Xt((e=>`${ce.lookbehind}(${e})`),ce,"",", ",!1,"",(e=>""))),te.registerSerializer(he,new Xt(e,he)),te.registerSerializer(pe,new Xt(e,pe)),te.registerSerializer(me,new Xt((e=>`${me.lookbehind}(${e})`),me,"",", ",!1,"",(e=>""))),te.registerSerializer(ge,new Xt(e,ge)),te.registerSerializer(Number,new qt((e=>e.toString()),Number)),te.registerSerializer(ke,new Te),te.registerSerializer(re,new qt((e=>(e.type??"")+(e.path?e.type?`'"${e.path}"'`:`"${e.path}"`:"")),re)),te.registerSerializer(ve,new Yt(ve)),te.registerSerializer(Se,new Xt((e=>`${Se.lookbehind} (${e})`),Se,"",",",!0)),te.registerSerializer(be,new Xt((e=>e),be,""," ",!1,"",(e=>""))),te.registerSerializer(de,new Yt(de)),te.registerSerializer(fe,new Xt(e,fe)),te.registerSerializer(String,new qt(((e,t)=>t?ne.escapeString(e):`"${ne.escapeString(e)}"`),String)),te.registerSerializer(ye,new qt(((e,t)=>`${e.P}, ${e.Y}, ${e.R}`),ye)),te.registerSerializer(we,new qt(((e,t)=>`${e.X}, ${e.Y}, ${e.Z}`),we)),te.registerSerializer(Ee,new Xt(e,Ee))}(),customElements.define("ueb-color-handler",kt),Ke.registerElement("ueb-color-handler",kt),customElements.define("ueb-input",At),Ke.registerElement("ueb-input",At),customElements.define("ueb-link",nt),Ke.registerElement("ueb-link",nt),customElements.define("ueb-node",gt),Ke.registerElement("ueb-node",gt),customElements.define("ueb-pin",Kt),Ke.registerElement("ueb-pin",Kt),customElements.define("ueb-selector",yt),Ke.registerElement("ueb-selector",yt),customElements.define("ueb-ui-slider",xt),Ke.registerElement("ueb-ui-slider",xt),customElements.define("ueb-window",Wt),Ke.registerElement("ueb-window",Wt);export{Et as Blueprint,J as Configuration,nt as LinkElement,gt as NodeElement};
|